angular-slickgrid 8.14.1 → 9.0.0
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/.gitbook.yaml +5 -0
- package/CHANGELOG.md +1691 -0
- package/CONTRIBUTING.md +17 -0
- package/README.md +13 -50
- package/angular.json +133 -0
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/clover.xml +1620 -0
- package/coverage/coverage-final.json +9 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +176 -0
- package/coverage/library/components/angular-slickgrid.component.ts.html +5074 -0
- package/coverage/library/components/index.html +116 -0
- package/coverage/library/constants.ts.html +397 -0
- package/coverage/library/extensions/index.html +116 -0
- package/coverage/library/extensions/slickRowDetailView.ts.html +1261 -0
- package/coverage/library/index.html +116 -0
- package/coverage/library/modules/angular-slickgrid.module.ts.html +166 -0
- package/coverage/library/modules/index.html +116 -0
- package/coverage/library/services/angularUtil.service.ts.html +445 -0
- package/coverage/library/services/container.service.ts.html +163 -0
- package/coverage/library/services/index.html +161 -0
- package/coverage/library/services/translater.service.ts.html +199 -0
- package/coverage/library/services/utilities.ts.html +142 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +196 -0
- package/dist/LICENSE +21 -0
- package/dist/README.md +142 -0
- package/{fesm2022 → dist/fesm2022}/angular-slickgrid.mjs +168 -194
- package/dist/fesm2022/angular-slickgrid.mjs.map +1 -0
- package/{i18n → dist/i18n}/en.json +2 -1
- package/{i18n → dist/i18n}/fr.json +2 -1
- package/{app/modules/angular-slickgrid → dist/library}/components/angular-slickgrid.component.d.ts +9 -9
- package/{app/modules/angular-slickgrid → dist/library}/extensions/slickRowDetailView.d.ts +4 -4
- package/{app/modules/angular-slickgrid → dist/library}/models/angularGridInstance.interface.d.ts +0 -2
- package/dist/library/models/index.d.ts +5 -0
- package/{app/modules/angular-slickgrid → dist/library}/models/rowDetailView.interface.d.ts +1 -1
- package/{app/modules/angular-slickgrid → dist/library}/modules/angular-slickgrid.module.d.ts +1 -1
- package/dist/public_api.d.ts +1 -0
- package/docs/README.md +5 -0
- package/docs/TOC.md +105 -0
- package/docs/backend-services/Custom-Backend-Service.md +50 -0
- package/docs/backend-services/GraphQL.md +276 -0
- package/docs/backend-services/OData.md +245 -0
- package/docs/backend-services/graphql/GraphQL-Filtering.md +156 -0
- package/docs/backend-services/graphql/GraphQL-JSON-Result.md +85 -0
- package/docs/backend-services/graphql/GraphQL-Pagination.md +77 -0
- package/docs/backend-services/graphql/GraphQL-Sorting.md +78 -0
- package/docs/column-functionalities/cell-menu.md +212 -0
- package/docs/column-functionalities/editors/autocomplete-editor.md +466 -0
- package/docs/column-functionalities/editors/date-editor-flatpickr.md +71 -0
- package/docs/column-functionalities/editors/date-editor-vanilla-calendar.md +91 -0
- package/docs/column-functionalities/editors/longtext-editor-textarea.md +80 -0
- package/docs/column-functionalities/editors/select-dropdown-editor.md +227 -0
- package/docs/column-functionalities/editors.md +604 -0
- package/docs/column-functionalities/filters/autocomplete-filter.md +183 -0
- package/docs/column-functionalities/filters/compound-filters.md +234 -0
- package/docs/column-functionalities/filters/custom-filter.md +117 -0
- package/docs/column-functionalities/filters/filter-intro.md +81 -0
- package/docs/column-functionalities/filters/input-filter.md +260 -0
- package/docs/column-functionalities/filters/range-filters.md +188 -0
- package/docs/column-functionalities/filters/select-filter.md +695 -0
- package/docs/column-functionalities/filters/single-search-filter.md +77 -0
- package/docs/column-functionalities/filters/styling-filled-filters.md +45 -0
- package/docs/column-functionalities/formatters.md +325 -0
- package/docs/column-functionalities/sorting.md +200 -0
- package/docs/developer-guides/csp-compliance.md +64 -0
- package/docs/events/Available-Events.md +223 -0
- package/docs/events/Grid-&-DataView-Events.md +211 -0
- package/docs/getting-started/quick-start.md +230 -0
- package/docs/getting-started/troubleshooting.md +80 -0
- package/docs/grid-functionalities/Column-Picker.md +22 -0
- package/docs/grid-functionalities/Composite-Editor-Modal.md +627 -0
- package/docs/grid-functionalities/Context-Menu.md +226 -0
- package/docs/grid-functionalities/Custom-Footer.md +80 -0
- package/docs/grid-functionalities/Custom-Tooltip-(plugin).md +258 -0
- package/docs/grid-functionalities/Export-to-Excel.md +457 -0
- package/docs/grid-functionalities/Export-to-Text-File.md +165 -0
- package/docs/grid-functionalities/FAQ.md +53 -0
- package/docs/grid-functionalities/Global-Options.md +29 -0
- package/docs/grid-functionalities/Grid-Auto-Resize.md +218 -0
- package/docs/grid-functionalities/Grid-Menu.md +134 -0
- package/docs/grid-functionalities/Grid-State-&-Preset.md +245 -0
- package/docs/grid-functionalities/Header-Menu-&-Header-Buttons.md +125 -0
- package/docs/grid-functionalities/Resize-by-Cell-Content.md +138 -0
- package/docs/grid-functionalities/Row-Selection.md +247 -0
- package/docs/grid-functionalities/Row-based-edit.md +71 -0
- package/docs/grid-functionalities/add-update-highlight.md +258 -0
- package/docs/grid-functionalities/column-row-spanning.md +74 -0
- package/docs/grid-functionalities/dynamic-item-metadata.md +124 -0
- package/docs/grid-functionalities/excel-copy-buffer.md +145 -0
- package/docs/grid-functionalities/frozen-columns-rows.md +164 -0
- package/docs/grid-functionalities/grouping-and-aggregators.md +269 -0
- package/docs/grid-functionalities/header-footer-slots.md +22 -0
- package/docs/grid-functionalities/infinite-scroll.md +150 -0
- package/docs/grid-functionalities/providing-grid-data.md +61 -0
- package/docs/grid-functionalities/row-detail.md +530 -0
- package/docs/grid-functionalities/tree-data-grid.md +391 -0
- package/docs/localization/Localization---Component-Sample.md +87 -0
- package/docs/localization/Localization-with-Custom-Locales.md +66 -0
- package/docs/localization/Localization-with-ngx-translate.md +148 -0
- package/docs/migrations/migration-to-2.x.md +304 -0
- package/docs/migrations/migration-to-3.x.md +295 -0
- package/docs/migrations/migration-to-4.x.md +83 -0
- package/docs/migrations/migration-to-5.x.md +160 -0
- package/docs/migrations/migration-to-6.x.md +128 -0
- package/docs/migrations/migration-to-7.x.md +294 -0
- package/docs/migrations/migration-to-8.x.md +316 -0
- package/docs/migrations/migration-to-9.x.md +219 -0
- package/docs/slick-grid-dataview-objects/slickgrid-dataview-objects.md +79 -0
- package/docs/styling/dark-mode.md +100 -0
- package/docs/styling/styling.md +250 -0
- package/docs/testing/testing-patterns.md +73 -0
- package/eslint.config.mjs +60 -0
- package/ng-package.json +10 -0
- package/package.json +24 -48
- package/src/assets/angular-logo.png +0 -0
- package/src/assets/angular-logo2.png +0 -0
- package/src/assets/data/collection_100_numbers.json +12 -0
- package/src/assets/data/collection_500_numbers.json +52 -0
- package/src/assets/data/countries.json +245 -0
- package/src/assets/data/country_names.json +245 -0
- package/src/assets/data/customers_100.json +102 -0
- package/src/assets/data/users.csv +5 -0
- package/src/assets/i18n/en.json +102 -0
- package/src/assets/i18n/fr.json +103 -0
- package/src/demos/app-routing.module.ts +108 -0
- package/src/demos/app.component.html +187 -0
- package/src/demos/app.component.scss +79 -0
- package/src/demos/app.component.ts +11 -0
- package/src/demos/app.module.ts +196 -0
- package/src/demos/environments/environment.dev.ts +3 -0
- package/src/demos/environments/environment.prod.ts +3 -0
- package/src/demos/environments/environment.ts +8 -0
- package/src/demos/examples/custom-angularComponentEditor.ts +187 -0
- package/src/demos/examples/custom-angularComponentFilter.ts +123 -0
- package/src/demos/examples/custom-buttonFormatter.component.ts +13 -0
- package/src/demos/examples/custom-inputEditor.ts +132 -0
- package/src/demos/examples/custom-inputFilter.ts +134 -0
- package/src/demos/examples/custom-titleFormatter.component.ts +9 -0
- package/src/demos/examples/data/collection_100_numbers.json +12 -0
- package/src/demos/examples/data/collection_500_numbers.json +52 -0
- package/src/demos/examples/data/countries.json +245 -0
- package/src/demos/examples/data/country_names.json +245 -0
- package/src/demos/examples/data/customers_100.json +102 -0
- package/src/demos/examples/data/users.csv +5 -0
- package/src/demos/examples/editor-ng-select.component.ts +38 -0
- package/src/demos/examples/example01.component.html +48 -0
- package/src/demos/examples/example01.component.ts +109 -0
- package/src/demos/examples/example02.component.html +45 -0
- package/src/demos/examples/example02.component.ts +218 -0
- package/src/demos/examples/example03.component.html +118 -0
- package/src/demos/examples/example03.component.ts +694 -0
- package/src/demos/examples/example04.component.html +87 -0
- package/src/demos/examples/example04.component.ts +326 -0
- package/src/demos/examples/example05.component.html +151 -0
- package/src/demos/examples/example05.component.ts +474 -0
- package/src/demos/examples/example06.component.html +163 -0
- package/src/demos/examples/example06.component.ts +446 -0
- package/src/demos/examples/example07.component.html +56 -0
- package/src/demos/examples/example07.component.scss +10 -0
- package/src/demos/examples/example07.component.ts +216 -0
- package/src/demos/examples/example08.component.html +51 -0
- package/src/demos/examples/example08.component.scss +23 -0
- package/src/demos/examples/example08.component.ts +195 -0
- package/src/demos/examples/example09.component.html +55 -0
- package/src/demos/examples/example09.component.scss +22 -0
- package/src/demos/examples/example09.component.ts +302 -0
- package/src/demos/examples/example10.component.html +103 -0
- package/src/demos/examples/example10.component.ts +309 -0
- package/src/demos/examples/example11.component.html +91 -0
- package/src/demos/examples/example11.component.ts +276 -0
- package/src/demos/examples/example12.component.html +98 -0
- package/src/demos/examples/example12.component.ts +317 -0
- package/src/demos/examples/example13.component.html +96 -0
- package/src/demos/examples/example13.component.ts +370 -0
- package/src/demos/examples/example14.component.html +50 -0
- package/src/demos/examples/example14.component.scss +11 -0
- package/src/demos/examples/example14.component.ts +156 -0
- package/src/demos/examples/example15.component.html +56 -0
- package/src/demos/examples/example15.component.ts +304 -0
- package/src/demos/examples/example16.component.html +77 -0
- package/src/demos/examples/example16.component.ts +277 -0
- package/src/demos/examples/example17.component.html +50 -0
- package/src/demos/examples/example17.component.ts +109 -0
- package/src/demos/examples/example18.component.html +132 -0
- package/src/demos/examples/example18.component.ts +445 -0
- package/src/demos/examples/example19-rowdetail.component.html +40 -0
- package/src/demos/examples/example19-rowdetail.component.ts +54 -0
- package/src/demos/examples/example19.component.html +79 -0
- package/src/demos/examples/example19.component.ts +316 -0
- package/src/demos/examples/example20.component.html +76 -0
- package/src/demos/examples/example20.component.scss +11 -0
- package/src/demos/examples/example20.component.ts +341 -0
- package/src/demos/examples/example21.component.html +86 -0
- package/src/demos/examples/example21.component.scss +16 -0
- package/src/demos/examples/example21.component.ts +140 -0
- package/src/demos/examples/example22.component.html +41 -0
- package/src/demos/examples/example22.component.ts +117 -0
- package/src/demos/examples/example23.component.html +111 -0
- package/src/demos/examples/example23.component.ts +323 -0
- package/src/demos/examples/example24.component.html +120 -0
- package/src/demos/examples/example24.component.scss +62 -0
- package/src/demos/examples/example24.component.ts +641 -0
- package/src/demos/examples/example25.component.html +60 -0
- package/src/demos/examples/example25.component.scss +8 -0
- package/src/demos/examples/example25.component.ts +255 -0
- package/src/demos/examples/example26.component.html +98 -0
- package/src/demos/examples/example26.component.scss +42 -0
- package/src/demos/examples/example26.component.ts +383 -0
- package/src/demos/examples/example27.component.html +138 -0
- package/src/demos/examples/example27.component.scss +10 -0
- package/src/demos/examples/example27.component.ts +369 -0
- package/src/demos/examples/example28.component.html +143 -0
- package/src/demos/examples/example28.component.scss +54 -0
- package/src/demos/examples/example28.component.ts +453 -0
- package/src/demos/examples/example29.component.html +30 -0
- package/src/demos/examples/example29.component.ts +70 -0
- package/src/demos/examples/example30.component.html +116 -0
- package/src/demos/examples/example30.component.scss +20 -0
- package/src/demos/examples/example30.component.ts +1070 -0
- package/src/demos/examples/example32.component.html +77 -0
- package/src/demos/examples/example32.component.scss +8 -0
- package/src/demos/examples/example32.component.ts +905 -0
- package/src/demos/examples/example33.component.html +50 -0
- package/src/demos/examples/example33.component.scss +46 -0
- package/src/demos/examples/example33.component.ts +571 -0
- package/src/demos/examples/example34.component.html +82 -0
- package/src/demos/examples/example34.component.scss +77 -0
- package/src/demos/examples/example34.component.ts +434 -0
- package/src/demos/examples/example35.component.html +77 -0
- package/src/demos/examples/example35.component.scss +18 -0
- package/src/demos/examples/example35.component.ts +264 -0
- package/src/demos/examples/example36.component.html +56 -0
- package/src/demos/examples/example36.component.scss +26 -0
- package/src/demos/examples/example36.component.ts +504 -0
- package/src/demos/examples/example37.component.html +30 -0
- package/src/demos/examples/example37.component.ts +123 -0
- package/src/demos/examples/example38.component.html +104 -0
- package/src/demos/examples/example38.component.scss +8 -0
- package/src/demos/examples/example38.component.ts +420 -0
- package/src/demos/examples/example39.component.html +112 -0
- package/src/demos/examples/example39.component.scss +8 -0
- package/src/demos/examples/example39.component.ts +371 -0
- package/src/demos/examples/example40.component.html +76 -0
- package/src/demos/examples/example40.component.ts +226 -0
- package/src/demos/examples/example41.component.html +50 -0
- package/src/demos/examples/example41.component.scss +42 -0
- package/src/demos/examples/example41.component.ts +229 -0
- package/src/demos/examples/example42.component.html +47 -0
- package/src/demos/examples/example42.component.ts +203 -0
- package/src/demos/examples/example43.component.html +94 -0
- package/src/demos/examples/example43.component.scss +30 -0
- package/src/demos/examples/example43.component.ts +449 -0
- package/src/demos/examples/example44.component.html +78 -0
- package/src/demos/examples/example44.component.scss +50 -0
- package/src/demos/examples/example44.component.ts +375 -0
- package/src/demos/examples/example45-detail.component.html +15 -0
- package/src/demos/examples/example45-detail.component.ts +97 -0
- package/src/demos/examples/example45.component.html +110 -0
- package/src/demos/examples/example45.component.scss +50 -0
- package/src/demos/examples/example45.component.ts +243 -0
- package/src/demos/examples/filter-ng-select.component.ts +33 -0
- package/src/demos/examples/grid-custom-pager.component.html +60 -0
- package/src/demos/examples/grid-custom-pager.component.scss +57 -0
- package/src/demos/examples/grid-custom-pager.component.ts +107 -0
- package/src/demos/examples/grid-remote.component.html +44 -0
- package/src/demos/examples/grid-remote.component.ts +164 -0
- package/src/demos/examples/home.component.html +39 -0
- package/src/demos/examples/home.component.ts +10 -0
- package/src/demos/examples/jsonp.ts +89 -0
- package/src/demos/examples/rowdetail-preload.component.ts +10 -0
- package/src/demos/examples/swt-common-grid-pagination.component.ts +160 -0
- package/src/demos/examples/swt-common-grid-test.component.html +37 -0
- package/src/demos/examples/swt-common-grid-test.component.ts +214 -0
- package/src/demos/examples/swt-common-grid.component.ts +436 -0
- package/src/demos/examples/swt-logger.service.ts +173 -0
- package/src/demos/examples/utilities.ts +9 -0
- package/src/favicon.ico +0 -0
- package/src/index.html +17 -0
- package/src/library/components/__tests__/angular-slickgrid.component.spec.ts +2638 -0
- package/src/library/components/angular-slickgrid.component.html +5 -0
- package/src/library/components/angular-slickgrid.component.ts +1662 -0
- package/src/library/constants.ts +105 -0
- package/src/library/extensions/__tests__/slickRowDetailView.spec.ts +751 -0
- package/src/library/extensions/index.ts +1 -0
- package/src/library/extensions/slickRowDetailView.ts +395 -0
- package/src/library/global-grid-options.ts +273 -0
- package/src/library/index.ts +11 -0
- package/src/library/models/angularComponentOutput.interface.ts +6 -0
- package/src/library/models/angularGridInstance.interface.ts +76 -0
- package/src/library/models/externalTestingDependencies.interface.ts +37 -0
- package/src/library/models/gridOption.interface.ts +15 -0
- package/src/library/models/index.ts +5 -0
- package/src/library/models/rowDetailView.interface.ts +16 -0
- package/src/library/modules/angular-slickgrid.module.spec.ts +25 -0
- package/src/library/modules/angular-slickgrid.module.ts +27 -0
- package/src/library/services/__tests__/angularUtilService.spec.ts +156 -0
- package/src/library/services/__tests__/container.service.spec.ts +25 -0
- package/src/library/services/__tests__/translater.service.spec.ts +43 -0
- package/src/library/services/__tests__/utilities.spec.ts +22 -0
- package/src/library/services/angularUtil.service.ts +120 -0
- package/src/library/services/container.service.ts +26 -0
- package/src/library/services/index.ts +4 -0
- package/src/library/services/translater.service.ts +38 -0
- package/src/library/services/utilities.ts +19 -0
- package/src/library/slickgrid-config.ts +10 -0
- package/src/main.ts +13 -0
- package/src/public_api.ts +1 -0
- package/src/styles.scss +178 -0
- package/test/cypress/e2e/example01.cy.ts +367 -0
- package/test/cypress/e2e/example02.cy.ts +60 -0
- package/test/cypress/e2e/example03.cy.ts +268 -0
- package/test/cypress/e2e/example04.cy.ts +254 -0
- package/test/cypress/e2e/example05.cy.ts +804 -0
- package/test/cypress/e2e/example06.cy.ts +890 -0
- package/test/cypress/e2e/example07.cy.ts +384 -0
- package/test/cypress/e2e/example08.cy.ts +190 -0
- package/test/cypress/e2e/example09.cy.ts +392 -0
- package/test/cypress/e2e/example10.cy.ts +650 -0
- package/test/cypress/e2e/example11.cy.ts +86 -0
- package/test/cypress/e2e/example12.cy.ts +269 -0
- package/test/cypress/e2e/example13.cy.ts +246 -0
- package/test/cypress/e2e/example14.cy.ts +122 -0
- package/test/cypress/e2e/example15.cy.ts +598 -0
- package/test/cypress/e2e/example16.cy.ts +427 -0
- package/test/cypress/e2e/example17.cy.ts +83 -0
- package/test/cypress/e2e/example18.cy.ts +431 -0
- package/test/cypress/e2e/example19.cy.ts +263 -0
- package/test/cypress/e2e/example20.cy.ts +264 -0
- package/test/cypress/e2e/example21.cy.ts +77 -0
- package/test/cypress/e2e/example22.cy.ts +94 -0
- package/test/cypress/e2e/example23.cy.ts +259 -0
- package/test/cypress/e2e/example24.cy.ts +707 -0
- package/test/cypress/e2e/example25.cy.ts +193 -0
- package/test/cypress/e2e/example26.cy.ts +111 -0
- package/test/cypress/e2e/example27.cy.ts +261 -0
- package/test/cypress/e2e/example28.cy.ts +740 -0
- package/test/cypress/e2e/example29.cy.ts +30 -0
- package/test/cypress/e2e/example30.cy.ts +757 -0
- package/test/cypress/e2e/example31.cy.ts +69 -0
- package/test/cypress/e2e/example32.cy.ts +272 -0
- package/test/cypress/e2e/example33.cy.ts +278 -0
- package/test/cypress/e2e/example34.cy.ts +84 -0
- package/test/cypress/e2e/example35.cy.ts +178 -0
- package/test/cypress/e2e/example36.cy.ts +219 -0
- package/test/cypress/e2e/example37.cy.ts +52 -0
- package/test/cypress/e2e/example38.cy.ts +160 -0
- package/test/cypress/e2e/example39.cy.ts +150 -0
- package/test/cypress/e2e/example40.cy.ts +126 -0
- package/test/cypress/e2e/example41.cy.ts +90 -0
- package/test/cypress/e2e/example42.cy.ts +82 -0
- package/test/cypress/e2e/example43.cy.ts +482 -0
- package/test/cypress/e2e/example44.cy.ts +458 -0
- package/test/cypress/e2e/example45.cy.ts +455 -0
- package/test/cypress/e2e/home.cy.ts +7 -0
- package/test/cypress/fixtures/example.json +5 -0
- package/test/cypress/plugins/index.ts +17 -0
- package/test/cypress/plugins/utilities.ts +28 -0
- package/test/cypress/support/commands.ts +88 -0
- package/test/cypress/support/common.ts +47 -0
- package/test/cypress/support/drag.ts +101 -0
- package/test/cypress/support/index.ts +20 -0
- package/test/cypress/tsconfig.json +9 -0
- package/test/cypress.config.ts +34 -0
- package/test/mockSlickEvent.ts +77 -0
- package/test/rxjsResourceStub.ts +69 -0
- package/test/test-setup.ts +6 -0
- package/test/translateServiceStub.ts +230 -0
- package/test/translaterServiceStub.ts +239 -0
- package/test/tsconfig.json +17 -0
- package/test/vitest-global-mocks.ts +41 -0
- package/test/vitest-global-setup.ts +3 -0
- package/test/vitest-pretest.ts +5 -0
- package/tsconfig.app.json +14 -0
- package/tsconfig.json +31 -0
- package/tsconfig.spec.json +11 -0
- package/types/sortablejs.d.ts +4 -0
- package/vite.config.mts +51 -0
- package/app/modules/angular-slickgrid/models/index.d.ts +0 -5
- package/esm2022/angular-slickgrid.mjs +0 -5
- package/esm2022/app/modules/angular-slickgrid/components/angular-slickgrid.component.mjs +0 -1407
- package/esm2022/app/modules/angular-slickgrid/constants.mjs +0 -96
- package/esm2022/app/modules/angular-slickgrid/extensions/index.mjs +0 -2
- package/esm2022/app/modules/angular-slickgrid/extensions/slickRowDetailView.mjs +0 -304
- package/esm2022/app/modules/angular-slickgrid/global-grid-options.mjs +0 -263
- package/esm2022/app/modules/angular-slickgrid/index.mjs +0 -8
- package/esm2022/app/modules/angular-slickgrid/models/angularComponentOutput.interface.mjs +0 -2
- package/esm2022/app/modules/angular-slickgrid/models/angularGridInstance.interface.mjs +0 -2
- package/esm2022/app/modules/angular-slickgrid/models/externalTestingDependencies.interface.mjs +0 -2
- package/esm2022/app/modules/angular-slickgrid/models/gridOption.interface.mjs +0 -2
- package/esm2022/app/modules/angular-slickgrid/models/index.mjs +0 -6
- package/esm2022/app/modules/angular-slickgrid/models/rowDetailView.interface.mjs +0 -2
- package/esm2022/app/modules/angular-slickgrid/modules/angular-slickgrid.module.mjs +0 -32
- package/esm2022/app/modules/angular-slickgrid/services/angularUtil.service.mjs +0 -88
- package/esm2022/app/modules/angular-slickgrid/services/container.service.mjs +0 -27
- package/esm2022/app/modules/angular-slickgrid/services/index.mjs +0 -5
- package/esm2022/app/modules/angular-slickgrid/services/translater.service.mjs +0 -45
- package/esm2022/app/modules/angular-slickgrid/services/utilities.mjs +0 -19
- package/esm2022/app/modules/angular-slickgrid/slickgrid-config.mjs +0 -8
- package/esm2022/public_api.mjs +0 -2
- package/fesm2022/angular-slickgrid.mjs.map +0 -1
- package/public_api.d.ts +0 -1
- /package/{index.d.ts → dist/index.d.ts} +0 -0
- /package/{app/modules/angular-slickgrid → dist/library}/constants.d.ts +0 -0
- /package/{app/modules/angular-slickgrid → dist/library}/extensions/index.d.ts +0 -0
- /package/{app/modules/angular-slickgrid → dist/library}/global-grid-options.d.ts +0 -0
- /package/{app/modules/angular-slickgrid → dist/library}/index.d.ts +0 -0
- /package/{app/modules/angular-slickgrid → dist/library}/models/angularComponentOutput.interface.d.ts +0 -0
- /package/{app/modules/angular-slickgrid → dist/library}/models/externalTestingDependencies.interface.d.ts +0 -0
- /package/{app/modules/angular-slickgrid → dist/library}/models/gridOption.interface.d.ts +0 -0
- /package/{app/modules/angular-slickgrid → dist/library}/services/angularUtil.service.d.ts +0 -0
- /package/{app/modules/angular-slickgrid → dist/library}/services/container.service.d.ts +0 -0
- /package/{app/modules/angular-slickgrid → dist/library}/services/index.d.ts +0 -0
- /package/{app/modules/angular-slickgrid → dist/library}/services/translater.service.d.ts +0 -0
- /package/{app/modules/angular-slickgrid → dist/library}/services/utilities.d.ts +0 -0
- /package/{app/modules/angular-slickgrid → dist/library}/slickgrid-config.d.ts +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { unsubscribeAll, createDomElement, SlickRowSelectionModel, SlickEventData, castObservableToPromise, addToArrayWhenNotExists,
|
|
1
|
+
import { unsubscribeAll, createDomElement, SlickRowSelectionModel, SlickEventData, castObservableToPromise, addToArrayWhenNotExists, DelimiterType, EventNamingStyle, Filters, SlickEventHandler, SlickgridConfig as SlickgridConfig$1, BackendUtilityService, GridEventService, SharedService, CollectionService, ExtensionUtility, FilterFactory, FilterService, ResizerService, SortService, TreeDataService, PaginationService, ExtensionService, GridStateService, GridService, HeaderGroupingService, emptyElement, SlickGroupItemMetadataProvider, SlickDataView, autoAddEditorFormatterToColumnsWithEditor, SlickGrid, ExtensionName, isColumnDateType } from '@slickgrid-universal/common';
|
|
2
2
|
export * from '@slickgrid-universal/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
4
|
import { Injectable, Optional, EventEmitter, ContentChild, Input, Output, Inject, Component, NgModule } from '@angular/core';
|
|
@@ -68,9 +68,7 @@ class AngularUtilService {
|
|
|
68
68
|
// when user provides the DOM element target, we will read the new Component html and use it to replace the target html
|
|
69
69
|
if (targetElement && domElem) {
|
|
70
70
|
targetElement.innerHTML =
|
|
71
|
-
typeof createCompOptions?.sanitizer === 'function'
|
|
72
|
-
? createCompOptions.sanitizer(domElem.innerHTML || '')
|
|
73
|
-
: domElem.innerHTML;
|
|
71
|
+
typeof createCompOptions?.sanitizer === 'function' ? createCompOptions.sanitizer(domElem.innerHTML || '') : domElem.innerHTML;
|
|
74
72
|
}
|
|
75
73
|
}
|
|
76
74
|
return { componentRef, domElement: domElem };
|
|
@@ -95,10 +93,10 @@ class AngularUtilService {
|
|
|
95
93
|
}
|
|
96
94
|
return componentOutput;
|
|
97
95
|
}
|
|
98
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
99
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
96
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AngularUtilService, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
97
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AngularUtilService });
|
|
100
98
|
}
|
|
101
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
99
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AngularUtilService, decorators: [{
|
|
102
100
|
type: Injectable
|
|
103
101
|
}], ctorParameters: () => [{ type: i0.ViewContainerRef }] });
|
|
104
102
|
|
|
@@ -120,10 +118,10 @@ class ContainerService {
|
|
|
120
118
|
this.dependencies.push({ key, instance });
|
|
121
119
|
}
|
|
122
120
|
}
|
|
123
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
124
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
121
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: ContainerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
122
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: ContainerService });
|
|
125
123
|
}
|
|
126
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
124
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: ContainerService, decorators: [{
|
|
127
125
|
type: Injectable
|
|
128
126
|
}] });
|
|
129
127
|
|
|
@@ -159,10 +157,10 @@ class TranslaterService {
|
|
|
159
157
|
translate(translationKey) {
|
|
160
158
|
return this.translateService?.instant?.(translationKey || ' ');
|
|
161
159
|
}
|
|
162
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
163
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
160
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: TranslaterService, deps: [{ token: i1.TranslateService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
161
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: TranslaterService });
|
|
164
162
|
}
|
|
165
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: TranslaterService, decorators: [{
|
|
166
164
|
type: Injectable
|
|
167
165
|
}], ctorParameters: () => [{ type: i1.TranslateService, decorators: [{
|
|
168
166
|
type: Optional
|
|
@@ -387,7 +385,7 @@ class SlickRowDetailView extends SlickRowDetailView$1 {
|
|
|
387
385
|
addon: this,
|
|
388
386
|
grid: this._grid,
|
|
389
387
|
dataView: this.dataView,
|
|
390
|
-
|
|
388
|
+
parentRef: this.rowDetailViewOptions?.parentRef,
|
|
391
389
|
}, {
|
|
392
390
|
sanitizer: this._grid.sanitizeHtmlString,
|
|
393
391
|
});
|
|
@@ -431,7 +429,7 @@ class SlickRowDetailView extends SlickRowDetailView$1 {
|
|
|
431
429
|
* @param item
|
|
432
430
|
*/
|
|
433
431
|
notifyTemplate(item) {
|
|
434
|
-
this.onAsyncResponse.notify({ item
|
|
432
|
+
this.onAsyncResponse.notify({ item }, new SlickEventData(), this);
|
|
435
433
|
}
|
|
436
434
|
/**
|
|
437
435
|
* On Processing, we will notify the plugin with the new item detail once backend server call completes
|
|
@@ -575,7 +573,7 @@ const GlobalGridOptions = {
|
|
|
575
573
|
defaultBackendServiceFilterTypingDebounce: 500,
|
|
576
574
|
defaultColumnSortFieldId: 'id',
|
|
577
575
|
defaultFilterPlaceholder: '🔎︎',
|
|
578
|
-
defaultFilterRangeOperator:
|
|
576
|
+
defaultFilterRangeOperator: 'RangeInclusive',
|
|
579
577
|
editable: false,
|
|
580
578
|
enableAutoResize: true,
|
|
581
579
|
enableAutoSizeColumns: true,
|
|
@@ -610,7 +608,7 @@ const GlobalGridOptions = {
|
|
|
610
608
|
addGroupIndentation: true,
|
|
611
609
|
exportWithFormatter: false,
|
|
612
610
|
filename: 'export',
|
|
613
|
-
format:
|
|
611
|
+
format: 'xlsx',
|
|
614
612
|
groupingColumnHeaderTitle: 'Group By',
|
|
615
613
|
groupCollapsedSymbol: '⮞',
|
|
616
614
|
groupExpandedSymbol: '⮟',
|
|
@@ -621,7 +619,7 @@ const GlobalGridOptions = {
|
|
|
621
619
|
delimiter: DelimiterType.comma,
|
|
622
620
|
exportWithFormatter: false,
|
|
623
621
|
filename: 'export',
|
|
624
|
-
format:
|
|
622
|
+
format: 'csv',
|
|
625
623
|
groupingColumnHeaderTitle: 'Group By',
|
|
626
624
|
groupingAggregatorRowText: '',
|
|
627
625
|
sanitizeDataExport: false,
|
|
@@ -727,6 +725,7 @@ const GlobalGridOptions = {
|
|
|
727
725
|
maxItemToInspectSingleColumnWidthByContent: 5000,
|
|
728
726
|
widthToRemoveFromExceededWidthReadjustment: 50,
|
|
729
727
|
},
|
|
728
|
+
rowTopOffsetRenderType: 'transform',
|
|
730
729
|
treeDataOptions: {
|
|
731
730
|
exportIndentMarginLeft: 5,
|
|
732
731
|
exportIndentationLeadingChar: '͏͏͏͏͏͏͏͏͏·',
|
|
@@ -805,6 +804,7 @@ class Constants {
|
|
|
805
804
|
TEXT_LAST_UPDATE: 'Last Update',
|
|
806
805
|
TEXT_LESS_THAN: 'Less than',
|
|
807
806
|
TEXT_LESS_THAN_OR_EQUAL_TO: 'Less than or equal to',
|
|
807
|
+
TEXT_LOADING: 'Loading...',
|
|
808
808
|
TEXT_NO_ELEMENTS_FOUND: 'Aucun élément trouvé',
|
|
809
809
|
TEXT_NOT_CONTAINS: 'Not contains',
|
|
810
810
|
TEXT_NOT_EQUAL_TO: 'Not equal to',
|
|
@@ -917,35 +917,35 @@ class AngularSlickgridComponent {
|
|
|
917
917
|
treeDataService;
|
|
918
918
|
customDataView;
|
|
919
919
|
gridId = '';
|
|
920
|
-
|
|
920
|
+
options = {};
|
|
921
921
|
get paginationOptions() {
|
|
922
922
|
return this._paginationOptions;
|
|
923
923
|
}
|
|
924
924
|
set paginationOptions(newPaginationOptions) {
|
|
925
925
|
if (newPaginationOptions && this._paginationOptions) {
|
|
926
|
-
this._paginationOptions = { ...this.
|
|
926
|
+
this._paginationOptions = { ...this.options.pagination, ...this._paginationOptions, ...newPaginationOptions };
|
|
927
927
|
}
|
|
928
928
|
else {
|
|
929
929
|
this._paginationOptions = newPaginationOptions;
|
|
930
930
|
}
|
|
931
|
-
this.
|
|
932
|
-
this.paginationService.updateTotalItems(this.
|
|
931
|
+
this.options.pagination = this._paginationOptions ?? this.options.pagination;
|
|
932
|
+
this.paginationService.updateTotalItems(this.options.pagination?.totalItems ?? 0, true);
|
|
933
933
|
}
|
|
934
|
-
get
|
|
934
|
+
get columns() {
|
|
935
935
|
return this._columnDefinitions;
|
|
936
936
|
}
|
|
937
|
-
set
|
|
938
|
-
this._columnDefinitions =
|
|
937
|
+
set columns(columns) {
|
|
938
|
+
this._columnDefinitions = columns;
|
|
939
939
|
if (this._isGridInitialized) {
|
|
940
|
-
this.updateColumnDefinitionsList(
|
|
940
|
+
this.updateColumnDefinitionsList(columns);
|
|
941
941
|
}
|
|
942
|
-
if (
|
|
943
|
-
this.copyColumnWidthsReference(
|
|
942
|
+
if (columns.length > 0) {
|
|
943
|
+
this.copyColumnWidthsReference(columns);
|
|
944
944
|
}
|
|
945
945
|
}
|
|
946
946
|
// make the columnDefinitions a 2-way binding so that plugin adding cols
|
|
947
947
|
// are synched on user's side as well (RowMove, RowDetail, RowSelections)
|
|
948
|
-
|
|
948
|
+
columnsChange = new EventEmitter(true);
|
|
949
949
|
get dataset() {
|
|
950
950
|
return (this.customDataView ? this.slickGrid?.getData?.() : this.dataView?.getItems()) || [];
|
|
951
951
|
}
|
|
@@ -955,7 +955,7 @@ class AngularSlickgridComponent {
|
|
|
955
955
|
let data = newDataset;
|
|
956
956
|
// when Tree Data is enabled and we don't yet have the hierarchical dataset filled, we can force a convert+sort of the array
|
|
957
957
|
if (this.slickGrid &&
|
|
958
|
-
this.
|
|
958
|
+
this.options?.enableTreeData &&
|
|
959
959
|
Array.isArray(newDataset) &&
|
|
960
960
|
(newDataset.length > 0 || newDataset.length !== prevDatasetLn || !isDatasetEqual)) {
|
|
961
961
|
this._isDatasetHierarchicalInitialized = false;
|
|
@@ -966,7 +966,7 @@ class AngularSlickgridComponent {
|
|
|
966
966
|
this._currentDatasetLength = (newDataset || []).length;
|
|
967
967
|
// expand/autofit columns on first page load
|
|
968
968
|
// we can assume that if the prevDataset was empty then we are on first load
|
|
969
|
-
if (this.slickGrid && this.
|
|
969
|
+
if (this.slickGrid && this.options?.autoFitColumnsOnFirstLoad && prevDatasetLn === 0 && !this._isAutosizeColsCalled) {
|
|
970
970
|
this.slickGrid.autosizeColumns();
|
|
971
971
|
this._isAutosizeColsCalled = true;
|
|
972
972
|
}
|
|
@@ -979,7 +979,7 @@ class AngularSlickgridComponent {
|
|
|
979
979
|
const isDatasetEqual = dequal(newHierarchicalDataset, this.sharedService?.hierarchicalDataset ?? []);
|
|
980
980
|
const prevFlatDatasetLn = this._currentDatasetLength;
|
|
981
981
|
this.sharedService.hierarchicalDataset = newHierarchicalDataset;
|
|
982
|
-
if (newHierarchicalDataset && this.
|
|
982
|
+
if (newHierarchicalDataset && this.columns && this.filterService?.clearFilters) {
|
|
983
983
|
this.filterService.clearFilters();
|
|
984
984
|
}
|
|
985
985
|
// when a hierarchical dataset is set afterward, we can reset the flat dataset and call a tree data sort that will overwrite the flat dataset
|
|
@@ -1000,13 +1000,13 @@ class AngularSlickgridComponent {
|
|
|
1000
1000
|
return this.elm;
|
|
1001
1001
|
}
|
|
1002
1002
|
get backendService() {
|
|
1003
|
-
return this.
|
|
1003
|
+
return this.options?.backendServiceApi?.service;
|
|
1004
1004
|
}
|
|
1005
1005
|
get eventHandler() {
|
|
1006
1006
|
return this._eventHandler;
|
|
1007
1007
|
}
|
|
1008
1008
|
get gridContainerElement() {
|
|
1009
|
-
return document.querySelector(`#${this.
|
|
1009
|
+
return document.querySelector(`#${this.options.gridContainerId || ''}`);
|
|
1010
1010
|
}
|
|
1011
1011
|
/** GETTER to know if dataset was initialized or not */
|
|
1012
1012
|
get isDatasetInitialized() {
|
|
@@ -1095,18 +1095,18 @@ class AngularSlickgridComponent {
|
|
|
1095
1095
|
this.containerService.registerInstance('TreeDataService', this.treeDataService);
|
|
1096
1096
|
}
|
|
1097
1097
|
ngAfterViewInit() {
|
|
1098
|
-
if (!this.
|
|
1099
|
-
throw new Error('Using `<angular-slickgrid>` requires [
|
|
1098
|
+
if (!this.columns) {
|
|
1099
|
+
throw new Error('Using `<angular-slickgrid>` requires [columns], it seems that you might have forgot to provide the missing bindable input.');
|
|
1100
1100
|
}
|
|
1101
1101
|
this.initialization(this._eventHandler);
|
|
1102
1102
|
this._isGridInitialized = true;
|
|
1103
1103
|
// recheck the empty warning message after grid is shown so that it works in every use case
|
|
1104
|
-
if (this.
|
|
1104
|
+
if (this.options?.enableEmptyDataWarningMessage && Array.isArray(this.dataset)) {
|
|
1105
1105
|
const finalTotalCount = this.dataset.length;
|
|
1106
1106
|
this.displayEmptyDataWarning(finalTotalCount < 1);
|
|
1107
1107
|
}
|
|
1108
1108
|
// add dark mode CSS class when enabled
|
|
1109
|
-
if (this.
|
|
1109
|
+
if (this.options.darkMode) {
|
|
1110
1110
|
this.setDarkMode(true);
|
|
1111
1111
|
}
|
|
1112
1112
|
this.suggestDateParsingWhenHelpful();
|
|
@@ -1149,9 +1149,9 @@ class AngularSlickgridComponent {
|
|
|
1149
1149
|
}
|
|
1150
1150
|
this.backendServiceApi = undefined;
|
|
1151
1151
|
}
|
|
1152
|
-
if (this.
|
|
1153
|
-
for (const prop of Object.keys(this.
|
|
1154
|
-
this.
|
|
1152
|
+
if (this.columns) {
|
|
1153
|
+
for (const prop of Object.keys(this.columns)) {
|
|
1154
|
+
this.columns[prop] = null;
|
|
1155
1155
|
}
|
|
1156
1156
|
}
|
|
1157
1157
|
for (const prop of Object.keys(this.sharedService)) {
|
|
@@ -1181,7 +1181,7 @@ class AngularSlickgridComponent {
|
|
|
1181
1181
|
this._registeredResources = [];
|
|
1182
1182
|
}
|
|
1183
1183
|
emptyGridContainerElm() {
|
|
1184
|
-
const gridContainerId = this.
|
|
1184
|
+
const gridContainerId = this.options?.gridContainerId || 'grid1';
|
|
1185
1185
|
const gridContainerElm = document.querySelector(`#${gridContainerId}`);
|
|
1186
1186
|
emptyElement(gridContainerElm);
|
|
1187
1187
|
}
|
|
@@ -1213,33 +1213,33 @@ class AngularSlickgridComponent {
|
|
|
1213
1213
|
}
|
|
1214
1214
|
}
|
|
1215
1215
|
initialization(eventHandler) {
|
|
1216
|
-
this.
|
|
1216
|
+
this.options.translater = this.translaterService;
|
|
1217
1217
|
this._eventHandler = eventHandler;
|
|
1218
1218
|
this._isAutosizeColsCalled = false;
|
|
1219
1219
|
// when detecting a frozen grid, we'll automatically enable the mousewheel scroll handler so that we can scroll from both left/right frozen containers
|
|
1220
|
-
if (this.
|
|
1221
|
-
((this.
|
|
1222
|
-
(this.
|
|
1223
|
-
this.
|
|
1224
|
-
this.
|
|
1220
|
+
if (this.options &&
|
|
1221
|
+
((this.options.frozenRow !== undefined && this.options.frozenRow >= 0) ||
|
|
1222
|
+
(this.options.frozenColumn !== undefined && this.options.frozenColumn >= 0)) &&
|
|
1223
|
+
this.options.enableMouseWheelScrollHandler === undefined) {
|
|
1224
|
+
this.options.enableMouseWheelScrollHandler = true;
|
|
1225
1225
|
}
|
|
1226
|
-
this._eventPubSubService.eventNamingStyle = this.
|
|
1226
|
+
this._eventPubSubService.eventNamingStyle = this.options?.eventNamingStyle ?? EventNamingStyle.camelCase;
|
|
1227
1227
|
this._eventPubSubService.publish('onBeforeGridCreate', true);
|
|
1228
1228
|
// make sure the dataset is initialized (if not it will throw an error that it cannot getLength of null)
|
|
1229
1229
|
this._dataset ||= [];
|
|
1230
|
-
this.
|
|
1231
|
-
this._paginationOptions = this.
|
|
1232
|
-
this.locales = this.
|
|
1233
|
-
this.backendServiceApi = this.
|
|
1230
|
+
this.options = this.mergeGridOptions(this.options);
|
|
1231
|
+
this._paginationOptions = this.options?.pagination;
|
|
1232
|
+
this.locales = this.options?.locales ?? Constants.locales;
|
|
1233
|
+
this.backendServiceApi = this.options?.backendServiceApi;
|
|
1234
1234
|
this._isLocalGrid = !this.backendServiceApi; // considered a local grid if it doesn't have a backend service set
|
|
1235
1235
|
// unless specified, we'll create an internal postProcess callback (currently only available for GraphQL)
|
|
1236
|
-
if (this.
|
|
1237
|
-
this.createBackendApiInternalPostProcessCallback(this.
|
|
1236
|
+
if (this.options.backendServiceApi && !this.options.backendServiceApi?.disableInternalPostProcess) {
|
|
1237
|
+
this.createBackendApiInternalPostProcessCallback(this.options);
|
|
1238
1238
|
}
|
|
1239
1239
|
if (!this.customDataView) {
|
|
1240
|
-
const dataviewInlineFilters = this.
|
|
1241
|
-
let dataViewOptions = { ...this.
|
|
1242
|
-
if (this.
|
|
1240
|
+
const dataviewInlineFilters = this.options?.dataView?.inlineFilters ?? false;
|
|
1241
|
+
let dataViewOptions = { ...this.options.dataView, inlineFilters: dataviewInlineFilters };
|
|
1242
|
+
if (this.options.draggableGrouping || this.options.enableGrouping) {
|
|
1243
1243
|
this.groupItemMetadataProvider = new SlickGroupItemMetadataProvider();
|
|
1244
1244
|
this.sharedService.groupItemMetadataProvider = this.groupItemMetadataProvider;
|
|
1245
1245
|
dataViewOptions = { ...dataViewOptions, groupItemMetadataProvider: this.groupItemMetadataProvider };
|
|
@@ -1253,8 +1253,8 @@ class AngularSlickgridComponent {
|
|
|
1253
1253
|
// prepare and load all SlickGrid editors, if an async editor is found then we'll also execute it.
|
|
1254
1254
|
this._columnDefinitions = this.loadSlickGridEditors(this._columnDefinitions || []);
|
|
1255
1255
|
// if the user wants to automatically add a Custom Editor Formatter, we need to call the auto add function again
|
|
1256
|
-
if (this.
|
|
1257
|
-
autoAddEditorFormatterToColumnsWithEditor(this._columnDefinitions, this.
|
|
1256
|
+
if (this.options.autoAddCustomEditorFormatter) {
|
|
1257
|
+
autoAddEditorFormatterToColumnsWithEditor(this._columnDefinitions, this.options.autoAddCustomEditorFormatter);
|
|
1258
1258
|
}
|
|
1259
1259
|
// save reference for all columns before they optionally become hidden/visible
|
|
1260
1260
|
this.sharedService.allColumns = this._columnDefinitions;
|
|
@@ -1263,17 +1263,17 @@ class AngularSlickgridComponent {
|
|
|
1263
1263
|
// we'll subscribe to the event and push back the change to the user so they always use full column defs array including extra cols
|
|
1264
1264
|
this.subscriptions.push(this._eventPubSubService.subscribe('onPluginColumnsChanged', (data) => {
|
|
1265
1265
|
this._columnDefinitions = data.columns;
|
|
1266
|
-
this.
|
|
1266
|
+
this.columnsChange.emit(this._columnDefinitions);
|
|
1267
1267
|
}));
|
|
1268
1268
|
// after subscribing to potential columns changed, we are ready to create these optional extensions
|
|
1269
1269
|
// when we did find some to create (RowMove, RowDetail, RowSelections), it will automatically modify column definitions (by previous subscribe)
|
|
1270
|
-
this.extensionService.createExtensionsBeforeGridCreation(this._columnDefinitions, this.
|
|
1270
|
+
this.extensionService.createExtensionsBeforeGridCreation(this._columnDefinitions, this.options);
|
|
1271
1271
|
// if user entered some Pinning/Frozen "presets", we need to apply them in the grid options
|
|
1272
|
-
if (this.
|
|
1273
|
-
this.
|
|
1272
|
+
if (this.options.presets?.pinning) {
|
|
1273
|
+
this.options = { ...this.options, ...this.options.presets.pinning };
|
|
1274
1274
|
}
|
|
1275
1275
|
// build SlickGrid Grid, also user might optionally pass a custom dataview (e.g. remote model)
|
|
1276
|
-
this.slickGrid = new SlickGrid(`#${this.gridId}`, this.customDataView || this.dataView, this._columnDefinitions, this.
|
|
1276
|
+
this.slickGrid = new SlickGrid(`#${this.gridId}`, this.customDataView || this.dataView, this._columnDefinitions, this.options, this._eventPubSubService);
|
|
1277
1277
|
this.sharedService.dataView = this.dataView;
|
|
1278
1278
|
this.sharedService.slickGrid = this.slickGrid;
|
|
1279
1279
|
this.sharedService.gridContainerElement = this.elm.nativeElement;
|
|
@@ -1281,9 +1281,9 @@ class AngularSlickgridComponent {
|
|
|
1281
1281
|
this.slickGrid.registerPlugin(this.groupItemMetadataProvider); // register GroupItemMetadataProvider when Grouping is enabled
|
|
1282
1282
|
}
|
|
1283
1283
|
this.extensionService.bindDifferentExtensions();
|
|
1284
|
-
this.bindDifferentHooks(this.slickGrid, this.
|
|
1284
|
+
this.bindDifferentHooks(this.slickGrid, this.options, this.dataView);
|
|
1285
1285
|
// when it's a frozen grid, we need to keep the frozen column id for reference if we ever show/hide column from ColumnPicker/GridMenu afterward
|
|
1286
|
-
const frozenColumnIndex = this.
|
|
1286
|
+
const frozenColumnIndex = this.options.frozenColumn !== undefined ? this.options.frozenColumn : -1;
|
|
1287
1287
|
if (frozenColumnIndex >= 0 && frozenColumnIndex <= this._columnDefinitions.length) {
|
|
1288
1288
|
this.sharedService.frozenVisibleColumnId = this._columnDefinitions[frozenColumnIndex].id || '';
|
|
1289
1289
|
}
|
|
@@ -1297,29 +1297,26 @@ class AngularSlickgridComponent {
|
|
|
1297
1297
|
this.resizerService.init(this.slickGrid, this.gridContainerElement);
|
|
1298
1298
|
}
|
|
1299
1299
|
// user could show a custom footer with the data metrics (dataset length and last updated timestamp)
|
|
1300
|
-
if (!this.
|
|
1301
|
-
this.
|
|
1302
|
-
this.gridOptions.customFooterOptions &&
|
|
1303
|
-
this.gridContainerElement) {
|
|
1304
|
-
this.slickFooter = new SlickFooterComponent(this.slickGrid, this.gridOptions.customFooterOptions, this._eventPubSubService, this.translaterService);
|
|
1300
|
+
if (!this.options.enablePagination && this.options.showCustomFooter && this.options.customFooterOptions && this.gridContainerElement) {
|
|
1301
|
+
this.slickFooter = new SlickFooterComponent(this.slickGrid, this.options.customFooterOptions, this._eventPubSubService, this.translaterService);
|
|
1305
1302
|
this.slickFooter.renderFooter(this.gridContainerElement);
|
|
1306
1303
|
}
|
|
1307
1304
|
if (!this.customDataView && this.dataView) {
|
|
1308
1305
|
// load the data in the DataView (unless it's a hierarchical dataset, if so it will be loaded after the initial tree sort)
|
|
1309
|
-
const initialDataset = this.
|
|
1306
|
+
const initialDataset = this.options?.enableTreeData ? this.sortTreeDataset(this._dataset) : this._dataset;
|
|
1310
1307
|
this.dataView.beginUpdate();
|
|
1311
|
-
this.dataView.setItems(initialDataset || [], this.
|
|
1308
|
+
this.dataView.setItems(initialDataset || [], this.options.datasetIdPropertyName ?? 'id');
|
|
1312
1309
|
this.dataView.endUpdate();
|
|
1313
1310
|
// if you don't want the items that are not visible (due to being filtered out or being on a different page)
|
|
1314
1311
|
// to stay selected, pass 'false' to the second arg
|
|
1315
|
-
if (this.slickGrid?.getSelectionModel() && this.
|
|
1312
|
+
if (this.slickGrid?.getSelectionModel() && this.options?.dataView && 'syncGridSelection' in this.options.dataView) {
|
|
1316
1313
|
// if we are using a Backend Service, we will do an extra flag check, the reason is because it might have some unintended behaviors
|
|
1317
1314
|
// with the BackendServiceApi because technically the data in the page changes the DataView on every page change.
|
|
1318
1315
|
let preservedRowSelectionWithBackend = false;
|
|
1319
|
-
if (this.
|
|
1320
|
-
preservedRowSelectionWithBackend = this.
|
|
1316
|
+
if (this.options.backendServiceApi && 'syncGridSelectionWithBackendService' in this.options.dataView) {
|
|
1317
|
+
preservedRowSelectionWithBackend = this.options.dataView.syncGridSelectionWithBackendService;
|
|
1321
1318
|
}
|
|
1322
|
-
const syncGridSelection = this.
|
|
1319
|
+
const syncGridSelection = this.options.dataView.syncGridSelection;
|
|
1323
1320
|
if (typeof syncGridSelection === 'boolean') {
|
|
1324
1321
|
let preservedRowSelection = syncGridSelection;
|
|
1325
1322
|
if (!this._isLocalGrid) {
|
|
@@ -1334,7 +1331,7 @@ class AngularSlickgridComponent {
|
|
|
1334
1331
|
}
|
|
1335
1332
|
const datasetLn = this.dataView.getLength() || this._dataset?.length || 0;
|
|
1336
1333
|
if (datasetLn > 0) {
|
|
1337
|
-
if (!this._isDatasetInitialized && (this.
|
|
1334
|
+
if (!this._isDatasetInitialized && (this.options.enableCheckboxSelector || this.options.enableRowSelection)) {
|
|
1338
1335
|
this.loadRowSelectionPresetWhenExists();
|
|
1339
1336
|
}
|
|
1340
1337
|
this.loadFilterPresetsWhenDatasetInitialized();
|
|
@@ -1351,19 +1348,19 @@ class AngularSlickgridComponent {
|
|
|
1351
1348
|
this._eventPubSubService.publish('onGridCreated', this.slickGrid);
|
|
1352
1349
|
// after the DataView is created & updated execute some processes
|
|
1353
1350
|
if (!this.customDataView) {
|
|
1354
|
-
this.executeAfterDataviewCreated(this.slickGrid, this.
|
|
1351
|
+
this.executeAfterDataviewCreated(this.slickGrid, this.options);
|
|
1355
1352
|
}
|
|
1356
1353
|
// bind resize ONLY after the dataView is ready
|
|
1357
|
-
this.bindResizeHook(this.slickGrid, this.
|
|
1354
|
+
this.bindResizeHook(this.slickGrid, this.options);
|
|
1358
1355
|
// bind the Backend Service API callback functions only after the grid is initialized
|
|
1359
1356
|
// because the preProcess() and onInit() might get triggered
|
|
1360
|
-
if (this.
|
|
1361
|
-
this.bindBackendCallbackFunctions(this.
|
|
1357
|
+
if (this.options?.backendServiceApi) {
|
|
1358
|
+
this.bindBackendCallbackFunctions(this.options);
|
|
1362
1359
|
}
|
|
1363
1360
|
// local grid, check if we need to show the Pagination
|
|
1364
1361
|
// if so then also check if there's any presets and finally initialize the PaginationService
|
|
1365
1362
|
// a local grid with Pagination presets will potentially have a different total of items, we'll need to get it from the DataView and update our total
|
|
1366
|
-
if (this.
|
|
1363
|
+
if (this.options?.enablePagination && this._isLocalGrid) {
|
|
1367
1364
|
this.showPagination = true;
|
|
1368
1365
|
this.loadLocalGridPagination(this.dataset);
|
|
1369
1366
|
}
|
|
@@ -1381,7 +1378,6 @@ class AngularSlickgridComponent {
|
|
|
1381
1378
|
gridEventService: this.gridEventService,
|
|
1382
1379
|
gridStateService: this.gridStateService,
|
|
1383
1380
|
gridService: this.gridService,
|
|
1384
|
-
groupingService: this.headerGroupingService,
|
|
1385
1381
|
headerGroupingService: this.headerGroupingService,
|
|
1386
1382
|
extensionService: this.extensionService,
|
|
1387
1383
|
paginationComponent: this.slickPagination,
|
|
@@ -1401,8 +1397,8 @@ class AngularSlickgridComponent {
|
|
|
1401
1397
|
const isSyncGridSelectionEnabled = this.gridStateService?.needToPreserveRowSelection() ?? false;
|
|
1402
1398
|
if (this.slickGrid &&
|
|
1403
1399
|
!isSyncGridSelectionEnabled &&
|
|
1404
|
-
this.
|
|
1405
|
-
(this.
|
|
1400
|
+
this.options?.backendServiceApi &&
|
|
1401
|
+
(this.options.enableRowSelection || this.options.enableCheckboxSelector)) {
|
|
1406
1402
|
this.slickGrid.setSelectedRows([]);
|
|
1407
1403
|
}
|
|
1408
1404
|
const { pageNumber, pageSize } = pagination;
|
|
@@ -1412,7 +1408,7 @@ class AngularSlickgridComponent {
|
|
|
1412
1408
|
}
|
|
1413
1409
|
}
|
|
1414
1410
|
this._eventPubSubService.publish('onGridStateChanged', {
|
|
1415
|
-
change: { newValues: { pageNumber, pageSize }, type:
|
|
1411
|
+
change: { newValues: { pageNumber, pageSize }, type: 'pagination' },
|
|
1416
1412
|
gridState: this.gridStateService.getCurrentGridState(),
|
|
1417
1413
|
});
|
|
1418
1414
|
this.cd.markForCheck();
|
|
@@ -1422,19 +1418,19 @@ class AngularSlickgridComponent {
|
|
|
1422
1418
|
* @param dataset
|
|
1423
1419
|
*/
|
|
1424
1420
|
refreshGridData(dataset, totalCount) {
|
|
1425
|
-
if (this.
|
|
1421
|
+
if (this.options?.enableEmptyDataWarningMessage && Array.isArray(dataset)) {
|
|
1426
1422
|
const finalTotalCount = totalCount || dataset.length;
|
|
1427
1423
|
this.displayEmptyDataWarning(finalTotalCount < 1);
|
|
1428
1424
|
}
|
|
1429
1425
|
if (Array.isArray(dataset) && this.slickGrid && this.dataView?.setItems) {
|
|
1430
|
-
this.dataView.setItems(dataset, this.
|
|
1431
|
-
if (!this.
|
|
1426
|
+
this.dataView.setItems(dataset, this.options.datasetIdPropertyName ?? 'id');
|
|
1427
|
+
if (!this.options.backendServiceApi && !this.options.enableTreeData) {
|
|
1432
1428
|
this.dataView.reSort();
|
|
1433
1429
|
}
|
|
1434
1430
|
if (dataset.length > 0) {
|
|
1435
1431
|
if (!this._isDatasetInitialized) {
|
|
1436
1432
|
this.loadFilterPresetsWhenDatasetInitialized();
|
|
1437
|
-
if (this.
|
|
1433
|
+
if (this.options.enableCheckboxSelector) {
|
|
1438
1434
|
this.loadRowSelectionPresetWhenExists();
|
|
1439
1435
|
}
|
|
1440
1436
|
}
|
|
@@ -1444,14 +1440,13 @@ class AngularSlickgridComponent {
|
|
|
1444
1440
|
this.slickGrid.invalidate();
|
|
1445
1441
|
}
|
|
1446
1442
|
// display the Pagination component only after calling this refresh data first, we call it here so that if we preset pagination page number it will be shown correctly
|
|
1447
|
-
this.showPagination = !!(this.
|
|
1448
|
-
(this.
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
const paginationOptions = this.setPaginationOptionsWhenPresetDefined(this.gridOptions, this._paginationOptions);
|
|
1443
|
+
this.showPagination = !!(this.options &&
|
|
1444
|
+
(this.options.enablePagination || (this.options.backendServiceApi && this.options.enablePagination === undefined)));
|
|
1445
|
+
if (this._paginationOptions && this.options?.pagination && this.options?.backendServiceApi) {
|
|
1446
|
+
const paginationOptions = this.setPaginationOptionsWhenPresetDefined(this.options, this._paginationOptions);
|
|
1452
1447
|
// when we have a totalCount use it, else we'll take it from the pagination object
|
|
1453
1448
|
// only update the total items if it's different to avoid refreshing the UI
|
|
1454
|
-
const totalRecords = totalCount !== undefined ? totalCount : this.
|
|
1449
|
+
const totalRecords = totalCount !== undefined ? totalCount : this.options?.pagination?.totalItems;
|
|
1455
1450
|
if (totalRecords !== undefined && totalRecords !== this.totalItems) {
|
|
1456
1451
|
this.totalItems = +totalRecords;
|
|
1457
1452
|
}
|
|
@@ -1465,8 +1460,8 @@ class AngularSlickgridComponent {
|
|
|
1465
1460
|
}
|
|
1466
1461
|
}
|
|
1467
1462
|
// resize the grid inside a slight timeout, in case other DOM element changed prior to the resize (like a filter/pagination changed)
|
|
1468
|
-
if (this.slickGrid && this.
|
|
1469
|
-
const delay = this.
|
|
1463
|
+
if (this.slickGrid && this.options.enableAutoResize) {
|
|
1464
|
+
const delay = this.options.autoResize && this.options.autoResize.delay;
|
|
1470
1465
|
this.resizerService.resizeGrid(delay || 10);
|
|
1471
1466
|
}
|
|
1472
1467
|
}
|
|
@@ -1507,19 +1502,19 @@ class AngularSlickgridComponent {
|
|
|
1507
1502
|
* We will re-render the grid so that the new header and data shows up correctly.
|
|
1508
1503
|
* If using i18n, we also need to trigger a re-translate of the column headers
|
|
1509
1504
|
*/
|
|
1510
|
-
updateColumnDefinitionsList(
|
|
1505
|
+
updateColumnDefinitionsList(newColumns) {
|
|
1511
1506
|
// map the Editor model to editorClass and load editor collectionAsync
|
|
1512
|
-
|
|
1513
|
-
if (this.
|
|
1514
|
-
this.extensionService.translateColumnHeaders(undefined,
|
|
1507
|
+
newColumns = this.loadSlickGridEditors(newColumns);
|
|
1508
|
+
if (this.options.enableTranslate) {
|
|
1509
|
+
this.extensionService.translateColumnHeaders(undefined, newColumns);
|
|
1515
1510
|
}
|
|
1516
1511
|
else {
|
|
1517
|
-
this.extensionService.renderColumnHeaders(
|
|
1512
|
+
this.extensionService.renderColumnHeaders(newColumns, true);
|
|
1518
1513
|
}
|
|
1519
|
-
if (this.
|
|
1514
|
+
if (this.options?.enableAutoSizeColumns) {
|
|
1520
1515
|
this.slickGrid.autosizeColumns();
|
|
1521
1516
|
}
|
|
1522
|
-
else if (this.
|
|
1517
|
+
else if (this.options?.enableAutoResizeColumnsByCellContent && this.resizerService?.resizeColumnsByCellContent) {
|
|
1523
1518
|
this.resizerService.resizeColumnsByCellContent();
|
|
1524
1519
|
}
|
|
1525
1520
|
}
|
|
@@ -1530,7 +1525,7 @@ class AngularSlickgridComponent {
|
|
|
1530
1525
|
showHeaderRow(showing = true) {
|
|
1531
1526
|
this.slickGrid.setHeaderRowVisibility(showing);
|
|
1532
1527
|
if (showing === true && this._isGridInitialized) {
|
|
1533
|
-
this.slickGrid.setColumns(this.
|
|
1528
|
+
this.slickGrid.setColumns(this.columns);
|
|
1534
1529
|
}
|
|
1535
1530
|
return showing;
|
|
1536
1531
|
}
|
|
@@ -1548,8 +1543,8 @@ class AngularSlickgridComponent {
|
|
|
1548
1543
|
* Loop through all column definitions and copy the original optional `width` properties optionally provided by the user.
|
|
1549
1544
|
* We will use this when doing a resize by cell content, if user provided a `width` it won't override it.
|
|
1550
1545
|
*/
|
|
1551
|
-
copyColumnWidthsReference(
|
|
1552
|
-
|
|
1546
|
+
copyColumnWidthsReference(columns) {
|
|
1547
|
+
columns.forEach((col) => (col.originalWidth = col.width));
|
|
1553
1548
|
}
|
|
1554
1549
|
bindDifferentHooks(grid, gridOptions, dataView) {
|
|
1555
1550
|
// on locale change, we have to manually translate the Headers, GridMenu
|
|
@@ -1632,8 +1627,8 @@ class AngularSlickgridComponent {
|
|
|
1632
1627
|
this.handleOnItemCountChanged(dataView.getFilteredItemCount() || 0, args.itemCount);
|
|
1633
1628
|
// when user has resize by content enabled, we'll force a full width calculation since we change our entire dataset
|
|
1634
1629
|
if (args.itemCount > 0 &&
|
|
1635
|
-
(this.
|
|
1636
|
-
this.resizerService.resizeColumnsByCellContent(!this.
|
|
1630
|
+
(this.options.autosizeColumnsByCellContentOnFirstLoad || this.options.enableAutoResizeColumnsByCellContent)) {
|
|
1631
|
+
this.resizerService.resizeColumnsByCellContent(!this.options?.resizeByContentOnlyOnFirstLoad);
|
|
1637
1632
|
}
|
|
1638
1633
|
});
|
|
1639
1634
|
if (gridOptions?.enableFiltering && !gridOptions.enableRowDetailView) {
|
|
@@ -1649,17 +1644,6 @@ class AngularSlickgridComponent {
|
|
|
1649
1644
|
});
|
|
1650
1645
|
}
|
|
1651
1646
|
}
|
|
1652
|
-
// @deprecated @user `dataview.globalItemMetadataProvider.getRowMetadata`
|
|
1653
|
-
// did the user add a colspan callback? If so, hook it into the DataView getItemMetadata
|
|
1654
|
-
if (gridOptions?.colspanCallback && dataView && dataView.getItem && dataView.getItemMetadata) {
|
|
1655
|
-
dataView.getItemMetadata = (rowNumber) => {
|
|
1656
|
-
let callbackResult = null;
|
|
1657
|
-
if (gridOptions.colspanCallback) {
|
|
1658
|
-
callbackResult = gridOptions.colspanCallback(dataView.getItem(rowNumber));
|
|
1659
|
-
}
|
|
1660
|
-
return callbackResult;
|
|
1661
|
-
};
|
|
1662
|
-
}
|
|
1663
1647
|
}
|
|
1664
1648
|
bindBackendCallbackFunctions(gridOptions) {
|
|
1665
1649
|
const backendApi = gridOptions.backendServiceApi;
|
|
@@ -1672,19 +1656,13 @@ class AngularSlickgridComponent {
|
|
|
1672
1656
|
// if user entered some any "presets", we need to reflect them all in the grid
|
|
1673
1657
|
if (gridOptions?.presets) {
|
|
1674
1658
|
// Filters "presets"
|
|
1675
|
-
if (backendApiService.updateFilters &&
|
|
1676
|
-
Array.isArray(gridOptions.presets.filters) &&
|
|
1677
|
-
gridOptions.presets.filters.length > 0) {
|
|
1659
|
+
if (backendApiService.updateFilters && Array.isArray(gridOptions.presets.filters) && gridOptions.presets.filters.length > 0) {
|
|
1678
1660
|
backendApiService.updateFilters(gridOptions.presets.filters, true);
|
|
1679
1661
|
}
|
|
1680
1662
|
// Sorters "presets"
|
|
1681
|
-
if (backendApiService.updateSorters &&
|
|
1682
|
-
Array.isArray(gridOptions.presets.sorters) &&
|
|
1683
|
-
gridOptions.presets.sorters.length > 0) {
|
|
1663
|
+
if (backendApiService.updateSorters && Array.isArray(gridOptions.presets.sorters) && gridOptions.presets.sorters.length > 0) {
|
|
1684
1664
|
// when using multi-column sort, we can have multiple but on single sort then only grab the first sort provided
|
|
1685
|
-
const sortColumns = this.gridOptions.
|
|
1686
|
-
? gridOptions.presets.sorters
|
|
1687
|
-
: gridOptions.presets.sorters.slice(0, 1);
|
|
1665
|
+
const sortColumns = this.options.multiColumnSort ? gridOptions.presets.sorters : gridOptions.presets.sorters.slice(0, 1);
|
|
1688
1666
|
backendApiService.updateSorters(undefined, sortColumns);
|
|
1689
1667
|
}
|
|
1690
1668
|
// Pagination "presets"
|
|
@@ -1714,7 +1692,7 @@ class AngularSlickgridComponent {
|
|
|
1714
1692
|
backendApi.preProcess();
|
|
1715
1693
|
}
|
|
1716
1694
|
// the processes can be a Promise (like Http)
|
|
1717
|
-
const totalItems = this.
|
|
1695
|
+
const totalItems = this.options?.pagination?.totalItems ?? 0;
|
|
1718
1696
|
if (process instanceof Promise) {
|
|
1719
1697
|
process
|
|
1720
1698
|
.then((processResult) => backendUtilityService.executeBackendProcessesCallback(startTime, processResult, backendApi, totalItems))
|
|
@@ -1736,9 +1714,9 @@ class AngularSlickgridComponent {
|
|
|
1736
1714
|
}
|
|
1737
1715
|
addBackendInfiniteScrollCallback() {
|
|
1738
1716
|
if (this.slickGrid &&
|
|
1739
|
-
this.
|
|
1717
|
+
this.options.backendServiceApi &&
|
|
1740
1718
|
this.hasBackendInfiniteScroll() &&
|
|
1741
|
-
!this.
|
|
1719
|
+
!this.options.backendServiceApi?.onScrollEnd) {
|
|
1742
1720
|
const onScrollEnd = () => {
|
|
1743
1721
|
this.backendUtilityService.setInfiniteScrollBottomHit(true);
|
|
1744
1722
|
// even if we're not showing pagination, we still use pagination service behind the scene
|
|
@@ -1750,7 +1728,7 @@ class AngularSlickgridComponent {
|
|
|
1750
1728
|
}
|
|
1751
1729
|
});
|
|
1752
1730
|
};
|
|
1753
|
-
this.
|
|
1731
|
+
this.options.backendServiceApi.onScrollEnd = onScrollEnd;
|
|
1754
1732
|
// subscribe to SlickGrid onScroll to determine when reaching the end of the scroll bottom position
|
|
1755
1733
|
// run onScrollEnd() method when that happens
|
|
1756
1734
|
this._eventHandler.subscribe(this.slickGrid.onScroll, (_e, args) => {
|
|
@@ -1767,8 +1745,8 @@ class AngularSlickgridComponent {
|
|
|
1767
1745
|
});
|
|
1768
1746
|
// use postProcess to identify when scrollEnd process is finished to avoid calling the scrollEnd multiple times
|
|
1769
1747
|
// we also need to keep a ref of the user's postProcess and call it after our own postProcess
|
|
1770
|
-
const orgPostProcess = this.
|
|
1771
|
-
this.
|
|
1748
|
+
const orgPostProcess = this.options.backendServiceApi.postProcess;
|
|
1749
|
+
this.options.backendServiceApi.postProcess = (processResult) => {
|
|
1772
1750
|
this._scrollEndCalled = false;
|
|
1773
1751
|
if (orgPostProcess) {
|
|
1774
1752
|
orgPostProcess(processResult);
|
|
@@ -1802,9 +1780,7 @@ class AngularSlickgridComponent {
|
|
|
1802
1780
|
// if user entered some Sort "presets", we need to reflect them all in the DOM
|
|
1803
1781
|
if (gridOptions.enableSorting && Array.isArray(gridOptions.presets?.sorters)) {
|
|
1804
1782
|
// when using multi-column sort, we can have multiple but on single sort then only grab the first sort provided
|
|
1805
|
-
const sortColumns = this.gridOptions.
|
|
1806
|
-
? gridOptions.presets.sorters
|
|
1807
|
-
: gridOptions.presets.sorters.slice(0, 1);
|
|
1783
|
+
const sortColumns = this.options.multiColumnSort ? gridOptions.presets.sorters : gridOptions.presets.sorters.slice(0, 1);
|
|
1808
1784
|
this.sortService.loadGridSorters(sortColumns);
|
|
1809
1785
|
}
|
|
1810
1786
|
}
|
|
@@ -1822,18 +1798,18 @@ class AngularSlickgridComponent {
|
|
|
1822
1798
|
this.slickFooter.metrics = this.metrics;
|
|
1823
1799
|
}
|
|
1824
1800
|
// when using local (in-memory) dataset, we'll display a warning message when filtered data is empty
|
|
1825
|
-
if (this._isLocalGrid && this.
|
|
1801
|
+
if (this._isLocalGrid && this.options?.enableEmptyDataWarningMessage) {
|
|
1826
1802
|
this.displayEmptyDataWarning(currentPageRowItemCount === 0);
|
|
1827
1803
|
}
|
|
1828
1804
|
// when autoResize.autoHeight is enabled, we'll want to call a resize
|
|
1829
|
-
if (this.
|
|
1805
|
+
if (this.options.enableAutoResize && this.resizerService.isAutoHeightEnabled && currentPageRowItemCount > 0) {
|
|
1830
1806
|
this.resizerService.resizeGrid();
|
|
1831
1807
|
}
|
|
1832
1808
|
}
|
|
1833
1809
|
initializePaginationService(paginationOptions) {
|
|
1834
|
-
if (this.
|
|
1810
|
+
if (this.options) {
|
|
1835
1811
|
this.paginationData = {
|
|
1836
|
-
gridOptions: this.
|
|
1812
|
+
gridOptions: this.options,
|
|
1837
1813
|
paginationService: this.paginationService,
|
|
1838
1814
|
};
|
|
1839
1815
|
this.paginationService.totalItems = this.totalItems;
|
|
@@ -1842,8 +1818,8 @@ class AngularSlickgridComponent {
|
|
|
1842
1818
|
this.paginationChanged(paginationChanges);
|
|
1843
1819
|
}), this._eventPubSubService.subscribe('onPaginationVisibilityChanged', (visibility) => {
|
|
1844
1820
|
this.showPagination = visibility?.visible ?? false;
|
|
1845
|
-
if (this.
|
|
1846
|
-
this.backendUtilityService?.refreshBackendDataset(this.
|
|
1821
|
+
if (this.options?.backendServiceApi) {
|
|
1822
|
+
this.backendUtilityService?.refreshBackendDataset(this.options);
|
|
1847
1823
|
}
|
|
1848
1824
|
this.renderPagination(this.showPagination);
|
|
1849
1825
|
}));
|
|
@@ -1886,20 +1862,20 @@ class AngularSlickgridComponent {
|
|
|
1886
1862
|
/** Load any possible Columns Grid Presets */
|
|
1887
1863
|
loadColumnPresetsWhenDatasetInitialized() {
|
|
1888
1864
|
// if user entered some Columns "presets", we need to reflect them all in the grid
|
|
1889
|
-
if (Array.isArray(this.
|
|
1890
|
-
const gridPresetColumns = this.gridStateService.getAssociatedGridColumns(this.slickGrid, this.
|
|
1865
|
+
if (Array.isArray(this.options.presets?.columns) && this.options.presets.columns.length > 0) {
|
|
1866
|
+
const gridPresetColumns = this.gridStateService.getAssociatedGridColumns(this.slickGrid, this.options.presets.columns);
|
|
1891
1867
|
if (Array.isArray(gridPresetColumns) && gridPresetColumns.length > 0 && Array.isArray(this._columnDefinitions)) {
|
|
1892
1868
|
// make sure that the dynamic columns are included in presets (1.Row Move, 2. Row Selection, 3. Row Detail)
|
|
1893
|
-
if (this.
|
|
1894
|
-
const rmmColId = this.
|
|
1869
|
+
if (this.options.enableRowMoveManager) {
|
|
1870
|
+
const rmmColId = this.options?.rowMoveManager?.columnId ?? '_move';
|
|
1895
1871
|
this.insertDynamicPresetColumns(rmmColId, gridPresetColumns);
|
|
1896
1872
|
}
|
|
1897
|
-
if (this.
|
|
1898
|
-
const chkColId = this.
|
|
1873
|
+
if (this.options.enableCheckboxSelector) {
|
|
1874
|
+
const chkColId = this.options?.checkboxSelector?.columnId ?? '_checkbox_selector';
|
|
1899
1875
|
this.insertDynamicPresetColumns(chkColId, gridPresetColumns);
|
|
1900
1876
|
}
|
|
1901
|
-
if (this.
|
|
1902
|
-
const rdvColId = this.
|
|
1877
|
+
if (this.options.enableRowDetailView) {
|
|
1878
|
+
const rdvColId = this.options?.rowDetailView?.columnId ?? '_detail_selector';
|
|
1903
1879
|
this.insertDynamicPresetColumns(rdvColId, gridPresetColumns);
|
|
1904
1880
|
}
|
|
1905
1881
|
// keep copy the original optional `width` properties optionally provided by the user.
|
|
@@ -1913,12 +1889,12 @@ class AngularSlickgridComponent {
|
|
|
1913
1889
|
}
|
|
1914
1890
|
/** Load any possible Filters Grid Presets */
|
|
1915
1891
|
loadFilterPresetsWhenDatasetInitialized() {
|
|
1916
|
-
if (this.
|
|
1892
|
+
if (this.options && !this.customDataView) {
|
|
1917
1893
|
// if user entered some Filter "presets", we need to reflect them all in the DOM
|
|
1918
1894
|
// also note that a presets of Tree Data Toggling will also call this method because Tree Data toggling does work with data filtering
|
|
1919
1895
|
// (collapsing a parent will basically use Filter for hidding (aka collapsing) away the child underneat it)
|
|
1920
|
-
if (Array.isArray(this.
|
|
1921
|
-
this.filterService.populateColumnFilterSearchTermPresets(this.
|
|
1896
|
+
if (Array.isArray(this.options.presets?.filters) || Array.isArray(this.options.presets?.treeData?.toggledItems)) {
|
|
1897
|
+
this.filterService.populateColumnFilterSearchTermPresets(this.options.presets?.filters || []);
|
|
1922
1898
|
}
|
|
1923
1899
|
}
|
|
1924
1900
|
}
|
|
@@ -1928,26 +1904,24 @@ class AngularSlickgridComponent {
|
|
|
1928
1904
|
* a local grid with Pagination presets will potentially have a different total of items, we'll need to get it from the DataView and update our total
|
|
1929
1905
|
*/
|
|
1930
1906
|
loadLocalGridPagination(dataset) {
|
|
1931
|
-
if (this.
|
|
1907
|
+
if (this.options && this._paginationOptions) {
|
|
1932
1908
|
this.totalItems = Array.isArray(dataset) ? dataset.length : 0;
|
|
1933
1909
|
if (this._paginationOptions && this.dataView?.getPagingInfo) {
|
|
1934
1910
|
const slickPagingInfo = this.dataView.getPagingInfo();
|
|
1935
|
-
if (slickPagingInfo &&
|
|
1936
|
-
'totalRows' in slickPagingInfo &&
|
|
1937
|
-
this._paginationOptions.totalItems !== slickPagingInfo.totalRows) {
|
|
1911
|
+
if (slickPagingInfo && 'totalRows' in slickPagingInfo && this._paginationOptions.totalItems !== slickPagingInfo.totalRows) {
|
|
1938
1912
|
this.totalItems = slickPagingInfo.totalRows || 0;
|
|
1939
1913
|
}
|
|
1940
1914
|
}
|
|
1941
1915
|
this._paginationOptions.totalItems = this.totalItems;
|
|
1942
|
-
const paginationOptions = this.setPaginationOptionsWhenPresetDefined(this.
|
|
1916
|
+
const paginationOptions = this.setPaginationOptionsWhenPresetDefined(this.options, this._paginationOptions);
|
|
1943
1917
|
this.initializePaginationService(paginationOptions);
|
|
1944
1918
|
}
|
|
1945
1919
|
}
|
|
1946
1920
|
/** Load any Row Selections into the DataView that were presets by the user */
|
|
1947
1921
|
loadRowSelectionPresetWhenExists() {
|
|
1948
1922
|
// if user entered some Row Selections "presets"
|
|
1949
|
-
const presets = this.
|
|
1950
|
-
const enableRowSelection = this.
|
|
1923
|
+
const presets = this.options?.presets;
|
|
1924
|
+
const enableRowSelection = this.options && (this.options.enableCheckboxSelector || this.options.enableRowSelection);
|
|
1951
1925
|
if (enableRowSelection &&
|
|
1952
1926
|
this.slickGrid?.getSelectionModel() &&
|
|
1953
1927
|
presets?.rowSelection &&
|
|
@@ -1973,7 +1947,7 @@ class AngularSlickgridComponent {
|
|
|
1973
1947
|
}
|
|
1974
1948
|
}
|
|
1975
1949
|
hasBackendInfiniteScroll(gridOptions) {
|
|
1976
|
-
return !!(gridOptions || this.
|
|
1950
|
+
return !!(gridOptions || this.options).backendServiceApi?.service.options?.infiniteScroll;
|
|
1977
1951
|
}
|
|
1978
1952
|
mergeGridOptions(gridOptions) {
|
|
1979
1953
|
gridOptions.gridId = this.gridId;
|
|
@@ -2027,12 +2001,12 @@ class AngularSlickgridComponent {
|
|
|
2027
2001
|
}
|
|
2028
2002
|
/** Pre-Register any Resource that don't require SlickGrid to be instantiated (for example RxJS Resource & RowDetail) */
|
|
2029
2003
|
preRegisterResources() {
|
|
2030
|
-
this._registeredResources = this.
|
|
2004
|
+
this._registeredResources = this.options?.externalResources || [];
|
|
2031
2005
|
// Angular-Slickgrid requires RxJS, so we'll register it as the first resource
|
|
2032
2006
|
this.registerRxJsResource(new RxJsResource());
|
|
2033
|
-
if (this.
|
|
2007
|
+
if (this.options.enableRowDetailView) {
|
|
2034
2008
|
this.slickRowDetailView = new SlickRowDetailView(this.angularUtilService, this.appRef, this._eventPubSubService, this.elm.nativeElement, this.rxjs);
|
|
2035
|
-
this.slickRowDetailView.create(this.
|
|
2009
|
+
this.slickRowDetailView.create(this.columns, this.options);
|
|
2036
2010
|
this.extensionService.addExtensionToList(ExtensionName.rowDetailView, {
|
|
2037
2011
|
name: ExtensionName.rowDetailView,
|
|
2038
2012
|
instance: this.slickRowDetailView,
|
|
@@ -2056,16 +2030,16 @@ class AngularSlickgridComponent {
|
|
|
2056
2030
|
// push all other Services that we want to be registered
|
|
2057
2031
|
this._registeredResources.push(this.gridService, this.gridStateService);
|
|
2058
2032
|
// when using Grouping/DraggableGrouping/Colspan register its Service
|
|
2059
|
-
if ((this.
|
|
2060
|
-
(this.
|
|
2033
|
+
if ((this.options.createPreHeaderPanel && this.options.createTopHeaderPanel) ||
|
|
2034
|
+
(this.options.createPreHeaderPanel && !this.options.enableDraggableGrouping)) {
|
|
2061
2035
|
this._registeredResources.push(this.headerGroupingService);
|
|
2062
2036
|
}
|
|
2063
2037
|
// when using Tree Data View, register its Service
|
|
2064
|
-
if (this.
|
|
2038
|
+
if (this.options.enableTreeData) {
|
|
2065
2039
|
this._registeredResources.push(this.treeDataService);
|
|
2066
2040
|
}
|
|
2067
2041
|
// when user enables translation, we need to translate Headers on first pass & subsequently in the bindDifferentHooks
|
|
2068
|
-
if (this.
|
|
2042
|
+
if (this.options.enableTranslate) {
|
|
2069
2043
|
this.extensionService.translateColumnHeaders();
|
|
2070
2044
|
}
|
|
2071
2045
|
// also initialize (render) the empty warning component
|
|
@@ -2076,7 +2050,7 @@ class AngularSlickgridComponent {
|
|
|
2076
2050
|
this.initializeExternalResources(this._registeredResources);
|
|
2077
2051
|
// initialize RowDetail separately since we already added it to the ExtensionList via `addExtensionToList()` but not in external resources,
|
|
2078
2052
|
// because we don't want to dispose the extension/resource more than once (because externalResources/extensionList are both looping through their list to dispose of them)
|
|
2079
|
-
if (this.
|
|
2053
|
+
if (this.options.enableRowDetailView && this.slickRowDetailView) {
|
|
2080
2054
|
this.slickRowDetailView.init(this.slickGrid);
|
|
2081
2055
|
}
|
|
2082
2056
|
}
|
|
@@ -2097,9 +2071,9 @@ class AngularSlickgridComponent {
|
|
|
2097
2071
|
* @param {Boolean} shouldDisposePaginationService - when disposing the Pagination, do we also want to dispose of the Pagination Service? (defaults to True)
|
|
2098
2072
|
*/
|
|
2099
2073
|
renderPagination(showPagination = true) {
|
|
2100
|
-
if (this.slickGrid && this.
|
|
2101
|
-
if (this.
|
|
2102
|
-
const paginationComp = this.angularUtilService.createAngularComponent(this.
|
|
2074
|
+
if (this.slickGrid && this.options?.enablePagination && !this._isPaginationInitialized && showPagination) {
|
|
2075
|
+
if (this.options.customPaginationComponent) {
|
|
2076
|
+
const paginationComp = this.angularUtilService.createAngularComponent(this.options.customPaginationComponent);
|
|
2103
2077
|
this.slickPagination = paginationComp.componentRef.instance;
|
|
2104
2078
|
}
|
|
2105
2079
|
else {
|
|
@@ -2134,7 +2108,7 @@ class AngularSlickgridComponent {
|
|
|
2134
2108
|
else if (Array.isArray(flatDatasetInput) && flatDatasetInput.length > 0) {
|
|
2135
2109
|
// we need to first convert the flat dataset to a hierarchical dataset and then sort it
|
|
2136
2110
|
// we'll also add props, by mutation, required by the TreeDataService on the flat array like `__hasChildren`, `parentId` and anything else to work properly
|
|
2137
|
-
sortedDatasetResult = this.treeDataService.convertFlatParentChildToTreeDatasetAndSort(flatDatasetInput, this._columnDefinitions, this.
|
|
2111
|
+
sortedDatasetResult = this.treeDataService.convertFlatParentChildToTreeDatasetAndSort(flatDatasetInput, this._columnDefinitions, this.options);
|
|
2138
2112
|
this.sharedService.hierarchicalDataset = sortedDatasetResult.hierarchical;
|
|
2139
2113
|
flatDatasetOutput = sortedDatasetResult.flat;
|
|
2140
2114
|
}
|
|
@@ -2145,11 +2119,11 @@ class AngularSlickgridComponent {
|
|
|
2145
2119
|
return flatDatasetOutput;
|
|
2146
2120
|
}
|
|
2147
2121
|
/** Prepare and load all SlickGrid editors, if an async editor is found then we'll also execute it. */
|
|
2148
|
-
loadSlickGridEditors(
|
|
2149
|
-
if (
|
|
2122
|
+
loadSlickGridEditors(columns) {
|
|
2123
|
+
if (columns.some((col) => `${col.id}`.includes('.'))) {
|
|
2150
2124
|
console.error('[Angular-Slickgrid] Make sure that none of your Column Definition "id" property includes a dot in its name because that will cause some problems with the Editors. For example if your column definition "field" property is "user.firstName" then use "firstName" as the column "id".');
|
|
2151
2125
|
}
|
|
2152
|
-
return
|
|
2126
|
+
return columns.map((column) => {
|
|
2153
2127
|
// on every Editor that have a "collectionAsync", resolve the data and assign it to the "collection" property
|
|
2154
2128
|
if (column?.editor?.collectionAsync) {
|
|
2155
2129
|
this.loadEditorCollectionAsync(column);
|
|
@@ -2159,8 +2133,8 @@ class AngularSlickgridComponent {
|
|
|
2159
2133
|
}
|
|
2160
2134
|
suggestDateParsingWhenHelpful() {
|
|
2161
2135
|
if (this.dataView?.getItemCount() > WARN_NO_PREPARSE_DATE_SIZE &&
|
|
2162
|
-
!this.
|
|
2163
|
-
!this.
|
|
2136
|
+
!this.options.silenceWarnings &&
|
|
2137
|
+
!this.options.preParseDateColumns &&
|
|
2164
2138
|
this.slickGrid.getColumns().some((c) => isColumnDateType(c.type))) {
|
|
2165
2139
|
console.warn('[Slickgrid-Universal] For getting better perf, we suggest you enable the `preParseDateColumns` grid option, ' +
|
|
2166
2140
|
'for more info visit => https://ghiscoding.gitbook.io/angular-slickgrid/column-functionalities/sorting#pre-parse-date-columns-for-better-perf');
|
|
@@ -2183,20 +2157,20 @@ class AngularSlickgridComponent {
|
|
|
2183
2157
|
}
|
|
2184
2158
|
}
|
|
2185
2159
|
}
|
|
2186
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2187
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
2160
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AngularSlickgridComponent, deps: [{ token: AngularUtilService }, { token: i0.ApplicationRef }, { token: i0.ChangeDetectorRef }, { token: ContainerService }, { token: i0.ElementRef }, { token: i1.TranslateService, optional: true }, { token: TranslaterService, optional: true }, { token: 'config' }, { token: 'externalService' }], target: i0.ɵɵFactoryTarget.Component });
|
|
2161
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.10", type: AngularSlickgridComponent, isStandalone: false, selector: "angular-slickgrid", inputs: { customDataView: "customDataView", gridId: "gridId", options: "options", paginationOptions: "paginationOptions", columns: "columns", dataset: "dataset", datasetHierarchical: "datasetHierarchical" }, outputs: { columnsChange: "columnsChange" }, providers: [
|
|
2188
2162
|
// make everything transient (non-singleton)
|
|
2189
2163
|
AngularUtilService,
|
|
2190
2164
|
TranslaterService,
|
|
2191
2165
|
], queries: [{ propertyName: "slickgridHeader", first: true, predicate: ["slickgridHeader"], descendants: true, static: true }, { propertyName: "slickgridFooter", first: true, predicate: ["slickgridFooter"], descendants: true, static: true }], ngImport: i0, template: "<div id=\"slickGridContainer-{{ gridId }}\" class=\"gridPane\">\n <ng-container *ngTemplateOutlet=\"slickgridHeader\"></ng-container>\n <div attr.id=\"{{ gridId }}\" class=\"slickgrid-container\"></div>\n <ng-container *ngTemplateOutlet=\"slickgridFooter\"></ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], preserveWhitespaces: true });
|
|
2192
2166
|
}
|
|
2193
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2167
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AngularSlickgridComponent, decorators: [{
|
|
2194
2168
|
type: Component,
|
|
2195
2169
|
args: [{ selector: 'angular-slickgrid', providers: [
|
|
2196
2170
|
// make everything transient (non-singleton)
|
|
2197
2171
|
AngularUtilService,
|
|
2198
2172
|
TranslaterService,
|
|
2199
|
-
], template: "<div id=\"slickGridContainer-{{ gridId }}\" class=\"gridPane\">\n <ng-container *ngTemplateOutlet=\"slickgridHeader\"></ng-container>\n <div attr.id=\"{{ gridId }}\" class=\"slickgrid-container\"></div>\n <ng-container *ngTemplateOutlet=\"slickgridFooter\"></ng-container>\n</div>\n" }]
|
|
2173
|
+
], standalone: false, template: "<div id=\"slickGridContainer-{{ gridId }}\" class=\"gridPane\">\n <ng-container *ngTemplateOutlet=\"slickgridHeader\"></ng-container>\n <div attr.id=\"{{ gridId }}\" class=\"slickgrid-container\"></div>\n <ng-container *ngTemplateOutlet=\"slickgridFooter\"></ng-container>\n</div>\n" }]
|
|
2200
2174
|
}], ctorParameters: () => [{ type: AngularUtilService }, { type: i0.ApplicationRef }, { type: i0.ChangeDetectorRef }, { type: ContainerService }, { type: i0.ElementRef }, { type: i1.TranslateService, decorators: [{
|
|
2201
2175
|
type: Optional
|
|
2202
2176
|
}] }, { type: TranslaterService, decorators: [{
|
|
@@ -2211,13 +2185,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
2211
2185
|
type: Input
|
|
2212
2186
|
}], gridId: [{
|
|
2213
2187
|
type: Input
|
|
2214
|
-
}],
|
|
2188
|
+
}], options: [{
|
|
2215
2189
|
type: Input
|
|
2216
2190
|
}], paginationOptions: [{
|
|
2217
2191
|
type: Input
|
|
2218
|
-
}],
|
|
2192
|
+
}], columns: [{
|
|
2219
2193
|
type: Input
|
|
2220
|
-
}],
|
|
2194
|
+
}], columnsChange: [{
|
|
2221
2195
|
type: Output
|
|
2222
2196
|
}], dataset: [{
|
|
2223
2197
|
type: Input
|
|
@@ -2243,11 +2217,11 @@ class AngularSlickgridModule {
|
|
|
2243
2217
|
],
|
|
2244
2218
|
};
|
|
2245
2219
|
}
|
|
2246
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2247
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
2248
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
2220
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AngularSlickgridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
2221
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.10", ngImport: i0, type: AngularSlickgridModule, declarations: [AngularSlickgridComponent], imports: [CommonModule, TranslateModule], exports: [AngularSlickgridComponent] });
|
|
2222
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AngularSlickgridModule, imports: [CommonModule, TranslateModule] });
|
|
2249
2223
|
}
|
|
2250
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2224
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: AngularSlickgridModule, decorators: [{
|
|
2251
2225
|
type: NgModule,
|
|
2252
2226
|
args: [{
|
|
2253
2227
|
imports: [CommonModule, TranslateModule],
|