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,62 +0,0 @@
|
|
|
1
|
-
.bold {
|
|
2
|
-
font-weight: bold;
|
|
3
|
-
}
|
|
4
|
-
|
|
5
|
-
.italic {
|
|
6
|
-
font-style: italic;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
.grey {
|
|
10
|
-
color: grey;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
.orange {
|
|
14
|
-
color: orange;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
.red {
|
|
18
|
-
color: red;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
.yellow {
|
|
22
|
-
color: rgb(255, 235, 52);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
.pointer {
|
|
26
|
-
cursor: pointer;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
.cell-menu-dropdown-outline {
|
|
30
|
-
border: 1px solid #a0a0a0;
|
|
31
|
-
border-radius: 4px;
|
|
32
|
-
width: max-content;
|
|
33
|
-
padding: 2px 14px;
|
|
34
|
-
cursor: pointer;
|
|
35
|
-
&:hover:not(.disabled) {
|
|
36
|
-
background-color: #a3a3a3;
|
|
37
|
-
color: #ffffff;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
.mdi-caret-down {
|
|
41
|
-
margin-left: 5px;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
.disabled {
|
|
46
|
-
color: #d4d4d4;
|
|
47
|
-
border: 1px solid #d8d8d8;
|
|
48
|
-
}
|
|
49
|
-
.slick-dark-mode {
|
|
50
|
-
.disabled {
|
|
51
|
-
border: 1px solid #616161;
|
|
52
|
-
color: #686868;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
.row.locale {
|
|
57
|
-
margin-top: 5px;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
span.cell-menu {
|
|
61
|
-
margin-left: 15px;
|
|
62
|
-
}
|
|
@@ -1,641 +0,0 @@
|
|
|
1
|
-
import { Component, OnInit, OnDestroy, ViewEncapsulation } from '@angular/core';
|
|
2
|
-
import { TranslateService } from '@ngx-translate/core';
|
|
3
|
-
import { ExcelExportService } from '@slickgrid-universal/excel-export';
|
|
4
|
-
import { Subscription } from 'rxjs';
|
|
5
|
-
|
|
6
|
-
import {
|
|
7
|
-
AngularGridInstance,
|
|
8
|
-
Column,
|
|
9
|
-
ContextMenu,
|
|
10
|
-
ExtensionName,
|
|
11
|
-
Filters,
|
|
12
|
-
Formatter,
|
|
13
|
-
Formatters,
|
|
14
|
-
GridOption,
|
|
15
|
-
unsubscribeAllObservables,
|
|
16
|
-
} from '../../library';
|
|
17
|
-
|
|
18
|
-
const actionFormatter: Formatter = (row, cell, value, columnDef, dataContext) => {
|
|
19
|
-
if (dataContext.priority === 3) {
|
|
20
|
-
// option 3 is High
|
|
21
|
-
return `<div class="cell-menu-dropdown-outline">Action<i class="mdi mdi-chevron-down"></i></div>`;
|
|
22
|
-
}
|
|
23
|
-
return `<div class="cell-menu-dropdown-outline disabled">Action <i class="mdi mdi-chevron-down"></i></div>`;
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
const priorityFormatter: Formatter = (_row, _cell, value) => {
|
|
27
|
-
if (!value) {
|
|
28
|
-
return '';
|
|
29
|
-
}
|
|
30
|
-
let output = '';
|
|
31
|
-
const count = +(value >= 3 ? 3 : value);
|
|
32
|
-
const color = count === 3 ? 'red' : count === 2 ? 'orange' : 'yellow';
|
|
33
|
-
const icon = `<i class="mdi mdi-star ${color}" aria-hidden="true"></i>`;
|
|
34
|
-
|
|
35
|
-
for (let i = 1; i <= count; i++) {
|
|
36
|
-
output += icon;
|
|
37
|
-
}
|
|
38
|
-
return output;
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
const priorityExportFormatter: Formatter = (_row, _cell, value, _columnDef, _dataContext, grid) => {
|
|
42
|
-
if (!value) {
|
|
43
|
-
return '';
|
|
44
|
-
}
|
|
45
|
-
const gridOptions = grid.getOptions() as GridOption;
|
|
46
|
-
const translate = gridOptions.i18n;
|
|
47
|
-
const count = +(value >= 3 ? 3 : value);
|
|
48
|
-
const key = count === 3 ? 'HIGH' : count === 2 ? 'MEDIUM' : 'LOW';
|
|
49
|
-
|
|
50
|
-
return translate && translate.instant && translate.instant(key);
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
const taskTranslateFormatter: Formatter = (row, cell, value, columnDef, dataContext, grid) => {
|
|
54
|
-
const gridOptions = grid.getOptions() as GridOption;
|
|
55
|
-
const translate = gridOptions.i18n;
|
|
56
|
-
|
|
57
|
-
return translate && translate.instant && translate.instant('TASK_X', { x: value });
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
@Component({
|
|
61
|
-
templateUrl: './example24.component.html',
|
|
62
|
-
styleUrls: ['./example24.component.scss'],
|
|
63
|
-
encapsulation: ViewEncapsulation.None,
|
|
64
|
-
standalone: false,
|
|
65
|
-
})
|
|
66
|
-
export class Example24Component implements OnInit, OnDestroy {
|
|
67
|
-
private _darkModeGrid = false;
|
|
68
|
-
private subscriptions: Subscription[] = [];
|
|
69
|
-
angularGrid!: AngularGridInstance;
|
|
70
|
-
columnDefinitions!: Column[];
|
|
71
|
-
gridOptions!: GridOption;
|
|
72
|
-
dataset!: any[];
|
|
73
|
-
selectedLanguage: string;
|
|
74
|
-
|
|
75
|
-
constructor(private translate: TranslateService) {
|
|
76
|
-
// always start with English for Cypress E2E tests to be consistent
|
|
77
|
-
const defaultLang = 'en';
|
|
78
|
-
this.translate.use(defaultLang);
|
|
79
|
-
this.selectedLanguage = defaultLang;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
angularGridReady(angularGrid: AngularGridInstance) {
|
|
83
|
-
this.angularGrid = angularGrid;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
get cellMenuInstance() {
|
|
87
|
-
return this.angularGrid?.extensionService?.getExtensionInstanceByName(ExtensionName.cellMenu);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
get contextMenuInstance() {
|
|
91
|
-
return this.angularGrid?.extensionService?.getExtensionInstanceByName(ExtensionName.contextMenu);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
ngOnInit() {
|
|
95
|
-
this.prepareGrid();
|
|
96
|
-
this.dataset = this.getData(1000);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
ngOnDestroy() {
|
|
100
|
-
// also unsubscribe all Angular Subscriptions
|
|
101
|
-
unsubscribeAllObservables(this.subscriptions);
|
|
102
|
-
document.querySelector('.panel-wm-content')!.classList.remove('dark-mode');
|
|
103
|
-
document.querySelector<HTMLDivElement>('#demo-container')!.dataset.bsTheme = 'light';
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
prepareGrid() {
|
|
107
|
-
this.columnDefinitions = [
|
|
108
|
-
{ id: 'id', name: '#', field: 'id', maxWidth: 45, sortable: true, filterable: true },
|
|
109
|
-
{
|
|
110
|
-
id: 'title',
|
|
111
|
-
name: 'Title',
|
|
112
|
-
field: 'id',
|
|
113
|
-
nameKey: 'TITLE',
|
|
114
|
-
minWidth: 100,
|
|
115
|
-
formatter: taskTranslateFormatter,
|
|
116
|
-
sortable: true,
|
|
117
|
-
filterable: true,
|
|
118
|
-
params: { useFormatterOuputToFilter: true },
|
|
119
|
-
},
|
|
120
|
-
{
|
|
121
|
-
id: 'percentComplete',
|
|
122
|
-
nameKey: 'PERCENT_COMPLETE',
|
|
123
|
-
field: 'percentComplete',
|
|
124
|
-
minWidth: 100,
|
|
125
|
-
exportWithFormatter: false,
|
|
126
|
-
sortable: true,
|
|
127
|
-
filterable: true,
|
|
128
|
-
filter: { model: Filters.slider, operator: '>=' },
|
|
129
|
-
formatter: Formatters.percentCompleteBar,
|
|
130
|
-
type: 'number',
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
id: 'start',
|
|
134
|
-
name: 'Start',
|
|
135
|
-
field: 'start',
|
|
136
|
-
nameKey: 'START',
|
|
137
|
-
minWidth: 100,
|
|
138
|
-
formatter: Formatters.dateIso,
|
|
139
|
-
outputType: 'dateIso',
|
|
140
|
-
type: 'date',
|
|
141
|
-
filterable: true,
|
|
142
|
-
filter: { model: Filters.compoundDate },
|
|
143
|
-
},
|
|
144
|
-
{
|
|
145
|
-
id: 'finish',
|
|
146
|
-
name: 'Finish',
|
|
147
|
-
field: 'finish',
|
|
148
|
-
nameKey: 'FINISH',
|
|
149
|
-
formatter: Formatters.dateIso,
|
|
150
|
-
outputType: 'dateIso',
|
|
151
|
-
type: 'date',
|
|
152
|
-
minWidth: 100,
|
|
153
|
-
filterable: true,
|
|
154
|
-
filter: { model: Filters.compoundDate },
|
|
155
|
-
},
|
|
156
|
-
{
|
|
157
|
-
id: 'priority',
|
|
158
|
-
nameKey: 'PRIORITY',
|
|
159
|
-
field: 'priority',
|
|
160
|
-
exportCustomFormatter: priorityExportFormatter,
|
|
161
|
-
formatter: priorityFormatter,
|
|
162
|
-
sortable: true,
|
|
163
|
-
filterable: true,
|
|
164
|
-
filter: {
|
|
165
|
-
collection: [
|
|
166
|
-
{ value: '', label: '' },
|
|
167
|
-
{ value: 1, labelKey: 'LOW' },
|
|
168
|
-
{ value: 2, labelKey: 'MEDIUM' },
|
|
169
|
-
{ value: 3, labelKey: 'HIGH' },
|
|
170
|
-
],
|
|
171
|
-
model: Filters.singleSelect,
|
|
172
|
-
enableTranslateLabel: true,
|
|
173
|
-
},
|
|
174
|
-
},
|
|
175
|
-
{
|
|
176
|
-
id: 'completed',
|
|
177
|
-
nameKey: 'COMPLETED',
|
|
178
|
-
field: 'completed',
|
|
179
|
-
exportCustomFormatter: Formatters.translateBoolean,
|
|
180
|
-
formatter: Formatters.checkmarkMaterial,
|
|
181
|
-
sortable: true,
|
|
182
|
-
filterable: true,
|
|
183
|
-
filter: {
|
|
184
|
-
collection: [
|
|
185
|
-
{ value: '', label: '' },
|
|
186
|
-
{ value: true, labelKey: 'TRUE' },
|
|
187
|
-
{ value: false, labelKey: 'FALSE' },
|
|
188
|
-
],
|
|
189
|
-
model: Filters.singleSelect,
|
|
190
|
-
enableTranslateLabel: true,
|
|
191
|
-
},
|
|
192
|
-
},
|
|
193
|
-
{
|
|
194
|
-
id: 'action',
|
|
195
|
-
name: 'Action',
|
|
196
|
-
field: 'action',
|
|
197
|
-
width: 100,
|
|
198
|
-
maxWidth: 110,
|
|
199
|
-
excludeFromExport: true,
|
|
200
|
-
formatter: actionFormatter,
|
|
201
|
-
cellMenu: {
|
|
202
|
-
hideCloseButton: false,
|
|
203
|
-
// you can override the logic of when the menu is usable
|
|
204
|
-
// for example say that we want to show a menu only when then Priority is set to 'High'.
|
|
205
|
-
// Note that this ONLY overrides the usability itself NOT the text displayed in the cell,
|
|
206
|
-
// if you wish to change the cell text (or hide it)
|
|
207
|
-
// then you SHOULD use it in combination with a custom formatter (actionFormatter) and use the same logic in that formatter
|
|
208
|
-
menuUsabilityOverride: (args) => {
|
|
209
|
-
return args.dataContext.priority === 3; // option 3 is High
|
|
210
|
-
},
|
|
211
|
-
|
|
212
|
-
// when using Translate Service, every translation will have the suffix "Key"
|
|
213
|
-
// else use title without the suffix, for example "commandTitle" (no translations) or "commandTitleKey" (with translations)
|
|
214
|
-
commandTitleKey: 'COMMANDS', // optional title, use "commandTitle" when not using Translate
|
|
215
|
-
commandItems: [
|
|
216
|
-
// array of command item objects, you can also use the "positionOrder" that will be used to sort the items in the list
|
|
217
|
-
{
|
|
218
|
-
command: 'command2',
|
|
219
|
-
title: 'Command 2',
|
|
220
|
-
positionOrder: 62,
|
|
221
|
-
// you can use the "action" callback and/or use "onCallback" callback from the grid options, they both have the same arguments
|
|
222
|
-
action: (e, args) => {
|
|
223
|
-
console.log(args.dataContext, args.column);
|
|
224
|
-
// action callback.. do something
|
|
225
|
-
},
|
|
226
|
-
// only enable command when the task is not completed
|
|
227
|
-
itemUsabilityOverride: (args) => {
|
|
228
|
-
return !args.dataContext.completed;
|
|
229
|
-
},
|
|
230
|
-
},
|
|
231
|
-
{ command: 'command1', title: 'Command 1', cssClass: 'orange', positionOrder: 61 },
|
|
232
|
-
{
|
|
233
|
-
command: 'delete-row',
|
|
234
|
-
titleKey: 'DELETE_ROW',
|
|
235
|
-
positionOrder: 64,
|
|
236
|
-
iconCssClass: 'mdi mdi-close',
|
|
237
|
-
cssClass: 'red',
|
|
238
|
-
textCssClass: 'bold',
|
|
239
|
-
// only show command to 'Delete Row' when the task is not completed
|
|
240
|
-
itemVisibilityOverride: (args) => {
|
|
241
|
-
return !args.dataContext.completed;
|
|
242
|
-
},
|
|
243
|
-
},
|
|
244
|
-
// you can pass divider as a string or an object with a boolean (if sorting by position, then use the object)
|
|
245
|
-
// note you should use the "divider" string only when items array is already sorted and positionOrder are not specified
|
|
246
|
-
{ divider: true, command: '', positionOrder: 63 },
|
|
247
|
-
// 'divider',
|
|
248
|
-
|
|
249
|
-
{
|
|
250
|
-
command: 'help',
|
|
251
|
-
titleKey: 'HELP', // use "title" without translation and "titleKey" with TranslateService
|
|
252
|
-
iconCssClass: 'mdi mdi-help-circle',
|
|
253
|
-
positionOrder: 66,
|
|
254
|
-
},
|
|
255
|
-
{ command: 'something', titleKey: 'DISABLED_COMMAND', disabled: true, positionOrder: 67 },
|
|
256
|
-
{ command: '', divider: true, positionOrder: 98 },
|
|
257
|
-
{
|
|
258
|
-
// we can also have multiple nested sub-menus
|
|
259
|
-
command: 'export',
|
|
260
|
-
title: 'Exports',
|
|
261
|
-
positionOrder: 99,
|
|
262
|
-
commandItems: [
|
|
263
|
-
{ command: 'exports-txt', title: 'Text (tab delimited)' },
|
|
264
|
-
{
|
|
265
|
-
command: 'sub-menu',
|
|
266
|
-
title: 'Excel',
|
|
267
|
-
cssClass: 'green',
|
|
268
|
-
subMenuTitle: 'available formats',
|
|
269
|
-
subMenuTitleCssClass: 'text-italic orange',
|
|
270
|
-
commandItems: [
|
|
271
|
-
{ command: 'exports-csv', title: 'Excel (csv)' },
|
|
272
|
-
{ command: 'exports-xlsx', title: 'Excel (xlsx)' },
|
|
273
|
-
],
|
|
274
|
-
},
|
|
275
|
-
],
|
|
276
|
-
},
|
|
277
|
-
{
|
|
278
|
-
command: 'feedback',
|
|
279
|
-
title: 'Feedback',
|
|
280
|
-
positionOrder: 100,
|
|
281
|
-
commandItems: [
|
|
282
|
-
{
|
|
283
|
-
command: 'request-update',
|
|
284
|
-
title: 'Request update from supplier',
|
|
285
|
-
iconCssClass: 'mdi mdi-star',
|
|
286
|
-
tooltip: 'this will automatically send an alert to the shipping team to contact the user for an update',
|
|
287
|
-
},
|
|
288
|
-
'divider',
|
|
289
|
-
{
|
|
290
|
-
command: 'sub-menu',
|
|
291
|
-
title: 'Contact Us',
|
|
292
|
-
iconCssClass: 'mdi mdi-account',
|
|
293
|
-
subMenuTitle: 'contact us...',
|
|
294
|
-
subMenuTitleCssClass: 'italic',
|
|
295
|
-
commandItems: [
|
|
296
|
-
{ command: 'contact-email', title: 'Email us', iconCssClass: 'mdi mdi-pencil-outline' },
|
|
297
|
-
{ command: 'contact-chat', title: 'Chat with us', iconCssClass: 'mdi mdi-message-text-outline' },
|
|
298
|
-
{ command: 'contact-meeting', title: 'Book an appointment', iconCssClass: 'mdi mdi-coffee' },
|
|
299
|
-
],
|
|
300
|
-
},
|
|
301
|
-
],
|
|
302
|
-
},
|
|
303
|
-
],
|
|
304
|
-
optionTitleKey: 'CHANGE_COMPLETED_FLAG',
|
|
305
|
-
optionItems: [
|
|
306
|
-
{ option: true, titleKey: 'TRUE', iconCssClass: 'mdi mdi-check-box-outline' },
|
|
307
|
-
{ option: false, titleKey: 'FALSE', iconCssClass: 'mdi mdi-checkbox-blank-outline' },
|
|
308
|
-
{
|
|
309
|
-
option: null,
|
|
310
|
-
title: 'null',
|
|
311
|
-
cssClass: 'italic',
|
|
312
|
-
// you can use the "action" callback and/or use "onCallback" callback from the grid options, they both have the same arguments
|
|
313
|
-
action: (_e, _args) => {
|
|
314
|
-
// action callback.. do something
|
|
315
|
-
},
|
|
316
|
-
// only enable Action menu when the Priority is set to High
|
|
317
|
-
itemUsabilityOverride: (args) => {
|
|
318
|
-
return args.dataContext.priority === 3;
|
|
319
|
-
},
|
|
320
|
-
// only show command to 'Delete Row' when the task is not completed
|
|
321
|
-
itemVisibilityOverride: (args) => {
|
|
322
|
-
return !args.dataContext.completed;
|
|
323
|
-
},
|
|
324
|
-
},
|
|
325
|
-
],
|
|
326
|
-
},
|
|
327
|
-
},
|
|
328
|
-
];
|
|
329
|
-
|
|
330
|
-
this.gridOptions = {
|
|
331
|
-
autoResize: {
|
|
332
|
-
container: '#demo-container',
|
|
333
|
-
rightPadding: 10,
|
|
334
|
-
},
|
|
335
|
-
darkMode: this._darkModeGrid,
|
|
336
|
-
enableCellNavigation: true,
|
|
337
|
-
enableFiltering: true,
|
|
338
|
-
enableSorting: true,
|
|
339
|
-
enableTranslate: true,
|
|
340
|
-
enableExcelExport: true,
|
|
341
|
-
excelExportOptions: {
|
|
342
|
-
exportWithFormatter: true,
|
|
343
|
-
customColumnWidth: 15,
|
|
344
|
-
|
|
345
|
-
// you can customize how the header titles will be styled (defaults to Bold)
|
|
346
|
-
columnHeaderStyle: { font: { bold: true, italic: true } },
|
|
347
|
-
},
|
|
348
|
-
i18n: this.translate,
|
|
349
|
-
externalResources: [new ExcelExportService()],
|
|
350
|
-
|
|
351
|
-
enableContextMenu: true,
|
|
352
|
-
enableCellMenu: true,
|
|
353
|
-
|
|
354
|
-
// when using the cellMenu, you can change some of the default options and all use some of the callback methods
|
|
355
|
-
cellMenu: {
|
|
356
|
-
// all the Cell Menu callback methods (except the action callback)
|
|
357
|
-
// are available under the grid options as shown below
|
|
358
|
-
onCommand: (e, args) => this.executeCommand(e, args),
|
|
359
|
-
onOptionSelected: (e, args) => {
|
|
360
|
-
// change "Completed" property with new option selected from the Cell Menu
|
|
361
|
-
const dataContext = args && args.dataContext;
|
|
362
|
-
if (dataContext && 'completed' in dataContext) {
|
|
363
|
-
dataContext.completed = args.item.option;
|
|
364
|
-
this.angularGrid.gridService.updateItem(dataContext);
|
|
365
|
-
}
|
|
366
|
-
},
|
|
367
|
-
onBeforeMenuShow: (e, args) => {
|
|
368
|
-
// for example, you could select the row that the click originated
|
|
369
|
-
// this.angularGrid.gridService.setSelectedRows([args.row]);
|
|
370
|
-
console.log('Before the Cell Menu is shown', args);
|
|
371
|
-
},
|
|
372
|
-
onBeforeMenuClose: (e, args) => console.log('Cell Menu is closing', args),
|
|
373
|
-
},
|
|
374
|
-
|
|
375
|
-
// load Context Menu structure
|
|
376
|
-
contextMenu: this.getContextMenuOptions(),
|
|
377
|
-
};
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
executeCommand(_e: any, args: any) {
|
|
381
|
-
// const columnDef = args.column;
|
|
382
|
-
const command = args.command;
|
|
383
|
-
const dataContext = args.dataContext;
|
|
384
|
-
|
|
385
|
-
switch (command) {
|
|
386
|
-
case 'contact-email':
|
|
387
|
-
case 'contact-chat':
|
|
388
|
-
case 'contact-meeting':
|
|
389
|
-
alert('Command: ' + args?.command);
|
|
390
|
-
break;
|
|
391
|
-
case 'exports-csv':
|
|
392
|
-
case 'exports-txt':
|
|
393
|
-
case 'exports-xlsx':
|
|
394
|
-
alert(`Exporting as ${args.item.title}`);
|
|
395
|
-
break;
|
|
396
|
-
case 'command1':
|
|
397
|
-
alert('Command 1');
|
|
398
|
-
break;
|
|
399
|
-
case 'command2':
|
|
400
|
-
alert('Command 2');
|
|
401
|
-
break;
|
|
402
|
-
case 'help':
|
|
403
|
-
alert('Please help!');
|
|
404
|
-
break;
|
|
405
|
-
case 'delete-row':
|
|
406
|
-
if (confirm(`Do you really want to delete row ${args.row + 1} with ${this.translate.instant('TASK_X', { x: dataContext.id })}`)) {
|
|
407
|
-
this.angularGrid.dataView.deleteItem(dataContext.id);
|
|
408
|
-
}
|
|
409
|
-
break;
|
|
410
|
-
}
|
|
411
|
-
}
|
|
412
|
-
|
|
413
|
-
getData(count: number) {
|
|
414
|
-
// mock a dataset
|
|
415
|
-
const tmpData = [];
|
|
416
|
-
for (let i = 0; i < count; i++) {
|
|
417
|
-
const randomYear = 2000 + Math.floor(Math.random() * 30);
|
|
418
|
-
const randomMonth = Math.floor(Math.random() * 11);
|
|
419
|
-
const randomDay = Math.floor(Math.random() * 29);
|
|
420
|
-
|
|
421
|
-
tmpData[i] = {
|
|
422
|
-
id: i,
|
|
423
|
-
duration: Math.floor(Math.random() * 25) + ' days',
|
|
424
|
-
percentComplete: Math.floor(Math.random() * 100),
|
|
425
|
-
start: new Date(randomYear, randomMonth, randomDay),
|
|
426
|
-
finish: new Date(randomYear, randomMonth + 1, randomDay),
|
|
427
|
-
priority: i % 3 ? 2 : i % 5 ? 3 : 1,
|
|
428
|
-
completed: i % 4 === 0,
|
|
429
|
-
};
|
|
430
|
-
}
|
|
431
|
-
return tmpData;
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
getContextMenuOptions(): ContextMenu {
|
|
435
|
-
return {
|
|
436
|
-
hideCloseButton: false,
|
|
437
|
-
// optionally and conditionally define when the the menu is usable,
|
|
438
|
-
// this should be used with a custom formatter to show/hide/disable the menu
|
|
439
|
-
menuUsabilityOverride: (args) => {
|
|
440
|
-
const dataContext = args && args.dataContext;
|
|
441
|
-
return dataContext.id < 21; // say we want to display the menu only from Task 0 to 20
|
|
442
|
-
},
|
|
443
|
-
// which column to show the command list? when not defined it will be shown over all columns
|
|
444
|
-
commandShownOverColumnIds: ['id', 'title', 'percentComplete', 'start', 'finish', 'completed' /*, 'priority', 'action' */],
|
|
445
|
-
commandTitleKey: 'COMMANDS', // this title is optional, you could also use "commandTitle" when not using Translate
|
|
446
|
-
commandItems: [
|
|
447
|
-
{ divider: true, command: '', positionOrder: 61 },
|
|
448
|
-
{
|
|
449
|
-
command: 'delete-row',
|
|
450
|
-
titleKey: 'DELETE_ROW',
|
|
451
|
-
iconCssClass: 'mdi mdi-close',
|
|
452
|
-
cssClass: 'red',
|
|
453
|
-
textCssClass: 'bold',
|
|
454
|
-
positionOrder: 62,
|
|
455
|
-
},
|
|
456
|
-
// you can pass divider as a string or an object with a boolean (if sorting by position, then use the object)
|
|
457
|
-
// note you should use the "divider" string only when items array is already sorted and positionOrder are not specified
|
|
458
|
-
// 'divider',
|
|
459
|
-
{ divider: true, command: '', positionOrder: 63 },
|
|
460
|
-
{
|
|
461
|
-
command: 'help',
|
|
462
|
-
titleKey: 'HELP',
|
|
463
|
-
iconCssClass: 'mdi mdi-help-circle',
|
|
464
|
-
positionOrder: 64,
|
|
465
|
-
// you can use the 'action' callback and/or subscribe to the 'onCallback' event, they both have the same arguments
|
|
466
|
-
action: (_e, _args) => {
|
|
467
|
-
// action callback.. do something
|
|
468
|
-
},
|
|
469
|
-
// only show command to 'Help' when the task is Not Completed
|
|
470
|
-
itemVisibilityOverride: (args) => {
|
|
471
|
-
const dataContext = args && args.dataContext;
|
|
472
|
-
return !dataContext.completed;
|
|
473
|
-
},
|
|
474
|
-
},
|
|
475
|
-
{ command: 'something', titleKey: 'DISABLED_COMMAND', disabled: true, positionOrder: 65 },
|
|
476
|
-
{ command: '', divider: true, positionOrder: 98 },
|
|
477
|
-
{
|
|
478
|
-
// we can also have multiple nested sub-menus
|
|
479
|
-
command: 'export',
|
|
480
|
-
title: 'Exports',
|
|
481
|
-
positionOrder: 99,
|
|
482
|
-
commandItems: [
|
|
483
|
-
{ command: 'exports-txt', title: 'Text (tab delimited)' },
|
|
484
|
-
{
|
|
485
|
-
command: 'sub-menu',
|
|
486
|
-
title: 'Excel',
|
|
487
|
-
cssClass: 'green',
|
|
488
|
-
subMenuTitle: 'available formats',
|
|
489
|
-
subMenuTitleCssClass: 'text-italic orange',
|
|
490
|
-
commandItems: [
|
|
491
|
-
{ command: 'exports-csv', title: 'Excel (csv)' },
|
|
492
|
-
{ command: 'exports-xlsx', title: 'Excel (xlsx)' },
|
|
493
|
-
],
|
|
494
|
-
},
|
|
495
|
-
],
|
|
496
|
-
},
|
|
497
|
-
{
|
|
498
|
-
command: 'feedback',
|
|
499
|
-
title: 'Feedback',
|
|
500
|
-
positionOrder: 100,
|
|
501
|
-
commandItems: [
|
|
502
|
-
{
|
|
503
|
-
command: 'request-update',
|
|
504
|
-
title: 'Request update from supplier',
|
|
505
|
-
iconCssClass: 'mdi mdi-star',
|
|
506
|
-
tooltip: 'this will automatically send an alert to the shipping team to contact the user for an update',
|
|
507
|
-
},
|
|
508
|
-
'divider',
|
|
509
|
-
{
|
|
510
|
-
command: 'sub-menu',
|
|
511
|
-
title: 'Contact Us',
|
|
512
|
-
iconCssClass: 'mdi mdi-account',
|
|
513
|
-
subMenuTitle: 'contact us...',
|
|
514
|
-
subMenuTitleCssClass: 'italic',
|
|
515
|
-
commandItems: [
|
|
516
|
-
{ command: 'contact-email', title: 'Email us', iconCssClass: 'mdi mdi-pencil-outline' },
|
|
517
|
-
{ command: 'contact-chat', title: 'Chat with us', iconCssClass: 'mdi mdi-message-text-outline' },
|
|
518
|
-
{ command: 'contact-meeting', title: 'Book an appointment', iconCssClass: 'mdi mdi-coffee' },
|
|
519
|
-
],
|
|
520
|
-
},
|
|
521
|
-
],
|
|
522
|
-
},
|
|
523
|
-
],
|
|
524
|
-
|
|
525
|
-
// Options allows you to edit a column from an option chose a list
|
|
526
|
-
// for example, changing the Priority value
|
|
527
|
-
// you can also optionally define an array of column ids that you wish to display this option list (when not defined it will show over all columns)
|
|
528
|
-
optionTitleKey: 'CHANGE_PRIORITY',
|
|
529
|
-
optionShownOverColumnIds: ['priority'], // optional, when defined it will only show over the columns (column id) defined in the array
|
|
530
|
-
optionItems: [
|
|
531
|
-
{
|
|
532
|
-
option: 0,
|
|
533
|
-
title: 'n/a',
|
|
534
|
-
textCssClass: 'italic',
|
|
535
|
-
// only enable this option when the task is Not Completed
|
|
536
|
-
itemUsabilityOverride: (args) => {
|
|
537
|
-
const dataContext = args && args.dataContext;
|
|
538
|
-
return !dataContext.completed;
|
|
539
|
-
},
|
|
540
|
-
// you can use the 'action' callback and/or subscribe to the 'onCallback' event, they both have the same arguments
|
|
541
|
-
action: (_e, _args) => {
|
|
542
|
-
// action callback.. do something
|
|
543
|
-
},
|
|
544
|
-
},
|
|
545
|
-
{ option: 1, iconCssClass: 'mdi mdi-star-outline yellow', titleKey: 'LOW' },
|
|
546
|
-
{ option: 2, iconCssClass: 'mdi mdi-star orange', titleKey: 'MEDIUM' },
|
|
547
|
-
{ option: 3, iconCssClass: 'mdi mdi-star red', titleKey: 'HIGH' },
|
|
548
|
-
// you can pass divider as a string or an object with a boolean (if sorting by position, then use the object)
|
|
549
|
-
// note you should use the "divider" string only when items array is already sorted and positionOrder are not specified
|
|
550
|
-
'divider',
|
|
551
|
-
// { divider: true, option: '', positionOrder: 3 },
|
|
552
|
-
{
|
|
553
|
-
option: 4,
|
|
554
|
-
title: 'Extreme',
|
|
555
|
-
iconCssClass: 'mdi mdi-fire',
|
|
556
|
-
disabled: true,
|
|
557
|
-
// only shown when the task is Not Completed
|
|
558
|
-
itemVisibilityOverride: (args) => {
|
|
559
|
-
const dataContext = args && args.dataContext;
|
|
560
|
-
return !dataContext.completed;
|
|
561
|
-
},
|
|
562
|
-
},
|
|
563
|
-
{
|
|
564
|
-
// we can also have multiple nested sub-menus
|
|
565
|
-
option: null,
|
|
566
|
-
title: 'Sub-Options (demo)',
|
|
567
|
-
subMenuTitleKey: 'CHANGE_PRIORITY',
|
|
568
|
-
optionItems: [
|
|
569
|
-
{ option: 1, iconCssClass: 'mdi mdi-star-outline yellow', titleKey: 'LOW' },
|
|
570
|
-
{ option: 2, iconCssClass: 'mdi mdi-star orange', titleKey: 'MEDIUM' },
|
|
571
|
-
{ option: 3, iconCssClass: 'mdi mdi-star red', titleKey: 'HIGH' },
|
|
572
|
-
],
|
|
573
|
-
},
|
|
574
|
-
],
|
|
575
|
-
// subscribe to Context Menu
|
|
576
|
-
onBeforeMenuShow: (_e, args) => {
|
|
577
|
-
// for example, you could select the row it was clicked with
|
|
578
|
-
// grid.setSelectedRows([args.row]); // select the entire row
|
|
579
|
-
this.angularGrid.slickGrid.setActiveCell(args.row, args.cell, false); // select the cell that the click originated
|
|
580
|
-
console.log('Before the global Context Menu is shown', args);
|
|
581
|
-
},
|
|
582
|
-
onBeforeMenuClose: (_e, args) => console.log('Global Context Menu is closing', args),
|
|
583
|
-
|
|
584
|
-
// subscribe to Context Menu onCommand event (or use the action callback on each command)
|
|
585
|
-
onCommand: (e, args) => this.executeCommand(e, args),
|
|
586
|
-
|
|
587
|
-
// subscribe to Context Menu onOptionSelected event (or use the action callback on each option)
|
|
588
|
-
onOptionSelected: (_e, args) => {
|
|
589
|
-
// change Priority
|
|
590
|
-
const dataContext = args && args.dataContext;
|
|
591
|
-
if ('priority' in dataContext) {
|
|
592
|
-
dataContext.priority = args.item.option;
|
|
593
|
-
this.angularGrid.gridService.updateItem(dataContext);
|
|
594
|
-
}
|
|
595
|
-
},
|
|
596
|
-
};
|
|
597
|
-
}
|
|
598
|
-
|
|
599
|
-
showContextCommandsAndOptions(showBothList: boolean) {
|
|
600
|
-
// when showing both Commands/Options, we can just pass an empty array to show over all columns
|
|
601
|
-
// else show on all columns except Priority
|
|
602
|
-
const showOverColumnIds = showBothList ? [] : ['id', 'title', 'complete', 'start', 'finish', 'completed', 'action'];
|
|
603
|
-
this.contextMenuInstance?.setOptions({
|
|
604
|
-
commandShownOverColumnIds: showOverColumnIds,
|
|
605
|
-
// hideCommandSection: !showBothList
|
|
606
|
-
});
|
|
607
|
-
}
|
|
608
|
-
|
|
609
|
-
showCellMenuCommandsAndOptions(showBothList: boolean) {
|
|
610
|
-
// change via the plugin setOptions
|
|
611
|
-
this.cellMenuInstance?.setOptions({
|
|
612
|
-
hideOptionSection: !showBothList,
|
|
613
|
-
});
|
|
614
|
-
|
|
615
|
-
// OR find the column, then change the same hide property
|
|
616
|
-
// var actionColumn = columns.find(function (column) { return column.id === 'action' });
|
|
617
|
-
// actionColumn.cellMenu.hideOptionSection = !showBothList;
|
|
618
|
-
}
|
|
619
|
-
|
|
620
|
-
switchLanguage() {
|
|
621
|
-
const nextLanguage = this.selectedLanguage === 'en' ? 'fr' : 'en';
|
|
622
|
-
|
|
623
|
-
this.subscriptions.push(
|
|
624
|
-
this.translate.use(nextLanguage).subscribe(() => {
|
|
625
|
-
this.selectedLanguage = nextLanguage;
|
|
626
|
-
})
|
|
627
|
-
);
|
|
628
|
-
}
|
|
629
|
-
|
|
630
|
-
toggleDarkMode() {
|
|
631
|
-
this._darkModeGrid = !this._darkModeGrid;
|
|
632
|
-
if (this._darkModeGrid) {
|
|
633
|
-
document.querySelector<HTMLDivElement>('.panel-wm-content')!.classList.add('dark-mode');
|
|
634
|
-
document.querySelector<HTMLDivElement>('#demo-container')!.dataset.bsTheme = 'dark';
|
|
635
|
-
} else {
|
|
636
|
-
document.querySelector('.panel-wm-content')!.classList.remove('dark-mode');
|
|
637
|
-
document.querySelector<HTMLDivElement>('#demo-container')!.dataset.bsTheme = 'light';
|
|
638
|
-
}
|
|
639
|
-
this.angularGrid.slickGrid?.setOptions({ darkMode: this._darkModeGrid });
|
|
640
|
-
}
|
|
641
|
-
}
|