angular-slickgrid 4.2.0 → 4.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -20
- package/{dist/app → app}/modules/angular-slickgrid/components/angular-slickgrid.component.d.ts +2 -2
- package/{dist/app → app}/modules/angular-slickgrid/constants.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/extensions/index.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/extensions/slickRowDetailView.d.ts +0 -2
- package/{dist/app → app}/modules/angular-slickgrid/global-grid-options.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/index.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/models/angularComponentOutput.interface.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/models/angularGridInstance.interface.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/models/externalTestingDependencies.interface.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/models/gridOption.interface.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/models/index.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/models/rowDetailView.interface.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/models/slickGrid.interface.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/modules/angular-slickgrid.module.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/services/angularUtil.service.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/services/bsDropdown.service.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/services/container.service.d.ts +1 -0
- package/{dist/app → app}/modules/angular-slickgrid/services/index.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/services/translater.service.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/services/utilities.d.ts +0 -0
- package/{dist/app → app}/modules/angular-slickgrid/slickgrid-config.d.ts +0 -0
- package/docs/assets/lib/multiple-select/README.md +17 -0
- package/{dist/esm2020 → esm2020}/angular-slickgrid.mjs +0 -0
- package/esm2020/app/modules/angular-slickgrid/components/angular-slickgrid.component.mjs +1170 -0
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/constants.mjs +1 -1
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/extensions/index.mjs +1 -1
- package/esm2020/app/modules/angular-slickgrid/extensions/slickRowDetailView.mjs +298 -0
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/global-grid-options.mjs +1 -1
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/index.mjs +1 -1
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/models/angularComponentOutput.interface.mjs +1 -1
- package/esm2020/app/modules/angular-slickgrid/models/angularGridInstance.interface.mjs +2 -0
- package/esm2020/app/modules/angular-slickgrid/models/externalTestingDependencies.interface.mjs +2 -0
- package/esm2020/app/modules/angular-slickgrid/models/gridOption.interface.mjs +2 -0
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/models/index.mjs +1 -1
- package/esm2020/app/modules/angular-slickgrid/models/rowDetailView.interface.mjs +2 -0
- package/esm2020/app/modules/angular-slickgrid/models/slickGrid.interface.mjs +2 -0
- package/esm2020/app/modules/angular-slickgrid/modules/angular-slickgrid.module.mjs +43 -0
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/services/angularUtil.service.mjs +4 -4
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/services/bsDropdown.service.mjs +4 -4
- package/esm2020/app/modules/angular-slickgrid/services/container.service.mjs +29 -0
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/services/index.mjs +1 -1
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/services/translater.service.mjs +4 -4
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/services/utilities.mjs +1 -1
- package/{dist/esm2020 → esm2020}/app/modules/angular-slickgrid/slickgrid-config.mjs +1 -1
- package/{dist/esm2020 → esm2020}/public_api.mjs +1 -1
- package/{dist/fesm2015 → fesm2015}/angular-slickgrid.mjs +48 -51
- package/fesm2015/angular-slickgrid.mjs.map +1 -0
- package/{dist/fesm2020 → fesm2020}/angular-slickgrid.mjs +48 -51
- package/fesm2020/angular-slickgrid.mjs.map +1 -0
- package/{dist/i18n → i18n}/en.json +89 -89
- package/{dist/i18n → i18n}/fr.json +90 -90
- package/{dist/angular-slickgrid.d.ts → index.d.ts} +0 -0
- package/package.json +33 -118
- package/{dist/public_api.d.ts → public_api.d.ts} +0 -0
- package/test/cypress/node_modules/@cypress/request/README.md +1038 -0
- package/test/cypress/node_modules/@cypress/xvfb/README.md +48 -0
- package/test/cypress/node_modules/@cypress/xvfb/node_modules/debug/README.md +437 -0
- package/test/cypress/node_modules/@types/node/README.md +16 -0
- package/test/cypress/node_modules/@types/sinonjs__fake-timers/README.md +16 -0
- package/test/cypress/node_modules/@types/sizzle/README.md +16 -0
- package/test/cypress/node_modules/@types/yauzl/README.md +16 -0
- package/test/cypress/node_modules/@types/yauzl/node_modules/@types/node/README.md +16 -0
- package/test/cypress/node_modules/aggregate-error/README.md +61 -0
- package/test/cypress/node_modules/ansi-colors/README.md +315 -0
- package/test/cypress/node_modules/ansi-escapes/README.md +245 -0
- package/test/cypress/node_modules/ansi-regex/README.md +78 -0
- package/test/cypress/node_modules/ansi-styles/README.md +152 -0
- package/test/cypress/node_modules/arch/README.md +71 -0
- package/test/cypress/node_modules/asn1/README.md +50 -0
- package/test/cypress/node_modules/assert-plus/README.md +162 -0
- package/test/cypress/node_modules/astral-regex/README.md +46 -0
- package/test/cypress/node_modules/async/README.md +60 -0
- package/test/cypress/node_modules/asynckit/README.md +233 -0
- package/test/cypress/node_modules/at-least-node/README.md +25 -0
- package/test/cypress/node_modules/aws-sign2/README.md +4 -0
- package/test/cypress/node_modules/aws4/README.md +183 -0
- package/test/cypress/node_modules/balanced-match/README.md +91 -0
- package/test/cypress/node_modules/base64-js/README.md +34 -0
- package/test/cypress/node_modules/bcrypt-pbkdf/README.md +45 -0
- package/test/cypress/node_modules/blob-util/README.md +623 -0
- package/test/cypress/node_modules/bluebird/README.md +57 -0
- package/test/cypress/node_modules/brace-expansion/README.md +129 -0
- package/test/cypress/node_modules/buffer/README.md +410 -0
- package/test/cypress/node_modules/buffer-crc32/README.md +47 -0
- package/test/cypress/node_modules/cachedir/README.md +27 -0
- package/test/cypress/node_modules/caseless/README.md +45 -0
- package/test/cypress/node_modules/chalk/README.md +293 -0
- package/test/cypress/node_modules/chalk/node_modules/supports-color/README.md +76 -0
- package/test/cypress/node_modules/check-more-types/README.md +952 -0
- package/test/cypress/node_modules/ci-info/README.md +114 -0
- package/test/cypress/node_modules/clean-stack/README.md +76 -0
- package/test/cypress/node_modules/cli-cursor/README.md +55 -0
- package/test/cypress/node_modules/cli-table3/README.md +218 -0
- package/test/cypress/node_modules/cli-truncate/README.md +139 -0
- package/test/cypress/node_modules/color-convert/README.md +68 -0
- package/test/cypress/node_modules/color-name/README.md +11 -0
- package/test/cypress/node_modules/colorette/README.md +102 -0
- package/test/cypress/node_modules/colors/README.md +221 -0
- package/test/cypress/node_modules/combined-stream/README.md +138 -0
- package/test/cypress/node_modules/commander/README.md +737 -0
- package/test/cypress/node_modules/common-tags/README.md +687 -0
- package/test/cypress/node_modules/core-util-is/README.md +3 -0
- package/test/cypress/node_modules/cross-spawn/README.md +96 -0
- package/test/cypress/node_modules/cypress/README.md +25 -0
- package/test/cypress/node_modules/cypress/mount-utils/README.md +14 -0
- package/test/cypress/node_modules/cypress/react/README.md +414 -0
- package/test/cypress/node_modules/cypress/vue/README.md +678 -0
- package/test/cypress/node_modules/cypress/vue2/README.md +693 -0
- package/test/cypress/node_modules/dashdash/README.md +574 -0
- package/test/cypress/node_modules/dayjs/README.md +128 -0
- package/test/cypress/node_modules/debug/README.md +455 -0
- package/test/cypress/node_modules/delayed-stream/README.md +141 -0
- package/test/cypress/node_modules/ecc-jsbn/README.md +8 -0
- package/test/cypress/node_modules/emoji-regex/README.md +73 -0
- package/test/cypress/node_modules/end-of-stream/README.md +54 -0
- package/test/cypress/node_modules/enquirer/README.md +1752 -0
- package/test/cypress/node_modules/escape-string-regexp/README.md +27 -0
- package/test/cypress/node_modules/eventemitter2/README.md +809 -0
- package/test/cypress/node_modules/execa/README.md +656 -0
- package/test/cypress/node_modules/executable/README.md +64 -0
- package/test/cypress/node_modules/extend/README.md +81 -0
- package/test/cypress/node_modules/extract-zip/README.md +57 -0
- package/test/cypress/node_modules/extract-zip/node_modules/debug/README.md +455 -0
- package/test/cypress/node_modules/extsprintf/README.md +46 -0
- package/test/cypress/node_modules/fd-slicer/README.md +199 -0
- package/test/cypress/node_modules/figures/README.md +139 -0
- package/test/cypress/node_modules/forever-agent/README.md +4 -0
- package/test/cypress/node_modules/form-data/README.md +234 -0
- package/test/cypress/node_modules/fs-extra/README.md +264 -0
- package/test/cypress/node_modules/fs.realpath/README.md +33 -0
- package/test/cypress/node_modules/get-stream/README.md +124 -0
- package/test/cypress/node_modules/getos/README.md +79 -0
- package/test/cypress/node_modules/getpass/README.md +32 -0
- package/test/cypress/node_modules/glob/README.md +375 -0
- package/test/cypress/node_modules/global-dirs/README.md +72 -0
- package/test/cypress/node_modules/graceful-fs/README.md +133 -0
- package/test/cypress/node_modules/has-flag/README.md +89 -0
- package/test/cypress/node_modules/http-signature/README.md +80 -0
- package/test/cypress/node_modules/human-signals/README.md +155 -0
- package/test/cypress/node_modules/ieee754/README.md +51 -0
- package/test/cypress/node_modules/indent-string/README.md +70 -0
- package/test/cypress/node_modules/inflight/README.md +37 -0
- package/test/cypress/node_modules/inherits/README.md +42 -0
- package/test/cypress/node_modules/ini/README.md +102 -0
- package/test/cypress/node_modules/is-ci/README.md +50 -0
- package/test/cypress/node_modules/is-fullwidth-code-point/README.md +39 -0
- package/test/cypress/node_modules/is-installed-globally/README.md +31 -0
- package/test/cypress/node_modules/is-path-inside/README.md +63 -0
- package/test/cypress/node_modules/is-stream/README.md +57 -0
- package/test/cypress/node_modules/is-typedarray/README.md +16 -0
- package/test/cypress/node_modules/isexe/README.md +51 -0
- package/test/cypress/node_modules/isstream/README.md +66 -0
- package/test/cypress/node_modules/jsbn/README.md +175 -0
- package/test/cypress/node_modules/json-schema/README.md +3 -0
- package/test/cypress/node_modules/json-stringify-safe/README.md +52 -0
- package/test/cypress/node_modules/jsonfile/README.md +205 -0
- package/test/cypress/node_modules/jsonfile/node_modules/universalify/README.md +76 -0
- package/test/cypress/node_modules/jsprim/README.md +287 -0
- package/test/cypress/node_modules/lazy-ass/README.md +269 -0
- package/test/cypress/node_modules/listr2/README.md +17 -0
- package/test/cypress/node_modules/lodash/README.md +39 -0
- package/test/cypress/node_modules/lodash.once/README.md +18 -0
- package/test/cypress/node_modules/log-symbols/README.md +51 -0
- package/test/cypress/node_modules/log-update/README.md +97 -0
- package/test/cypress/node_modules/log-update/node_modules/slice-ansi/README.md +66 -0
- package/test/cypress/node_modules/log-update/node_modules/wrap-ansi/README.md +97 -0
- package/test/cypress/node_modules/lru-cache/README.md +166 -0
- package/test/cypress/node_modules/merge-stream/README.md +78 -0
- package/test/cypress/node_modules/mime-db/README.md +102 -0
- package/test/cypress/node_modules/mime-types/README.md +123 -0
- package/test/cypress/node_modules/mimic-fn/README.md +69 -0
- package/test/cypress/node_modules/minimatch/README.md +209 -0
- package/test/cypress/node_modules/ms/README.md +60 -0
- package/test/cypress/node_modules/npm-run-path/README.md +115 -0
- package/test/cypress/node_modules/once/README.md +79 -0
- package/test/cypress/node_modules/onetime/README.md +94 -0
- package/test/cypress/node_modules/ospath/README.md +53 -0
- package/test/cypress/node_modules/p-map/README.md +89 -0
- package/test/cypress/node_modules/path-is-absolute/README.md +59 -0
- package/test/cypress/node_modules/path-key/README.md +61 -0
- package/test/cypress/node_modules/pend/README.md +41 -0
- package/test/cypress/node_modules/performance-now/README.md +30 -0
- package/test/cypress/node_modules/pify/README.md +119 -0
- package/test/cypress/node_modules/pretty-bytes/README.md +131 -0
- package/test/cypress/node_modules/proxy-from-env/README.md +131 -0
- package/test/cypress/node_modules/psl/README.md +215 -0
- package/test/cypress/node_modules/pump/README.md +65 -0
- package/test/cypress/node_modules/punycode/README.md +122 -0
- package/test/cypress/node_modules/qs/README.md +475 -0
- package/test/cypress/node_modules/request-progress/README.md +78 -0
- package/test/cypress/node_modules/restore-cursor/README.md +26 -0
- package/test/cypress/node_modules/rimraf/README.md +101 -0
- package/test/cypress/node_modules/rxjs/README.md +147 -0
- package/test/cypress/node_modules/rxjs/_esm2015/README.md +147 -0
- package/test/cypress/node_modules/rxjs/_esm5/README.md +147 -0
- package/test/cypress/node_modules/rxjs/src/README.md +147 -0
- package/test/cypress/node_modules/safe-buffer/README.md +584 -0
- package/test/cypress/node_modules/safer-buffer/README.md +156 -0
- package/test/cypress/node_modules/semver/README.md +566 -0
- package/test/cypress/node_modules/shebang-command/README.md +34 -0
- package/test/cypress/node_modules/shebang-regex/README.md +33 -0
- package/test/cypress/node_modules/signal-exit/README.md +39 -0
- package/test/cypress/node_modules/slice-ansi/README.md +72 -0
- package/test/cypress/node_modules/sshpk/README.md +804 -0
- package/test/cypress/node_modules/string-width/README.md +50 -0
- package/test/cypress/node_modules/strip-ansi/README.md +46 -0
- package/test/cypress/node_modules/strip-final-newline/README.md +30 -0
- package/test/cypress/node_modules/supports-color/README.md +77 -0
- package/test/cypress/node_modules/throttleit/README.md +32 -0
- package/test/cypress/node_modules/tmp/README.md +365 -0
- package/test/cypress/node_modules/tough-cookie/README.md +527 -0
- package/test/cypress/node_modules/tslib/README.md +142 -0
- package/test/cypress/node_modules/tunnel-agent/README.md +4 -0
- package/test/cypress/node_modules/tweetnacl/README.md +459 -0
- package/test/cypress/node_modules/type-fest/README.md +760 -0
- package/test/cypress/node_modules/universalify/README.md +76 -0
- package/test/cypress/node_modules/untildify/README.md +30 -0
- package/test/cypress/node_modules/uuid/README.md +505 -0
- package/test/cypress/node_modules/verror/README.md +528 -0
- package/test/cypress/node_modules/verror/node_modules/extsprintf/README.md +46 -0
- package/test/cypress/node_modules/which/README.md +54 -0
- package/test/cypress/node_modules/wrap-ansi/README.md +91 -0
- package/test/cypress/node_modules/wrappy/README.md +36 -0
- package/test/cypress/node_modules/yallist/README.md +204 -0
- package/test/cypress/node_modules/yauzl/README.md +658 -0
- package/.browserslistrc +0 -12
- package/.codecov.yml +0 -17
- package/.editorconfig +0 -18
- package/.eslintrc.json +0 -50
- package/.github/CODE_OF_CONDUCT.md +0 -76
- package/.github/FUNDING.yml +0 -8
- package/.github/ISSUE_TEMPLATE/bug_report.yml +0 -54
- package/.github/ISSUE_TEMPLATE/config.yml +0 -5
- package/.github/ISSUE_TEMPLATE/feature_request.yml +0 -44
- package/.github/renovate.json5 +0 -26
- package/.github/stale.yml +0 -7
- package/.github/workflows/main.yml +0 -83
- package/.vscode/extensions.json +0 -9
- package/.vscode/launch.json +0 -72
- package/.vscode/settings.json +0 -7
- package/.vscode/tasks.json +0 -77
- package/CHANGELOG.md +0 -1172
- package/angular.json +0 -148
- package/dist/LICENSE +0 -20
- package/dist/README.md +0 -182
- package/dist/esm2020/app/modules/angular-slickgrid/components/angular-slickgrid.component.mjs +0 -1171
- package/dist/esm2020/app/modules/angular-slickgrid/extensions/slickRowDetailView.mjs +0 -300
- package/dist/esm2020/app/modules/angular-slickgrid/models/angularGridInstance.interface.mjs +0 -2
- package/dist/esm2020/app/modules/angular-slickgrid/models/externalTestingDependencies.interface.mjs +0 -2
- package/dist/esm2020/app/modules/angular-slickgrid/models/gridOption.interface.mjs +0 -2
- package/dist/esm2020/app/modules/angular-slickgrid/models/rowDetailView.interface.mjs +0 -2
- package/dist/esm2020/app/modules/angular-slickgrid/models/slickGrid.interface.mjs +0 -2
- package/dist/esm2020/app/modules/angular-slickgrid/modules/angular-slickgrid.module.mjs +0 -46
- package/dist/esm2020/app/modules/angular-slickgrid/services/container.service.mjs +0 -26
- package/dist/fesm2015/angular-slickgrid.mjs.map +0 -1
- package/dist/fesm2020/angular-slickgrid.mjs.map +0 -1
- package/dist/package.json +0 -79
- package/global.d.ts +0 -1
- package/ngcc.config.js +0 -13
- package/screenshots/column-picker.png +0 -0
- package/screenshots/composite-editor.png +0 -0
- package/screenshots/draggable-grouping.png +0 -0
- package/screenshots/editors.png +0 -0
- package/screenshots/export-to-file.png +0 -0
- package/screenshots/filter_and_sort.png +0 -0
- package/screenshots/formatters.png +0 -0
- package/screenshots/frozen.png +0 -0
- package/screenshots/multipleSelectFilter.png +0 -0
- package/screenshots/pagination.png +0 -0
- package/screenshots/selectFilter.png +0 -0
- package/screenshots/singleFilter.png +0 -0
- package/src/app/app-routing.module.ts +0 -83
- package/src/app/app.component.html +0 -160
- package/src/app/app.component.scss +0 -65
- package/src/app/app.component.ts +0 -10
- package/src/app/app.module.ts +0 -175
- package/src/app/examples/custom-angularComponentEditor.ts +0 -184
- package/src/app/examples/custom-angularComponentFilter.ts +0 -126
- package/src/app/examples/custom-inputEditor.ts +0 -124
- package/src/app/examples/custom-inputFilter.ts +0 -142
- package/src/app/examples/custom-titleFormatter.component.ts +0 -8
- package/src/app/examples/editor-ng-select.component.ts +0 -37
- package/src/app/examples/filter-ng-select.component.ts +0 -32
- package/src/app/examples/grid-additem.component.html +0 -48
- package/src/app/examples/grid-additem.component.ts +0 -272
- package/src/app/examples/grid-angular.component.html +0 -79
- package/src/app/examples/grid-angular.component.scss +0 -28
- package/src/app/examples/grid-angular.component.ts +0 -370
- package/src/app/examples/grid-autoheight.component.html +0 -52
- package/src/app/examples/grid-autoheight.component.ts +0 -147
- package/src/app/examples/grid-basic.component.html +0 -29
- package/src/app/examples/grid-basic.component.ts +0 -82
- package/src/app/examples/grid-clientside.component.html +0 -51
- package/src/app/examples/grid-clientside.component.ts +0 -293
- package/src/app/examples/grid-colspan.component.html +0 -39
- package/src/app/examples/grid-colspan.component.scss +0 -11
- package/src/app/examples/grid-colspan.component.ts +0 -155
- package/src/app/examples/grid-composite-editor.component.html +0 -79
- package/src/app/examples/grid-composite-editor.component.scss +0 -19
- package/src/app/examples/grid-composite-editor.component.ts +0 -948
- package/src/app/examples/grid-contextmenu.component.html +0 -62
- package/src/app/examples/grid-contextmenu.component.scss +0 -44
- package/src/app/examples/grid-contextmenu.component.ts +0 -473
- package/src/app/examples/grid-custom-tooltip.component.html +0 -25
- package/src/app/examples/grid-custom-tooltip.component.scss +0 -77
- package/src/app/examples/grid-custom-tooltip.component.ts +0 -483
- package/src/app/examples/grid-draggrouping.component.html +0 -93
- package/src/app/examples/grid-draggrouping.component.ts +0 -397
- package/src/app/examples/grid-editor.component.html +0 -88
- package/src/app/examples/grid-editor.component.ts +0 -699
- package/src/app/examples/grid-formatter.component.html +0 -26
- package/src/app/examples/grid-formatter.component.ts +0 -162
- package/src/app/examples/grid-frozen.component.html +0 -65
- package/src/app/examples/grid-frozen.component.scss +0 -11
- package/src/app/examples/grid-frozen.component.ts +0 -303
- package/src/app/examples/grid-graphql-nopage.component.html +0 -33
- package/src/app/examples/grid-graphql-nopage.component.scss +0 -9
- package/src/app/examples/grid-graphql-nopage.component.ts +0 -242
- package/src/app/examples/grid-graphql.component.html +0 -87
- package/src/app/examples/grid-graphql.component.ts +0 -304
- package/src/app/examples/grid-grouping.component.html +0 -80
- package/src/app/examples/grid-grouping.component.ts +0 -313
- package/src/app/examples/grid-headerbutton.component.html +0 -31
- package/src/app/examples/grid-headerbutton.component.scss +0 -10
- package/src/app/examples/grid-headerbutton.component.ts +0 -233
- package/src/app/examples/grid-headermenu.component.html +0 -31
- package/src/app/examples/grid-headermenu.component.scss +0 -25
- package/src/app/examples/grid-headermenu.component.ts +0 -159
- package/src/app/examples/grid-localization.component.html +0 -54
- package/src/app/examples/grid-localization.component.ts +0 -293
- package/src/app/examples/grid-menu.component.html +0 -37
- package/src/app/examples/grid-menu.component.scss +0 -28
- package/src/app/examples/grid-menu.component.ts +0 -229
- package/src/app/examples/grid-odata.component.html +0 -116
- package/src/app/examples/grid-odata.component.ts +0 -441
- package/src/app/examples/grid-range.component.html +0 -74
- package/src/app/examples/grid-range.component.ts +0 -291
- package/src/app/examples/grid-remote.component.html +0 -37
- package/src/app/examples/grid-remote.component.ts +0 -153
- package/src/app/examples/grid-resize-by-content.component.html +0 -62
- package/src/app/examples/grid-resize-by-content.component.scss +0 -19
- package/src/app/examples/grid-resize-by-content.component.ts +0 -780
- package/src/app/examples/grid-rowdetail.component.html +0 -35
- package/src/app/examples/grid-rowdetail.component.ts +0 -205
- package/src/app/examples/grid-rowmove.component.html +0 -49
- package/src/app/examples/grid-rowmove.component.ts +0 -234
- package/src/app/examples/grid-rowselection.component.html +0 -76
- package/src/app/examples/grid-rowselection.component.ts +0 -267
- package/src/app/examples/grid-state.component.html +0 -36
- package/src/app/examples/grid-state.component.ts +0 -259
- package/src/app/examples/grid-tabs.component.html +0 -35
- package/src/app/examples/grid-tabs.component.ts +0 -115
- package/src/app/examples/grid-trading.component.html +0 -58
- package/src/app/examples/grid-trading.component.scss +0 -49
- package/src/app/examples/grid-trading.component.ts +0 -319
- package/src/app/examples/grid-tree-data-hierarchical.component.html +0 -79
- package/src/app/examples/grid-tree-data-hierarchical.component.scss +0 -47
- package/src/app/examples/grid-tree-data-hierarchical.component.ts +0 -311
- package/src/app/examples/grid-tree-data-parent-child.component.html +0 -108
- package/src/app/examples/grid-tree-data-parent-child.component.scss +0 -10
- package/src/app/examples/grid-tree-data-parent-child.component.ts +0 -351
- package/src/app/examples/home.component.html +0 -41
- package/src/app/examples/home.component.ts +0 -9
- package/src/app/examples/rowdetail-preload.component.ts +0 -10
- package/src/app/examples/rowdetail-view.component.html +0 -36
- package/src/app/examples/rowdetail-view.component.ts +0 -54
- package/src/app/examples/swt-common-grid-pagination.component.ts +0 -156
- package/src/app/examples/swt-common-grid-test.component.html +0 -30
- package/src/app/examples/swt-common-grid-test.component.ts +0 -219
- package/src/app/examples/swt-common-grid.component.ts +0 -436
- package/src/app/examples/swt-logger.service.ts +0 -165
- package/src/app/modules/angular-slickgrid/components/angular-slickgrid.component.html +0 -4
- package/src/app/modules/angular-slickgrid/components/angular-slickgrid.component.ts +0 -1395
- package/src/app/modules/angular-slickgrid/constants.ts +0 -97
- package/src/app/modules/angular-slickgrid/extensions/index.ts +0 -1
- package/src/app/modules/angular-slickgrid/extensions/slickRowDetailView.ts +0 -375
- package/src/app/modules/angular-slickgrid/global-grid-options.ts +0 -245
- package/src/app/modules/angular-slickgrid/index.ts +0 -11
- package/src/app/modules/angular-slickgrid/models/angularComponentOutput.interface.ts +0 -6
- package/src/app/modules/angular-slickgrid/models/angularGridInstance.interface.ts +0 -68
- package/src/app/modules/angular-slickgrid/models/externalTestingDependencies.interface.ts +0 -37
- package/src/app/modules/angular-slickgrid/models/gridOption.interface.ts +0 -12
- package/src/app/modules/angular-slickgrid/models/index.ts +0 -6
- package/src/app/modules/angular-slickgrid/models/rowDetailView.interface.ts +0 -33
- package/src/app/modules/angular-slickgrid/models/slickGrid.interface.ts +0 -7
- package/src/app/modules/angular-slickgrid/modules/angular-slickgrid.module.ts +0 -37
- package/src/app/modules/angular-slickgrid/services/angularUtil.service.ts +0 -48
- package/src/app/modules/angular-slickgrid/services/bsDropdown.service.ts +0 -142
- package/src/app/modules/angular-slickgrid/services/container.service.ts +0 -24
- package/src/app/modules/angular-slickgrid/services/index.ts +0 -5
- package/src/app/modules/angular-slickgrid/services/translater.service.ts +0 -38
- package/src/app/modules/angular-slickgrid/services/utilities.ts +0 -19
- package/src/app/modules/angular-slickgrid/slickgrid-config.ts +0 -10
- package/src/app/slickgrid-custom-variables.scss +0 -10
- package/src/assets/.gitkeep +0 -0
- package/src/assets/data/collection_100_numbers.json +0 -12
- package/src/assets/data/collection_500_numbers.json +0 -52
- package/src/assets/data/countries.json +0 -245
- package/src/assets/data/country_names.json +0 -245
- package/src/assets/data/customers_100.json +0 -102
- package/src/assets/i18n/en.json +0 -90
- package/src/assets/i18n/fr.json +0 -91
- package/src/environments/environment.prod.ts +0 -3
- package/src/environments/environment.ts +0 -8
- package/src/favicon.ico +0 -0
- package/src/index.html +0 -18
- package/src/main.ts +0 -13
- package/src/polyfills.ts +0 -52
- package/src/public_api.ts +0 -1
- package/src/styles.scss +0 -66
- package/src/typings.d.ts +0 -10
- package/tsconfig.app.json +0 -25
- package/tsconfig.json +0 -40
- package/tsconfig.spec.json +0 -23
|
@@ -1,242 +0,0 @@
|
|
|
1
|
-
import { Component, OnInit, ViewEncapsulation } from '@angular/core';
|
|
2
|
-
import { HttpClient } from '@angular/common/http';
|
|
3
|
-
import { GraphqlService, GraphqlResult, GraphqlServiceApi, } from '@slickgrid-universal/graphql';
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
AngularGridInstance,
|
|
7
|
-
Column,
|
|
8
|
-
Filters,
|
|
9
|
-
Formatters,
|
|
10
|
-
GridOption,
|
|
11
|
-
Metrics,
|
|
12
|
-
MultipleSelectOption,
|
|
13
|
-
OperatorType,
|
|
14
|
-
} from './../modules/angular-slickgrid';
|
|
15
|
-
import { Observable } from 'rxjs';
|
|
16
|
-
|
|
17
|
-
const COUNTRIES_API = 'https://countries.trevorblades.com/';
|
|
18
|
-
|
|
19
|
-
export interface Country {
|
|
20
|
-
countryCode: string;
|
|
21
|
-
countryName: string;
|
|
22
|
-
countryNative: string;
|
|
23
|
-
countryPhone: number;
|
|
24
|
-
countryCurrency: string;
|
|
25
|
-
countryEmoji: string;
|
|
26
|
-
continentCode: string;
|
|
27
|
-
continentName: string;
|
|
28
|
-
languageCode: string;
|
|
29
|
-
languageName: string;
|
|
30
|
-
languageNative: string;
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
@Component({
|
|
34
|
-
templateUrl: './grid-graphql-nopage.component.html',
|
|
35
|
-
styleUrls: ['./grid-graphql-nopage.component.scss'],
|
|
36
|
-
encapsulation: ViewEncapsulation.None,
|
|
37
|
-
})
|
|
38
|
-
export class GridGraphqlWithoutPaginationComponent implements OnInit {
|
|
39
|
-
title = 'Example 27: GraphQL Basic API without Pagination';
|
|
40
|
-
subTitle = `
|
|
41
|
-
Use basic GraphQL query with any external public APIs (<a href="https://github.com/ghiscoding/Angular-Slickgrid/wiki/GraphQL" target="_blank">Wiki docs</a>).
|
|
42
|
-
<ul>
|
|
43
|
-
<li>This Examples uses a Public GraphQL API that you can find at this link <a href="https://countries.trevorblades.com/" target="_blank">https://countries.trevorblades.com/</a></li>
|
|
44
|
-
<li>Compare to the regular and default GraphQL implementation, you will find the following differences</li>
|
|
45
|
-
<ul>
|
|
46
|
-
<li>There are no Pagination and we only use GraphQL <b>once</b> to load the data, then we use the grid as a regular local in-memory grid</li>
|
|
47
|
-
<li>We enabled the following 2 flags "useLocalFiltering" and "useLocalSorting" to use regular (in memory) DataView filtering/sorting</li>
|
|
48
|
-
</ul>
|
|
49
|
-
<li>NOTE - This Example calls multiple GraphQL queries, this is <b>ONLY</b> for demo purposes, you would typically only call 1 query (which is what GraphQL is good at)</li>
|
|
50
|
-
<li>This example is mainly to demo the use of GraphqlService to build the query and retrieve the data but also to demo how to mix that with local (in-memory) Filtering/Sorting strategies</li>
|
|
51
|
-
</ul>
|
|
52
|
-
`;
|
|
53
|
-
angularGrid!: AngularGridInstance;
|
|
54
|
-
columnDefinitions!: Column[];
|
|
55
|
-
gridOptions!: GridOption;
|
|
56
|
-
dataset = [];
|
|
57
|
-
metrics!: Metrics;
|
|
58
|
-
|
|
59
|
-
graphqlQuery = '';
|
|
60
|
-
processing = true;
|
|
61
|
-
status = { text: 'processing...', class: 'alert alert-danger' };
|
|
62
|
-
isDataLoaded = false;
|
|
63
|
-
|
|
64
|
-
constructor(private http: HttpClient) { }
|
|
65
|
-
|
|
66
|
-
ngOnInit(): void {
|
|
67
|
-
this.columnDefinitions = [
|
|
68
|
-
{ id: 'countryCode', field: 'code', name: 'Code', maxWidth: 90, sortable: true, filterable: true, columnGroup: 'Country' },
|
|
69
|
-
{ id: 'countryName', field: 'name', name: 'Name', width: 60, sortable: true, filterable: true, columnGroup: 'Country' },
|
|
70
|
-
{ id: 'countryNative', field: 'native', name: 'Native', width: 60, sortable: true, filterable: true, columnGroup: 'Country' },
|
|
71
|
-
{ id: 'countryPhone', field: 'phone', name: 'Phone Area Code', maxWidth: 110, sortable: true, filterable: true, columnGroup: 'Country' },
|
|
72
|
-
{ id: 'countryCurrency', field: 'currency', name: 'Currency', maxWidth: 90, sortable: true, filterable: true, columnGroup: 'Country' },
|
|
73
|
-
{ id: 'countryEmoji', field: 'emoji', name: 'Emoji', maxWidth: 90, sortable: true, columnGroup: 'Country' },
|
|
74
|
-
{
|
|
75
|
-
id: 'languageName', field: 'languages.name', name: 'Names', width: 60,
|
|
76
|
-
formatter: Formatters.arrayObjectToCsv, columnGroup: 'Language',
|
|
77
|
-
params: { propertyNames: ['name'], useFormatterOuputToFilter: true },
|
|
78
|
-
filterable: true,
|
|
79
|
-
// this Filter is a bit more tricky than others since the values are an array of objects
|
|
80
|
-
// what we can do is use the Formatter to search from the CSV string coming from the Formatter (with "useFormatterOuputToFilter: true")
|
|
81
|
-
// we also need to use the Operator IN_CONTAINS
|
|
82
|
-
filter: {
|
|
83
|
-
model: Filters.multipleSelect,
|
|
84
|
-
collectionAsync: this.getLanguages(),
|
|
85
|
-
operator: OperatorType.inContains,
|
|
86
|
-
collectionOptions: {
|
|
87
|
-
addBlankEntry: true,
|
|
88
|
-
// the data is not at the root of the array, so we must tell the Select Filter where to pull the data
|
|
89
|
-
collectionInsideObjectProperty: 'data.languages'
|
|
90
|
-
},
|
|
91
|
-
collectionFilterBy: [
|
|
92
|
-
// filter out any empty values
|
|
93
|
-
{ property: 'name', value: '', operator: 'NE' },
|
|
94
|
-
{ property: 'name', value: null, operator: 'NE' },
|
|
95
|
-
],
|
|
96
|
-
collectionSortBy: {
|
|
97
|
-
property: 'name'
|
|
98
|
-
},
|
|
99
|
-
customStructure: {
|
|
100
|
-
value: 'name',
|
|
101
|
-
label: 'name',
|
|
102
|
-
},
|
|
103
|
-
filterOptions: {
|
|
104
|
-
filter: true
|
|
105
|
-
} as MultipleSelectOption
|
|
106
|
-
},
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
id: 'languageNative', field: 'languages.native', name: 'Native', width: 60,
|
|
110
|
-
formatter: Formatters.arrayObjectToCsv, params: { propertyNames: ['native'], useFormatterOuputToFilter: true }, columnGroup: 'Language',
|
|
111
|
-
filterable: true,
|
|
112
|
-
filter: {
|
|
113
|
-
model: Filters.multipleSelect,
|
|
114
|
-
collectionAsync: this.getLanguages(),
|
|
115
|
-
operator: OperatorType.inContains,
|
|
116
|
-
collectionOptions: {
|
|
117
|
-
addBlankEntry: true,
|
|
118
|
-
// the data is not at the root of the array, so we must tell the Select Filter where to pull the data
|
|
119
|
-
collectionInsideObjectProperty: 'data.languages'
|
|
120
|
-
},
|
|
121
|
-
collectionFilterBy: [
|
|
122
|
-
// filter out any empty values
|
|
123
|
-
{ property: 'native', value: '', operator: 'NE' },
|
|
124
|
-
{ property: 'native', value: null, operator: 'NE' },
|
|
125
|
-
],
|
|
126
|
-
collectionSortBy: {
|
|
127
|
-
property: 'native'
|
|
128
|
-
},
|
|
129
|
-
customStructure: {
|
|
130
|
-
value: 'native',
|
|
131
|
-
label: 'native',
|
|
132
|
-
},
|
|
133
|
-
filterOptions: {
|
|
134
|
-
filter: true
|
|
135
|
-
} as MultipleSelectOption
|
|
136
|
-
},
|
|
137
|
-
},
|
|
138
|
-
{
|
|
139
|
-
id: 'languageCode', field: 'languages.code', name: 'Codes', maxWidth: 100,
|
|
140
|
-
formatter: Formatters.arrayObjectToCsv, params: { propertyNames: ['code'], useFormatterOuputToFilter: true }, columnGroup: 'Language',
|
|
141
|
-
filterable: true,
|
|
142
|
-
},
|
|
143
|
-
{
|
|
144
|
-
id: 'continentName', field: 'continent.name', name: 'Name', width: 60, sortable: true,
|
|
145
|
-
filterable: true, formatter: Formatters.complexObject, columnGroup: 'Continent'
|
|
146
|
-
},
|
|
147
|
-
{
|
|
148
|
-
id: 'continentCode', field: 'continent.code', name: 'Code', maxWidth: 90,
|
|
149
|
-
sortable: true,
|
|
150
|
-
filterable: true,
|
|
151
|
-
filter: {
|
|
152
|
-
model: Filters.singleSelect,
|
|
153
|
-
collectionAsync: this.getContinents(),
|
|
154
|
-
collectionOptions: {
|
|
155
|
-
// the data is not at the root of the array, so we must tell the Select Filter where to pull the data
|
|
156
|
-
collectionInsideObjectProperty: 'data.continents',
|
|
157
|
-
addBlankEntry: true,
|
|
158
|
-
separatorBetweenTextLabels: ': ',
|
|
159
|
-
},
|
|
160
|
-
customStructure: {
|
|
161
|
-
value: 'code',
|
|
162
|
-
label: 'code',
|
|
163
|
-
labelSuffix: 'name',
|
|
164
|
-
}
|
|
165
|
-
},
|
|
166
|
-
formatter: Formatters.complexObject, columnGroup: 'Continent',
|
|
167
|
-
},
|
|
168
|
-
];
|
|
169
|
-
|
|
170
|
-
this.gridOptions = {
|
|
171
|
-
autoResize: {
|
|
172
|
-
container: '#demo-container',
|
|
173
|
-
rightPadding: 10
|
|
174
|
-
},
|
|
175
|
-
enableFiltering: true,
|
|
176
|
-
enableCellNavigation: true,
|
|
177
|
-
enablePagination: false,
|
|
178
|
-
createPreHeaderPanel: true,
|
|
179
|
-
showPreHeaderPanel: true,
|
|
180
|
-
preHeaderPanelHeight: 28,
|
|
181
|
-
datasetIdPropertyName: 'code',
|
|
182
|
-
showCustomFooter: true, // display some metrics in the bottom custom footer
|
|
183
|
-
backendServiceApi: {
|
|
184
|
-
// use the GraphQL Service to build the query but use local (in memory) Filtering/Sorting strategies
|
|
185
|
-
// the useLocalFiltering/useLocalSorting flags can be enabled independently
|
|
186
|
-
service: new GraphqlService(),
|
|
187
|
-
useLocalFiltering: true,
|
|
188
|
-
useLocalSorting: true,
|
|
189
|
-
|
|
190
|
-
options: {
|
|
191
|
-
datasetName: 'countries', // the only REQUIRED property
|
|
192
|
-
},
|
|
193
|
-
// you can define the onInit callback OR enable the "executeProcessCommandOnInit" flag in the service init
|
|
194
|
-
preProcess: () => !this.isDataLoaded ? this.displaySpinner(true) : '',
|
|
195
|
-
process: (query: string) => this.getCountries(query),
|
|
196
|
-
postProcess: (result: GraphqlResult<Country>) => {
|
|
197
|
-
this.metrics = result.metrics as Metrics;
|
|
198
|
-
this.displaySpinner(false);
|
|
199
|
-
this.isDataLoaded = true;
|
|
200
|
-
}
|
|
201
|
-
} as GraphqlServiceApi
|
|
202
|
-
};
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
displaySpinner(isProcessing: boolean) {
|
|
206
|
-
this.processing = isProcessing;
|
|
207
|
-
this.status = (isProcessing)
|
|
208
|
-
? { text: 'processing...', class: 'alert alert-danger' }
|
|
209
|
-
: { text: 'finished', class: 'alert alert-success' };
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
// --
|
|
213
|
-
// NOTE - Demo Code ONLY
|
|
214
|
-
// This Example calls multiple GraphQL queries, this is ONLY for demo purposes, you would typically only call 1 query (which is what GraphQL is good at)
|
|
215
|
-
// This demo is mainly to show the use of GraphqlService to build the query and retrieve the data but also to show how to mix that with usage of local Filtering/Sorting strategies
|
|
216
|
-
// --
|
|
217
|
-
|
|
218
|
-
/** Calling the GraphQL backend API to get the Countries with the Query created by the "process" method of GraphqlService */
|
|
219
|
-
getCountries(query: string): Observable<GraphqlResult<Country>> {
|
|
220
|
-
return this.http.post<GraphqlResult<Country>>(COUNTRIES_API, { query });
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
/**
|
|
224
|
-
* Calling again the GraphQL backend API, however in this case we cannot use the GraphQL Service to build the query
|
|
225
|
-
* So we will have to write, by hand, the query to get the continents code & name
|
|
226
|
-
* We also need to resolve the data in a flat array (singleSelect/multipleSelect Filters only accept data at the root of the array)
|
|
227
|
-
*/
|
|
228
|
-
getContinents(): Observable<GraphqlResult<{ code: string; name: string; }>> {
|
|
229
|
-
const continentQuery = `query { continents { code, name }}`;
|
|
230
|
-
return this.http.post<GraphqlResult<{ code: string; name: string; }>>(COUNTRIES_API, { query: continentQuery });
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
/**
|
|
234
|
-
* Calling again the GraphQL backend API, however in this case we cannot use the GraphQL Service to build the query
|
|
235
|
-
* So we will have to write, by hand, the query to get the languages code & name
|
|
236
|
-
* We also need to resolve the data in a flat array (singleSelect/multipleSelect Filters only accept data at the root of the array)
|
|
237
|
-
*/
|
|
238
|
-
getLanguages(): Observable<GraphqlResult<{ code: string; name: string; native: string; }>> {
|
|
239
|
-
const languageQuery = `query { languages { code, name, native }}`;
|
|
240
|
-
return this.http.post<GraphqlResult<{ code: string; name: string; native: string; }>>(COUNTRIES_API, { query: languageQuery });
|
|
241
|
-
}
|
|
242
|
-
}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
<div id="demo-container" class="container-fluid">
|
|
2
|
-
<h2>
|
|
3
|
-
{{title}}
|
|
4
|
-
<span class="float-end">
|
|
5
|
-
<a style="font-size: 18px"
|
|
6
|
-
target="_blank"
|
|
7
|
-
href="https://github.com/ghiscoding/Angular-Slickgrid/blob/master/src/app/examples/grid-graphql.component.ts">
|
|
8
|
-
<span class="fa fa-link"></span> code
|
|
9
|
-
</a>
|
|
10
|
-
</span>
|
|
11
|
-
</h2>
|
|
12
|
-
<div class="subtitle" [innerHTML]="subTitle"></div>
|
|
13
|
-
|
|
14
|
-
<div class="row">
|
|
15
|
-
<div class="col-sm-5">
|
|
16
|
-
<div [class]="status.class" role="alert" data-test="status">
|
|
17
|
-
<strong>Status: </strong> {{status.text}}
|
|
18
|
-
<span [hidden]="!processing">
|
|
19
|
-
<i class="fa fa-refresh fa-spin fa-lg fa-fw"></i>
|
|
20
|
-
</span>
|
|
21
|
-
</div>
|
|
22
|
-
|
|
23
|
-
<div class="row">
|
|
24
|
-
<div class="col-md-12">
|
|
25
|
-
<button class="btn btn-outline-secondary btn-sm" data-test="clear-filters-sorting"
|
|
26
|
-
(click)="clearAllFiltersAndSorts()" title="Clear all Filters & Sorts">
|
|
27
|
-
<i class="fa fa-filter text-danger"></i>
|
|
28
|
-
Clear all Filter & Sorts
|
|
29
|
-
</button>
|
|
30
|
-
<button class="btn btn-outline-secondary btn-sm" data-test="set-dynamic-filter"
|
|
31
|
-
(click)="setFiltersDynamically()">
|
|
32
|
-
Set Filters Dynamically
|
|
33
|
-
</button>
|
|
34
|
-
<button class="btn btn-outline-secondary btn-sm" data-test="set-dynamic-sorting"
|
|
35
|
-
(click)="setSortingDynamically()">
|
|
36
|
-
Set Sorting Dynamically
|
|
37
|
-
</button>
|
|
38
|
-
</div>
|
|
39
|
-
</div>
|
|
40
|
-
<div class="row mt-1">
|
|
41
|
-
<div class="col-md-12">
|
|
42
|
-
<button class="btn btn-outline-secondary btn-sm" data-test="language-button" (click)="switchLanguage()">
|
|
43
|
-
<i class="fa fa-language"></i>
|
|
44
|
-
Switch Language
|
|
45
|
-
</button>
|
|
46
|
-
<strong>Locale:</strong>
|
|
47
|
-
<span style="font-style: italic" data-test="selected-locale">
|
|
48
|
-
{{selectedLanguage + '.json'}}
|
|
49
|
-
</span>
|
|
50
|
-
</div>
|
|
51
|
-
</div>
|
|
52
|
-
<br />
|
|
53
|
-
<div *ngIf="metrics" style="margin: 10px 0px">
|
|
54
|
-
<b>Metrics:</b> {{metrics.endTime | date: 'yyyy-MM-dd hh:mm aaaaa\'m\''}} | {{metrics.executionTime}}ms
|
|
55
|
-
| {{metrics.totalItemCount}} items
|
|
56
|
-
</div>
|
|
57
|
-
<div class="row mb-2">
|
|
58
|
-
<div class="col-md-12">
|
|
59
|
-
<label>Programmatically go to first/last page:</label>
|
|
60
|
-
<button class="btn btn-outline-secondary btn-xs" data-test="goto-first-page" (click)="goToFirstPage()">
|
|
61
|
-
<i class="fa fa-caret-left fa-lg"></i>
|
|
62
|
-
</button>
|
|
63
|
-
<button class="btn btn-outline-secondary btn-xs" data-test="goto-last-page" (click)="goToLastPage()">
|
|
64
|
-
<i class="fa fa-caret-right fa-lg"></i>
|
|
65
|
-
</button>
|
|
66
|
-
</div>
|
|
67
|
-
</div>
|
|
68
|
-
</div>
|
|
69
|
-
|
|
70
|
-
<div class="col-sm-7">
|
|
71
|
-
<div class="alert alert-info" data-test="alert-graphql-query">
|
|
72
|
-
<strong>GraphQL Query:</strong>
|
|
73
|
-
<div [innerHTML]="graphqlQuery" data-test="graphql-query-result"></div>
|
|
74
|
-
</div>
|
|
75
|
-
</div>
|
|
76
|
-
</div>
|
|
77
|
-
|
|
78
|
-
<hr />
|
|
79
|
-
<angular-slickgrid gridId="grid6"
|
|
80
|
-
[columnDefinitions]="columnDefinitions"
|
|
81
|
-
[gridOptions]="gridOptions"
|
|
82
|
-
[dataset]="dataset"
|
|
83
|
-
(onAngularGridCreated)="angularGridReady($event.detail)"
|
|
84
|
-
(onGridStateChanged)="gridStateChanged($event.detail)"
|
|
85
|
-
(onBeforeGridDestroy)="saveCurrentGridState()">
|
|
86
|
-
</angular-slickgrid>
|
|
87
|
-
</div>
|
|
@@ -1,304 +0,0 @@
|
|
|
1
|
-
import { GraphqlService, GraphqlPaginatedResult, GraphqlServiceApi, } from '@slickgrid-universal/graphql';
|
|
2
|
-
import { Component, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';
|
|
3
|
-
import { TranslateService } from '@ngx-translate/core';
|
|
4
|
-
import {
|
|
5
|
-
AngularGridInstance,
|
|
6
|
-
Column,
|
|
7
|
-
FieldType,
|
|
8
|
-
Filters,
|
|
9
|
-
Formatters,
|
|
10
|
-
GridOption,
|
|
11
|
-
GridStateChange,
|
|
12
|
-
Metrics,
|
|
13
|
-
MultipleSelectOption,
|
|
14
|
-
OperatorType,
|
|
15
|
-
SortDirection,
|
|
16
|
-
unsubscribeAllObservables,
|
|
17
|
-
} from './../modules/angular-slickgrid';
|
|
18
|
-
import * as moment from 'moment-mini';
|
|
19
|
-
import { Subscription } from 'rxjs';
|
|
20
|
-
|
|
21
|
-
const defaultPageSize = 20;
|
|
22
|
-
const GRAPHQL_QUERY_DATASET_NAME = 'users';
|
|
23
|
-
const LOCAL_STORAGE_KEY = 'gridStateGraphql';
|
|
24
|
-
|
|
25
|
-
@Component({
|
|
26
|
-
templateUrl: './grid-graphql.component.html'
|
|
27
|
-
})
|
|
28
|
-
export class GridGraphqlComponent implements OnInit, OnDestroy {
|
|
29
|
-
title = 'Example 6: Grid connected to Backend Server with GraphQL';
|
|
30
|
-
subTitle = `
|
|
31
|
-
Sorting/Paging connected to a Backend GraphQL Service (<a href="https://github.com/ghiscoding/Angular-Slickgrid/wiki/GraphQL" target="_blank">Wiki docs</a>).
|
|
32
|
-
<br/>
|
|
33
|
-
<ul class="small">
|
|
34
|
-
<li><span class="red">(*) NO DATA SHOWING</span> - just change Filters & Pages and look at the "GraphQL Query" changing :)</li>
|
|
35
|
-
<li>This example also demos the Grid State feature, open the console log to see the changes</li>
|
|
36
|
-
<li>String column also support operator (>, >=, <, <=, <>, !=, =, ==, *)
|
|
37
|
-
<ul>
|
|
38
|
-
<li>The (*) can be used as startsWith (ex.: "abc*" => startsWith "abc") / endsWith (ex.: "*xyz" => endsWith "xyz")</li>
|
|
39
|
-
<li>The other operators can be used on column type number for example: ">=100" (bigger or equal than 100)</li>
|
|
40
|
-
</ul>
|
|
41
|
-
<li>You can also preload a grid with certain "presets" like Filters / Sorters / Pagination <a href="https://github.com/ghiscoding/Angular-Slickgrid/wiki/Grid-State-&-Preset" target="_blank">Wiki - Grid Preset</a>
|
|
42
|
-
</ul>
|
|
43
|
-
`;
|
|
44
|
-
private subscriptions: Subscription[] = [];
|
|
45
|
-
angularGrid!: AngularGridInstance;
|
|
46
|
-
columnDefinitions!: Column[];
|
|
47
|
-
gridOptions!: GridOption;
|
|
48
|
-
dataset = [];
|
|
49
|
-
metrics!: Metrics;
|
|
50
|
-
|
|
51
|
-
graphqlQuery = '';
|
|
52
|
-
processing = true;
|
|
53
|
-
status = { text: 'processing...', class: 'alert alert-danger' };
|
|
54
|
-
isWithCursor = false;
|
|
55
|
-
selectedLanguage: string;
|
|
56
|
-
|
|
57
|
-
constructor(private readonly cd: ChangeDetectorRef, private translate: TranslateService) {
|
|
58
|
-
// always start with English for Cypress E2E tests to be consistent
|
|
59
|
-
const defaultLang = 'en';
|
|
60
|
-
this.translate.use(defaultLang);
|
|
61
|
-
this.selectedLanguage = defaultLang;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
ngOnDestroy() {
|
|
65
|
-
// also unsubscribe all Angular Subscriptions
|
|
66
|
-
this.subscriptions = unsubscribeAllObservables(this.subscriptions);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
ngOnInit(): void {
|
|
70
|
-
this.columnDefinitions = [
|
|
71
|
-
{
|
|
72
|
-
id: 'name', field: 'name', nameKey: 'NAME', width: 60, columnGroupKey: 'CUSTOMER_INFORMATION',
|
|
73
|
-
type: FieldType.string,
|
|
74
|
-
sortable: true,
|
|
75
|
-
filterable: true,
|
|
76
|
-
filter: {
|
|
77
|
-
model: Filters.compoundInput
|
|
78
|
-
}
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
id: 'gender', field: 'gender', nameKey: 'GENDER', filterable: true, sortable: true, width: 60, columnGroupKey: 'CUSTOMER_INFORMATION',
|
|
82
|
-
filter: {
|
|
83
|
-
model: Filters.singleSelect,
|
|
84
|
-
collection: [{ value: '', label: '' }, { value: 'male', label: 'male', labelKey: 'MALE' }, { value: 'female', label: 'female', labelKey: 'FEMALE' }]
|
|
85
|
-
}
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
id: 'company', field: 'company', nameKey: 'COMPANY', width: 60, columnGroupKey: 'CUSTOMER_INFORMATION',
|
|
89
|
-
sortable: true, filterable: true,
|
|
90
|
-
filter: {
|
|
91
|
-
model: Filters.multipleSelect,
|
|
92
|
-
collection: [{ value: 'acme', label: 'Acme' }, { value: 'abc', label: 'Company ABC' }, { value: 'xyz', label: 'Company XYZ' }],
|
|
93
|
-
filterOptions: {
|
|
94
|
-
filter: true // adds a filter on top of the multi-select dropdown
|
|
95
|
-
} as MultipleSelectOption
|
|
96
|
-
}
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
id: 'billingAddressStreet', field: 'billing.address.street', nameKey: 'BILLING.ADDRESS.STREET',
|
|
100
|
-
width: 60, filterable: true, sortable: true, columnGroupKey: 'BILLING.INFORMATION',
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
id: 'billingAddressZip', field: 'billing.address.zip', nameKey: 'BILLING.ADDRESS.ZIP', width: 60,
|
|
104
|
-
type: FieldType.number,
|
|
105
|
-
columnGroupKey: 'BILLING.INFORMATION', // or use "columnGroup" without Translate
|
|
106
|
-
filterable: true, sortable: true,
|
|
107
|
-
filter: {
|
|
108
|
-
model: Filters.compoundInput
|
|
109
|
-
},
|
|
110
|
-
formatter: Formatters.multiple, params: { formatters: [Formatters.complexObject, Formatters.translate] }
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
id: 'finish', field: 'finish', name: 'Date', formatter: Formatters.dateIso, sortable: true, minWidth: 90, width: 120, exportWithFormatter: true,
|
|
114
|
-
type: FieldType.date,
|
|
115
|
-
columnGroupKey: 'BILLING.INFORMATION', // or use "columnGroup" without Translate
|
|
116
|
-
filterable: true,
|
|
117
|
-
filter: {
|
|
118
|
-
model: Filters.dateRange,
|
|
119
|
-
}
|
|
120
|
-
},
|
|
121
|
-
];
|
|
122
|
-
|
|
123
|
-
const presetLowestDay = moment().add(-2, 'days').format('YYYY-MM-DD');
|
|
124
|
-
const presetHighestDay = moment().add(20, 'days').format('YYYY-MM-DD');
|
|
125
|
-
|
|
126
|
-
this.gridOptions = {
|
|
127
|
-
gridHeight: 200,
|
|
128
|
-
gridWidth: 900,
|
|
129
|
-
enableFiltering: true,
|
|
130
|
-
enableCellNavigation: true,
|
|
131
|
-
enableTranslate: true,
|
|
132
|
-
createPreHeaderPanel: true,
|
|
133
|
-
showPreHeaderPanel: true,
|
|
134
|
-
preHeaderPanelHeight: 28,
|
|
135
|
-
i18n: this.translate,
|
|
136
|
-
gridMenu: {
|
|
137
|
-
resizeOnShowHeaderRow: true,
|
|
138
|
-
commandItems: [
|
|
139
|
-
{
|
|
140
|
-
iconCssClass: 'fa fa-times text-danger',
|
|
141
|
-
title: 'Reset Grid',
|
|
142
|
-
disabled: false,
|
|
143
|
-
command: 'reset-grid',
|
|
144
|
-
positionOrder: 60
|
|
145
|
-
}
|
|
146
|
-
],
|
|
147
|
-
onCommand: (e, args) => {
|
|
148
|
-
if (args.command === 'reset-grid') {
|
|
149
|
-
this.angularGrid.gridService.resetGrid(this.columnDefinitions);
|
|
150
|
-
localStorage[LOCAL_STORAGE_KEY] = null;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
},
|
|
154
|
-
enablePagination: true, // you could optionally disable the Pagination
|
|
155
|
-
pagination: {
|
|
156
|
-
pageSizes: [10, 15, 20, 25, 30, 40, 50, 75, 100],
|
|
157
|
-
pageSize: defaultPageSize,
|
|
158
|
-
totalItems: 0
|
|
159
|
-
},
|
|
160
|
-
presets: {
|
|
161
|
-
columns: [
|
|
162
|
-
{ columnId: 'name', width: 100 },
|
|
163
|
-
{ columnId: 'gender', width: 55 },
|
|
164
|
-
{ columnId: 'company' },
|
|
165
|
-
{ columnId: 'billingAddressZip' }, // flip column position of Street/Zip to Zip/Street
|
|
166
|
-
{ columnId: 'billingAddressStreet', width: 120 },
|
|
167
|
-
{ columnId: 'finish', width: 130 },
|
|
168
|
-
],
|
|
169
|
-
filters: [
|
|
170
|
-
// you can use OperatorType or type them as string, e.g.: operator: 'EQ'
|
|
171
|
-
{ columnId: 'gender', searchTerms: ['male'], operator: OperatorType.equal },
|
|
172
|
-
{ columnId: 'name', searchTerms: ['John Doe'], operator: OperatorType.contains },
|
|
173
|
-
{ columnId: 'company', searchTerms: ['xyz'], operator: 'IN' },
|
|
174
|
-
|
|
175
|
-
// use a date range with 2 searchTerms values
|
|
176
|
-
{ columnId: 'finish', searchTerms: [presetLowestDay, presetHighestDay], operator: OperatorType.rangeInclusive },
|
|
177
|
-
],
|
|
178
|
-
sorters: [
|
|
179
|
-
// direction can written as 'asc' (uppercase or lowercase) and/or use the SortDirection type
|
|
180
|
-
{ columnId: 'name', direction: 'asc' },
|
|
181
|
-
{ columnId: 'company', direction: SortDirection.DESC }
|
|
182
|
-
],
|
|
183
|
-
pagination: { pageNumber: 2, pageSize: defaultPageSize }
|
|
184
|
-
},
|
|
185
|
-
backendServiceApi: {
|
|
186
|
-
service: new GraphqlService(),
|
|
187
|
-
options: {
|
|
188
|
-
datasetName: GRAPHQL_QUERY_DATASET_NAME, // the only REQUIRED property
|
|
189
|
-
addLocaleIntoQuery: true, // optionally add current locale into the query
|
|
190
|
-
extraQueryArguments: [{ // optionally add some extra query arguments as input query arguments
|
|
191
|
-
field: 'userId',
|
|
192
|
-
value: 123
|
|
193
|
-
}],
|
|
194
|
-
// when dealing with complex objects, we want to keep our field name with double quotes
|
|
195
|
-
// example with gender: query { users (orderBy:[{field:"gender",direction:ASC}]) {}
|
|
196
|
-
keepArgumentFieldDoubleQuotes: true
|
|
197
|
-
},
|
|
198
|
-
// you can define the onInit callback OR enable the "executeProcessCommandOnInit" flag in the service init
|
|
199
|
-
// onInit: (query) => this.getCustomerApiCall(query)
|
|
200
|
-
preProcess: () => this.displaySpinner(true),
|
|
201
|
-
process: (query) => this.getCustomerApiCall(query),
|
|
202
|
-
postProcess: (result: GraphqlPaginatedResult) => {
|
|
203
|
-
this.metrics = result.metrics as Metrics;
|
|
204
|
-
this.displaySpinner(false);
|
|
205
|
-
this.cd.detectChanges();
|
|
206
|
-
}
|
|
207
|
-
} as GraphqlServiceApi
|
|
208
|
-
};
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
angularGridReady(angularGrid: AngularGridInstance) {
|
|
212
|
-
this.angularGrid = angularGrid;
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
displaySpinner(isProcessing: boolean) {
|
|
216
|
-
this.processing = isProcessing;
|
|
217
|
-
this.status = (isProcessing)
|
|
218
|
-
? { text: 'processing...', class: 'alert alert-danger' }
|
|
219
|
-
: { text: 'finished', class: 'alert alert-success' };
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
/**
|
|
223
|
-
* Calling your GraphQL backend server should always return a Promise or Observable of type GraphqlPaginatedResult (or GraphqlResult without Pagination)
|
|
224
|
-
* @param query
|
|
225
|
-
* @return Promise<GraphqlPaginatedResult> | Observable<GraphqlResult>
|
|
226
|
-
*/
|
|
227
|
-
getCustomerApiCall(query: string): Promise<GraphqlPaginatedResult> {
|
|
228
|
-
// in your case, you will call your WebAPI function (wich needs to return a Promise)
|
|
229
|
-
// for the demo purpose, we will call a mock WebAPI function
|
|
230
|
-
const mockedResult = {
|
|
231
|
-
// the dataset name is the only unknown property
|
|
232
|
-
// will be the same defined in your GraphQL Service init, in our case GRAPHQL_QUERY_DATASET_NAME
|
|
233
|
-
data: {
|
|
234
|
-
[GRAPHQL_QUERY_DATASET_NAME]: {
|
|
235
|
-
nodes: [],
|
|
236
|
-
totalCount: 100
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
};
|
|
240
|
-
|
|
241
|
-
return new Promise(resolve => {
|
|
242
|
-
setTimeout(() => {
|
|
243
|
-
this.graphqlQuery = this.angularGrid.backendService!.buildQuery();
|
|
244
|
-
resolve(mockedResult);
|
|
245
|
-
}, 100);
|
|
246
|
-
});
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
goToFirstPage() {
|
|
250
|
-
this.angularGrid.paginationService!.goToFirstPage();
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
goToLastPage() {
|
|
254
|
-
this.angularGrid.paginationService!.goToLastPage();
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
/** Dispatched event of a Grid State Changed event */
|
|
258
|
-
gridStateChanged(gridStateChanges: GridStateChange) {
|
|
259
|
-
console.log('GraphQL Example, Grid State changed:: ', gridStateChanges);
|
|
260
|
-
localStorage[LOCAL_STORAGE_KEY] = JSON.stringify(gridStateChanges.gridState);
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
clearAllFiltersAndSorts() {
|
|
264
|
-
if (this.angularGrid?.gridService) {
|
|
265
|
-
this.angularGrid.gridService.clearAllFiltersAndSorts();
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
/** Save current Filters, Sorters in LocaleStorage or DB */
|
|
270
|
-
saveCurrentGridState() {
|
|
271
|
-
console.log('GraphQL current grid state', this.angularGrid.gridStateService.getCurrentGridState());
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
setFiltersDynamically() {
|
|
275
|
-
const presetLowestDay = moment().add(-2, 'days').format('YYYY-MM-DD');
|
|
276
|
-
const presetHighestDay = moment().add(20, 'days').format('YYYY-MM-DD');
|
|
277
|
-
|
|
278
|
-
// we can Set Filters Dynamically (or different filters) afterward through the FilterService
|
|
279
|
-
this.angularGrid.filterService.updateFilters([
|
|
280
|
-
{ columnId: 'gender', searchTerms: ['female'], operator: OperatorType.equal },
|
|
281
|
-
{ columnId: 'name', searchTerms: ['Jane'], operator: OperatorType.startsWith },
|
|
282
|
-
{ columnId: 'company', searchTerms: ['acme'], operator: 'IN' },
|
|
283
|
-
{ columnId: 'billingAddressZip', searchTerms: ['11'], operator: OperatorType.greaterThanOrEqual },
|
|
284
|
-
{ columnId: 'finish', searchTerms: [presetLowestDay, presetHighestDay], operator: OperatorType.rangeInclusive },
|
|
285
|
-
]);
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
setSortingDynamically() {
|
|
289
|
-
this.angularGrid.sortService.updateSorting([
|
|
290
|
-
// orders matter, whichever is first in array will be the first sorted column
|
|
291
|
-
{ columnId: 'billingAddressZip', direction: 'DESC' },
|
|
292
|
-
{ columnId: 'company', direction: 'ASC' },
|
|
293
|
-
]);
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
switchLanguage() {
|
|
297
|
-
const nextLanguage = (this.selectedLanguage === 'en') ? 'fr' : 'en';
|
|
298
|
-
this.subscriptions.push(
|
|
299
|
-
this.translate.use(nextLanguage).subscribe(() => {
|
|
300
|
-
this.selectedLanguage = nextLanguage;
|
|
301
|
-
})
|
|
302
|
-
);
|
|
303
|
-
}
|
|
304
|
-
}
|