angular-slickgrid 9.0.0 → 9.0.2
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 +1 -1
- package/{dist/fesm2022 → fesm2022}/angular-slickgrid.mjs +16 -16
- package/package.json +27 -14
- package/.gitbook.yaml +0 -5
- package/CHANGELOG.md +0 -1691
- package/CONTRIBUTING.md +0 -17
- package/angular.json +0 -133
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/clover.xml +0 -1620
- package/coverage/coverage-final.json +0 -9
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +0 -176
- package/coverage/library/components/angular-slickgrid.component.ts.html +0 -5074
- package/coverage/library/components/index.html +0 -116
- package/coverage/library/constants.ts.html +0 -397
- package/coverage/library/extensions/index.html +0 -116
- package/coverage/library/extensions/slickRowDetailView.ts.html +0 -1261
- package/coverage/library/index.html +0 -116
- package/coverage/library/modules/angular-slickgrid.module.ts.html +0 -166
- package/coverage/library/modules/index.html +0 -116
- package/coverage/library/services/angularUtil.service.ts.html +0 -445
- package/coverage/library/services/container.service.ts.html +0 -163
- package/coverage/library/services/index.html +0 -161
- package/coverage/library/services/translater.service.ts.html +0 -199
- package/coverage/library/services/utilities.ts.html +0 -142
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -196
- package/dist/LICENSE +0 -21
- package/dist/README.md +0 -142
- package/docs/README.md +0 -5
- package/docs/TOC.md +0 -105
- package/docs/backend-services/Custom-Backend-Service.md +0 -50
- package/docs/backend-services/GraphQL.md +0 -276
- package/docs/backend-services/OData.md +0 -245
- package/docs/backend-services/graphql/GraphQL-Filtering.md +0 -156
- package/docs/backend-services/graphql/GraphQL-JSON-Result.md +0 -85
- package/docs/backend-services/graphql/GraphQL-Pagination.md +0 -77
- package/docs/backend-services/graphql/GraphQL-Sorting.md +0 -78
- package/docs/column-functionalities/cell-menu.md +0 -212
- package/docs/column-functionalities/editors/autocomplete-editor.md +0 -466
- package/docs/column-functionalities/editors/date-editor-flatpickr.md +0 -71
- package/docs/column-functionalities/editors/date-editor-vanilla-calendar.md +0 -91
- package/docs/column-functionalities/editors/longtext-editor-textarea.md +0 -80
- package/docs/column-functionalities/editors/select-dropdown-editor.md +0 -227
- package/docs/column-functionalities/editors.md +0 -604
- package/docs/column-functionalities/filters/autocomplete-filter.md +0 -183
- package/docs/column-functionalities/filters/compound-filters.md +0 -234
- package/docs/column-functionalities/filters/custom-filter.md +0 -117
- package/docs/column-functionalities/filters/filter-intro.md +0 -81
- package/docs/column-functionalities/filters/input-filter.md +0 -260
- package/docs/column-functionalities/filters/range-filters.md +0 -188
- package/docs/column-functionalities/filters/select-filter.md +0 -695
- package/docs/column-functionalities/filters/single-search-filter.md +0 -77
- package/docs/column-functionalities/filters/styling-filled-filters.md +0 -45
- package/docs/column-functionalities/formatters.md +0 -325
- package/docs/column-functionalities/sorting.md +0 -200
- package/docs/developer-guides/csp-compliance.md +0 -64
- package/docs/events/Available-Events.md +0 -223
- package/docs/events/Grid-&-DataView-Events.md +0 -211
- package/docs/getting-started/quick-start.md +0 -230
- package/docs/getting-started/troubleshooting.md +0 -80
- package/docs/grid-functionalities/Column-Picker.md +0 -22
- package/docs/grid-functionalities/Composite-Editor-Modal.md +0 -627
- package/docs/grid-functionalities/Context-Menu.md +0 -226
- package/docs/grid-functionalities/Custom-Footer.md +0 -80
- package/docs/grid-functionalities/Custom-Tooltip-(plugin).md +0 -258
- package/docs/grid-functionalities/Export-to-Excel.md +0 -457
- package/docs/grid-functionalities/Export-to-Text-File.md +0 -165
- package/docs/grid-functionalities/FAQ.md +0 -53
- package/docs/grid-functionalities/Global-Options.md +0 -29
- package/docs/grid-functionalities/Grid-Auto-Resize.md +0 -218
- package/docs/grid-functionalities/Grid-Menu.md +0 -134
- package/docs/grid-functionalities/Grid-State-&-Preset.md +0 -245
- package/docs/grid-functionalities/Header-Menu-&-Header-Buttons.md +0 -125
- package/docs/grid-functionalities/Resize-by-Cell-Content.md +0 -138
- package/docs/grid-functionalities/Row-Selection.md +0 -247
- package/docs/grid-functionalities/Row-based-edit.md +0 -71
- package/docs/grid-functionalities/add-update-highlight.md +0 -258
- package/docs/grid-functionalities/column-row-spanning.md +0 -74
- package/docs/grid-functionalities/dynamic-item-metadata.md +0 -124
- package/docs/grid-functionalities/excel-copy-buffer.md +0 -145
- package/docs/grid-functionalities/frozen-columns-rows.md +0 -164
- package/docs/grid-functionalities/grouping-and-aggregators.md +0 -269
- package/docs/grid-functionalities/header-footer-slots.md +0 -22
- package/docs/grid-functionalities/infinite-scroll.md +0 -150
- package/docs/grid-functionalities/providing-grid-data.md +0 -61
- package/docs/grid-functionalities/row-detail.md +0 -530
- package/docs/grid-functionalities/tree-data-grid.md +0 -391
- package/docs/localization/Localization---Component-Sample.md +0 -87
- package/docs/localization/Localization-with-Custom-Locales.md +0 -66
- package/docs/localization/Localization-with-ngx-translate.md +0 -148
- package/docs/migrations/migration-to-2.x.md +0 -304
- package/docs/migrations/migration-to-3.x.md +0 -295
- package/docs/migrations/migration-to-4.x.md +0 -83
- package/docs/migrations/migration-to-5.x.md +0 -160
- package/docs/migrations/migration-to-6.x.md +0 -128
- package/docs/migrations/migration-to-7.x.md +0 -294
- package/docs/migrations/migration-to-8.x.md +0 -316
- package/docs/migrations/migration-to-9.x.md +0 -219
- package/docs/slick-grid-dataview-objects/slickgrid-dataview-objects.md +0 -79
- package/docs/styling/dark-mode.md +0 -100
- package/docs/styling/styling.md +0 -250
- package/docs/testing/testing-patterns.md +0 -73
- package/eslint.config.mjs +0 -60
- package/ng-package.json +0 -10
- package/src/assets/angular-logo.png +0 -0
- package/src/assets/angular-logo2.png +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/data/users.csv +0 -5
- package/src/assets/i18n/en.json +0 -102
- package/src/assets/i18n/fr.json +0 -103
- package/src/demos/app-routing.module.ts +0 -108
- package/src/demos/app.component.html +0 -187
- package/src/demos/app.component.scss +0 -79
- package/src/demos/app.component.ts +0 -11
- package/src/demos/app.module.ts +0 -196
- package/src/demos/environments/environment.dev.ts +0 -3
- package/src/demos/environments/environment.prod.ts +0 -3
- package/src/demos/environments/environment.ts +0 -8
- package/src/demos/examples/custom-angularComponentEditor.ts +0 -187
- package/src/demos/examples/custom-angularComponentFilter.ts +0 -123
- package/src/demos/examples/custom-buttonFormatter.component.ts +0 -13
- package/src/demos/examples/custom-inputEditor.ts +0 -132
- package/src/demos/examples/custom-inputFilter.ts +0 -134
- package/src/demos/examples/custom-titleFormatter.component.ts +0 -9
- package/src/demos/examples/data/collection_100_numbers.json +0 -12
- package/src/demos/examples/data/collection_500_numbers.json +0 -52
- package/src/demos/examples/data/countries.json +0 -245
- package/src/demos/examples/data/country_names.json +0 -245
- package/src/demos/examples/data/customers_100.json +0 -102
- package/src/demos/examples/data/users.csv +0 -5
- package/src/demos/examples/editor-ng-select.component.ts +0 -38
- package/src/demos/examples/example01.component.html +0 -48
- package/src/demos/examples/example01.component.ts +0 -109
- package/src/demos/examples/example02.component.html +0 -45
- package/src/demos/examples/example02.component.ts +0 -218
- package/src/demos/examples/example03.component.html +0 -118
- package/src/demos/examples/example03.component.ts +0 -694
- package/src/demos/examples/example04.component.html +0 -87
- package/src/demos/examples/example04.component.ts +0 -326
- package/src/demos/examples/example05.component.html +0 -151
- package/src/demos/examples/example05.component.ts +0 -474
- package/src/demos/examples/example06.component.html +0 -163
- package/src/demos/examples/example06.component.ts +0 -446
- package/src/demos/examples/example07.component.html +0 -56
- package/src/demos/examples/example07.component.scss +0 -10
- package/src/demos/examples/example07.component.ts +0 -216
- package/src/demos/examples/example08.component.html +0 -51
- package/src/demos/examples/example08.component.scss +0 -23
- package/src/demos/examples/example08.component.ts +0 -195
- package/src/demos/examples/example09.component.html +0 -55
- package/src/demos/examples/example09.component.scss +0 -22
- package/src/demos/examples/example09.component.ts +0 -302
- package/src/demos/examples/example10.component.html +0 -103
- package/src/demos/examples/example10.component.ts +0 -309
- package/src/demos/examples/example11.component.html +0 -91
- package/src/demos/examples/example11.component.ts +0 -276
- package/src/demos/examples/example12.component.html +0 -98
- package/src/demos/examples/example12.component.ts +0 -317
- package/src/demos/examples/example13.component.html +0 -96
- package/src/demos/examples/example13.component.ts +0 -370
- package/src/demos/examples/example14.component.html +0 -50
- package/src/demos/examples/example14.component.scss +0 -11
- package/src/demos/examples/example14.component.ts +0 -156
- package/src/demos/examples/example15.component.html +0 -56
- package/src/demos/examples/example15.component.ts +0 -304
- package/src/demos/examples/example16.component.html +0 -77
- package/src/demos/examples/example16.component.ts +0 -277
- package/src/demos/examples/example17.component.html +0 -50
- package/src/demos/examples/example17.component.ts +0 -109
- package/src/demos/examples/example18.component.html +0 -132
- package/src/demos/examples/example18.component.ts +0 -445
- package/src/demos/examples/example19-rowdetail.component.html +0 -40
- package/src/demos/examples/example19-rowdetail.component.ts +0 -54
- package/src/demos/examples/example19.component.html +0 -79
- package/src/demos/examples/example19.component.ts +0 -316
- package/src/demos/examples/example20.component.html +0 -76
- package/src/demos/examples/example20.component.scss +0 -11
- package/src/demos/examples/example20.component.ts +0 -341
- package/src/demos/examples/example21.component.html +0 -86
- package/src/demos/examples/example21.component.scss +0 -16
- package/src/demos/examples/example21.component.ts +0 -140
- package/src/demos/examples/example22.component.html +0 -41
- package/src/demos/examples/example22.component.ts +0 -117
- package/src/demos/examples/example23.component.html +0 -111
- package/src/demos/examples/example23.component.ts +0 -323
- package/src/demos/examples/example24.component.html +0 -120
- package/src/demos/examples/example24.component.scss +0 -62
- package/src/demos/examples/example24.component.ts +0 -641
- package/src/demos/examples/example25.component.html +0 -60
- package/src/demos/examples/example25.component.scss +0 -8
- package/src/demos/examples/example25.component.ts +0 -255
- package/src/demos/examples/example26.component.html +0 -98
- package/src/demos/examples/example26.component.scss +0 -42
- package/src/demos/examples/example26.component.ts +0 -383
- package/src/demos/examples/example27.component.html +0 -138
- package/src/demos/examples/example27.component.scss +0 -10
- package/src/demos/examples/example27.component.ts +0 -369
- package/src/demos/examples/example28.component.html +0 -143
- package/src/demos/examples/example28.component.scss +0 -54
- package/src/demos/examples/example28.component.ts +0 -453
- package/src/demos/examples/example29.component.html +0 -30
- package/src/demos/examples/example29.component.ts +0 -70
- package/src/demos/examples/example30.component.html +0 -116
- package/src/demos/examples/example30.component.scss +0 -20
- package/src/demos/examples/example30.component.ts +0 -1070
- package/src/demos/examples/example32.component.html +0 -77
- package/src/demos/examples/example32.component.scss +0 -8
- package/src/demos/examples/example32.component.ts +0 -905
- package/src/demos/examples/example33.component.html +0 -50
- package/src/demos/examples/example33.component.scss +0 -46
- package/src/demos/examples/example33.component.ts +0 -571
- package/src/demos/examples/example34.component.html +0 -82
- package/src/demos/examples/example34.component.scss +0 -77
- package/src/demos/examples/example34.component.ts +0 -434
- package/src/demos/examples/example35.component.html +0 -77
- package/src/demos/examples/example35.component.scss +0 -18
- package/src/demos/examples/example35.component.ts +0 -264
- package/src/demos/examples/example36.component.html +0 -56
- package/src/demos/examples/example36.component.scss +0 -26
- package/src/demos/examples/example36.component.ts +0 -504
- package/src/demos/examples/example37.component.html +0 -30
- package/src/demos/examples/example37.component.ts +0 -123
- package/src/demos/examples/example38.component.html +0 -104
- package/src/demos/examples/example38.component.scss +0 -8
- package/src/demos/examples/example38.component.ts +0 -420
- package/src/demos/examples/example39.component.html +0 -112
- package/src/demos/examples/example39.component.scss +0 -8
- package/src/demos/examples/example39.component.ts +0 -371
- package/src/demos/examples/example40.component.html +0 -76
- package/src/demos/examples/example40.component.ts +0 -226
- package/src/demos/examples/example41.component.html +0 -50
- package/src/demos/examples/example41.component.scss +0 -42
- package/src/demos/examples/example41.component.ts +0 -229
- package/src/demos/examples/example42.component.html +0 -47
- package/src/demos/examples/example42.component.ts +0 -203
- package/src/demos/examples/example43.component.html +0 -94
- package/src/demos/examples/example43.component.scss +0 -30
- package/src/demos/examples/example43.component.ts +0 -449
- package/src/demos/examples/example44.component.html +0 -78
- package/src/demos/examples/example44.component.scss +0 -50
- package/src/demos/examples/example44.component.ts +0 -375
- package/src/demos/examples/example45-detail.component.html +0 -15
- package/src/demos/examples/example45-detail.component.ts +0 -97
- package/src/demos/examples/example45.component.html +0 -110
- package/src/demos/examples/example45.component.scss +0 -50
- package/src/demos/examples/example45.component.ts +0 -243
- package/src/demos/examples/filter-ng-select.component.ts +0 -33
- package/src/demos/examples/grid-custom-pager.component.html +0 -60
- package/src/demos/examples/grid-custom-pager.component.scss +0 -57
- package/src/demos/examples/grid-custom-pager.component.ts +0 -107
- package/src/demos/examples/grid-remote.component.html +0 -44
- package/src/demos/examples/grid-remote.component.ts +0 -164
- package/src/demos/examples/home.component.html +0 -39
- package/src/demos/examples/home.component.ts +0 -10
- package/src/demos/examples/jsonp.ts +0 -89
- package/src/demos/examples/rowdetail-preload.component.ts +0 -10
- package/src/demos/examples/swt-common-grid-pagination.component.ts +0 -160
- package/src/demos/examples/swt-common-grid-test.component.html +0 -37
- package/src/demos/examples/swt-common-grid-test.component.ts +0 -214
- package/src/demos/examples/swt-common-grid.component.ts +0 -436
- package/src/demos/examples/swt-logger.service.ts +0 -173
- package/src/demos/examples/utilities.ts +0 -9
- package/src/favicon.ico +0 -0
- package/src/index.html +0 -17
- package/src/library/components/__tests__/angular-slickgrid.component.spec.ts +0 -2638
- package/src/library/components/angular-slickgrid.component.html +0 -5
- package/src/library/components/angular-slickgrid.component.ts +0 -1662
- package/src/library/constants.ts +0 -105
- package/src/library/extensions/__tests__/slickRowDetailView.spec.ts +0 -751
- package/src/library/extensions/index.ts +0 -1
- package/src/library/extensions/slickRowDetailView.ts +0 -395
- package/src/library/global-grid-options.ts +0 -273
- package/src/library/index.ts +0 -11
- package/src/library/models/angularComponentOutput.interface.ts +0 -6
- package/src/library/models/angularGridInstance.interface.ts +0 -76
- package/src/library/models/externalTestingDependencies.interface.ts +0 -37
- package/src/library/models/gridOption.interface.ts +0 -15
- package/src/library/models/index.ts +0 -5
- package/src/library/models/rowDetailView.interface.ts +0 -16
- package/src/library/modules/angular-slickgrid.module.spec.ts +0 -25
- package/src/library/modules/angular-slickgrid.module.ts +0 -27
- package/src/library/services/__tests__/angularUtilService.spec.ts +0 -156
- package/src/library/services/__tests__/container.service.spec.ts +0 -25
- package/src/library/services/__tests__/translater.service.spec.ts +0 -43
- package/src/library/services/__tests__/utilities.spec.ts +0 -22
- package/src/library/services/angularUtil.service.ts +0 -120
- package/src/library/services/container.service.ts +0 -26
- package/src/library/services/index.ts +0 -4
- package/src/library/services/translater.service.ts +0 -38
- package/src/library/services/utilities.ts +0 -19
- package/src/library/slickgrid-config.ts +0 -10
- package/src/main.ts +0 -13
- package/src/public_api.ts +0 -1
- package/src/styles.scss +0 -178
- package/test/cypress/e2e/example01.cy.ts +0 -367
- package/test/cypress/e2e/example02.cy.ts +0 -60
- package/test/cypress/e2e/example03.cy.ts +0 -268
- package/test/cypress/e2e/example04.cy.ts +0 -254
- package/test/cypress/e2e/example05.cy.ts +0 -804
- package/test/cypress/e2e/example06.cy.ts +0 -890
- package/test/cypress/e2e/example07.cy.ts +0 -384
- package/test/cypress/e2e/example08.cy.ts +0 -190
- package/test/cypress/e2e/example09.cy.ts +0 -392
- package/test/cypress/e2e/example10.cy.ts +0 -650
- package/test/cypress/e2e/example11.cy.ts +0 -86
- package/test/cypress/e2e/example12.cy.ts +0 -269
- package/test/cypress/e2e/example13.cy.ts +0 -246
- package/test/cypress/e2e/example14.cy.ts +0 -122
- package/test/cypress/e2e/example15.cy.ts +0 -598
- package/test/cypress/e2e/example16.cy.ts +0 -427
- package/test/cypress/e2e/example17.cy.ts +0 -83
- package/test/cypress/e2e/example18.cy.ts +0 -431
- package/test/cypress/e2e/example19.cy.ts +0 -263
- package/test/cypress/e2e/example20.cy.ts +0 -264
- package/test/cypress/e2e/example21.cy.ts +0 -77
- package/test/cypress/e2e/example22.cy.ts +0 -94
- package/test/cypress/e2e/example23.cy.ts +0 -259
- package/test/cypress/e2e/example24.cy.ts +0 -707
- package/test/cypress/e2e/example25.cy.ts +0 -193
- package/test/cypress/e2e/example26.cy.ts +0 -111
- package/test/cypress/e2e/example27.cy.ts +0 -261
- package/test/cypress/e2e/example28.cy.ts +0 -740
- package/test/cypress/e2e/example29.cy.ts +0 -30
- package/test/cypress/e2e/example30.cy.ts +0 -757
- package/test/cypress/e2e/example31.cy.ts +0 -69
- package/test/cypress/e2e/example32.cy.ts +0 -272
- package/test/cypress/e2e/example33.cy.ts +0 -278
- package/test/cypress/e2e/example34.cy.ts +0 -84
- package/test/cypress/e2e/example35.cy.ts +0 -178
- package/test/cypress/e2e/example36.cy.ts +0 -219
- package/test/cypress/e2e/example37.cy.ts +0 -52
- package/test/cypress/e2e/example38.cy.ts +0 -160
- package/test/cypress/e2e/example39.cy.ts +0 -150
- package/test/cypress/e2e/example40.cy.ts +0 -126
- package/test/cypress/e2e/example41.cy.ts +0 -90
- package/test/cypress/e2e/example42.cy.ts +0 -82
- package/test/cypress/e2e/example43.cy.ts +0 -482
- package/test/cypress/e2e/example44.cy.ts +0 -458
- package/test/cypress/e2e/example45.cy.ts +0 -455
- package/test/cypress/e2e/home.cy.ts +0 -7
- package/test/cypress/fixtures/example.json +0 -5
- package/test/cypress/plugins/index.ts +0 -17
- package/test/cypress/plugins/utilities.ts +0 -28
- package/test/cypress/support/commands.ts +0 -88
- package/test/cypress/support/common.ts +0 -47
- package/test/cypress/support/drag.ts +0 -101
- package/test/cypress/support/index.ts +0 -20
- package/test/cypress/tsconfig.json +0 -9
- package/test/cypress.config.ts +0 -34
- package/test/mockSlickEvent.ts +0 -77
- package/test/rxjsResourceStub.ts +0 -69
- package/test/test-setup.ts +0 -6
- package/test/translateServiceStub.ts +0 -230
- package/test/translaterServiceStub.ts +0 -239
- package/test/tsconfig.json +0 -17
- package/test/vitest-global-mocks.ts +0 -41
- package/test/vitest-global-setup.ts +0 -3
- package/test/vitest-pretest.ts +0 -5
- package/tsconfig.app.json +0 -14
- package/tsconfig.json +0 -31
- package/tsconfig.spec.json +0 -11
- package/types/sortablejs.d.ts +0 -4
- package/vite.config.mts +0 -51
- /package/{dist/fesm2022 → fesm2022}/angular-slickgrid.mjs.map +0 -0
- /package/{dist/i18n → i18n}/en.json +0 -0
- /package/{dist/i18n → i18n}/fr.json +0 -0
- /package/{dist/index.d.ts → index.d.ts} +0 -0
- /package/{dist/library → library}/components/angular-slickgrid.component.d.ts +0 -0
- /package/{dist/library → library}/constants.d.ts +0 -0
- /package/{dist/library → library}/extensions/index.d.ts +0 -0
- /package/{dist/library → library}/extensions/slickRowDetailView.d.ts +0 -0
- /package/{dist/library → library}/global-grid-options.d.ts +0 -0
- /package/{dist/library → library}/index.d.ts +0 -0
- /package/{dist/library → library}/models/angularComponentOutput.interface.d.ts +0 -0
- /package/{dist/library → library}/models/angularGridInstance.interface.d.ts +0 -0
- /package/{dist/library → library}/models/externalTestingDependencies.interface.d.ts +0 -0
- /package/{dist/library → library}/models/gridOption.interface.d.ts +0 -0
- /package/{dist/library → library}/models/index.d.ts +0 -0
- /package/{dist/library → library}/models/rowDetailView.interface.d.ts +0 -0
- /package/{dist/library → library}/modules/angular-slickgrid.module.d.ts +0 -0
- /package/{dist/library → library}/services/angularUtil.service.d.ts +0 -0
- /package/{dist/library → library}/services/container.service.d.ts +0 -0
- /package/{dist/library → library}/services/index.d.ts +0 -0
- /package/{dist/library → library}/services/translater.service.d.ts +0 -0
- /package/{dist/library → library}/services/utilities.d.ts +0 -0
- /package/{dist/library → library}/slickgrid-config.d.ts +0 -0
- /package/{dist/public_api.d.ts → public_api.d.ts} +0 -0
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
BackendService,
|
|
3
|
-
BasePaginationComponent,
|
|
4
|
-
ExtensionList,
|
|
5
|
-
ExtensionService,
|
|
6
|
-
FilterService,
|
|
7
|
-
GridEventService,
|
|
8
|
-
GridService,
|
|
9
|
-
GridStateService,
|
|
10
|
-
HeaderGroupingService,
|
|
11
|
-
PaginationService,
|
|
12
|
-
ResizerService,
|
|
13
|
-
SlickDataView,
|
|
14
|
-
SlickGrid,
|
|
15
|
-
SortService,
|
|
16
|
-
TreeDataService,
|
|
17
|
-
} from '@slickgrid-universal/common';
|
|
18
|
-
import type { EventPubSubService } from '@slickgrid-universal/event-pub-sub';
|
|
19
|
-
|
|
20
|
-
export interface AngularGridInstance {
|
|
21
|
-
/** Slick DataView object */
|
|
22
|
-
dataView: SlickDataView;
|
|
23
|
-
|
|
24
|
-
/** Slick Grid object */
|
|
25
|
-
slickGrid: SlickGrid;
|
|
26
|
-
|
|
27
|
-
/** SlickGrid extensions (external controls/plugins) */
|
|
28
|
-
extensions: ExtensionList<any>;
|
|
29
|
-
|
|
30
|
-
// --
|
|
31
|
-
// Methods
|
|
32
|
-
/** Dispose of the grid and optionally empty the DOM element grid container as well */
|
|
33
|
-
destroy: (emptyDomElementContainer?: boolean) => void;
|
|
34
|
-
|
|
35
|
-
// --
|
|
36
|
-
// Services
|
|
37
|
-
|
|
38
|
-
/** Backend Service, when available */
|
|
39
|
-
backendService?: BackendService;
|
|
40
|
-
|
|
41
|
-
/** EventPubSub Service instance that is used internal by the lib and could be used externally to subscribe to Angular-Slickgrid events */
|
|
42
|
-
eventPubSubService?: EventPubSubService;
|
|
43
|
-
|
|
44
|
-
/** Extension (Plugins & Controls) Service */
|
|
45
|
-
extensionService: ExtensionService;
|
|
46
|
-
|
|
47
|
-
/** Filter Service */
|
|
48
|
-
filterService: FilterService;
|
|
49
|
-
|
|
50
|
-
/** Grid Service (grid extra functionalities) */
|
|
51
|
-
gridService: GridService;
|
|
52
|
-
|
|
53
|
-
/** Grid Events Service */
|
|
54
|
-
gridEventService: GridEventService;
|
|
55
|
-
|
|
56
|
-
/** Grid State Service */
|
|
57
|
-
gridStateService: GridStateService;
|
|
58
|
-
|
|
59
|
-
/** Grouping (and colspan) Service */
|
|
60
|
-
headerGroupingService: HeaderGroupingService;
|
|
61
|
-
|
|
62
|
-
/** Pagination Component */
|
|
63
|
-
paginationComponent?: BasePaginationComponent;
|
|
64
|
-
|
|
65
|
-
/** Pagination Service (allows you to programmatically go to first/last page, etc...) */
|
|
66
|
-
paginationService?: PaginationService;
|
|
67
|
-
|
|
68
|
-
/** Resizer Service (including auto-resize) */
|
|
69
|
-
resizerService: ResizerService;
|
|
70
|
-
|
|
71
|
-
/** Sort Service */
|
|
72
|
-
sortService: SortService;
|
|
73
|
-
|
|
74
|
-
/** Tree Data View Service */
|
|
75
|
-
treeDataService: TreeDataService;
|
|
76
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
BackendUtilityService,
|
|
3
|
-
CollectionService,
|
|
4
|
-
ExtensionService,
|
|
5
|
-
ExtensionUtility,
|
|
6
|
-
FilterService,
|
|
7
|
-
GridEventService,
|
|
8
|
-
GridService,
|
|
9
|
-
GridStateService,
|
|
10
|
-
HeaderGroupingService,
|
|
11
|
-
PaginationService,
|
|
12
|
-
ResizerService,
|
|
13
|
-
RxJsFacade,
|
|
14
|
-
SharedService,
|
|
15
|
-
SortService,
|
|
16
|
-
TreeDataService,
|
|
17
|
-
} from '@slickgrid-universal/common';
|
|
18
|
-
import type { EventPubSubService } from '@slickgrid-universal/event-pub-sub';
|
|
19
|
-
|
|
20
|
-
export interface ExternalTestingDependencies {
|
|
21
|
-
backendUtilityService?: BackendUtilityService;
|
|
22
|
-
collectionService?: CollectionService;
|
|
23
|
-
eventPubSubService?: EventPubSubService;
|
|
24
|
-
extensionService?: ExtensionService;
|
|
25
|
-
extensionUtility?: ExtensionUtility;
|
|
26
|
-
filterService?: FilterService;
|
|
27
|
-
gridEventService?: GridEventService;
|
|
28
|
-
gridService?: GridService;
|
|
29
|
-
gridStateService?: GridStateService;
|
|
30
|
-
headerGroupingService?: HeaderGroupingService;
|
|
31
|
-
paginationService?: PaginationService;
|
|
32
|
-
resizerService?: ResizerService;
|
|
33
|
-
rxjs?: RxJsFacade;
|
|
34
|
-
sharedService?: SharedService;
|
|
35
|
-
sortService?: SortService;
|
|
36
|
-
treeDataService?: TreeDataService;
|
|
37
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { TranslateService } from '@ngx-translate/core';
|
|
2
|
-
import type { BasePaginationComponent, Column, GridOption as UniversalGridOption } from '@slickgrid-universal/common';
|
|
3
|
-
|
|
4
|
-
import type { RowDetailView } from './rowDetailView.interface';
|
|
5
|
-
|
|
6
|
-
export interface GridOption<C extends Column = Column> extends UniversalGridOption<C> {
|
|
7
|
-
/** External Custom Pagination Component that can be provided by the user */
|
|
8
|
-
customPaginationComponent?: typeof BasePaginationComponent;
|
|
9
|
-
|
|
10
|
-
/** ngx-translate i18n translation service instance */
|
|
11
|
-
i18n?: TranslateService;
|
|
12
|
-
|
|
13
|
-
/** Row Detail View Plugin options & events (columnId, cssClass, toolTip, width) */
|
|
14
|
-
rowDetailView?: RowDetailView;
|
|
15
|
-
}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export type * from './angularComponentOutput.interface';
|
|
2
|
-
export type * from './angularGridInstance.interface';
|
|
3
|
-
export type * from './externalTestingDependencies.interface';
|
|
4
|
-
export type * from './gridOption.interface';
|
|
5
|
-
export type * from './rowDetailView.interface';
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { Type } from '@angular/core';
|
|
2
|
-
import type { RowDetailView as UniversalRowDetailView } from '@slickgrid-universal/common';
|
|
3
|
-
|
|
4
|
-
export interface RowDetailView extends UniversalRowDetailView {
|
|
5
|
-
/**
|
|
6
|
-
* Optionally pass your Parent Component reference to your Child Component (row detail component).
|
|
7
|
-
* note:: If anyone finds a better way of passing the parent to the row detail extension, please reach out and/or create a PR
|
|
8
|
-
*/
|
|
9
|
-
parentRef?: any;
|
|
10
|
-
|
|
11
|
-
/** View Component of the preload template (typically a spinner) which shows after opening on the row detail but before the row detail is ready */
|
|
12
|
-
preloadComponent?: Type<object>;
|
|
13
|
-
|
|
14
|
-
/** View Component that will be loaded in the row detail after the async function completed */
|
|
15
|
-
viewComponent: Type<object>;
|
|
16
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { beforeEach, describe, expect, it } from 'vitest';
|
|
2
|
-
|
|
3
|
-
import { AngularSlickgridModule } from './angular-slickgrid.module.js';
|
|
4
|
-
|
|
5
|
-
describe('AppComponent', () => {
|
|
6
|
-
let angularSlickgridModule: AngularSlickgridModule;
|
|
7
|
-
|
|
8
|
-
beforeEach(() => {
|
|
9
|
-
angularSlickgridModule = new AngularSlickgridModule();
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
it('should create an instance', () => {
|
|
13
|
-
expect(angularSlickgridModule).toBeTruthy();
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
it('should create an instance with providers via forRoot()', () => {
|
|
17
|
-
const angularSlickgridModuleWithProviders = AngularSlickgridModule.forRoot();
|
|
18
|
-
expect(angularSlickgridModuleWithProviders.providers![0]).toEqual({ provide: 'config', useValue: {} });
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
it('should create an instance with providers via forRoot() with extra config options', () => {
|
|
22
|
-
const angularSlickgridModuleWithProviders = AngularSlickgridModule.forRoot({ enableAutoResize: true });
|
|
23
|
-
expect(angularSlickgridModuleWithProviders.providers![0]).toEqual({ provide: 'config', useValue: { enableAutoResize: true } });
|
|
24
|
-
});
|
|
25
|
-
});
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { type ModuleWithProviders, NgModule } from '@angular/core';
|
|
3
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
4
|
-
|
|
5
|
-
import { AngularSlickgridComponent } from '../components/angular-slickgrid.component';
|
|
6
|
-
import { GridOption } from '../models/gridOption.interface';
|
|
7
|
-
import { AngularUtilService } from '../services/angularUtil.service';
|
|
8
|
-
import { ContainerService } from '../services/container.service';
|
|
9
|
-
|
|
10
|
-
@NgModule({
|
|
11
|
-
imports: [CommonModule, TranslateModule],
|
|
12
|
-
declarations: [AngularSlickgridComponent],
|
|
13
|
-
exports: [AngularSlickgridComponent],
|
|
14
|
-
})
|
|
15
|
-
export class AngularSlickgridModule {
|
|
16
|
-
static forRoot(config: GridOption = {}): ModuleWithProviders<AngularSlickgridModule> {
|
|
17
|
-
return {
|
|
18
|
-
ngModule: AngularSlickgridModule,
|
|
19
|
-
providers: [
|
|
20
|
-
{ provide: 'config', useValue: config },
|
|
21
|
-
{ provide: 'externalService', useValue: null },
|
|
22
|
-
AngularUtilService,
|
|
23
|
-
ContainerService,
|
|
24
|
-
],
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
}
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
import { Component, ViewContainerRef } from '@angular/core';
|
|
2
|
-
import { TestBed } from '@angular/core/testing';
|
|
3
|
-
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
4
|
-
|
|
5
|
-
import { AngularUtilService } from '../angularUtil.service.js';
|
|
6
|
-
|
|
7
|
-
const DOM_ELEMENT_ID = 'row-detail123';
|
|
8
|
-
const DOM_PARENT_ID = 'parent-detail';
|
|
9
|
-
|
|
10
|
-
const viewContainerRefStub = {
|
|
11
|
-
createComponent: vi.fn(),
|
|
12
|
-
detectChanges: vi.fn(),
|
|
13
|
-
} as unknown as ViewContainerRef;
|
|
14
|
-
|
|
15
|
-
@Component({ template: `<h4>Loading...</h4>`, standalone: false })
|
|
16
|
-
class TestPreloadComponent {}
|
|
17
|
-
|
|
18
|
-
@Component({ template: `<h1>{{ title }}</h1>` })
|
|
19
|
-
class TestComponent {
|
|
20
|
-
title = '';
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
describe('AngularUtilService', () => {
|
|
24
|
-
let service: AngularUtilService;
|
|
25
|
-
|
|
26
|
-
beforeEach(async () => {
|
|
27
|
-
// define a <div> container to simulate a row detail DOM element
|
|
28
|
-
const div = document.createElement('div');
|
|
29
|
-
div.innerHTML = `<div id="${DOM_PARENT_ID}">parent text</div><div id="${DOM_ELEMENT_ID}">some text</div>`;
|
|
30
|
-
document.body.appendChild(div);
|
|
31
|
-
|
|
32
|
-
await TestBed.configureTestingModule({
|
|
33
|
-
declarations: [TestPreloadComponent],
|
|
34
|
-
providers: [AngularUtilService, { provide: ViewContainerRef, useValue: viewContainerRefStub }],
|
|
35
|
-
teardown: { destroyAfterEach: false },
|
|
36
|
-
});
|
|
37
|
-
service = TestBed.inject(AngularUtilService);
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
afterEach(() => {
|
|
41
|
-
const domElm = document.getElementById(DOM_ELEMENT_ID) as HTMLDivElement;
|
|
42
|
-
domElm.innerHTML = 'some text';
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
it('should create the service', () => {
|
|
46
|
-
expect(service).toBeTruthy();
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
describe('createAngularComponent method', () => {
|
|
50
|
-
let domElm: HTMLElement;
|
|
51
|
-
let domParentElm: HTMLElement;
|
|
52
|
-
let mockComponentFactory: any;
|
|
53
|
-
|
|
54
|
-
beforeEach(() => {
|
|
55
|
-
domElm = document.getElementById(DOM_ELEMENT_ID) as HTMLDivElement;
|
|
56
|
-
domParentElm = document.getElementById(DOM_PARENT_ID) as HTMLDivElement;
|
|
57
|
-
mockComponentFactory = { hostView: { rootNodes: [domElm] }, instance: {}, changeDetectorRef: { detectChanges: vi.fn() } };
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
it('should create an Angular Component and add it to the current component DOM tree', () => {
|
|
61
|
-
// @ts-ignore
|
|
62
|
-
const createCompSpy = vi.spyOn(viewContainerRefStub, 'createComponent').mockReturnValue(mockComponentFactory);
|
|
63
|
-
|
|
64
|
-
const output = service.createAngularComponent(TestPreloadComponent);
|
|
65
|
-
|
|
66
|
-
expect(createCompSpy).toHaveBeenCalled();
|
|
67
|
-
expect(output).toEqual({ componentRef: mockComponentFactory, domElement: domElm });
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
it('should create an Angular Component with optional target element and extra data to provide to the component instance', () => {
|
|
71
|
-
const titleMock = 'Some Title';
|
|
72
|
-
const h1Mock = document.createElement('h1');
|
|
73
|
-
h1Mock.textContent = titleMock;
|
|
74
|
-
mockComponentFactory.hostView.rootNodes[0] = h1Mock;
|
|
75
|
-
// @ts-ignore
|
|
76
|
-
const createCompSpy = vi.spyOn(viewContainerRefStub, 'createComponent').mockReturnValue(mockComponentFactory);
|
|
77
|
-
const output = service.createAngularComponent(TestComponent, domParentElm, { title: titleMock });
|
|
78
|
-
|
|
79
|
-
expect(createCompSpy).toHaveBeenCalled();
|
|
80
|
-
expect(domParentElm.innerHTML).toBe('Some Title');
|
|
81
|
-
expect(output).toEqual({ componentRef: mockComponentFactory, domElement: h1Mock });
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
it('should create an Angular Component with optional target element and extra data and sanitizer', () => {
|
|
85
|
-
const titleMock = 'Some Title';
|
|
86
|
-
const h1Mock = document.createElement('h1');
|
|
87
|
-
h1Mock.textContent = titleMock;
|
|
88
|
-
mockComponentFactory.hostView.rootNodes[0] = h1Mock;
|
|
89
|
-
const sanitizerMock = vi.fn().mockReturnValue(titleMock);
|
|
90
|
-
|
|
91
|
-
// @ts-ignore
|
|
92
|
-
const createCompSpy = vi.spyOn(viewContainerRefStub, 'createComponent').mockReturnValue(mockComponentFactory);
|
|
93
|
-
const output = service.createAngularComponent(TestComponent, domParentElm, { title: titleMock }, { sanitizer: sanitizerMock });
|
|
94
|
-
|
|
95
|
-
expect(sanitizerMock).toHaveBeenCalled();
|
|
96
|
-
expect(createCompSpy).toHaveBeenCalled();
|
|
97
|
-
expect(domParentElm.innerHTML).toBe('Some Title');
|
|
98
|
-
expect(output).toEqual({ componentRef: mockComponentFactory, domElement: h1Mock });
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
it('should create an Interactive Angular Component with target element and extra data to provide to the component instance', () => {
|
|
102
|
-
const titleMock = 'Some Title';
|
|
103
|
-
const h1Mock = document.createElement('h1');
|
|
104
|
-
h1Mock.textContent = titleMock;
|
|
105
|
-
mockComponentFactory.hostView.rootNodes[0] = h1Mock;
|
|
106
|
-
mockComponentFactory.location = {
|
|
107
|
-
nativeElement: h1Mock,
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
// @ts-ignore
|
|
111
|
-
const createCompSpy = vi.spyOn(viewContainerRefStub, 'createComponent').mockReturnValue(mockComponentFactory);
|
|
112
|
-
const output = service.createInteractiveAngularComponent(TestComponent, domParentElm, { title: titleMock });
|
|
113
|
-
|
|
114
|
-
expect(createCompSpy).toHaveBeenCalled();
|
|
115
|
-
expect(domParentElm.innerHTML).toBe('<h1>Some Title</h1>');
|
|
116
|
-
expect(output).toEqual({ componentRef: mockComponentFactory, domElement: h1Mock });
|
|
117
|
-
});
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
describe('createAngularComponentAppendToDom method', () => {
|
|
121
|
-
let domElm: HTMLElement;
|
|
122
|
-
let domParentElm: HTMLElement;
|
|
123
|
-
let mockComponentFactory: any;
|
|
124
|
-
|
|
125
|
-
beforeEach(() => {
|
|
126
|
-
domElm = document.getElementById(DOM_ELEMENT_ID) as HTMLDivElement;
|
|
127
|
-
domParentElm = document.getElementById(DOM_PARENT_ID) as HTMLDivElement;
|
|
128
|
-
mockComponentFactory = { hostView: { rootNodes: [domElm] } };
|
|
129
|
-
});
|
|
130
|
-
|
|
131
|
-
it('should an angular component and append it to the DOM tree in the document body', () => {
|
|
132
|
-
// @ts-ignore
|
|
133
|
-
const createCompSpy = vi.spyOn(viewContainerRefStub, 'createComponent').mockReturnValue(mockComponentFactory);
|
|
134
|
-
const spyBody = vi.spyOn(document.body, 'appendChild');
|
|
135
|
-
|
|
136
|
-
const output = service.createAngularComponentAppendToDom(TestPreloadComponent);
|
|
137
|
-
|
|
138
|
-
expect(createCompSpy).toHaveBeenCalled();
|
|
139
|
-
expect(spyBody).toHaveBeenCalled();
|
|
140
|
-
expect(output).toEqual({ componentRef: mockComponentFactory, domElement: domElm });
|
|
141
|
-
});
|
|
142
|
-
|
|
143
|
-
it('should an angular component and append it to the current component DOM tree, which will have its parent node replaced by the new html', () => {
|
|
144
|
-
// @ts-ignore
|
|
145
|
-
const createCompSpy = vi.spyOn(viewContainerRefStub, 'createComponent').mockReturnValue(mockComponentFactory);
|
|
146
|
-
const spyElement = vi.spyOn(domParentElm, 'replaceChildren');
|
|
147
|
-
|
|
148
|
-
const output = service.createAngularComponentAppendToDom(TestPreloadComponent, domParentElm);
|
|
149
|
-
|
|
150
|
-
expect(createCompSpy).toHaveBeenCalled();
|
|
151
|
-
expect(spyElement).toHaveBeenCalled();
|
|
152
|
-
expect(domParentElm.innerHTML).toBe('<div id="row-detail123">some text</div>');
|
|
153
|
-
expect(output).toEqual({ componentRef: mockComponentFactory, domElement: domElm });
|
|
154
|
-
});
|
|
155
|
-
});
|
|
156
|
-
});
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { SharedService } from '@slickgrid-universal/common';
|
|
2
|
-
import { beforeEach, describe, expect, it } from 'vitest';
|
|
3
|
-
|
|
4
|
-
import { ContainerService } from '../container.service.js';
|
|
5
|
-
|
|
6
|
-
describe('Container Service', () => {
|
|
7
|
-
let service: ContainerService;
|
|
8
|
-
let sharedService: SharedService;
|
|
9
|
-
|
|
10
|
-
beforeEach(() => {
|
|
11
|
-
service = new ContainerService();
|
|
12
|
-
sharedService = new SharedService();
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
it('should register an instance and expect to retrieve it with the get method', () => {
|
|
16
|
-
service.registerInstance('SharedService', sharedService);
|
|
17
|
-
expect(service.get('SharedService')).toEqual(sharedService);
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
it('should register an instance and expect to null when calling the get method with an invalid name', () => {
|
|
21
|
-
service.registerInstance('SharedService', sharedService);
|
|
22
|
-
const output = service.get('DifferentName');
|
|
23
|
-
expect(output).toBeNull();
|
|
24
|
-
});
|
|
25
|
-
});
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { TestBed } from '@angular/core/testing';
|
|
2
|
-
import { TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
3
|
-
import { beforeEach, describe, expect, it } from 'vitest';
|
|
4
|
-
|
|
5
|
-
import { TranslaterService } from '../translater.service.js';
|
|
6
|
-
|
|
7
|
-
describe('Translater Service', () => {
|
|
8
|
-
let translate: TranslateService;
|
|
9
|
-
let service: TranslaterService;
|
|
10
|
-
|
|
11
|
-
beforeEach(async () => {
|
|
12
|
-
await TestBed.configureTestingModule({
|
|
13
|
-
imports: [TranslateModule.forRoot()],
|
|
14
|
-
teardown: { destroyAfterEach: false },
|
|
15
|
-
});
|
|
16
|
-
translate = TestBed.inject(TranslateService);
|
|
17
|
-
service = new TranslaterService(translate);
|
|
18
|
-
|
|
19
|
-
translate.setTranslation('fr', {
|
|
20
|
-
ITEMS: 'éléments',
|
|
21
|
-
OF: 'de',
|
|
22
|
-
});
|
|
23
|
-
translate.setTranslation('en', {
|
|
24
|
-
ITEMS: 'items',
|
|
25
|
-
OF: 'of',
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
it('should create the service', () => {
|
|
30
|
-
expect(service).toBeTruthy();
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
it('should call "use" method and expect "getCurrentLanguage" to be equal', async () => {
|
|
34
|
-
await service.use('jp');
|
|
35
|
-
expect(service.getCurrentLanguage()).toBe('jp');
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
it('should call "translate" and expect translated value returned', async () => {
|
|
39
|
-
await service.use('fr');
|
|
40
|
-
const output = service.translate('ITEMS');
|
|
41
|
-
expect(output).toBe('éléments');
|
|
42
|
-
});
|
|
43
|
-
});
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { of, type Subscription } from 'rxjs';
|
|
2
|
-
import { describe, expect, it } from 'vitest';
|
|
3
|
-
|
|
4
|
-
import { unsubscribeAllObservables } from '../utilities.js';
|
|
5
|
-
|
|
6
|
-
describe('Service/Utilies', () => {
|
|
7
|
-
describe('unsubscribeAllObservables method', () => {
|
|
8
|
-
it('should return original array when array of subscriptions is empty', () => {
|
|
9
|
-
const output = unsubscribeAllObservables([]);
|
|
10
|
-
expect(output).toEqual([]);
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
it('should return unique values when input array has duplicate objects', () => {
|
|
14
|
-
const subscriptions: Subscription[] = [];
|
|
15
|
-
const observable1 = of([1, 2]);
|
|
16
|
-
const observable2 = of([1, 2]);
|
|
17
|
-
subscriptions.push(observable1.subscribe(), observable2.subscribe());
|
|
18
|
-
const output = unsubscribeAllObservables(subscriptions);
|
|
19
|
-
expect(output).toHaveLength(0);
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
});
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import { Injectable, ViewContainerRef } from '@angular/core';
|
|
2
|
-
import type { EmbeddedViewRef, EnvironmentInjector, Injector, NgModuleRef, Type } from '@angular/core';
|
|
3
|
-
|
|
4
|
-
import type { AngularComponentOutput } from '../models/angularComponentOutput.interface';
|
|
5
|
-
|
|
6
|
-
interface CreateComponentOption {
|
|
7
|
-
index?: number;
|
|
8
|
-
injector?: Injector;
|
|
9
|
-
ngModuleRef?: NgModuleRef<unknown>;
|
|
10
|
-
environmentInjector?: EnvironmentInjector | NgModuleRef<unknown>;
|
|
11
|
-
projectableNodes?: Node[][];
|
|
12
|
-
sanitizer?: (dirtyHtml: string) => string;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
@Injectable()
|
|
16
|
-
export class AngularUtilService {
|
|
17
|
-
constructor(private vcr: ViewContainerRef) {}
|
|
18
|
-
|
|
19
|
-
createInteractiveAngularComponent<C>(
|
|
20
|
-
component: Type<C>,
|
|
21
|
-
targetElement: Element,
|
|
22
|
-
data?: any,
|
|
23
|
-
createCompOptions?: CreateComponentOption
|
|
24
|
-
): AngularComponentOutput {
|
|
25
|
-
// Create a component reference from the component
|
|
26
|
-
const componentRef = this.vcr.createComponent(component, createCompOptions);
|
|
27
|
-
|
|
28
|
-
// user could provide data to assign to the component instance
|
|
29
|
-
if (componentRef?.instance && data) {
|
|
30
|
-
Object.assign(componentRef.instance as any, data);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// Get DOM element from component
|
|
34
|
-
let domElem: HTMLElement | null = null;
|
|
35
|
-
const viewRef = componentRef.hostView as EmbeddedViewRef<any>;
|
|
36
|
-
|
|
37
|
-
if (viewRef && Array.isArray(viewRef.rootNodes) && viewRef.rootNodes[0]) {
|
|
38
|
-
domElem = viewRef.rootNodes[0] as HTMLElement;
|
|
39
|
-
|
|
40
|
-
// when user provides the DOM element target, we will move the dynamic component into that target (aka portal-ing it)
|
|
41
|
-
if (targetElement && domElem) {
|
|
42
|
-
targetElement.replaceChildren(componentRef.location.nativeElement);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return { componentRef, domElement: domElem as HTMLElement };
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Dynamically create an Angular component, user could also provide optional arguments for target, data & createComponent options
|
|
51
|
-
* @param {Component} component
|
|
52
|
-
* @param {HTMLElement} [targetElement]
|
|
53
|
-
* @param {*} [data]
|
|
54
|
-
* @param {CreateComponentOption} [createCompOptions]
|
|
55
|
-
* @returns
|
|
56
|
-
*/
|
|
57
|
-
createAngularComponent<C>(
|
|
58
|
-
component: Type<C>,
|
|
59
|
-
targetElement?: Element,
|
|
60
|
-
data?: any,
|
|
61
|
-
createCompOptions?: CreateComponentOption
|
|
62
|
-
): AngularComponentOutput {
|
|
63
|
-
// Create a component reference from the component
|
|
64
|
-
const componentRef = this.vcr.createComponent(component, createCompOptions);
|
|
65
|
-
|
|
66
|
-
// user could provide data to assign to the component instance
|
|
67
|
-
if (componentRef?.instance && data) {
|
|
68
|
-
Object.assign(componentRef.instance as any, data);
|
|
69
|
-
|
|
70
|
-
// NOTE: detectChanges() MUST be done BEFORE returning the DOM element in the next step,
|
|
71
|
-
// because if we do it only after returning the rootNodes (domElement) then it won't have the instance data yet
|
|
72
|
-
// and we would have to wait an extra cycle to see the result, this basically helps with Example22
|
|
73
|
-
componentRef.changeDetectorRef.detectChanges();
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
// Get DOM element from component
|
|
77
|
-
let domElem: HTMLElement | null = null;
|
|
78
|
-
const viewRef = componentRef.hostView as EmbeddedViewRef<any>;
|
|
79
|
-
|
|
80
|
-
// get DOM element from the new dynamic Component, make sure this is read after any data and detectChanges()
|
|
81
|
-
if (viewRef && Array.isArray(viewRef.rootNodes) && viewRef.rootNodes[0]) {
|
|
82
|
-
domElem = viewRef.rootNodes[0] as HTMLElement;
|
|
83
|
-
|
|
84
|
-
// when user provides the DOM element target, we will read the new Component html and use it to replace the target html
|
|
85
|
-
if (targetElement && domElem) {
|
|
86
|
-
targetElement.innerHTML =
|
|
87
|
-
typeof createCompOptions?.sanitizer === 'function' ? createCompOptions.sanitizer(domElem.innerHTML || '') : domElem.innerHTML;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
return { componentRef, domElement: domElem as HTMLElement };
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* Dynamically create an Angular component and append it to the DOM unless a target element is provided,
|
|
96
|
-
* user could also provide other optional arguments for data & createComponent options.
|
|
97
|
-
* @param {Component} component
|
|
98
|
-
* @param {HTMLElement} [targetElement]
|
|
99
|
-
* @param {*} [data]
|
|
100
|
-
* @param {CreateComponentOption} [createCompOptions]
|
|
101
|
-
* @returns
|
|
102
|
-
*/
|
|
103
|
-
createAngularComponentAppendToDom<C>(
|
|
104
|
-
component: Type<C>,
|
|
105
|
-
targetElement?: Element,
|
|
106
|
-
data?: any,
|
|
107
|
-
createCompOptions?: CreateComponentOption
|
|
108
|
-
): AngularComponentOutput {
|
|
109
|
-
const componentOutput = this.createAngularComponent(component, targetElement, data, createCompOptions);
|
|
110
|
-
|
|
111
|
-
// Append DOM element to the HTML element specified
|
|
112
|
-
if (targetElement?.replaceChildren) {
|
|
113
|
-
targetElement.replaceChildren(componentOutput.domElement);
|
|
114
|
-
} else {
|
|
115
|
-
document.body.appendChild(componentOutput.domElement); // when no target provided, we'll simply add it to the HTML Body
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
return componentOutput;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { type ContainerInstance, ContainerService as UniversalContainerService } from '@slickgrid-universal/common';
|
|
3
|
-
|
|
4
|
-
@Injectable()
|
|
5
|
-
export class ContainerService implements UniversalContainerService {
|
|
6
|
-
dependencies: ContainerInstance[] = [];
|
|
7
|
-
|
|
8
|
-
get<T = any>(key: string): T | null {
|
|
9
|
-
const dependency = this.dependencies.find((dep) => dep.key === key);
|
|
10
|
-
if (dependency?.instance) {
|
|
11
|
-
return dependency.instance;
|
|
12
|
-
}
|
|
13
|
-
return null;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
dispose() {
|
|
17
|
-
this.dependencies = [];
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
registerInstance(key: string, instance: any) {
|
|
21
|
-
const dependency = this.dependencies.some((dep) => dep.key === key);
|
|
22
|
-
if (!dependency) {
|
|
23
|
-
this.dependencies.push({ key, instance });
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { Injectable, Optional } from '@angular/core';
|
|
2
|
-
import { TranslateService } from '@ngx-translate/core';
|
|
3
|
-
import { TranslaterService as UniversalTranslateService } from '@slickgrid-universal/common';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* This is a Translate Service Wrapper for Slickgrid-Universal monorepo lib to work properly,
|
|
7
|
-
* it must implement Slickgrid-Universal TranslaterService interface to work properly
|
|
8
|
-
*/
|
|
9
|
-
@Injectable()
|
|
10
|
-
export class TranslaterService implements UniversalTranslateService {
|
|
11
|
-
constructor(@Optional() private readonly translateService: TranslateService) {}
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Method to return the current language used by the App
|
|
15
|
-
* @return {string} current language
|
|
16
|
-
*/
|
|
17
|
-
getCurrentLanguage(): string {
|
|
18
|
-
return this.translateService?.currentLang ?? '';
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Method to set the language to use in the App and Translate Service
|
|
23
|
-
* @param {string} language
|
|
24
|
-
* @return {Promise} output
|
|
25
|
-
*/
|
|
26
|
-
async use(newLang: string): Promise<any> {
|
|
27
|
-
return this.translateService?.use?.(newLang);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Method which receives a translation key and returns the translated value assigned to that key
|
|
32
|
-
* @param {string} translation key
|
|
33
|
-
* @return {string} translated value
|
|
34
|
-
*/
|
|
35
|
-
translate(translationKey: string): string {
|
|
36
|
-
return this.translateService?.instant?.(translationKey || ' ') as string;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Unsubscribe all Observables Subscriptions
|
|
3
|
-
* It will return an empty array if it all went well
|
|
4
|
-
* @param subscriptions
|
|
5
|
-
*/
|
|
6
|
-
export function unsubscribeAllObservables(subscriptions: Array<{ unsubscribe: () => void }>): any[] {
|
|
7
|
-
if (Array.isArray(subscriptions)) {
|
|
8
|
-
let subscription = subscriptions.pop();
|
|
9
|
-
while (subscription) {
|
|
10
|
-
if (typeof subscription.unsubscribe === 'function') {
|
|
11
|
-
subscription.unsubscribe();
|
|
12
|
-
}
|
|
13
|
-
subscription = subscriptions.pop();
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
// TODO: deprecated, remove the return type in next major version
|
|
18
|
-
return subscriptions;
|
|
19
|
-
}
|