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,219 +0,0 @@
|
|
|
1
|
-
## Embracing ESM-only builds ⚡ (WIP)
|
|
2
|
-
|
|
3
|
-
This new release is focused around 2 things, we now ship ESM-only builds (in other words, CommonJS builds are fully dropped and only ESM will remain), this move will cut the npm download size by half. The other big change is an internal one which is an organizational one, I'm moving all framework wrappers directly into Slickgrid-Universal (Angular, Aurelia, React and Vue wrappers are now all located under the [frameworks/](https://github.com/ghiscoding/slickgrid-universal/tree/master/frameworks/) folder), this will help tremendously with the project maintenance (any new PR will now run against all frameworks all at once (catching bugs early), publishing a new version is becoming a single execution for all frameworks all at once, and finally having a single codebase to test & troubleshoot any wrapper, etc... will be so much easier to handle). Now Slickgrid-Universal name totally makes sense with this new structure change 🌐
|
|
4
|
-
|
|
5
|
-
The other great thing about having everything under the same roof/project is that every package will be released at the exact same time with the exact same versions across the board. Everything will be released under v9.0 and whenever a new feature/bugfix comes in, then every package will be bumped to v9.1 and so on (no more version discrepancies).
|
|
6
|
-
|
|
7
|
-
I also decided to align all SlickGrid examples in all frameworks and Angular-Slickgrid turned out to have many example offsets, so just be aware that the example numbering might have changed a little (ie: Row Detail is now Example 19 instead of 21).
|
|
8
|
-
|
|
9
|
-
#### Major Changes - Quick Summary
|
|
10
|
-
- minimum requirements bump
|
|
11
|
-
- Angular v19+
|
|
12
|
-
- Node v20+
|
|
13
|
-
- upgrade Vanilla-Calendar-Pro to v3 with [flat config](#date-editorfilter-flat-config)
|
|
14
|
-
- [shorter attribute names](#shorter-attribute-names)
|
|
15
|
-
- now using `clipboard` API, used in ExcelCopyBuffer/ContextMenu/CellCopy, which might requires end user permissions
|
|
16
|
-
- removing Arrow pointer from Custom Tooltip addon (because it was often offset with the cell text)
|
|
17
|
-
|
|
18
|
-
> **Note:** if you come from an earlier version, please make sure to follow each migrations in their respected order (review previous migration guides)
|
|
19
|
-
|
|
20
|
-
## Changes
|
|
21
|
-
|
|
22
|
-
### Removed @deprecated code
|
|
23
|
-
|
|
24
|
-
1. `colspanCallback` was deprecated and removed, please use the `globalItemMetadataProvider` instead
|
|
25
|
-
|
|
26
|
-
```diff
|
|
27
|
-
gridOptions = {
|
|
28
|
-
- colspanCallback: this.renderDifferentColspan.bind(this),
|
|
29
|
-
+ dataView: {
|
|
30
|
-
+ globalItemMetadataProvider: {
|
|
31
|
-
+ getRowMetadata: this.renderDifferentColspan.bind(this)
|
|
32
|
-
+ }
|
|
33
|
-
+ }
|
|
34
|
-
}
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
2. `groupingService` from `AngularGridInstance` was deprecate and removed, but I would be very surprised if anyone used it. Simply use `headerGroupingService` instead.
|
|
38
|
-
|
|
39
|
-
```diff
|
|
40
|
-
function angularGridReady(angularGrid: AngularGridInstance) {
|
|
41
|
-
this.angularGrid = angularGrid;
|
|
42
|
-
- angularGrid.groupingService.renderPreHeaderRowGroupingTitles();
|
|
43
|
-
+ angularGrid.headerGroupingService.renderPreHeaderRowGroupingTitles();
|
|
44
|
-
}
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
3. Row Detail changes
|
|
48
|
-
- `itemDetail` property is removed, just use `item` (there's no reason to keep duplicate props)
|
|
49
|
-
- `parent` property renamed to `parentRef`
|
|
50
|
-
- `OnRowBackToViewportRangeArgs` and `OnRowOutOfViewportRangeArgs` were equal, so it was merged into a new `OnRowBackOrOutOfViewportRangeArgs` interface
|
|
51
|
-
|
|
52
|
-
```diff
|
|
53
|
-
export class Component {
|
|
54
|
-
gridOptions = {
|
|
55
|
-
enableRowDetailView: true,
|
|
56
|
-
rowTopOffsetRenderType: 'top', // RowDetail and/or RowSpan don't render well with "transform", you should use "top"
|
|
57
|
-
rowDetailView: {
|
|
58
|
-
- onAsyncResponse: (e, args) => console.log('before toggling row detail', args.itemDetail),
|
|
59
|
-
+ onAsyncResponse: (e, args) => console.log('before toggling row detail', args.item),
|
|
60
|
-
},
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
// `parent` renamed as `parentRef`
|
|
64
|
-
callParentMethod(model: any) {
|
|
65
|
-
- this.parent!.someParentFunction(`We just called Parent Method from the Row Detail Child Component on ${model.title}`);
|
|
66
|
-
+ this.parentRef!.someParentFunction(`We just called Parent Method from the Row Detail Child Component on ${model.title}`);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
4. Draggable Grouping `setDroppedGroups` to load grid with initial Groups was deprecated and now removed, simply use `initialGroupBy` instead
|
|
72
|
-
|
|
73
|
-
```diff
|
|
74
|
-
this.gridOptions = {
|
|
75
|
-
enableDraggableGrouping: true,
|
|
76
|
-
// frozenColumn: 2,
|
|
77
|
-
draggableGrouping: {
|
|
78
|
-
- setDroppedGroups: () => ['duration', 'cost'],
|
|
79
|
-
+ initialGroupBy: ['duration', 'cost'],
|
|
80
|
-
},
|
|
81
|
-
};
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
5. for Header Menu, we had 2 similar events `onHeaderMenuHideColumns` and `onHideColumns` that were doing the same thing, so `onHeaderMenuHideColumns` was dropped
|
|
85
|
-
|
|
86
|
-
```diff
|
|
87
|
-
- onHeaderMenuHideColumns
|
|
88
|
-
+ onHideColumns
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
### Grid Options
|
|
92
|
-
|
|
93
|
-
`rowTopOffsetRenderType` default is changing from `'top'` to `'transform'` and the reason is because `transform` is known to have better styling perf, especially on large dataset, and that is also what Ag-Grid uses by default.
|
|
94
|
-
|
|
95
|
-
| previous default | new default |
|
|
96
|
-
| --------------- | ------------ |
|
|
97
|
-
| `rowTopOffsetRenderType: 'top'` | `rowTopOffsetRenderType: 'transform'` |
|
|
98
|
-
|
|
99
|
-
- if you are using Cypress to get the row X in the grid, which is what we do ourselves, then you will need to adjust your tests
|
|
100
|
-
|
|
101
|
-
| Cypress before | Cypress after |
|
|
102
|
-
| -------------- | -------------- |
|
|
103
|
-
| `cy.get([style="top: ${GRID_ROW_HEIGHT * 0}px;"])` | `cy.get([style="transform: translateY(${GRID_ROW_HEIGHT * 0}px);"])` |
|
|
104
|
-
| | OR `cy.get([data-row=0])` |
|
|
105
|
-
|
|
106
|
-
> Please note that you will have to change the default to `rowTopOffsetRenderType: 'top'` when using either RowSpan and/or Row Detail features.
|
|
107
|
-
|
|
108
|
-
### Shorter Attribute Names
|
|
109
|
-
We are changing the `columnDefinitions` and `gridOptions` attribute names to much simpler single word names. Basically, I'm not exactly sure why I chose the long name in the past, but going forward, I think it would be much simpler to use single name attributes (which can help slightly with build size)
|
|
110
|
-
|
|
111
|
-
```diff
|
|
112
|
-
<angular-slickgrid gridId="grid1"
|
|
113
|
-
- [columnDefinitions]="columnDefinitions"
|
|
114
|
-
- [gridOptions]="gridOptions"
|
|
115
|
-
+ [columns]="columnDefinitions"
|
|
116
|
-
+ [options]="gridOptions"
|
|
117
|
-
></angular-slickgrid>
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
## Column Functionalities
|
|
121
|
-
|
|
122
|
-
### Date Editor/Filter (flat config)
|
|
123
|
-
Vanilla-Calendar-Pro was upgraded to v3.0 and the main breaking change is that they migrated to flat config (instead of complex object config) and this mean that if you use any of their option, then you'll have to update them to be flat.
|
|
124
|
-
|
|
125
|
-
The biggest change that you will most probably have to update is the min/max date setting when using the `'today'` shortcut as shown below:
|
|
126
|
-
|
|
127
|
-
```diff
|
|
128
|
-
import { type VanillaCalendarOption } from '@slickgrid-universal/common';
|
|
129
|
-
|
|
130
|
-
prepareGrid() {
|
|
131
|
-
this.columnDefinitions = [{
|
|
132
|
-
id: 'finish', field: 'finish', name: 'Finish',
|
|
133
|
-
editor: {
|
|
134
|
-
model: Editors.date,
|
|
135
|
-
- editorOptions: { range: { min: 'today' } } as VanillaCalendarOption,
|
|
136
|
-
+ editorOptions: { displayDateMin: 'today' } as VanillaCalendarOption,
|
|
137
|
-
}
|
|
138
|
-
}];
|
|
139
|
-
}
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
> [!NOTE]
|
|
143
|
-
> for a complete list of option changes, visit the Vanilla-Calendar-Pro [migration](https://github.com/uvarov-frontend/vanilla-calendar-pro/wiki/%5BMigration-from-v2.*.*%5D-New-API-for-all-options-and-actions-in-v3.0.0) page, which details every single options with their new option names.
|
|
144
|
-
|
|
145
|
-
## Grid Functionalities
|
|
146
|
-
|
|
147
|
-
## Services
|
|
148
|
-
|
|
149
|
-
The `GridService` has CRUD methods that were sometime returning a single item and other times an array of items and for that reason we had to rely on code like `onItemAdded.subscribe(item => { const items = Array.isArray(item) ? item : [item] }`. So for that reason, I decided to change the event names to plural and always return an array of items which is a lot more predictable.
|
|
150
|
-
|
|
151
|
-
- `onItemAdded` renamed to `onItemsAdded`
|
|
152
|
-
- `onItemDeleted` renamed to `onItemsDeleted`
|
|
153
|
-
- `onItemUpdated` renamed to `onItemsUpdated`
|
|
154
|
-
- `onItemUpserted` renamed to `onItemsUpserted`
|
|
155
|
-
|
|
156
|
-
---
|
|
157
|
-
|
|
158
|
-
## Future Changes (next major)
|
|
159
|
-
### Code being Deprecated (to be removed in the future, not before another year)
|
|
160
|
-
#### You can start using new properties and options shown below in v9.0 and above.
|
|
161
|
-
|
|
162
|
-
So when I created the project, I used a few TypeScript Enums and I though this was great but it turns out that all of these Enums end up in the final transpiled JS bundle. So in the next major, I'm planning to remove most of these Enums and replace them with string literal types (`type` instead of `enum`). So you should consider using string types as much and as soon as possible in all your new grids. Note that at the moment, they are only deprecations, and will only be dropped in the future (not now, but you should still consider this for the future), for example:
|
|
163
|
-
|
|
164
|
-
```diff
|
|
165
|
-
columns = [{
|
|
166
|
-
id: 'age', ...
|
|
167
|
-
- type: FieldType.number,
|
|
168
|
-
+ type: 'number',
|
|
169
|
-
}];
|
|
170
|
-
```
|
|
171
|
-
> Note that migrating from `FieldType` to string types was already doable for the past couple years, so this one is far from new.
|
|
172
|
-
|
|
173
|
-
Below are a list of Enums being deprecated and you should think about migrating them eventually because they will be removed in the next major release (whenever that happens, but that won't be before another year). Note that the list below are only a summary of these deprecations and replacements.
|
|
174
|
-
|
|
175
|
-
| Enum Name | from `enum` | to string `type` | Note |
|
|
176
|
-
| ----------- | ------------------- | ------------------- | ---- |
|
|
177
|
-
| `FileType` | `FieldType.boolean` | `'boolean'` |
|
|
178
|
-
| | `FileType.number` | `'number'` |
|
|
179
|
-
| - | - | - |
|
|
180
|
-
| `FieldType` | `FileType.csv` | `'csv'` |
|
|
181
|
-
| | `FileType.xlsx` | `'xlsx'` |
|
|
182
|
-
| - | - | - |
|
|
183
|
-
| `GridStateType` | `GridStateType.columns` | `'columns'` |
|
|
184
|
-
| | `GridStateType.filters` | `'filters'` |
|
|
185
|
-
| | `GridStateType.sorters` | `'sorters'` |
|
|
186
|
-
| - | - | - |
|
|
187
|
-
| `Operator` | `Operator.greaterThan` | `'>'` | See [Operator](https://github.com/ghiscoding/slickgrid-universal/blob/master/packages/common/src/enums/operatorString.type.ts) list for all available opeators |
|
|
188
|
-
| | `Operator.lessThanOrEqual` | `'<='` |
|
|
189
|
-
| | `Operator.contains` | `'Contains'` or `'CONTAINS'` | Operators are written as PascalCase |
|
|
190
|
-
| | `Operator.equal` | `'EQ'` |
|
|
191
|
-
| | `Operator.rangeExclusive` | `'RangeExclusive'` |
|
|
192
|
-
| - | - | - |
|
|
193
|
-
| `SortDirection` | `SortDirection.ASC` | `'ASC'` or `'asc'` |
|
|
194
|
-
| | `SortDirection.DESC` | `'DESC'` or `'desc'` |
|
|
195
|
-
| - | - | - |
|
|
196
|
-
|
|
197
|
-
##### deprecating `editorOptions` and `filterOptions`, they are being renamed as `options`
|
|
198
|
-
|
|
199
|
-
in order to make it easier to merge and simplify editor/filter options, I'm merging them into a single `options` property which will make it more easily transportable (you will be able to reuse the same `options` for both the editor/filter if need be). You can start using `options` in v9.0 and above.
|
|
200
|
-
|
|
201
|
-
```diff
|
|
202
|
-
import { type MultipleSelectOption } from '@slickgrid-universal/common';
|
|
203
|
-
|
|
204
|
-
columnDefinitions = [{
|
|
205
|
-
id: 'duration', field: 'duration', name: 'Duration',
|
|
206
|
-
editor: {
|
|
207
|
-
- editorOptions: {
|
|
208
|
-
+ options: {
|
|
209
|
-
maxHeight: 250, useSelectOptionLabelToHtml: true,
|
|
210
|
-
} as MultipleSelectOption,
|
|
211
|
-
},
|
|
212
|
-
filter: {
|
|
213
|
-
- filterOptions: {
|
|
214
|
-
+ options: {
|
|
215
|
-
maxHeight: 250, useSelectOptionLabelToHtml: true,
|
|
216
|
-
} as MultipleSelectOption,
|
|
217
|
-
}
|
|
218
|
-
}];
|
|
219
|
-
```
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
In some cases you might want a feature that is not yet available in `Angular-Slickgrid` but exists in the original `SlickGrid`, what should you do? Fear not, we got you covered. `Angular-Slickgrid` exposes the SlickGrid `Grid` and `DataView` objects through Event Emitters, these objects are created when Angular-Slickgrid initialize the grid (with `ngAfterViewInit`). The ones we want to use for our usage would be `onGridCreated` and `onDataviewCreated`, depending on which object you want to obtain.
|
|
2
|
-
|
|
3
|
-
**The new preferred way is now to use the `AngularGridInstance` via the `onAngularGridCreated` Event Emitter**
|
|
4
|
-
|
|
5
|
-
### Event Emitter
|
|
6
|
-
Angular-Slickgrid have the following Event Emitters that you can hook to
|
|
7
|
-
- `onAngularGridCreated`
|
|
8
|
-
- `onDataviewCreated`
|
|
9
|
-
- `onGridCreated`
|
|
10
|
-
- `onBeforeGridCreate`
|
|
11
|
-
- `onBeforeGridDestroy`
|
|
12
|
-
- `onAfterGridDestroyed`
|
|
13
|
-
|
|
14
|
-
The ones we want to use for our usage would be `onGridCreated` and `onDataviewCreated`, depending on which object you want to obtain.
|
|
15
|
-
|
|
16
|
-
### Grid & DataView objects through `onAngularGridCreated`
|
|
17
|
-
Since version `1.x`, we can now access the Slick `Grid` & `DataView` objects directly from the `AngularGridInstance` through the `(onAngularGridCreated)` Event Emitter, for example:
|
|
18
|
-
|
|
19
|
-
##### View
|
|
20
|
-
```html
|
|
21
|
-
<span id="radioAutoEdit">
|
|
22
|
-
<label class="radio-inline control-label" for="radioTrue">
|
|
23
|
-
<input type="radio" name="inlineRadioOptions" id="radioTrue" checked [value]="isAutoEdit" (change)="setAutoEdit(true)"> ON (single-click)
|
|
24
|
-
</label>
|
|
25
|
-
<label class="radio-inline control-label" for="radioFalse">
|
|
26
|
-
<input type="radio" name="inlineRadioOptions" id="radioFalse" [value]="isAutoEdit" (change)="setAutoEdit(false)"> OFF (double-click)
|
|
27
|
-
</label>
|
|
28
|
-
</span>
|
|
29
|
-
|
|
30
|
-
<angular-slickgrid gridId="grid2"
|
|
31
|
-
[columns]="columnDefinitions"
|
|
32
|
-
[options]="gridOptions"
|
|
33
|
-
[dataset]="dataset"
|
|
34
|
-
(onAngularGridCreated)="angularGridReady($event.detail">
|
|
35
|
-
</angular-slickgrid>
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
##### Component
|
|
39
|
-
```typescript
|
|
40
|
-
import { AngularGridInstance, Column, GridOption } from 'angular-slickgrid';
|
|
41
|
-
|
|
42
|
-
export class MyApp {
|
|
43
|
-
angularGrid: AngularGridInstance;
|
|
44
|
-
columnDefinitions: Column[];
|
|
45
|
-
gridOptions: GridOption;
|
|
46
|
-
dataset: any[];
|
|
47
|
-
isAutoEdit = true;
|
|
48
|
-
gridObj: any;
|
|
49
|
-
dataViewObj: any;
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
angularGridReady(angularGrid: AngularGridInstance) {
|
|
53
|
-
this.angularGrid = angularGrid;
|
|
54
|
-
this.gridObj = angularGrid.slickGrid;
|
|
55
|
-
this.dataViewObj = angularGrid.dataView;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/** Change dynamically `autoEdit` grid options */
|
|
59
|
-
setAutoEdit(isAutoEdit) {
|
|
60
|
-
this.isAutoEdit = isAutoEdit;
|
|
61
|
-
this.gridObj.setOptions({ autoEdit: isAutoEdit }); // change the grid option dynamically
|
|
62
|
-
return true;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
collapseAllGroups() {
|
|
66
|
-
this.dataviewObj.collapseAllGroups();
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
expandAllGroups() {
|
|
70
|
-
this.dataviewObj.expandAllGroups();
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
### SlickGrid Events (original SlickGrid)
|
|
76
|
-
You have access to all original SlickGrid events which you can subscribe, for more info refer to the [Docs - Grid & DataView Events](../events/Grid-&-DataView-Events.md)
|
|
77
|
-
|
|
78
|
-
### Usage
|
|
79
|
-
There's already all the necessary information on how to use this on the [Docs - Grid & DataView Events](../events/Grid-&-DataView-Events.md#view) page, so I suggest you to head over to that Documentation page on how to use the `SlickGrid` and `DataView` objects
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
## Dark Mode
|
|
2
|
-
|
|
3
|
-
When enabled (defaults to false), it will show the grid in Dark Mode by adding `slick-dark-mode` CSS class to the grid. Note that it is defined as a grid option because the grid uses a few elements that could be appended to the DOM `body` (e.g. ColumnPicker, GridMenu, LongTextEditor, CompositeEditorModal, ...) and when Dark Mode is enabled, it needs to inform all of these features that we are using Dark Mode (or Light Mode by default). So whenever any of these features are in play, and before it is appended to the `body`, it will add a `slick-dark-mode` (or `ms-dark-mode` for ms-select) CSS class to that element to let it know that we are in Dark Mode.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
### Toggle Light/Dark Mode
|
|
7
|
-
|
|
8
|
-
You can easily toggle light/dark mode by using `grid.setOptions()`
|
|
9
|
-
|
|
10
|
-
```ts
|
|
11
|
-
export class MyDemo {
|
|
12
|
-
isDarkModeEnabled = false;
|
|
13
|
-
gridOptions: GridOption;
|
|
14
|
-
|
|
15
|
-
prepareGrid() {
|
|
16
|
-
this.gridOptions = {
|
|
17
|
-
// ...
|
|
18
|
-
darkMode: this.isDarkModeEnabled;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
toggleDarkMode() {
|
|
23
|
-
this.isDarkModeEnabled = !this.isDarkModeEnabled;
|
|
24
|
-
this.sgb.slickGrid?.setOptions({ darkMode: this.isDarkModeEnabled });
|
|
25
|
-
|
|
26
|
-
// optionally update your local grid options as well
|
|
27
|
-
this.gridOptions = { ...this.gridOptions, darkMode: this.isDarkModeEnabled };
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
### How to Auto-Detect Dark Mode?
|
|
33
|
-
|
|
34
|
-
By default the grid will **not** automatically enable Dark Mode, neither read the browser's color scheme (the reason are mentioned in the description above). However, you could implement your own code to detect the color scheme (for modern browser only) when loading your browser and set it in your grid options. You can see a demo of that in the first grid of [Example 1](https://ghiscoding.github.io/Angular-Slickgrid/#/basic)
|
|
35
|
-
|
|
36
|
-
```ts
|
|
37
|
-
export class MyDemo {
|
|
38
|
-
gridOptions: GridOption;
|
|
39
|
-
|
|
40
|
-
// auto-detect browser's color scheme function
|
|
41
|
-
isBrowserDarkModeEnabled() {
|
|
42
|
-
return window.matchMedia?.('(prefers-color-scheme: dark)').matches ?? false;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
prepareGrid() {
|
|
46
|
-
this.gridOptions = {
|
|
47
|
-
// ...
|
|
48
|
-
darkMode: this.isBrowserDarkModeEnabled();
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### Composite Editor Modal (for Bootstrap users)
|
|
55
|
-
|
|
56
|
-
For `Bootstrap` users, it will also require the developer to add a `data-bs-theme="dark"` attribute which is also another reason why we added `darkMode` as a grid option. So for Bootstrap users, you will have to add this required attribute by yourself for the Dark Mode to display properly. If you forget to add this attribute, you might see some of the filter inputs and other sections displayed with a white background instead of an expected dark gray backgroud.
|
|
57
|
-
|
|
58
|
-
> **Note** the `onRendered` is a new lifecycle callback of Composite Editor Modal that was added specifically for this Bootstrap use case
|
|
59
|
-
|
|
60
|
-
```ts
|
|
61
|
-
this.compositeEditorInstance?.openDetails({
|
|
62
|
-
// ...
|
|
63
|
-
onRendered: (modalElm) => modalElm.dataset.bsTheme = 'dark',
|
|
64
|
-
});
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
### Grid Menu
|
|
68
|
-
By default there is no command for toggling the Dark Mode from the Grid Menu, however you can show the command at any time via the following settings:
|
|
69
|
-
|
|
70
|
-
```ts
|
|
71
|
-
export class MyDemo {
|
|
72
|
-
isDarkModeEnabled = false;
|
|
73
|
-
|
|
74
|
-
defineGrid() {
|
|
75
|
-
this.gridOptions = {
|
|
76
|
-
darkMode: this.isDarkModeEnabled,
|
|
77
|
-
gridMenu: {
|
|
78
|
-
hideToggleDarkModeCommand: false, // hidden by default
|
|
79
|
-
|
|
80
|
-
// you can optionally add extra command to toggle your own page styling as well
|
|
81
|
-
onCommand: (_, args) => {
|
|
82
|
-
// ...
|
|
83
|
-
},
|
|
84
|
-
|
|
85
|
-
// you can also change the icon and/or command name
|
|
86
|
-
iconToggleDarkModeCommand: 'mdi mdi-brightness-4',
|
|
87
|
-
commandLabels: {
|
|
88
|
-
toggleDarkModeCommand: 'Toggle Dark Mode',
|
|
89
|
-
},
|
|
90
|
-
}
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
### Tweaking Some Colors
|
|
97
|
-
|
|
98
|
-
The Dark Mode Theme was created by setting a few CSS variables, in some cases you might need to tweak some of these variables. Take a look at the Slickgrid-Universal [CSS variables](https://github.com/ghiscoding/slickgrid-universal/blob/670946dcedd330a70d2e88127a0042474e7a5348/packages/common/src/styles/_variables.scss#L976-L985) to see which variables were reassigned. Also note that if you're using other Themes like Material or Salesforce, then there's also other variables that are set (see [Material variables](https://github.com/ghiscoding/slickgrid-universal/blob/670946dcedd330a70d2e88127a0042474e7a5348/packages/common/src/styles/_variables-theme-material.scss#L159-L189) or [Salesforce variables](https://github.com/ghiscoding/slickgrid-universal/blob/670946dcedd330a70d2e88127a0042474e7a5348/packages/common/src/styles/_variables-theme-salesforce.scss#L202-L219))
|
|
99
|
-
|
|
100
|
-
> **Note** to support both Light and Dark Mode in the same Theme, we use CSS variables **only**. There some dedicated SASS variables for Dark Mode but very few, you can see them from the `_variables.scss` file at this [line](https://github.com/ghiscoding/slickgrid-universal/blob/dc5d402db61460a25e8921efeebda37ac1c18791/packages/common/src/styles/_variables.scss#L944-L953), if that is not enough then you'll want to override some colors for Dark Mode via the CSS variables. The best way to find the CSS variable assigned is to simply use your browser's debugger tool (F12).
|
package/docs/styling/styling.md
DELETED
|
@@ -1,250 +0,0 @@
|
|
|
1
|
-
#### index
|
|
2
|
-
- [Using Built-in Themes (CSS or SASS)](#csssass-styles)
|
|
3
|
-
- [Using CSS Variables](#using-css-variables-instead-of-sass)
|
|
4
|
-
- [Bootstrap & Other Frameworks](#bootstrap-support)
|
|
5
|
-
- [SVG Icons](#svg-icons)
|
|
6
|
-
|
|
7
|
-
### CSS/SASS Styles
|
|
8
|
-
Load the default Bootstrap theme style and/or customize it to your taste (customization can applied by using SASS)
|
|
9
|
-
|
|
10
|
-
#### CSS
|
|
11
|
-
Default compiled `css` (if you use the plain Bootstrap Theme CSS, you could simply add it to your `.angular-cli.json` file and be done with it)
|
|
12
|
-
```json
|
|
13
|
-
"styles": [
|
|
14
|
-
"../node_modules/bootstrap/dist/css/bootstrap.css",
|
|
15
|
-
"styles.css",
|
|
16
|
-
"../node_modules/angular-slickgrid/styles/css/slickgrid-theme-bootstrap.css"
|
|
17
|
-
],
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
> **Note** Bootstrap is optional, you can use any other framework, other themes are also available as CSS and SCSS file extensions
|
|
21
|
-
> `slickgrid-theme-default.css`, `slickgrid-theme-bootstrap.css`, `slickgrid-theme-material.css`, `slickgrid-theme-salesforce.css`
|
|
22
|
-
|
|
23
|
-
### Using built-in Themes
|
|
24
|
-
The Material & Salesforce Themes are using SVGs internally for the icons used by the grid. Each built-in Themes have CSS and SASS files associated with each theme. To take benefit of this, just import whichever CSS/SASS file associated with the Theme you wish to use.
|
|
25
|
-
|
|
26
|
-
##### with CSS
|
|
27
|
-
```scss
|
|
28
|
-
/* style.css */
|
|
29
|
-
@use '@slickgrid-universal/common/dist/styles/css/slickgrid-theme-default.css';
|
|
30
|
-
|
|
31
|
-
// or other Themes
|
|
32
|
-
@use '@slickgrid-universal/common/dist/styles/css/slickgrid-theme-bootstrap.css';
|
|
33
|
-
@use '@slickgrid-universal/common/dist/styles/styles/css/slickgrid-theme-material.css';
|
|
34
|
-
@use '@slickgrid-universal/common/dist/styles/css/slickgrid-theme-salesforce.css';
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
##### with SASS
|
|
38
|
-
```scss
|
|
39
|
-
/* style.scss */
|
|
40
|
-
@use '@slickgrid-universal/common/dist/styles/sass/slickgrid-theme-default.scss' with (
|
|
41
|
-
$slick-primary-color: green,
|
|
42
|
-
$slick-cell-odd-background-color: lightyellow,
|
|
43
|
-
$slick-row-mouse-hover-color: lightgreen
|
|
44
|
-
);
|
|
45
|
-
|
|
46
|
-
// or other Themes
|
|
47
|
-
@use '@slickgrid-universal/common/dist/styles/sass/slickgrid-theme-material.scss';
|
|
48
|
-
@use '@slickgrid-universal/common/dist/styles/sass/slickgrid-theme-salesforce.scss';
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
### Using CSS Variables _(instead of SASS)_
|
|
52
|
-
You could change the SlickGrid styling with your own customization using [CSS Variables](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties). The variables that you can use (over 800 of them) are all predefined as SASS variables in the [_variables.scss](https://github.com/ghiscoding/slickgrid-universal/blob/master/packages/common/src/styles/_variables.scss) file, you will simply have to rename the `$slick-` prefix with a `--slick-` prefix to the variable name to use them as CSS Variables. To be clear, you don't need SASS but the variables names were all declared as SASS and that is what the lib will use internally but you can optionally use them all as plain CSS Variables.
|
|
53
|
-
|
|
54
|
-
For example, if we take the following 3 SASS variables (`$slick-header-menu-display`, `$slick-primary-color-dark` and `$slick-header-filter-row-border-bottom`) we can use the CSS Variables equivalent as the following
|
|
55
|
-
|
|
56
|
-
```css
|
|
57
|
-
/* use :host (local) or :root (global) */
|
|
58
|
-
:root {
|
|
59
|
-
--slick-header-menu-display: inline-block;
|
|
60
|
-
--slick-primary-color-dark: pink;
|
|
61
|
-
--slick-header-filter-row-border-bottom: 2px solid pink;
|
|
62
|
-
}
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
> **Note:** you could use `:host` to only change current grid styling, **however** there are many DOM elements that are appended to the DOM `body` (Grid Menu, Column Picker, Select Filter/Editor, Context Menu, ...) and the styles **will not** be applied when simply using `:host` and so in most cases you would want to use `:root` (if possible) to make a global change which will also work with elements appended to the `body`. Also note that `:root` is not available in Salesforce LWC and so you unfortunately won't be able to style everything in Salesforce.
|
|
66
|
-
|
|
67
|
-
### Using Custom SVGs with SASS
|
|
68
|
-
You could use Custom SVGs and create your own Theme and/or a different set of SVG Icons, each of the icons used in Slickgrid-Universal has an associated SASS variables ending with the suffix `"icon-svg-path"` which allow you to override any of the SVG vector path. All SVG icons are generated by following AntFu's [icons in pure CSS](https://antfu.me/posts/icons-in-pure-css) approach. If you want create your own SVGs in pure CSS, you can use the `generateSvgStyle()` function from our [`sass-utilities.scss`](https://github.com/ghiscoding/slickgrid-universal/blob/master/packages/common/src/styles/sass-utilities.scss) (take a look at the [`slickgrid-icons.scss`](https://github.com/ghiscoding/slickgrid-universal/blob/master/packages/common/src/styles/slickgrid-icons.scss) on its usage)
|
|
69
|
-
|
|
70
|
-
##### with SVG
|
|
71
|
-
```scss
|
|
72
|
-
$primary-color: blue;
|
|
73
|
-
|
|
74
|
-
// then on the last line, import the Theme that you wish to override
|
|
75
|
-
@use '@slickgrid-universal/common/dist/styles/sass/slickgrid-theme-default.scss' with (
|
|
76
|
-
$slick-primary-color: $primary-color,
|
|
77
|
-
$slick-icon-group-color: $primary-color,
|
|
78
|
-
$slick-icon-group-collapsed-svg-path: "M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z",
|
|
79
|
-
$slick-icon-group-expanded-svg-path: "M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z",
|
|
80
|
-
$slick-icon-group-font-size: 13px
|
|
81
|
-
);
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
> **Note** since the SVG are generated by a SASS function, you can easily override an SVG path in SASS but that is not the case with CSS variable. We still have a way to override an SVG via CSS variable but it requires to override the entire SVG content (not just its path) as can be seen below (also notice that the CSS variable is named without the `"-path"` suffix and also note that the URL must be encoded)
|
|
85
|
-
|
|
86
|
-
```css
|
|
87
|
-
:root {
|
|
88
|
-
--slick-checkbox-icon-checked-svg: url('data:image/svg+xml;utf8,%3Csvg viewBox="0 0 24 24" display="inline-block" height="1em" width="1em" vertical-align="text-bottom" xmlns="http://www.w3.org/2000/svg" %3E%3Cpath fill="currentColor" d="M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"/%3E%3C/svg%3E');
|
|
89
|
-
}
|
|
90
|
-
```
|
|
91
|
-
the SASS equivalent is a lot easier to override
|
|
92
|
-
```scss
|
|
93
|
-
$slick-checkbox-icon-checked-svg-path: "M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z"
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
### SVG icons
|
|
97
|
-
The project has a few built-in icons (sort, grouping, row detail, row move, row selection) and you can change them via SASS (or CSS with a bit more work). For that reason, all Styling Themes Since this release now has pure CSS SVG icons, I decided to delete any Font-Awesome references (mostly in the Bootstrap Theme) because all the built-in icons are now all SVG icons (sort, grouping, row detail, row move) (you can change them using SASS). However, there are a few plugins that use external icons via CSS classes (mostly all menu plugins like Header Menu, Grid Menu, Content Menu, ...) and for that reason **all Styling Themes now include default SVG icons** (even the Bootstrap Theme).
|
|
98
|
-
|
|
99
|
-
What if you want to use your own font/SVG library?
|
|
100
|
-
This can be answered in 2 parts:
|
|
101
|
-
1. the built-in icons can only be changed via SASS (or CSS with extra work), see above on how to change them.
|
|
102
|
-
2. for all other area using icons via CSS classes (e.g. all menu plugins), you can use the "lite" Themes and then make sure to update all the menu plugins with the correct CSS classes, for example the global grid options of the Grid Menu is configured with the following CSS classes and you'll want to remap them with the correct CSS classes to fit your need:
|
|
103
|
-
|
|
104
|
-
```ts
|
|
105
|
-
// default global grid options
|
|
106
|
-
export const GlobalGridOptions = {
|
|
107
|
-
gridMenu: {
|
|
108
|
-
iconCssClass: 'mdi mdi-menu',
|
|
109
|
-
iconClearAllFiltersCommand: 'mdi mdi-filter-remove-outline',
|
|
110
|
-
iconClearAllSortingCommand: 'mdi mdi-sort-variant-off',
|
|
111
|
-
iconClearFrozenColumnsCommand: 'mdi mdi-pin-off-outline',
|
|
112
|
-
iconExportCsvCommand: 'mdi mdi-download',
|
|
113
|
-
iconExportExcelCommand: 'mdi mdi-file-excel-outline',
|
|
114
|
-
iconExportTextDelimitedCommand: 'mdi mdi-download',
|
|
115
|
-
iconRefreshDatasetCommand: 'mdi mdi-sync',
|
|
116
|
-
iconToggleDarkModeCommand: 'mdi mdi-brightness-4',
|
|
117
|
-
iconToggleFilterCommand: 'mdi mdi-flip-vertical',
|
|
118
|
-
iconTogglePreHeaderCommand: 'mdi mdi-flip-vertical',
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
and here's the file size difference with the "lite" version
|
|
124
|
-
|
|
125
|
-

|
|
126
|
-
|
|
127
|
-
### How to change SVG color?
|
|
128
|
-
#### The following works for both CSS and SASS
|
|
129
|
-
The new version 5.x of this project is now creating SVG icons as pure CSS, this mean that you can colorize the icons the same way that you would change a text color. We also provide a few different color CSS classes which start with the prefixes `$color-` or `$text-color-` (e.g. `$color-primary`).
|
|
130
|
-
|
|
131
|
-
### SVG Colors - CSS Classes
|
|
132
|
-
Since SVG can now be colorize via the `color` the same as any other text, there isn't much to do. However a small subset of default colors is provided that can be used with the SVG icons or any text (basically took the same colors used by Bootstrap [here](https://getbootstrap.com/docs/4.5/utilities/colors/)). We also added a `light` and `dark` shades for of each colors (except `color-light`, `color-dark` since there's no need), they both use a 6% lighter/darker shades (you can override the shade with `$color-lighten-percentage` and the same for darken). These colors can be used with the `color-X` (for example `color-primary`), also note that the primary color will follow your `$slick-primary-color` that you might have already overriden (it could also be different in each styling theme, shown below is the Salesforce theme colors). If you find that the colors are not exactly the colors you're looking for, we've also took some colors taken from [UiKit](https://getuikit.com/) and tagged them as `color-alt-X`.
|
|
133
|
-
|
|
134
|
-
**NOTE 1:** The `colors.scss` is **only** included in the Material and Salesforce Themes since those are the only 2 themes currently using SVGs. If you wish to use these colors then simply add the necessary css/scss file.
|
|
135
|
-
|
|
136
|
-

|
|
137
|
-
|
|
138
|
-
```scss
|
|
139
|
-
// SASS colors
|
|
140
|
-
$text-color-primary: $slick-primary-color;
|
|
141
|
-
$text-color-secondary: #6c757d;
|
|
142
|
-
$text-color-success: #28a745;
|
|
143
|
-
$text-color-danger: #dc3545;
|
|
144
|
-
$text-color-warning: #ffc107;
|
|
145
|
-
$text-color-info: #17a2b8;
|
|
146
|
-
$text-color-light: #f8f9fa;
|
|
147
|
-
$text-color-dark: #343a40;
|
|
148
|
-
$text-color-body: #212529;
|
|
149
|
-
$text-color-muted: #6c757d;
|
|
150
|
-
$text-color-white: #ffffff;
|
|
151
|
-
$text-color-alt-default: #1e87f0;
|
|
152
|
-
$text-color-alt-warning: #faa05a;
|
|
153
|
-
$text-color-alt-danger: #f0506e;
|
|
154
|
-
$text-color-alt-success: #32d296;
|
|
155
|
-
$text-color-se-primary: #3dcd58;
|
|
156
|
-
$text-color-se-link: #42b4e6;
|
|
157
|
-
$text-color-se-link-dark: #337ab7;
|
|
158
|
-
$text-color-se-danger: #b10043;
|
|
159
|
-
$text-color-se-secondary: #9fa0a4;
|
|
160
|
-
$text-color-se-warning: #e47f00;
|
|
161
|
-
$text-color-se-warning-light: #ffd100;
|
|
162
|
-
|
|
163
|
-
// lighter/darker shades
|
|
164
|
-
$text-color-lighten-percentage: 6%;
|
|
165
|
-
$text-color-darken-percentage: 6%;
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
##### HTML Color Test
|
|
169
|
-
```html
|
|
170
|
-
<div>
|
|
171
|
-
<span class="text-color-primary"> text-color-primary <i class="mdi mdi-help-circle"></i></span> -
|
|
172
|
-
<span class="text-color-primary-light"> text-color-primary-light <i class="mdi mdi-help-circle"></i></span> -
|
|
173
|
-
<span class="text-color-primary-dark"> text-color-primary-dark <i class="mdi mdi-help-circle"></i></span>
|
|
174
|
-
</div>
|
|
175
|
-
<div>
|
|
176
|
-
<span class="text-color-secondary"> text-color-secondary <i class="mdi mdi-help-circle"></i></span> -
|
|
177
|
-
<span class="text-color-secondary-light"> text-color-secondary-light <i class="mdi mdi-help-circle"></i></span> -
|
|
178
|
-
<span class="text-color-secondary-dark"> text-color-secondary-dark <i class="mdi mdi-help-circle"></i></span>
|
|
179
|
-
</div>
|
|
180
|
-
<div>
|
|
181
|
-
<span class="text-color-success"> text-color-success <i class="mdi mdi-help-circle"></i></span> -
|
|
182
|
-
<span class="text-color-success-light"> text-color-success-light <i class="mdi mdi-help-circle"></i></span> -
|
|
183
|
-
<span class="text-color-success-dark"> text-color-success-dark <i class="mdi mdi-help-circle"></i></span>
|
|
184
|
-
</div>
|
|
185
|
-
<div>
|
|
186
|
-
<span class="text-color-danger"> text-color-danger <i class="mdi mdi-help-circle"></i></span> -
|
|
187
|
-
<span class="text-color-danger-light"> text-color-danger-light <i class="mdi mdi-help-circle"></i></span> -
|
|
188
|
-
<span class="text-color-danger-dark"> text-color-danger-dark <i class="mdi mdi-help-circle"></i></span>
|
|
189
|
-
</div>
|
|
190
|
-
<div>
|
|
191
|
-
<span class="text-color-warning"> text-color-warning <i class="mdi mdi-help-circle"></i></span> -
|
|
192
|
-
<span class="text-color-warning-light"> text-color-warning-light <i class="mdi mdi-help-circle"></i></span> -
|
|
193
|
-
<span class="text-color-warning-dark"> text-color-warning-dark <i class="mdi mdi-help-circle"></i></span>
|
|
194
|
-
</div>
|
|
195
|
-
<div>
|
|
196
|
-
<span class="text-color-info"> text-color-info <i class="mdi mdi-help-circle"></i></span> -
|
|
197
|
-
<span class="text-color-info-light"> text-color-info-light <i class="mdi mdi-help-circle"></i></span> -
|
|
198
|
-
<span class="text-color-info-dark"> text-color-info-dark <i class="mdi mdi-help-circle"></i></span>
|
|
199
|
-
</div>
|
|
200
|
-
<div>
|
|
201
|
-
<span class="text-color-body"> text-color-body <i class="mdi mdi-help-circle"></i></span> -
|
|
202
|
-
<span class="text-color-body-light"> text-color-body-light <i class="mdi mdi-help-circle"></i></span> -
|
|
203
|
-
<span class="text-color-body-dark"> text-color-body-dark <i class="mdi mdi-help-circle"></i></span>
|
|
204
|
-
</div>
|
|
205
|
-
<div>
|
|
206
|
-
<span class="text-color-muted"> text-color-muted <i class="mdi mdi-help-circle"></i></span> -
|
|
207
|
-
<span class="text-color-muted-light"> text-color-muted-light <i class="mdi mdi-help-circle"></i></span> -
|
|
208
|
-
<span class="text-color-muted-dark"> text-color-muted-dark <i class="mdi mdi-help-circle"></i></span>
|
|
209
|
-
</div>
|
|
210
|
-
<div>
|
|
211
|
-
<span class="text-color-dark"> text-color-dark <i class="mdi mdi-help-circle"></i></span>
|
|
212
|
-
</div>
|
|
213
|
-
<div style="background-color: rgb(34, 34, 34)">
|
|
214
|
-
<span class="text-color-light"> text-color-light <i class="mdi mdi-help-circle"></i></span>
|
|
215
|
-
</div>
|
|
216
|
-
<div style="background-color: rgb(34, 34, 34)">
|
|
217
|
-
<span class="text-color-white"> text-color-white <i class="mdi mdi-help-circle"></i></span>
|
|
218
|
-
</div>
|
|
219
|
-
<div>
|
|
220
|
-
<span class="text-color-alt-default"> text-color-alt-default <i class="mdi mdi-help-circle"></i></span> -
|
|
221
|
-
<span class="text-color-alt-default-light"> text-color-alt-default-light <i class="mdi mdi-help-circle"></i></span> -
|
|
222
|
-
<span class="text-color-alt-default-dark"> text-color-alt-default-dark <i class="mdi mdi-help-circle"></i></span>
|
|
223
|
-
</div>
|
|
224
|
-
<div>
|
|
225
|
-
<span class="text-color-alt-warning"> text-color-alt-warning <i class="mdi mdi-help-circle"></i></span> -
|
|
226
|
-
<span class="text-color-alt-warning-light"> text-color-alt-warning-light <i class="mdi mdi-help-circle"></i></span> -
|
|
227
|
-
<span class="text-color-alt-warning-dark"> text-color-alt-warning-dark <i class="mdi mdi-help-circle"></i></span>
|
|
228
|
-
</div>
|
|
229
|
-
<div>
|
|
230
|
-
<span class="text-color-alt-success"> text-color-alt-success <i class="mdi mdi-help-circle"></i></span> -
|
|
231
|
-
<span class="text-color-alt-success-light"> text-color-alt-success-light <i class="mdi mdi-help-circle"></i></span> -
|
|
232
|
-
<span class="text-color-alt-success-dark"> text-color-alt-success-dark <i class="mdi mdi-help-circle"></i></span>
|
|
233
|
-
</div>
|
|
234
|
-
<div>
|
|
235
|
-
<span class="text-color-alt-danger"> text-color-alt-danger <i class="mdi mdi-help-circle"></i></span> -
|
|
236
|
-
<span class="text-color-alt-danger-light"> text-color-alt-danger-light <i class="mdi mdi-help-circle"></i></span> -
|
|
237
|
-
<span class="text-color-alt-danger-dark"> text-color-alt-danger-dark <i class="mdi mdi-help-circle"></i></span>
|
|
238
|
-
</div>
|
|
239
|
-
<div><span class="text-color-se-primary"> text-color-se-primary <i class="mdi mdi-help-circle"></i></span></div>
|
|
240
|
-
<div>
|
|
241
|
-
<span class="text-color-se-link"> text-color-se-link <i class="mdi mdi-help-circle"></i></span> -
|
|
242
|
-
<span class="text-color-se-link-dark"> text-color-se-link-dark <i class="mdi mdi-help-circle"></i></span>
|
|
243
|
-
</div>
|
|
244
|
-
<div><span class="text-color-se-secondary"> text-color-se-secondary <i class="mdi mdi-help-circle"></i></span></div>
|
|
245
|
-
<div><span class="text-color-se-danger"> text-color-se-danger <i class="mdi mdi-help-circle"></i></span></div>
|
|
246
|
-
<div>
|
|
247
|
-
<span class="text-color-se-warning"> text-color-se-warning <i class="mdi mdi-help-circle"></i></span> -
|
|
248
|
-
<span class="text-color-se-warning-light"> text-color-se-warning-light <i class="mdi mdi-help-circle"></i></span>
|
|
249
|
-
</div>
|
|
250
|
-
```
|