├── .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 = '';
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} ${text}
Skills:
',
71 | minimizedState: '${name} '
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 |
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 |
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 | Change Zoombar Type
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 |
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 |
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 |
Current Page Index:
30 |
31 | {{i}}
32 |
33 |
34 |
First column header text: {{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 |
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 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/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 |
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 | Export
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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} ${text}
Skills:
',
21 | minimizedState: '${name} '
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 |
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 |
--------------------------------------------------------------------------------
/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 |
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 |
2 |
3 |
4 |
TRY IT OUT:
5 |
6 |
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 |
--------------------------------------------------------------------------------