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,29 +0,0 @@
|
|
|
1
|
-
You might find yourself re-using the same configurations over and over, in that case we got you covered. You can change any of the global options directly in your App Module through `forRoot` which accept an optional object of Grid Options.
|
|
2
|
-
|
|
3
|
-
```typescript
|
|
4
|
-
import { AngularSlickgridModule } from 'angular-slickgrid';
|
|
5
|
-
|
|
6
|
-
@NgModule({
|
|
7
|
-
declarations: [ /*...*/ ],
|
|
8
|
-
imports: [
|
|
9
|
-
AngularSlickgridModule.forRoot({
|
|
10
|
-
enableAutoResize: true,
|
|
11
|
-
autoResize: {
|
|
12
|
-
containerId: 'grid-container',
|
|
13
|
-
sidePadding: 15
|
|
14
|
-
},
|
|
15
|
-
enableFiltering: true,
|
|
16
|
-
enableCellNavigation: true,
|
|
17
|
-
enablePagination: true,
|
|
18
|
-
enableRowSelection: true,
|
|
19
|
-
enableTranslate: true,
|
|
20
|
-
//...
|
|
21
|
-
}),
|
|
22
|
-
],
|
|
23
|
-
providers: [ /*...*/ ]
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
export class AppModule { }
|
|
27
|
-
```
|
|
28
|
-
### List of Global Options
|
|
29
|
-
For the complete list of available Grid Option, you can take a look at the [Default Grid Options](https://github.com/ghiscoding/slickgrid-universal/blob/master/frameworks/angular-slickgrid/src/app/angular-slickgrid/global-grid-options.ts) file and/or technically any of the options from the [grid options - interface](https://github.com/ghiscoding/slickgrid-universal/blob/master/frameworks/angular-slickgrid/src/app/angular-slickgrid/models/gridOption.interface.ts) are configurable.
|
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
##### index
|
|
2
|
-
- [Global Options](#global-autoresize-options)
|
|
3
|
-
- [Delay a Grid Resize](#delay-a-grid-resize)
|
|
4
|
-
- [Last Resize Dimension](#last-resize-dimensions)
|
|
5
|
-
- [Pause Resizer](#pause-the-resizer-when-auto-resize-is-enabled)
|
|
6
|
-
- [Add Grid Min/Max Height/Width](#add-grid-minmax-heightwidth)
|
|
7
|
-
- [Add some Padding to the Calculation](#add-some-padding-to-the-calculation)
|
|
8
|
-
- [Calculate Size by Container or Window Element](#calculate-size-by-container-or-window-element)
|
|
9
|
-
- [Detect Resize by Container (Resize Observer) or Window](#detect-resize-by-container-or-window)
|
|
10
|
-
- [Resize Grid with Fixed Dimensions](#resize-the-grid-with-fixed-dimensions)
|
|
11
|
-
- [Troubleshooting](#troubleshooting)
|
|
12
|
-
|
|
13
|
-
### Description
|
|
14
|
-
Almost all grids from the demos are using the auto-resize feature, and the feature does what its name suggest, it resizes the grid to fill entirely within the container it is contained. It also automatically resizes when the user changes its browser size.
|
|
15
|
-
|
|
16
|
-
### Demo
|
|
17
|
-
[Demo Page](https://ghiscoding.github.io/Angular-Slickgrid/#/resize-by-content) / [Demo Component](https://github.com/ghiscoding/slickgrid-universal/blob/master/frameworks/angular-slickgrid/src/demos/examples/grid-resize-by-content.component.ts)
|
|
18
|
-
|
|
19
|
-
### Usage
|
|
20
|
-
All you need to do is enable the Grid Option `enableAutoResize: true` and provide necessary information in the `autoResize`, at minimum you should provide your container an id or class name.
|
|
21
|
-
|
|
22
|
-
##### View
|
|
23
|
-
```html
|
|
24
|
-
<div id="demo-container">
|
|
25
|
-
<angular-slickgrid gridId="grid1"
|
|
26
|
-
[columns]="columnDefinitions"
|
|
27
|
-
[options]="gridOptions"
|
|
28
|
-
[dataset]="dataset">
|
|
29
|
-
</angular-slickgrid>
|
|
30
|
-
</div>
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
```ts
|
|
34
|
-
this.columnDefinitions = [
|
|
35
|
-
// ...
|
|
36
|
-
];
|
|
37
|
-
|
|
38
|
-
this.gridOptions = {
|
|
39
|
-
autoResize: {
|
|
40
|
-
container: '#demo-container' // container DOM selector
|
|
41
|
-
},
|
|
42
|
-
enableAutoResize: true
|
|
43
|
-
};
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
#### AutoResize Options
|
|
47
|
-
There are multiple options you can pass to the `autoResize` in the Grid Options, you can see them all in the [autoResizeOption.interface](https://github.com/ghiscoding/slickgrid-universal/blob/master/packages/common/src/interfaces/resizerOption.interface.ts)
|
|
48
|
-
|
|
49
|
-
### Delay a Grid Resize
|
|
50
|
-
Note that you can also delay the resize via the 1st argument to the `resizeGrid()` call.
|
|
51
|
-
```ts
|
|
52
|
-
openSidebar() {
|
|
53
|
-
this.isSidebarOpen = true;
|
|
54
|
-
const delay = 100; // delay in milliseconds
|
|
55
|
-
this.sgb.resizerService.resizeGrid(delay);
|
|
56
|
-
}
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
### Last Resize Dimensions
|
|
60
|
-
The `resizeGrid()` returns a promise with the last used resize dimensions, that might be helpful to resize and fix another grid or DOM element height/width. For example, we use that in our project to resize a sidebar element to become the same height as the main grid.
|
|
61
|
-
```ts
|
|
62
|
-
async openSidebar() {
|
|
63
|
-
this.isSidebarOpen = true;
|
|
64
|
-
|
|
65
|
-
// resize the CPA list grid and resize the sidebar to the same height as the grid with it's pagination
|
|
66
|
-
const lastDimensions = await this.sgb.resizerService.resizeGrid();
|
|
67
|
-
if (lastDimensions && lastDimensions.heightWithPagination) {
|
|
68
|
-
this.sidebarMaxHeight = `${lastDimensions.heightWithPagination}px`;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
```
|
|
72
|
-
### Pause the resizer (when auto-resize is enabled)
|
|
73
|
-
User can pause the resizer at any time and later resume the auto-resize. This might be useful in some use case, for example if you don't want the grid to resize after a certain event, you can pause the resizer before the action.
|
|
74
|
-
|
|
75
|
-
##### View
|
|
76
|
-
```html
|
|
77
|
-
<button class="btn btn-default btn-sm"
|
|
78
|
-
(click)="togglePauseResizer()">
|
|
79
|
-
Pause auto-resize: <b>{{resizerPaused}}</b>
|
|
80
|
-
</button>
|
|
81
|
-
|
|
82
|
-
<angular-slickgrid gridId="grid2"
|
|
83
|
-
[columns]="columnDefinitions"
|
|
84
|
-
[options]="gridOptions"
|
|
85
|
-
[dataset]="dataset"
|
|
86
|
-
(onAngularGridCreated)="angularGridReady($event.detail)">
|
|
87
|
-
</angular-slickgrid>
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
##### Component
|
|
91
|
-
```ts
|
|
92
|
-
export class MyComponent {
|
|
93
|
-
angularGrid: AngularGridInstance;
|
|
94
|
-
resizerPaused = false;
|
|
95
|
-
|
|
96
|
-
angularGridReady(angularGrid: AngularGridInstance) {
|
|
97
|
-
this.angularGrid = angularGrid;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
togglePauseResizer() {
|
|
101
|
-
this.resizerPaused = !this.resizerPaused;
|
|
102
|
-
this.angularGrid.resizerService.pauseResizer(this.resizerPaused);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
### Add Grid Min/Max Height/Width
|
|
108
|
-
You can set some values for minimum, maximum grid height and width that will be analyzed while executing the calculate available space for the grid.
|
|
109
|
-
|
|
110
|
-
```ts
|
|
111
|
-
this.gridOptions = {
|
|
112
|
-
enableAutoResize: true,
|
|
113
|
-
autoResize: {
|
|
114
|
-
maxHeight: 600,
|
|
115
|
-
minHeight: 250,
|
|
116
|
-
maxWidth: 800,
|
|
117
|
-
minWidth: 200;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
### Add some Padding to the Calculation
|
|
123
|
-
Sometime the resizer is very close to the perfect size but you can just want to remove a bit more pixels for the total calculation, you can do that by simply adding paddings as shown below
|
|
124
|
-
|
|
125
|
-
```ts
|
|
126
|
-
this.gridOptions = {
|
|
127
|
-
enableAutoResize: true,
|
|
128
|
-
autoResize: {
|
|
129
|
-
rightPadding: 20, // note that there's no left option since we don't control the grid position
|
|
130
|
-
bottomPadding: 25, // a good example of this usage is when the user adds Pagination, it adds a bottomPadding of about 30px
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
### Calculate Size by Container or Window Element
|
|
136
|
-
The default way of calculating the available size is by the window element but in some rare case you might need to calculate by the container element.
|
|
137
|
-
So if you do want to calculate the size by the container, then you can write it as shown below (for more info, see Angular-Slickgrid issue [#175](https://github.com/ghiscoding/Angular-Slickgrid/issues/175))
|
|
138
|
-
|
|
139
|
-
```ts
|
|
140
|
-
this.gridOptions = {
|
|
141
|
-
enableAutoResize: true,
|
|
142
|
-
autoResize: {
|
|
143
|
-
calculateAvailableSizeBy: 'container' // the 2 options would be 'container' | 'window'
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
### Detect resize by Container or Window
|
|
149
|
-
The default way the grid detects a resize is by window. In other words, when the window resizes the grid calculates the width and height the grid should be and resizes to that.
|
|
150
|
-
|
|
151
|
-
It's also possible to let the grid detect a resize by the grid container element. In other words, when the grid container element resizes the grid calculates the width and height it should be and resizes to that. Technically a `ResizeObserver` is used which may not be [available](https://caniuse.com/resizeobserver) in all browsers you target, if that is the case you could install a polyfill like [resize-observer-polyfill](https://www.npmjs.com/package/resize-observer-polyfill). When detecting container resizes it could make sense to also calculate available size by container.
|
|
152
|
-
|
|
153
|
-
```ts
|
|
154
|
-
this.gridOptions = {
|
|
155
|
-
enableAutoResize: true,
|
|
156
|
-
autoResize: {
|
|
157
|
-
container: '#demo-container',
|
|
158
|
-
resizeDetection: 'container', // the 2 options would be 'container' | 'window'
|
|
159
|
-
calculateAvailableSizeBy: 'container'
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
For example you could add a resize handle to the grid container (shown on the bottom right corner):
|
|
165
|
-
```html
|
|
166
|
-
<div id="demo-container" style="resize:both; overflow:auto;">
|
|
167
|
-
<angular-slickgrid gridId="grid1"
|
|
168
|
-
[columns]="columnDefinitions"
|
|
169
|
-
[options]="gridOptions"
|
|
170
|
-
[dataset]="dataset">
|
|
171
|
-
</angular-slickgrid>
|
|
172
|
-
</div>
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
### Resize the Grid with fixed Dimensions
|
|
176
|
-
You can call `resizeGrid()` method at any point in time by passing dimensions as the 2nd argument of that method, that would in terms bypass the auto-resize (if enabled that is).
|
|
177
|
-
|
|
178
|
-
##### Component
|
|
179
|
-
```ts
|
|
180
|
-
export class MyComponent {
|
|
181
|
-
angularGrid: AngularGridInstance;
|
|
182
|
-
|
|
183
|
-
angularGridReady(angularGrid: AngularGridInstance) {
|
|
184
|
-
this.angularGrid = angularGrid;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
togglePauseResizer() {
|
|
188
|
-
const delay = 0;
|
|
189
|
-
this.angularGrid.resizerService.gridResize(delay, { height: 800: width: 600 });
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
## Troubleshooting
|
|
195
|
-
### Why is my grid not resizing?
|
|
196
|
-
1. Have you put your grid in a `<div>` container referenced in your `autoResize` grid options?
|
|
197
|
-
2. I have the container defined but it still doesn't resize, why?
|
|
198
|
-
#### Possible reason
|
|
199
|
-
This feature uses `window.resize` event and if you change the size of your DIV programmatically, it will **not** change the size of your grid, mainly because that action did not trigger a `window.resize` event. However to circumvent this issue, you can call the auto-resize of the grid manually with the `ResizerService`. For example, we change the DIV CSS classes to use a different Bootstrap container size, that won't trigger an event and we have to manually call the resize, below is the code to do that.
|
|
200
|
-
|
|
201
|
-
```ts
|
|
202
|
-
angularGridReady(angularGrid: AngularGridInstance) {
|
|
203
|
-
this.angularGrid = angularGrid;
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
closeSidebar() {
|
|
207
|
-
this.isSidebarOpen = false;
|
|
208
|
-
this.angularGrid.resizerService.resizeGrid();
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
openSidebar() {
|
|
212
|
-
this.isSidebarOpen = true;
|
|
213
|
-
this.angularGrid.resizerService.resizeGrid();
|
|
214
|
-
}
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
#### Possible reason 2
|
|
218
|
-
The resizer is **not perfect** and the DOM elements might not always show the correct height/width, in some cases certain `<div>` could show in the UI but return a height of `0px` and that will throw off the resizer. If that is your problem then search for the `clearfix` hack, this css trick [article](https://css-tricks.com/snippets/css/clear-fix/) might help you with that. In some other cases, you might just need to add some extra padding, that is why the resizer has the 2 properties built for that, `rightPadding` and `bottomPadding` that can be provided to the `autoResize` grid option.
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
The `Grid Menu` (also known as the `Hamburger Menu`) is now part of the project and is enabled by default.
|
|
2
|
-
|
|
3
|
-
## How to use it?
|
|
4
|
-
#### It's Enabled by default
|
|
5
|
-
Technically, it's enable by default and so you don't have anything to do to enjoy it. However if you want to customize the content of the Grid Menu, then continue reading.
|
|
6
|
-
|
|
7
|
-
### Demo
|
|
8
|
-
[Demo Page](https://ghiscoding.github.io/Angular-Slickgrid/#/gridmenu) / [Demo Component](https://github.com/ghiscoding/slickgrid-universal/blob/master/frameworks/angular-slickgrid/src/demos/examples/grid-menu.component.ts)
|
|
9
|
-
|
|
10
|
-
## Customization
|
|
11
|
-
### Column Picker
|
|
12
|
-
The Grid Menu comes, by default, with a `Column Picker`. This brings an easy way to show/hide certain column(s) from the grid. This functionality was copied from the [Column Picker Plugin](https://github.com/ghiscoding/angular-slickgrid/wiki/SlickGrid-Controls-&-Plugins#column-picker) and brought over to the Grid Menu.
|
|
13
|
-
|
|
14
|
-
### Custom Commands
|
|
15
|
-
|
|
16
|
-
The Grid Menu also comes, by default, with a list of built-in custom commands (all their `positionOrder` are in the reserved range of 40 to 60)
|
|
17
|
-
- Clear all Filters (you can hide it with `hideClearAllFiltersCommand: true`)
|
|
18
|
-
- Clear all Sorting (you can hide it with `hideClearAllSortingCommand: true`)
|
|
19
|
-
- Toggle the Filter Row (you can hide it with `hideToggleFilterCommand: true`)
|
|
20
|
-
- _Export to CSV_ (you can hide it with `hideExportCsvCommand: true`)
|
|
21
|
-
- _Export to Text Delimited (you can hide it with `hideExportTextDelimitedCommand: true`)
|
|
22
|
-
- _Refresh Dataset_, only shown when using Backend Service API (you can hide it with `hideRefreshDatasetCommand: true`)
|
|
23
|
-
|
|
24
|
-
This section is called Custom Commands because you can also customize this section with your own commands. To do that, you need to fill in 2 properties (an array of `commandItems` and define `onGridMenuCommand` callback) in your Grid Options. For example, `Angular-Slickgrid` is configured by default with these settings (you can overwrite any one of them):
|
|
25
|
-
```javascript
|
|
26
|
-
this.gridOptions = {
|
|
27
|
-
enableAutoResize: true,
|
|
28
|
-
enableGridMenu: true, // <<-- this will automatically add extra custom commands
|
|
29
|
-
enableFiltering: true,
|
|
30
|
-
gridMenu: {
|
|
31
|
-
commandTitle: 'Custom Commands',
|
|
32
|
-
columnTitle: 'Columns',
|
|
33
|
-
iconCssClass: 'fa fa-ellipsis-v',
|
|
34
|
-
menuWidth: 17,
|
|
35
|
-
resizeOnShowHeaderRow: true,
|
|
36
|
-
commandItems: [
|
|
37
|
-
{
|
|
38
|
-
iconCssClass: 'fa fa-filter text-danger',
|
|
39
|
-
title: 'Clear All Filters',
|
|
40
|
-
disabled: false,
|
|
41
|
-
command: 'clear-filter'
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
iconCssClass: 'fa fa-random',
|
|
45
|
-
title: 'Toggle Filter Row',
|
|
46
|
-
disabled: false,
|
|
47
|
-
command: 'toggle-filter'
|
|
48
|
-
},
|
|
49
|
-
// you can add sub-menus by adding nested `commandItems`
|
|
50
|
-
{
|
|
51
|
-
// we can also have multiple nested sub-menus
|
|
52
|
-
command: 'export', title: 'Exports', positionOrder: 99,
|
|
53
|
-
commandItems: [
|
|
54
|
-
{ command: 'exports-txt', title: 'Text (tab delimited)' },
|
|
55
|
-
{
|
|
56
|
-
command: 'sub-menu', title: 'Excel', cssClass: 'green', subMenuTitle: 'available formats', subMenuTitleCssClass: 'text-italic orange',
|
|
57
|
-
commandItems: [
|
|
58
|
-
{ command: 'exports-csv', title: 'Excel (csv)' },
|
|
59
|
-
{ command: 'exports-xlsx', title: 'Excel (xlsx)' },
|
|
60
|
-
]
|
|
61
|
-
}
|
|
62
|
-
]
|
|
63
|
-
},
|
|
64
|
-
],
|
|
65
|
-
onCommand: (e, args) => {
|
|
66
|
-
if (args.command === 'toggle-filter') {
|
|
67
|
-
this.gridObj.setHeaderRowVisibility(!this.gridObj.getOptions().showHeaderRow);
|
|
68
|
-
} else if (args.command === 'clear-filter') {
|
|
69
|
-
this.filterService.clearFilters();
|
|
70
|
-
this.dataviewObj.refresh();
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
#### Events
|
|
78
|
-
|
|
79
|
-
There are multiple events/callback hooks which are accessible from the Grid Options
|
|
80
|
-
- `onBeforeMenuShow`
|
|
81
|
-
- `onAfterMenuShow`
|
|
82
|
-
- `onMenuClose`
|
|
83
|
-
- `onColumnsChanged`
|
|
84
|
-
- `onCommand`
|
|
85
|
-
|
|
86
|
-
```ts
|
|
87
|
-
gridMenu: {
|
|
88
|
-
// commandItems: [
|
|
89
|
-
// { command: 'help', title: 'Help', positionOrder: 70, action: (e, args) => console.log(args) },
|
|
90
|
-
// { command: '', divider: true, positionOrder: 72 },
|
|
91
|
-
// { command: 'hello', title: 'Hello', positionOrder: 69, action: (e, args) => alert('Hello World'), cssClass: 'red', tooltip: 'Hello World', iconCssClass: 'mdi mdi-close' },
|
|
92
|
-
// ],
|
|
93
|
-
// menuUsabilityOverride: () => false,
|
|
94
|
-
onBeforeMenuShow: () => {
|
|
95
|
-
console.log('onGridMenuBeforeMenuShow');
|
|
96
|
-
// return false; // returning false would prevent the grid menu from opening
|
|
97
|
-
},
|
|
98
|
-
onAfterMenuShow: () => console.log('onGridMenuAfterMenuShow'),
|
|
99
|
-
onColumnsChanged: (_e, args) => console.log('onGridMenuColumnsChanged', args),
|
|
100
|
-
onCommand: (e, args) => {
|
|
101
|
-
// e.preventDefault(); // preventing default event would keep the menu open after the execution
|
|
102
|
-
console.log('onGridMenuCommand', args.command);
|
|
103
|
-
},
|
|
104
|
-
onMenuClose: (e, args) => console.log('onGridMenuMenuClose - visible columns count', args.visibleColumns.length),
|
|
105
|
-
},
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
For more info on all the available properties of the custom commands, you can read refer to the doc written in the Grid Menu [implementation](https://github.com/6pac/SlickGrid/blob/master/controls/slick.gridmenu.js) itself.
|
|
109
|
-
|
|
110
|
-
### How to change an icon of all default commands?
|
|
111
|
-
|
|
112
|
-
You can change any of the default command icon(s) by changing the `icon[Command]`, for example, see below for the defaults.
|
|
113
|
-
```javascript
|
|
114
|
-
this.gridOptions = {
|
|
115
|
-
enableGridMenu: true,
|
|
116
|
-
gridMenu: {
|
|
117
|
-
iconClearAllFiltersCommand: 'fa fa-filter text-danger'
|
|
118
|
-
iconClearAllSortingCommand: 'fa fa-unsorted text-danger',
|
|
119
|
-
iconExportCsvCommand: 'fa fa-download',
|
|
120
|
-
iconExportTextDelimitedCommand: 'fa fa-download',
|
|
121
|
-
iconRefreshDatasetCommand: 'fa fa-refresh',
|
|
122
|
-
iconToggleFilterCommand: 'fa fa-random',
|
|
123
|
-
},
|
|
124
|
-
};
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
### How to Disable the Grid Menu?
|
|
128
|
-
|
|
129
|
-
You can disable the Grid Menu, by calling `enableGridMenu: false` from the Grid Options.
|
|
130
|
-
```javascript
|
|
131
|
-
this.gridOptions = {
|
|
132
|
-
enableGridMenu: false
|
|
133
|
-
};
|
|
134
|
-
```
|
|
@@ -1,245 +0,0 @@
|
|
|
1
|
-
#### index
|
|
2
|
-
- [Description](#descriptions)
|
|
3
|
-
- [Grid State](#grid-state-1)
|
|
4
|
-
- [Grid Presets](#grid-presets)
|
|
5
|
-
- [Grid State Events](#grid-state-events)
|
|
6
|
-
- [How to Load Grid with Certain Columns Hidden](#how-to-load-grid-with-certain-columns-preset-example-hide-certain-columns-on-load)
|
|
7
|
-
|
|
8
|
-
### Demo
|
|
9
|
-
Look at your developer console before leaving the page
|
|
10
|
-
#### Regular grid
|
|
11
|
-
[Demo Page](https://ghiscoding.github.io/Angular-Slickgrid/#/clientside) / [Demo Component](https://github.com/ghiscoding/slickgrid-universal/blob/master/frameworks/angular-slickgrid/src/demos/examples/grid-clientside.component.ts)
|
|
12
|
-
|
|
13
|
-
#### with Backend Service
|
|
14
|
-
[Demo Page](https://ghiscoding.github.io/Angular-Slickgrid/#/gridgraphql) / [Demo Component](https://github.com/ghiscoding/slickgrid-universal/blob/master/frameworks/angular-slickgrid/src/demos/examples/grid-graphql.component.ts)
|
|
15
|
-
|
|
16
|
-
## Descriptions
|
|
17
|
-
#### Grid State
|
|
18
|
-
The `Grid State` are what we defined as the currently used `Columns` / `Filters` / `Sorters` / `Pagination` of the actual grid (pagination is only returned when used with Backend Service API). The columns also include their (size, position order & visibility (show/hidden)).
|
|
19
|
-
#### Presets
|
|
20
|
-
Presets can be used to preset a grid with certain `Columns` / `Filters` / `Sorters` / `Pagination`. When we say `Columns`, we actually mean their size, order position and visibility (shown/hidden) in the grid.
|
|
21
|
-
#### Combining the two together
|
|
22
|
-
So basically, the idea is to save the `Grid State` in Local Storage (or DB) before the grid gets destroyed and once we come back to that same page we can preset the grid with the exact same state as it was before leaving the page (just like if we were doing a forward/back button with browser history).
|
|
23
|
-
|
|
24
|
-
## Grid State
|
|
25
|
-
You can get the `Grid State` at any point in time. However if you wish to save the grid state before leaving the page and store that in Local Storage, then the best way is to use the `onBeforeGridDestroy` Event Emitter.
|
|
26
|
-
|
|
27
|
-
##### View
|
|
28
|
-
```html
|
|
29
|
-
<angular-slickgrid
|
|
30
|
-
gridId="grid2"
|
|
31
|
-
[columns]="columnDefinitions"
|
|
32
|
-
[options]="gridOptions"
|
|
33
|
-
[dataset]="dataset"
|
|
34
|
-
(onAngularGridCreated)="angularGridReady($event.detail)"
|
|
35
|
-
(onBeforeGridDestroy)="saveCurrentGridState($event)">
|
|
36
|
-
</angular-slickgrid>
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
##### Component
|
|
40
|
-
```typescript
|
|
41
|
-
import { GridState } from 'angular-slickgrid';
|
|
42
|
-
|
|
43
|
-
@Component({
|
|
44
|
-
templateUrl: './grid-demo.component.html'
|
|
45
|
-
})
|
|
46
|
-
export class GridDemoComponent {
|
|
47
|
-
angularGrid: AngularGridInstance;
|
|
48
|
-
|
|
49
|
-
angularGridReady(angularGrid: AngularGridInstance) {
|
|
50
|
-
this.angularGrid = angularGrid;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
// you can save it to Local Storage of DB in this call
|
|
54
|
-
saveCurrentGridState(grid) {
|
|
55
|
-
const gridState: GridState = this.angularGrid.gridStateService.getCurrentGridState();
|
|
56
|
-
console.log('Leaving page with current grid state', gridState);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
### Using Grid Presets & Filter SearchTerm(s)
|
|
62
|
-
What happens when we use the grid `presets` and a [Filter Default SearchTerms](../column-functionalities/filters/select-filter.md#default-search-terms)? In this case, the `presets` will win over filter `searchTerms`. The cascading order of priorities is the following
|
|
63
|
-
1. Do we have any `presets`? Yes use them, else go to step 2
|
|
64
|
-
2. Do we have any Filter `searchTerms`? Yes use them, else go to step 3
|
|
65
|
-
3. No `presets` and no `searchTerms`, load grid with default grid & column definitions
|
|
66
|
-
|
|
67
|
-
## Grid Presets
|
|
68
|
-
### Structure
|
|
69
|
-
The current structure of a Grid Presets is the following
|
|
70
|
-
```typescript
|
|
71
|
-
export interface CurrentColumn {
|
|
72
|
-
columnId: string;
|
|
73
|
-
cssClass?: string;
|
|
74
|
-
headerCssClass?: string;
|
|
75
|
-
width?: number;
|
|
76
|
-
}
|
|
77
|
-
export interface CurrentFilter {
|
|
78
|
-
columnId: string;
|
|
79
|
-
operator?: OperatorType | OperatorString;
|
|
80
|
-
searchTerms?: SearchTerm[];
|
|
81
|
-
}
|
|
82
|
-
export interface CurrentSorter {
|
|
83
|
-
columnId: string;
|
|
84
|
-
direction: SortDirection | SortDirectionString;
|
|
85
|
-
}
|
|
86
|
-
export interface GridState {
|
|
87
|
-
columns?: CurrentColumn[] | null;
|
|
88
|
-
filters?: CurrentFilter[] | null;
|
|
89
|
-
sorters?: CurrentSorter[] | null;
|
|
90
|
-
pagination?: {
|
|
91
|
-
pageNumber: number;
|
|
92
|
-
pageSize: number;
|
|
93
|
-
};
|
|
94
|
-
pinning?: CurrentPinning;
|
|
95
|
-
rowSelection?: CurrentRowSelection | null;
|
|
96
|
-
treeData?: Partial<TreeToggleStateChange> | null;
|
|
97
|
-
}
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
#### Example
|
|
101
|
-
For example, we can set `presets` on a grid like so:
|
|
102
|
-
**Component**
|
|
103
|
-
```typescript
|
|
104
|
-
import { GridState } from 'angular-slickgrid';
|
|
105
|
-
|
|
106
|
-
@Component({
|
|
107
|
-
templateUrl: './grid-demo.component.html'
|
|
108
|
-
})
|
|
109
|
-
export class GridDemoComponent {
|
|
110
|
-
angularGrid: AngularGridInstance;
|
|
111
|
-
|
|
112
|
-
ngOnInit(): void {
|
|
113
|
-
this.columnDefinitions = [
|
|
114
|
-
{ id: 'name', name: 'Name', field: 'name', filterable: true, sortable: true, sortable: true },
|
|
115
|
-
{ id: 'duration', name: 'Duration', field: 'duration', filterable: true, sortable: true },
|
|
116
|
-
{ id: 'complete', name: '% Complete', field: 'percentComplete', filterable: true, sortable: true },
|
|
117
|
-
];
|
|
118
|
-
|
|
119
|
-
this.gridOptions = {
|
|
120
|
-
enableFiltering: true,
|
|
121
|
-
|
|
122
|
-
// use columnDef searchTerms OR use presets as shown below
|
|
123
|
-
presets: {
|
|
124
|
-
// the column position in the array is very important and represent
|
|
125
|
-
// the position that will show in the grid
|
|
126
|
-
columns: [
|
|
127
|
-
{ columnId: 'duration', width: 88, headerCssClass: 'customHeaderClass' },
|
|
128
|
-
{ columnId: 'complete', width: 57 }
|
|
129
|
-
],
|
|
130
|
-
filters: [
|
|
131
|
-
{ columnId: 'duration', searchTerms: [2, 22, 44] },
|
|
132
|
-
{ columnId: 'complete', searchTerms: ['>5'] }
|
|
133
|
-
],
|
|
134
|
-
sorters: [
|
|
135
|
-
{ columnId: 'duration', direction: 'DESC' },
|
|
136
|
-
{ columnId: 'complete', direction: 'ASC' }
|
|
137
|
-
],
|
|
138
|
-
|
|
139
|
-
// with Backend Service ONLY, you can also add Pagination info
|
|
140
|
-
pagination: { pageNumber: 2, pageSize: 20 }
|
|
141
|
-
}
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
### Grid State Event
|
|
147
|
-
There are 2 ways of subscribing to GridState Service event changed.
|
|
148
|
-
1. Through `(onGridStateChanged)` Event Emitter (recommended)
|
|
149
|
-
2. Through `onGridStateChanged` Observable on the GridState Service.
|
|
150
|
-
|
|
151
|
-
Examples
|
|
152
|
-
#### 1. `(onGridStateChanged)` Event Emitter (recommended)
|
|
153
|
-
##### View
|
|
154
|
-
```html
|
|
155
|
-
<angular-slickgrid gridId="grid1"
|
|
156
|
-
[columns]="columnDefinitions"
|
|
157
|
-
[options]="gridOptions"
|
|
158
|
-
[dataset]="dataset"
|
|
159
|
-
(onGridStateChanged)="gridStateChanged($event)">
|
|
160
|
-
</angular-slickgrid>
|
|
161
|
-
```
|
|
162
|
-
##### Component
|
|
163
|
-
```typescript
|
|
164
|
-
import { GridStateChange } from 'angular-slickgrid';
|
|
165
|
-
|
|
166
|
-
export class ExampleComponent implements OnInit {
|
|
167
|
-
gridStateChanged(gridState: GridStateChange) {
|
|
168
|
-
console.log('Grid State changed:: ', gridState);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
#### 2. Through `onGridStateChanged` Observable on the GridState Service
|
|
174
|
-
##### View
|
|
175
|
-
```html
|
|
176
|
-
<angular-slickgrid
|
|
177
|
-
gridId="grid2"
|
|
178
|
-
[columns]="columnDefinitions"
|
|
179
|
-
[options]="gridOptions"
|
|
180
|
-
[dataset]="dataset"
|
|
181
|
-
(onAngularGridCreated)="angularGridReady($event.detail)"
|
|
182
|
-
(onBeforeGridDestroy)="saveCurrentGridState($event)">
|
|
183
|
-
</angular-slickgrid>
|
|
184
|
-
```
|
|
185
|
-
##### Component
|
|
186
|
-
```typescript
|
|
187
|
-
import { AngularGridInstance, GridStateChange } from 'angular-slickgrid';
|
|
188
|
-
|
|
189
|
-
export class ExampleComponent implements OnInit, OnDestroy {
|
|
190
|
-
angularGrid: AngularGridInstance;
|
|
191
|
-
gridStateSub: Subscription;
|
|
192
|
-
|
|
193
|
-
angularGridReady(angularGrid: AngularGridInstance) {
|
|
194
|
-
this.angularGrid = angularGrid;
|
|
195
|
-
this.gridStateSub = this.angularGrid.gridStateService.onGridStateChanged.subscribe((data: GridStateChange) => console.log(data));
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
ngOnDestroy() {
|
|
199
|
-
this.gridStateSub.unsubscribe();
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
## How to Load Grid with certain Columns Preset (example hide certain Column(s) on load)
|
|
205
|
-
You can show/hide or even change a column position via the `presets`, yes `presets` is that powerful. All you need to do is to pass all Columns that you want to show as part of the `columns` property of `presets`. Typically you already have the entire columns definition since you just defined it, so you can loop through it and just use `map` to list the `columns` according to the structure needed (see [preset structure](Grid-State-&-Preset#structure.md)). What you have to know is that whatever array you provide to `presets`, that will equal to what the user will see and also in which order the columns will show (the array order does matter in this case). If a Columns is omitted from that array, then it will be considered to be a hidden column (you can still show it through Grid Menu and/or Column Picker).
|
|
206
|
-
|
|
207
|
-
So let say that we want to hide the last Column on page load, we can just find the column by it's `id` that you want to hide and pass the new column definition to the `presets` (again make sure to follow the correct preset structure).
|
|
208
|
-
|
|
209
|
-
```ts
|
|
210
|
-
this.columnDefinitions = [
|
|
211
|
-
// initial column definitions
|
|
212
|
-
];
|
|
213
|
-
|
|
214
|
-
// for example, let's hide last column, we can just use `pop()` to ommit last column
|
|
215
|
-
// and use `map()` to pull only the required field for presets to work
|
|
216
|
-
const mappedColumnDefinitions = this.columnDefinitions.map(col => ({ columnId: col.id, width: col.width }));
|
|
217
|
-
mappedColumnDefinitions.pop();
|
|
218
|
-
|
|
219
|
-
// then pass it to the presets
|
|
220
|
-
this.gridOptions = {
|
|
221
|
-
presets: {
|
|
222
|
-
columns: mappedColumnDefinitions
|
|
223
|
-
}
|
|
224
|
-
};
|
|
225
|
-
```
|
|
226
|
-
This would be the easiest way to do it.
|
|
227
|
-
|
|
228
|
-
As pointed out earlier, the `presets` requires a specific structure where the `columns` is the list of columns to show/hide with their possible widths. Also worth mentioning again that the position in the array is very important as it defines the position shown in the UI.
|
|
229
|
-
|
|
230
|
-
```ts
|
|
231
|
-
this.gridOptions = {
|
|
232
|
-
enableFiltering: true,
|
|
233
|
-
|
|
234
|
-
// use columnDef searchTerms OR use presets as shown below
|
|
235
|
-
presets: {
|
|
236
|
-
// the column position in the array is very important and represent
|
|
237
|
-
// the position that will show in the grid
|
|
238
|
-
columns: [
|
|
239
|
-
{ columnId: 'duration', width: 88, headerCssClass: 'customHeaderClass' },
|
|
240
|
-
{ columnId: 'complete', width: 57 }
|
|
241
|
-
],
|
|
242
|
-
}
|
|
243
|
-
};
|
|
244
|
-
```
|
|
245
|
-
You could technically redefine by hand the complete list of `columns` that the `presets` requires. I would personally do it via the Column Definitions looping with `map()`, but go manual is also perfectly fine. You would just re-declare the `columns` again with the `id` and `width` and that would work as well.
|