├── .browserslistrc ├── .editorconfig ├── .eslintrc.json ├── .github └── workflows │ ├── node.js.yml │ └── npm-publish.yml ├── .gitignore ├── .travis.yml ├── CHANGELOG.md ├── ISSUE_TEMPLATE.md ├── LICENSE ├── README.md ├── angular.json ├── e2e ├── protractor.conf.js ├── src │ ├── app.e2e-spec.ts │ └── app.po.ts └── tsconfig.json ├── package-lock.json ├── package.json ├── projects └── igniteui-angular-wrappers │ ├── .eslintrc.json │ ├── README.md │ ├── karma.conf.js │ ├── ng-package.json │ ├── package-lock.json │ ├── package.json │ ├── src │ ├── lib │ │ ├── igbulletgraph │ │ │ ├── igbulletgraph.component.spec.ts │ │ │ └── igbulletgraph.component.ts │ │ ├── igcombo │ │ │ ├── igcombo.component.spec.ts │ │ │ └── igcombo.component.ts │ │ ├── igcontrolbase │ │ │ ├── igcontentcontrolbase.ts │ │ │ └── igcontrolbase.ts │ │ ├── igdatachart │ │ │ ├── igdatachart.component.spec.ts │ │ │ └── igdatachart.component.ts │ │ ├── igdatasource │ │ │ └── igdatasource.spec.ts │ │ ├── igdialog │ │ │ ├── igdialog.component.spec.ts │ │ │ └── igdialog.component.ts │ │ ├── igdoughnutchart │ │ │ ├── igdoughnutchart.component.spec.ts │ │ │ └── igdoughnutchart.component.ts │ │ ├── igeditors │ │ │ ├── igcheckboxeditor.component.ts │ │ │ ├── igcurrencyeditor.component.ts │ │ │ ├── igdateeditor.component.ts │ │ │ ├── igdatepicker.component.ts │ │ │ ├── igeditorbase.ts │ │ │ ├── igeditors.spec.ts │ │ │ ├── igmaskeditor.component.ts │ │ │ ├── ignumericeditor.component.ts │ │ │ ├── igpercenteditor.component.ts │ │ │ ├── igtexteditor.component.ts │ │ │ └── igtimepicker.component.ts │ │ ├── igfunnelchart │ │ │ ├── igfunnelchart.component.spec.ts │ │ │ └── igfunnelchart.component.ts │ │ ├── iggrid │ │ │ ├── column.directive.ts │ │ │ ├── feature.ts │ │ │ ├── features.directive.ts │ │ │ ├── iggrid.component.spec.ts │ │ │ ├── iggrid.component.ts │ │ │ ├── iggridbase.ts │ │ │ └── iggridfeatures │ │ │ │ ├── iggridappendrowsondemand.directive.ts │ │ │ │ ├── iggridcellmerging.directive.ts │ │ │ │ ├── iggridcolumnfixing.directive.ts │ │ │ │ ├── iggridcolumnmoving.ts │ │ │ │ ├── iggridfiltering.directive.ts │ │ │ │ ├── iggridgroupby.directive.ts │ │ │ │ ├── iggridhiding.directive.ts │ │ │ │ ├── iggridmulticolumnheaders.directive.ts │ │ │ │ ├── iggridpaging.directive.ts │ │ │ │ ├── iggridresizing.directive.ts │ │ │ │ ├── iggridresponsive.directive.ts │ │ │ │ ├── iggridrowselectors.directive.ts │ │ │ │ ├── iggridselection.directive.ts │ │ │ │ ├── iggridsorting.directive.ts │ │ │ │ ├── iggridsummaries.directive.ts │ │ │ │ ├── iggridtooltips.directive.ts │ │ │ │ └── iggridupdating.directive.ts │ │ ├── ighierarchicalgrid │ │ │ ├── ighierarchicalgrid.component.spec.ts │ │ │ └── ighierarchicalgrid.component.ts │ │ ├── ightmleditor │ │ │ ├── htmleditor.spec.ts │ │ │ └── ightmleditor.component.ts │ │ ├── iglayoutmanager │ │ │ ├── iglayoutmanager.component.spec.ts │ │ │ └── iglayoutmanager.component.ts │ │ ├── iglineargauge │ │ │ ├── iglineargauge.component.spec.ts │ │ │ └── iglineargauge.component.ts │ │ ├── igmap │ │ │ ├── igmap.component.spec.ts │ │ │ └── igmap.component.ts │ │ ├── igniteui-angular-wrappers.module.ts │ │ ├── ignotifier │ │ │ ├── ignotifier.component.spec.ts │ │ │ └── ignotifier.component.ts │ │ ├── igpiechart │ │ │ ├── igpiechart.component.spec.ts │ │ │ └── igpiechart.component.ts │ │ ├── igpivotdataselector │ │ │ ├── igpivotdataselector.component.spec.ts │ │ │ └── igpivotdataselector.component.ts │ │ ├── igpivotgrid │ │ │ ├── igpivotgrid.component.spec.ts │ │ │ └── igpivotgrid.component.ts │ │ ├── igpopover │ │ │ ├── igpopover.component.spec.ts │ │ │ └── igpopover.component.ts │ │ ├── igqrcodebarcode │ │ │ ├── igqrcodebarcode.component.spec.ts │ │ │ └── igqrcodebarcode.component.ts │ │ ├── igradialgauge │ │ │ ├── igradialgauge.component.spec.ts │ │ │ └── igradialgauge.component.ts │ │ ├── igradialmenu │ │ │ ├── igradialmenu.component.spec.ts │ │ │ └── igradialmenu.component.ts │ │ ├── igrating │ │ │ ├── igrating.component.spec.ts │ │ │ └── igrating.component.ts │ │ ├── igscheduler │ │ │ ├── igscheduler.component.spec.ts │ │ │ └── igscheduler.component.ts │ │ ├── igsparkline │ │ │ ├── igsparkline.component.spec.ts │ │ │ └── igsparkline.component.ts │ │ ├── igsplitbutton │ │ │ ├── igsplitbutton.component.spec.ts │ │ │ └── igsplitbutton.component.ts │ │ ├── igsplitter │ │ │ ├── igsplitter.component.spec.ts │ │ │ └── igsplitter.component.ts │ │ ├── igspreadsheet │ │ │ ├── igspreadsheet.component.spec.ts │ │ │ └── igspreadsheet.component.ts │ │ ├── igtilemanager │ │ │ ├── igtilemanager.component.spec.ts │ │ │ └── igtilemanager.component.ts │ │ ├── igtree │ │ │ ├── igtree.component.spec.ts │ │ │ └── igtree.component.ts │ │ ├── igtreegrid │ │ │ ├── igtreegrid.component.spec.ts │ │ │ └── igtreegrid.component.ts │ │ ├── igupload │ │ │ ├── igupload.component.spec.ts │ │ │ └── igupload.component.ts │ │ ├── igvalidator │ │ │ ├── igvalidator.component.spec.ts │ │ │ └── igvalidator.component.ts │ │ ├── igvideoplayer │ │ │ ├── igvideoplayer.component.spec.ts │ │ │ └── igvideoplayer.component.ts │ │ └── igzoombar │ │ │ ├── igzoombar.component.spec.ts │ │ │ └── igzoombar.component.ts │ ├── public-api.ts │ └── test.ts │ ├── tsconfig.lib.json │ ├── tsconfig.lib.prod.json │ └── tsconfig.spec.json ├── src ├── app │ ├── app-routing.module.ts │ ├── app.component.css │ ├── app.component.html │ ├── app.component.ts │ ├── app.module.ts │ ├── combo │ │ ├── combo.component.css │ │ ├── combo.component.html │ │ └── combo.component.ts │ ├── data-chart │ │ ├── data-chart.component.css │ │ ├── data-chart.component.html │ │ └── data-chart.component.ts │ ├── dialog │ │ ├── dialog.component.css │ │ ├── dialog.component.html │ │ └── dialog.component.ts │ ├── editors │ │ ├── editors.component.css │ │ ├── editors.component.html │ │ └── editors.component.ts │ ├── grid-api-methods │ │ ├── grid-api-methods.component.css │ │ ├── grid-api-methods.component.html │ │ └── grid-api-methods.component.ts │ ├── grid-complex-options │ │ ├── grid-complex-options.component.css │ │ ├── grid-complex-options.component.html │ │ └── grid-complex-options.component.ts │ ├── grid-data-binding │ │ ├── grid-data-binding.component.css │ │ ├── grid-data-binding.component.html │ │ └── grid-data-binding.component.ts │ ├── grid-default │ │ ├── grid-default.component.css │ │ ├── grid-default.component.html │ │ └── grid-default.component.ts │ ├── grid-excel-exporting │ │ ├── grid-excel-exporting.component.css │ │ ├── grid-excel-exporting.component.html │ │ └── grid-excel-exporting.component.ts │ ├── grid-http-client │ │ ├── grid-http-client.component.css │ │ ├── grid-http-client.component.html │ │ ├── grid-http-client.component.ts │ │ ├── product.service.ts │ │ └── product.ts │ ├── grid-top-level-options │ │ ├── grid-top-level-options.component.css │ │ ├── grid-top-level-options.component.html │ │ └── grid-top-level-options.component.ts │ ├── hierarchical-grid │ │ ├── hierarchical-grid.component.css │ │ ├── hierarchical-grid.component.html │ │ └── hierarchical-grid.component.ts │ ├── html-editor │ │ ├── html-editor.component.css │ │ ├── html-editor.component.html │ │ └── html-editor.component.ts │ ├── layout-manager │ │ ├── layout-manager.component.css │ │ ├── layout-manager.component.html │ │ └── layout-manager.component.ts │ ├── map │ │ ├── map.component.css │ │ ├── map.component.html │ │ └── map.component.ts │ ├── package.json │ ├── pivot-grid-flat-data-source │ │ ├── pivot-grid-flat-data-source.component.css │ │ ├── pivot-grid-flat-data-source.component.html │ │ └── pivot-grid-flat-data-source.component.ts │ ├── pivot-grid-xmla-data-source │ │ ├── pivot-grid-xmla-data-source.component.css │ │ ├── pivot-grid-xmla-data-source.component.html │ │ └── pivot-grid-xmla-data-source.component.ts │ ├── shared │ │ ├── candidates.ts │ │ ├── northwind-emplyoees.ts │ │ ├── northwind.ts │ │ ├── product-categories.ts │ │ ├── product-data.ts │ │ └── tasks.ts │ ├── tile-manager │ │ ├── tile-manager.component.css │ │ ├── tile-manager.component.html │ │ └── tile-manager.component.ts │ ├── tree-grid │ │ ├── tree-grid.component.css │ │ ├── tree-grid.component.html │ │ └── tree-grid.component.ts │ ├── tree │ │ ├── tree.component.css │ │ ├── tree.component.html │ │ └── tree.component.ts │ ├── upload │ │ ├── upload.component.css │ │ ├── upload.component.html │ │ └── upload.component.ts │ └── video-player │ │ ├── video-player.component.css │ │ ├── video-player.component.html │ │ └── video-player.component.ts ├── assets │ ├── .gitkeep │ └── images │ │ ├── arrowDown.gif │ │ ├── arrowUp.gif │ │ └── home-background.jpg ├── environments │ ├── environment.prod.ts │ └── environment.ts ├── favicon.ico ├── index.html ├── main.ts ├── polyfills.ts ├── styles.css └── test.ts ├── tsconfig.app.json ├── tsconfig.json └── tsconfig.spec.json /.browserslistrc: -------------------------------------------------------------------------------- 1 | # This file is used by the build system to adjust CSS and JS output to support the specified browsers below. 2 | # For additional information regarding the format and rule options, please see: 3 | # https://github.com/browserslist/browserslist#queries 4 | 5 | # You can see what browsers were selected by your queries by running: 6 | # npx browserslist 7 | 8 | > 0.5% 9 | last 2 versions 10 | Firefox ESR 11 | not dead 12 | not IE 9-11 # For IE 9-11 support, remove 'not'. -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "ignorePatterns": [ 4 | "projects/**/*" 5 | ], 6 | "overrides": [ 7 | { 8 | "files": [ 9 | "*.ts" 10 | ], 11 | "parserOptions": { 12 | "project": [ 13 | "tsconfig.json", 14 | "e2e/tsconfig.json" 15 | ], 16 | "createDefaultProgram": true 17 | }, 18 | "extends": [ 19 | "plugin:@angular-eslint/recommended", 20 | "plugin:@angular-eslint/template/process-inline-templates" 21 | ], 22 | "rules": { 23 | "@angular-eslint/prefer-standalone": ["off"], 24 | "@angular-eslint/component-selector": [ 25 | "error", 26 | { 27 | "prefix": "app", 28 | "style": "kebab-case", 29 | "type": "element" 30 | } 31 | ], 32 | "@angular-eslint/directive-selector": [ 33 | "error", 34 | { 35 | "prefix": "app", 36 | "style": "camelCase", 37 | "type": "attribute" 38 | } 39 | ] 40 | } 41 | }, 42 | { 43 | "files": [ 44 | "*.html" 45 | ], 46 | "extends": [ 47 | "plugin:@angular-eslint/template/recommended" 48 | ], 49 | "rules": {} 50 | } 51 | ] 52 | } 53 | -------------------------------------------------------------------------------- /.github/workflows/node.js.yml: -------------------------------------------------------------------------------- 1 | # This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions 3 | 4 | name: Node.js CI 5 | 6 | on: 7 | push: 8 | branches: [ master ] 9 | pull_request: 10 | branches: [ master ] 11 | 12 | jobs: 13 | build: 14 | 15 | runs-on: ubuntu-latest 16 | 17 | strategy: 18 | matrix: 19 | node-version: [18.x, 20.x] 20 | 21 | steps: 22 | - uses: actions/checkout@v2 23 | - name: Use Node.js ${{ matrix.node-version }} 24 | uses: actions/setup-node@v1 25 | with: 26 | node-version: ${{ matrix.node-version }} 27 | - run: npm ci 28 | - run: npm run lint 29 | - run: npm run build --if-present 30 | - run: npm run test:lib 31 | 32 | - name: Publish to coveralls.io 33 | if: github.repository == 'IgniteUI/igniteui-angular-wrappers' && matrix.node-version == '20.x' 34 | uses: coverallsapp/github-action@v1.1.2 35 | with: 36 | path-to-lcov: ./coverage/lcov.info 37 | github-token: ${{ github.token }} 38 | -------------------------------------------------------------------------------- /.github/workflows/npm-publish.yml: -------------------------------------------------------------------------------- 1 | name: Npm.js deploy 2 | 3 | on: 4 | release: 5 | types: [created] 6 | 7 | jobs: 8 | build: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v2 12 | - uses: actions/setup-node@v1 13 | with: 14 | node-version: 20 15 | registry-url: 'https://registry.npmjs.org' 16 | - run: echo "VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV 17 | - run: echo ${VERSION} 18 | 19 | - run: echo "NG_CLI_ANALYTICS=false" >> $GITHUB_ENV 20 | - run: echo "NODE_OPTIONS='--max_old_space_size=4096'" >> $GITHUB_ENV 21 | - run: npm ci 22 | 23 | - run: npm run build:lib:prod 24 | 25 | # define npm tag 26 | - run: if [[ ${VERSION} == *"alpha"* || ${VERSION} == *"beta"* || ${VERSION} == *"rc"* ]]; then echo "NPM_TAG=next"; else echo "NPM_TAG=latest"; fi >> $GITHUB_ENV 27 | - run: echo ${NPM_TAG} 28 | 29 | # copy readme 30 | - run: cp ../../README.md README.md 31 | working-directory: dist/igniteui-angular-wrappers 32 | 33 | # create version and publish it to npmjs 34 | - run: npm version ${VERSION} --no-git-tag-version --save --verbose 35 | working-directory: dist/igniteui-angular-wrappers 36 | 37 | - run: npm publish --tag ${NPM_TAG} 38 | working-directory: dist/igniteui-angular-wrappers 39 | env: 40 | NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} 41 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist 5 | /tmp 6 | /out-tsc 7 | # Only exists if Bazel was run 8 | /bazel-out 9 | 10 | # dependencies 11 | /node_modules 12 | 13 | # profiling files 14 | chrome-profiler-events.json 15 | speed-measure-plugin.json 16 | 17 | # IDEs and editors 18 | /.idea 19 | .project 20 | .classpath 21 | .c9/ 22 | *.launch 23 | .settings/ 24 | *.sublime-workspace 25 | 26 | # IDE - VSCode 27 | .vscode/* 28 | !.vscode/settings.json 29 | !.vscode/tasks.json 30 | !.vscode/launch.json 31 | !.vscode/extensions.json 32 | .history/* 33 | 34 | # misc 35 | /.angular/cache 36 | /.sass-cache 37 | /connect.lock 38 | /coverage 39 | /libpeerconnection.log 40 | npm-debug.log 41 | yarn-error.log 42 | testem.log 43 | /typings 44 | 45 | # System Files 46 | .DS_Store 47 | Thumbs.db 48 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: required 2 | dist: xenial 3 | language: node_js 4 | node_js: 5 | - 'lts/*' 6 | addons: 7 | chrome: stable 8 | services: 9 | - xvfb 10 | before_install: 11 | - export DISPLAY=:99.0 12 | - sleep 3 13 | 14 | script: 15 | - npm run lint 16 | - npm run test:lib 17 | - npm run build 18 | - cat ./coverage/igniteui-angular-wrappers/lcov.info | coveralls 19 | 20 | #before_deploy: 21 | # package and navigate to dist 22 | #- ng build igniteui-angular-wrappers --prod 23 | #- cd dist/igniteui-angular-wrappers 24 | # update package version 25 | #- npm version "$TRAVIS_TAG" --no-git-tag-version --save 26 | 27 | #deploy: 28 | # provider: npm 29 | # skip_cleanup: true 30 | # email: igniteui@infragistics.com 31 | # api_key: 32 | # secure: hGvEnVxB5T9XEea22TbvcaxlzYgPuBnzh6pfPnKxt6xrRzp3HCI3sDlH2VhcTCmszeUa0HxRzmbIvCZS8MOa1h7Y7rLLNanv4/VYu45uLsupUyXQ7YvKZEElOvYHrWdvgJbfHhbneH2xNSPr8zXMfmNgeLCKGJeHPy4d3OzuIJhNvctAsywjQImjn77drwFffRTSu9wCp4W/bAVUPe9AVR+8dpQs25haKBgdVRYIAYC7sCGanuFLlnVC5dFOlbZNdcpGQ7YU8ge1uli0yNqFcS0h7/ULD16/IcaJ55iNLcH0l0HJUQc+kIdXuwzUBaqyS+vB/5isxCc1gNnjn724w1Sar2VOxyYSNRxZZ8+5LL2c/sGlu+1MRaWehD+IIjtzgOmMVAd7fSMSwACvA3HnkRkFboZMWdmxkvNWHVtScXn6etXrS1pO+aMLEj388TWf4fMz4o3yQae0ax/RBu46UG1SFvo3jiftgBoygZoMqeItDzWcIp38XMx1CnNTb6s8ty4lMkiT7Gxa6tddQmkZhmK58IXxES/bnkFDkebxVxDHSWuUhM8qBy0FBVabDYrtzMskCa6ullTNi7eaT0oXlfZ0nAgQtR/WfXkMPFBb/0ryyh1glAc4XzjsSowDMGEkdn+Z1NHcRtGEoQ9KK7MgwQGdgllzjYEZhFQImyzxqTg= 33 | # on: 34 | # tags: true 35 | # repo: IgniteUI/igniteui-angular-wrappers 36 | # branch: master 37 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## IgniteUI Components Changelog 2 | 3 | ### Features 4 | - Allow calling component methods via the Angular wrappers ([#126](https://github.com/IgniteUI/igniteui-angular-wrappers/pull/126)) 5 | - Accessing grid features via the Angular wrappers ([#98](https://github.com/IgniteUI/igniteui-angular-wrappers/issues/98)) 6 | - Binding to grid feature events. ([#126](https://github.com/IgniteUI/igniteui-angular-wrappers/pull/126)) 7 | 8 | ### BREAKING CHANGES 9 | - Each igGrid feature now has a separate Directive definition that needs to be imported and added to the module definition if the related feature is to be used in the grid. 10 | In previous versions all fetaures were imported as a single Directive definition. Example: 11 | 12 | import { Feature } from "../../src/main"; 13 | 14 | Now each feature has its own specific directive. For example for Paging feature: 15 | 16 | import { Features, IgGridPagingFeature } from "../../src/main"; 17 | 18 | 19 | Also the syntax for specifying the features has been changed. 20 | 21 | OLD: 22 | 23 | 24 | 25 | 26 | ... 27 | 28 | 29 | 30 | NEW: 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ### Description 2 | Describe the issue. 3 | 4 | ### Steps to reproduce 5 | 6 | 1. Step 1 7 | 2. Step 2 8 | 3. ... 9 | 10 | ### Result 11 | What is the actual result after following the steps to reproduce? 12 | 13 | ### Expected result 14 | What is the expected result after following the steps to reproduce? 15 | 16 | 17 | ### Attachments 18 | Attach a sample if available, and screenshots, if applicable. 19 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Ignite UI 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /e2e/protractor.conf.js: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | // Protractor configuration file, see link for more information 3 | // https://github.com/angular/protractor/blob/master/lib/config.ts 4 | 5 | const { SpecReporter } = require('jasmine-spec-reporter'); 6 | 7 | /** 8 | * @type { import("protractor").Config } 9 | */ 10 | exports.config = { 11 | allScriptsTimeout: 11000, 12 | specs: [ 13 | './src/**/*.e2e-spec.ts' 14 | ], 15 | capabilities: { 16 | 'browserName': 'chrome' 17 | }, 18 | directConnect: true, 19 | baseUrl: 'http://localhost:4200/', 20 | framework: 'jasmine', 21 | jasmineNodeOpts: { 22 | showColors: true, 23 | defaultTimeoutInterval: 30000, 24 | print: () => {} 25 | }, 26 | onPrepare() { 27 | require('ts-node').register({ 28 | project: require('path').join(__dirname, './tsconfig.json') 29 | }); 30 | jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); 31 | } 32 | }; 33 | -------------------------------------------------------------------------------- /e2e/src/app.e2e-spec.ts: -------------------------------------------------------------------------------- 1 | import { AppPage } from './app.po'; 2 | import { browser, logging } from 'protractor'; 3 | 4 | describe('workspace-project App', () => { 5 | let page: AppPage; 6 | 7 | beforeEach(() => { 8 | page = new AppPage(); 9 | }); 10 | 11 | it('should display welcome message', () => { 12 | page.navigateTo(); 13 | expect(page.getTitleText()).toEqual('Welcome to wrappers!'); 14 | }); 15 | 16 | afterEach(async () => { 17 | // Assert that there are no errors emitted from the browser 18 | const logs = await browser.manage().logs().get(logging.Type.BROWSER); 19 | expect(logs).not.toContain(jasmine.objectContaining({ 20 | level: logging.Level.SEVERE, 21 | } as logging.Entry)); 22 | }); 23 | }); 24 | -------------------------------------------------------------------------------- /e2e/src/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, by, element } from 'protractor'; 2 | 3 | export class AppPage { 4 | navigateTo() { 5 | return browser.get(browser.baseUrl) as Promise; 6 | } 7 | 8 | getTitleText() { 9 | return element(by.css('app-root h1')).getText() as Promise; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /e2e/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/e2e", 5 | "module": "commonjs", 6 | "target": "es2018", 7 | "types": [ 8 | "jasmine", 9 | "jasminewd2", 10 | "node" 11 | ] 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "igniteui-angular-wrappers", 3 | "version": "1.0.0", 4 | "license": "MIT", 5 | "repository": { 6 | "type": "git", 7 | "url": "https://github.com/IgniteUI/igniteui-angular-wrappers.git" 8 | }, 9 | "scripts": { 10 | "ng": "ng", 11 | "start": "ng serve", 12 | "lint": "ng lint", 13 | "build": "ng build --configuration production", 14 | "build:lib": "ng build igniteui-angular-wrappers", 15 | "build:lib:prod": "ng build igniteui-angular-wrappers --configuration production", 16 | "test:lib": "ng test igniteui-angular-wrappers --watch=false --no-progress --code-coverage --browsers=ChromeHeadless", 17 | "test:lib:watch": "ng test igniteui-angular-wrappers --browsers=ChromeHeadless" 18 | }, 19 | "private": true, 20 | "dependencies": { 21 | "@angular/animations": "~19.2.6", 22 | "@angular/common": "~19.2.6", 23 | "@angular/compiler": "~19.2.6", 24 | "@angular/core": "~19.2.6", 25 | "@angular/forms": "~19.2.6", 26 | "@angular/platform-browser": "~19.2.6", 27 | "@angular/platform-browser-dynamic": "~19.2.6", 28 | "@angular/router": "~19.2.6", 29 | "angular-in-memory-web-api": "^0.19.0", 30 | "rxjs": "~6.5.4", 31 | "tslib": "^2.3.1", 32 | "zone.js": "~0.15.0" 33 | }, 34 | "devDependencies": { 35 | "@angular-devkit/build-angular": "~19.2.7", 36 | "@angular-eslint/builder": "19.3.0", 37 | "@angular-eslint/eslint-plugin": "19.3.0", 38 | "@angular-eslint/eslint-plugin-template": "19.3.0", 39 | "@angular-eslint/schematics": "19.3.0", 40 | "@angular-eslint/template-parser": "19.3.0", 41 | "@angular/cli": "^19.2.7", 42 | "@angular/compiler-cli": "~19.2.6", 43 | "@angular/language-service": "~19.2.6", 44 | "@types/estree": "^0.0.51", 45 | "@types/ignite-ui": "^18.1.1", 46 | "@types/jasmine": "~3.3.8", 47 | "@types/jasminewd2": "~2.0.3", 48 | "@types/jquery": "2.0.47", 49 | "@types/node": "^20.9.0", 50 | "@typescript-eslint/eslint-plugin": "^7.2.0", 51 | "@typescript-eslint/parser": "^7.2.0", 52 | "coveralls": "^3.0.4", 53 | "eslint": "^8.57.0", 54 | "jasmine-core": "~4.5.0", 55 | "jasmine-spec-reporter": "~4.2.1", 56 | "jquery-mockjax": "2.2.2", 57 | "karma": "^6.3.2", 58 | "karma-chrome-launcher": "~2.2.0", 59 | "karma-coverage": "^2.0.3", 60 | "karma-jasmine": "~5.1.0", 61 | "karma-jasmine-html-reporter": "^2.0.0", 62 | "ng-packagr": "~19.2.2", 63 | "protractor": "~7.0.0", 64 | "ts-node": "~7.0.0", 65 | "typescript": "~5.5.4" 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../.eslintrc.json", 3 | "ignorePatterns": [ 4 | "!**/*" 5 | ], 6 | "overrides": [ 7 | { 8 | "files": [ 9 | "*.ts" 10 | ], 11 | "parserOptions": { 12 | "project": [ 13 | "projects/igniteui-angular-wrappers/tsconfig.lib.json", 14 | "projects/igniteui-angular-wrappers/tsconfig.spec.json" 15 | ], 16 | "createDefaultProgram": true 17 | }, 18 | "rules": { 19 | "@angular-eslint/directive-selector": [ 20 | "warn", 21 | { 22 | "type": "attribute", 23 | "prefix": "ig", 24 | "style": "camelCase" 25 | } 26 | ], 27 | "@angular-eslint/component-selector": [ 28 | "warn", 29 | { 30 | "type": "element", 31 | "prefix": "ig", 32 | "style": "kebab-case" 33 | } 34 | ], 35 | "@angular-eslint/no-inputs-metadata-property": "warn", 36 | "@angular-eslint/no-outputs-metadata-property": "warn", 37 | "@angular-eslint/no-output-native": "warn", 38 | "@angular-eslint/no-output-on-prefix": "warn", 39 | "@angular-eslint/no-conflicting-lifecycle": "warn", 40 | "@angular-eslint/directive-class-suffix": "warn" 41 | } 42 | }, 43 | { 44 | "files": [ 45 | "*.html" 46 | ], 47 | "rules": {} 48 | } 49 | ] 50 | } 51 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/karma.conf.js: -------------------------------------------------------------------------------- 1 | // Karma configuration file, see link for more information 2 | // https://karma-runner.github.io/1.0/config/configuration-file.html 3 | 4 | module.exports = function (config) { 5 | config.set({ 6 | basePath: '', 7 | frameworks: ['jasmine', '@angular-devkit/build-angular'], 8 | plugins: [ 9 | require('karma-jasmine'), 10 | require('karma-coverage'), 11 | require('karma-chrome-launcher'), 12 | require('karma-jasmine-html-reporter'), 13 | require('@angular-devkit/build-angular/plugins/karma') 14 | ], 15 | files: [ 16 | 'http://cdn-na.infragistics.com/igniteui/latest/css/themes/infragistics/infragistics.theme.css', 17 | 'http://cdn-na.infragistics.com/igniteui/latest/css/structure/infragistics.css', 18 | 'http://code.jquery.com/jquery-1.12.3.js', 19 | 'http://code.jquery.com/ui/1.10.3/jquery-ui.min.js', 20 | 'http://cdn-na.infragistics.com/igniteui/latest/js/infragistics.core.js', 21 | 'http://cdn-na.infragistics.com/igniteui/latest/js/infragistics.lob.js', 22 | 'http://cdn-na.infragistics.com/igniteui/latest/js/infragistics.dv.js', 23 | '../../node_modules/jquery-mockjax/dist/jquery.mockjax.js', 24 | ], 25 | crossOriginAttribute: false, 26 | client: { 27 | clearContext: false // leave Jasmine Spec Runner output visible in browser 28 | }, 29 | preprocessors: { 30 | 'projects/igniteui-angular-wrappers/**/*.js': ['coverage'] 31 | }, 32 | coverageReporter: { 33 | dir: require('path').join(__dirname, '../../coverage/'), 34 | subdir: '.', 35 | reporters: [ 36 | { type: 'lcovonly' } 37 | ] 38 | }, 39 | reporters: ['progress', 'coverage'], 40 | port: 9876, 41 | colors: true, 42 | logLevel: config.LOG_INFO, 43 | autoWatch: true, 44 | browsers: ['Chrome'], 45 | singleRun: false, 46 | restartOnFileChange: true 47 | }); 48 | }; 49 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", 3 | "allowedNonPeerDependencies": ["@types/jquery", "@types/ignite-ui"], 4 | "dest": "../../dist/igniteui-angular-wrappers", 5 | "lib": { 6 | "entryFile": "src/public-api.ts" 7 | } 8 | } -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "igniteui-angular-wrappers", 3 | "version": "0.0.1", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@types/ignite-ui": { 8 | "version": "18.2.0", 9 | "resolved": "https://registry.npmjs.org/@types/ignite-ui/-/ignite-ui-18.2.0.tgz", 10 | "integrity": "sha512-7BeENy7WMqejtbyJySJIaX3aGRIW5YffsnKwjr5hNxku/7WXx7KxhpSflMrHETu8SZ0dPTYFvjj+pqsAYoubxg==" 11 | }, 12 | "@types/jquery": { 13 | "version": "2.0.47", 14 | "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-2.0.47.tgz", 15 | "integrity": "sha512-5bidBzyNZ5euxwRjN0UsGsnmCXb6yuNAQkJceJ00Qq7uVLAZ442gJ2I0h56wGfRpIcZyY2wPV103Zq9IMnkjkg==" 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "igniteui-angular-wrappers", 3 | "version": "0.0.1", 4 | "description" : "A packaged version of Ignite UI wrappers for Angular", 5 | "license": "MIT", 6 | "peerDependencies": { 7 | "@angular/common": "^16.0.0", 8 | "@angular/core": "^16.0.0" 9 | }, 10 | "dependencies": { 11 | "@types/ignite-ui": "^18.1.1", 12 | "@types/jquery": "2.0.47" 13 | , "tslib": "^2.0.0" 14 | }, 15 | "repository": { 16 | "type": "git", 17 | "url": "https://github.com/IgniteUI/igniteui-angular-wrappers.git" 18 | }, 19 | "bugs": { 20 | "url": "https://github.com/IgniteUI/igniteui-angular-wrappers/issues" 21 | }, 22 | "homepage": "https://github.com/IgniteUI/igniteui-angular-wrappers", 23 | "keywords": [ 24 | "ignite ui", 25 | "igniteui", 26 | "angular", 27 | "infragistics", 28 | "jquery widgets", 29 | "jquery controls", 30 | "data visualization", 31 | "ui components", 32 | "data grids", 33 | "wrappers" 34 | ] 35 | } 36 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igbulletgraph/igbulletgraph.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { IgBulletGraphComponent } from '../../public-api'; 4 | import { Component, ViewChild } from '@angular/core'; 5 | 6 | describe('Infragistics Angular BulletGraph', () => { 7 | let component: TestComponent; 8 | let fixture: ComponentFixture; 9 | 10 | beforeEach(waitForAsync(() => { 11 | TestBed.configureTestingModule({ 12 | declarations: [IgBulletGraphComponent, TestComponent] 13 | }) 14 | .compileComponents(); 15 | })); 16 | 17 | beforeEach(() => { 18 | fixture = TestBed.createComponent(TestComponent); 19 | component = fixture.componentInstance; 20 | fixture.detectChanges(); 21 | }); 22 | 23 | it('should initialize correctly', () => { 24 | expect(component).toBeTruthy(); 25 | expect(fixture.debugElement.componentInstance.bulletgraph instanceof IgBulletGraphComponent) 26 | .toBe(true); 27 | }); 28 | }); 29 | 30 | @Component({ 31 | template: `
`, 32 | standalone: false 33 | }) 34 | class TestComponent { 35 | @ViewChild(IgBulletGraphComponent) bulletgraph: IgBulletGraphComponent; 36 | public opts = { 37 | width: '100%', 38 | height: '80px', 39 | ranges: [ 40 | { 41 | brush: '#803E01', 42 | name: 'Bad', 43 | startValue: 0, 44 | endValue: 3000 45 | }, 46 | { 47 | brush: '#BA5A05', 48 | name: 'Acceptable', 49 | startValue: 3000, 50 | endValue: 4000 51 | }, 52 | { 53 | brush: '#FF7A04', 54 | name: 'Good', 55 | startValue: 4000, 56 | endValue: 10000 57 | } 58 | ], 59 | minimumValue: 0, 60 | maximumValue: 10000, 61 | value: 5000, 62 | valueInnerExtent: 0.5, 63 | valueOuterExtent: 0.65, 64 | targetValue: 6000, 65 | targetValueBreadth: 12, 66 | showToolTip: true 67 | }; 68 | } 69 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igbulletgraph/igbulletgraph.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, IterableDiffers, ElementRef, KeyValueDiffers, ChangeDetectorRef, Renderer2 } from '@angular/core'; 2 | import { IgControlBase } from '../igcontrolbase/igcontrolbase'; 3 | 4 | 5 | @Component({ 6 | selector: 'ig-bullet-graph', 7 | template: '', 8 | inputs: ['widgetId', 'options', 'changeDetectionInterval', 'disabled', 'create', 'width', 'height', 'ranges', 'rangeToolTipTemplate', 'valueToolTipTemplate', 'targetValueToolTipTemplate', 'orientation', 'rangeBrushes', 'rangeOutlines', 'minimumValue', 'maximumValue', 'targetValue', 'targetValueName', 'value', 'valueName', 'rangeInnerExtent', 'rangeOuterExtent', 'valueInnerExtent', 'valueOuterExtent', 'interval', 'ticksPostInitial', 'ticksPreTerminal', 'labelInterval', 'labelExtent', 'labelsPostInitial', 'labelsPreTerminal', 'minorTickCount', 'tickStartExtent', 'tickEndExtent', 'tickStrokeThickness', 'tickBrush', 'fontBrush', 'valueBrush', 'valueOutline', 'valueStrokeThickness', 'minorTickStartExtent', 'minorTickEndExtent', 'minorTickStrokeThickness', 'minorTickBrush', 'isScaleInverted', 'backingBrush', 'backingOutline', 'backingStrokeThickness', 'backingInnerExtent', 'backingOuterExtent', 'scaleStartExtent', 'scaleEndExtent', 'targetValueBrush', 'targetValueBreadth', 'targetValueInnerExtent', 'targetValueOuterExtent', 'targetValueOutline', 'targetValueStrokeThickness', 'transitionDuration', 'showToolTipTimeout', 'showToolTip', 'font', 'pixelScalingRatio'], 9 | outputs: ['formatLabel', 'alignLabel'], 10 | standalone: false 11 | }) 12 | export class IgBulletGraphComponent extends IgControlBase { 13 | constructor(el: ElementRef, renderer: Renderer2, differs: IterableDiffers, kvalDiffers: KeyValueDiffers, cdr: ChangeDetectorRef) { 14 | super(el, renderer, differs, kvalDiffers, cdr); 15 | } 16 | 17 | 18 | /** 19 | * Returns a string containing the names of all the ranges delimited with a \n symbol. 20 | */ 21 | /* istanbul ignore next */ 22 | public getRangeNames(): void { return; } 23 | 24 | /** 25 | * Adds a new range to the bullet graph. 26 | * 27 | * @param value The range object to be added. 28 | */ 29 | /* istanbul ignore next */ 30 | public addRange(value: object): void { return; } 31 | 32 | /** 33 | * Removes a range from the bullet graph. 34 | * 35 | * @param value A JS object with properties set as follows: name: nameOfTheRangeToRemove, remove: true 36 | */ 37 | /* istanbul ignore next */ 38 | public removeRange(value: object): void { return; } 39 | 40 | /** 41 | * Updates the specified range of the bullet graph. 42 | * 43 | * @param value The range object to be updated. 44 | */ 45 | /* istanbul ignore next */ 46 | public updateRange(value: object): void { return; } 47 | 48 | /** 49 | * Returns information about how the bullet graph is rendered. 50 | */ 51 | /* istanbul ignore next */ 52 | public exportVisualData(): object { return; } 53 | 54 | /** 55 | * Causes all pending changes of the bullet graph e.g. by changed property values to be rendered immediately. 56 | */ 57 | /* istanbul ignore next */ 58 | public flush(): void { return; } 59 | 60 | /** 61 | * Destroys widget. 62 | */ 63 | /* istanbul ignore next */ 64 | public destroy(): void { return; } 65 | 66 | /** 67 | * Re-polls the css styles for the widget. Use this method when the css styles have been modified. 68 | */ 69 | /* istanbul ignore next */ 70 | public styleUpdated(): void { return; } 71 | 72 | } 73 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igcontrolbase/igcontentcontrolbase.ts: -------------------------------------------------------------------------------- 1 | import { IgControlBase } from './igcontrolbase'; 2 | import { ElementRef, KeyValueDiffers, IterableDiffers, ChangeDetectorRef, Renderer2, Directive, OnInit } from '@angular/core'; 3 | 4 | 5 | @Directive() 6 | export class IgContentControlBase extends IgControlBase implements OnInit { 7 | private childNodes: Array; 8 | 9 | constructor(el: ElementRef, renderer: Renderer2, differs: IterableDiffers, kvalDiffers: KeyValueDiffers, cdr: ChangeDetectorRef) { 10 | super(el, renderer, differs, kvalDiffers, cdr); 11 | this.childNodes = el.nativeElement.childNodes; 12 | } 13 | 14 | ngOnInit() { 15 | jQuery(this._el).append(this.childNodes); 16 | super.ngOnInit(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igdatasource/igdatasource.spec.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line max-len 2 | // modeled after https://github.com/angular/angular/blob/cee2318110eeea115e5f6fc5bfc814cbaa7d90d8/modules/angular2/test/common/directives/ng_for_spec.ts 3 | import { TestBed } from '@angular/core/testing'; 4 | import { Component } from '@angular/core'; 5 | 6 | describe('Infragistics Angular DataSource', () => { 7 | beforeEach(() => { 8 | TestBed.configureTestingModule({ 9 | declarations: [TestComponent] 10 | }); 11 | }); 12 | 13 | it('should initialize correctly', (done) => { 14 | const template = ''; 15 | TestBed.overrideComponent(TestComponent, { 16 | set: { 17 | template 18 | } 19 | }); 20 | TestBed.compileComponents().then(() => { 21 | const fixture = TestBed.createComponent(TestComponent); 22 | expect(fixture.debugElement.componentInstance.source instanceof Infragistics.DataSource) 23 | .toBe(true); 24 | fixture.debugElement.componentInstance.source.dataBind(); 25 | expect(fixture.debugElement.componentInstance.source.dataView().length) 26 | .toBe(3); 27 | done(); 28 | }); 29 | }); 30 | }); 31 | 32 | @Component({ 33 | selector: 'test-cmp', 34 | template: '
' // "Component 'TestComponent' must have either 'template' or 'templateUrl' set." 35 | , 36 | standalone: false 37 | }) 38 | class TestComponent { 39 | private source: Infragistics.DataSource; 40 | data: Array = [ 41 | { Name: 'John Smith', Age: 45 }, 42 | { Name: 'Mary Johnson', Age: 32 }, 43 | { Name: 'Bob Ferguson', Age: 27 } 44 | ]; 45 | constructor() { 46 | const opts = { 47 | type: 'json', 48 | dataSource: this.data 49 | }; 50 | // this.source = new IgDataSource(this.opts); 51 | this.source = new Infragistics.DataSource(opts); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igdialog/igdialog.component.spec.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line max-len 2 | // modeled after https://github.com/angular/angular/blob/cee2318110eeea115e5f6fc5bfc814cbaa7d90d8/modules/Angular/test/common/directives/ng_for_spec.ts 3 | import { TestBed } from '@angular/core/testing'; 4 | import { Component, ViewChild } from '@angular/core'; 5 | import * as Infragistics from '../../public-api'; 6 | 7 | describe('Infragistics Angular Dialog', () => { 8 | beforeEach(() => { 9 | TestBed.configureTestingModule({ 10 | declarations: [Infragistics.IgDialogComponent, TestComponent] 11 | }); 12 | }); 13 | 14 | it('should initialize correctly', (done) => { 15 | const template = '
Test Content
'; 16 | TestBed.overrideComponent(TestComponent, { 17 | set: { 18 | template 19 | } 20 | }); 21 | TestBed.compileComponents().then(() => { 22 | const fixture = TestBed.createComponent(TestComponent); 23 | fixture.detectChanges(); 24 | expect(fixture.debugElement.componentInstance.viewChild instanceof Infragistics.IgDialogComponent) 25 | .toBe(true); 26 | expect($(fixture.debugElement.nativeElement).find('#dialog').igDialog('content')[0].innerHTML) 27 | .toBe('
Test Content
'); 28 | done(); 29 | }); 30 | }); 31 | 32 | }); 33 | 34 | @Component({ 35 | selector: 'test-cmp', 36 | template: '
' // "Component 'TestComponent' must have either 'template' or 'templateUrl' set." 37 | , 38 | standalone: false 39 | }) 40 | class TestComponent { 41 | private opts: any; 42 | 43 | @ViewChild(Infragistics.IgDialogComponent, {static: true}) public viewChild: Infragistics.IgDialogComponent; 44 | 45 | constructor() { 46 | this.opts = { 47 | headerText : 'Header Text', 48 | height: '500px' 49 | }; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igdoughnutchart/igdoughnutchart.component.spec.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line max-len 2 | // modeled after https://github.com/angular/angular/blob/cee2318110eeea115e5f6fc5bfc814cbaa7d90d8/modules/Angular/test/common/directives/ng_for_spec.ts 3 | import { TestBed } from '@angular/core/testing'; 4 | import { Component, ViewChild } from '@angular/core'; 5 | import * as Infragistics from '../../public-api'; 6 | 7 | describe('Infragistics Angular DoughnutChart', () => { 8 | beforeEach(() => { 9 | TestBed.configureTestingModule({ 10 | declarations: [Infragistics.IgDoughnutChartComponent, TestComponent] 11 | }); 12 | }); 13 | 14 | it('should initialize correctly', (done) => { 15 | const template = '
'; 16 | TestBed.overrideComponent(TestComponent, { 17 | set: { 18 | template 19 | } 20 | }); 21 | TestBed.compileComponents().then(() => { 22 | const fixture = TestBed.createComponent(TestComponent); 23 | fixture.detectChanges(); 24 | expect(fixture.debugElement.componentInstance.viewChild instanceof Infragistics.IgDoughnutChartComponent).toBe(true); 25 | done(); 26 | }); 27 | }); 28 | 29 | it('should allow initializing data source as a top level option', (done) => { 30 | const template = '
'; 31 | TestBed.overrideComponent(TestComponent, { 32 | set: { 33 | template 34 | } 35 | }); 36 | TestBed.compileComponents().then(() => { 37 | const fixture = TestBed.createComponent(TestComponent); 38 | fixture.detectChanges(); 39 | expect($(fixture.debugElement.nativeElement).find('#chart1').igDoughnutChart('option', 'dataSource')[0].Pop1990) 40 | .toBe(1141); 41 | done(); 42 | }); 43 | }); 44 | }); 45 | 46 | @Component({ 47 | selector: 'test-cmp', 48 | template: '
' // "Component 'TestComponent' must have either 'template' or 'templateUrl' set." 49 | , 50 | standalone: false 51 | }) 52 | class TestComponent { 53 | private opts: any; 54 | private data: any; 55 | 56 | @ViewChild(Infragistics.IgDoughnutChartComponent, { static: true }) public viewChild: Infragistics.IgDoughnutChartComponent; 57 | 58 | constructor() { 59 | this.data = [ 60 | { CountryName: 'China', Pop1990: 1141, Pop2008: 1333, Pop2025: 1458 }, 61 | { CountryName: 'India', Pop1990: 849, Pop2008: 1140, Pop2025: 1398 }, 62 | { CountryName: 'United States', Pop1990: 250, Pop2008: 304, Pop2025: 352 }, 63 | { CountryName: 'Indonesia', Pop1990: 178, Pop2008: 228, Pop2025: 273 }, 64 | { CountryName: 'Brazil', Pop1990: 150, Pop2008: 192, Pop2025: 223 } 65 | ]; 66 | this.opts = { 67 | width: '500px', 68 | height: '500px', 69 | series: 70 | [{ 71 | name: 'Pop1990', 72 | labelMemberPath: 'CountryName', 73 | valueMemberPath: 'Pop1990', 74 | dataSource: this.data 75 | }] 76 | }; 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igeditors/igeditorbase.ts: -------------------------------------------------------------------------------- 1 | import { IgControlBase } from '../igcontrolbase/igcontrolbase'; 2 | import { ControlValueAccessor, NgModel } from '@angular/forms'; 3 | import { ElementRef, IterableDiffers, Optional, KeyValueDiffers, ChangeDetectorRef, Renderer2, Directive, OnInit } from '@angular/core'; 4 | 5 | @Directive() 6 | export class IgEditorBase extends IgControlBase implements ControlValueAccessor, OnInit { 7 | protected _model: any; 8 | 9 | constructor(el: ElementRef, renderer: Renderer2, differs: IterableDiffers, kvalDiffers: KeyValueDiffers, 10 | cdr: ChangeDetectorRef, @Optional() public model: NgModel) { 11 | super(el, renderer, differs, kvalDiffers, cdr); 12 | if (model) { 13 | model.valueAccessor = this; 14 | this._model = model; 15 | } 16 | } 17 | 18 | ngOnInit() { 19 | super.ngOnInit(); 20 | if (this._model) { 21 | jQuery(this._el).on(this._widgetName.toLowerCase() + 'valuechanged', (evt, ui) => { 22 | this.onChange(ui.newValue); 23 | }); 24 | if (this._widgetName === 'igTextEditor') { 25 | jQuery(this._el).on(this._widgetName.toLowerCase() + 'textchanged', (evt, ui) => { 26 | this.onChange(ui.text); 27 | }); 28 | } 29 | jQuery(this._el).on(this._widgetName.toLowerCase() + 'blur', (evt, ui) => { 30 | this.onTouched(); 31 | }); 32 | // manually call writeValue, because the LifeCycle has been changed and writeValue is executed before ngOnInit 33 | this.writeValue(this._model.value); 34 | } 35 | } 36 | 37 | writeValue(value: any) { 38 | if (!!jQuery(this._el).data(this._widgetName) && value !== null) { 39 | jQuery(this._el)[this._widgetName]('value', value); 40 | } 41 | } 42 | 43 | onChange = (_: any) => { 44 | } 45 | onTouched = () => { 46 | } 47 | 48 | registerOnChange(fn: (_: any) => {}): void { 49 | this.onChange = fn; 50 | } 51 | 52 | registerOnTouched(fn: () => {}): void { 53 | this.onTouched = fn; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igfunnelchart/igfunnelchart.component.spec.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line max-len 2 | // modeled after https://github.com/angular/angular/blob/cee2318110eeea115e5f6fc5bfc814cbaa7d90d8/modules/Angular/test/common/directives/ng_for_spec.ts 3 | import { TestBed } from '@angular/core/testing'; 4 | import { Component, ViewChild } from '@angular/core'; 5 | import * as Infragistics from '../../public-api'; 6 | 7 | 8 | describe('Infragistics Angular FunnelChart', () => { 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [Infragistics.IgFunnelChartComponent, TestComponent] 12 | }); 13 | }); 14 | 15 | it('should initialize correctly', (done) => { 16 | const template = '
'; 17 | TestBed.overrideComponent(TestComponent, { 18 | set: { 19 | template 20 | } 21 | }); 22 | TestBed.compileComponents().then(() => { 23 | const fixture = TestBed.createComponent(TestComponent); 24 | fixture.detectChanges(); 25 | expect(fixture.debugElement.componentInstance.viewChild instanceof Infragistics.IgFunnelChartComponent) 26 | .toBe(true); 27 | done(); 28 | }); 29 | }); 30 | 31 | it('should allow initializing data source as a top level option', (done) => { 32 | const template = '
'; 33 | TestBed.overrideComponent(TestComponent, { 34 | set: { 35 | template 36 | } 37 | }); 38 | TestBed.compileComponents().then(() => { 39 | const fixture = TestBed.createComponent(TestComponent); 40 | fixture.detectChanges(); 41 | expect($(fixture.debugElement.nativeElement).find('#chart1').igFunnelChart('option', 'dataSource')[0].Budget) 42 | .toBe(30); 43 | done(); 44 | }); 45 | }); 46 | }); 47 | 48 | @Component({ 49 | selector: 'test-cmp', 50 | template: '
' // "Component 'TestComponent' must have either 'template' or 'templateUrl' set." 51 | , 52 | standalone: false 53 | }) 54 | class TestComponent { 55 | private opts: any; 56 | private data: any; 57 | 58 | @ViewChild(Infragistics.IgFunnelChartComponent, { static: true }) public viewChild: Infragistics.IgFunnelChartComponent; 59 | 60 | constructor() { 61 | this.data = [ 62 | { Budget: 30, Department: 'Administration' }, 63 | { Budget: 50, Department: 'Sales' }, 64 | { Budget: 60, Department: 'IT' }, 65 | { Budget: 50, Department: 'Marketing' }, 66 | { Budget: 100, Department: 'Development' }, 67 | { Budget: 20, Department: 'Support' } 68 | ]; 69 | this.opts = { 70 | width: '100%', 71 | height: '450px', 72 | dataSource: this.data, 73 | valueMemberPath: 'Budget', 74 | innerLabelMemberPath: 'Budget', 75 | innerLabelVisibility: 'visible', 76 | outerLabelMemberPath: 'Department', 77 | outerLabelVisibility: 'visible' 78 | }; 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/iggrid/column.directive.ts: -------------------------------------------------------------------------------- 1 | import { ElementRef, Directive } from '@angular/core'; 2 | 3 | declare var jQuery: any; 4 | 5 | @Directive({ 6 | selector: 'column', 7 | inputs: ['headerText', 'key', 'formatter', 'format', 'dataType', 'width', 'hidden', 'template', 'unbound', 'group', 'rowspan', 'formula', 'unboundValues', 'unboundValuesUpdateMode', 'headerCssClass', 'columnCssClass'], 8 | standalone: false 9 | }) 10 | export class Column { 11 | public _settings: any = {}; 12 | private _el: any; 13 | 14 | constructor(el: ElementRef) { 15 | this._el = el; 16 | const self = this; 17 | let i; 18 | const settings = ['headerText', 'key', 'formatter', 'format', 'dataType', 'width', 'hidden', 'template', 'unbound', 'group', 'rowspan', 'formula', 'unboundValues', 'unboundValuesUpdateMode', 'headerCssClass', 'columnCssClass']; 19 | for (i = 0; i < settings.length; i++) { 20 | Object.defineProperty(self, settings[i], { 21 | set: self.createColumnsSetter(settings[i]), 22 | get: self.createColumnsGetter(settings[i]), 23 | enumerable: true, 24 | configurable: true 25 | }); 26 | } 27 | } 28 | 29 | createColumnsSetter(name) { 30 | return function(value) { 31 | const grid = jQuery(this._el.nativeElement.parentElement).find('table[role=\'grid\']'); 32 | const columns = grid.igGrid('option', 'columns'); 33 | this._settings[name] = value; 34 | 35 | if (jQuery.ui.igGrid && 36 | jQuery.ui.igGrid.prototype.options && 37 | jQuery.ui.igGrid.prototype.options.hasOwnProperty('columns') && 38 | grid.data('igGrid')) { 39 | // reapply all column settings when a column setting is changed 40 | grid.igGrid('option', 'columns', columns); 41 | } 42 | }; 43 | } 44 | 45 | createColumnsGetter(name) { 46 | return () => { 47 | return this._settings[name]; 48 | }; 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/iggrid/iggridfeatures/iggridappendrowsondemand.directive.ts: -------------------------------------------------------------------------------- 1 | import { Feature } from '../feature'; 2 | import { ElementRef, Directive } from '@angular/core'; 3 | 4 | @Directive({ 5 | selector: 'append-rows-on-demand', 6 | inputs: ['type', 'chunkSize', 'recordCountKey', 'chunkSizeUrlKey', 'chunkIndexUrlKey', 'defaultChunkIndex', 'currentChunkIndex', 'loadTrigger', 'loadMoreDataButtonText'], 7 | outputs: ['rowsRequesting', 'rowsRequested'], 8 | standalone: false 9 | }) 10 | export class IgGridAppendRowsOnDemandFeature extends Feature { 11 | constructor(el: ElementRef) { 12 | super(el); 13 | } 14 | 15 | /** 16 | * Destroys the append rows on demand widget 17 | */ 18 | /* istanbul ignore next */ 19 | public destroy(): void { return; } 20 | 21 | /** 22 | * Loads the next chunk of data. 23 | */ 24 | /* istanbul ignore next */ 25 | public nextChunk(): void { return; } 26 | } 27 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/iggrid/iggridfeatures/iggridcellmerging.directive.ts: -------------------------------------------------------------------------------- 1 | import { ElementRef, Directive } from '@angular/core'; 2 | import { Feature } from '../feature'; 3 | 4 | @Directive({ 5 | selector: 'cell-merging', 6 | inputs: ['disabled', 'create', 'initialState', 'inherit'], 7 | outputs: ['cellsMerging', 'cellsMerged'], 8 | standalone: false 9 | }) 10 | export class IgGridCellMergingFeature extends Feature { 11 | constructor(el: ElementRef) { 12 | super(el); 13 | } 14 | /* istanbul ignore next */ 15 | public destroy(): void { return; } 16 | } 17 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/iggrid/iggridfeatures/iggridcolumnmoving.ts: -------------------------------------------------------------------------------- 1 | import { Directive, ElementRef } from '@angular/core'; 2 | import { Feature } from '../feature'; 3 | 4 | @Directive({ 5 | selector: 'column-moving', 6 | inputs: ['disabled', 'create', 'columnSettings', 'mode', 'moveType', 'addMovingDropdown', 'movingDialogWidth', 'movingDialogHeight', 'movingDialogAnimationDuration', 'movingAcceptanceTolerance', 'movingScrollTolerance', 'scrollSpeedMultiplier', 'scrollDelta', 'hideHeaderContentsDuringDrag', 'dragHelperOpacity', 'movingDialogCaptionButtonDesc', 'movingDialogCaptionButtonAsc', 'movingDialogCaptionText', 'movingDialogDisplayText', 'movingDialogDropTooltipText', 'movingDialogDropTooltipMarkup', 'dropDownMoveLeftText', 'dropDownMoveRightText', 'dropDownMoveFirstText', 'dropDownMoveLastText', 'movingToolTipMove', 'featureChooserSubmenuText', 'columnMovingDialogContainment', 'dialogWidget', 'inherit'], 7 | outputs: ['columnDragStart', 'columnDragEnd', 'columnDragCanceled', 'columnMoving', 'columnMoved', 'movingDialogOpening', 'movingDialogOpened', 'movingDialogDragged', 'movingDialogClosing', 'movingDialogClosed', 'movingDialogContentsRendering', 'movingDialogContentsRendered', 'movingDialogMoveUpButtonPressed', 'movingDialogMoveDownButtonPressed', 'movingDialogDragColumnMoving', 'movingDialogDragColumnMoved'], 8 | standalone: false 9 | }) 10 | export class IgGridColumnMovingFeature extends Feature { 11 | constructor(el: ElementRef) { 12 | super(el); 13 | } 14 | 15 | /** 16 | * Restoring overwritten functions 17 | */ 18 | /* istanbul ignore next */ 19 | public destroy(): void { return; } 20 | 21 | /** 22 | * Moves a visible column at a specified place, in front or behind a target column or at a target index 23 | * Note: This method is asynchronous which means that it returns immediately and any subsequent code will execute in parallel. 24 | * This may lead to runtime errors. To avoid them put the subsequent code in the callback parameter provided by the method. 25 | * 26 | * @param column An identifier of the column to be moved. 27 | * It can be a key, a Multi-Column Header identificator, or an index in a number format. 28 | * The latter is not supported when the grid contains multi-column headers. 29 | * @param target An identifier of a column where the moved column should move to or an index at which the moved column should 30 | * be moved to. In the case of a column identifier the column will be moved after it by default. 31 | * @param after Specifies whether the column moved should be moved after or before the target column. 32 | * @param inDom Specifies whether the column moving will be enacted through DOM manipulation or through rerendering of the grid. 33 | * @param callback Specifies a custom function to be called when the column is moved. 34 | */ 35 | /* istanbul ignore next */ 36 | public moveColumn(column: object, target: object, after?: boolean, inDom?: boolean, callback?: () => void): void { return; } 37 | } 38 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/iggrid/iggridfeatures/iggridmulticolumnheaders.directive.ts: -------------------------------------------------------------------------------- 1 | import { ElementRef, Directive } from '@angular/core'; 2 | import { Feature } from '../feature'; 3 | import { Column } from '../column.directive'; 4 | 5 | 6 | @Directive({ 7 | selector: 'multi-column-headers', 8 | inputs: ['inherit'], 9 | outputs: ['groupCollapsing', 'groupCollapsed', 'groupExpanding', 'groupExpanded'], 10 | standalone: false 11 | }) 12 | export class IgGridMultiColumnHeadersFeature extends Feature { 13 | constructor(el: ElementRef) { 14 | super(el); 15 | } 16 | 17 | /** 18 | * Destroys the widget 19 | */ 20 | /* istanbul ignore next */ 21 | public destroy(): void { return; } 22 | 23 | /** 24 | * Collapses an expanded group. If the group is collapsed, the method does nothing. 25 | * Note: This method is asynchronous which means that it returns immediately and any subsequent code will execute in parallel. 26 | * This may lead to runtime errors. To avoid them put the subsequent code in the callback parameter provided by the method. 27 | */ 28 | /* istanbul ignore next */ 29 | public collapseGroup(groupKey: string, callback?: () => void): void { return; } 30 | /** 31 | * Expands a collapsed group. If the group is expanded, the method does nothing. 32 | * Note: This method is asynchronous which means that it returns immediately and any subsequent code will execute in parallel. 33 | * This may lead to runtime errors. To avoid them put the subsequent code in the callback parameter provided by the method. 34 | */ 35 | /* istanbul ignore next */ 36 | public expandGroup(groupKey: string, callback?: () => void): void { return; } 37 | /** 38 | * Returns multicolumn headers array. if there aren"t multicolumn headers returns undefined. 39 | */ 40 | /* istanbul ignore next */ 41 | public getMultiColumnHeaders(): Array { return; } 42 | /** 43 | * Toggles a collapsible group. 44 | * Note: This method is asynchronous which means that it returns immediately and any subsequent code will execute in parallel. 45 | * This may lead to runtime errors. To avoid them put the subsequent code in the callback parameter provided by the method. 46 | */ 47 | /* istanbul ignore next */ 48 | public toggleGroup(groupKey: string, callback?: () => void): void { return; } 49 | } 50 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/iggrid/iggridfeatures/iggridpaging.directive.ts: -------------------------------------------------------------------------------- 1 | import { Directive, ElementRef } from '@angular/core'; 2 | import { Feature } from '../feature'; 3 | 4 | @Directive({ 5 | selector: 'paging', 6 | inputs: ['disabled', 'create', 'pageSize', 'recordCountKey', 'pageSizeUrlKey', 'pageIndexUrlKey', 'currentPageIndex', 'type', 'showPageSizeDropDown', 'pageSizeDropDownLabel', 'pageSizeDropDownTrailingLabel', 'pageSizeDropDownLocation', 'showPagerRecordsLabel', 'pagerRecordsLabelTemplate', 'nextPageLabelText', 'prevPageLabelText', 'firstPageLabelText', 'lastPageLabelText', 'showFirstLastPages', 'showPrevNextPages', 'currentPageDropDownLeadingLabel', 'currentPageDropDownTrailingLabel', 'currentPageDropDownTooltip', 'pageSizeDropDownTooltip', 'pagerRecordsLabelTooltip', 'prevPageTooltip', 'nextPageTooltip', 'firstPageTooltip', 'lastPageTooltip', 'pageTooltipFormat', 'pageSizeList', 'pageCountLimit', 'visiblePageCount', 'defaultDropDownWidth', 'delayOnPageChanged', 'persist', 'inherit'], 7 | outputs: ['pageIndexChanging', 'pageIndexChanged', 'pageSizeChanging', 'pageSizeChanged', 'pagerRendering', 'pagerRendered'], 8 | standalone: false 9 | }) 10 | export class IgGridPagingFeature extends Feature { 11 | constructor(el: ElementRef) { 12 | super(el); 13 | } 14 | 15 | /** 16 | * Gets/Sets the current page index, delegates data binding and paging to [$.ig.DataSource](ig.datasource). 17 | * 18 | * @param index The page index to go to. 19 | */ 20 | /* istanbul ignore next */ 21 | public pageIndex(index?: number): number { return; } 22 | 23 | /** 24 | * Gets/Sets the page size. If no parameter is specified, just returns the current page size. 25 | * 26 | * @param size The new page size. 27 | */ 28 | /* istanbul ignore next */ 29 | public pageSize(size?: number): number { return; } 30 | 31 | /** 32 | * Destroys the igGridPaging feature by removing all elements in the pager area, 33 | * unbinding events, and resetting data to discard data filtering on paging. 34 | */ 35 | /* istanbul ignore next */ 36 | public destroy(): void { return; } 37 | } 38 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/iggrid/iggridfeatures/iggridresizing.directive.ts: -------------------------------------------------------------------------------- 1 | import { ElementRef, Directive } from '@angular/core'; 2 | import { Feature } from '../feature'; 3 | 4 | @Directive({ 5 | selector: 'resizing', 6 | inputs: ['disabled', 'create', 'allowDoubleClickToResize', 'deferredResizing', 'columnSettings', 'handleThreshold', 'inherit'], 7 | outputs: ['columnResizing', 'columnResizingRefused', 'columnResized'], 8 | standalone: false 9 | }) 10 | export class IgGridResizingFeature extends Feature { 11 | constructor(el: ElementRef) { 12 | super(el); 13 | } 14 | 15 | /** 16 | * Destroys the resizing widget 17 | */ 18 | /* istanbul ignore next */ 19 | public destroy(): void { return; } 20 | 21 | /** 22 | * Resizes a column to a specified width in pixels, percents or auto if no width is specified. 23 | * 24 | * @param column An identifier for the column. 25 | * If a number is provided it will be used as a columnIndex else if a strings is provided it will be used as a columnKey. 26 | * @param width Width of the column in pixels or percents. 27 | * If no width or "*" is specified the column will be auto-sized to the width of the data in it (including header and footer cells). 28 | */ 29 | /* istanbul ignore next */ 30 | public resize(column: object, width?: object): void { return; } 31 | } 32 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/iggrid/iggridfeatures/iggridresponsive.directive.ts: -------------------------------------------------------------------------------- 1 | import { Feature } from '../feature'; 2 | import { ElementRef, Directive } from '@angular/core'; 3 | 4 | @Directive({ 5 | selector: 'responsive', 6 | inputs: ['disabled', 'create', 'columnSettings', 'reactOnContainerWidthChanges', 'forceResponsiveGridWidth', 'responsiveSensitivity', 'responsiveModes', 'enableVerticalRendering', 'windowWidthToRenderVertically', 'propertiesColumnWidth', 'valuesColumnWidth', 'allowedColumnWidthPerType', 'singleColumnTemplate', 'inherit'], 7 | outputs: ['responsiveColumnHiding', 'responsiveColumnHidden', 'responsiveColumnShowing', 'responsiveColumnShown', 'responsiveModeChanged'], 8 | standalone: false 9 | }) 10 | export class IgGridResponsiveFeature extends Feature { 11 | constructor(el: ElementRef) { 12 | super(el); 13 | } 14 | 15 | /** 16 | * Destroys the responsive widget. 17 | */ 18 | /* istanbul ignore next */ 19 | public destroy(): void { return; } 20 | 21 | /** 22 | * Returns the currently active responsive mode. 23 | */ 24 | /* istanbul ignore next */ 25 | public getCurrentResponsiveMode(): void { return; } 26 | } 27 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/iggrid/iggridfeatures/iggridrowselectors.directive.ts: -------------------------------------------------------------------------------- 1 | import { ElementRef, Directive } from '@angular/core'; 2 | import { Feature } from '../feature'; 3 | 4 | @Directive({ 5 | selector: 'row-selectors', 6 | inputs: ['disabled', 'create', 'enableRowNumbering', 'enableCheckBoxes', 'rowNumberingSeed', 'rowSelectorColumnWidth', 'requireSelection', 'showCheckBoxesOnFocus', 'inherit', 'enableSelectAllForPaging', 'selectAllForPagingTemplate', 'deselectAllForPagingTemplate'], 7 | outputs: ['rowSelectorClicked', 'checkBoxStateChanging', 'checkBoxStateChanged'], 8 | standalone: false 9 | }) 10 | export class IgGridRowSelectorsFeature extends Feature { 11 | constructor(el: ElementRef) { 12 | super(el); 13 | } 14 | /* istanbul ignore next */ 15 | public destroy(): void { return; } 16 | } 17 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/iggrid/iggridfeatures/iggridtooltips.directive.ts: -------------------------------------------------------------------------------- 1 | import { Feature } from '../feature'; 2 | import { ElementRef, Directive } from '@angular/core'; 3 | 4 | @Directive({ 5 | selector: 'tooltips', 6 | inputs: ['disabled', 'create', 'visibility', 'style', 'showDelay', 'hideDelay', 'columnSettings', 'fadeTimespan', 'cursorLeftOffset', 'cursorTopOffset', 'inherit'], 7 | outputs: ['tooltipShowing', 'tooltipShown', 'tooltipHiding', 'tooltipHidden'], 8 | standalone: false 9 | }) 10 | export class IgGridTooltipsFeature extends Feature { 11 | constructor(el: ElementRef) { 12 | super(el); 13 | } 14 | 15 | /** 16 | * Destroys the tooltip widget. 17 | */ 18 | /* istanbul ignore next */ 19 | public destroy(): void { return; } 20 | 21 | /** 22 | * Returns the ID of the parent div element bounding the ruler and the tooltip container 23 | */ 24 | /* istanbul ignore next */ 25 | public id(): string { return; } 26 | } 27 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/iglayoutmanager/iglayoutmanager.component.spec.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line max-len 2 | // modeled after https://github.com/angular/angular/blob/cee2318110eeea115e5f6fc5bfc814cbaa7d90d8/modules/Angular/test/common/directives/ng_for_spec.ts 3 | import { TestBed } from '@angular/core/testing'; 4 | import { Component, ViewChild } from '@angular/core'; 5 | import * as Infragistics from '../../public-api'; 6 | 7 | describe('Infragistics Angular LayoutManager', () => { 8 | 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [Infragistics.IgLayoutManagerComponent, TestComponent] 12 | }); 13 | }); 14 | 15 | it('should initialize correctly', (done) => { 16 | const template = '
'; 17 | TestBed.overrideComponent(TestComponent, { 18 | set: { 19 | template 20 | } 21 | }); 22 | TestBed.compileComponents().then(() => { 23 | const fixture = TestBed.createComponent(TestComponent); 24 | fixture.detectChanges(); 25 | expect(fixture.debugElement.componentInstance.viewChild instanceof Infragistics.IgLayoutManagerComponent) 26 | .toBe(true); 27 | done(); 28 | }); 29 | }); 30 | 31 | }); 32 | 33 | @Component({ 34 | selector: 'test-cmp', 35 | template: '
' // "Component 'TestComponent' must have either 'template' or 'templateUrl' set." 36 | , 37 | standalone: false 38 | }) 39 | class TestComponent { 40 | private opts: any; 41 | private cdi = 10; 42 | 43 | @ViewChild(Infragistics.IgLayoutManagerComponent, { static: true }) public viewChild: Infragistics.IgLayoutManagerComponent; 44 | 45 | constructor() { 46 | this.opts = { 47 | }; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/iglayoutmanager/iglayoutmanager.component.ts: -------------------------------------------------------------------------------- 1 | import { ElementRef, IterableDiffers, Component, KeyValueDiffers, ChangeDetectorRef, Renderer2 } from '@angular/core'; 2 | import { IgContentControlBase } from '../igcontrolbase/igcontentcontrolbase'; 3 | 4 | @Component({ 5 | selector: 'ig-layout-manager', 6 | template: '', 7 | inputs: ['widgetId', 'options', 'changeDetectionInterval', 'disabled', 'create', 'borderLayout', 'gridLayout', 'height', 'itemCount', 'items', 'layoutMode', 'width'], 8 | outputs: ['internalResized', 'internalResizing', 'itemRendered', 'itemRendering', 'rendered'], 9 | standalone: false 10 | }) 11 | export class IgLayoutManagerComponent extends IgContentControlBase { 12 | constructor(el: ElementRef, renderer: Renderer2, differs: IterableDiffers, kvalDiffers: KeyValueDiffers, cdr: ChangeDetectorRef) { 13 | super(el, renderer, differs, kvalDiffers, cdr); 14 | } 15 | 16 | 17 | /** 18 | * Triggers recalculation of the layout dimensions. Layouts may not need to be reflowed manually, 19 | * if their sizes are in percentages (i.e. they are responsive by default) 20 | * This can be particularly useful with a grid layout, when the container has percentage sizes, 21 | * but items are calculated in pixels and positioned absolutely in the container. 22 | * 23 | * @param forceReflow Indicates whether the reflow should be forced. 24 | * Useful in cases where the items size and position was changed manually. 25 | * @param animationDuration The animation duration to be used for this reflow only. Supported only for Grid Layout mode. 26 | * @param event Indicates the browser even which triggered this action (not API). 27 | */ 28 | /* istanbul ignore next */ 29 | public reflow(forceReflow?: boolean, animationDuration?: number, event?: object): void { return; } 30 | 31 | /** 32 | * Destroy is part of the jQuery UI widget API and does the following: 33 | * 1. Remove custom CSS classes that were added. 34 | * 2. Remove any elements that were added at widget's initialization and after that, which didn't below to the original markup 35 | * 3. Unbind all events that were bound. 36 | */ 37 | /* istanbul ignore next */ 38 | public destroy(): void { return; } 39 | } 40 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/iglineargauge/iglineargauge.component.spec.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line max-len 2 | // modeled after https://github.com/angular/angular/blob/cee2318110eeea115e5f6fc5bfc814cbaa7d90d8/modules/angular2/test/common/directives/ng_for_spec.ts 3 | import { TestBed } from '@angular/core/testing'; 4 | import { Component, ViewChild } from '@angular/core'; 5 | import * as Infragistics from '../../public-api'; 6 | 7 | describe('Infragistics Angular Linear Gauge', () => { 8 | 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [Infragistics.IgLinearGaugeComponent, TestComponent] 12 | }); 13 | }); 14 | 15 | it('should initialize correctly', (done) => { 16 | const template = '
'; 17 | TestBed.overrideComponent(TestComponent, { 18 | set: { 19 | template 20 | } 21 | }); 22 | TestBed.compileComponents().then(() => { 23 | const fixture = TestBed.createComponent(TestComponent); 24 | fixture.detectChanges(); 25 | expect(fixture.debugElement.componentInstance.viewChild instanceof Infragistics.IgLinearGaugeComponent) 26 | .toBe(true); 27 | done(); 28 | }); 29 | }); 30 | }); 31 | 32 | 33 | @Component({ 34 | selector: 'test-cmp', 35 | template: '
' // "Component 'TestComponent' must have either 'template' or 'templateUrl' set." 36 | , 37 | standalone: false 38 | }) 39 | class TestComponent { 40 | private opts: any; 41 | 42 | @ViewChild(Infragistics.IgLinearGaugeComponent, { static: true }) public viewChild: Infragistics.IgLinearGaugeComponent; 43 | 44 | constructor() { 45 | this.opts = { 46 | height: '80px', 47 | width: '100%', 48 | value: 27, 49 | maximumValue: 30, 50 | ranges: [{ startValue: 0, endValue: 22, name: 'target' }] 51 | }; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igmap/igmap.component.spec.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line max-len 2 | // modeled after https://github.com/angular/angular/blob/cee2318110eeea115e5f6fc5bfc814cbaa7d90d8/modules/angular2/test/common/directives/ng_for_spec.ts 3 | import { TestBed } from '@angular/core/testing'; 4 | import { Component, ViewChild } from '@angular/core'; 5 | import * as Infragistics from '../../public-api'; 6 | 7 | describe('Infragistics Angular Map', () => { 8 | 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [Infragistics.IgMapComponent, TestComponent] 12 | }); 13 | }); 14 | 15 | it('should initialize correctly', (done) => { 16 | const template = '
'; 17 | TestBed.overrideComponent(TestComponent, { 18 | set: { 19 | template 20 | } 21 | }); 22 | TestBed.compileComponents().then(() => { 23 | const fixture = TestBed.createComponent(TestComponent); 24 | fixture.detectChanges(); 25 | expect(fixture.debugElement.componentInstance.viewChild instanceof Infragistics.IgMapComponent) 26 | .toBe(true); 27 | done(); 28 | }); 29 | }); 30 | 31 | it('should allow initializing data source as a top level option', (done) => { 32 | const template = '
'; 33 | TestBed.overrideComponent(TestComponent, { 34 | set: { 35 | template 36 | } 37 | }); 38 | TestBed.compileComponents().then(() => { 39 | const fixture = TestBed.createComponent(TestComponent); 40 | fixture.detectChanges(); 41 | expect($(fixture.debugElement.nativeElement).find('#map1').igMap('option', 'dataSource')[0].Latitude) 42 | .toBe(52.21); 43 | done(); 44 | }); 45 | }); 46 | }); 47 | 48 | 49 | @Component({ 50 | selector: 'test-cmp', 51 | template: '
' // "Component 'TestComponent' must have either 'template' or 'templateUrl' set." 52 | , 53 | standalone: false 54 | }) 55 | class TestComponent { 56 | @ViewChild(Infragistics.IgMapComponent, { static: true }) public viewChild: Infragistics.IgMapComponent; 57 | 58 | data: any[]; 59 | 60 | constructor() { 61 | this.data = [{ Name: 'Warsaw', Country: 'Poland', Latitude: 52.21, Longitude: 21 }]; 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/ignotifier/ignotifier.component.spec.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line max-len 2 | // modeled after https://github.com/angular/angular/blob/cee2318110eeea115e5f6fc5bfc814cbaa7d90d8/modules/angular2/test/common/directives/ng_for_spec.ts 3 | import { TestBed } from '@angular/core/testing'; 4 | import { Component, ViewChild } from '@angular/core'; 5 | import * as Infragistics from '../../public-api'; 6 | 7 | describe('Infragistics Angular Notifier', () => { 8 | 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [Infragistics.IgNotifierComponent, TestComponent] 12 | }); 13 | }); 14 | 15 | it('should initialize correctly', (done) => { 16 | const template = '
'; 17 | TestBed.overrideComponent(TestComponent, { 18 | set: { 19 | template 20 | } 21 | }); 22 | TestBed.compileComponents().then(() => { 23 | const fixture = TestBed.createComponent(TestComponent); 24 | fixture.detectChanges(); 25 | expect(fixture.debugElement.componentInstance.viewChild instanceof Infragistics.IgNotifierComponent) 26 | .toBe(true); 27 | done(); 28 | }); 29 | }); 30 | 31 | it('should initialize correctly when having a target element', (done) => { 32 | const template = '
'; 33 | TestBed.overrideComponent(TestComponent, { 34 | set: { 35 | template 36 | } 37 | }); 38 | TestBed.compileComponents().then(() => { 39 | const fixture = TestBed.createComponent(TestComponent); 40 | fixture.detectChanges(); 41 | expect(fixture.debugElement.componentInstance.viewChild instanceof Infragistics.IgNotifierComponent) 42 | .toBe(true); 43 | done(); 44 | }); 45 | }); 46 | }); 47 | 48 | @Component({ 49 | selector: 'test-cmp', 50 | template: '
' // "Component 'TestComponent' must have either 'template' or 'templateUrl' set." 51 | , 52 | standalone: false 53 | }) 54 | class TestComponent { 55 | private opts: any; 56 | 57 | @ViewChild(Infragistics.IgNotifierComponent, { static: true }) public viewChild: Infragistics.IgNotifierComponent; 58 | 59 | constructor() { 60 | this.opts = { 61 | contentTemplate: '
Test Content
' 62 | }; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/ignotifier/ignotifier.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ElementRef, IterableDiffers, KeyValueDiffers, ChangeDetectorRef, Renderer2, OnInit } from '@angular/core'; 2 | import { IgControlBase } from '../igcontrolbase/igcontrolbase'; 3 | 4 | declare var jQuery; 5 | 6 | @Component({ 7 | selector: 'ig-notifier', 8 | template: '', 9 | inputs: ['widgetId', 'options', 'changeDetectionInterval', 'disabled', 'create', 'closeOnBlur', 'direction', 'position', 'width', 'height', 'minWidth', 'maxWidth', 'maxHeight', 'animationDuration', 'contentTemplate', 'selectors', 'headerTemplate', 'showOn', 'containment', 'appendTo', 'state', 'notifyLevel', 'mode', 'allowCSSOnTarget', 'messages', 'showIcon', 'animationSlideDistance'], 10 | outputs: ['showing', 'shown', 'hiding', 'hidden'], 11 | standalone: false 12 | }) 13 | // TODO: change the model from any to IgNotifier when added to igniteui typescript definitions 14 | export class IgNotifierComponent extends IgControlBase implements OnInit { 15 | constructor(el: ElementRef, renderer: Renderer2, differs: IterableDiffers, kvalDiffers: KeyValueDiffers, cdr: ChangeDetectorRef) { 16 | super(el, renderer, differs, kvalDiffers, cdr); 17 | } 18 | 19 | public option(): void { return; } 20 | 21 | ngOnInit() { 22 | const elem = jQuery(document).find('#' + this.widgetId); 23 | if (elem.length === 1) { 24 | this._el = elem; 25 | this._events = new Map(); 26 | // events binding 27 | let evtName; 28 | for (const propt in jQuery.ui[this._widgetName].prototype.events) { 29 | if (jQuery.ui[this._widgetName].prototype.events.hasOwnProperty(propt)) { 30 | evtName = this._widgetName.toLowerCase() + propt.toLowerCase(); 31 | this._events[evtName] = propt; 32 | jQuery(this._el).on(evtName, (evt, ui) => { 33 | this[this._events[evt.type]].emit({ event: evt, ui }); 34 | }); 35 | } 36 | } 37 | 38 | jQuery(this._el)[this._widgetName](this.options); 39 | } else { 40 | super.ngOnInit(); 41 | } 42 | } 43 | 44 | /** 45 | * Triggers a notification with a certain state and optional message. 46 | * The [notifyLevel](ui.ignotifier#options:notifyLevel) option determines if the notification will be displayed. 47 | * 48 | * @param state The state to show notification for. 49 | * @param message Optional message to show, overrides defaults. 50 | */ 51 | /* istanbul ignore next */ 52 | public notify(state: object, message?: string): void { return; } 53 | 54 | /** 55 | * Returns true if the notification is currently visible 56 | */ 57 | /* istanbul ignore next */ 58 | public isVisible(): void { return; } 59 | 60 | /** 61 | * Destroys the widget. 62 | */ 63 | /* istanbul ignore next */ 64 | public destroy(): void { return; } 65 | } 66 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igpiechart/igpiechart.component.spec.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line max-len 2 | // modeled after https://github.com/angular/angular/blob/cee2318110eeea115e5f6fc5bfc814cbaa7d90d8/modules/angular2/test/common/directives/ng_for_spec.ts 3 | import { TestBed } from '@angular/core/testing'; 4 | import { Component, ViewChild } from '@angular/core'; 5 | import * as Infragistics from '../../public-api'; 6 | 7 | describe('Infragistics Angular PieChart', () => { 8 | 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [Infragistics.IgPieChartComponent, TestComponent] 12 | }); 13 | }); 14 | 15 | it('should initialize correctly', (done) => { 16 | const template = '
'; 17 | TestBed.overrideComponent(TestComponent, { 18 | set: { 19 | template 20 | } 21 | }); 22 | TestBed.compileComponents().then(() => { 23 | const fixture = TestBed.createComponent(TestComponent); 24 | fixture.detectChanges(); 25 | expect(fixture.debugElement.componentInstance.viewChild instanceof Infragistics.IgPieChartComponent) 26 | .toBe(true); 27 | done(); 28 | }); 29 | }); 30 | 31 | it('should allow initializing data source as a top level option', (done) => { 32 | const template = '
'; 33 | TestBed.overrideComponent(TestComponent, { 34 | set: { 35 | template 36 | } 37 | }); 38 | TestBed.compileComponents().then(() => { 39 | const fixture = TestBed.createComponent(TestComponent); 40 | fixture.detectChanges(); 41 | expect($(fixture.debugElement.nativeElement).find('#chart1').igPieChart('option', 'dataSource')[0].Budget) 42 | .toBe(60); 43 | done(); 44 | }); 45 | }); 46 | }); 47 | 48 | @Component({ 49 | selector: 'test-cmp', 50 | template: '
' // "Component 'TestComponent' must have either 'template' or 'templateUrl' set." 51 | , 52 | standalone: false 53 | }) 54 | class TestComponent { 55 | private opts: any; 56 | private data: any; 57 | 58 | @ViewChild(Infragistics.IgPieChartComponent, { static: true }) public viewChild: Infragistics.IgPieChartComponent; 59 | 60 | constructor() { 61 | this.data = [ 62 | { Budget: 60, Label: 'Administration' }, 63 | { Budget: 40, Label: 'Sales' }, 64 | { Budget: 60, Label: 'IT' }, 65 | { Budget: 40, Label: 'Marketing' }, 66 | { Budget: 60, Label: 'Development' }, 67 | { Budget: 20, Label: 'Support' } 68 | ]; 69 | this.opts = { 70 | dataSource: this.data, 71 | width: '500px', 72 | height: '500px', 73 | valueMemberPath: 'Budget', 74 | labelMemberPath: 'Label' 75 | }; 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igpivotdataselector/igpivotdataselector.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ElementRef, IterableDiffers, KeyValueDiffers, ChangeDetectorRef, Input, Renderer2, OnInit } from '@angular/core'; 2 | import { IgControlBase } from '../igcontrolbase/igcontrolbase'; 3 | 4 | @Component({ 5 | selector: 'ig-pivot-data-selector', 6 | template: '', 7 | inputs: ['widgetId', 'options', 'changeDetectionInterval', 'disabled', 'create', 'width', 'height', 'dataSource', 'dataSourceOptions', 'deferUpdate', 'dragAndDropSettings', 'dropDownParent', 'disableRowsDropArea', 'disableColumnsDropArea', 'disableMeasuresDropArea', 'disableFiltersDropArea', 'customMoveValidation'], 8 | outputs: ['dataSelectorRendered', 'dataSourceInitialized', 'dataSourceUpdated', 'deferUpdateChanged', 'dragStart', 'drag', 'dragStop', 'metadataDropping', 'metadataDropped', 'metadataRemoving', 'metadataRemoved', 'filterDropDownOpening', 'filterDropDownOpened', 'filterMembersLoaded', 'filterDropDownOk', 'filterDropDownClosing', 'filterDropDownClosed'], 9 | standalone: false 10 | }) 11 | export class IgPivotDataSelectorComponent extends IgControlBase implements OnInit { 12 | constructor(el: ElementRef, renderer: Renderer2, differs: IterableDiffers, kvalDiffers: KeyValueDiffers, cdr: ChangeDetectorRef) { 13 | super(el, renderer, differs, kvalDiffers, cdr); 14 | } 15 | 16 | @Input() 17 | public set dataSource(value: any) { 18 | this._dataSource = value; 19 | const widget = jQuery(this._el).data(this._widgetName); 20 | if (widget) { 21 | jQuery(this._el)[this._widgetName]('option', 'dataSource', this._dataSource); 22 | } 23 | } 24 | 25 | 26 | 27 | private _dataSource: any; 28 | public option(): void { return; } 29 | ngOnInit() { 30 | if (this._dataSource === null || this._dataSource === undefined) { 31 | this._dataSource = this.options.dataSource; 32 | } 33 | if (!this.options.dataSource && this._dataSource) { 34 | this.options.dataSource = this._dataSource; 35 | } 36 | super.ngOnInit(); 37 | } 38 | 39 | /** 40 | * Updates the data source. 41 | */ 42 | /* istanbul ignore next */ 43 | public update(): void { return; } 44 | /** 45 | * Destroy is part of the jQuery UI widget API and does the following: 46 | * 1. Remove custom CSS classes that were added. 47 | * 2. Unwrap any wrapping elements such as scrolling divs and other containers. 48 | * 3. Unbind all events that were bound. 49 | */ 50 | /* istanbul ignore next */ 51 | public destroy(): void { return; }} 52 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igpopover/igpopover.component.spec.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line max-len 2 | // modeled after https://github.com/angular/angular/blob/cee2318110eeea115e5f6fc5bfc814cbaa7d90d8/modules/angular2/test/common/directives/ng_for_spec.ts 3 | import { TestBed } from '@angular/core/testing'; 4 | import { Component, ViewChild } from '@angular/core'; 5 | import * as Infragistics from '../../public-api'; 6 | 7 | describe('Infragistics Angular Popover', () => { 8 | 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [Infragistics.IgPopoverComponent, TestComponent] 12 | }); 13 | }); 14 | 15 | it('should initialize correctly', (done) => { 16 | const template = '
'; 17 | TestBed.overrideComponent(TestComponent, { 18 | set: { 19 | template 20 | } 21 | }); 22 | TestBed.compileComponents().then(() => { 23 | const fixture = TestBed.createComponent(TestComponent); 24 | fixture.detectChanges(); 25 | expect(fixture.debugElement.componentInstance.viewChild instanceof Infragistics.IgPopoverComponent) 26 | .toBe(true); 27 | done(); 28 | }); 29 | }); 30 | 31 | it('should initialize correctly when having a target element', (done) => { 32 | const template = '
'; 33 | TestBed.overrideComponent(TestComponent, { 34 | set: { 35 | template 36 | } 37 | }); 38 | TestBed.compileComponents().then(() => { 39 | const fixture = TestBed.createComponent(TestComponent); 40 | fixture.detectChanges(); 41 | expect(fixture.debugElement.componentInstance.viewChild instanceof Infragistics.IgPopoverComponent) 42 | .toBe(true); 43 | done(); 44 | }); 45 | }); 46 | 47 | }); 48 | 49 | @Component({ 50 | selector: 'test-cmp', 51 | template: '
' // "Component 'TestComponent' must have either 'template' or 'templateUrl' set." 52 | , 53 | standalone: false 54 | }) 55 | class TestComponent { 56 | private opts: any; 57 | 58 | @ViewChild(Infragistics.IgPopoverComponent, { static: true }) public viewChild: Infragistics.IgPopoverComponent; 59 | 60 | constructor() { 61 | this.opts = { 62 | contentTemplate: '
Test Content
' 63 | }; 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igqrcodebarcode/igqrcodebarcode.component.spec.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line max-len 2 | // modeled after https://github.com/angular/angular/blob/cee2318110eeea115e5f6fc5bfc814cbaa7d90d8/modules/angular2/test/common/directives/ng_for_spec.ts 3 | import { TestBed } from '@angular/core/testing'; 4 | import { Component, ViewChild } from '@angular/core'; 5 | import * as Infragistics from '../../public-api'; 6 | 7 | describe('Infragistics Angular QRBarCode', () => { 8 | 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [Infragistics.IgQRCodeBarcodeComponent, TestComponent] 12 | }); 13 | }); 14 | 15 | it('should initialize correctly', (done) => { 16 | const template = '
'; 17 | TestBed.overrideComponent(TestComponent, { 18 | set: { 19 | template 20 | } 21 | }); 22 | TestBed.compileComponents().then(() => { 23 | const fixture = TestBed.createComponent(TestComponent); 24 | fixture.detectChanges(); 25 | expect(fixture.debugElement.componentInstance.viewChild instanceof Infragistics.IgQRCodeBarcodeComponent) 26 | .toBe(true); 27 | done(); 28 | }); 29 | }); 30 | }); 31 | 32 | 33 | @Component({ 34 | selector: 'test-cmp', 35 | template: '
' // "Component 'TestComponent' must have either 'template' or 'templateUrl' set." 36 | , 37 | standalone: false 38 | }) 39 | class TestComponent { 40 | private opts: any; 41 | 42 | @ViewChild(Infragistics.IgQRCodeBarcodeComponent, { static: true }) public viewChild: Infragistics.IgQRCodeBarcodeComponent; 43 | 44 | constructor() { 45 | this.opts = { 46 | height: '300px', 47 | width: '100%', 48 | data: 'http://www.infragistics.com/products/jquery/samples' 49 | }; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igqrcodebarcode/igqrcodebarcode.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ElementRef, IterableDiffers, KeyValueDiffers, ChangeDetectorRef, Renderer2 } from '@angular/core'; 2 | import { IgControlBase } from '../igcontrolbase/igcontrolbase'; 3 | 4 | @Component({ 5 | selector: 'ig-q-r-code-barcode', 6 | template: '', 7 | inputs: ['widgetId', 'options', 'changeDetectionInterval', 'disabled', 'create', 'width', 'height', 'backingBrush', 'backingOutline', 'backingStrokeThickness', 'barBrush', 'fontBrush', 'font', 'data', 'errorMessageText', 'stretch', 'barsFillMode', 'widthToHeightRatio', 'xDimension', 'errorCorrectionLevel', 'sizeVersion', 'encodingMode', 'eciNumber', 'eciHeaderDisplayMode', 'fnc1Mode', 'applicationIndicator'], 8 | outputs: ['errorMessageDisplaying', 'dataChanged'], 9 | standalone: false 10 | }) 11 | export class IgQRCodeBarcodeComponent extends IgControlBase { 12 | constructor(el: ElementRef, renderer: Renderer2, differs: IterableDiffers, kvalDiffers: KeyValueDiffers, cdr: ChangeDetectorRef) { 13 | super(el, renderer, differs, kvalDiffers, cdr); 14 | } 15 | 16 | public option(): void { return; } 17 | 18 | /** 19 | * Returns information about how the barcode is rendered. 20 | */ 21 | /* istanbul ignore next */ 22 | public exportVisualData(): object { return; } 23 | 24 | /** 25 | * Causes all pending changes of the barcode e.g. by changed property values to be rendered immediately. 26 | */ 27 | /* istanbul ignore next */ 28 | public flush(): void { return; } 29 | 30 | /** 31 | * Destroys widget. 32 | */ 33 | /* istanbul ignore next */ 34 | public destroy(): void { return; } 35 | 36 | /** 37 | * Re-polls the css styles for the widget. Use this method when the css styles have been modified. 38 | */ 39 | /* istanbul ignore next */ 40 | public styleUpdated(): void { return; } 41 | } 42 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igradialgauge/igradialgauge.component.spec.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line max-len 2 | // modeled after https://github.com/angular/angular/blob/cee2318110eeea115e5f6fc5bfc814cbaa7d90d8/modules/angular2/test/common/directives/ng_for_spec.ts 3 | import { TestBed } from '@angular/core/testing'; 4 | import { Component, ViewChild } from '@angular/core'; 5 | import * as Infragistics from '../../public-api'; 6 | 7 | describe('Infragistics Angular RadialGauge', () => { 8 | 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ Infragistics.IgRadialGaugeComponent, TestComponent] 12 | }); 13 | }); 14 | 15 | it('should initialize correctly', (done) => { 16 | const template = '
'; 17 | TestBed.overrideComponent(TestComponent, { 18 | set: { 19 | template 20 | } 21 | }); 22 | TestBed.compileComponents().then(() => { 23 | const fixture = TestBed.createComponent(TestComponent); 24 | fixture.detectChanges(); 25 | expect(fixture.debugElement.componentInstance.viewChild instanceof Infragistics.IgRadialGaugeComponent) 26 | .toBe(true); 27 | done(); 28 | }); 29 | }); 30 | }); 31 | 32 | @Component({ 33 | selector: 'test-cmp', 34 | template: '
' // "Component 'TestComponent' must have either 'template' or 'templateUrl' set." 35 | , 36 | standalone: false 37 | }) 38 | class TestComponent { 39 | private opts: any; 40 | @ViewChild(Infragistics.IgRadialGaugeComponent, {static: true}) public viewChild: Infragistics.IgRadialGaugeComponent; 41 | 42 | constructor() { 43 | 44 | 45 | this.opts = { 46 | height: '500px', 47 | width: '500px', 48 | minimumValue: '0', 49 | maximumValue: '10', 50 | value: '10', 51 | 52 | // Scale Settings 53 | scaleStartAngle: '180', 54 | scaleEndAngle: '0', 55 | scaleBrush: 'transparent', 56 | 57 | // Backing Settings 58 | backingShape: 'fitted', 59 | backingOutline: 'rgba(22, 169, 231, 1)', 60 | backingBrush: 'rgba(224, 224, 224, 1)', 61 | 62 | transitionDuration: '3000', 63 | 64 | // Needle Settings 65 | needleShape: 'needle', 66 | needlePivotShape: 'circleOverlay', 67 | needleEndExtent: '0.55', 68 | needlePointFeatureExtent: '0.3', 69 | needlePivotWidthRatio: '0.2', 70 | 71 | // TickMark Settings 72 | tickBrush: 'rgba(160, 160, 160, 1)', 73 | minorTickBrush: 'gray', 74 | 75 | // Label Settings 76 | labelExtent: '0.7' 77 | }; 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igradialmenu/igradialmenu.component.spec.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line max-len 2 | // modeled after https://github.com/angular/angular/blob/cee2318110eeea115e5f6fc5bfc814cbaa7d90d8/modules/angular2/test/common/directives/ng_for_spec.ts 3 | import { TestBed } from '@angular/core/testing'; 4 | import { Component, ViewChild } from '@angular/core'; 5 | import * as Infragistics from '../../public-api'; 6 | 7 | //bug in radial menu - https://infragistics.visualstudio.com/NetAdvantage/_workitems/edit/37463 8 | xdescribe('Infragistics Angular RadialMenu', () => { 9 | 10 | beforeEach(() => { 11 | TestBed.configureTestingModule({ 12 | declarations: [ Infragistics.IgRadialMenuComponent, TestComponent] 13 | }); 14 | }); 15 | 16 | it('should initialize correctly', (done) => { 17 | const template = '
'; 18 | TestBed.overrideComponent(TestComponent, { 19 | set: { 20 | template 21 | } 22 | }); 23 | TestBed.compileComponents().then(() => { 24 | const fixture = TestBed.createComponent(TestComponent); 25 | fixture.detectChanges(); 26 | expect(fixture.debugElement.componentInstance.viewChild instanceof Infragistics.IgRadialMenuComponent) 27 | .toBe(true); 28 | done(); 29 | }); 30 | }); 31 | }); 32 | 33 | @Component({ 34 | selector: 'test-cmp', 35 | template: '
' // "Component 'TestComponent' must have either 'template' or 'templateUrl' set." 36 | , 37 | standalone: false 38 | }) 39 | class TestComponent { 40 | private opts: any; 41 | 42 | @ViewChild(Infragistics.IgRadialMenuComponent, {static: true}) public viewChild: Infragistics.IgRadialMenuComponent; 43 | 44 | constructor() { 45 | this.opts = { 46 | width: '300px', 47 | height: '300px', 48 | items: 49 | [ 50 | { 51 | name: 'button1', 52 | header: 'Bold' 53 | }, 54 | 55 | { 56 | name: 'button2', 57 | header: 'Italic' 58 | }, 59 | 60 | { 61 | type: 'coloritem', 62 | header: 'Color', 63 | items: 64 | [ 65 | { 66 | type: 'colorwell', 67 | color: '#FFFF00' 68 | }, 69 | { 70 | type: 'colorwell', 71 | color: '#C00000' 72 | }, 73 | { 74 | type: 'colorwell', 75 | color: '#008000' 76 | }, 77 | { 78 | type: 'colorwell', 79 | color: '#002060' 80 | }, 81 | { 82 | type: 'colorwell', 83 | color: '#000000' 84 | } 85 | ] 86 | }, 87 | { 88 | type: 'numericgauge', 89 | wedgeSpan: '5', 90 | ticks: '8,9,10,11,12,13,14,16,18,20,22,24,26,28,36,48', 91 | value: '16' 92 | } 93 | ] 94 | }; 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igradialmenu/igradialmenu.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, IterableDiffers, ElementRef, KeyValueDiffers, ChangeDetectorRef, Renderer2 } from '@angular/core'; 2 | import { IgControlBase } from '../igcontrolbase/igcontrolbase'; 3 | 4 | @Component({ 5 | selector: 'ig-radial-menu', 6 | template: '', 7 | inputs: ['widgetId', 'options', 'changeDetectionInterval', 'disabled', 'create', 'items', 'currentOpenMenuItemName', 'centerButtonContentWidth', 'centerButtonContentHeight', 'centerButtonClosedFill', 'centerButtonClosedStroke', 'centerButtonFill', 'centerButtonHotTrackFill', 'centerButtonHotTrackStroke', 'centerButtonStroke', 'centerButtonStrokeThickness', 'font', 'isOpen', 'menuBackground', 'menuItemOpenCloseAnimationDuration', 'menuItemOpenCloseAnimationEasingFunction', 'menuOpenCloseAnimationDuration', 'menuOpenCloseAnimationEasingFunction', 'minWedgeCount', 'outerRingFill', 'outerRingThickness', 'outerRingStroke', 'outerRingStrokeThickness', 'rotationInDegrees', 'rotationAsPercentageOfWedge', 'wedgePaddingInDegrees', 'pixelScalingRatio'], 8 | outputs: ['formatLabel', 'alignLabel', 'valueChanged'], 9 | standalone: false 10 | }) 11 | export class IgRadialMenuComponent extends IgControlBase { 12 | constructor(el: ElementRef, renderer: Renderer2, differs: IterableDiffers, kvalDiffers: KeyValueDiffers, cdr: ChangeDetectorRef) { 13 | super(el, renderer, differs, kvalDiffers, cdr); 14 | } 15 | /* istanbul ignore next */ 16 | public itemOption(itemKey: object, key: object, value: object): void { return; } 17 | /* istanbul ignore next */ 18 | public exportVisualData(): void { return; } 19 | /* istanbul ignore next */ 20 | public flush(): void { return; } 21 | /* istanbul ignore next */ 22 | public destroy(): void { return; } 23 | /* istanbul ignore next */ 24 | public styleUpdated(): void { return; } 25 | } 26 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igrating/igrating.component.spec.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line max-len 2 | // modeled after https://github.com/angular/angular/blob/cee2318110eeea115e5f6fc5bfc814cbaa7d90d8/modules/angular2/test/common/directives/ng_for_spec.ts 3 | import { TestBed } from '@angular/core/testing'; 4 | import { Component, ViewChild } from '@angular/core'; 5 | import * as Infragistics from '../../public-api'; 6 | 7 | describe('Infragistics Angular Rating', () => { 8 | 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [Infragistics.IgRatingComponent, TestComponent] 12 | }); 13 | }); 14 | 15 | it('should initialize correctly', (done) => { 16 | const template = '
'; 17 | TestBed.overrideComponent(TestComponent, { 18 | set: { 19 | template 20 | } 21 | }); 22 | TestBed.compileComponents().then(() => { 23 | const fixture = TestBed.createComponent(TestComponent); 24 | fixture.detectChanges(); 25 | expect(fixture.debugElement.componentInstance.viewChild instanceof Infragistics.IgRatingComponent) 26 | .toBe(true); 27 | done(); 28 | }); 29 | }); 30 | }); 31 | 32 | @Component({ 33 | selector: 'test-cmp', 34 | template: '
' // "Component 'TestComponent' must have either 'template' or 'templateUrl' set." 35 | , 36 | standalone: false 37 | }) 38 | class TestComponent { 39 | private opts: any; 40 | 41 | @ViewChild(Infragistics.IgRatingComponent, { static: true }) public viewChild: Infragistics.IgRatingComponent; 42 | 43 | constructor() { 44 | 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igrating/igrating.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ElementRef, IterableDiffers, KeyValueDiffers, ChangeDetectorRef, Renderer2 } from '@angular/core'; 2 | import { IgControlBase } from '../igcontrolbase/igcontrolbase'; 3 | 4 | @Component({ 5 | selector: 'ig-rating', 6 | template: '', 7 | inputs: ['widgetId', 'options', 'changeDetectionInterval', 'disabled', 'create', 'vertical', 'value', 'valueHover', 'voteCount', 'voteWidth', 'voteHeight', 'swapDirection', 'valueAsPercent', 'focusable', 'precision', 'precisionZeroVote', 'roundedDecimalPlaces', 'theme', 'validatorOptions', 'cssVotes'], 8 | outputs: ['hoverChange', 'valueChange'], 9 | standalone: false 10 | }) 11 | export class IgRatingComponent extends IgControlBase { 12 | constructor(el: ElementRef, renderer: Renderer2, differs: IterableDiffers, kvalDiffers: KeyValueDiffers, cdr: ChangeDetectorRef) { 13 | super(el, renderer, differs, kvalDiffers, cdr); 14 | } 15 | 16 | /** 17 | * Gets reference to [igValidator](ui.igvalidator) used by igRating. 18 | * 19 | * @param destroy Request to destroy validator. 20 | */ 21 | /* istanbul ignore next */ 22 | public validator(destroy?: boolean): object { return; } 23 | 24 | /** 25 | * Triggers validation. 26 | */ 27 | /* istanbul ignore next */ 28 | public validate(): boolean { return; } 29 | 30 | /** 31 | * Gets/Sets (selected) value. 32 | * 33 | * @param val New value which is rendered with selected css. 34 | * @return number|object If parameter is not 'number', then exact value rendered with selected css is returned. 35 | * Otherwise, reference to igRating is returned. 36 | */ 37 | /* istanbul ignore next */ 38 | public value(val: number): number|object { return; } 39 | 40 | /** 41 | * Gets/Sets hover value. 42 | * 43 | * @param val New value which will be rendered with hover css when rating gets mouse. 44 | * @return number|object If parameter is not "number", then last value which was rendered with hover css is returned. 45 | * Otherwise, reference to igRating is returned. 46 | */ 47 | /* istanbul ignore next */ 48 | public valueHover(val?: number): number|object { return; } 49 | 50 | /** 51 | * Checks if igRating has focus. 52 | */ 53 | /* istanbul ignore next */ 54 | public hasFocus(): boolean { return; } 55 | 56 | /** 57 | * Sets focus to igRating. That has effect only when options.focusable is enabled. 58 | */ 59 | /* istanbul ignore next */ 60 | public focus(): object { return; } 61 | 62 | /** 63 | * Destroys igRating widget. 64 | */ 65 | /* istanbul ignore next */ 66 | public destroy(): object { return; } 67 | } 68 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igscheduler/igscheduler.component.spec.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IgniteUI/igniteui-angular-wrappers/09969ff03e8961160cecb72e8814553160189445/projects/igniteui-angular-wrappers/src/lib/igscheduler/igscheduler.component.spec.ts -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igscheduler/igscheduler.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ElementRef, IterableDiffers, KeyValueDiffers, ChangeDetectorRef, Renderer2 } from '@angular/core'; 2 | import { IgControlBase } from '../igcontrolbase/igcontrolbase'; 3 | 4 | @Component({ 5 | selector: 'ig-scheduler', 6 | template: '', 7 | inputs: ['widgetId', 'options', 'changeDetectionInterval', 'disabled', 'create', 'views', 'viewMode', 'selectedDate', 'enableTodayButton', 'width', 'height', 'agendaViewSettings', 'monthViewSettings', 'appointmentDialogSuppress'], 8 | outputs: ['agendaRangeChanging', 'agendaRangeChanged', 'daySelected', 'monthChanging', 'monthChanged', 'rendering', 'rendered', 'viewChanging', 'viewChanged', 'appointmentDialogOpening', 'appointmentDialogOpened', 'appointmentDialogClosing', 'appointmentDialogClosed', 'appointmentCreating', 'appointmentCreated', 'appointmentDeleting', 'appointmentDeleted', 'appointmentEditing', 'appointmentEdited'], 9 | standalone: false 10 | }) 11 | export class IgSchedulerComponent extends IgControlBase { 12 | constructor(el: ElementRef, renderer: Renderer2, differs: IterableDiffers, kvalDiffers: KeyValueDiffers, cdr: ChangeDetectorRef) { 13 | super(el, renderer, differs, kvalDiffers, cdr); 14 | } 15 | 16 | /** 17 | * Gets reference to appointment by id 18 | * 19 | * @param id id 20 | */ 21 | /* istanbul ignore next */ 22 | public getAppointmentById(id: object): object { return; } 23 | 24 | /** 25 | * Creates a new appointment and renders it to the scheduler 26 | * 27 | * @param appointment appointment 28 | */ 29 | /* istanbul ignore next */ 30 | public createAppointment(appointment: object): object { return; } 31 | 32 | /** 33 | * Deletes appointment from the appointment collection 34 | * 35 | * @param appointment appointment 36 | */ 37 | /* istanbul ignore next */ 38 | public deleteAppointment(appointment: object): object { return; } 39 | 40 | /** 41 | * Deletes appointment from the appointment collection 42 | * 43 | * @param appointment appointment 44 | * @param updateAppoinment updateAppoinment 45 | */ 46 | /* istanbul ignore next */ 47 | public editAppointment(appointment: object, updateAppoinment: object): object { return; } 48 | 49 | /** 50 | * Destroys the widget 51 | */ 52 | /* istanbul ignore next */ 53 | public destroy(): void { return; } 54 | 55 | /** 56 | * Gets reference to the today UI button. 57 | */ 58 | /* istanbul ignore next */ 59 | public todayButton(): string { return; } 60 | 61 | /** 62 | * Gets reference to the previous UI button. 63 | */ 64 | /* istanbul ignore next */ 65 | public previousButton(): string { return; } 66 | 67 | /** 68 | * Gets reference to the date range UI button. 69 | */ 70 | /* istanbul ignore next */ 71 | public dateRangeButton(): string { return; } 72 | 73 | /** 74 | * Gets reference to the next UI button. 75 | */ 76 | /* istanbul ignore next */ 77 | public nextButton(): string { return; } 78 | 79 | /** 80 | * Gets reference to the jQuery calendar UI control. 81 | */ 82 | /* istanbul ignore next */ 83 | public getCalendar(): string { return; } 84 | } 85 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igsparkline/igsparkline.component.spec.ts: -------------------------------------------------------------------------------- 1 | 2 | // eslint-disable-next-line max-len 3 | // modeled after https://github.com/angular/angular/blob/cee2318110eeea115e5f6fc5bfc814cbaa7d90d8/modules/angular2/test/common/directives/ng_for_spec.ts 4 | import { TestBed } from '@angular/core/testing'; 5 | import { Component, ViewChild } from '@angular/core'; 6 | import * as Infragistics from '../../public-api'; 7 | 8 | describe('Infragistics Angular Sparkline', () => { 9 | 10 | beforeEach(() => { 11 | TestBed.configureTestingModule({ 12 | declarations: [Infragistics.IgSparklineComponent, TestComponent] 13 | }); 14 | }); 15 | 16 | it('should initialize correctly', (done) => { 17 | const template = '
'; 18 | TestBed.overrideComponent(TestComponent, { 19 | set: { 20 | template 21 | } 22 | }); 23 | TestBed.compileComponents().then(() => { 24 | const fixture = TestBed.createComponent(TestComponent); 25 | fixture.detectChanges(); 26 | expect(fixture.debugElement.componentInstance.viewChild instanceof Infragistics.IgSparklineComponent) 27 | .toBe(true); 28 | done(); 29 | }); 30 | }); 31 | 32 | it('should allow initializing data source as a top level option', (done) => { 33 | const template = '
'; 34 | TestBed.overrideComponent(TestComponent, { 35 | set: { 36 | template 37 | } 38 | }); 39 | TestBed.compileComponents().then(() => { 40 | const fixture = TestBed.createComponent(TestComponent); 41 | fixture.detectChanges(); 42 | expect($(fixture.debugElement.nativeElement).find('#sparkLine').igSparkline('option', 'dataSource')[0].ExtendedPrice) 43 | .toBe(168.0000); 44 | done(); 45 | }); 46 | }); 47 | }); 48 | 49 | @Component({ 50 | selector: 'test-cmp', 51 | template: '
' // "Component 'TestComponent' must have either 'template' or 'templateUrl' set." 52 | , 53 | standalone: false 54 | }) 55 | class TestComponent { 56 | private opts: any; 57 | private data: any[]; 58 | 59 | @ViewChild(Infragistics.IgSparklineComponent, { static: true }) public viewChild: Infragistics.IgSparklineComponent; 60 | 61 | constructor() { 62 | this.data = [{ OrderDate: '\/Date(836452800000)\/', ExtendedPrice: 168.0000, Freight: 32.3800 }]; 63 | 64 | this.opts = { 65 | dataSource: [ 66 | { OrderDate: '\/Date(836452800000)\/', ExtendedPrice: 168.0000, Freight: 32.3800 }, 67 | { OrderDate: '\/Date(836452800000)\/', ExtendedPrice: 98.0000, Freight: 32.3800 }, 68 | { OrderDate: '\/Date(836452800000)\/', ExtendedPrice: 174.0000, Freight: 32.3800 }], 69 | height: '100px', 70 | width: '300px', 71 | valueMemberPath: 'ExtendedPrice', 72 | labelMemberPath: 'OrderDate' 73 | }; 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igsparkline/igsparkline.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ElementRef, IterableDiffers, KeyValueDiffers, ChangeDetectorRef, Input, Renderer2, OnInit } from '@angular/core'; 2 | import { IgControlBase } from '../igcontrolbase/igcontrolbase'; 3 | 4 | @Component({ 5 | selector: 'ig-sparkline', 6 | template: '', 7 | inputs: ['widgetId', 'options', 'changeDetectionInterval', 'disabled', 'create', 'width', 'height', 'tooltipTemplate', 'maxRecCount', 'dataSource', 'dataSourceType', 'dataSourceUrl', 'responseTotalRecCountKey', 'responseDataKey', 'brush', 'negativeBrush', 'markerBrush', 'negativeMarkerBrush', 'firstMarkerBrush', 'lastMarkerBrush', 'highMarkerBrush', 'lowMarkerBrush', 'trendLineBrush', 'horizontalAxisBrush', 'verticalAxisBrush', 'normalRangeFill', 'horizontalAxisVisibility', 'verticalAxisVisibility', 'markerVisibility', 'negativeMarkerVisibility', 'firstMarkerVisibility', 'lastMarkerVisibility', 'lowMarkerVisibility', 'highMarkerVisibility', 'normalRangeVisibility', 'displayNormalRangeInFront', 'markerSize', 'firstMarkerSize', 'lastMarkerSize', 'highMarkerSize', 'lowMarkerSize', 'negativeMarkerSize', 'lineThickness', 'valueMemberPath', 'labelMemberPath', 'trendLineType', 'trendLinePeriod', 'trendLineThickness', 'normalRangeMinimum', 'normalRangeMaximum', 'displayType', 'unknownValuePlotting', 'verticalAxisLabel', 'horizontalAxisLabel', 'formatLabel', 'pixelScalingRatio'], 8 | outputs: ['dataBinding', 'dataBound', 'updateTooltip', 'hideTooltip'], 9 | standalone: false 10 | }) 11 | export class IgSparklineComponent extends IgControlBase implements OnInit { 12 | constructor(el: ElementRef, renderer: Renderer2, differs: IterableDiffers, kvalDiffers: KeyValueDiffers, cdr: ChangeDetectorRef) { 13 | super(el, renderer, differs, kvalDiffers, cdr); 14 | } 15 | 16 | @Input() 17 | public set dataSource(value: any) { 18 | this._dataSource = value; 19 | const widget = jQuery(this._el).data(this._widgetName); 20 | if (widget) { 21 | jQuery(this._el)[this._widgetName]('option', 'dataSource', this._dataSource); 22 | } 23 | } 24 | 25 | private _dataSource: any; 26 | 27 | ngOnInit() { 28 | if (this._dataSource === null || this._dataSource === undefined) { 29 | this._dataSource = this.options.dataSource; 30 | } 31 | if (!this.options.dataSource && this._dataSource) { 32 | this.options.dataSource = this._dataSource; 33 | } 34 | super.ngOnInit(); 35 | } 36 | 37 | /* istanbul ignore next */ 38 | public destroy(): void { return; } 39 | } 40 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igsplitbutton/igsplitbutton.component.spec.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line max-len 2 | // modeled after https://github.com/angular/angular/blob/cee2318110eeea115e5f6fc5bfc814cbaa7d90d8/modules/angular2/test/common/directives/ng_for_spec.ts 3 | import { TestBed } from '@angular/core/testing'; 4 | import { Component, ViewChild } from '@angular/core'; 5 | import * as Infragistics from '../../public-api'; 6 | 7 | describe('Infragistics Angular SplitButton', () => { 8 | 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [Infragistics.IgSplitButtonComponent, TestComponent] 12 | }); 13 | }); 14 | 15 | it('should initialize correctly', (done) => { 16 | const template = '
'; 17 | TestBed.overrideComponent(TestComponent, { 18 | set: { 19 | template 20 | } 21 | }); 22 | TestBed.compileComponents().then(() => { 23 | const fixture = TestBed.createComponent(TestComponent); 24 | fixture.detectChanges(); 25 | expect(fixture.debugElement.componentInstance.viewChild instanceof Infragistics.IgSplitButtonComponent) 26 | .toBe(true); 27 | done(); 28 | }); 29 | }); 30 | }); 31 | 32 | 33 | @Component({ 34 | selector: 'test-cmp', 35 | template: '
' // "Component 'TestComponent' must have either 'template' or 'templateUrl' set." 36 | , 37 | standalone: false 38 | }) 39 | class TestComponent { 40 | private opts: any; 41 | 42 | @ViewChild(Infragistics.IgSplitButtonComponent, { static: true }) public viewChild: Infragistics.IgSplitButtonComponent; 43 | 44 | constructor() { 45 | this.opts = { 46 | items: [{ 47 | name: 'InsertUnorderedList', 48 | label: 'Bullets', 49 | icon: 'ui-igbutton-unorderedlist' 50 | }, { 51 | name: 'InsertOrderedList', 52 | label: 'Numbering', 53 | icon: 'ui-igbutton-orderedlist' 54 | }], 55 | defaultItemName: 'InsertUnorderedList' 56 | }; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igsplitbutton/igsplitbutton.component.ts: -------------------------------------------------------------------------------- 1 | import { ElementRef, IterableDiffers, Component, KeyValueDiffers, ChangeDetectorRef, Renderer2 } from '@angular/core'; 2 | import { IgControlBase } from '../igcontrolbase/igcontrolbase'; 3 | 4 | @Component({ 5 | selector: 'ig-split-button', 6 | template: '', 7 | inputs: ['widgetId', 'options', 'changeDetectionInterval', 'disabled', 'create', 'items', 'defaultItemName', 'swapDefaultEnabled'], 8 | outputs: ['click', 'expanded', 'expanding', 'collapsed', 'collapsing'], 9 | standalone: false 10 | }) 11 | export class IgSplitButtonComponent extends IgControlBase { 12 | constructor(el: ElementRef, renderer: Renderer2, differs: IterableDiffers, kvalDiffers: KeyValueDiffers, cdr: ChangeDetectorRef) { 13 | super(el, renderer, differs, kvalDiffers, cdr); 14 | } 15 | 16 | 17 | /** 18 | * Switch to given igToolbar button. 19 | * 20 | * @param button . The button jQuery element. 21 | */ 22 | /* istanbul ignore next */ 23 | public switchToButton(button: object): void { return; } 24 | 25 | 26 | /** 27 | * Toggle widget state between collapsed and expanded. 28 | * 29 | * @param e The igSplitButton to be expanded/collapsed. 30 | */ 31 | /* istanbul ignore next */ 32 | public toggle(e: object): object { return; } 33 | 34 | 35 | /** 36 | * Collapse the widget. 37 | * 38 | * @param e Indicates the browser event which triggered this action (not API). 39 | */ 40 | /* istanbul ignore next */ 41 | public collapse(e?: object): object { return; } 42 | 43 | 44 | /** 45 | * Expands the widget. 46 | * 47 | * @param e Indicates the browser event which triggered this action (not API). 48 | */ 49 | /* istanbul ignore next */ 50 | public expand(e?: object): object { return; } 51 | 52 | /** 53 | * Destroy the widget. 54 | */ 55 | /* istanbul ignore next */ 56 | public destroy(): void { return; } 57 | /* istanbul ignore next */ 58 | public widget(): void { return; } 59 | } 60 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igsplitter/igsplitter.component.spec.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line max-len 2 | // modeled after https://github.com/angular/angular/blob/cee2318110eeea115e5f6fc5bfc814cbaa7d90d8/modules/angular2/test/common/directives/ng_for_spec.ts 3 | import { TestBed } from '@angular/core/testing'; 4 | import { Component, ViewChild } from '@angular/core'; 5 | import * as Infragistics from '../../public-api'; 6 | 7 | describe('Infragistics Angular Splitter', () => { 8 | 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [Infragistics.IgSplitterComponent, TestComponent] 12 | }); 13 | }); 14 | 15 | it('should initialize correctly', (done) => { 16 | const template = '
'; 17 | TestBed.overrideComponent(TestComponent, { 18 | set: { 19 | template 20 | } 21 | }); 22 | TestBed.compileComponents().then(() => { 23 | const fixture = TestBed.createComponent(TestComponent); 24 | fixture.detectChanges(); 25 | expect(fixture.debugElement.componentInstance.viewChild instanceof Infragistics.IgSplitterComponent) 26 | .toBe(true); 27 | done(); 28 | }); 29 | }); 30 | }); 31 | 32 | @Component({ 33 | selector: 'test-cmp', 34 | template: '
' // "Component 'TestComponent' must have either 'template' or 'templateUrl' set." 35 | , 36 | standalone: false 37 | }) 38 | class TestComponent { 39 | private opts: any; 40 | 41 | @ViewChild(Infragistics.IgSplitterComponent, { static: true }) public viewChild: Infragistics.IgSplitterComponent; 42 | 43 | constructor() { 44 | this.opts = { height: '300px', panels: [{ size: 160, min: 100, max: 250 }] }; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igsplitter/igsplitter.component.ts: -------------------------------------------------------------------------------- 1 | import { ElementRef, IterableDiffers, Component, KeyValueDiffers, ChangeDetectorRef, Renderer2 } from '@angular/core'; 2 | import { IgContentControlBase } from '../igcontrolbase/igcontentcontrolbase'; 3 | 4 | @Component({ 5 | selector: 'ig-splitter', 6 | template: '', 7 | inputs: [ 8 | 'widgetId', 9 | 'options', 10 | 'changeDetectionInterval', 11 | 'disabled', 12 | 'create', 13 | 'width', 14 | 'height', 15 | 'orientation', 16 | 'panels', 17 | 'dragDelta', 18 | 'resizeOtherSplitters' 19 | ], 20 | outputs: ['collapsed', 'expanded', 'resizeStarted', 'resizing', 'resizeEnded', 'layoutRefreshing', 'layoutRefreshed'], 21 | standalone: false 22 | }) 23 | export class IgSplitterComponent extends IgContentControlBase { 24 | constructor(el: ElementRef, renderer: Renderer2, differs: IterableDiffers, kvalDiffers: KeyValueDiffers, cdr: ChangeDetectorRef) { 25 | super(el, renderer, differs, kvalDiffers, cdr); 26 | } 27 | 28 | 29 | /** 30 | * Returns the element that represents this widget. 31 | */ 32 | /* istanbul ignore next */ 33 | public widget(): object { return; } 34 | 35 | 36 | /** 37 | * Expand the specified panel by index. 38 | * 39 | * @param index Specifies the index of the panel to expand. 40 | */ 41 | /* istanbul ignore next */ 42 | public expandAt(index: object): void { return; } 43 | 44 | 45 | /** 46 | * Collapse the specified panel. 47 | * 48 | * @param index Specifies the index of the panel to collapse. 49 | */ 50 | /* istanbul ignore next */ 51 | public collapseAt(index: object): void { return; } 52 | 53 | 54 | /** 55 | * Retrieves the jQuery element of the first panel. 56 | */ 57 | /* istanbul ignore next */ 58 | public firstPanel(): object { return; } 59 | 60 | 61 | /** 62 | * Retrieves the jQuery element of the second panel. 63 | */ 64 | /* istanbul ignore next */ 65 | public secondPanel(): object { return; } 66 | 67 | 68 | /** 69 | * Refresh splitter layout, use this method to re-render the splitter if some changes to the layout are applied. 70 | */ 71 | /* istanbul ignore next */ 72 | public refreshLayout(): void { return; } 73 | 74 | 75 | /** 76 | * You can set new size of the first panel after the splitter is rendered. 77 | * 78 | * @param size Specifies the new size of the first panel. 79 | */ 80 | /* istanbul ignore next */ 81 | public setFirstPanelSize(size: object): void { return; } 82 | 83 | 84 | /** 85 | * You can set new size of the second panel after the splitter is rendered. 86 | * 87 | * @param size Specifies the new size of the second panel. 88 | */ 89 | /* istanbul ignore next */ 90 | public setSecondPanelSize(size: object): void { return; } 91 | 92 | /** 93 | * Destroys the igSplitter widget 94 | */ 95 | /* istanbul ignore next */ 96 | public destroy(): void { return; } 97 | } 98 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igspreadsheet/igspreadsheet.component.spec.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IgniteUI/igniteui-angular-wrappers/09969ff03e8961160cecb72e8814553160189445/projects/igniteui-angular-wrappers/src/lib/igspreadsheet/igspreadsheet.component.spec.ts -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igtilemanager/igtilemanager.component.spec.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line max-len 2 | // modeled after https://github.com/angular/angular/blob/cee2318110eeea115e5f6fc5bfc814cbaa7d90d8/modules/angular2/test/common/directives/ng_for_spec.ts 3 | import { TestBed } from '@angular/core/testing'; 4 | import { Component, ViewChild } from '@angular/core'; 5 | import * as Infragistics from '../../public-api'; 6 | 7 | describe('Infragistics Angular TileManager', () => { 8 | 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ Infragistics.IgTileManagerComponent, TestComponent] 12 | }); 13 | }); 14 | 15 | it('should initialize correctly', (done) => { 16 | const template = '
'; 17 | TestBed.overrideComponent(TestComponent, { 18 | set: { 19 | template 20 | } 21 | }); 22 | TestBed.compileComponents().then(() => { 23 | const fixture = TestBed.createComponent(TestComponent); 24 | fixture.detectChanges(); 25 | expect(fixture.debugElement.componentInstance.viewChild instanceof Infragistics.IgTileManagerComponent) 26 | .toBe(true); 27 | done(); 28 | }); 29 | }); 30 | 31 | it('should allow initializing data source as a top level option', (done) => { 32 | const template = '
'; 33 | TestBed.overrideComponent(TestComponent, { 34 | set: { 35 | template 36 | } 37 | }); 38 | TestBed.compileComponents().then(() => { 39 | const fixture = TestBed.createComponent(TestComponent); 40 | fixture.detectChanges(); 41 | expect($(fixture.debugElement.nativeElement).find('#tm1').igTileManager('option', 'dataSource').data()[0].name) 42 | .toBe('foo'); 43 | done(); 44 | }); 45 | }); 46 | }); 47 | 48 | @Component({ 49 | selector: 'test-cmp', 50 | template: '
' // "Component 'TestComponent' must have either 'template' or 'templateUrl' set." 51 | , 52 | standalone: false 53 | }) 54 | class TestComponent { 55 | private opts: any; 56 | private cdi = 10; 57 | data: any[]; 58 | 59 | @ViewChild(Infragistics.IgTileManagerComponent, {static: true}) public viewChild: Infragistics.IgTileManagerComponent; 60 | 61 | constructor() { 62 | this.data = [{name: 'foo'}]; 63 | 64 | this.opts = { 65 | // dataSource: candidates.getData(), 66 | marginLeft: 10, 67 | marginTop: 10, 68 | rightPanelTilesWidth: 200, 69 | rightPanelTilesHeight: 156, 70 | maximizedState: '

${name}

error

${text}

Skills:
    ', 71 | minimizedState: '

    ${name}

    error' 72 | }; 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igupload/igupload.component.spec.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line max-len 2 | // modeled after https://github.com/angular/angular/blob/cee2318110eeea115e5f6fc5bfc814cbaa7d90d8/modules/angular2/test/common/directives/ng_for_spec.ts 3 | import { TestBed } from '@angular/core/testing'; 4 | import { Component, ViewChild } from '@angular/core'; 5 | import * as Infragistics from '../../public-api'; 6 | 7 | describe('Infragistics Angular Upload', () => { 8 | 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ Infragistics.IgUploadComponent, TestComponent] 12 | }); 13 | }); 14 | 15 | it('should initialize correctly', (done) => { 16 | const template = '
    '; 17 | TestBed.overrideComponent(TestComponent, { 18 | set: { 19 | template 20 | } 21 | }); 22 | TestBed.compileComponents().then(() => { 23 | const fixture = TestBed.createComponent(TestComponent); 24 | fixture.detectChanges(); 25 | expect(fixture.debugElement.componentInstance.viewChild instanceof Infragistics.IgUploadComponent) 26 | .toBe(true); 27 | done(); 28 | }); 29 | }); 30 | }); 31 | 32 | @Component({ 33 | selector: 'test-cmp', 34 | template: '
    ' // "Component 'TestComponent' must have either 'template' or 'templateUrl' set." 35 | , 36 | standalone: false 37 | }) 38 | class TestComponent { 39 | private opts: any; 40 | 41 | @ViewChild(Infragistics.IgUploadComponent, {static: true}) public viewChild: Infragistics.IgUploadComponent; 42 | 43 | constructor() { 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igvalidator/igvalidator.component.spec.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line max-len 2 | // modeled after https://github.com/angular/angular/blob/cee2318110eeea115e5f6fc5bfc814cbaa7d90d8/modules/angular2/test/common/directives/ng_for_spec.ts 3 | import { TestBed } from '@angular/core/testing'; 4 | import { Component, ViewChild } from '@angular/core'; 5 | import * as Infragistics from '../../public-api'; 6 | 7 | describe('Infragistics Angular Validator', () => { 8 | 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [Infragistics.IgValidatorComponent, TestComponent] 12 | }); 13 | }); 14 | 15 | it('should initialize correctly', (done) => { 16 | const template = '
    '; 17 | TestBed.overrideComponent(TestComponent, { 18 | set: { 19 | template 20 | } 21 | }); 22 | TestBed.compileComponents().then(() => { 23 | const fixture = TestBed.createComponent(TestComponent); 24 | fixture.detectChanges(); 25 | expect(fixture.debugElement.componentInstance.viewChild instanceof Infragistics.IgValidatorComponent) 26 | .toBe(true); 27 | done(); 28 | }); 29 | }); 30 | }); 31 | 32 | @Component({ 33 | selector: 'test-cmp', 34 | template: '
    ' // "Component 'TestComponent' must have either 'template' or 'templateUrl' set." 35 | , 36 | standalone: false 37 | }) 38 | class TestComponent { 39 | private opts: any; 40 | 41 | @ViewChild(Infragistics.IgValidatorComponent, { static: true }) public viewChild: Infragistics.IgValidatorComponent; 42 | 43 | constructor() { 44 | this.opts = { required: true }; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igvideoplayer/igvideoplayer.component.spec.ts: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line max-len 2 | // modeled after https://github.com/angular/angular/blob/cee2318110eeea115e5f6fc5bfc814cbaa7d90d8/modules/angular2/test/common/directives/ng_for_spec.ts 3 | import { TestBed } from '@angular/core/testing'; 4 | import { Component, ViewChild } from '@angular/core'; 5 | import * as Infragistics from '../../public-api'; 6 | 7 | describe('Infragistics Angular VideoPlayer', () => { 8 | 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [Infragistics.IgVideoPlayerComponent, TestComponent] 12 | }); 13 | }); 14 | 15 | it('should initialize correctly', (done) => { 16 | const template = '
    '; 17 | TestBed.overrideComponent(TestComponent, { 18 | set: { 19 | template 20 | } 21 | }); 22 | TestBed.compileComponents().then(() => { 23 | const fixture = TestBed.createComponent(TestComponent); 24 | fixture.detectChanges(); 25 | expect(fixture.debugElement.componentInstance.viewChild instanceof Infragistics.IgVideoPlayerComponent) 26 | .toBe(true); 27 | done(); 28 | }); 29 | }); 30 | }); 31 | 32 | 33 | @Component({ 34 | selector: 'test-cmp', 35 | template: '
    ' // "Component 'TestComponent' must have either 'template' or 'templateUrl' set." 36 | , 37 | standalone: false 38 | }) 39 | class TestComponent { 40 | private opts: any; 41 | 42 | @ViewChild(Infragistics.IgVideoPlayerComponent, { static: true }) public viewChild: Infragistics.IgVideoPlayerComponent; 43 | 44 | constructor() { 45 | this.opts = { 46 | width: '700px', 47 | height: '400px', 48 | sources: [ 49 | 'http://dl.infragistics.com/pg/2011-1/web/shared/videoplayer/videos/Infragistics_Presentation_lowRes_1.h264.mp4', 50 | 'http://dl.infragistics.com/pg/2011-1/web/shared/videoplayer/videos/Infragistics_Presentation_lowRes_1.webmvp8.webm', 51 | 'http://dl.infragistics.com/pg/2011-1/web/shared/videoplayer/videos/Infragistics_Presentation_lowRes_1.theora.ogv' 52 | ] 53 | }; 54 | 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igzoombar/igzoombar.component.spec.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IgniteUI/igniteui-angular-wrappers/09969ff03e8961160cecb72e8814553160189445/projects/igniteui-angular-wrappers/src/lib/igzoombar/igzoombar.component.spec.ts -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/lib/igzoombar/igzoombar.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ElementRef, IterableDiffers, KeyValueDiffers, ChangeDetectorRef, Renderer2 } from '@angular/core'; 2 | import { IgControlBase } from '../igcontrolbase/igcontrolbase'; 3 | 4 | @Component({ 5 | selector: 'ig-zoombar', 6 | template: '', 7 | inputs: [ 8 | 'widgetId', 9 | 'options', 10 | 'changeDetectionInterval', 11 | 'disabled', 12 | 'create', 13 | 'target', 14 | 'clone', 15 | 'width', 16 | 'height', 17 | 'zoomAction', 18 | 'zoomWindowMoveDistance', 19 | 'defaultZoomWindow', 20 | 'zoomWindowMinWidth', 21 | 'hoverStyleAnimationDuration', 22 | 'windowPanDuration', 23 | 'tabIndex' 24 | ], 25 | outputs: [ 26 | 'zoomChanging', 27 | 'zoomChanged', 28 | 'providerCreated', 29 | 'windowDragStarting', 30 | 'windowDragStarted', 31 | 'windowDragging', 32 | 'windowDragEnding', 33 | 'windowDragEnded', 34 | 'windowResizing', 35 | 'windowResized' 36 | ], 37 | standalone: false 38 | }) 39 | export class IgZoombarComponent extends IgControlBase { 40 | constructor(el: ElementRef, renderer: Renderer2, differs: IterableDiffers, kvalDiffers: KeyValueDiffers, cdr: ChangeDetectorRef) { 41 | super(el, renderer, differs, kvalDiffers, cdr); 42 | } 43 | 44 | /** 45 | * Destroys the Zoombar widget 46 | */ 47 | /* istanbul ignore next */ 48 | public destroy(): void { return; } 49 | 50 | /** 51 | * Returns the main zoombar element 52 | */ 53 | /* istanbul ignore next */ 54 | public widget(): void { return; } 55 | 56 | /** 57 | * Returns the ID of the element the zoombar is initialized on 58 | */ 59 | /* istanbul ignore next */ 60 | public id(): string { return; } 61 | 62 | /** 63 | * Returns the DIV that is the topmost container of the zoombar widget 64 | */ 65 | /* istanbul ignore next */ 66 | public container(): Element { return; } 67 | 68 | /** 69 | * Returns the element the clone widget is initialized on 70 | */ 71 | /* istanbul ignore next */ 72 | public clone(): Element { return; } 73 | 74 | /** 75 | * Gets or sets the current zoom window 76 | * 77 | * @param left The left parameter of the new zoom window in percentages 78 | * @param width The width parameter of the new zoom window in percentages 79 | */ 80 | /* istanbul ignore next */ 81 | public zoom(left?: number, width?: number): object { return; } 82 | } 83 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/public-api.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Public API Surface of igniteui-angular-wrappers 3 | */ 4 | 5 | export * from './lib/igniteui-angular-wrappers.module'; 6 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/src/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js'; 4 | import 'zone.js/testing'; 5 | import { getTestBed } from '@angular/core/testing'; 6 | import { 7 | BrowserDynamicTestingModule, 8 | platformBrowserDynamicTesting 9 | } from '@angular/platform-browser-dynamic/testing'; 10 | 11 | // First, initialize the Angular testing environment. 12 | getTestBed().initTestEnvironment( 13 | BrowserDynamicTestingModule, 14 | platformBrowserDynamicTesting(), { 15 | teardown: { destroyAfterEach: false } 16 | } 17 | ); 18 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../out-tsc/lib", 5 | "declarationMap": true, 6 | "declaration": true, 7 | "inlineSources": true, 8 | "types": [ 9 | "jquery", 10 | "ignite-ui" 11 | ], 12 | "lib": [ 13 | "dom", 14 | "es2018" 15 | ] 16 | }, 17 | "angularCompilerOptions": { 18 | "skipTemplateCodegen": true, 19 | "strictMetadataEmit": true, 20 | "fullTemplateTypeCheck": true, 21 | "strictInjectionParameters": true, 22 | "enableResourceInlining": true 23 | }, 24 | "exclude": [ 25 | "src/test.ts", 26 | "**/*.spec.ts" 27 | ] 28 | } 29 | -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/tsconfig.lib.prod.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.lib.json", 3 | "compilerOptions": { 4 | "declarationMap": false 5 | }, 6 | "angularCompilerOptions": { 7 | "compilationMode": "partial" 8 | } 9 | } -------------------------------------------------------------------------------- /projects/igniteui-angular-wrappers/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node", 8 | "jquery", 9 | "ignite-ui" 10 | ] 11 | }, 12 | "files": [ 13 | "src/test.ts" 14 | ], 15 | "include": [ 16 | "**/*.spec.ts", 17 | "**/*.d.ts" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /src/app/app.component.css: -------------------------------------------------------------------------------- 1 | .links a, .links button { 2 | font-size: 1.75em; 3 | color:#999; 4 | margin:.75em .75em 0 0; 5 | } 6 | 7 | .billboard { 8 | background: url(../assets/images/home-background.jpg) no-repeat center center; 9 | -webkit-background-size: cover; 10 | -moz-background-size: cover; 11 | -o-background-size: cover; 12 | background-size: cover; 13 | color:#fff; 14 | background-color: #aa8c68; 15 | border-bottom: 10px solid #d16717; 16 | min-height: 600px; 17 | margin-bottom: 30px; 18 | } 19 | 20 | .billboard .row { 21 | margin: 1em; 22 | } 23 | 24 | .lead { 25 | margin-top:1em; 26 | } 27 | 28 | @media only screen and (min-width:641px){ 29 | 30 | .lead { 31 | margin-top:0; 32 | } 33 | 34 | 35 | 36 | 37 | .billboard .lead { 38 | font-size: 1.2em; 39 | text-transform: uppercase; 40 | } 41 | 42 | .billboard .row { 43 | margin:0; 44 | margin-top: 1em; 45 | } 46 | 47 | .billboard h1 { 48 | font-size: 6em; 49 | margin-bottom:0; 50 | } 51 | 52 | .billboard h2 { 53 | font-size: 2.5em; 54 | margin-top: 0; 55 | } 56 | } 57 | 58 | .push-down { 59 | margin-top:4em; 60 | } 61 | 62 | .push-down-md { 63 | margin-top:2em; 64 | } 65 | 66 | .push-down-xs { 67 | margin-top:1em; 68 | } 69 | 70 | footer { 71 | border-top:1px solid #ccc; 72 | background-color:#ddd; 73 | padding:50px; 74 | margin-top:25px; 75 | color:#999; 76 | } 77 | 78 | .description { 79 | border-bottom: 1px solid #eee; 80 | margin-bottom: 15px; 81 | margin-top: 15px; 82 | } 83 | 84 | .try-it-out hr { 85 | margin: 0px; 86 | margin-top: 4px; 87 | } 88 | 89 | 90 | .try-it-out ul li{ 91 | margin-top: 8px; 92 | margin-bottom: 8px; 93 | } -------------------------------------------------------------------------------- /src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { RouterOutlet } from '@angular/router'; 3 | 4 | @Component({ 5 | selector: 'app-root', 6 | templateUrl: './app.component.html', 7 | styleUrls: ['./app.component.css'], 8 | standalone: false 9 | }) 10 | export class AppComponent { 11 | prepareRoute(outlet: RouterOutlet) { 12 | return outlet && outlet.activatedRouteData && outlet.activatedRouteData.animation; 13 | } 14 | 15 | isHomePage(outlet: RouterOutlet) { 16 | return this.prepareRoute(outlet) === 'HomePage'; 17 | } } 18 | -------------------------------------------------------------------------------- /src/app/app.module.ts: -------------------------------------------------------------------------------- 1 | import { BrowserModule } from '@angular/platform-browser'; 2 | import { NgModule } from '@angular/core'; 3 | import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; 4 | 5 | import { AppComponent } from './app.component'; 6 | import { IgniteUIModule } from 'projects/igniteui-angular-wrappers/src/public-api'; 7 | import { AppRoutingModule } from './app-routing.module'; 8 | import { GridDefaultComponent } from './grid-default/grid-default.component'; 9 | import { GridDataBindingComponent } from './grid-data-binding/grid-data-binding.component'; 10 | import { FormsModule } from '@angular/forms'; 11 | import { GridTopLevelOptionsComponent } from './grid-top-level-options/grid-top-level-options.component'; 12 | import { GridHttpClientComponent } from './grid-http-client/grid-http-client.component'; 13 | import { InMemoryWebApiModule } from 'angular-in-memory-web-api'; 14 | import { ProductData } from './shared/product-data'; 15 | import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; 16 | import { GridComplexOptionsComponent } from './grid-complex-options/grid-complex-options.component'; 17 | import { GridApiMethodsComponent } from './grid-api-methods/grid-api-methods.component'; 18 | import { EditorsComponent } from './editors/editors.component'; 19 | import { GridExcelExportingComponent } from './grid-excel-exporting/grid-excel-exporting.component'; 20 | import { HierarchicalGridComponent } from './hierarchical-grid/hierarchical-grid.component'; 21 | import { TreeGridComponent } from './tree-grid/tree-grid.component'; 22 | import { PivotGridFlatDataSourceComponent } from './pivot-grid-flat-data-source/pivot-grid-flat-data-source.component'; 23 | import { PivotGridXmlaDataSourceComponent } from './pivot-grid-xmla-data-source/pivot-grid-xmla-data-source.component'; 24 | import { ComboComponent } from './combo/combo.component'; 25 | import { DataChartComponent } from './data-chart/data-chart.component'; 26 | import { DialogComponent } from './dialog/dialog.component'; 27 | import { HtmlEditorComponent } from './html-editor/html-editor.component'; 28 | import { LayoutManagerComponent } from './layout-manager/layout-manager.component'; 29 | import { TileManagerComponent } from './tile-manager/tile-manager.component'; 30 | import { MapComponent } from './map/map.component'; 31 | import { TreeComponent } from './tree/tree.component'; 32 | import { UploadComponent } from './upload/upload.component'; 33 | import { VideoPlayerComponent } from './video-player/video-player.component'; 34 | 35 | @NgModule({ declarations: [ 36 | AppComponent, 37 | GridDefaultComponent, 38 | GridDataBindingComponent, 39 | GridTopLevelOptionsComponent, 40 | GridHttpClientComponent, 41 | GridComplexOptionsComponent, 42 | GridApiMethodsComponent, 43 | EditorsComponent, 44 | GridExcelExportingComponent, 45 | HierarchicalGridComponent, 46 | TreeGridComponent, 47 | PivotGridFlatDataSourceComponent, 48 | PivotGridXmlaDataSourceComponent, 49 | ComboComponent, 50 | DataChartComponent, 51 | DialogComponent, 52 | HtmlEditorComponent, 53 | LayoutManagerComponent, 54 | TileManagerComponent, 55 | MapComponent, 56 | TreeComponent, 57 | UploadComponent, 58 | VideoPlayerComponent 59 | ], 60 | bootstrap: [AppComponent], imports: [BrowserModule, 61 | BrowserAnimationsModule, 62 | IgniteUIModule, 63 | FormsModule, 64 | AppRoutingModule, 65 | InMemoryWebApiModule.forRoot(ProductData)], providers: [provideHttpClient(withInterceptorsFromDi())] }) 66 | export class AppModule { } 67 | -------------------------------------------------------------------------------- /src/app/combo/combo.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IgniteUI/igniteui-angular-wrappers/09969ff03e8961160cecb72e8814553160189445/src/app/combo/combo.component.css -------------------------------------------------------------------------------- /src/app/combo/combo.component.html: -------------------------------------------------------------------------------- 1 |
    2 |

    igCombo

    3 |
    4 |
    5 | TRY IT OUT: 6 |
    7 |
      8 |
    • Enter a Product ID in the textbox and see how the combos change
    • 9 |
    • Change a product's name in the group of textboxes below and see how the names change in each combo 10 |
    • 11 |
    12 |
    13 |
    14 |

    This sample demonstrates how to use Angular Components to create igCombos.

    15 |

    Explore 17 | the Code

    18 |
    19 |
    20 | 21 |
    22 |
    23 | 24 |
    values: 1 - 20
    25 |
    26 |
    27 | 28 | 29 | 30 | 31 |
    32 |
    33 | 34 | 35 | 36 | 37 |
    38 |
    39 | 40 |
    41 |

    Edit Product Name

    42 |
    43 | 44 |
    45 | 46 |
    47 | 48 |
    49 |
    -------------------------------------------------------------------------------- /src/app/combo/combo.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { Northwind } from '../shared/northwind'; 3 | 4 | @Component({ 5 | selector: 'app-combo', 6 | templateUrl: './combo.component.html', 7 | styleUrls: ['./combo.component.css'], 8 | standalone: false 9 | }) 10 | export class ComboComponent { 11 | 12 | public options: IgCombo; 13 | public northwind: any; 14 | public combo: any; 15 | 16 | constructor() { 17 | this.northwind = Northwind.getData(); 18 | this.options = { 19 | valueKey: 'ProductID', 20 | textKey: 'ProductName', 21 | width: '100%' 22 | }; 23 | this.combo = { 24 | value1: 20, 25 | value2: 'Chang' 26 | }; 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/app/data-chart/data-chart.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IgniteUI/igniteui-angular-wrappers/09969ff03e8961160cecb72e8814553160189445/src/app/data-chart/data-chart.component.css -------------------------------------------------------------------------------- /src/app/data-chart/data-chart.component.html: -------------------------------------------------------------------------------- 1 |

    igChart & igZoombar

    2 |
    3 |
    4 | TRY IT OUT: 5 |
    6 |
      7 |
    • Scroll the chart with the scroll bar
    • 8 |
    • Change the viewable area of the chart by dragging the handles inside the zoombar
    • 9 |
    10 |
    11 |
    12 |

    This sample demonstrates how to link together the igDataChart and igZoomBar using Ignite UI Angular Wrappers components.

    13 |

    14 | Explore the Code 15 |

    16 |
    17 |
    18 |
    19 |
    20 | 21 | 22 |
    23 | 24 |
    25 |
    -------------------------------------------------------------------------------- /src/app/data-chart/data-chart.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-data-chart', 5 | templateUrl: './data-chart.component.html', 6 | styleUrls: ['./data-chart.component.css'], 7 | standalone: false 8 | }) 9 | export class DataChartComponent { 10 | 11 | public data: any; 12 | public options: any; 13 | public zoombarOptions: any; 14 | 15 | constructor() { 16 | // eslint-disable-next-line max-len 17 | this.data = [{ CountryName: 'China', Pop1995: 1216, Pop2005: 1297, Pop2015: 1361, Pop2025: 1394 }, { CountryName: 'India', Pop1995: 920, Pop2005: 1090, Pop2015: 1251, Pop2025: 1396 }, { CountryName: 'United States', Pop1995: 266, Pop2005: 295, Pop2015: 322, Pop2025: 351 }, { CountryName: 'Indonesia', Pop1995: 197, Pop2005: 229, Pop2015: 256, Pop2025: 277 }, { CountryName: 'Brazil', Pop1995: 161, Pop2005: 186, Pop2015: 204, Pop2025: 218 }]; 18 | 19 | this.options = { 20 | dataSource: this.data, 21 | axes: [{ 22 | name: 'NameAxis', 23 | type: 'categoryX', 24 | title: 'Country', 25 | label: 'CountryName' 26 | }, 27 | { 28 | name: 'PopulationAxis', 29 | type: 'numericY', 30 | minimumvalue: 0, 31 | title: 'Milions of People' 32 | }], 33 | series: [{ 34 | name: '2015Population', 35 | type: 'column', 36 | isHighlightingEnabled: true, 37 | isTransitionInEnabled: true, 38 | xAxis: 'NameAxis', 39 | yAxis: 'PopulationAxis', 40 | valueMemberPath: 'Pop2015' 41 | }] 42 | }; 43 | 44 | this.zoombarOptions = { 45 | target: '#datachart1' 46 | }; 47 | } 48 | 49 | changeZB() { 50 | let opts = {}; 51 | 52 | opts = { 53 | target: '#datachart1', 54 | clone: { 55 | dataSource: this.data, 56 | gridMode: 'none', 57 | axes: [{ 58 | name: 'NameAxis', 59 | type: 'categoryX', 60 | labelVisibility: 'collapsed' 61 | }, 62 | { 63 | name: 'PopulationAxis', 64 | type: 'numericY', 65 | labelVisibility: 'collapsed' 66 | }], 67 | series: [{ 68 | name: '2015Population', 69 | type: 'line', 70 | xAxis: 'NameAxis', 71 | yAxis: 'PopulationAxis', 72 | valueMemberPath: 'Pop2015' 73 | }] 74 | } 75 | }; 76 | this.zoombarOptions = opts; 77 | } 78 | 79 | } 80 | -------------------------------------------------------------------------------- /src/app/dialog/dialog.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IgniteUI/igniteui-angular-wrappers/09969ff03e8961160cecb72e8814553160189445/src/app/dialog/dialog.component.css -------------------------------------------------------------------------------- /src/app/dialog/dialog.component.html: -------------------------------------------------------------------------------- 1 |

    igDialog

    2 |
    3 |
    4 | TRY IT OUT: 5 |
    6 |
      7 |
    • Drag the dialog around the page by the header
    • 8 |
    • Close the dialog and refresh the page to see it reappear
    • 9 |
    10 |
    11 |
    12 |

    This sample demonstrates how to declare an igDialog with an Ignite UI Angular Wrappers component.

    13 |

    Explore the Code 14 |

    15 |
    16 |
    17 |
    18 |
    19 | 20 |

    21 | 22 |

    23 | 24 |
    25 |
    26 |
    -------------------------------------------------------------------------------- /src/app/dialog/dialog.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-dialog', 5 | templateUrl: './dialog.component.html', 6 | styleUrls: ['./dialog.component.css'], 7 | standalone: false 8 | }) 9 | export class DialogComponent { 10 | 11 | public options: any; 12 | 13 | constructor() { 14 | this.options = { 15 | headerText: 'Foo', 16 | height: '325px' 17 | }; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/app/editors/editors.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IgniteUI/igniteui-angular-wrappers/09969ff03e8961160cecb72e8814553160189445/src/app/editors/editors.component.css -------------------------------------------------------------------------------- /src/app/editors/editors.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-editors', 5 | templateUrl: './editors.component.html', 6 | styleUrls: ['./editors.component.css'], 7 | standalone: false 8 | }) 9 | export class EditorsComponent { 10 | 11 | public editors: any; 12 | 13 | constructor() { 14 | this.editors = { 15 | currency: 12.1, 16 | date: new Date(), 17 | editor: 'Infragistics', 18 | mask: '134-134-134', 19 | numeric: 123, 20 | percent: 0.12, 21 | text: 'Ignite UI' 22 | }; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/app/grid-api-methods/grid-api-methods.component.css: -------------------------------------------------------------------------------- 1 | fieldset.explorer { 2 | float: left; 3 | width: 45%; 4 | } 5 | fieldset { 6 | border: none; 7 | margin: 1em; 8 | } 9 | fieldset legend { 10 | color: #5F6564; 11 | font-family: 'Open Sans',sans-serif; 12 | font-size: 16px; 13 | font-weight: 300; 14 | } 15 | fieldset label { 16 | display: block; 17 | margin: 0.5em 0; 18 | font-size: 12px; 19 | color: #666; 20 | } -------------------------------------------------------------------------------- /src/app/grid-complex-options/grid-complex-options.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IgniteUI/igniteui-angular-wrappers/09969ff03e8961160cecb72e8814553160189445/src/app/grid-complex-options/grid-complex-options.component.css -------------------------------------------------------------------------------- /src/app/grid-complex-options/grid-complex-options.component.html: -------------------------------------------------------------------------------- 1 |

    igGrid

    2 | 3 |
    4 |
    5 |

    This sample demonstrates how Ignite UI Angular Wrappers components are used to initialize the 6 | igGrid complex options though the template.

    7 |

    Explore the 9 | Code

    10 |
    11 |
    12 | 13 |
    14 |
    15 | 17 | 18 | 19 | 20 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
    29 | 30 | 33 |
    34 | {{idHeaderText}} 36 |
    37 | 38 |
    -------------------------------------------------------------------------------- /src/app/grid-complex-options/grid-complex-options.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { Northwind } from '../shared/northwind'; 3 | 4 | @Component({ 5 | selector: 'app-grid-complex-options', 6 | templateUrl: './grid-complex-options.component.html', 7 | styleUrls: ['./grid-complex-options.component.css'], 8 | standalone: false 9 | }) 10 | export class GridComplexOptionsComponent { 11 | 12 | public cols: Array; 13 | public id: string; 14 | public data: any; 15 | public w: string; 16 | public h: string; 17 | public pKey: string; 18 | public isReadOnly = true; 19 | public cs: Array = [{ columnKey: 'ProductID', readOnly: this.isReadOnly }]; 20 | public pi = 0; 21 | public idHeaderText = 'Id'; 22 | public pages: Array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; 23 | 24 | constructor() { 25 | this.data = Northwind.getData(); 26 | 27 | this.id = 'grid1'; 28 | this.w = '100%'; 29 | this.h = '400px'; 30 | this.pKey = 'ProductID'; 31 | 32 | this.cols = [ 33 | { key: 'ProductID', headerText: 'Product ID', width: '50px', dataType: 'number' }, 34 | { key: 'ProductName', headerText: 'Name', width: '250px', dataType: 'string' }, 35 | { key: 'QuantityPerUnit', headerText: 'Quantity per unit', width: '250px', dataType: 'string' }, 36 | { key: 'UnitPrice', headerText: 'Unit Price', width: '100px', dataType: 'number' } 37 | ]; 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /src/app/grid-data-binding/grid-data-binding.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IgniteUI/igniteui-angular-wrappers/09969ff03e8961160cecb72e8814553160189445/src/app/grid-data-binding/grid-data-binding.component.css -------------------------------------------------------------------------------- /src/app/grid-data-binding/grid-data-binding.component.html: -------------------------------------------------------------------------------- 1 |

    igGrid

    2 |
    3 |
    4 | TRY IT OUT: 5 |
    6 |
      7 |
    • Add a new product either through the grid's UI or the form on the right of the grid
    • 8 |
    • Change a product's name in the group of textboxes below and see how the names change in the grid
    • 9 |
    • Delete a product either through the grid's UI or with the button next to each product in the table under the grid
    • 10 |
    11 |
    12 |
    13 |

    This sample demonstrates how Ignite UI Angular Wrappers components are used with the igGrid to allow for two-way binding in the grid.

    14 |

    Explore the Code

    15 |
    16 |
    17 | 18 |
    19 |
    20 | 21 |
    22 |
    23 |

    Add Product

    24 |
    25 | 26 | 28 | 29 | 30 |
    31 |
    32 |
    33 | 34 |
    35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 53 | 54 | 55 |
    Product IDNameQuantity per unitUnit Price
    {{product.ProductID}}{{product.QuantityPerUnit}} 52 |
    -------------------------------------------------------------------------------- /src/app/grid-data-binding/grid-data-binding.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ViewChild } from '@angular/core'; 2 | import { IgGridComponent } from 'projects/igniteui-angular-wrappers/src/public-api'; 3 | import { Northwind } from '../shared/northwind'; 4 | 5 | @Component({ 6 | selector: 'app-grid-data-binding', 7 | templateUrl: './grid-data-binding.component.html', 8 | styleUrls: ['./grid-data-binding.component.css'], 9 | standalone: false 10 | }) 11 | export class GridDataBindingComponent { 12 | 13 | public gridOptions: IgGrid; 14 | public id: string; 15 | public data: any; 16 | public newProduct: any; 17 | @ViewChild('grid1', { static: true }) grid: IgGridComponent; 18 | // private deleteRecord: any; 19 | 20 | constructor() { 21 | this.data = Northwind.getData(); 22 | 23 | this.id = 'grid1'; 24 | this.newProduct = this.createNewProduct(); 25 | 26 | this.gridOptions = { 27 | autoCommit: true, 28 | width: '100%', 29 | height: '400px', 30 | autoGenerateColumns: false, 31 | columns: [ 32 | { key: 'ProductID', headerText: 'Product ID', width: '50px', dataType: 'number' }, 33 | { key: 'ProductName', headerText: 'Name', width: '250px', dataType: 'string' }, 34 | { key: 'QuantityPerUnit', headerText: 'Quantity per unit', width: '250px', dataType: 'string' }, 35 | { key: 'UnitPrice', headerText: 'Unit Price', width: '100px', dataType: 'number', template: jQuery('#colTmpl').html() } 36 | ], 37 | primaryKey: 'ProductID', 38 | features: [ 39 | { 40 | name: 'Updating', 41 | columnSettings: [ 42 | { columnKey: 'ProductID', readOnly: true } 43 | ] 44 | }, 45 | { 46 | name: 'Paging', 47 | pageSize: 10 48 | }, 49 | { 50 | name: 'Filtering' 51 | }, 52 | { 53 | name: 'Sorting' 54 | } 55 | ] 56 | }; 57 | } 58 | 59 | createNewProduct() { 60 | const newProduct = { 61 | ProductID: this.data.length + 1, 62 | ProductName: null, 63 | QuantityPerUnit: null, 64 | UnitPrice: null 65 | }; 66 | return newProduct; 67 | } 68 | 69 | addRecord() { 70 | this.data.push(this.newProduct); 71 | this.newProduct = this.createNewProduct(); 72 | } 73 | 74 | deleteRecord(val) { 75 | let ind = 0; 76 | this.data.filter((item, index) => { 77 | if (item.ProductID === val) { 78 | ind = index; 79 | } 80 | return item.ProductID === val; 81 | }); 82 | this.data.splice(ind, 1); 83 | } 84 | 85 | } 86 | -------------------------------------------------------------------------------- /src/app/grid-default/grid-default.component.css: -------------------------------------------------------------------------------- 1 | .billboard { 2 | background: url(../../assets/images/home-background.jpg) no-repeat center; 3 | -webkit-background-size: cover; 4 | -moz-background-size: cover; 5 | -o-background-size: cover; 6 | background-size: cover; 7 | color:#fff; 8 | background-color: #aa8c68; 9 | border-bottom: 10px solid #d16717; 10 | min-height: 600px; 11 | } -------------------------------------------------------------------------------- /src/app/grid-default/grid-default.component.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    Live sample...

    4 | 5 |
    6 |
    7 |

    Code...

    8 |
    9 |
    10 | import {{ '{' }} Component {{ '}' }} from '@angular/core';
    11 | 
    12 | declare var jQuery: any;
    13 | @Component({{ '{' }}
    14 |     selector: "my-app",
    15 |     template: `
    16 |         <ig-grid 
    17 |             [(options)]="gridOptions" 
    18 |             [(widgetId)]="id" 
    19 |             (cellClick)="cellClickHandler($event)" 
    20 |             (rendering)="renderedEventHandler($event)" 
    21 |         ></ig-grid>
    22 |         `
    23 | {{ '}' }})
    24 | export class AppComponent {{ '{' }}
    25 |     private gridOptions: IgGrid;
    26 |     private cellClickHandler: any;
    27 |     private renderedEventHandler:any;
    28 |     private data: Array<any>;
    29 |     private id: string = "grid1";
    30 |     
    31 |     constructor() {{ '{' }}
    32 |         this.data = [/* data omitted */];
    33 | 
    34 |         this.cellClickHandler= function(ui){{ '{' }}
    35 |             console.log("grid cell click event fired");
    36 |         {{ '}' }};
    37 | 
    38 |         this.renderedEventHandler= function(ui){{ '{' }}
    39 |             console.log("grid rendered event fired");
    40 |         {{ '}' }};
    41 | 
    42 |         this.gridOptions = {{ '{' }}
    43 |             dataSource: this.data,
    44 |             width: "100%",
    45 |             primaryKey: "ProductID",
    46 |             autoCommit: true,
    47 |             autoGenerateColumns: false,
    48 |             columns: [
    49 |                         {{ '{' }} "headerText": "Product ID", "key": "ProductID", "dataType": "number", "width": "10%" {{ '}' }},
    50 |                         {{ '{' }} "headerText": "Name", "key": "ProductName", "dataType": "string", "width": "40%" {{ '}' }},
    51 |                         {{ '{' }} "headerText": "Quantity per unit", "key": "QuantityPerUnit", "dataType": "string", "width": "25%" {{ '}' }},
    52 |                         {{ '{' }} "headerText": "Unit Price", "key": "UnitPrice", "dataType": "string", "width": "25%" {{ '}' }}
    53 |             ],
    54 |             features: [{{ '{' }}
    55 |                 name: "Updating",
    56 |                 columnSettings: [{{ '{' }}
    57 |                     columnKey: "ProductID",
    58 |                     readOnly: true
    59 |                 {{ '}' }}]
    60 |             {{ '}' }}, {{ '{' }}
    61 |                 name: "Paging",
    62 |                 pageSize: 10
    63 |             {{ '}' }}, {{ '{' }}
    64 |                 name: "Filtering"
    65 |             {{ '}' }}, {{ '{' }}
    66 |                 name: "Sorting"
    67 |             {{ '}' }}]
    68 |         {{ '}' }};
    69 |     {{ '}' }}
    70 | {{ '}' }}
    71 |                 
    72 |
    73 |
    74 |
    75 | 76 | 77 | -------------------------------------------------------------------------------- /src/app/grid-excel-exporting/grid-excel-exporting.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IgniteUI/igniteui-angular-wrappers/09969ff03e8961160cecb72e8814553160189445/src/app/grid-excel-exporting/grid-excel-exporting.component.css -------------------------------------------------------------------------------- /src/app/grid-excel-exporting/grid-excel-exporting.component.html: -------------------------------------------------------------------------------- 1 |

    2 | igGrid - Excel Exporting 3 |

    4 | 5 |
    6 |
    7 | This sample shows how easy it is to export the Infragistics Ignite UI data grid to Excel. TRY IT OUT: 8 |
    9 |
      10 |
    • Edit a cell
    • 11 |
    • Sort a column
    • 12 |
    • Add a new row
    • 13 |
    • Remove a row
    • 14 |
    • Click the Export button to export the grid in Excel table
    • 15 |
    16 |
    17 |
    18 |

    This sample demonstrates how Ignite UI Angular Wrappers components are used with the igGrid to allow exporting to Excel

    19 |

    20 | 22 | Explore the Code 23 |

    24 |
    25 |
    26 | 27 |
    28 |
    29 | 30 |
    31 | 32 |
    33 |
    -------------------------------------------------------------------------------- /src/app/grid-excel-exporting/grid-excel-exporting.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { Northwind } from '../shared/northwind'; 3 | 4 | declare var jQuery: any; 5 | 6 | @Component({ 7 | selector: 'app-grid-excel-exporting', 8 | templateUrl: './grid-excel-exporting.component.html', 9 | styleUrls: ['./grid-excel-exporting.component.css'], 10 | standalone: false 11 | }) 12 | export class GridExcelExportingComponent { 13 | 14 | public gridOptions: IgGrid; 15 | public id: string; 16 | public data: any; 17 | 18 | constructor() { 19 | this.data = Northwind.getData(); 20 | 21 | this.id = 'grid1'; 22 | 23 | this.gridOptions = { 24 | autoCommit: true, 25 | width: '100%', 26 | height: '400px', 27 | autoGenerateColumns: false, 28 | columns: [ 29 | { 30 | key: 'ProductID', 31 | headerText: 'Product ID', 32 | width: '50px', 33 | dataType: 'number' 34 | }, 35 | { 36 | key: 'ProductName', 37 | headerText: 'Name', 38 | width: '350px', 39 | dataType: 'string' 40 | }, 41 | { 42 | key: 'QuantityPerUnit', 43 | headerText: 'Quantity per unit', 44 | width: '250px', 45 | dataType: 'string' 46 | }, 47 | { 48 | key: 'UnitPrice', 49 | headerText: 'Unit Price', 50 | width: '100px', 51 | dataType: 'number', 52 | template: jQuery('#colTmpl').html() 53 | } 54 | ], 55 | primaryKey: 'ProductID', 56 | features: [ 57 | { 58 | name: 'Updating', 59 | columnSettings: [{ columnKey: 'ProductID', readOnly: true }] 60 | }, 61 | { 62 | name: 'Sorting' 63 | } 64 | ] 65 | }; 66 | } 67 | 68 | public exportExcelGrid() { 69 | jQuery.ig.GridExcelExporter.exportGrid($('#grid1'), { 70 | fileName: 'igGrid', 71 | gridStyling: $('#styling').igCheckboxEditor('value') ? 'applied' : 'none', 72 | gridFeatureOptions: { 73 | sorting: $('#sorting').igCheckboxEditor('value') ? 'applied' : 'none' 74 | } 75 | }); 76 | } 77 | 78 | } 79 | -------------------------------------------------------------------------------- /src/app/grid-http-client/grid-http-client.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IgniteUI/igniteui-angular-wrappers/09969ff03e8961160cecb72e8814553160189445/src/app/grid-http-client/grid-http-client.component.css -------------------------------------------------------------------------------- /src/app/grid-http-client/grid-http-client.component.html: -------------------------------------------------------------------------------- 1 |

    igGrid

    2 | 3 |
    4 |
    5 |

    6 | This sample demonstrates how to configure IgGrid Component to talk to remote server. It is based on the HTTP Client demo with Observables. 7 | It is using in-memory web API simulator, to avoid the hassle in creating web API server. 8 | There is also an ability to create new products and send them to the backend. 9 |

    10 |

    11 | The grid is created when bound to an empty data source and then using a service to populate the data. 12 |

    13 |

    Explore the Code

    14 |
    15 |
    16 | 17 | 18 |
    19 | 20 |
    21 |
    22 |
    ProductName: 23 | 24 |
    25 |
    DealerName: 26 | 27 |
    28 |
    CategoryName: 29 | 30 |
    31 |
    InStock: 32 | 33 |
    34 |
    35 |
    36 |
    37 | 38 |
    39 |
    40 |
    41 | 42 |
    {{errorMessage}}
    -------------------------------------------------------------------------------- /src/app/grid-http-client/grid-http-client.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { Product } from './product'; 3 | import { ProductService } from './product.service'; 4 | 5 | @Component({ 6 | selector: 'app-grid-http-client', 7 | templateUrl: './grid-http-client.component.html', 8 | styleUrls: ['./grid-http-client.component.css'], 9 | standalone: false 10 | }) 11 | export class GridHttpClientComponent { 12 | 13 | public gridOptions: IgGrid; 14 | public id: string; 15 | public products: Product[] = []; 16 | errorMessage: string; 17 | public newId: number; 18 | 19 | constructor(private productService: ProductService) { 20 | this.productService.getAll().subscribe( 21 | res => { 22 | this.products = res; 23 | this.newId = this.products.length; 24 | }, 25 | error => this.errorMessage = error as any 26 | ); 27 | 28 | this.id = 'grid1'; 29 | 30 | this.gridOptions = { 31 | autoCommit: true, 32 | width: '100%', 33 | height: '400px', 34 | autoGenerateColumns: false, 35 | primaryKey: 'id', 36 | columns: [ 37 | { key: 'id', headerText: 'Product ID', width: '15%', dataType: 'number' }, 38 | { key: 'ProductName', headerText: 'Name', width: '35%', dataType: 'string' }, 39 | { key: 'DealerName', headerText: 'Dealer Name', width: '15%', dataType: 'string' }, 40 | { key: 'CategoryName', headerText: 'CategoryName', width: '25%', dataType: 'string' }, 41 | { key: 'InStock', headerText: 'InStock', width: '15%', dataType: 'number' } 42 | ], 43 | features: [ 44 | { 45 | name: 'Updating', 46 | editMode: 'none', 47 | enableAddRow: false, 48 | enableDeleteRow: false 49 | } 50 | ] 51 | }; 52 | } 53 | 54 | addProduct(newProductName, newDealerName, newCategoryName, newInStock) { 55 | this.newId++; 56 | this.productService.addProduct(this.newId, newProductName, newDealerName, newCategoryName, newInStock) 57 | .subscribe(product => this.products.push(product)); 58 | } 59 | 60 | } 61 | -------------------------------------------------------------------------------- /src/app/grid-http-client/product.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { HttpClient, HttpHeaders } from '@angular/common/http'; 3 | import { Observable } from 'rxjs'; 4 | import { Product } from './product'; 5 | 6 | @Injectable({ 7 | providedIn: 'root' 8 | }) 9 | export class ProductService { 10 | constructor(private http: HttpClient) { } 11 | 12 | getAll(): Observable { 13 | const people$ = this.http 14 | .get('app/products'); 15 | return people$; 16 | } 17 | 18 | addProduct(id, ProductName, DealerName, CategoryName, InStock): Observable { 19 | const newProduct: Product = { id, ProductName, DealerName, CategoryName, InStock } as Product; 20 | const headers = new HttpHeaders({ 'Content-Type': 'application/json', Authorization: 'my-auth-token' }); 21 | return this.http.post('app/products', newProduct, {headers}); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/app/grid-http-client/product.ts: -------------------------------------------------------------------------------- 1 | export interface Product { 2 | id: number; 3 | ProductName: string; 4 | DealerName: string; 5 | CategoryName: string; 6 | InStock: number; 7 | } 8 | -------------------------------------------------------------------------------- /src/app/grid-top-level-options/grid-top-level-options.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IgniteUI/igniteui-angular-wrappers/09969ff03e8961160cecb72e8814553160189445/src/app/grid-top-level-options/grid-top-level-options.component.css -------------------------------------------------------------------------------- /src/app/grid-top-level-options/grid-top-level-options.component.html: -------------------------------------------------------------------------------- 1 |
    2 |

    igGrid

    3 | 4 |
    5 |
    6 |

    This sample demonstrates how Ignite UI Angular Wrappers components are used to initialize 7 | the igGrid top-level options though the template.

    8 |

    Explore 10 | the Code

    11 |
    12 |
    13 | 14 |
    15 |
    16 | 18 |
    19 |
    20 | 21 | 22 |
    -------------------------------------------------------------------------------- /src/app/grid-top-level-options/grid-top-level-options.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { Northwind } from '../shared/northwind'; 3 | 4 | @Component({ 5 | selector: 'app-grid-top-level-options', 6 | templateUrl: './grid-top-level-options.component.html', 7 | styleUrls: ['./grid-top-level-options.component.css'], 8 | standalone: false 9 | }) 10 | export class GridTopLevelOptionsComponent { 11 | 12 | public cols: Array; 13 | public id: string; 14 | public data: any; 15 | public w: string; 16 | public h: string; 17 | public pKey: string; 18 | 19 | constructor() { 20 | this.data = Northwind.getData(); 21 | 22 | this.id = 'grid1'; 23 | this.w = '100%'; 24 | this.h = '400px'; 25 | this.pKey = 'ProductID'; 26 | 27 | this.cols = [ 28 | { key: 'ProductID', headerText: 'Product ID', width: '50px', dataType: 'number' }, 29 | { key: 'ProductName', headerText: 'Name', width: '250px', dataType: 'string' }, 30 | { key: 'QuantityPerUnit', headerText: 'Quantity per unit', width: '250px', dataType: 'string' }, 31 | { key: 'UnitPrice', headerText: 'Unit Price', width: '100px', dataType: 'number' } 32 | ]; 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /src/app/hierarchical-grid/hierarchical-grid.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IgniteUI/igniteui-angular-wrappers/09969ff03e8961160cecb72e8814553160189445/src/app/hierarchical-grid/hierarchical-grid.component.css -------------------------------------------------------------------------------- /src/app/hierarchical-grid/hierarchical-grid.component.html: -------------------------------------------------------------------------------- 1 |

    igHierarchicalGrid

    2 |
    3 |
    4 |

    This sample demonstrates how Ignite UI Angular Wrappers components are used to instantiate igHierarchicalGrid.

    5 |

    Explore the Code

    6 |
    7 |
    8 | 9 |
    10 |
    11 | 14 | 15 | 16 |
    17 |
    -------------------------------------------------------------------------------- /src/app/hierarchical-grid/hierarchical-grid.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { NorthwindEmployees } from '../shared/northwind-emplyoees'; 3 | 4 | @Component({ 5 | selector: 'app-hierarchical-grid', 6 | templateUrl: './hierarchical-grid.component.html', 7 | styleUrls: ['./hierarchical-grid.component.css'], 8 | standalone: false 9 | }) 10 | export class HierarchicalGridComponent { 11 | 12 | public hgridOptions: IgHierarchicalGrid; 13 | public id: string; 14 | public data: any; 15 | public newProduct: any; 16 | 17 | constructor() { 18 | this.data = NorthwindEmployees.getData(); 19 | 20 | this.id = 'hgrid1'; 21 | 22 | this.hgridOptions = { 23 | autoCommit: true, 24 | dataSource: this.data, 25 | width: '100%', 26 | height: '400px', 27 | autoGenerateColumns: false, 28 | autoGenerateColumnLayouts: false, 29 | columns: [ 30 | { key: 'FirstName', headerText: 'First Name', width: '25%', dataType: 'string' }, 31 | { key: 'LastName', headerText: 'Last Name', width: '25%', dataType: 'string' }, 32 | { key: 'Title', headerText: 'Title', width: '25%', dataType: 'string' }, 33 | { key: 'BirthDate', headerText: 'Birth Date', width: '25%', dataType: 'date' } 34 | ], 35 | columnLayouts: [ 36 | { 37 | key: 'Orders', 38 | responseDataKey: 'results', 39 | primaryKey: 'OrderID', 40 | autoGenerateColumns: false, 41 | width: '100%', 42 | columns: [ 43 | { key: 'OrderID', headerText: 'OrderID', width: '25%', dataType: 'string' }, 44 | { key: 'Freight', headerText: 'Freight', width: '25%', dataType: 'string' }, 45 | { key: 'ShipName', headerText: 'ShipName', width: '25%', dataType: 'string' }, 46 | { key: 'ShipAddress', headerText: 'ShipAddress', width: '25%', dataType: 'string' } 47 | ], 48 | features: [ 49 | { 50 | name: 'Paging', 51 | pageSize: '10' 52 | } 53 | ] 54 | } 55 | ] 56 | }; 57 | } 58 | 59 | } 60 | -------------------------------------------------------------------------------- /src/app/html-editor/html-editor.component.css: -------------------------------------------------------------------------------- 1 | textarea { 2 | width: 100%; 3 | height: 400px; 4 | } -------------------------------------------------------------------------------- /src/app/html-editor/html-editor.component.html: -------------------------------------------------------------------------------- 1 |

    igHtmlEditor

    2 |
    3 |
    4 | TRY IT OUT: 5 |
    6 |
      7 |
    • Change the content in the TEXTAREA on the right to see igHtmlEditor on the left updated and vice versa
    • 8 |
    9 |
    10 |
    11 |

    This sample demonstrates how Ignite UI Angular Wrappers components are used with the igHtmlEditor to allow for two-way binding.

    12 |

    Explore the Code

    14 |
    15 |
    16 |
    17 |
    18 | 19 | 20 |
    21 |
    22 | 23 |
    24 |
    -------------------------------------------------------------------------------- /src/app/html-editor/html-editor.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-html-editor', 5 | templateUrl: './html-editor.component.html', 6 | styleUrls: ['./html-editor.component.css'], 7 | standalone: false 8 | }) 9 | export class HtmlEditorComponent { 10 | 11 | public options: any; 12 | public data: any; 13 | 14 | constructor() { 15 | this.data = '

    Ignite UI controls:

    • igEditors
    • igHtmlEditor
    • igGrid
    • igDataChart
    • etc.

    '; 16 | this.options = { 17 | value: this.data, 18 | height: '400px', 19 | width: '700px' 20 | }; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/app/layout-manager/layout-manager.component.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: #fff; 3 | font-family: 'segoe ui', 'arial', 'helvetica', 'sans-serif'; 4 | /*overflow-x:hidden;*/ 5 | } 6 | 7 | :host /deep/ div#layout h2 { 8 | margin: 0; 9 | } 10 | 11 | :host /deep/ div#layout .left, 12 | :host /deep/ div#layout .right, 13 | :host /deep/ div#layout .center, 14 | :host /deep/ div#layout .footer, 15 | :host /deep/ div#layout .header { 16 | color: #fff; 17 | } 18 | 19 | :host /deep/ div#layout .left p, 20 | :host /deep/ div#layout .right p, 21 | :host /deep/ div#layout .center p, 22 | :host /deep/ div#layout h3 { 23 | margin: 15px; 24 | } 25 | 26 | :host /deep/ div#layout .center { 27 | background-color: #EEE; 28 | color: #555; 29 | } 30 | 31 | :host /deep/ div#layout .right { 32 | background-color: #555; 33 | color: #EEE; 34 | } 35 | 36 | :host /deep/ div#layout .left { 37 | background-color: #FFA72D; 38 | } 39 | 40 | :host /deep/ div#layout .header { 41 | background-color: #2CBDF9; 42 | } 43 | 44 | :host /deep/ div#layout .footer { 45 | background-color: #2CBDF9; 46 | } 47 | 48 | #sampleContainer { 49 | height: 370px; 50 | } -------------------------------------------------------------------------------- /src/app/layout-manager/layout-manager.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-layout-manager', 5 | templateUrl: './layout-manager.component.html', 6 | styleUrls: ['./layout-manager.component.css'], 7 | standalone: false 8 | }) 9 | export class LayoutManagerComponent { 10 | 11 | public layoutOptions: any; 12 | 13 | constructor() { 14 | this.layoutOptions = { 15 | layoutMode: 'border', 16 | height: '300px', 17 | borderLayout: { 18 | leftWidth: '10%', 19 | rightWidth: '20%' 20 | } 21 | }; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/app/map/map.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IgniteUI/igniteui-angular-wrappers/09969ff03e8961160cecb72e8814553160189445/src/app/map/map.component.css -------------------------------------------------------------------------------- /src/app/map/map.component.html: -------------------------------------------------------------------------------- 1 |

    igMap

    2 |
    3 |
    4 | TRY IT OUT: 5 |
    6 |
      7 |
    • Use the mouse wheel to zoom in on the map
    • 8 |
    • Click and drag or use the arrow keys to pan the map
    • 9 |
    10 |
    11 |
    12 |

    This sample demonstrates how create an igMap using an Ignite UI Angular Wrappers component.

    13 |

    Explore the 15 | Code

    16 |
    17 |
    18 | -------------------------------------------------------------------------------- /src/app/map/map.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-map', 5 | templateUrl: './map.component.html', 6 | styleUrls: ['./map.component.css'], 7 | standalone: false 8 | }) 9 | export class MapComponent { 10 | constructor() { } 11 | } 12 | -------------------------------------------------------------------------------- /src/app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "wrappers", 3 | "private": true, 4 | "description": "This is a special package.json file that is not used by package managers. It is however used to tell the tools and bundlers whether the code under this directory is free of code with non-local side-effect. Any code that does have non-local side-effects can't be well optimized (tree-shaken) and will result in unnecessary increased payload size. It should be safe to set this option to 'false' for new applications, but existing code bases could be broken when built with the production config if the application code does contain non-local side-effects that the application depends on.", 5 | "sideEffects": true 6 | } -------------------------------------------------------------------------------- /src/app/pivot-grid-flat-data-source/pivot-grid-flat-data-source.component.css: -------------------------------------------------------------------------------- 1 | 2 | :host /deep/ #dataSelector, #pivotGrid { 3 | float: left; 4 | } 5 | 6 | :host /deep/ #pivotGrid_container { 7 | float: right; 8 | width: 75%; 9 | } -------------------------------------------------------------------------------- /src/app/pivot-grid-flat-data-source/pivot-grid-flat-data-source.component.html: -------------------------------------------------------------------------------- 1 |

    igPivotGrid

    2 | 3 |
    4 |
    5 |

    This sample demonstrates how Angular components are used to instantiate igPivotGrid.

    6 |

    Explore the Code

    7 |
    8 |
    9 | 10 |
    11 |
    12 | 13 | 14 | 15 | 16 |
    17 |
    -------------------------------------------------------------------------------- /src/app/pivot-grid-xmla-data-source/pivot-grid-xmla-data-source.component.css: -------------------------------------------------------------------------------- 1 | :host /deep/ #dataSelector, #pivotGrid { 2 | float: left; 3 | } 4 | 5 | :host /deep/ #pivotGrid_container { 6 | float: right; 7 | width: 70%; 8 | } -------------------------------------------------------------------------------- /src/app/pivot-grid-xmla-data-source/pivot-grid-xmla-data-source.component.html: -------------------------------------------------------------------------------- 1 |

    igPivotGrid

    2 | 3 |
    4 |
    5 |

    This sample demonstrates how Angular Components are used with the igPivotGrid and Olap Xmla Data Source.

    6 |

    Explore the Code

    7 |
    8 |
    9 | 10 |
    11 |
    12 | 13 | 14 | 15 | 16 |
    17 |
    -------------------------------------------------------------------------------- /src/app/pivot-grid-xmla-data-source/pivot-grid-xmla-data-source.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-pivot-grid-xmla-data-source', 5 | templateUrl: './pivot-grid-xmla-data-source.component.html', 6 | styleUrls: ['./pivot-grid-xmla-data-source.component.css'], 7 | standalone: false 8 | }) 9 | export class PivotGridXmlaDataSourceComponent { 10 | 11 | public optsGrid: IgPivotGrid; 12 | public optsSelector: IgPivotDataSelector; 13 | public selectorId: string; 14 | public gridId: string; 15 | public data: any; 16 | 17 | constructor() { 18 | this.data = new jQuery.ig.OlapXmlaDataSource({ 19 | serverUrl: 'http://sampledata.infragistics.com/olap/msmdpump.dll', 20 | catalog: 'Adventure Works DW Standard Edition', 21 | cube: 'Adventure Works', 22 | rows: '[Ship Date].[Calendar]', 23 | columns: '[Delivery Date].[Calendar]', 24 | measures: '[Measures].[Product Gross Profit Margin Status],[Measures].[Product Gross Profit Margin Goal]', 25 | }); 26 | 27 | this.selectorId = 'dataSelector'; 28 | this.gridId = 'pivotGrid'; 29 | 30 | this.optsGrid = { 31 | dataSource: this.data, 32 | height: '650px' 33 | }; 34 | 35 | this.optsSelector = { 36 | dataSource: this.data, 37 | height: '650px', 38 | width: '30%' 39 | }; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/app/shared/candidates.ts: -------------------------------------------------------------------------------- 1 | export module candidates { 2 | export function getData() { 3 | return [ 4 | {name: 'Douglas Crockford', text: 'Douglas Crockford is an American computer programmer and entrepreneur who is best known for his ongoing involvement in the development of the JavaScript language, for having popularized the data format JSON (JavaScript Object Notation), and for developing various JavaScript related tools such as JSLint and JSMin. He is currently a senior JavaScript architect at PayPal, and is also a writer and speaker on JavaScript, JSON, and related web technologies such as the Yahoo! User Interface Library (YUI).', skills: [ 5 | {description: 'JavaScript'}, 6 | {description: 'JSON'}, 7 | {description: 'HTML'}, 8 | {description: 'JSLint'} 9 | ], picture: 'http://www.igniteui.com/images/samples/tile-manager/450px-Douglas_Crockford.jpg', linkedin: 'http://www.linkedin.com/groups?gid=3165057&trk=group-name' 10 | }, 11 | {name: 'John Resig', text: 'John Resig is the Dean of Computer Science at Khan Academy and the creator of the jQuery JavaScript library. He\'s also the author of the books Pro JavaScript Techniques and Secrets of the JavaScript Ninja. Currently, John is located in Brooklyn, NY and enjoys studying Ukiyo-e (Japanese Woodblock Printing) in his spare time.', skills: [ 12 | {description: 'JavaScript'}, 13 | {description: 'JSON'}, 14 | {description: 'HTML'}, 15 | {description: 'jQuery'} 16 | ], picture: 'http://www.igniteui.com/images/samples/tile-manager/3450728563_69b0bd0743_m.jpg', linkedin: 'http://www.linkedin.com/groups?viewMembers=&gid=100943&sik=1360507269893&goback=%2Eanp_100943_1360507269892_1' 17 | }, 18 | {name: 'Bill Gates', text: 'William Henry "Bill" Gates III (born October 28, 1955) is an American programmer, inventor, business magnate and philanthropist. Gates is the former chief executive and current chairman of Microsoft, the world\'s largest personal-computer software company, which he co-founded with Paul Allen. He is consistently ranked among the world\'s wealthiest people and was the wealthiest overall from 1995 to 2009, excluding 2008, when he was ranked third; in 2011 he was the wealthiest American and the second wealthiest person. During his career at Microsoft, Gates held the positions of CEO and chief software architect, and remains the largest individual shareholder, with 6.4 percent of the common stock. He has also authored and co-authored several books.', skills: [ 19 | {description: 'Entrepreneurship'}, 20 | {description: 'VB'}, 21 | {description: 'Operating Systems'}, 22 | {description: 'Programming Languages'} 23 | ], picture: 'http://www.igniteui.com/images/samples/tile-manager/220px-BillGates2012.jpg', linkedin: 'http://www.linkedin.com/company/8736?trk=tyah' 24 | }, 25 | { 26 | name: 'Jon Skeet', text: 'Author of C# in Depth. Currently a software engineer at Google, London. Usually a Microsoft MVP (C#, 2003-2010, 2011-)', skills: [ 27 | { description: 'C#' }, 28 | { description: '.NET' }, 29 | { description: 'Java' } 30 | ], picture: 'http://www.igniteui.com/images/samples/tile-manager/jonskeet.jpg', linkedin: 'uk.linkedin.com/pub/jon-skeet/0/800/ba3' 31 | } 32 | ]; 33 | } 34 | }; -------------------------------------------------------------------------------- /src/app/shared/tasks.ts: -------------------------------------------------------------------------------- 1 | export module Tasks { 2 | export function getData() { 3 | return [ 4 | { 5 | "id": 0, "tasks": "Project Plan", "start": "6/2/2014", "finish": "8/22/2014", "duration": "60d", "progress": "32%", "products": [ 6 | { "id": 1, "tasks": "Planning", "start": "6/2/2014", "finish": "6/4/2014", "duration": "3d", "progress": "100%" }, 7 | { "id": 2, "tasks": "Write a specification", "start": "6/5/2014", "finish": "6/6/2014", "duration": "2d", "progress": "100%" }, 8 | { "id": 3, "tasks": "Create a demo application", "start": "6/9/2014", "finish": "6/11/2014", "duration": "3d", "progress": "100%" }, 9 | { "id": 4, "tasks": "Collect a feedback", "start": "6/12/2014", "finish": "6/12/2014", "duration": "1d", "progress": "100%" }, 10 | { 11 | "id": 5, "tasks": "Design", "start": "6/13/2014", "finish": "6/19/2014", "duration": "5d", "progress": "60%", "products": [ 12 | { "id": 8, "tasks": "Conceptual Design", "start": "6/13/2014", "finish": "6/16/2014", "duration": "2d", "progress": "100%" }, 13 | { "id": 9, "tasks": "Preliminary Design", "start": "6/17/2014", "finish": "6/18/2014", "duration": "2d", "progress": "65%" }, 14 | { "id": 10, "tasks": "Final Design", "start": "6/19/2014", "finish": "6/19/2014", "duration": "1d", "progress": "15%" } 15 | ] 16 | }, 17 | { 18 | "id": 6, "tasks": "Development", "start": "6/20/2014", "finish": "8/20/2014", "duration": "44d", "progress": "5%", "products": [ 19 | { "id": 11, "tasks": "Implementation", "start": "6/20/2014", "finish": "7/17/2014", "duration": "20d", "progress": "5%" }, 20 | { "id": 12, "tasks": "Testing", "start": "7/18/2014", "finish": "7/31/2014", "duration": "10d", "progress": "0%" }, 21 | { "id": 13, "tasks": "Bug fixing", "start": "8/1/2014", "finish": "8/14/2014", "duration": "10d", "progress": "0%" }, 22 | { "id": 14, "tasks": "Documenting", "start": "8/15/2014", "finish": "8/20/2014", "duration": "4d", "progress": "0%" } 23 | ] 24 | }, 25 | { "id": 7, "tasks": "Project Complete", "start": "8/21/2014", "finish": "8/22/2014", "duration": "2d", "progress": "0%" } 26 | ] 27 | } 28 | ]; 29 | } 30 | }; -------------------------------------------------------------------------------- /src/app/tile-manager/tile-manager.component.css: -------------------------------------------------------------------------------- 1 | :host /deep/ #dashboard { 2 | position: relative; 3 | width: 100%; 4 | height: 550px; 5 | } 6 | 7 | :host /deep/ #dashboard h4 { 8 | font-size: 18px; 9 | text-align: center; 10 | } 11 | 12 | :host /deep/ #dashboard h3 { 13 | text-align: center; 14 | } 15 | 16 | :host /deep/ #dashboard img { 17 | width: 150px; 18 | height: 175px; 19 | margin-left: -75px; 20 | margin-top: 15px; 21 | position: absolute; 22 | left: 50%; 23 | } 24 | 25 | :host /deep/ #dashboard .ui-igtile-maximized img { 26 | width: 200px; 27 | height: 250px; 28 | position: static; 29 | float: left; 30 | margin: 20px 20px 20px 0; 31 | } 32 | 33 | :host /deep/ #dashboard .ui-igtilemanager-right img { 34 | width: 60px; 35 | height: 80px; 36 | margin-left: -30px; 37 | margin-top: 15px; 38 | } 39 | 40 | :host /deep/ .ui-igtile-maximized .text { 41 | margin-top: 20px; 42 | margin-bottom: 20px; 43 | } 44 | 45 | :host /deep/ .ui-igtile-maximized div { 46 | text-align: left; 47 | } 48 | 49 | :host /deep/ .linkedIn, 50 | :host /deep/ .skills { 51 | word-wrap: break-word; 52 | } 53 | 54 | :host /deep/ div.ui-igtile-inner-container h4 { 55 | margin-bottom: 0.1em; 56 | } -------------------------------------------------------------------------------- /src/app/tile-manager/tile-manager.component.html: -------------------------------------------------------------------------------- 1 |

    igTileManager

    2 | 3 |
    4 |
    5 |

    This sample demonstrates how Ignite UI Angular Wrappers components are used to instantiate igTileManager.

    6 |

    Explore the Code

    8 |
    9 |
    10 |
    11 | 12 | 13 |
    -------------------------------------------------------------------------------- /src/app/tile-manager/tile-manager.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { candidates } from '../shared/candidates'; 3 | 4 | @Component({ 5 | selector: 'app-tile-manager', 6 | templateUrl: './tile-manager.component.html', 7 | styleUrls: ['./tile-manager.component.css'], 8 | standalone: false 9 | }) 10 | export class TileManagerComponent { 11 | public options: any; 12 | 13 | constructor() { 14 | this.options = { 15 | dataSource: candidates.getData(), 16 | marginLeft: 10, 17 | marginTop: 10, 18 | rightPanelTilesWidth: 200, 19 | rightPanelTilesHeight: 156, 20 | maximizedState: '

    ${name}

    error

    ${text}

    Skills:
      ', 21 | minimizedState: '

      ${name}

      error' 22 | }; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/app/tree-grid/tree-grid.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IgniteUI/igniteui-angular-wrappers/09969ff03e8961160cecb72e8814553160189445/src/app/tree-grid/tree-grid.component.css -------------------------------------------------------------------------------- /src/app/tree-grid/tree-grid.component.html: -------------------------------------------------------------------------------- 1 |

      igTreeGrid

      2 | 3 |
      4 |
      5 |

      This sample demonstrates how Ignite UI Angular Wrappers directives are used with the igTreeGrid.

      6 |

      Explore the Code

      7 |
      8 |
      9 |
      10 |
      11 | 14 | 15 |
      16 |
      -------------------------------------------------------------------------------- /src/app/tree-grid/tree-grid.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { Tasks } from '../shared/tasks'; 3 | 4 | @Component({ 5 | selector: 'app-tree-grid', 6 | templateUrl: './tree-grid.component.html', 7 | styleUrls: ['./tree-grid.component.css'], 8 | standalone: false 9 | }) 10 | export class TreeGridComponent { 11 | 12 | public tgridOptions: IgTreeGrid; 13 | public id: string; 14 | public data: any; 15 | public newProduct: any; 16 | 17 | constructor() { 18 | this.data = Tasks.getData(); 19 | 20 | this.id = 'tgrid1'; 21 | 22 | this.tgridOptions = { 23 | autoCommit: true, 24 | dataSource: this.data, 25 | width: '100%', 26 | height: '400px', 27 | autoGenerateColumns: false, 28 | autoGenerateColumnLayouts: false, 29 | primaryKey: 'id', 30 | childDataKey: 'products', 31 | renderExpansionIndicatorColumn: true, 32 | columns: [ 33 | { key: 'id', headerText: 'ID', width: '100px', dataType: 'number' }, 34 | { key: 'tasks', headerText: 'Task', width: '250px', dataType: 'string' }, 35 | { key: 'start', headerText: 'Start', width: '100px', dataType: 'date' }, 36 | { key: 'finish', headerText: 'Finish', width: '100px', dataType: 'date' }, 37 | { key: 'duration', headerText: 'Duration', width: '100px', dataType: 'date' }, 38 | { key: 'progress', headerText: 'Progress', width: '100px', dataType: 'date' } 39 | ] 40 | }; 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /src/app/tree/tree.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IgniteUI/igniteui-angular-wrappers/09969ff03e8961160cecb72e8814553160189445/src/app/tree/tree.component.css -------------------------------------------------------------------------------- /src/app/tree/tree.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit, ViewChild } from '@angular/core'; 2 | import { IgTreeComponent } from 'projects/igniteui-angular-wrappers/src/public-api'; 3 | import { ProductCategories } from '../shared/product-categories'; 4 | 5 | declare var jQuery: any; 6 | 7 | @Component({ 8 | selector: 'app-tree', 9 | templateUrl: './tree.component.html', 10 | styleUrls: ['./tree.component.css'], 11 | standalone: false 12 | }) 13 | export class TreeComponent { 14 | 15 | public options: IgTree; 16 | public data: any; 17 | public newProductCategory: any; 18 | public newProductSubcategory: any; 19 | @ViewChild('tree', { static: true }) tree: IgTreeComponent; 20 | 21 | constructor() { 22 | this.data = ProductCategories.getData(); 23 | this.newProductCategory = { 24 | Name: '', 25 | ProductCategoryID: this.data.length + 1, 26 | ProductSubcategories: [] 27 | }; 28 | 29 | this.newProductSubcategory = { 30 | Name: '', 31 | ProductSubcategoryID: 0 32 | }; 33 | this.options = { 34 | // dataSource: this.data, 35 | bindings: { 36 | childDataProperty: 'ProductSubcategories', 37 | textKey: 'Name', 38 | valueKey: 'ProductCategoryID' 39 | } 40 | }; 41 | } 42 | 43 | addNodeRootLevel() { 44 | this.data.push({ Name: 'New Node', ProductCategoryID: this.data.length + 1, ProductSubcategories: [] }); 45 | this.newProductCategory.ProductCategoryID = this.data.length + 1; 46 | } 47 | addProductCategory() { 48 | this.data.push(JSON.parse(JSON.stringify(this.newProductCategory))); 49 | this.newProductCategory.ProductCategoryID = this.data.length + 1; 50 | 51 | } 52 | addProductSubcategory(index) { 53 | this.data[index].ProductSubcategories.push(JSON.parse(JSON.stringify(this.newProductSubcategory))); 54 | this.newProductSubcategory.ProductSubcategoryID = this.data[index].ProductSubcategories.length + 1; 55 | this.tree.markForCheck(); 56 | 57 | } 58 | deleteProductCategory(index) { 59 | this.data.removeAt(index); 60 | } 61 | updateProductSubcategory() { 62 | this.tree.markForCheck(); 63 | } 64 | 65 | deleteProductSubcategory(index, subIndex) { 66 | this.data[index].ProductSubcategories.removeAt(subIndex); 67 | this.tree.markForCheck(); 68 | } 69 | 70 | removeSelectedNode() { 71 | const selected = jQuery('#tree1').igTree('selectedNode'); 72 | if (selected.path !== null) { 73 | jQuery('#tree1').igTree('removeAt', selected.path); 74 | } else { 75 | alert('Select a node from the tree first'); 76 | } 77 | } 78 | 79 | } 80 | -------------------------------------------------------------------------------- /src/app/upload/upload.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IgniteUI/igniteui-angular-wrappers/09969ff03e8961160cecb72e8814553160189445/src/app/upload/upload.component.css -------------------------------------------------------------------------------- /src/app/upload/upload.component.html: -------------------------------------------------------------------------------- 1 |

      igUpload

      2 |
      3 |
      4 | TRY IT OUT: 5 |
      6 |
        7 |
      • Click on the button to upload a file
      • 8 |
      9 |
      10 |
      11 |

      This sample demonstrates how create an igUpload using an Ignite UI Angular Wrappers component. 12 |

      13 |

      Note: There is no server configured with this sample, so uploads 14 | will fail.

      15 |

      Explore the 17 | Code

      18 |
      19 |
      20 | -------------------------------------------------------------------------------- /src/app/upload/upload.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-upload', 5 | templateUrl: './upload.component.html', 6 | styleUrls: ['./upload.component.css'], 7 | standalone: false 8 | }) 9 | export class UploadComponent { 10 | constructor() { } 11 | } 12 | -------------------------------------------------------------------------------- /src/app/video-player/video-player.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IgniteUI/igniteui-angular-wrappers/09969ff03e8961160cecb72e8814553160189445/src/app/video-player/video-player.component.css -------------------------------------------------------------------------------- /src/app/video-player/video-player.component.html: -------------------------------------------------------------------------------- 1 |

      igVideoPlayer

      2 |
      3 |
      4 | TRY IT OUT: 5 |
      6 |
        7 |
      • Play the video
      • 8 |
      9 |
      10 |
      11 |

      This sample demonstrates how create an igVideoPlayer with an Ignite UI Angular Wrappers 12 | components.

      13 |

      Explore the 15 | Code

      16 |
      17 |
      18 | -------------------------------------------------------------------------------- /src/app/video-player/video-player.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-video-player', 5 | templateUrl: './video-player.component.html', 6 | styleUrls: ['./video-player.component.css'], 7 | standalone: false 8 | }) 9 | export class VideoPlayerComponent { 10 | 11 | public options: any; 12 | constructor() { 13 | this.options = { 14 | width: '700px', 15 | height: '400px', 16 | sources: [ 17 | 'http://dl.infragistics.com/pg/2011-1/web/shared/videoplayer/videos/Infragistics_Presentation_lowRes_1.h264.mp4', 18 | 'http://dl.infragistics.com/pg/2011-1/web/shared/videoplayer/videos/Infragistics_Presentation_lowRes_1.webmvp8.webm', 19 | 'http://dl.infragistics.com/pg/2011-1/web/shared/videoplayer/videos/Infragistics_Presentation_lowRes_1.theora.ogv' 20 | ] 21 | }; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IgniteUI/igniteui-angular-wrappers/09969ff03e8961160cecb72e8814553160189445/src/assets/.gitkeep -------------------------------------------------------------------------------- /src/assets/images/arrowDown.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IgniteUI/igniteui-angular-wrappers/09969ff03e8961160cecb72e8814553160189445/src/assets/images/arrowDown.gif -------------------------------------------------------------------------------- /src/assets/images/arrowUp.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IgniteUI/igniteui-angular-wrappers/09969ff03e8961160cecb72e8814553160189445/src/assets/images/arrowUp.gif -------------------------------------------------------------------------------- /src/assets/images/home-background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IgniteUI/igniteui-angular-wrappers/09969ff03e8961160cecb72e8814553160189445/src/assets/images/home-background.jpg -------------------------------------------------------------------------------- /src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // This file can be replaced during build by using the `fileReplacements` array. 2 | // `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. 3 | // The list of file replacements can be found in `angular.json`. 4 | 5 | export const environment = { 6 | production: false 7 | }; 8 | 9 | /* 10 | * For easier debugging in development mode, you can import the following file 11 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. 12 | * 13 | * This import should be commented out in production mode because it will have a negative impact 14 | * on performance if an error is thrown. 15 | */ 16 | // import 'zone.js/plugins/zone-error'; // Included with Angular CLI. 17 | -------------------------------------------------------------------------------- /src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IgniteUI/igniteui-angular-wrappers/09969ff03e8961160cecb72e8814553160189445/src/favicon.ico -------------------------------------------------------------------------------- /src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Ignite UI Angular Wrappers 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | Loading... 34 | 35 | 36 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule) 12 | .catch(err => console.error(err)); 13 | -------------------------------------------------------------------------------- /src/polyfills.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file includes polyfills needed by Angular and is loaded before the app. 3 | * You can add your own extra polyfills to this file. 4 | * 5 | * This file is divided into 2 sections: 6 | * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. 7 | * 2. Application imports. Files imported after ZoneJS that should be loaded before your main 8 | * file. 9 | * 10 | * The current setup is for so-called "evergreen" browsers; the last versions of browsers that 11 | * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), 12 | * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. 13 | * 14 | * Learn more in https://angular.io/guide/browser-support 15 | */ 16 | 17 | /*************************************************************************************************** 18 | * BROWSER POLYFILLS 19 | */ 20 | 21 | /** 22 | * By default, zone.js will patch all possible macroTask and DomEvents 23 | * user can disable parts of macroTask/DomEvents patch by setting following flags 24 | * because those flags need to be set before `zone.js` being loaded, and webpack 25 | * will put import in the top of bundle, so user need to create a separate file 26 | * in this directory (for example: zone-flags.ts), and put the following flags 27 | * into that file, and then add the following code before importing zone.js. 28 | * import './zone-flags.ts'; 29 | * 30 | * The flags allowed in zone-flags.ts are listed here. 31 | * 32 | * The following flags will work for all browsers. 33 | * 34 | * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame 35 | * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick 36 | * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames 37 | * 38 | * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js 39 | * with the following flag, it will bypass `zone.js` patch for IE/Edge 40 | * 41 | * (window as any).__Zone_enable_cross_context_check = true; 42 | * 43 | */ 44 | 45 | /*************************************************************************************************** 46 | * Zone JS is required by default for Angular itself. 47 | */ 48 | import 'zone.js'; // Included with Angular CLI. 49 | 50 | 51 | /*************************************************************************************************** 52 | * APPLICATION IMPORTS 53 | */ 54 | -------------------------------------------------------------------------------- /src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | 3 | body { 4 | height: 100vh; 5 | } -------------------------------------------------------------------------------- /src/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/testing'; 4 | import { getTestBed } from '@angular/core/testing'; 5 | import { 6 | BrowserDynamicTestingModule, 7 | platformBrowserDynamicTesting 8 | } from '@angular/platform-browser-dynamic/testing'; 9 | 10 | // First, initialize the Angular testing environment. 11 | getTestBed().initTestEnvironment( 12 | BrowserDynamicTestingModule, 13 | platformBrowserDynamicTesting(), { 14 | teardown: { destroyAfterEach: false } 15 | } 16 | ); 17 | -------------------------------------------------------------------------------- /tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "./out-tsc/app" 5 | }, 6 | "files": [ 7 | "src/main.ts", 8 | "src/polyfills.ts" 9 | ], 10 | "include": [ 11 | "src/**/*.d.ts" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "baseUrl": "./", 5 | "outDir": "./dist/out-tsc", 6 | "esModuleInterop": true, 7 | "sourceMap": true, 8 | "declaration": false, 9 | "module": "esnext", 10 | "moduleResolution": "node", 11 | "experimentalDecorators": true, 12 | "importHelpers": true, 13 | "target": "ES2022", 14 | "lib": [ 15 | "es2018", 16 | "dom" 17 | ], 18 | "paths": { 19 | "lib": [ 20 | "dist/lib" 21 | ], 22 | "lib/*": [ 23 | "dist/lib/*" 24 | ], 25 | "igniteui-angular-wrappers": [ 26 | "dist/igniteui-angular-wrappers" 27 | ], 28 | "igniteui-angular-wrappers/*": [ 29 | "dist/igniteui-angular-wrappers/*" 30 | ] 31 | }, 32 | "useDefineForClassFields": false 33 | } 34 | } -------------------------------------------------------------------------------- /tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "./out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node" 8 | ] 9 | }, 10 | "files": [ 11 | "src/test.ts", 12 | "src/polyfills.ts" 13 | ], 14 | "include": [ 15 | "src/**/*.spec.ts", 16 | "src/**/*.d.ts" 17 | ] 18 | } 19 | --------------------------------------------------------------------------------