@theseam/ui-common 0.4.30 → 1.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ai/index.d.ts +2 -0
- package/asset-reader/index.d.ts +67 -5
- package/breadcrumbs/index.d.ts +46 -5
- package/buttons/index.d.ts +220 -5
- package/card/index.d.ts +46 -5
- package/carousel/index.d.ts +100 -5
- package/checkbox/index.d.ts +200 -5
- package/confirm-dialog/index.d.ts +64 -5
- package/core/index.d.ts +139 -5
- package/data-exporter/index.d.ts +60 -5
- package/data-filters/index.d.ts +219 -5
- package/datatable/index.d.ts +1339 -5
- package/datatable-alterations-display/index.d.ts +101 -0
- package/datatable-dynamic/index.d.ts +548 -5
- package/dynamic/index.d.ts +469 -5
- package/dynamic-component-loader/index.d.ts +42 -5
- package/fesm2022/theseam-ui-common-ai.mjs +6 -0
- package/fesm2022/theseam-ui-common-ai.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-asset-reader.mjs +193 -0
- package/fesm2022/theseam-ui-common-asset-reader.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-breadcrumbs.mjs +171 -0
- package/fesm2022/theseam-ui-common-breadcrumbs.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-buttons.mjs +478 -0
- package/fesm2022/theseam-ui-common-buttons.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-card.mjs +128 -0
- package/fesm2022/theseam-ui-common-card.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-carousel.mjs +269 -0
- package/fesm2022/theseam-ui-common-carousel.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-checkbox.mjs +393 -0
- package/fesm2022/theseam-ui-common-checkbox.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-confirm-dialog.mjs +183 -0
- package/fesm2022/theseam-ui-common-confirm-dialog.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-core.mjs +229 -0
- package/fesm2022/theseam-ui-common-core.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-data-exporter.mjs +89 -0
- package/fesm2022/theseam-ui-common-data-exporter.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-data-filters.mjs +516 -0
- package/fesm2022/theseam-ui-common-data-filters.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-datatable-alterations-display.mjs +350 -0
- package/fesm2022/theseam-ui-common-datatable-alterations-display.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-datatable-dynamic.mjs +1096 -0
- package/fesm2022/theseam-ui-common-datatable-dynamic.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-datatable.mjs +4263 -0
- package/fesm2022/theseam-ui-common-datatable.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-dynamic-component-loader.mjs +134 -0
- package/fesm2022/theseam-ui-common-dynamic-component-loader.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-dynamic.mjs +699 -0
- package/fesm2022/theseam-ui-common-dynamic.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-footer-bar.mjs +38 -0
- package/fesm2022/theseam-ui-common-footer-bar.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-form-field-error.mjs +494 -0
- package/fesm2022/theseam-ui-common-form-field-error.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-form-field.mjs +675 -0
- package/fesm2022/theseam-ui-common-form-field.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-framework.mjs +4018 -0
- package/fesm2022/theseam-ui-common-framework.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-google-maps.mjs +2191 -0
- package/fesm2022/theseam-ui-common-google-maps.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-graphql.mjs +1745 -0
- package/fesm2022/theseam-ui-common-graphql.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-icon.mjs +646 -0
- package/fesm2022/theseam-ui-common-icon.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-layout.mjs +118 -0
- package/fesm2022/theseam-ui-common-layout.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-loading.mjs +130 -0
- package/fesm2022/theseam-ui-common-loading.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-menu.mjs +1322 -0
- package/fesm2022/theseam-ui-common-menu.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-modal.mjs +1447 -0
- package/fesm2022/theseam-ui-common-modal.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-models.mjs +55 -0
- package/fesm2022/theseam-ui-common-models.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-navigation-reload.mjs +72 -0
- package/fesm2022/theseam-ui-common-navigation-reload.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-popover.mjs +520 -0
- package/fesm2022/theseam-ui-common-popover.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-progress.mjs +97 -0
- package/fesm2022/theseam-ui-common-progress.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-rich-text.mjs +782 -0
- package/fesm2022/theseam-ui-common-rich-text.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-scrollbar.mjs +158 -0
- package/fesm2022/theseam-ui-common-scrollbar.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-services.mjs +281 -0
- package/fesm2022/theseam-ui-common-services.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-shared.mjs +719 -0
- package/fesm2022/theseam-ui-common-shared.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-storage.mjs +146 -0
- package/fesm2022/theseam-ui-common-storage.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-story-helpers.mjs +512 -0
- package/fesm2022/theseam-ui-common-story-helpers.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-tabbed.mjs +292 -0
- package/fesm2022/theseam-ui-common-tabbed.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-table-cell-type.mjs +211 -0
- package/fesm2022/theseam-ui-common-table-cell-type.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-table-cell-types.mjs +1207 -0
- package/fesm2022/theseam-ui-common-table-cell-types.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-table.mjs +341 -0
- package/fesm2022/theseam-ui-common-table.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-tel-input.mjs +843 -0
- package/fesm2022/theseam-ui-common-tel-input.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-testing.mjs +315 -0
- package/fesm2022/theseam-ui-common-testing.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-tiled-select.mjs +584 -0
- package/fesm2022/theseam-ui-common-tiled-select.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-toggle-edit.mjs +517 -0
- package/fesm2022/theseam-ui-common-toggle-edit.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-toggle-group.mjs +269 -0
- package/fesm2022/theseam-ui-common-toggle-group.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-tooltip.mjs +592 -0
- package/fesm2022/theseam-ui-common-tooltip.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-unsaved-changes-dialog.mjs +78 -0
- package/fesm2022/theseam-ui-common-unsaved-changes-dialog.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-utils.mjs +1366 -0
- package/fesm2022/theseam-ui-common-utils.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-validators.mjs +94 -0
- package/fesm2022/theseam-ui-common-validators.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-vertical-list-filter.mjs +85 -0
- package/fesm2022/theseam-ui-common-vertical-list-filter.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-viewers.mjs +566 -0
- package/fesm2022/theseam-ui-common-viewers.mjs.map +1 -0
- package/fesm2022/theseam-ui-common-widget.mjs +1466 -0
- package/fesm2022/theseam-ui-common-widget.mjs.map +1 -0
- package/fesm2022/theseam-ui-common.mjs +7 -0
- package/fesm2022/theseam-ui-common.mjs.map +1 -0
- package/footer-bar/index.d.ts +15 -5
- package/form-field/index.d.ts +255 -5
- package/form-field-error/index.d.ts +102 -5
- package/framework/index.d.ts +1372 -5
- package/framework/nav/nav-item/nav-item.component.scss +3 -1
- package/framework/nav/styles/_themes/light/_variables.scss +6 -4
- package/framework/nav/styles/_themes/primary/_variables.scss +6 -4
- package/framework/side-nav/side-nav-item/side-nav-item.component.scss +3 -1
- package/framework/side-nav/styles/_themes/light/_variables.scss +3 -1
- package/framework/side-nav/styles/_themes/primary/_variables.scss +7 -5
- package/google-maps/index.d.ts +657 -5
- package/graphql/index.d.ts +336 -5
- package/icon/index.d.ts +193 -5
- package/index.d.ts +2 -5
- package/layout/index.d.ts +61 -5
- package/loading/index.d.ts +42 -5
- package/menu/index.d.ts +437 -5
- package/modal/index.d.ts +531 -5
- package/models/index.d.ts +36 -5
- package/navigation-reload/index.d.ts +24 -5
- package/package.json +185 -316
- package/popover/index.d.ts +127 -5
- package/progress/index.d.ts +38 -5
- package/progress/progress-circle/styles/_variables.scss +5 -3
- package/rich-text/index.d.ts +537 -5
- package/scrollbar/index.d.ts +95 -5
- package/services/index.d.ts +129 -5
- package/shared/index.d.ts +229 -5
- package/storage/index.d.ts +35 -5
- package/story-helpers/index.d.ts +184 -5
- package/styles/bootstrap/_bs-variables.scss +5 -3
- package/styles/vendor/ngx-datatable/_ngx-datatable.scss +1 -1
- package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +6 -4
- package/styles/vendor/quill/_quill.scss +2 -2
- package/tabbed/index.d.ts +108 -5
- package/table/index.d.ts +110 -5
- package/table-cell-type/index.d.ts +145 -5
- package/table-cell-types/index.d.ts +537 -5
- package/tel-input/index.d.ts +532 -5
- package/testing/index.d.ts +220 -5
- package/tiled-select/index.d.ts +179 -5
- package/toggle-edit/index.d.ts +160 -5
- package/toggle-group/index.d.ts +61 -5
- package/tooltip/index.d.ts +118 -0
- package/unsaved-changes-dialog/index.d.ts +24 -5
- package/utils/index.d.ts +434 -5
- package/validators/index.d.ts +49 -5
- package/vertical-list-filter/index.d.ts +31 -5
- package/viewers/index.d.ts +173 -5
- package/widget/index.d.ts +535 -5
- package/asset-reader/asset-reader-helper.service.d.ts +0 -10
- package/asset-reader/asset-reader.module.d.ts +0 -7
- package/asset-reader/encrypted-asset-link.directive.d.ts +0 -26
- package/asset-reader/encrypted-asset-reader.d.ts +0 -24
- package/asset-reader/public-api.d.ts +0 -4
- package/breadcrumbs/breadcrumb.d.ts +0 -11
- package/breadcrumbs/breadcrumbs/breadcrumbs.component.d.ts +0 -11
- package/breadcrumbs/breadcrumbs-resolver.d.ts +0 -5
- package/breadcrumbs/breadcrumbs.module.d.ts +0 -9
- package/breadcrumbs/breadcrumbs.service.d.ts +0 -23
- package/breadcrumbs/public-api.d.ts +0 -5
- package/buttons/badge-button/badge-button.component.d.ts +0 -23
- package/buttons/button/button.component.d.ts +0 -35
- package/buttons/buttons.module.d.ts +0 -12
- package/buttons/progress-circle-button/progress-circle-button.component.d.ts +0 -22
- package/buttons/public-api.d.ts +0 -6
- package/buttons/testing/anchor-badge-button.harness.d.ts +0 -16
- package/buttons/testing/anchor-button.harness.d.ts +0 -16
- package/buttons/testing/badge-button.harness.d.ts +0 -15
- package/buttons/testing/base-badge-button.harness.d.ts +0 -15
- package/buttons/testing/base-button.harness.d.ts +0 -19
- package/buttons/testing/button.harness.d.ts +0 -15
- package/buttons/testing/index.d.ts +0 -5
- package/buttons/testing/toggle-button.harness.d.ts +0 -21
- package/buttons/toggle-button/toggle-button.component.d.ts +0 -29
- package/card/card-action/card-action.component.d.ts +0 -12
- package/card/card-body/card-body.component.d.ts +0 -13
- package/card/card-footer/card-footer.component.d.ts +0 -5
- package/card/card-header/card-header.component.d.ts +0 -7
- package/card/card.component.d.ts +0 -6
- package/card/card.module.d.ts +0 -13
- package/card/public-api.d.ts +0 -6
- package/carousel/carousel-slide.directive.d.ts +0 -8
- package/carousel/carousel.component.d.ts +0 -85
- package/carousel/carousel.module.d.ts +0 -11
- package/carousel/public-api.d.ts +0 -3
- package/checkbox/checkbox.component.d.ts +0 -141
- package/checkbox/checkbox.module.d.ts +0 -8
- package/checkbox/public-api.d.ts +0 -3
- package/checkbox/testing/checkbox.harness.d.ts +0 -49
- package/checkbox/testing/index.d.ts +0 -1
- package/confirm-dialog/confirm-click.directive.d.ts +0 -31
- package/confirm-dialog/confirm-dialog.component.d.ts +0 -16
- package/confirm-dialog/confirm-dialog.module.d.ts +0 -12
- package/confirm-dialog/confirm-dialog.service.d.ts +0 -18
- package/confirm-dialog/public-api.d.ts +0 -4
- package/core/common-behaviors/active.d.ts +0 -8
- package/core/common-behaviors/constructor.d.ts +0 -9
- package/core/common-behaviors/disabled.d.ts +0 -17
- package/core/common-behaviors/element-ref.d.ts +0 -4
- package/core/common-behaviors/index.d.ts +0 -9
- package/core/common-behaviors/initialized.d.ts +0 -30
- package/core/common-behaviors/renderer2.d.ts +0 -4
- package/core/common-behaviors/size.d.ts +0 -9
- package/core/common-behaviors/tabindex.d.ts +0 -18
- package/core/common-behaviors/theme.d.ts +0 -10
- package/core/input-decorators/index.d.ts +0 -2
- package/core/input-decorators/input-boolean.decorator.d.ts +0 -12
- package/core/input-decorators/input-number.decorator.d.ts +0 -12
- package/core/public-api.d.ts +0 -2
- package/data-exporter/data-exporter.d.ts +0 -30
- package/data-exporter/data-exporter.module.d.ts +0 -6
- package/data-exporter/exporters/csv-exporter.d.ts +0 -11
- package/data-exporter/exporters/xlsx-exporter.d.ts +0 -11
- package/data-exporter/public-api.d.ts +0 -4
- package/data-filters/data-filter-container.d.ts +0 -8
- package/data-filters/data-filter-def.d.ts +0 -10
- package/data-filters/data-filter.d.ts +0 -53
- package/data-filters/data-filters.module.d.ts +0 -15
- package/data-filters/filters/data-filter-search/data-filter-search.component.d.ts +0 -39
- package/data-filters/filters/data-filter-search/search-filter-options.d.ts +0 -2
- package/data-filters/filters/data-filter-text/data-filter-text.component.d.ts +0 -37
- package/data-filters/filters/data-filter-text/text-filter-options.d.ts +0 -25
- package/data-filters/filters/data-filter-toggle-buttons/data-filter-toggle-buttons.component.d.ts +0 -46
- package/data-filters/public-api.d.ts +0 -9
- package/datatable/datatable/datatable.component.d.ts +0 -266
- package/datatable/datatable-action-menu/datatable-action-menu.component.d.ts +0 -23
- package/datatable/datatable-action-menu-item/datatable-action-menu-item.component.d.ts +0 -33
- package/datatable/datatable-column/datatable-column.component.d.ts +0 -44
- package/datatable/datatable-column-filter-menu/datatable-column-filter-menu.component.d.ts +0 -25
- package/datatable/datatable-column-filter-search-date/datatable-column-filter-search-date.component.d.ts +0 -18
- package/datatable/datatable-column-filter-search-numeric/datatable-column-filter-search-numeric.component.d.ts +0 -16
- package/datatable/datatable-column-filter-search-text/datatable-column-filter-search-text.component.d.ts +0 -15
- package/datatable/datatable-column-preferences/datatable-column-preferences.component.d.ts +0 -18
- package/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.d.ts +0 -13
- package/datatable/datatable-export-button/datatable-export-button.component.d.ts +0 -25
- package/datatable/datatable-footer/datatable-footer-tpl.directive.d.ts +0 -8
- package/datatable/datatable-footer/datatable-footer.directive.d.ts +0 -9
- package/datatable/datatable-menu-bar/datatable-menu-bar.component.d.ts +0 -17
- package/datatable/datatable-menu-bar-column-center/datatable-menu-bar-column-center.component.d.ts +0 -5
- package/datatable/datatable-menu-bar-column-left/datatable-menu-bar-column-left.component.d.ts +0 -5
- package/datatable/datatable-menu-bar-column-right/datatable-menu-bar-column-right.component.d.ts +0 -5
- package/datatable/datatable-menu-bar-row/datatable-menu-bar-row.component.d.ts +0 -5
- package/datatable/datatable-menu-bar-text/datatable-menu-bar-text.component.d.ts +0 -11
- package/datatable/datatable-row-detail/datatable-row-detail-tpl.directive.d.ts +0 -8
- package/datatable/datatable-row-detail/datatable-row-detail.directive.d.ts +0 -40
- package/datatable/datatable.module.d.ts +0 -56
- package/datatable/directives/datatable-action-menu-item.directive.d.ts +0 -36
- package/datatable/directives/datatable-action-menu-toggle.directive.d.ts +0 -30
- package/datatable/directives/datatable-cell-tpl.directive.d.ts +0 -8
- package/datatable/directives/datatable-column-filter-tpl.directive.d.ts +0 -8
- package/datatable/directives/datatable-column-filter.directive.d.ts +0 -10
- package/datatable/directives/datatable-filter.directive.d.ts +0 -9
- package/datatable/directives/datatable-row-action-item.directive.d.ts +0 -8
- package/datatable/models/action-item-column-position.d.ts +0 -13
- package/datatable/models/columns-alteration.d.ts +0 -61
- package/datatable/models/columns-alterations/hide-column.columns-alteration.d.ts +0 -15
- package/datatable/models/columns-alterations/order.columns-alteration.d.ts +0 -20
- package/datatable/models/columns-alterations/sort.columns-alteration.d.ts +0 -14
- package/datatable/models/columns-alterations/width.columns-alteration.d.ts +0 -16
- package/datatable/models/columns-data-filter.d.ts +0 -57
- package/datatable/models/columns-data-filters/models.d.ts +0 -65
- package/datatable/models/columns-data-filters/search-date.columns-data-filter.d.ts +0 -23
- package/datatable/models/columns-data-filters/search-numeric.columns-data-filter.d.ts +0 -22
- package/datatable/models/columns-data-filters/search-text.columns-data-filter.d.ts +0 -21
- package/datatable/models/columns-data-filters/utils.d.ts +0 -15
- package/datatable/models/datatable-accessor.d.ts +0 -21
- package/datatable/models/datatable-config.d.ts +0 -97
- package/datatable/models/datatable-data-source.d.ts +0 -14
- package/datatable/models/datatable-gql-data-source.d.ts +0 -7
- package/datatable/models/internal-column-props.d.ts +0 -7
- package/datatable/models/menubar-item-data.d.ts +0 -3
- package/datatable/models/page-info.d.ts +0 -18
- package/datatable/models/preferences-accessor.d.ts +0 -3
- package/datatable/models/preferences.d.ts +0 -18
- package/datatable/models/sort-event.d.ts +0 -4
- package/datatable/models/sort-item.d.ts +0 -5
- package/datatable/models/table-column.d.ts +0 -35
- package/datatable/public-api.d.ts +0 -54
- package/datatable/services/columns-alterations-manager.service.d.ts +0 -42
- package/datatable/services/columns-filters.service.d.ts +0 -29
- package/datatable/services/columns-manager.service.d.ts +0 -65
- package/datatable/services/datatable-column-changes.service.d.ts +0 -9
- package/datatable/services/datatable-preferences.service.d.ts +0 -22
- package/datatable/services/datatable-scrollbar-helper.service.d.ts +0 -22
- package/datatable/tokens/datatable-accessor.d.ts +0 -3
- package/datatable/tokens/datatable-preferences-accessor.d.ts +0 -3
- package/datatable/tokens/menubar-item-data.d.ts +0 -3
- package/datatable/utils/create-action-menu-column.d.ts +0 -3
- package/datatable/utils/create-checkbox-column.d.ts +0 -3
- package/datatable/utils/get-column-prop.d.ts +0 -5
- package/datatable/utils/map-columns-alterations-states.d.ts +0 -2
- package/datatable/utils/remove-unused-diffs.d.ts +0 -7
- package/datatable/utils/set-column-defaults.d.ts +0 -2
- package/datatable/utils/translate-templates.d.ts +0 -2
- package/datatable/utils/with-stored-column-info.d.ts +0 -3
- package/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.d.ts +0 -33
- package/datatable-dynamic/datatable-dynamic-def.d.ts +0 -71
- package/datatable-dynamic/datatable-dynamic-filter-container/datatable-dynamic-filter-container.component.d.ts +0 -18
- package/datatable-dynamic/datatable-dynamic-menu-bar-content/datatable-dynamic-menu-bar-content.component.d.ts +0 -63
- package/datatable-dynamic/datatable-dynamic-menu-bar-item-manifest.d.ts +0 -16
- package/datatable-dynamic/datatable-dynamic-menu-bar-token.d.ts +0 -3
- package/datatable-dynamic/datatable-dynamic.component.d.ts +0 -89
- package/datatable-dynamic/datatable-dynamic.module.d.ts +0 -22
- package/datatable-dynamic/directives/datatable-dynamic-action-menu-item.directive.d.ts +0 -75
- package/datatable-dynamic/dynamic-datatable-def.service.d.ts +0 -62
- package/datatable-dynamic/dynamic-datatable-row-actions.service.d.ts +0 -19
- package/datatable-dynamic/models/dynamic-datatable-action-menu-record.d.ts +0 -17
- package/datatable-dynamic/models/dynamic-datatable-filter-menu-item.d.ts +0 -7
- package/datatable-dynamic/models/dynamic-datatable-menu-bar.d.ts +0 -63
- package/datatable-dynamic/models/dynamic-datatable-row-action-context.d.ts +0 -5
- package/datatable-dynamic/models/dynamic-datatable-row-action.d.ts +0 -17
- package/datatable-dynamic/models/index.d.ts +0 -5
- package/datatable-dynamic/public-api.d.ts +0 -13
- package/datatable-dynamic/utils/defaults/set-dynamic-datatable-columns-defaults.d.ts +0 -2
- package/datatable-dynamic/utils/defaults/set-dynamic-datatable-def-defaults.d.ts +0 -2
- package/datatable-dynamic/utils/defaults/set-dynamic-datatable-filter-menu-defaults.d.ts +0 -2
- package/datatable-dynamic/utils/defaults/set-dynamic-datatable-options-defaults.d.ts +0 -2
- package/datatable-dynamic/utils/index.d.ts +0 -4
- package/dynamic/action/api/dynamic-action-api-def.d.ts +0 -35
- package/dynamic/action/api/dynamic-action-api-errors.d.ts +0 -1
- package/dynamic/action/api/dynamic-action-api.d.ts +0 -3
- package/dynamic/action/api/dynamic-action-api.service.d.ts +0 -33
- package/dynamic/action/dynamic-action-helper.service.d.ts +0 -39
- package/dynamic/action/index.d.ts +0 -10
- package/dynamic/action/link/dynamic-action-link-def.d.ts +0 -58
- package/dynamic/action/link/dynamic-action-link.d.ts +0 -3
- package/dynamic/action/link/dynamic-action-link.service.d.ts +0 -17
- package/dynamic/action/modal/dynamic-action-modal-def.d.ts +0 -10
- package/dynamic/action/modal/dynamic-action-modal.d.ts +0 -3
- package/dynamic/action/modal/dynamic-action-modal.service.d.ts +0 -32
- package/dynamic/dynamic-value-helper.service.d.ts +0 -38
- package/dynamic/evaluators/exporters-data-evaluator/exporters-data-evaluator.d.ts +0 -19
- package/dynamic/evaluators/exporters-data-evaluator/exporters-data-value.d.ts +0 -8
- package/dynamic/evaluators/exporters-data-evaluator/index.d.ts +0 -2
- package/dynamic/evaluators/index.d.ts +0 -2
- package/dynamic/evaluators/jexl-evaluator/index.d.ts +0 -2
- package/dynamic/evaluators/jexl-evaluator/jexl-evaluator.d.ts +0 -13
- package/dynamic/evaluators/jexl-evaluator/jexl-value.d.ts +0 -11
- package/dynamic/models/dynamic-action-confirm-def.d.ts +0 -10
- package/dynamic/models/dynamic-action-context.d.ts +0 -2
- package/dynamic/models/dynamic-action-def.d.ts +0 -9
- package/dynamic/models/dynamic-action-ui-anchor-def.d.ts +0 -39
- package/dynamic/models/dynamic-action-ui-button-def.d.ts +0 -13
- package/dynamic/models/dynamic-action-ui-def.d.ts +0 -37
- package/dynamic/models/dynamic-action.d.ts +0 -11
- package/dynamic/models/dynamic-value-base-type.d.ts +0 -4
- package/dynamic/models/dynamic-value-evaluatable-type.d.ts +0 -3
- package/dynamic/models/dynamic-value-evaluator.d.ts +0 -6
- package/dynamic/models/dynamic-value-primitive.d.ts +0 -1
- package/dynamic/models/dynamic-value-type.d.ts +0 -4
- package/dynamic/models/dynamic-value.d.ts +0 -3
- package/dynamic/models/index.d.ts +0 -13
- package/dynamic/public-api.d.ts +0 -6
- package/dynamic/tokens/api-config.d.ts +0 -30
- package/dynamic/tokens/dynamic-action.d.ts +0 -3
- package/dynamic/tokens/dynamic-data.d.ts +0 -2
- package/dynamic/tokens/dynamic-value-evaluator.d.ts +0 -3
- package/dynamic/tokens/index.d.ts +0 -4
- package/dynamic/utils/index.d.ts +0 -1
- package/dynamic/utils/is-action-type.d.ts +0 -2
- package/dynamic-component-loader/dynamic-component-loader.module.d.ts +0 -11
- package/dynamic-component-loader/dynamic-component-loader.service.d.ts +0 -16
- package/dynamic-component-loader/dynamic-component-manifest.d.ts +0 -9
- package/dynamic-component-loader/dynamic-component-tokens.d.ts +0 -4
- package/dynamic-component-loader/public-api.d.ts +0 -4
- package/esm2020/asset-reader/asset-reader-helper.service.mjs +0 -70
- package/esm2020/asset-reader/asset-reader.module.mjs +0 -20
- package/esm2020/asset-reader/encrypted-asset-link.directive.mjs +0 -74
- package/esm2020/asset-reader/encrypted-asset-reader.mjs +0 -20
- package/esm2020/asset-reader/public-api.mjs +0 -5
- package/esm2020/asset-reader/theseam-ui-common-asset-reader.mjs +0 -5
- package/esm2020/breadcrumbs/breadcrumb.mjs +0 -2
- package/esm2020/breadcrumbs/breadcrumbs/breadcrumbs.component.mjs +0 -18
- package/esm2020/breadcrumbs/breadcrumbs-resolver.mjs +0 -2
- package/esm2020/breadcrumbs/breadcrumbs.module.mjs +0 -28
- package/esm2020/breadcrumbs/breadcrumbs.service.mjs +0 -156
- package/esm2020/breadcrumbs/public-api.mjs +0 -6
- package/esm2020/breadcrumbs/theseam-ui-common-breadcrumbs.mjs +0 -5
- package/esm2020/buttons/badge-button/badge-button.component.mjs +0 -62
- package/esm2020/buttons/button/button.component.mjs +0 -85
- package/esm2020/buttons/buttons.module.mjs +0 -51
- package/esm2020/buttons/progress-circle-button/progress-circle-button.component.mjs +0 -52
- package/esm2020/buttons/public-api.mjs +0 -7
- package/esm2020/buttons/testing/anchor-badge-button.harness.mjs +0 -18
- package/esm2020/buttons/testing/anchor-button.harness.mjs +0 -18
- package/esm2020/buttons/testing/badge-button.harness.mjs +0 -14
- package/esm2020/buttons/testing/base-badge-button.harness.mjs +0 -29
- package/esm2020/buttons/testing/base-button.harness.mjs +0 -41
- package/esm2020/buttons/testing/button.harness.mjs +0 -16
- package/esm2020/buttons/testing/index.mjs +0 -6
- package/esm2020/buttons/testing/toggle-button.harness.mjs +0 -25
- package/esm2020/buttons/theseam-ui-common-buttons.mjs +0 -5
- package/esm2020/buttons/toggle-button/toggle-button.component.mjs +0 -79
- package/esm2020/card/card-action/card-action.component.mjs +0 -31
- package/esm2020/card/card-body/card-body.component.mjs +0 -32
- package/esm2020/card/card-footer/card-footer.component.mjs +0 -11
- package/esm2020/card/card-header/card-header.component.mjs +0 -21
- package/esm2020/card/card.component.mjs +0 -17
- package/esm2020/card/card.module.mjs +0 -48
- package/esm2020/card/public-api.mjs +0 -7
- package/esm2020/card/theseam-ui-common-card.mjs +0 -5
- package/esm2020/carousel/carousel-slide.directive.mjs +0 -16
- package/esm2020/carousel/carousel.component.mjs +0 -212
- package/esm2020/carousel/carousel.module.mjs +0 -38
- package/esm2020/carousel/public-api.mjs +0 -4
- package/esm2020/carousel/theseam-ui-common-carousel.mjs +0 -5
- package/esm2020/checkbox/checkbox.component.mjs +0 -285
- package/esm2020/checkbox/checkbox.module.mjs +0 -21
- package/esm2020/checkbox/public-api.mjs +0 -4
- package/esm2020/checkbox/testing/checkbox.harness.mjs +0 -63
- package/esm2020/checkbox/testing/index.mjs +0 -2
- package/esm2020/checkbox/theseam-ui-common-checkbox.mjs +0 -5
- package/esm2020/confirm-dialog/confirm-click.directive.mjs +0 -71
- package/esm2020/confirm-dialog/confirm-dialog.component.mjs +0 -38
- package/esm2020/confirm-dialog/confirm-dialog.module.mjs +0 -47
- package/esm2020/confirm-dialog/confirm-dialog.service.mjs +0 -41
- package/esm2020/confirm-dialog/public-api.mjs +0 -5
- package/esm2020/confirm-dialog/theseam-ui-common-confirm-dialog.mjs +0 -5
- package/esm2020/core/common-behaviors/active.mjs +0 -14
- package/esm2020/core/common-behaviors/constructor.mjs +0 -9
- package/esm2020/core/common-behaviors/disabled.mjs +0 -21
- package/esm2020/core/common-behaviors/element-ref.mjs +0 -2
- package/esm2020/core/common-behaviors/index.mjs +0 -10
- package/esm2020/core/common-behaviors/initialized.mjs +0 -63
- package/esm2020/core/common-behaviors/renderer2.mjs +0 -2
- package/esm2020/core/common-behaviors/size.mjs +0 -24
- package/esm2020/core/common-behaviors/tabindex.mjs +0 -23
- package/esm2020/core/common-behaviors/theme.mjs +0 -24
- package/esm2020/core/input-decorators/index.mjs +0 -3
- package/esm2020/core/input-decorators/input-boolean.decorator.mjs +0 -26
- package/esm2020/core/input-decorators/input-number.decorator.mjs +0 -26
- package/esm2020/core/public-api.mjs +0 -3
- package/esm2020/core/theseam-ui-common-core.mjs +0 -5
- package/esm2020/data-exporter/data-exporter.mjs +0 -7
- package/esm2020/data-exporter/data-exporter.module.mjs +0 -25
- package/esm2020/data-exporter/exporters/csv-exporter.mjs +0 -35
- package/esm2020/data-exporter/exporters/xlsx-exporter.mjs +0 -33
- package/esm2020/data-exporter/public-api.mjs +0 -5
- package/esm2020/data-exporter/theseam-ui-common-data-exporter.mjs +0 -5
- package/esm2020/data-filters/data-filter-container.mjs +0 -3
- package/esm2020/data-filters/data-filter-def.mjs +0 -3
- package/esm2020/data-filters/data-filter.mjs +0 -25
- package/esm2020/data-filters/data-filters.module.mjs +0 -66
- package/esm2020/data-filters/filters/data-filter-search/data-filter-search.component.mjs +0 -121
- package/esm2020/data-filters/filters/data-filter-search/search-filter-options.mjs +0 -2
- package/esm2020/data-filters/filters/data-filter-text/data-filter-text.component.mjs +0 -148
- package/esm2020/data-filters/filters/data-filter-text/text-filter-options.mjs +0 -2
- package/esm2020/data-filters/filters/data-filter-toggle-buttons/data-filter-toggle-buttons.component.mjs +0 -166
- package/esm2020/data-filters/public-api.mjs +0 -10
- package/esm2020/data-filters/theseam-ui-common-data-filters.mjs +0 -5
- package/esm2020/datatable/datatable/datatable.component.mjs +0 -879
- package/esm2020/datatable/datatable-action-menu/datatable-action-menu.component.mjs +0 -112
- package/esm2020/datatable/datatable-action-menu-item/datatable-action-menu-item.component.mjs +0 -50
- package/esm2020/datatable/datatable-column/datatable-column.component.mjs +0 -107
- package/esm2020/datatable/datatable-column-filter-menu/datatable-column-filter-menu.component.mjs +0 -55
- package/esm2020/datatable/datatable-column-filter-search-date/datatable-column-filter-search-date.component.mjs +0 -54
- package/esm2020/datatable/datatable-column-filter-search-numeric/datatable-column-filter-search-numeric.component.mjs +0 -48
- package/esm2020/datatable/datatable-column-filter-search-text/datatable-column-filter-search-text.component.mjs +0 -44
- package/esm2020/datatable/datatable-column-preferences/datatable-column-preferences.component.mjs +0 -67
- package/esm2020/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.mjs +0 -51
- package/esm2020/datatable/datatable-export-button/datatable-export-button.component.mjs +0 -106
- package/esm2020/datatable/datatable-footer/datatable-footer-tpl.directive.mjs +0 -16
- package/esm2020/datatable/datatable-footer/datatable-footer.directive.mjs +0 -24
- package/esm2020/datatable/datatable-menu-bar/datatable-menu-bar.component.mjs +0 -49
- package/esm2020/datatable/datatable-menu-bar-column-center/datatable-menu-bar-column-center.component.mjs +0 -11
- package/esm2020/datatable/datatable-menu-bar-column-left/datatable-menu-bar-column-left.component.mjs +0 -11
- package/esm2020/datatable/datatable-menu-bar-column-right/datatable-menu-bar-column-right.component.mjs +0 -11
- package/esm2020/datatable/datatable-menu-bar-row/datatable-menu-bar-row.component.mjs +0 -11
- package/esm2020/datatable/datatable-menu-bar-text/datatable-menu-bar-text.component.mjs +0 -30
- package/esm2020/datatable/datatable-row-detail/datatable-row-detail-tpl.directive.mjs +0 -16
- package/esm2020/datatable/datatable-row-detail/datatable-row-detail.directive.mjs +0 -77
- package/esm2020/datatable/datatable.module.mjs +0 -247
- package/esm2020/datatable/directives/datatable-action-menu-item.directive.mjs +0 -62
- package/esm2020/datatable/directives/datatable-action-menu-toggle.directive.mjs +0 -137
- package/esm2020/datatable/directives/datatable-cell-tpl.directive.mjs +0 -16
- package/esm2020/datatable/directives/datatable-column-filter-tpl.directive.mjs +0 -16
- package/esm2020/datatable/directives/datatable-column-filter.directive.mjs +0 -26
- package/esm2020/datatable/directives/datatable-filter.directive.mjs +0 -27
- package/esm2020/datatable/directives/datatable-row-action-item.directive.mjs +0 -16
- package/esm2020/datatable/models/action-item-column-position.mjs +0 -5
- package/esm2020/datatable/models/columns-alteration.mjs +0 -38
- package/esm2020/datatable/models/columns-alterations/hide-column.columns-alteration.mjs +0 -38
- package/esm2020/datatable/models/columns-alterations/order.columns-alteration.mjs +0 -83
- package/esm2020/datatable/models/columns-alterations/sort.columns-alteration.mjs +0 -33
- package/esm2020/datatable/models/columns-alterations/width.columns-alteration.mjs +0 -41
- package/esm2020/datatable/models/columns-data-filter.mjs +0 -10
- package/esm2020/datatable/models/columns-data-filters/models.mjs +0 -74
- package/esm2020/datatable/models/columns-data-filters/search-date.columns-data-filter.mjs +0 -113
- package/esm2020/datatable/models/columns-data-filters/search-numeric.columns-data-filter.mjs +0 -104
- package/esm2020/datatable/models/columns-data-filters/search-text.columns-data-filter.mjs +0 -86
- package/esm2020/datatable/models/columns-data-filters/utils.mjs +0 -28
- package/esm2020/datatable/models/datatable-accessor.mjs +0 -2
- package/esm2020/datatable/models/datatable-config.mjs +0 -3
- package/esm2020/datatable/models/datatable-data-source.mjs +0 -42
- package/esm2020/datatable/models/datatable-gql-data-source.mjs +0 -15
- package/esm2020/datatable/models/internal-column-props.mjs +0 -15
- package/esm2020/datatable/models/menubar-item-data.mjs +0 -2
- package/esm2020/datatable/models/page-info.mjs +0 -2
- package/esm2020/datatable/models/preferences-accessor.mjs +0 -2
- package/esm2020/datatable/models/preferences.mjs +0 -6
- package/esm2020/datatable/models/sort-event.mjs +0 -2
- package/esm2020/datatable/models/sort-item.mjs +0 -2
- package/esm2020/datatable/models/table-column.mjs +0 -2
- package/esm2020/datatable/public-api.mjs +0 -55
- package/esm2020/datatable/services/columns-alterations-manager.service.mjs +0 -136
- package/esm2020/datatable/services/columns-filters.service.mjs +0 -109
- package/esm2020/datatable/services/columns-manager.service.mjs +0 -286
- package/esm2020/datatable/services/datatable-column-changes.service.mjs +0 -20
- package/esm2020/datatable/services/datatable-preferences.service.mjs +0 -94
- package/esm2020/datatable/services/datatable-scrollbar-helper.service.mjs +0 -50
- package/esm2020/datatable/theseam-ui-common-datatable.mjs +0 -5
- package/esm2020/datatable/tokens/datatable-accessor.mjs +0 -3
- package/esm2020/datatable/tokens/datatable-preferences-accessor.mjs +0 -3
- package/esm2020/datatable/tokens/menubar-item-data.mjs +0 -3
- package/esm2020/datatable/utils/create-action-menu-column.mjs +0 -19
- package/esm2020/datatable/utils/create-checkbox-column.mjs +0 -15
- package/esm2020/datatable/utils/get-column-prop.mjs +0 -9
- package/esm2020/datatable/utils/map-columns-alterations-states.mjs +0 -42
- package/esm2020/datatable/utils/remove-unused-diffs.mjs +0 -9
- package/esm2020/datatable/utils/set-column-defaults.mjs +0 -10
- package/esm2020/datatable/utils/translate-templates.mjs +0 -12
- package/esm2020/datatable/utils/with-stored-column-info.mjs +0 -20
- package/esm2020/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.mjs +0 -118
- package/esm2020/datatable-dynamic/datatable-dynamic-def.mjs +0 -2
- package/esm2020/datatable-dynamic/datatable-dynamic-filter-container/datatable-dynamic-filter-container.component.mjs +0 -50
- package/esm2020/datatable-dynamic/datatable-dynamic-menu-bar-content/datatable-dynamic-menu-bar-content.component.mjs +0 -148
- package/esm2020/datatable-dynamic/datatable-dynamic-menu-bar-item-manifest.mjs +0 -2
- package/esm2020/datatable-dynamic/datatable-dynamic-menu-bar-token.mjs +0 -3
- package/esm2020/datatable-dynamic/datatable-dynamic.component.mjs +0 -75
- package/esm2020/datatable-dynamic/datatable-dynamic.module.mjs +0 -80
- package/esm2020/datatable-dynamic/directives/datatable-dynamic-action-menu-item.directive.mjs +0 -400
- package/esm2020/datatable-dynamic/dynamic-datatable-def.service.mjs +0 -88
- package/esm2020/datatable-dynamic/dynamic-datatable-row-actions.service.mjs +0 -46
- package/esm2020/datatable-dynamic/models/dynamic-datatable-action-menu-record.mjs +0 -2
- package/esm2020/datatable-dynamic/models/dynamic-datatable-filter-menu-item.mjs +0 -2
- package/esm2020/datatable-dynamic/models/dynamic-datatable-menu-bar.mjs +0 -2
- package/esm2020/datatable-dynamic/models/dynamic-datatable-row-action-context.mjs +0 -2
- package/esm2020/datatable-dynamic/models/dynamic-datatable-row-action.mjs +0 -2
- package/esm2020/datatable-dynamic/models/index.mjs +0 -6
- package/esm2020/datatable-dynamic/public-api.mjs +0 -14
- package/esm2020/datatable-dynamic/theseam-ui-common-datatable-dynamic.mjs +0 -5
- package/esm2020/datatable-dynamic/utils/defaults/set-dynamic-datatable-columns-defaults.mjs +0 -8
- package/esm2020/datatable-dynamic/utils/defaults/set-dynamic-datatable-def-defaults.mjs +0 -13
- package/esm2020/datatable-dynamic/utils/defaults/set-dynamic-datatable-filter-menu-defaults.mjs +0 -6
- package/esm2020/datatable-dynamic/utils/defaults/set-dynamic-datatable-options-defaults.mjs +0 -6
- package/esm2020/datatable-dynamic/utils/index.mjs +0 -5
- package/esm2020/dynamic/action/api/dynamic-action-api-def.mjs +0 -2
- package/esm2020/dynamic/action/api/dynamic-action-api-errors.mjs +0 -4
- package/esm2020/dynamic/action/api/dynamic-action-api.mjs +0 -2
- package/esm2020/dynamic/action/api/dynamic-action-api.service.mjs +0 -209
- package/esm2020/dynamic/action/dynamic-action-helper.service.mjs +0 -158
- package/esm2020/dynamic/action/index.mjs +0 -11
- package/esm2020/dynamic/action/link/dynamic-action-link-def.mjs +0 -2
- package/esm2020/dynamic/action/link/dynamic-action-link.mjs +0 -2
- package/esm2020/dynamic/action/link/dynamic-action-link.service.mjs +0 -47
- package/esm2020/dynamic/action/modal/dynamic-action-modal-def.mjs +0 -2
- package/esm2020/dynamic/action/modal/dynamic-action-modal.mjs +0 -2
- package/esm2020/dynamic/action/modal/dynamic-action-modal.service.mjs +0 -85
- package/esm2020/dynamic/dynamic-value-helper.service.mjs +0 -105
- package/esm2020/dynamic/evaluators/exporters-data-evaluator/exporters-data-evaluator.mjs +0 -30
- package/esm2020/dynamic/evaluators/exporters-data-evaluator/exporters-data-value.mjs +0 -2
- package/esm2020/dynamic/evaluators/exporters-data-evaluator/index.mjs +0 -3
- package/esm2020/dynamic/evaluators/index.mjs +0 -3
- package/esm2020/dynamic/evaluators/jexl-evaluator/index.mjs +0 -3
- package/esm2020/dynamic/evaluators/jexl-evaluator/jexl-evaluator.mjs +0 -32
- package/esm2020/dynamic/evaluators/jexl-evaluator/jexl-value.mjs +0 -2
- package/esm2020/dynamic/models/dynamic-action-confirm-def.mjs +0 -2
- package/esm2020/dynamic/models/dynamic-action-context.mjs +0 -2
- package/esm2020/dynamic/models/dynamic-action-def.mjs +0 -3
- package/esm2020/dynamic/models/dynamic-action-ui-anchor-def.mjs +0 -2
- package/esm2020/dynamic/models/dynamic-action-ui-button-def.mjs +0 -2
- package/esm2020/dynamic/models/dynamic-action-ui-def.mjs +0 -2
- package/esm2020/dynamic/models/dynamic-action.mjs +0 -2
- package/esm2020/dynamic/models/dynamic-value-base-type.mjs +0 -2
- package/esm2020/dynamic/models/dynamic-value-evaluatable-type.mjs +0 -2
- package/esm2020/dynamic/models/dynamic-value-evaluator.mjs +0 -2
- package/esm2020/dynamic/models/dynamic-value-primitive.mjs +0 -2
- package/esm2020/dynamic/models/dynamic-value-type.mjs +0 -2
- package/esm2020/dynamic/models/dynamic-value.mjs +0 -2
- package/esm2020/dynamic/models/index.mjs +0 -14
- package/esm2020/dynamic/public-api.mjs +0 -7
- package/esm2020/dynamic/theseam-ui-common-dynamic.mjs +0 -5
- package/esm2020/dynamic/tokens/api-config.mjs +0 -29
- package/esm2020/dynamic/tokens/dynamic-action.mjs +0 -3
- package/esm2020/dynamic/tokens/dynamic-data.mjs +0 -3
- package/esm2020/dynamic/tokens/dynamic-value-evaluator.mjs +0 -3
- package/esm2020/dynamic/tokens/index.mjs +0 -5
- package/esm2020/dynamic/utils/index.mjs +0 -2
- package/esm2020/dynamic/utils/is-action-type.mjs +0 -4
- package/esm2020/dynamic-component-loader/dynamic-component-loader.module.mjs +0 -50
- package/esm2020/dynamic-component-loader/dynamic-component-loader.service.mjs +0 -78
- package/esm2020/dynamic-component-loader/dynamic-component-manifest.mjs +0 -2
- package/esm2020/dynamic-component-loader/dynamic-component-tokens.mjs +0 -5
- package/esm2020/dynamic-component-loader/public-api.mjs +0 -5
- package/esm2020/dynamic-component-loader/theseam-ui-common-dynamic-component-loader.mjs +0 -5
- package/esm2020/footer-bar/footer-bar/footer-bar.component.mjs +0 -11
- package/esm2020/footer-bar/footer-bar.module.mjs +0 -20
- package/esm2020/footer-bar/public-api.mjs +0 -3
- package/esm2020/footer-bar/theseam-ui-common-footer-bar.mjs +0 -5
- package/esm2020/form-field/form-field-error.directive.mjs +0 -30
- package/esm2020/form-field/form-field-help-text.directive.mjs +0 -16
- package/esm2020/form-field/form-field-label-tpl.directive.mjs +0 -16
- package/esm2020/form-field/form-field-required-indicator.component.mjs +0 -61
- package/esm2020/form-field/form-field-tokens.mjs +0 -3
- package/esm2020/form-field/form-field.component.mjs +0 -221
- package/esm2020/form-field/form-field.module.mjs +0 -61
- package/esm2020/form-field/input.directive.mjs +0 -227
- package/esm2020/form-field/public-api.mjs +0 -10
- package/esm2020/form-field/testing/form-field-required-indicator.harness.mjs +0 -8
- package/esm2020/form-field/testing/form-field.harness.mjs +0 -45
- package/esm2020/form-field/testing/index.mjs +0 -3
- package/esm2020/form-field/theseam-ui-common-form-field.mjs +0 -5
- package/esm2020/form-field-error/form-field-error/form-field-error.component.mjs +0 -26
- package/esm2020/form-field-error/form-field-error-list/form-field-error-list-item-tpl.directive.mjs +0 -26
- package/esm2020/form-field-error/form-field-error-list/form-field-error-list-item.directive.mjs +0 -18
- package/esm2020/form-field-error/form-field-error-list/form-field-error-list.component.mjs +0 -384
- package/esm2020/form-field-error/form-field-error.module.mjs +0 -39
- package/esm2020/form-field-error/public-api.mjs +0 -6
- package/esm2020/form-field-error/theseam-ui-common-form-field-error.mjs +0 -5
- package/esm2020/framework/base-layout/base-layout-action.mjs +0 -2
- package/esm2020/framework/base-layout/base-layout-nav.mjs +0 -2
- package/esm2020/framework/base-layout/base-layout-ref.mjs +0 -2
- package/esm2020/framework/base-layout/base-layout-tokens.mjs +0 -3
- package/esm2020/framework/base-layout/base-layout.component.mjs +0 -133
- package/esm2020/framework/base-layout/base-layout.module.mjs +0 -80
- package/esm2020/framework/base-layout/directives/base-layout-content-footer.directive.mjs +0 -16
- package/esm2020/framework/base-layout/directives/base-layout-content-header.directive.mjs +0 -16
- package/esm2020/framework/base-layout/directives/base-layout-content.directive.mjs +0 -16
- package/esm2020/framework/base-layout/directives/base-layout-nav-toggle.directive.mjs +0 -66
- package/esm2020/framework/base-layout/directives/base-layout-side-bar-footer.directive.mjs +0 -16
- package/esm2020/framework/base-layout/directives/base-layout-side-bar-header.directive.mjs +0 -16
- package/esm2020/framework/base-layout/directives/base-layout-side-bar.directive.mjs +0 -16
- package/esm2020/framework/base-layout/directives/base-layout-top-bar.directive.mjs +0 -16
- package/esm2020/framework/base-layout/index.mjs +0 -15
- package/esm2020/framework/dashboard/dashboard-widget-container/dashboard-widget-container.component.mjs +0 -16
- package/esm2020/framework/dashboard/dashboard-widget-template-container/dashboard-widget-template-container.component.mjs +0 -23
- package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widget-portal-outlet.directive.mjs +0 -119
- package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widgets-item.mjs +0 -2
- package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widgets-preferences-accessor-token.mjs +0 -3
- package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widgets-preferences-accessor.mjs +0 -2
- package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widgets-preferences.service.mjs +0 -177
- package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widgets.component.mjs +0 -207
- package/esm2020/framework/dashboard/dashboard-widgets/dashboard-widgets.service.mjs +0 -181
- package/esm2020/framework/dashboard/dashboard-widgets-tokens.mjs +0 -3
- package/esm2020/framework/dashboard/dashboard.component.mjs +0 -24
- package/esm2020/framework/dashboard/dashboard.module.mjs +0 -60
- package/esm2020/framework/dashboard/index.mjs +0 -12
- package/esm2020/framework/dynamic-router/dynamic-route-def.mjs +0 -2
- package/esm2020/framework/dynamic-router/dynamic-router.module.mjs +0 -28
- package/esm2020/framework/dynamic-router/hierarchy-router-outlet/hierarchy-route-animations.mjs +0 -256
- package/esm2020/framework/dynamic-router/hierarchy-router-outlet/hierarchy-router-outlet.component.mjs +0 -116
- package/esm2020/framework/dynamic-router/index.mjs +0 -6
- package/esm2020/framework/dynamic-router/resolvers/hierarchy-level.resolver.mjs +0 -26
- package/esm2020/framework/nav/horizontal-nav/horizontal-nav.component.mjs +0 -55
- package/esm2020/framework/nav/index.mjs +0 -6
- package/esm2020/framework/nav/nav-item/nav-item.component.mjs +0 -227
- package/esm2020/framework/nav/nav-utils.mjs +0 -107
- package/esm2020/framework/nav/nav.models.mjs +0 -2
- package/esm2020/framework/nav/nav.module.mjs +0 -67
- package/esm2020/framework/nav/nav.service.mjs +0 -204
- package/esm2020/framework/public-api.mjs +0 -8
- package/esm2020/framework/schema-form/index.mjs +0 -5
- package/esm2020/framework/schema-form/schema-form-framework.component.mjs +0 -21
- package/esm2020/framework/schema-form/schema-form-framework.mjs +0 -85
- package/esm2020/framework/schema-form/schema-form-widget.mjs +0 -2
- package/esm2020/framework/schema-form/schema-form.module.mjs +0 -45
- package/esm2020/framework/schema-form-controls/schema-form-checkbox/schema-form-checkbox.component.mjs +0 -53
- package/esm2020/framework/schema-form-controls/schema-form-divider/schema-form-divider.component.mjs +0 -20
- package/esm2020/framework/schema-form-controls/schema-form-input/schema-form-input.component.mjs +0 -43
- package/esm2020/framework/schema-form-controls/schema-form-number/schema-form-number.component.mjs +0 -49
- package/esm2020/framework/schema-form-controls/schema-form-select/schema-form-select.component.mjs +0 -48
- package/esm2020/framework/schema-form-controls/schema-form-submit/schema-form-submit.component.mjs +0 -54
- package/esm2020/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.mjs +0 -156
- package/esm2020/framework/schema-form-controls/schema-form-tel/schema-form-tel.component.mjs +0 -48
- package/esm2020/framework/schema-form-controls/schema-form-tiled-select/schema-form-tiled-select.component.mjs +0 -57
- package/esm2020/framework/side-nav/index.mjs +0 -8
- package/esm2020/framework/side-nav/side-nav-item/side-nav-item.component.mjs +0 -186
- package/esm2020/framework/side-nav/side-nav-toggle/side-nav-toggle.component.mjs +0 -40
- package/esm2020/framework/side-nav/side-nav-tokens.mjs +0 -7
- package/esm2020/framework/side-nav/side-nav-utils.mjs +0 -90
- package/esm2020/framework/side-nav/side-nav.component.mjs +0 -408
- package/esm2020/framework/side-nav/side-nav.models.mjs +0 -2
- package/esm2020/framework/side-nav/side-nav.module.mjs +0 -32
- package/esm2020/framework/side-nav/side-nav.service.mjs +0 -178
- package/esm2020/framework/theseam-ui-common-framework.mjs +0 -5
- package/esm2020/framework/top-bar/index.mjs +0 -10
- package/esm2020/framework/top-bar/top-bar-compact-menu-btn-detail.directive.mjs +0 -16
- package/esm2020/framework/top-bar/top-bar-item.directive.mjs +0 -22
- package/esm2020/framework/top-bar/top-bar-menu-btn-detail.directive.mjs +0 -16
- package/esm2020/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.mjs +0 -56
- package/esm2020/framework/top-bar/top-bar-menu.directive.mjs +0 -19
- package/esm2020/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.mjs +0 -16
- package/esm2020/framework/top-bar/top-bar-title/top-bar-title.component.mjs +0 -17
- package/esm2020/framework/top-bar/top-bar.component.mjs +0 -141
- package/esm2020/framework/top-bar/top-bar.module.mjs +0 -83
- package/esm2020/google-maps/google-maps/google-maps.component.mjs +0 -333
- package/esm2020/google-maps/google-maps-api-loader/google-maps-api-loader.mjs +0 -3
- package/esm2020/google-maps/google-maps-api-loader/lazy-google-maps-api-loader.mjs +0 -104
- package/esm2020/google-maps/google-maps-api-loader/noop-google-maps-api-loader.mjs +0 -25
- package/esm2020/google-maps/google-maps-contextmenu.mjs +0 -114
- package/esm2020/google-maps/google-maps-controls.service.mjs +0 -67
- package/esm2020/google-maps/google-maps-feature-helpers.mjs +0 -223
- package/esm2020/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.component.mjs +0 -209
- package/esm2020/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.directive.mjs +0 -165
- package/esm2020/google-maps/google-maps-recenter-button-control/google-maps-recenter-button-control.component.mjs +0 -58
- package/esm2020/google-maps/google-maps-upload-button-control/google-maps-upload-button-control.component.mjs +0 -115
- package/esm2020/google-maps/google-maps.module.mjs +0 -72
- package/esm2020/google-maps/google-maps.service.mjs +0 -429
- package/esm2020/google-maps/map-control.component.mjs +0 -66
- package/esm2020/google-maps/map-controls-service.mjs +0 -4
- package/esm2020/google-maps/map-file-drop/map-file-drop.component.mjs +0 -128
- package/esm2020/google-maps/map-value-manager.service.mjs +0 -48
- package/esm2020/google-maps/public-api.mjs +0 -18
- package/esm2020/google-maps/theseam-ui-common-google-maps.mjs +0 -5
- package/esm2020/graphql/datatable/create-page-info-observable.mjs +0 -38
- package/esm2020/graphql/datatable/datatable-graphql-query-ref.mjs +0 -212
- package/esm2020/graphql/datatable/datatable-graphql.service.mjs +0 -50
- package/esm2020/graphql/datatable/datatable-helpers.mjs +0 -175
- package/esm2020/graphql/datatable/get-page-info.mjs +0 -10
- package/esm2020/graphql/datatable/index.mjs +0 -10
- package/esm2020/graphql/datatable/map-filter-states.mjs +0 -63
- package/esm2020/graphql/datatable/map-page-info.mjs +0 -14
- package/esm2020/graphql/datatable/map-search-date-columns-data-filter-state-to-gql.mjs +0 -139
- package/esm2020/graphql/datatable/map-search-numeric-columns-data-filter-state-to-gql.mjs +0 -75
- package/esm2020/graphql/datatable/map-search-text-columns-data-filter-state-to-gql.mjs +0 -44
- package/esm2020/graphql/datatable/mapper-context.mjs +0 -2
- package/esm2020/graphql/models/direction.mjs +0 -8
- package/esm2020/graphql/models/gql-datatable-accessor.mjs +0 -2
- package/esm2020/graphql/models/hint-definition.mjs +0 -2
- package/esm2020/graphql/models/hint-transform-operation.mjs +0 -2
- package/esm2020/graphql/models/hint-transformer.mjs +0 -2
- package/esm2020/graphql/models/hints-kind.mjs +0 -9
- package/esm2020/graphql/models/hints-token.mjs +0 -2
- package/esm2020/graphql/models/index.mjs +0 -10
- package/esm2020/graphql/models/query-processing-config.mjs +0 -2
- package/esm2020/graphql/models/variable.mjs +0 -7
- package/esm2020/graphql/public-api.mjs +0 -3
- package/esm2020/graphql/theseam-ui-common-graphql.mjs +0 -5
- package/esm2020/graphql/utils/contains-variable.mjs +0 -14
- package/esm2020/graphql/utils/gql-var.mjs +0 -4
- package/esm2020/graphql/utils/hints-tokens-containing-hint.mjs +0 -4
- package/esm2020/graphql/utils/index.mjs +0 -11
- package/esm2020/graphql/utils/inline-variables.mjs +0 -51
- package/esm2020/graphql/utils/parse-comments.mjs +0 -24
- package/esm2020/graphql/utils/parse-hints.mjs +0 -108
- package/esm2020/graphql/utils/remove-variable-definition.mjs +0 -14
- package/esm2020/graphql/utils/remove-variable-definitions-not-defined.mjs +0 -19
- package/esm2020/graphql/utils/remove-variable.mjs +0 -22
- package/esm2020/graphql/utils/to-gql.mjs +0 -40
- package/esm2020/icon/icon/icon.component.mjs +0 -139
- package/esm2020/icon/icon-btn/icon-btn.component.mjs +0 -183
- package/esm2020/icon/icon-notification/icon-notification.component.mjs +0 -124
- package/esm2020/icon/icon.mjs +0 -2
- package/esm2020/icon/icon.module.mjs +0 -38
- package/esm2020/icon/public-api.mjs +0 -7
- package/esm2020/icon/theseam-ui-common-icon.mjs +0 -5
- package/esm2020/icon/utils/file-extension-icon.mjs +0 -33
- package/esm2020/icon/utils/get-known-icon.mjs +0 -82
- package/esm2020/icon/utils/index.mjs +0 -3
- package/esm2020/layout/breakpoint-aliases.mjs +0 -11
- package/esm2020/layout/layout.module.mjs +0 -25
- package/esm2020/layout/layout.service.mjs +0 -32
- package/esm2020/layout/observe-media-query.mjs +0 -41
- package/esm2020/layout/public-api.mjs +0 -5
- package/esm2020/layout/theseam-ui-common-layout.mjs +0 -5
- package/esm2020/loading/loading/loading.component.mjs +0 -26
- package/esm2020/loading/loading-overlay.service.mjs +0 -58
- package/esm2020/loading/loading-themes.mjs +0 -18
- package/esm2020/loading/loading.models.mjs +0 -2
- package/esm2020/loading/loading.module.mjs +0 -41
- package/esm2020/loading/public-api.mjs +0 -6
- package/esm2020/loading/theseam-ui-common-loading.mjs +0 -5
- package/esm2020/menu/menu-animations.mjs +0 -58
- package/esm2020/menu/menu-divider.component.mjs +0 -13
- package/esm2020/menu/menu-footer/menu-footer.component.mjs +0 -32
- package/esm2020/menu/menu-footer-action/menu-footer-action.component.mjs +0 -54
- package/esm2020/menu/menu-header/menu-header.component.mjs +0 -32
- package/esm2020/menu/menu-item.component.mjs +0 -158
- package/esm2020/menu/menu-panel-token.mjs +0 -6
- package/esm2020/menu/menu-panel.mjs +0 -2
- package/esm2020/menu/menu-toggle.directive.mjs +0 -427
- package/esm2020/menu/menu.component.mjs +0 -200
- package/esm2020/menu/menu.module.mjs +0 -67
- package/esm2020/menu/public-api.mjs +0 -16
- package/esm2020/menu/testing/menu-footer.harness.mjs +0 -28
- package/esm2020/menu/testing/menu-header.harness.mjs +0 -23
- package/esm2020/menu/testing/menu-item.harness.mjs +0 -59
- package/esm2020/menu/testing/menu.harness.mjs +0 -163
- package/esm2020/menu/testing/utils.mjs +0 -13
- package/esm2020/menu/theseam-ui-common-menu.mjs +0 -5
- package/esm2020/modal/directives/modal-close.directive.mjs +0 -74
- package/esm2020/modal/directives/modal-footer-tpl.directive.mjs +0 -16
- package/esm2020/modal/directives/modal-header-icon-tpl.directive.mjs +0 -16
- package/esm2020/modal/directives/modal-header-title-tpl.directive.mjs +0 -16
- package/esm2020/modal/directives/modal-title.directive.mjs +0 -20
- package/esm2020/modal/directives/modal.directive.mjs +0 -25
- package/esm2020/modal/modal/modal.component.mjs +0 -162
- package/esm2020/modal/modal-body/modal-body.component.mjs +0 -21
- package/esm2020/modal/modal-config.mjs +0 -47
- package/esm2020/modal/modal-container/modal-container.component.mjs +0 -245
- package/esm2020/modal/modal-footer/modal-footer.component.mjs +0 -17
- package/esm2020/modal/modal-header/modal-header.component.mjs +0 -28
- package/esm2020/modal/modal-injectors.mjs +0 -23
- package/esm2020/modal/modal-ref.mjs +0 -171
- package/esm2020/modal/modal-utils.mjs +0 -14
- package/esm2020/modal/modal.models.mjs +0 -3
- package/esm2020/modal/modal.module.mjs +0 -127
- package/esm2020/modal/modal.service.mjs +0 -352
- package/esm2020/modal/public-api.mjs +0 -20
- package/esm2020/modal/route-modal/route-modal.component.mjs +0 -62
- package/esm2020/modal/theseam-ui-common-modal.mjs +0 -5
- package/esm2020/models/component-type.mjs +0 -4
- package/esm2020/models/http-status-codes.mjs +0 -20
- package/esm2020/models/public-api.mjs +0 -8
- package/esm2020/models/size-prefixes.mjs +0 -2
- package/esm2020/models/size-types.mjs +0 -2
- package/esm2020/models/theme-names.mjs +0 -26
- package/esm2020/models/theme-prefixes.mjs +0 -2
- package/esm2020/models/theme-types.mjs +0 -2
- package/esm2020/models/theseam-ui-common-models.mjs +0 -5
- package/esm2020/navigation-reload/navigation-reload.config.mjs +0 -2
- package/esm2020/navigation-reload/navigation-reload.provider.mjs +0 -14
- package/esm2020/navigation-reload/navigation-reload.service.mjs +0 -54
- package/esm2020/navigation-reload/public-api.mjs +0 -4
- package/esm2020/navigation-reload/theseam-ui-common-navigation-reload.mjs +0 -5
- package/esm2020/popover/popover/popover.component.mjs +0 -160
- package/esm2020/popover/popover-animations.mjs +0 -46
- package/esm2020/popover/popover.directive.mjs +0 -264
- package/esm2020/popover/popover.module.mjs +0 -40
- package/esm2020/popover/public-api.mjs +0 -5
- package/esm2020/popover/theseam-ui-common-popover.mjs +0 -5
- package/esm2020/progress/progress-circle/progress-circle.component.mjs +0 -65
- package/esm2020/progress/progress.module.mjs +0 -24
- package/esm2020/progress/public-api.mjs +0 -3
- package/esm2020/progress/theseam-ui-common-progress.mjs +0 -5
- package/esm2020/public_api.mjs +0 -2
- package/esm2020/rich-text/public-api.mjs +0 -5
- package/esm2020/rich-text/rich-text/rich-text.component.mjs +0 -594
- package/esm2020/rich-text/rich-text.module.mjs +0 -32
- package/esm2020/rich-text/theseam-ui-common-rich-text.mjs +0 -5
- package/esm2020/rich-text/utils/models.mjs +0 -24
- package/esm2020/rich-text/utils/utils.mjs +0 -123
- package/esm2020/scrollbar/overlay-scrollbar.directive.mjs +0 -60
- package/esm2020/scrollbar/overlay-scrollbars-config-model.mjs +0 -2
- package/esm2020/scrollbar/overlay-scrollbars-config.mjs +0 -13
- package/esm2020/scrollbar/overlay-scrollbars.service.mjs +0 -83
- package/esm2020/scrollbar/public-api.mjs +0 -6
- package/esm2020/scrollbar/scrollbar.module.mjs +0 -30
- package/esm2020/scrollbar/theseam-ui-common-scrollbar.mjs +0 -5
- package/esm2020/services/asset-loader.service.mjs +0 -32
- package/esm2020/services/font-loader.service.mjs +0 -83
- package/esm2020/services/preferences/preferences-accessor.mjs +0 -2
- package/esm2020/services/preferences/preferences-manager.service.mjs +0 -69
- package/esm2020/services/preferences/preferences-record.mjs +0 -72
- package/esm2020/services/preferences/preferences.models.mjs +0 -2
- package/esm2020/services/public-api.mjs +0 -8
- package/esm2020/services/router-helpers.service.mjs +0 -25
- package/esm2020/services/theseam-ui-common-services.mjs +0 -5
- package/esm2020/shared/components/index.mjs +0 -2
- package/esm2020/shared/components/password-input-reveal/password-input-reveal.component.mjs +0 -49
- package/esm2020/shared/directives/auto-focus.directive.mjs +0 -54
- package/esm2020/shared/directives/click-outside.directive.mjs +0 -52
- package/esm2020/shared/directives/disable-control.directive.mjs +0 -27
- package/esm2020/shared/directives/elem-resized.directive.mjs +0 -28
- package/esm2020/shared/directives/hover-class-toggle.directive.mjs +0 -88
- package/esm2020/shared/directives/hover-class.directive.mjs +0 -82
- package/esm2020/shared/directives/index.mjs +0 -9
- package/esm2020/shared/directives/ng-select-extra.directive.mjs +0 -184
- package/esm2020/shared/directives/ngx-quill-extra.directive.mjs +0 -61
- package/esm2020/shared/pipes/index.mjs +0 -3
- package/esm2020/shared/pipes/mask-chars.pipe.mjs +0 -25
- package/esm2020/shared/pipes/truncate.pipe.mjs +0 -23
- package/esm2020/shared/public-api.mjs +0 -5
- package/esm2020/shared/shared.module.mjs +0 -93
- package/esm2020/shared/theseam-ui-common-shared.mjs +0 -5
- package/esm2020/storage/local-storage.service.mjs +0 -78
- package/esm2020/storage/localstorage-memory.mjs +0 -64
- package/esm2020/storage/public-api.mjs +0 -2
- package/esm2020/storage/theseam-ui-common-storage.mjs +0 -5
- package/esm2020/story-helpers/arg-type-helpers.mjs +0 -31
- package/esm2020/story-helpers/args-to-tpl.mjs +0 -83
- package/esm2020/story-helpers/initial-route-factory.mjs +0 -4
- package/esm2020/story-helpers/initial-route.service.mjs +0 -27
- package/esm2020/story-helpers/on-story-bootstrapped-exec.mjs +0 -61
- package/esm2020/story-helpers/on-story-bootstrapped-trigger.mjs +0 -39
- package/esm2020/story-helpers/public-api.mjs +0 -16
- package/esm2020/story-helpers/route-button.mjs +0 -12
- package/esm2020/story-helpers/routes-arg-type.mjs +0 -19
- package/esm2020/story-helpers/story-empty-with-route.component.mjs +0 -12
- package/esm2020/story-helpers/story-empty.component.mjs +0 -11
- package/esm2020/story-helpers/story-helper-components.module.mjs +0 -42
- package/esm2020/story-helpers/story-initial-route.mjs +0 -28
- package/esm2020/story-helpers/story-modal-container.component.mjs +0 -90
- package/esm2020/story-helpers/story-preferences-accessor.service.mjs +0 -34
- package/esm2020/story-helpers/story-toastr.service.mjs +0 -36
- package/esm2020/story-helpers/theseam-ui-common-story-helpers.mjs +0 -5
- package/esm2020/tabbed/directives/tabbed-tab-content.directive.mjs +0 -17
- package/esm2020/tabbed/directives/tabbed-tab.directive.mjs +0 -37
- package/esm2020/tabbed/public-api.mjs +0 -9
- package/esm2020/tabbed/tabbed-content/tabbed-content.component.mjs +0 -16
- package/esm2020/tabbed/tabbed-item/tabbed-item.component.mjs +0 -33
- package/esm2020/tabbed/tabbed-models.mjs +0 -2
- package/esm2020/tabbed/tabbed.component.mjs +0 -119
- package/esm2020/tabbed/tabbed.module.mjs +0 -54
- package/esm2020/tabbed/tabbed.service.mjs +0 -30
- package/esm2020/tabbed/theseam-ui-common-tabbed.mjs +0 -5
- package/esm2020/table/public-api.mjs +0 -6
- package/esm2020/table/table/table.component.mjs +0 -181
- package/esm2020/table/table-cell-tpl.directive.mjs +0 -17
- package/esm2020/table/table-column-header-tpl.directive.mjs +0 -17
- package/esm2020/table/table-column.component.mjs +0 -68
- package/esm2020/table/table.module.mjs +0 -48
- package/esm2020/table/theseam-ui-common-table.mjs +0 -5
- package/esm2020/table-cell-type/public-api.mjs +0 -12
- package/esm2020/table-cell-type/services/table-cell-types-helpers.service.mjs +0 -67
- package/esm2020/table-cell-type/table-cell-type-action.mjs +0 -2
- package/esm2020/table-cell-type/table-cell-type-column.mjs +0 -2
- package/esm2020/table-cell-type/table-cell-type-config.mjs +0 -2
- package/esm2020/table-cell-type/table-cell-type-export-props.mjs +0 -2
- package/esm2020/table-cell-type/table-cell-type-manifest-provider.mjs +0 -2
- package/esm2020/table-cell-type/table-cell-type-models.mjs +0 -2
- package/esm2020/table-cell-type/table-cell-type-name.mjs +0 -2
- package/esm2020/table-cell-type/table-cell-type-selector.component.mjs +0 -100
- package/esm2020/table-cell-type/table-cell-type-tokens.mjs +0 -4
- package/esm2020/table-cell-type/table-cell-type.module.mjs +0 -29
- package/esm2020/table-cell-type/theseam-ui-common-table-cell-type.mjs +0 -5
- package/esm2020/table-cell-types/public-api.mjs +0 -23
- package/esm2020/table-cell-types/table-cell-type-currency/table-cell-type-currency-config.mjs +0 -2
- package/esm2020/table-cell-types/table-cell-type-currency/table-cell-type-currency.component.mjs +0 -86
- package/esm2020/table-cell-types/table-cell-type-currency/table-cell-type-currency.mjs +0 -2
- package/esm2020/table-cell-types/table-cell-type-date/table-cell-type-date-config.mjs +0 -2
- package/esm2020/table-cell-types/table-cell-type-date/table-cell-type-date.component.mjs +0 -52
- package/esm2020/table-cell-types/table-cell-type-date/table-cell-type-date.mjs +0 -2
- package/esm2020/table-cell-types/table-cell-type-decimal/table-cell-type-decimal-config.mjs +0 -2
- package/esm2020/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.component.mjs +0 -84
- package/esm2020/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.mjs +0 -2
- package/esm2020/table-cell-types/table-cell-type-icon/table-cell-type-icon-config.mjs +0 -2
- package/esm2020/table-cell-types/table-cell-type-icon/table-cell-type-icon.component.mjs +0 -175
- package/esm2020/table-cell-types/table-cell-type-integer/table-cell-type-integer-config.mjs +0 -2
- package/esm2020/table-cell-types/table-cell-type-integer/table-cell-type-integer.component.mjs +0 -82
- package/esm2020/table-cell-types/table-cell-type-integer/table-cell-type-integer.mjs +0 -2
- package/esm2020/table-cell-types/table-cell-type-manifests.mjs +0 -92
- package/esm2020/table-cell-types/table-cell-type-phone/table-cell-type-phone-config.mjs +0 -2
- package/esm2020/table-cell-types/table-cell-type-phone/table-cell-type-phone.component.mjs +0 -67
- package/esm2020/table-cell-types/table-cell-type-progress-circle/table-cell-type-progress-circle-config.mjs +0 -2
- package/esm2020/table-cell-types/table-cell-type-progress-circle/table-cell-type-progress-circle.component.mjs +0 -168
- package/esm2020/table-cell-types/table-cell-type-progress-circle-icon/table-cell-type-progress-circle-icon-config.mjs +0 -2
- package/esm2020/table-cell-types/table-cell-type-progress-circle-icon/table-cell-type-progress-circle-icon.component.mjs +0 -77
- package/esm2020/table-cell-types/table-cell-type-string/table-cell-type-string-config.mjs +0 -2
- package/esm2020/table-cell-types/table-cell-type-string/table-cell-type-string.component.mjs +0 -197
- package/esm2020/table-cell-types/table-cell-types.module.mjs +0 -118
- package/esm2020/table-cell-types/theseam-ui-common-table-cell-types.mjs +0 -5
- package/esm2020/tel-input/intl-tel-input.mjs +0 -55
- package/esm2020/tel-input/models/index.mjs +0 -3
- package/esm2020/tel-input/models/tel-input-country-data.mjs +0 -2
- package/esm2020/tel-input/models/tel-input-number-format-name.mjs +0 -8
- package/esm2020/tel-input/phone-number.pipe.mjs +0 -49
- package/esm2020/tel-input/public-api.mjs +0 -11
- package/esm2020/tel-input/tel-input/tel-input.component.mjs +0 -198
- package/esm2020/tel-input/tel-input-constants.mjs +0 -18
- package/esm2020/tel-input/tel-input-validator.mjs +0 -27
- package/esm2020/tel-input/tel-input.directive.mjs +0 -209
- package/esm2020/tel-input/tel-input.module.mjs +0 -43
- package/esm2020/tel-input/testing/tel-input.harness.mjs +0 -49
- package/esm2020/tel-input/theseam-ui-common-tel-input.mjs +0 -5
- package/esm2020/tel-input/utils/add-country-code.mjs +0 -23
- package/esm2020/tel-input/utils/coerce-phone-number-format.mjs +0 -22
- package/esm2020/tel-input/utils/get-country-code.mjs +0 -9
- package/esm2020/tel-input/utils/get-dial-code.mjs +0 -45
- package/esm2020/tel-input/utils/get-global-intl-tel-input-globals.mjs +0 -4
- package/esm2020/tel-input/utils/get-global-intl-tel-input-utils.mjs +0 -4
- package/esm2020/tel-input/utils/get-intl-tel-input-utils.mjs +0 -17
- package/esm2020/tel-input/utils/get-validation-error-message.mjs +0 -12
- package/esm2020/tel-input/utils/index.mjs +0 -10
- package/esm2020/tel-input/utils/process-country-codes.mjs +0 -46
- package/esm2020/testing/current-tick-time.mjs +0 -16
- package/esm2020/testing/fake-toastr.mjs +0 -29
- package/esm2020/testing/get-harness.mjs +0 -19
- package/esm2020/testing/harnesses/ng-select-dropdown.harness.mjs +0 -39
- package/esm2020/testing/harnesses/ng-select-option.harness.mjs +0 -26
- package/esm2020/testing/harnesses/ng-select.harness.mjs +0 -104
- package/esm2020/testing/public-api.mjs +0 -10
- package/esm2020/testing/render-story.mjs +0 -10
- package/esm2020/testing/story-expect.mjs +0 -40
- package/esm2020/testing/theseam-ui-common-testing.mjs +0 -5
- package/esm2020/testing/tick-helper.mjs +0 -74
- package/esm2020/theseam-ui-common.mjs +0 -5
- package/esm2020/tiled-select/components/tiled-select/tiled-select.component.mjs +0 -214
- package/esm2020/tiled-select/components/tiled-select-tile/tiled-select-tile.component.mjs +0 -159
- package/esm2020/tiled-select/components/tiled-select-tile-icon/tiled-select-tile-icon.component.mjs +0 -63
- package/esm2020/tiled-select/directives/tiled-select-tile-icon-tpl.directive.mjs +0 -17
- package/esm2020/tiled-select/directives/tiled-select-tile-label-tpl.directive.mjs +0 -16
- package/esm2020/tiled-select/directives/tiled-select-tile-overlay.directive.mjs +0 -19
- package/esm2020/tiled-select/public-api.mjs +0 -10
- package/esm2020/tiled-select/testing/index.mjs +0 -3
- package/esm2020/tiled-select/testing/tiled-select-harness.mjs +0 -21
- package/esm2020/tiled-select/testing/tiled-select-tile-harness.mjs +0 -23
- package/esm2020/tiled-select/theseam-ui-common-tiled-select.mjs +0 -5
- package/esm2020/tiled-select/tiled-select.models.mjs +0 -2
- package/esm2020/tiled-select/tiled-select.module.mjs +0 -51
- package/esm2020/toggle-edit/models/can-toggle-edit.mjs +0 -2
- package/esm2020/toggle-edit/models/index.mjs +0 -3
- package/esm2020/toggle-edit/models/toggle-edit-ref.mjs +0 -2
- package/esm2020/toggle-edit/public-api.mjs +0 -7
- package/esm2020/toggle-edit/theseam-ui-common-toggle-edit.mjs +0 -5
- package/esm2020/toggle-edit/toggle-edit-actions-container/toggle-edit-actions-container.component.mjs +0 -11
- package/esm2020/toggle-edit/toggle-edit-display-tpl.directive.mjs +0 -16
- package/esm2020/toggle-edit/toggle-edit-keyboard-listener.service.mjs +0 -57
- package/esm2020/toggle-edit/toggle-edit.component.mjs +0 -414
- package/esm2020/toggle-edit/toggle-edit.module.mjs +0 -64
- package/esm2020/toggle-group/public-api.mjs +0 -4
- package/esm2020/toggle-group/theseam-ui-common-toggle-group.mjs +0 -5
- package/esm2020/toggle-group/toggle-group-option.directive.mjs +0 -47
- package/esm2020/toggle-group/toggle-group.directive.mjs +0 -199
- package/esm2020/toggle-group/toggle-group.module.mjs +0 -33
- package/esm2020/unsaved-changes-dialog/public-api.mjs +0 -5
- package/esm2020/unsaved-changes-dialog/theseam-ui-common-unsaved-changes-dialog.mjs +0 -5
- package/esm2020/unsaved-changes-dialog/unsaved-changes-can-deactivate.mjs +0 -30
- package/esm2020/unsaved-changes-dialog/unsaved-changes-dialog.component.mjs +0 -21
- package/esm2020/unsaved-changes-dialog/unsaved-changes-dialog.guard.mjs +0 -38
- package/esm2020/unsaved-changes-dialog/unsaved-changes-dialog.module.mjs +0 -17
- package/esm2020/utils/array-move.mjs +0 -62
- package/esm2020/utils/calc-percentage.mjs +0 -4
- package/esm2020/utils/cdk/get-closest-widget-cdk-drag.mjs +0 -18
- package/esm2020/utils/create-padding.mjs +0 -17
- package/esm2020/utils/file-utils.mjs +0 -49
- package/esm2020/utils/form/get-control-name.mjs +0 -31
- package/esm2020/utils/form/get-control-path.mjs +0 -38
- package/esm2020/utils/form/has-required-control.mjs +0 -50
- package/esm2020/utils/form/is-empty-input-value.mjs +0 -6
- package/esm2020/utils/form/observe-control-is-different.mjs +0 -18
- package/esm2020/utils/form/observe-control-status.mjs +0 -17
- package/esm2020/utils/form/observe-control-valid.mjs +0 -30
- package/esm2020/utils/form/observe-control-value-change.mjs +0 -10
- package/esm2020/utils/form/observe-control-value.mjs +0 -11
- package/esm2020/utils/form/wait-on-non-pending-status.mjs +0 -18
- package/esm2020/utils/fractional-digits-count.mjs +0 -19
- package/esm2020/utils/geo-json/close-polygons.mjs +0 -38
- package/esm2020/utils/geo-json/coerce-feature-collection.mjs +0 -44
- package/esm2020/utils/geo-json/geo-json-to-area.mjs +0 -11
- package/esm2020/utils/geo-json/is-feature-collection.validator.mjs +0 -21
- package/esm2020/utils/geo-json/is-only-geometry-types.mjs +0 -23
- package/esm2020/utils/geo-json/is-only-geometry-types.validator.mjs +0 -32
- package/esm2020/utils/geo-json/merge-polygons.mjs +0 -35
- package/esm2020/utils/geo-json/min-max-points.validator.mjs +0 -56
- package/esm2020/utils/geo-json/no-empty-feature-collection.validator.mjs +0 -24
- package/esm2020/utils/geo-json/no-inner-rings.validator.mjs +0 -63
- package/esm2020/utils/geo-json/no-kinks.validator.mjs +0 -39
- package/esm2020/utils/geo-json/read-geo-file.mjs +0 -93
- package/esm2020/utils/geo-json/split-multi-polygons.mjs +0 -29
- package/esm2020/utils/get-attribute.mjs +0 -7
- package/esm2020/utils/has-attribute.mjs +0 -7
- package/esm2020/utils/has-property.mjs +0 -7
- package/esm2020/utils/input-masks.mjs +0 -2
- package/esm2020/utils/is-absolute-url.mjs +0 -17
- package/esm2020/utils/is-null-or-undefined-or-empty.mjs +0 -4
- package/esm2020/utils/is-null-or-undefined.mjs +0 -4
- package/esm2020/utils/is-numeric.mjs +0 -4
- package/esm2020/utils/load-style-sheet.mjs +0 -14
- package/esm2020/utils/load-style.mjs +0 -13
- package/esm2020/utils/not-null-or-undefined-or-empty.mjs +0 -4
- package/esm2020/utils/not-null-or-undefined.mjs +0 -4
- package/esm2020/utils/obj-utils.mjs +0 -26
- package/esm2020/utils/observe-query-list.mjs +0 -5
- package/esm2020/utils/operators/index.mjs +0 -3
- package/esm2020/utils/operators/map-each.mjs +0 -6
- package/esm2020/utils/operators/tap-first.mjs +0 -14
- package/esm2020/utils/pad-end.mjs +0 -9
- package/esm2020/utils/pad-start.mjs +0 -9
- package/esm2020/utils/polling-ticker.mjs +0 -121
- package/esm2020/utils/public-api.mjs +0 -54
- package/esm2020/utils/refreshable.mjs +0 -65
- package/esm2020/utils/router/index.mjs +0 -7
- package/esm2020/utils/router/is-empty-url-route.mjs +0 -4
- package/esm2020/utils/router/leaf-child-route.mjs +0 -8
- package/esm2020/utils/router/operators/activated-routes-with-data-property.mjs +0 -11
- package/esm2020/utils/router/route-snapshot-path-full.mjs +0 -5
- package/esm2020/utils/router/route-snapshot-path-relative.mjs +0 -4
- package/esm2020/utils/router/will-have-data-prop.mjs +0 -10
- package/esm2020/utils/subscriber-count.mjs +0 -45
- package/esm2020/utils/theseam-ui-common-utils.mjs +0 -5
- package/esm2020/utils/toggle-attribute.mjs +0 -36
- package/esm2020/utils/wait-on-condition-async.mjs +0 -30
- package/esm2020/utils/wrap-into-observable.mjs +0 -8
- package/esm2020/validators/decimal.validator.mjs +0 -25
- package/esm2020/validators/email-exists.validator.mjs +0 -18
- package/esm2020/validators/integer.validator.mjs +0 -25
- package/esm2020/validators/phone-length.validator.mjs +0 -8
- package/esm2020/validators/public-api.mjs +0 -6
- package/esm2020/validators/tax-id.validator.mjs +0 -13
- package/esm2020/validators/theseam-ui-common-validators.mjs +0 -5
- package/esm2020/vertical-list-filter/public-api.mjs +0 -3
- package/esm2020/vertical-list-filter/testing/index.mjs +0 -2
- package/esm2020/vertical-list-filter/testing/vertical-list-filter.harness.mjs +0 -28
- package/esm2020/vertical-list-filter/theseam-ui-common-vertical-list-filter.mjs +0 -5
- package/esm2020/vertical-list-filter/vertical-list-filter.component.mjs +0 -52
- package/esm2020/viewers/html-template-viewer/html-template-viewer.component.mjs +0 -219
- package/esm2020/viewers/html-template-viewer/html-template-viewer.module.mjs +0 -32
- package/esm2020/viewers/html-template-viewer/index.mjs +0 -3
- package/esm2020/viewers/pdf-viewer/index.mjs +0 -4
- package/esm2020/viewers/pdf-viewer/pdf-page/pdf-page.component.mjs +0 -143
- package/esm2020/viewers/pdf-viewer/pdf-renderer.service.mjs +0 -28
- package/esm2020/viewers/pdf-viewer/pdf-viewer.component.mjs +0 -164
- package/esm2020/viewers/pdf-viewer/pdf-viewer.module.mjs +0 -33
- package/esm2020/viewers/public-api.mjs +0 -3
- package/esm2020/viewers/theseam-ui-common-viewers.mjs +0 -5
- package/esm2020/widget/directives/widget-drag-handle.directive.mjs +0 -150
- package/esm2020/widget/directives/widget-icon-tpl.directive.mjs +0 -16
- package/esm2020/widget/directives/widget-title-tpl.directive.mjs +0 -16
- package/esm2020/widget/preferences/widget-preferences.models.mjs +0 -5
- package/esm2020/widget/preferences/widget-preferences.service.mjs +0 -78
- package/esm2020/widget/preferences/widget-preferences.token.mjs +0 -3
- package/esm2020/widget/public-api.mjs +0 -42
- package/esm2020/widget/theseam-ui-common-widget.mjs +0 -5
- package/esm2020/widget/widget/widget.component.mjs +0 -214
- package/esm2020/widget/widget-content-components/widget-button-group/widget-button-group.component.mjs +0 -11
- package/esm2020/widget/widget-content-components/widget-button-group/widget-button-group.module.mjs +0 -30
- package/esm2020/widget/widget-content-components/widget-content-header/widget-content-header.component.mjs +0 -11
- package/esm2020/widget/widget-content-components/widget-content-header/widget-content-header.module.mjs +0 -24
- package/esm2020/widget/widget-content-components/widget-description/widget-description.component.mjs +0 -11
- package/esm2020/widget/widget-content-components/widget-description/widget-description.module.mjs +0 -24
- package/esm2020/widget/widget-content-components/widget-empty-label/widget-empty-label.component.mjs +0 -39
- package/esm2020/widget/widget-content-components/widget-empty-label/widget-empty-label.module.mjs +0 -24
- package/esm2020/widget/widget-content-components/widget-footer-link/widget-footer-link.component.mjs +0 -11
- package/esm2020/widget/widget-content-components/widget-footer-link/widget-footer-link.module.mjs +0 -24
- package/esm2020/widget/widget-content-components/widget-footer-text/widget-footer-text.component.mjs +0 -11
- package/esm2020/widget/widget-content-components/widget-footer-text/widget-footer-text.module.mjs +0 -24
- package/esm2020/widget/widget-content-components/widget-header-badge/widget-header-badge.component.mjs +0 -22
- package/esm2020/widget/widget-content-components/widget-header-badge/widget-header-badge.module.mjs +0 -24
- package/esm2020/widget/widget-content-components/widget-list-group/widget-list-group-item/widget-list-group-item-icon-tpl.directive.mjs +0 -17
- package/esm2020/widget/widget-content-components/widget-list-group/widget-list-group-item/widget-list-group-item.component.mjs +0 -124
- package/esm2020/widget/widget-content-components/widget-list-group/widget-list-group.component.mjs +0 -14
- package/esm2020/widget/widget-content-components/widget-list-group/widget-list-group.module.mjs +0 -46
- package/esm2020/widget/widget-content-components/widget-table/widget-table.component.mjs +0 -38
- package/esm2020/widget/widget-content-components/widget-table/widget-table.module.mjs +0 -32
- package/esm2020/widget/widget-content-components/widget-tile/widget-tile-footer/widget-tile-footer.component.mjs +0 -13
- package/esm2020/widget/widget-content-components/widget-tile/widget-tile-footer-item/widget-tile-footer-item.component.mjs +0 -41
- package/esm2020/widget/widget-content-components/widget-tile/widget-tile-group/widget-tile-group.component.mjs +0 -11
- package/esm2020/widget/widget-content-components/widget-tile/widget-tile-secondary-icon.directive.mjs +0 -17
- package/esm2020/widget/widget-content-components/widget-tile/widget-tile.component.mjs +0 -122
- package/esm2020/widget/widget-content-components/widget-tile/widget-tile.module.mjs +0 -48
- package/esm2020/widget/widget-content-components/widget-tile-list/widget-tile-list.component.mjs +0 -11
- package/esm2020/widget/widget-content-components/widget-tile-list/widget-tile-list.module.mjs +0 -27
- package/esm2020/widget/widget-footer/widget-footer.component.mjs +0 -11
- package/esm2020/widget/widget-registry.models.mjs +0 -2
- package/esm2020/widget/widget-registry.service.mjs +0 -56
- package/esm2020/widget/widget-token.mjs +0 -5
- package/esm2020/widget/widget.models.mjs +0 -2
- package/esm2020/widget/widget.module.mjs +0 -125
- package/fesm2015/theseam-ui-common-asset-reader.mjs +0 -186
- package/fesm2015/theseam-ui-common-asset-reader.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-breadcrumbs.mjs +0 -201
- package/fesm2015/theseam-ui-common-breadcrumbs.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-buttons.mjs +0 -492
- package/fesm2015/theseam-ui-common-buttons.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-card.mjs +0 -153
- package/fesm2015/theseam-ui-common-card.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-carousel.mjs +0 -266
- package/fesm2015/theseam-ui-common-carousel.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-checkbox.mjs +0 -391
- package/fesm2015/theseam-ui-common-checkbox.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-confirm-dialog.mjs +0 -192
- package/fesm2015/theseam-ui-common-confirm-dialog.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-core.mjs +0 -225
- package/fesm2015/theseam-ui-common-core.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-data-exporter.mjs +0 -93
- package/fesm2015/theseam-ui-common-data-exporter.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-data-filters.mjs +0 -508
- package/fesm2015/theseam-ui-common-data-filters.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-datatable-dynamic.mjs +0 -998
- package/fesm2015/theseam-ui-common-datatable-dynamic.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-datatable.mjs +0 -3685
- package/fesm2015/theseam-ui-common-datatable.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-dynamic-component-loader.mjs +0 -135
- package/fesm2015/theseam-ui-common-dynamic-component-loader.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-dynamic.mjs +0 -722
- package/fesm2015/theseam-ui-common-dynamic.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-footer-bar.mjs +0 -35
- package/fesm2015/theseam-ui-common-footer-bar.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-form-field-error.mjs +0 -479
- package/fesm2015/theseam-ui-common-form-field-error.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-form-field.mjs +0 -670
- package/fesm2015/theseam-ui-common-form-field.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-framework.mjs +0 -3891
- package/fesm2015/theseam-ui-common-framework.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-google-maps.mjs +0 -2083
- package/fesm2015/theseam-ui-common-google-maps.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-graphql.mjs +0 -1115
- package/fesm2015/theseam-ui-common-graphql.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-icon.mjs +0 -587
- package/fesm2015/theseam-ui-common-icon.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-layout.mjs +0 -101
- package/fesm2015/theseam-ui-common-layout.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-loading.mjs +0 -139
- package/fesm2015/theseam-ui-common-loading.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-menu.mjs +0 -1361
- package/fesm2015/theseam-ui-common-menu.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-modal.mjs +0 -1378
- package/fesm2015/theseam-ui-common-modal.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-models.mjs +0 -52
- package/fesm2015/theseam-ui-common-models.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-navigation-reload.mjs +0 -75
- package/fesm2015/theseam-ui-common-navigation-reload.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-popover.mjs +0 -506
- package/fesm2015/theseam-ui-common-popover.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-progress.mjs +0 -93
- package/fesm2015/theseam-ui-common-progress.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-rich-text.mjs +0 -767
- package/fesm2015/theseam-ui-common-rich-text.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-scrollbar.mjs +0 -184
- package/fesm2015/theseam-ui-common-scrollbar.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-services.mjs +0 -273
- package/fesm2015/theseam-ui-common-services.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-shared.mjs +0 -739
- package/fesm2015/theseam-ui-common-shared.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-storage.mjs +0 -148
- package/fesm2015/theseam-ui-common-storage.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-story-helpers.mjs +0 -514
- package/fesm2015/theseam-ui-common-story-helpers.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-tabbed.mjs +0 -288
- package/fesm2015/theseam-ui-common-tabbed.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-table-cell-type.mjs +0 -201
- package/fesm2015/theseam-ui-common-table-cell-type.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-table-cell-types.mjs +0 -1134
- package/fesm2015/theseam-ui-common-table-cell-types.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-table.mjs +0 -320
- package/fesm2015/theseam-ui-common-table.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-tel-input.mjs +0 -841
- package/fesm2015/theseam-ui-common-tel-input.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-testing.mjs +0 -395
- package/fesm2015/theseam-ui-common-testing.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-tiled-select.mjs +0 -571
- package/fesm2015/theseam-ui-common-tiled-select.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-toggle-edit.mjs +0 -560
- package/fesm2015/theseam-ui-common-toggle-edit.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-toggle-group.mjs +0 -281
- package/fesm2015/theseam-ui-common-toggle-group.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-unsaved-changes-dialog.mjs +0 -106
- package/fesm2015/theseam-ui-common-unsaved-changes-dialog.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-utils.mjs +0 -1387
- package/fesm2015/theseam-ui-common-utils.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-validators.mjs +0 -94
- package/fesm2015/theseam-ui-common-validators.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-vertical-list-filter.mjs +0 -96
- package/fesm2015/theseam-ui-common-vertical-list-filter.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-viewers.mjs +0 -602
- package/fesm2015/theseam-ui-common-viewers.mjs.map +0 -1
- package/fesm2015/theseam-ui-common-widget.mjs +0 -1395
- package/fesm2015/theseam-ui-common-widget.mjs.map +0 -1
- package/fesm2015/theseam-ui-common.mjs +0 -6
- package/fesm2015/theseam-ui-common.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-asset-reader.mjs +0 -184
- package/fesm2020/theseam-ui-common-asset-reader.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-breadcrumbs.mjs +0 -201
- package/fesm2020/theseam-ui-common-breadcrumbs.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-buttons.mjs +0 -466
- package/fesm2020/theseam-ui-common-buttons.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-card.mjs +0 -151
- package/fesm2020/theseam-ui-common-card.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-carousel.mjs +0 -266
- package/fesm2020/theseam-ui-common-carousel.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-checkbox.mjs +0 -373
- package/fesm2020/theseam-ui-common-checkbox.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-confirm-dialog.mjs +0 -192
- package/fesm2020/theseam-ui-common-confirm-dialog.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-core.mjs +0 -233
- package/fesm2020/theseam-ui-common-core.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-data-exporter.mjs +0 -93
- package/fesm2020/theseam-ui-common-data-exporter.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-data-filters.mjs +0 -500
- package/fesm2020/theseam-ui-common-data-filters.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-datatable-dynamic.mjs +0 -986
- package/fesm2020/theseam-ui-common-datatable-dynamic.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-datatable.mjs +0 -3662
- package/fesm2020/theseam-ui-common-datatable.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-dynamic-component-loader.mjs +0 -133
- package/fesm2020/theseam-ui-common-dynamic-component-loader.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-dynamic.mjs +0 -689
- package/fesm2020/theseam-ui-common-dynamic.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-footer-bar.mjs +0 -35
- package/fesm2020/theseam-ui-common-footer-bar.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-form-field-error.mjs +0 -483
- package/fesm2020/theseam-ui-common-form-field-error.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-form-field.mjs +0 -659
- package/fesm2020/theseam-ui-common-form-field.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-framework.mjs +0 -3883
- package/fesm2020/theseam-ui-common-framework.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-google-maps.mjs +0 -2072
- package/fesm2020/theseam-ui-common-google-maps.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-graphql.mjs +0 -1121
- package/fesm2020/theseam-ui-common-graphql.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-icon.mjs +0 -587
- package/fesm2020/theseam-ui-common-icon.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-layout.mjs +0 -111
- package/fesm2020/theseam-ui-common-layout.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-loading.mjs +0 -138
- package/fesm2020/theseam-ui-common-loading.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-menu.mjs +0 -1288
- package/fesm2020/theseam-ui-common-menu.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-modal.mjs +0 -1370
- package/fesm2020/theseam-ui-common-modal.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-models.mjs +0 -55
- package/fesm2020/theseam-ui-common-models.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-navigation-reload.mjs +0 -74
- package/fesm2020/theseam-ui-common-navigation-reload.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-popover.mjs +0 -503
- package/fesm2020/theseam-ui-common-popover.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-progress.mjs +0 -93
- package/fesm2020/theseam-ui-common-progress.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-rich-text.mjs +0 -773
- package/fesm2020/theseam-ui-common-rich-text.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-scrollbar.mjs +0 -184
- package/fesm2020/theseam-ui-common-scrollbar.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-services.mjs +0 -274
- package/fesm2020/theseam-ui-common-services.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-shared.mjs +0 -733
- package/fesm2020/theseam-ui-common-shared.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-storage.mjs +0 -148
- package/fesm2020/theseam-ui-common-storage.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-story-helpers.mjs +0 -512
- package/fesm2020/theseam-ui-common-story-helpers.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-tabbed.mjs +0 -286
- package/fesm2020/theseam-ui-common-tabbed.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-table-cell-type.mjs +0 -198
- package/fesm2020/theseam-ui-common-table-cell-type.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-table-cell-types.mjs +0 -1109
- package/fesm2020/theseam-ui-common-table-cell-types.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-table.mjs +0 -322
- package/fesm2020/theseam-ui-common-table.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-tel-input.mjs +0 -810
- package/fesm2020/theseam-ui-common-tel-input.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-testing.mjs +0 -359
- package/fesm2020/theseam-ui-common-testing.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-tiled-select.mjs +0 -557
- package/fesm2020/theseam-ui-common-tiled-select.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-toggle-edit.mjs +0 -553
- package/fesm2020/theseam-ui-common-toggle-edit.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-toggle-group.mjs +0 -277
- package/fesm2020/theseam-ui-common-toggle-group.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-unsaved-changes-dialog.mjs +0 -106
- package/fesm2020/theseam-ui-common-unsaved-changes-dialog.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-utils.mjs +0 -1364
- package/fesm2020/theseam-ui-common-utils.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-validators.mjs +0 -94
- package/fesm2020/theseam-ui-common-validators.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-vertical-list-filter.mjs +0 -87
- package/fesm2020/theseam-ui-common-vertical-list-filter.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-viewers.mjs +0 -598
- package/fesm2020/theseam-ui-common-viewers.mjs.map +0 -1
- package/fesm2020/theseam-ui-common-widget.mjs +0 -1387
- package/fesm2020/theseam-ui-common-widget.mjs.map +0 -1
- package/fesm2020/theseam-ui-common.mjs +0 -6
- package/fesm2020/theseam-ui-common.mjs.map +0 -1
- package/footer-bar/footer-bar/footer-bar.component.d.ts +0 -5
- package/footer-bar/footer-bar.module.d.ts +0 -8
- package/footer-bar/public-api.d.ts +0 -2
- package/form-field/form-field-error.directive.d.ts +0 -15
- package/form-field/form-field-help-text.directive.d.ts +0 -8
- package/form-field/form-field-label-tpl.directive.d.ts +0 -8
- package/form-field/form-field-required-indicator.component.d.ts +0 -16
- package/form-field/form-field-tokens.d.ts +0 -2
- package/form-field/form-field.component.d.ts +0 -117
- package/form-field/form-field.module.d.ts +0 -16
- package/form-field/input.directive.d.ts +0 -70
- package/form-field/public-api.d.ts +0 -9
- package/form-field/testing/form-field-required-indicator.harness.d.ts +0 -5
- package/form-field/testing/form-field.harness.d.ts +0 -14
- package/form-field/testing/index.d.ts +0 -2
- package/form-field-error/form-field-error/form-field-error.component.d.ts +0 -8
- package/form-field-error/form-field-error-list/form-field-error-list-item-tpl.directive.d.ts +0 -12
- package/form-field-error/form-field-error-list/form-field-error-list-item.directive.d.ts +0 -9
- package/form-field-error/form-field-error-list/form-field-error-list.component.d.ts +0 -65
- package/form-field-error/form-field-error.module.d.ts +0 -11
- package/form-field-error/public-api.d.ts +0 -5
- package/framework/base-layout/base-layout-action.d.ts +0 -31
- package/framework/base-layout/base-layout-nav.d.ts +0 -18
- package/framework/base-layout/base-layout-ref.d.ts +0 -14
- package/framework/base-layout/base-layout-tokens.d.ts +0 -3
- package/framework/base-layout/base-layout.component.d.ts +0 -48
- package/framework/base-layout/base-layout.module.d.ts +0 -20
- package/framework/base-layout/directives/base-layout-content-footer.directive.d.ts +0 -9
- package/framework/base-layout/directives/base-layout-content-header.directive.d.ts +0 -9
- package/framework/base-layout/directives/base-layout-content.directive.d.ts +0 -9
- package/framework/base-layout/directives/base-layout-nav-toggle.directive.d.ts +0 -22
- package/framework/base-layout/directives/base-layout-side-bar-footer.directive.d.ts +0 -9
- package/framework/base-layout/directives/base-layout-side-bar-header.directive.d.ts +0 -9
- package/framework/base-layout/directives/base-layout-side-bar.directive.d.ts +0 -9
- package/framework/base-layout/directives/base-layout-top-bar.directive.d.ts +0 -9
- package/framework/base-layout/index.d.ts +0 -14
- package/framework/dashboard/dashboard-widget-container/dashboard-widget-container.component.d.ts +0 -9
- package/framework/dashboard/dashboard-widget-template-container/dashboard-widget-template-container.component.d.ts +0 -13
- package/framework/dashboard/dashboard-widgets/dashboard-widget-portal-outlet.directive.d.ts +0 -50
- package/framework/dashboard/dashboard-widgets/dashboard-widgets-item.d.ts +0 -43
- package/framework/dashboard/dashboard-widgets/dashboard-widgets-preferences-accessor-token.d.ts +0 -3
- package/framework/dashboard/dashboard-widgets/dashboard-widgets-preferences-accessor.d.ts +0 -15
- package/framework/dashboard/dashboard-widgets/dashboard-widgets-preferences.service.d.ts +0 -30
- package/framework/dashboard/dashboard-widgets/dashboard-widgets.component.d.ts +0 -62
- package/framework/dashboard/dashboard-widgets/dashboard-widgets.service.d.ts +0 -37
- package/framework/dashboard/dashboard-widgets-tokens.d.ts +0 -7
- package/framework/dashboard/dashboard.component.d.ts +0 -10
- package/framework/dashboard/dashboard.module.d.ts +0 -17
- package/framework/dashboard/index.d.ts +0 -11
- package/framework/dynamic-router/dynamic-route-def.d.ts +0 -8
- package/framework/dynamic-router/dynamic-router.module.d.ts +0 -9
- package/framework/dynamic-router/hierarchy-router-outlet/hierarchy-route-animations.d.ts +0 -5
- package/framework/dynamic-router/hierarchy-router-outlet/hierarchy-router-outlet.component.d.ts +0 -25
- package/framework/dynamic-router/index.d.ts +0 -5
- package/framework/dynamic-router/resolvers/hierarchy-level.resolver.d.ts +0 -9
- package/framework/nav/horizontal-nav/horizontal-nav.component.d.ts +0 -25
- package/framework/nav/index.d.ts +0 -5
- package/framework/nav/nav-item/nav-item.component.d.ts +0 -74
- package/framework/nav/nav-utils.d.ts +0 -20
- package/framework/nav/nav.models.d.ts +0 -77
- package/framework/nav/nav.module.d.ts +0 -17
- package/framework/nav/nav.service.d.ts +0 -27
- package/framework/public-api.d.ts +0 -7
- package/framework/schema-form/index.d.ts +0 -4
- package/framework/schema-form/schema-form-framework.component.d.ts +0 -8
- package/framework/schema-form/schema-form-framework.d.ts +0 -32
- package/framework/schema-form/schema-form-widget.d.ts +0 -61
- package/framework/schema-form/schema-form.module.d.ts +0 -9
- package/framework/schema-form-controls/schema-form-checkbox/schema-form-checkbox.component.d.ts +0 -25
- package/framework/schema-form-controls/schema-form-divider/schema-form-divider.component.d.ts +0 -12
- package/framework/schema-form-controls/schema-form-input/schema-form-input.component.d.ts +0 -23
- package/framework/schema-form-controls/schema-form-number/schema-form-number.component.d.ts +0 -26
- package/framework/schema-form-controls/schema-form-select/schema-form-select.component.d.ts +0 -24
- package/framework/schema-form-controls/schema-form-submit/schema-form-submit.component.d.ts +0 -22
- package/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.d.ts +0 -38
- package/framework/schema-form-controls/schema-form-tel/schema-form-tel.component.d.ts +0 -23
- package/framework/schema-form-controls/schema-form-tiled-select/schema-form-tiled-select.component.d.ts +0 -32
- package/framework/side-nav/index.d.ts +0 -7
- package/framework/side-nav/side-nav-item/side-nav-item.component.d.ts +0 -70
- package/framework/side-nav/side-nav-toggle/side-nav-toggle.component.d.ts +0 -14
- package/framework/side-nav/side-nav-tokens.d.ts +0 -14
- package/framework/side-nav/side-nav-utils.d.ts +0 -24
- package/framework/side-nav/side-nav.component.d.ts +0 -66
- package/framework/side-nav/side-nav.models.d.ts +0 -93
- package/framework/side-nav/side-nav.module.d.ts +0 -9
- package/framework/side-nav/side-nav.service.d.ts +0 -24
- package/framework/top-bar/index.d.ts +0 -9
- package/framework/top-bar/top-bar-compact-menu-btn-detail.directive.d.ts +0 -8
- package/framework/top-bar/top-bar-item.directive.d.ts +0 -11
- package/framework/top-bar/top-bar-menu-btn-detail.directive.d.ts +0 -8
- package/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.d.ts +0 -26
- package/framework/top-bar/top-bar-menu.directive.d.ts +0 -8
- package/framework/top-bar/top-bar-nav-toggle-btn-detail.directive.d.ts +0 -8
- package/framework/top-bar/top-bar-title/top-bar-title.component.d.ts +0 -7
- package/framework/top-bar/top-bar.component.d.ts +0 -85
- package/framework/top-bar/top-bar.module.d.ts +0 -21
- package/google-maps/google-maps/google-maps.component.d.ts +0 -105
- package/google-maps/google-maps-api-loader/google-maps-api-loader.d.ts +0 -4
- package/google-maps/google-maps-api-loader/lazy-google-maps-api-loader.d.ts +0 -74
- package/google-maps/google-maps-api-loader/noop-google-maps-api-loader.d.ts +0 -13
- package/google-maps/google-maps-contextmenu.d.ts +0 -15
- package/google-maps/google-maps-controls.service.d.ts +0 -26
- package/google-maps/google-maps-feature-helpers.d.ts +0 -41
- package/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.component.d.ts +0 -106
- package/google-maps/google-maps-places-autocomplete/google-maps-places-autocomplete.directive.d.ts +0 -83
- package/google-maps/google-maps-recenter-button-control/google-maps-recenter-button-control.component.d.ts +0 -24
- package/google-maps/google-maps-upload-button-control/google-maps-upload-button-control.component.d.ts +0 -37
- package/google-maps/google-maps.module.d.ts +0 -20
- package/google-maps/google-maps.service.d.ts +0 -65
- package/google-maps/map-control.component.d.ts +0 -23
- package/google-maps/map-controls-service.d.ts +0 -13
- package/google-maps/map-file-drop/map-file-drop.component.d.ts +0 -37
- package/google-maps/map-value-manager.service.d.ts +0 -21
- package/google-maps/public-api.d.ts +0 -17
- package/graphql/datatable/create-page-info-observable.d.ts +0 -4
- package/graphql/datatable/datatable-graphql-query-ref.d.ts +0 -64
- package/graphql/datatable/datatable-graphql.service.d.ts +0 -29
- package/graphql/datatable/datatable-helpers.d.ts +0 -12
- package/graphql/datatable/get-page-info.d.ts +0 -4
- package/graphql/datatable/index.d.ts +0 -9
- package/graphql/datatable/map-filter-states.d.ts +0 -18
- package/graphql/datatable/map-page-info.d.ts +0 -11
- package/graphql/datatable/map-search-date-columns-data-filter-state-to-gql.d.ts +0 -4
- package/graphql/datatable/map-search-numeric-columns-data-filter-state-to-gql.d.ts +0 -4
- package/graphql/datatable/map-search-text-columns-data-filter-state-to-gql.d.ts +0 -4
- package/graphql/datatable/mapper-context.d.ts +0 -6
- package/graphql/models/direction.d.ts +0 -6
- package/graphql/models/gql-datatable-accessor.d.ts +0 -9
- package/graphql/models/hint-definition.d.ts +0 -7
- package/graphql/models/hint-transform-operation.d.ts +0 -5
- package/graphql/models/hint-transformer.d.ts +0 -3
- package/graphql/models/hints-kind.d.ts +0 -7
- package/graphql/models/hints-token.d.ts +0 -7
- package/graphql/models/index.d.ts +0 -9
- package/graphql/models/query-processing-config.d.ts +0 -13
- package/graphql/models/variable.d.ts +0 -5
- package/graphql/public-api.d.ts +0 -2
- package/graphql/utils/contains-variable.d.ts +0 -2
- package/graphql/utils/gql-var.d.ts +0 -3
- package/graphql/utils/hints-tokens-containing-hint.d.ts +0 -2
- package/graphql/utils/index.d.ts +0 -10
- package/graphql/utils/inline-variables.d.ts +0 -2
- package/graphql/utils/parse-comments.d.ts +0 -2
- package/graphql/utils/parse-hints.d.ts +0 -17
- package/graphql/utils/remove-variable-definition.d.ts +0 -2
- package/graphql/utils/remove-variable-definitions-not-defined.d.ts +0 -3
- package/graphql/utils/remove-variable.d.ts +0 -2
- package/graphql/utils/to-gql.d.ts +0 -1
- package/icon/icon/icon.component.d.ts +0 -57
- package/icon/icon-btn/icon-btn.component.d.ts +0 -76
- package/icon/icon-notification/icon-notification.component.d.ts +0 -50
- package/icon/icon.d.ts +0 -2
- package/icon/icon.module.d.ts +0 -11
- package/icon/public-api.d.ts +0 -6
- package/icon/utils/file-extension-icon.d.ts +0 -3
- package/icon/utils/get-known-icon.d.ts +0 -2
- package/icon/utils/index.d.ts +0 -2
- package/layout/breakpoint-aliases.d.ts +0 -20
- package/layout/layout.module.d.ts +0 -8
- package/layout/layout.service.d.ts +0 -23
- package/layout/observe-media-query.d.ts +0 -8
- package/layout/public-api.d.ts +0 -4
- package/loading/loading/loading.component.d.ts +0 -9
- package/loading/loading-overlay.service.d.ts +0 -16
- package/loading/loading-themes.d.ts +0 -3
- package/loading/loading.models.d.ts +0 -1
- package/loading/loading.module.d.ts +0 -13
- package/loading/public-api.d.ts +0 -5
- package/menu/menu-animations.d.ts +0 -8
- package/menu/menu-divider.component.d.ts +0 -5
- package/menu/menu-footer/menu-footer.component.d.ts +0 -12
- package/menu/menu-footer-action/menu-footer-action.component.d.ts +0 -22
- package/menu/menu-header/menu-header.component.d.ts +0 -12
- package/menu/menu-item.component.d.ts +0 -54
- package/menu/menu-panel-token.d.ts +0 -6
- package/menu/menu-panel.d.ts +0 -20
- package/menu/menu-toggle.directive.d.ts +0 -83
- package/menu/menu.component.d.ts +0 -79
- package/menu/menu.module.d.ts +0 -16
- package/menu/public-api.d.ts +0 -15
- package/menu/testing/menu-footer.harness.d.ts +0 -22
- package/menu/testing/menu-header.harness.d.ts +0 -18
- package/menu/testing/menu-item.harness.d.ts +0 -37
- package/menu/testing/menu.harness.d.ts +0 -74
- package/menu/testing/utils.d.ts +0 -5
- package/modal/directives/modal-close.directive.d.ts +0 -23
- package/modal/directives/modal-footer-tpl.directive.d.ts +0 -8
- package/modal/directives/modal-header-icon-tpl.directive.d.ts +0 -8
- package/modal/directives/modal-header-title-tpl.directive.d.ts +0 -8
- package/modal/directives/modal-title.directive.d.ts +0 -9
- package/modal/directives/modal.directive.d.ts +0 -11
- package/modal/modal/modal.component.d.ts +0 -58
- package/modal/modal-body/modal-body.component.d.ts +0 -7
- package/modal/modal-config.d.ts +0 -93
- package/modal/modal-container/modal-container.component.d.ts +0 -81
- package/modal/modal-footer/modal-footer.component.d.ts +0 -6
- package/modal/modal-header/modal-header.component.d.ts +0 -11
- package/modal/modal-injectors.d.ts +0 -23
- package/modal/modal-ref.d.ts +0 -52
- package/modal/modal-utils.d.ts +0 -8
- package/modal/modal.models.d.ts +0 -24
- package/modal/modal.module.d.ts +0 -25
- package/modal/modal.service.d.ts +0 -98
- package/modal/public-api.d.ts +0 -19
- package/modal/route-modal/route-modal.component.d.ts +0 -18
- package/models/component-type.d.ts +0 -2
- package/models/http-status-codes.d.ts +0 -18
- package/models/public-api.d.ts +0 -7
- package/models/size-prefixes.d.ts +0 -1
- package/models/size-types.d.ts +0 -1
- package/models/theme-names.d.ts +0 -2
- package/models/theme-prefixes.d.ts +0 -1
- package/models/theme-types.d.ts +0 -2
- package/navigation-reload/navigation-reload.config.d.ts +0 -5
- package/navigation-reload/navigation-reload.provider.d.ts +0 -3
- package/navigation-reload/navigation-reload.service.d.ts +0 -13
- package/navigation-reload/public-api.d.ts +0 -3
- package/popover/popover/popover.component.d.ts +0 -50
- package/popover/popover-animations.d.ts +0 -4
- package/popover/popover.directive.d.ts +0 -61
- package/popover/popover.module.d.ts +0 -11
- package/popover/public-api.d.ts +0 -4
- package/progress/progress-circle/progress-circle.component.d.ts +0 -29
- package/progress/progress.module.d.ts +0 -8
- package/progress/public-api.d.ts +0 -2
- package/public_api.d.ts +0 -2
- package/rich-text/public-api.d.ts +0 -4
- package/rich-text/rich-text/rich-text.component.d.ts +0 -194
- package/rich-text/rich-text.module.d.ts +0 -10
- package/rich-text/utils/models.d.ts +0 -343
- package/rich-text/utils/utils.d.ts +0 -14
- package/scrollbar/overlay-scrollbar.directive.d.ts +0 -23
- package/scrollbar/overlay-scrollbars-config-model.d.ts +0 -2
- package/scrollbar/overlay-scrollbars-config.d.ts +0 -51
- package/scrollbar/overlay-scrollbars.service.d.ts +0 -23
- package/scrollbar/public-api.d.ts +0 -5
- package/scrollbar/scrollbar.module.d.ts +0 -8
- package/services/asset-loader.service.d.ts +0 -15
- package/services/font-loader.service.d.ts +0 -45
- package/services/preferences/preferences-accessor.d.ts +0 -15
- package/services/preferences/preferences-manager.service.d.ts +0 -15
- package/services/preferences/preferences-record.d.ts +0 -28
- package/services/preferences/preferences.models.d.ts +0 -3
- package/services/public-api.d.ts +0 -7
- package/services/router-helpers.service.d.ts +0 -10
- package/shared/components/index.d.ts +0 -1
- package/shared/components/password-input-reveal/password-input-reveal.component.d.ts +0 -17
- package/shared/directives/auto-focus.directive.d.ts +0 -18
- package/shared/directives/click-outside.directive.d.ts +0 -13
- package/shared/directives/disable-control.directive.d.ts +0 -9
- package/shared/directives/elem-resized.directive.d.ts +0 -20
- package/shared/directives/hover-class-toggle.directive.d.ts +0 -36
- package/shared/directives/hover-class.directive.d.ts +0 -31
- package/shared/directives/index.d.ts +0 -8
- package/shared/directives/ng-select-extra.directive.d.ts +0 -42
- package/shared/directives/ngx-quill-extra.directive.d.ts +0 -23
- package/shared/pipes/index.d.ts +0 -2
- package/shared/pipes/mask-chars.pipe.d.ts +0 -7
- package/shared/pipes/truncate.pipe.d.ts +0 -7
- package/shared/public-api.d.ts +0 -4
- package/shared/shared.module.d.ts +0 -22
- package/storage/local-storage.service.d.ts +0 -31
- package/storage/localstorage-memory.d.ts +0 -37
- package/storage/public-api.d.ts +0 -1
- package/story-helpers/arg-type-helpers.d.ts +0 -6
- package/story-helpers/args-to-tpl.d.ts +0 -25
- package/story-helpers/initial-route-factory.d.ts +0 -2
- package/story-helpers/initial-route.service.d.ts +0 -10
- package/story-helpers/on-story-bootstrapped-exec.d.ts +0 -24
- package/story-helpers/on-story-bootstrapped-trigger.d.ts +0 -23
- package/story-helpers/public-api.d.ts +0 -15
- package/story-helpers/route-button.d.ts +0 -5
- package/story-helpers/routes-arg-type.d.ts +0 -7
- package/story-helpers/story-empty-with-route.component.d.ts +0 -5
- package/story-helpers/story-empty.component.d.ts +0 -5
- package/story-helpers/story-helper-components.module.d.ts +0 -12
- package/story-helpers/story-initial-route.d.ts +0 -8
- package/story-helpers/story-modal-container.component.d.ts +0 -23
- package/story-helpers/story-preferences-accessor.service.d.ts +0 -19
- package/story-helpers/story-toastr.service.d.ts +0 -33
- package/tabbed/directives/tabbed-tab-content.directive.d.ts +0 -7
- package/tabbed/directives/tabbed-tab.directive.d.ts +0 -13
- package/tabbed/public-api.d.ts +0 -8
- package/tabbed/tabbed-content/tabbed-content.component.d.ts +0 -7
- package/tabbed/tabbed-item/tabbed-item.component.d.ts +0 -16
- package/tabbed/tabbed-models.d.ts +0 -12
- package/tabbed/tabbed.component.d.ts +0 -44
- package/tabbed/tabbed.module.d.ts +0 -14
- package/tabbed/tabbed.service.d.ts +0 -10
- package/table/public-api.d.ts +0 -5
- package/table/table/table.component.d.ts +0 -63
- package/table/table-cell-tpl.directive.d.ts +0 -7
- package/table/table-column-header-tpl.directive.d.ts +0 -7
- package/table/table-column.component.d.ts +0 -24
- package/table/table.module.d.ts +0 -13
- package/table-cell-type/public-api.d.ts +0 -11
- package/table-cell-type/services/table-cell-types-helpers.service.d.ts +0 -18
- package/table-cell-type/table-cell-type-action.d.ts +0 -13
- package/table-cell-type/table-cell-type-column.d.ts +0 -12
- package/table-cell-type/table-cell-type-config.d.ts +0 -12
- package/table-cell-type/table-cell-type-export-props.d.ts +0 -15
- package/table-cell-type/table-cell-type-manifest-provider.d.ts +0 -7
- package/table-cell-type/table-cell-type-models.d.ts +0 -39
- package/table-cell-type/table-cell-type-name.d.ts +0 -1
- package/table-cell-type/table-cell-type-selector.component.d.ts +0 -27
- package/table-cell-type/table-cell-type-tokens.d.ts +0 -4
- package/table-cell-type/table-cell-type.module.d.ts +0 -9
- package/table-cell-types/public-api.d.ts +0 -22
- package/table-cell-types/table-cell-type-currency/table-cell-type-currency-config.d.ts +0 -44
- package/table-cell-types/table-cell-type-currency/table-cell-type-currency.component.d.ts +0 -21
- package/table-cell-types/table-cell-type-currency/table-cell-type-currency.d.ts +0 -3
- package/table-cell-types/table-cell-type-date/table-cell-type-date-config.d.ts +0 -9
- package/table-cell-types/table-cell-type-date/table-cell-type-date.component.d.ts +0 -14
- package/table-cell-types/table-cell-type-date/table-cell-type-date.d.ts +0 -3
- package/table-cell-types/table-cell-type-decimal/table-cell-type-decimal-config.d.ts +0 -38
- package/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.component.d.ts +0 -21
- package/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.d.ts +0 -3
- package/table-cell-types/table-cell-type-icon/table-cell-type-icon-config.d.ts +0 -34
- package/table-cell-types/table-cell-type-icon/table-cell-type-icon.component.d.ts +0 -55
- package/table-cell-types/table-cell-type-integer/table-cell-type-integer-config.d.ts +0 -30
- package/table-cell-types/table-cell-type-integer/table-cell-type-integer.component.d.ts +0 -21
- package/table-cell-types/table-cell-type-integer/table-cell-type-integer.d.ts +0 -3
- package/table-cell-types/table-cell-type-manifests.d.ts +0 -11
- package/table-cell-types/table-cell-type-phone/table-cell-type-phone-config.d.ts +0 -13
- package/table-cell-types/table-cell-type-phone/table-cell-type-phone.component.d.ts +0 -19
- package/table-cell-types/table-cell-type-progress-circle/table-cell-type-progress-circle-config.d.ts +0 -29
- package/table-cell-types/table-cell-type-progress-circle/table-cell-type-progress-circle.component.d.ts +0 -50
- package/table-cell-types/table-cell-type-progress-circle-icon/table-cell-type-progress-circle-icon-config.d.ts +0 -49
- package/table-cell-types/table-cell-type-progress-circle-icon/table-cell-type-progress-circle-icon.component.d.ts +0 -23
- package/table-cell-types/table-cell-type-string/table-cell-type-string-config.d.ts +0 -18
- package/table-cell-types/table-cell-type-string/table-cell-type-string.component.d.ts +0 -57
- package/table-cell-types/table-cell-types.module.d.ts +0 -26
- package/tel-input/intl-tel-input.d.ts +0 -300
- package/tel-input/models/index.d.ts +0 -2
- package/tel-input/models/tel-input-country-data.d.ts +0 -9
- package/tel-input/models/tel-input-number-format-name.d.ts +0 -4
- package/tel-input/phone-number.pipe.d.ts +0 -14
- package/tel-input/public-api.d.ts +0 -10
- package/tel-input/tel-input/tel-input.component.d.ts +0 -86
- package/tel-input/tel-input-constants.d.ts +0 -4
- package/tel-input/tel-input-validator.d.ts +0 -7
- package/tel-input/tel-input.directive.d.ts +0 -35
- package/tel-input/tel-input.module.d.ts +0 -12
- package/tel-input/testing/tel-input.harness.d.ts +0 -19
- package/tel-input/utils/add-country-code.d.ts +0 -7
- package/tel-input/utils/coerce-phone-number-format.d.ts +0 -7
- package/tel-input/utils/get-country-code.d.ts +0 -2
- package/tel-input/utils/get-dial-code.d.ts +0 -9
- package/tel-input/utils/get-global-intl-tel-input-globals.d.ts +0 -2
- package/tel-input/utils/get-global-intl-tel-input-utils.d.ts +0 -2
- package/tel-input/utils/get-intl-tel-input-utils.d.ts +0 -2
- package/tel-input/utils/get-validation-error-message.d.ts +0 -5
- package/tel-input/utils/index.d.ts +0 -9
- package/tel-input/utils/process-country-codes.d.ts +0 -8
- package/testing/current-tick-time.d.ts +0 -13
- package/testing/fake-toastr.d.ts +0 -30
- package/testing/get-harness.d.ts +0 -7
- package/testing/harnesses/ng-select-dropdown.harness.d.ts +0 -23
- package/testing/harnesses/ng-select-option.harness.d.ts +0 -18
- package/testing/harnesses/ng-select.harness.d.ts +0 -50
- package/testing/public-api.d.ts +0 -9
- package/testing/render-story.d.ts +0 -2
- package/testing/story-expect.d.ts +0 -6
- package/testing/tick-helper.d.ts +0 -70
- package/tiled-select/components/tiled-select/tiled-select.component.d.ts +0 -56
- package/tiled-select/components/tiled-select-tile/tiled-select-tile.component.d.ts +0 -45
- package/tiled-select/components/tiled-select-tile-icon/tiled-select-tile-icon.component.d.ts +0 -26
- package/tiled-select/directives/tiled-select-tile-icon-tpl.directive.d.ts +0 -8
- package/tiled-select/directives/tiled-select-tile-label-tpl.directive.d.ts +0 -8
- package/tiled-select/directives/tiled-select-tile-overlay.directive.d.ts +0 -10
- package/tiled-select/public-api.d.ts +0 -9
- package/tiled-select/testing/index.d.ts +0 -2
- package/tiled-select/testing/tiled-select-harness.d.ts +0 -9
- package/tiled-select/testing/tiled-select-tile-harness.d.ts +0 -17
- package/tiled-select/tiled-select.models.d.ts +0 -13
- package/tiled-select/tiled-select.module.d.ts +0 -14
- package/toggle-edit/models/can-toggle-edit.d.ts +0 -7
- package/toggle-edit/models/index.d.ts +0 -2
- package/toggle-edit/models/toggle-edit-ref.d.ts +0 -30
- package/toggle-edit/public-api.d.ts +0 -6
- package/toggle-edit/toggle-edit-actions-container/toggle-edit-actions-container.component.d.ts +0 -5
- package/toggle-edit/toggle-edit-display-tpl.directive.d.ts +0 -8
- package/toggle-edit/toggle-edit-keyboard-listener.service.d.ts +0 -17
- package/toggle-edit/toggle-edit.component.d.ts +0 -93
- package/toggle-edit/toggle-edit.module.d.ts +0 -18
- package/toggle-group/public-api.d.ts +0 -3
- package/toggle-group/toggle-group-option.directive.d.ts +0 -18
- package/toggle-group/toggle-group.directive.d.ts +0 -38
- package/toggle-group/toggle-group.module.d.ts +0 -10
- package/unsaved-changes-dialog/public-api.d.ts +0 -4
- package/unsaved-changes-dialog/unsaved-changes-can-deactivate.d.ts +0 -7
- package/unsaved-changes-dialog/unsaved-changes-dialog.component.d.ts +0 -5
- package/unsaved-changes-dialog/unsaved-changes-dialog.guard.d.ts +0 -11
- package/unsaved-changes-dialog/unsaved-changes-dialog.module.d.ts +0 -7
- package/utils/array-move.d.ts +0 -49
- package/utils/calc-percentage.d.ts +0 -1
- package/utils/cdk/get-closest-widget-cdk-drag.d.ts +0 -8
- package/utils/create-padding.d.ts +0 -1
- package/utils/file-utils.d.ts +0 -12
- package/utils/form/get-control-name.d.ts +0 -22
- package/utils/form/get-control-path.d.ts +0 -27
- package/utils/form/has-required-control.d.ts +0 -31
- package/utils/form/is-empty-input-value.d.ts +0 -1
- package/utils/form/observe-control-is-different.d.ts +0 -13
- package/utils/form/observe-control-status.d.ts +0 -7
- package/utils/form/observe-control-valid.d.ts +0 -14
- package/utils/form/observe-control-value-change.d.ts +0 -9
- package/utils/form/observe-control-value.d.ts +0 -6
- package/utils/form/wait-on-non-pending-status.d.ts +0 -12
- package/utils/fractional-digits-count.d.ts +0 -8
- package/utils/geo-json/close-polygons.d.ts +0 -9
- package/utils/geo-json/coerce-feature-collection.d.ts +0 -2
- package/utils/geo-json/geo-json-to-area.d.ts +0 -6
- package/utils/geo-json/is-feature-collection.validator.d.ts +0 -3
- package/utils/geo-json/is-only-geometry-types.d.ts +0 -5
- package/utils/geo-json/is-only-geometry-types.validator.d.ts +0 -4
- package/utils/geo-json/merge-polygons.d.ts +0 -9
- package/utils/geo-json/min-max-points.validator.d.ts +0 -3
- package/utils/geo-json/no-empty-feature-collection.validator.d.ts +0 -3
- package/utils/geo-json/no-inner-rings.validator.d.ts +0 -10
- package/utils/geo-json/no-kinks.validator.d.ts +0 -3
- package/utils/geo-json/read-geo-file.d.ts +0 -7
- package/utils/geo-json/split-multi-polygons.d.ts +0 -8
- package/utils/get-attribute.d.ts +0 -4
- package/utils/has-attribute.d.ts +0 -4
- package/utils/has-property.d.ts +0 -1
- package/utils/input-masks.d.ts +0 -1
- package/utils/is-absolute-url.d.ts +0 -1
- package/utils/is-null-or-undefined-or-empty.d.ts +0 -1
- package/utils/is-null-or-undefined.d.ts +0 -1
- package/utils/is-numeric.d.ts +0 -1
- package/utils/load-style-sheet.d.ts +0 -1
- package/utils/load-style.d.ts +0 -1
- package/utils/not-null-or-undefined-or-empty.d.ts +0 -1
- package/utils/not-null-or-undefined.d.ts +0 -1
- package/utils/obj-utils.d.ts +0 -8
- package/utils/observe-query-list.d.ts +0 -3
- package/utils/operators/index.d.ts +0 -2
- package/utils/operators/map-each.d.ts +0 -2
- package/utils/operators/tap-first.d.ts +0 -5
- package/utils/pad-end.d.ts +0 -1
- package/utils/pad-start.d.ts +0 -1
- package/utils/polling-ticker.d.ts +0 -13
- package/utils/public-api.d.ts +0 -53
- package/utils/refreshable.d.ts +0 -20
- package/utils/router/index.d.ts +0 -6
- package/utils/router/is-empty-url-route.d.ts +0 -2
- package/utils/router/leaf-child-route.d.ts +0 -2
- package/utils/router/operators/activated-routes-with-data-property.d.ts +0 -7
- package/utils/router/route-snapshot-path-full.d.ts +0 -2
- package/utils/router/route-snapshot-path-relative.d.ts +0 -2
- package/utils/router/will-have-data-prop.d.ts +0 -2
- package/utils/subscriber-count.d.ts +0 -13
- package/utils/toggle-attribute.d.ts +0 -16
- package/utils/wait-on-condition-async.d.ts +0 -1
- package/utils/wrap-into-observable.d.ts +0 -2
- package/validators/decimal.validator.d.ts +0 -9
- package/validators/email-exists.validator.d.ts +0 -10
- package/validators/integer.validator.d.ts +0 -9
- package/validators/phone-length.validator.d.ts +0 -7
- package/validators/public-api.d.ts +0 -5
- package/validators/tax-id.validator.d.ts +0 -11
- package/vertical-list-filter/public-api.d.ts +0 -2
- package/vertical-list-filter/testing/index.d.ts +0 -1
- package/vertical-list-filter/testing/vertical-list-filter.harness.d.ts +0 -9
- package/vertical-list-filter/vertical-list-filter.component.d.ts +0 -17
- package/viewers/html-template-viewer/html-template-viewer.component.d.ts +0 -70
- package/viewers/html-template-viewer/html-template-viewer.module.d.ts +0 -10
- package/viewers/html-template-viewer/index.d.ts +0 -2
- package/viewers/pdf-viewer/index.d.ts +0 -3
- package/viewers/pdf-viewer/pdf-page/pdf-page.component.d.ts +0 -42
- package/viewers/pdf-viewer/pdf-renderer.service.d.ts +0 -9
- package/viewers/pdf-viewer/pdf-viewer.component.d.ts +0 -62
- package/viewers/pdf-viewer/pdf-viewer.module.d.ts +0 -10
- package/viewers/public-api.d.ts +0 -2
- package/widget/directives/widget-drag-handle.directive.d.ts +0 -56
- package/widget/directives/widget-icon-tpl.directive.d.ts +0 -8
- package/widget/directives/widget-title-tpl.directive.d.ts +0 -8
- package/widget/preferences/widget-preferences.models.d.ts +0 -8
- package/widget/preferences/widget-preferences.service.d.ts +0 -21
- package/widget/preferences/widget-preferences.token.d.ts +0 -3
- package/widget/public-api.d.ts +0 -41
- package/widget/widget/widget.component.d.ts +0 -85
- package/widget/widget-content-components/widget-button-group/widget-button-group.component.d.ts +0 -5
- package/widget/widget-content-components/widget-button-group/widget-button-group.module.d.ts +0 -9
- package/widget/widget-content-components/widget-content-header/widget-content-header.component.d.ts +0 -5
- package/widget/widget-content-components/widget-content-header/widget-content-header.module.d.ts +0 -8
- package/widget/widget-content-components/widget-description/widget-description.component.d.ts +0 -5
- package/widget/widget-content-components/widget-description/widget-description.module.d.ts +0 -8
- package/widget/widget-content-components/widget-empty-label/widget-empty-label.component.d.ts +0 -17
- package/widget/widget-content-components/widget-empty-label/widget-empty-label.module.d.ts +0 -8
- package/widget/widget-content-components/widget-footer-link/widget-footer-link.component.d.ts +0 -5
- package/widget/widget-content-components/widget-footer-link/widget-footer-link.module.d.ts +0 -8
- package/widget/widget-content-components/widget-footer-text/widget-footer-text.component.d.ts +0 -5
- package/widget/widget-content-components/widget-footer-text/widget-footer-text.module.d.ts +0 -8
- package/widget/widget-content-components/widget-header-badge/widget-header-badge.component.d.ts +0 -14
- package/widget/widget-content-components/widget-header-badge/widget-header-badge.module.d.ts +0 -8
- package/widget/widget-content-components/widget-list-group/widget-list-group-item/widget-list-group-item-icon-tpl.directive.d.ts +0 -8
- package/widget/widget-content-components/widget-list-group/widget-list-group-item/widget-list-group-item.component.d.ts +0 -65
- package/widget/widget-content-components/widget-list-group/widget-list-group.component.d.ts +0 -5
- package/widget/widget-content-components/widget-list-group/widget-list-group.module.d.ts +0 -11
- package/widget/widget-content-components/widget-table/widget-table.component.d.ts +0 -16
- package/widget/widget-content-components/widget-table/widget-table.module.d.ts +0 -10
- package/widget/widget-content-components/widget-tile/widget-tile-footer/widget-tile-footer.component.d.ts +0 -5
- package/widget/widget-content-components/widget-tile/widget-tile-footer-item/widget-tile-footer-item.component.d.ts +0 -17
- package/widget/widget-content-components/widget-tile/widget-tile-group/widget-tile-group.component.d.ts +0 -5
- package/widget/widget-content-components/widget-tile/widget-tile-secondary-icon.directive.d.ts +0 -8
- package/widget/widget-content-components/widget-tile/widget-tile.component.d.ts +0 -51
- package/widget/widget-content-components/widget-tile/widget-tile.module.d.ts +0 -13
- package/widget/widget-content-components/widget-tile-list/widget-tile-list.component.d.ts +0 -5
- package/widget/widget-content-components/widget-tile-list/widget-tile-list.module.d.ts +0 -9
- package/widget/widget-footer/widget-footer.component.d.ts +0 -5
- package/widget/widget-registry.models.d.ts +0 -20
- package/widget/widget-registry.service.d.ts +0 -19
- package/widget/widget-token.d.ts +0 -6
- package/widget/widget.models.d.ts +0 -7
- package/widget/widget.module.d.ts +0 -30
|
@@ -0,0 +1,4263 @@
|
|
|
1
|
+
import { __decorate } from 'tslib';
|
|
2
|
+
import { trigger, transition, style, animate } from '@angular/animations';
|
|
3
|
+
import { coerceArray } from '@angular/cdk/coercion';
|
|
4
|
+
import { DataSource, isDataSource } from '@angular/cdk/collections';
|
|
5
|
+
import * as i0 from '@angular/core';
|
|
6
|
+
import { EventEmitter, Output, Input, ChangeDetectionStrategy, Component, ContentChildren, ViewChild, Directive, Injectable, TemplateRef, ContentChild, Self, Inject, forwardRef, InjectionToken, Optional, isDevMode, inject, ChangeDetectorRef, ElementRef, HostListener, HostBinding, NgModule } from '@angular/core';
|
|
7
|
+
import { Subject, BehaviorSubject, of, startWith as startWith$1, map as map$1, switchMap as switchMap$1, combineLatest, defer, EMPTY, debounceTime, tap as tap$1, Subscription, from, isObservable } from 'rxjs';
|
|
8
|
+
import { switchMap, map, startWith, auditTime, shareReplay, take, tap, distinctUntilChanged, takeUntil, concatMap, catchError } from 'rxjs/operators';
|
|
9
|
+
import { faEllipsisH, faChevronDown, faChevronRight, faSpinner, faFilter, faColumns, faFileDownload } from '@fortawesome/free-solid-svg-icons';
|
|
10
|
+
import * as i6 from '@marklb/ngx-datatable';
|
|
11
|
+
import { camelCase, setColumnDefaults as setColumnDefaults$1, translateTemplates, SelectionType, SortType, ColumnMode, DatatableComponent as DatatableComponent$1, DatatableRowDetailDirective, NgxDatatableModule, ScrollbarHelper } from '@marklb/ngx-datatable';
|
|
12
|
+
import { InputBoolean, InputNumber } from '@theseam/ui-common/core';
|
|
13
|
+
import { THESEAM_DATA_FILTER, THESEAM_DATA_FILTER_CONTAINER, composeDataFilterStates, composeDataFilters, TheSeamDataFiltersModule } from '@theseam/ui-common/data-filters';
|
|
14
|
+
import { notNullOrUndefined, isNullOrUndefined, isNullOrUndefinedOrEmpty, notNullOrUndefinedOrEmpty, hasProperty, arrayMoveMutable, waitOnConditionAsync, observeControlValue } from '@theseam/ui-common/utils';
|
|
15
|
+
import * as i4 from '@theseam/ui-common/menu';
|
|
16
|
+
import { MenuComponent, TheSeamMenuModule } from '@theseam/ui-common/menu';
|
|
17
|
+
import * as i1 from '@theseam/ui-common/confirm-dialog';
|
|
18
|
+
import { TheSeamConfirmDialogModule } from '@theseam/ui-common/confirm-dialog';
|
|
19
|
+
import * as i2 from '@angular/router';
|
|
20
|
+
import { RouterModule } from '@angular/router';
|
|
21
|
+
import * as i2$1 from '@angular/common';
|
|
22
|
+
import { CommonModule } from '@angular/common';
|
|
23
|
+
import * as i5 from '@theseam/ui-common/icon';
|
|
24
|
+
import { TheSeamIconModule } from '@theseam/ui-common/icon';
|
|
25
|
+
import * as i4$1 from '@angular/forms';
|
|
26
|
+
import { FormGroup, FormControl, FormGroupDirective, ControlContainer, UntypedFormControl, ReactiveFormsModule } from '@angular/forms';
|
|
27
|
+
import * as i1$1 from '@theseam/ui-common/services';
|
|
28
|
+
import * as i7 from '@fortawesome/angular-fontawesome';
|
|
29
|
+
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
|
|
30
|
+
import * as i2$2 from '@theseam/ui-common/shared';
|
|
31
|
+
import { TheSeamSharedModule } from '@theseam/ui-common/shared';
|
|
32
|
+
import * as i3$1 from '@theseam/ui-common/buttons';
|
|
33
|
+
import { TheSeamButtonsModule } from '@theseam/ui-common/buttons';
|
|
34
|
+
import * as i11 from '@theseam/ui-common/popover';
|
|
35
|
+
import { TheSeamPopoverModule } from '@theseam/ui-common/popover';
|
|
36
|
+
import * as i12 from '@theseam/ui-common/table-cell-type';
|
|
37
|
+
import { TheSeamTableCellTypeModule } from '@theseam/ui-common/table-cell-type';
|
|
38
|
+
import * as i3 from '@theseam/ui-common/form-field';
|
|
39
|
+
import { TheSeamFormFieldModule } from '@theseam/ui-common/form-field';
|
|
40
|
+
import * as i5$1 from '@ng-select/ng-select';
|
|
41
|
+
import { NgSelectModule } from '@ng-select/ng-select';
|
|
42
|
+
import * as i4$2 from '@theseam/ui-common/checkbox';
|
|
43
|
+
import { TheSeamCheckboxComponent } from '@theseam/ui-common/checkbox';
|
|
44
|
+
import * as i3$2 from '@theseam/ui-common/dynamic';
|
|
45
|
+
import { THESEAM_DYNAMIC_DATA } from '@theseam/ui-common/dynamic';
|
|
46
|
+
import * as i1$2 from 'ngx-toastr';
|
|
47
|
+
import { ToastrModule } from 'ngx-toastr';
|
|
48
|
+
import * as i2$3 from '@theseam/ui-common/loading';
|
|
49
|
+
import { TheSeamLoadingModule } from '@theseam/ui-common/loading';
|
|
50
|
+
import * as i1$3 from '@theseam/ui-common/modal';
|
|
51
|
+
import * as i2$4 from '@theseam/ui-common/dynamic-component-loader';
|
|
52
|
+
import * as i3$3 from '@angular/common/http';
|
|
53
|
+
import { ESCAPE } from '@angular/cdk/keycodes';
|
|
54
|
+
import { TemplatePortal, PortalModule } from '@angular/cdk/portal';
|
|
55
|
+
import * as i1$4 from '@angular/cdk/overlay';
|
|
56
|
+
import { OverlayModule } from '@angular/cdk/overlay';
|
|
57
|
+
import * as i1$5 from '@theseam/ui-common/scrollbar';
|
|
58
|
+
import { A11yModule } from '@angular/cdk/a11y';
|
|
59
|
+
import { TheSeamToggleGroupModule } from '@theseam/ui-common/toggle-group';
|
|
60
|
+
|
|
61
|
+
class DatatableActionMenuItemComponent {
|
|
62
|
+
label;
|
|
63
|
+
// eslint-disable-next-line @angular-eslint/no-input-rename
|
|
64
|
+
href;
|
|
65
|
+
target;
|
|
66
|
+
// Allow routerLink inputs on menu item
|
|
67
|
+
queryParams;
|
|
68
|
+
fragment;
|
|
69
|
+
queryParamsHandling;
|
|
70
|
+
preserveFragment;
|
|
71
|
+
skipLocationChange;
|
|
72
|
+
replaceUrl;
|
|
73
|
+
state;
|
|
74
|
+
routerLink;
|
|
75
|
+
confirmDialog;
|
|
76
|
+
disabled;
|
|
77
|
+
subMenu;
|
|
78
|
+
// eslint-disable-next-line @angular-eslint/no-output-native
|
|
79
|
+
click = new EventEmitter();
|
|
80
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableActionMenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
81
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableActionMenuItemComponent, isStandalone: false, selector: "seam-datatable-action-menu-item", inputs: { label: "label", href: ["attr.href", "href"], target: "target", queryParams: "queryParams", fragment: "fragment", queryParamsHandling: "queryParamsHandling", preserveFragment: "preserveFragment", skipLocationChange: "skipLocationChange", replaceUrl: "replaceUrl", state: "state", routerLink: "routerLink", confirmDialog: "confirmDialog", disabled: "disabled", subMenu: "subMenu" }, outputs: { click: "click" }, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
82
|
+
}
|
|
83
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableActionMenuItemComponent, decorators: [{
|
|
84
|
+
type: Component,
|
|
85
|
+
args: [{
|
|
86
|
+
selector: 'seam-datatable-action-menu-item',
|
|
87
|
+
template: ``,
|
|
88
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
89
|
+
standalone: false
|
|
90
|
+
}]
|
|
91
|
+
}], propDecorators: { label: [{
|
|
92
|
+
type: Input
|
|
93
|
+
}], href: [{
|
|
94
|
+
type: Input,
|
|
95
|
+
args: ['attr.href']
|
|
96
|
+
}], target: [{
|
|
97
|
+
type: Input
|
|
98
|
+
}], queryParams: [{
|
|
99
|
+
type: Input
|
|
100
|
+
}], fragment: [{
|
|
101
|
+
type: Input
|
|
102
|
+
}], queryParamsHandling: [{
|
|
103
|
+
type: Input
|
|
104
|
+
}], preserveFragment: [{
|
|
105
|
+
type: Input
|
|
106
|
+
}], skipLocationChange: [{
|
|
107
|
+
type: Input
|
|
108
|
+
}], replaceUrl: [{
|
|
109
|
+
type: Input
|
|
110
|
+
}], state: [{
|
|
111
|
+
type: Input
|
|
112
|
+
}], routerLink: [{
|
|
113
|
+
type: Input
|
|
114
|
+
}], confirmDialog: [{
|
|
115
|
+
type: Input
|
|
116
|
+
}], disabled: [{
|
|
117
|
+
type: Input
|
|
118
|
+
}], subMenu: [{
|
|
119
|
+
type: Input
|
|
120
|
+
}], click: [{
|
|
121
|
+
type: Output
|
|
122
|
+
}] } });
|
|
123
|
+
|
|
124
|
+
class DatatableActionMenuComponent {
|
|
125
|
+
_confirmDialog;
|
|
126
|
+
_router;
|
|
127
|
+
static ngAcceptInputType_isSubMenu;
|
|
128
|
+
faEllipsisH = faEllipsisH;
|
|
129
|
+
menu;
|
|
130
|
+
items;
|
|
131
|
+
/** @ignore */
|
|
132
|
+
_actionMenuPositions = [
|
|
133
|
+
{
|
|
134
|
+
originX: 'start',
|
|
135
|
+
originY: 'bottom',
|
|
136
|
+
overlayX: 'end',
|
|
137
|
+
overlayY: 'top',
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
originX: 'start',
|
|
141
|
+
originY: 'top',
|
|
142
|
+
overlayX: 'end',
|
|
143
|
+
overlayY: 'bottom',
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
originX: 'end',
|
|
147
|
+
originY: 'bottom',
|
|
148
|
+
overlayX: 'start',
|
|
149
|
+
overlayY: 'top',
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
originX: 'end',
|
|
153
|
+
originY: 'top',
|
|
154
|
+
overlayX: 'start',
|
|
155
|
+
overlayY: 'bottom',
|
|
156
|
+
},
|
|
157
|
+
];
|
|
158
|
+
isSubMenu = false;
|
|
159
|
+
constructor(_confirmDialog, _router) {
|
|
160
|
+
this._confirmDialog = _confirmDialog;
|
|
161
|
+
this._router = _router;
|
|
162
|
+
}
|
|
163
|
+
activateItem(event, item) {
|
|
164
|
+
if (item.confirmDialog) {
|
|
165
|
+
this._confirmDialog.open(item.confirmDialog.message, item.confirmDialog.alert)
|
|
166
|
+
.afterClosed()
|
|
167
|
+
.subscribe(v => {
|
|
168
|
+
if (v === 'confirm') {
|
|
169
|
+
item.click.emit(event);
|
|
170
|
+
if (item.href) {
|
|
171
|
+
const win = window.open(item.href, item.target || undefined);
|
|
172
|
+
// TODO: Consider if always setting opener to null is to restrictive
|
|
173
|
+
// if (win && item.target && item.target.toLowerCase() === '_blank') {
|
|
174
|
+
// win.opener = null
|
|
175
|
+
// }
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
const extras = {};
|
|
179
|
+
if (item.queryParams) {
|
|
180
|
+
extras.queryParams = item.queryParams;
|
|
181
|
+
}
|
|
182
|
+
if (item.fragment) {
|
|
183
|
+
extras.fragment = item.fragment;
|
|
184
|
+
}
|
|
185
|
+
if (item.queryParamsHandling) {
|
|
186
|
+
extras.queryParamsHandling = item.queryParamsHandling;
|
|
187
|
+
}
|
|
188
|
+
if (item.preserveFragment) {
|
|
189
|
+
extras.preserveFragment = item.preserveFragment;
|
|
190
|
+
}
|
|
191
|
+
if (item.skipLocationChange) {
|
|
192
|
+
extras.skipLocationChange = item.skipLocationChange;
|
|
193
|
+
}
|
|
194
|
+
if (item.replaceUrl) {
|
|
195
|
+
extras.replaceUrl = item.replaceUrl;
|
|
196
|
+
}
|
|
197
|
+
if (item.state) {
|
|
198
|
+
extras.state = item.state;
|
|
199
|
+
}
|
|
200
|
+
const commands = Array.isArray(item.routerLink) ? item.routerLink : [item.routerLink];
|
|
201
|
+
this._router.navigate(commands, extras);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
item.click.emit(event);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableActionMenuComponent, deps: [{ token: i1.SeamConfirmDialogService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
211
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableActionMenuComponent, isStandalone: false, selector: "seam-datatable-action-menu", inputs: { isSubMenu: "isSubMenu" }, queries: [{ propertyName: "items", predicate: DatatableActionMenuItemComponent }], viewQueries: [{ propertyName: "menu", first: true, predicate: MenuComponent, descendants: true, static: true }], exportAs: ["seamDatatableActionMenu"], ngImport: i0, template: "<seam-menu #menu\n menuClass=\"list-group py-0 border-0 seam-datatable-action-menu\"\n animationType=\"fade\">\n\n <ng-container *ngFor=\"let item of items\">\n <ng-container *ngIf=\"(item.routerLink || item.href) && !item.confirmDialog; else noRouterLink\">\n <a *ngIf=\"item.href; else noHref\"\n seamMenuItem\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n [attr.href]=\"item.href\"\n [target]=\"item.target\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </a>\n <ng-template #noHref>\n <a seamMenuItem\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n [queryParams]=\"item.queryParams\"\n [fragment]=\"$any(item.fragment)\"\n [queryParamsHandling]=\"item.queryParamsHandling\"\n [preserveFragment]=\"$any(item.preserveFragment)\"\n [skipLocationChange]=\"$any(item.skipLocationChange)\"\n [replaceUrl]=\"$any(item.replaceUrl)\"\n [state]=\"$any(item.state)\"\n [routerLink]=\"item.routerLink\"\n [target]=\"$any(item.target)\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </a>\n </ng-template>\n </ng-container>\n <ng-template #noRouterLink>\n <ng-container *ngIf=\"!!item.subMenu; else noSubMenu\">\n <button seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n [seamMenuToggle]=\"item.subMenu.menu\"\n [seamMenuTogglePositionsOffsetY]=\"-3\">\n {{ item.label }}\n </button>\n </ng-container>\n <ng-template #noSubMenu>\n <button seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </button>\n </ng-template>\n </ng-template>\n </ng-container>\n</seam-menu>\n\n<ng-container *ngIf=\"!isSubMenu && items?.length\">\n <button type=\"button\" class=\"datatable-action-button btn\"\n [seamMenuToggle]=\"menu\"\n [positions]=\"_actionMenuPositions || []\"\n title=\"Row Actions\">\n <seam-icon [icon]=\"faEllipsisH\"></seam-icon>\n </button>\n</ng-container>\n", styles: [":host{position:relative;display:flex;align-items:center;justify-content:center;height:100%}.datatable-action-button::ng-deep .svg-inline--fa{vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i4.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i4.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuToggle", "menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: i4.MenuItemComponent, selector: "[seamMenuItem]", inputs: ["disabled", "role", "icon", "iconClass", "sublevelIcon", "subLevelIconClass", "badgeText", "badgeTheme"], exportAs: ["seamMenuItem"] }, { kind: "component", type: i5.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }] });
|
|
212
|
+
}
|
|
213
|
+
__decorate([
|
|
214
|
+
InputBoolean()
|
|
215
|
+
], DatatableActionMenuComponent.prototype, "isSubMenu", void 0);
|
|
216
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableActionMenuComponent, decorators: [{
|
|
217
|
+
type: Component,
|
|
218
|
+
args: [{ selector: 'seam-datatable-action-menu', exportAs: 'seamDatatableActionMenu', standalone: false, template: "<seam-menu #menu\n menuClass=\"list-group py-0 border-0 seam-datatable-action-menu\"\n animationType=\"fade\">\n\n <ng-container *ngFor=\"let item of items\">\n <ng-container *ngIf=\"(item.routerLink || item.href) && !item.confirmDialog; else noRouterLink\">\n <a *ngIf=\"item.href; else noHref\"\n seamMenuItem\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n [attr.href]=\"item.href\"\n [target]=\"item.target\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </a>\n <ng-template #noHref>\n <a seamMenuItem\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n [queryParams]=\"item.queryParams\"\n [fragment]=\"$any(item.fragment)\"\n [queryParamsHandling]=\"item.queryParamsHandling\"\n [preserveFragment]=\"$any(item.preserveFragment)\"\n [skipLocationChange]=\"$any(item.skipLocationChange)\"\n [replaceUrl]=\"$any(item.replaceUrl)\"\n [state]=\"$any(item.state)\"\n [routerLink]=\"item.routerLink\"\n [target]=\"$any(item.target)\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </a>\n </ng-template>\n </ng-container>\n <ng-template #noRouterLink>\n <ng-container *ngIf=\"!!item.subMenu; else noSubMenu\">\n <button seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n [seamMenuToggle]=\"item.subMenu.menu\"\n [seamMenuTogglePositionsOffsetY]=\"-3\">\n {{ item.label }}\n </button>\n </ng-container>\n <ng-template #noSubMenu>\n <button seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n [disabled]=\"item.disabled\"\n (click)=\"activateItem($event, item)\">\n {{ item.label }}\n </button>\n </ng-template>\n </ng-template>\n </ng-container>\n</seam-menu>\n\n<ng-container *ngIf=\"!isSubMenu && items?.length\">\n <button type=\"button\" class=\"datatable-action-button btn\"\n [seamMenuToggle]=\"menu\"\n [positions]=\"_actionMenuPositions || []\"\n title=\"Row Actions\">\n <seam-icon [icon]=\"faEllipsisH\"></seam-icon>\n </button>\n</ng-container>\n", styles: [":host{position:relative;display:flex;align-items:center;justify-content:center;height:100%}.datatable-action-button::ng-deep .svg-inline--fa{vertical-align:middle}\n"] }]
|
|
219
|
+
}], ctorParameters: () => [{ type: i1.SeamConfirmDialogService }, { type: i2.Router }], propDecorators: { menu: [{
|
|
220
|
+
type: ViewChild,
|
|
221
|
+
args: [MenuComponent, { static: true }]
|
|
222
|
+
}], items: [{
|
|
223
|
+
type: ContentChildren,
|
|
224
|
+
args: [DatatableActionMenuItemComponent]
|
|
225
|
+
}], isSubMenu: [{
|
|
226
|
+
type: Input
|
|
227
|
+
}] } });
|
|
228
|
+
|
|
229
|
+
class DatatableCellTplDirective {
|
|
230
|
+
template;
|
|
231
|
+
constructor(template) {
|
|
232
|
+
this.template = template;
|
|
233
|
+
}
|
|
234
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableCellTplDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
235
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: DatatableCellTplDirective, isStandalone: false, selector: "[seamDatatableCellTpl]", ngImport: i0 });
|
|
236
|
+
}
|
|
237
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableCellTplDirective, decorators: [{
|
|
238
|
+
type: Directive,
|
|
239
|
+
args: [{
|
|
240
|
+
selector: '[seamDatatableCellTpl]',
|
|
241
|
+
standalone: false
|
|
242
|
+
}]
|
|
243
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef }] });
|
|
244
|
+
|
|
245
|
+
class DatatableColumnChangesService {
|
|
246
|
+
columnInputChanges = new Subject();
|
|
247
|
+
get columnInputChanges$() {
|
|
248
|
+
return this.columnInputChanges.asObservable();
|
|
249
|
+
}
|
|
250
|
+
onInputChange() {
|
|
251
|
+
this.columnInputChanges.next(undefined);
|
|
252
|
+
}
|
|
253
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnChangesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
254
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnChangesService });
|
|
255
|
+
}
|
|
256
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnChangesService, decorators: [{
|
|
257
|
+
type: Injectable
|
|
258
|
+
}] });
|
|
259
|
+
|
|
260
|
+
// TODO: The column component should implement `ITheSeamDatatableColumn`, since
|
|
261
|
+
// providing some properties by input and some by template could be confusing.
|
|
262
|
+
class DatatableColumnComponent {
|
|
263
|
+
_columnChangesService;
|
|
264
|
+
name;
|
|
265
|
+
prop;
|
|
266
|
+
flexGrow;
|
|
267
|
+
minWidth;
|
|
268
|
+
maxWidth;
|
|
269
|
+
width;
|
|
270
|
+
resizeable;
|
|
271
|
+
sortable;
|
|
272
|
+
draggable;
|
|
273
|
+
canAutoResize;
|
|
274
|
+
comparator;
|
|
275
|
+
headerTemplate;
|
|
276
|
+
checkboxable;
|
|
277
|
+
headerCheckboxable;
|
|
278
|
+
headerClass;
|
|
279
|
+
cellClass;
|
|
280
|
+
frozenLeft;
|
|
281
|
+
frozenRight;
|
|
282
|
+
pipe;
|
|
283
|
+
isTreeColumn;
|
|
284
|
+
treeLevelIndent;
|
|
285
|
+
summaryFunc;
|
|
286
|
+
summaryTemplate;
|
|
287
|
+
hidden;
|
|
288
|
+
_isFirstChange = true;
|
|
289
|
+
cellTplDirective;
|
|
290
|
+
// eslint-disable-next-line @angular-eslint/no-input-rename
|
|
291
|
+
_cellTemplateInput;
|
|
292
|
+
_cellTemplateQuery;
|
|
293
|
+
get cellTemplate() {
|
|
294
|
+
return this._cellTemplateInput || this._cellTemplateQuery;
|
|
295
|
+
}
|
|
296
|
+
// @Input('headerTemplate')
|
|
297
|
+
// _headerTemplateInput: TemplateRef<any>;
|
|
298
|
+
// @ContentChild(DataTableColumnHeaderDirective, { read: TemplateRef, static: true })
|
|
299
|
+
// _headerTemplateQuery: TemplateRef<any>;
|
|
300
|
+
// get headerTemplate(): TemplateRef<any> {
|
|
301
|
+
// return this._headerTemplateInput || this._headerTemplateQuery;
|
|
302
|
+
// }
|
|
303
|
+
// @Input('treeToggleTemplate')
|
|
304
|
+
// _treeToggleTemplateInput: TemplateRef<any>;
|
|
305
|
+
// @ContentChild(DataTableColumnCellTreeToggle, { read: TemplateRef, static: true })
|
|
306
|
+
// _treeToggleTemplateQuery: TemplateRef<any>;
|
|
307
|
+
// get treeToggleTemplate(): TemplateRef<any> {
|
|
308
|
+
// return this._treeToggleTemplateInput || this._treeToggleTemplateQuery;
|
|
309
|
+
// }
|
|
310
|
+
constructor(_columnChangesService) {
|
|
311
|
+
this._columnChangesService = _columnChangesService;
|
|
312
|
+
}
|
|
313
|
+
ngOnChanges(changes) {
|
|
314
|
+
if (this._isFirstChange) {
|
|
315
|
+
this._isFirstChange = false;
|
|
316
|
+
}
|
|
317
|
+
else {
|
|
318
|
+
this._columnChangesService.onInputChange();
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
getCellDirective() {
|
|
322
|
+
if (this.cellTplDirective) {
|
|
323
|
+
return this.cellTplDirective;
|
|
324
|
+
}
|
|
325
|
+
return null;
|
|
326
|
+
}
|
|
327
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnComponent, deps: [{ token: DatatableColumnChangesService }], target: i0.ɵɵFactoryTarget.Component });
|
|
328
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableColumnComponent, isStandalone: false, selector: "seam-datatable-column", inputs: { name: "name", prop: "prop", flexGrow: "flexGrow", minWidth: "minWidth", maxWidth: "maxWidth", width: "width", resizeable: "resizeable", sortable: "sortable", draggable: "draggable", canAutoResize: "canAutoResize", comparator: "comparator", headerTemplate: "headerTemplate", checkboxable: "checkboxable", headerCheckboxable: "headerCheckboxable", headerClass: "headerClass", cellClass: "cellClass", frozenLeft: "frozenLeft", frozenRight: "frozenRight", pipe: "pipe", isTreeColumn: "isTreeColumn", treeLevelIndent: "treeLevelIndent", summaryFunc: "summaryFunc", summaryTemplate: "summaryTemplate", hidden: "hidden", _cellTemplateInput: ["cellTemplate", "_cellTemplateInput"] }, queries: [{ propertyName: "cellTplDirective", first: true, predicate: DatatableCellTplDirective, descendants: true, static: true }, { propertyName: "_cellTemplateQuery", first: true, predicate: DatatableCellTplDirective, descendants: true, read: TemplateRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<p>\n datatable-column works!\n</p>\n", styles: [""] });
|
|
329
|
+
}
|
|
330
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnComponent, decorators: [{
|
|
331
|
+
type: Component,
|
|
332
|
+
args: [{ selector: 'seam-datatable-column', standalone: false, template: "<p>\n datatable-column works!\n</p>\n" }]
|
|
333
|
+
}], ctorParameters: () => [{ type: DatatableColumnChangesService }], propDecorators: { name: [{
|
|
334
|
+
type: Input
|
|
335
|
+
}], prop: [{
|
|
336
|
+
type: Input
|
|
337
|
+
}], flexGrow: [{
|
|
338
|
+
type: Input
|
|
339
|
+
}], minWidth: [{
|
|
340
|
+
type: Input
|
|
341
|
+
}], maxWidth: [{
|
|
342
|
+
type: Input
|
|
343
|
+
}], width: [{
|
|
344
|
+
type: Input
|
|
345
|
+
}], resizeable: [{
|
|
346
|
+
type: Input
|
|
347
|
+
}], sortable: [{
|
|
348
|
+
type: Input
|
|
349
|
+
}], draggable: [{
|
|
350
|
+
type: Input
|
|
351
|
+
}], canAutoResize: [{
|
|
352
|
+
type: Input
|
|
353
|
+
}], comparator: [{
|
|
354
|
+
type: Input
|
|
355
|
+
}], headerTemplate: [{
|
|
356
|
+
type: Input
|
|
357
|
+
}], checkboxable: [{
|
|
358
|
+
type: Input
|
|
359
|
+
}], headerCheckboxable: [{
|
|
360
|
+
type: Input
|
|
361
|
+
}], headerClass: [{
|
|
362
|
+
type: Input
|
|
363
|
+
}], cellClass: [{
|
|
364
|
+
type: Input
|
|
365
|
+
}], frozenLeft: [{
|
|
366
|
+
type: Input
|
|
367
|
+
}], frozenRight: [{
|
|
368
|
+
type: Input
|
|
369
|
+
}], pipe: [{
|
|
370
|
+
type: Input
|
|
371
|
+
}], isTreeColumn: [{
|
|
372
|
+
type: Input
|
|
373
|
+
}], treeLevelIndent: [{
|
|
374
|
+
type: Input
|
|
375
|
+
}], summaryFunc: [{
|
|
376
|
+
type: Input
|
|
377
|
+
}], summaryTemplate: [{
|
|
378
|
+
type: Input
|
|
379
|
+
}], hidden: [{
|
|
380
|
+
type: Input
|
|
381
|
+
}], cellTplDirective: [{
|
|
382
|
+
type: ContentChild,
|
|
383
|
+
args: [DatatableCellTplDirective, { static: true }]
|
|
384
|
+
}], _cellTemplateInput: [{
|
|
385
|
+
type: Input,
|
|
386
|
+
args: ['cellTemplate']
|
|
387
|
+
}], _cellTemplateQuery: [{
|
|
388
|
+
type: ContentChild,
|
|
389
|
+
args: [DatatableCellTplDirective, { read: TemplateRef, static: true }]
|
|
390
|
+
}] } });
|
|
391
|
+
|
|
392
|
+
class DatatableFooterTplDirective {
|
|
393
|
+
template;
|
|
394
|
+
constructor(template) {
|
|
395
|
+
this.template = template;
|
|
396
|
+
}
|
|
397
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableFooterTplDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
398
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: DatatableFooterTplDirective, isStandalone: false, selector: "[seamDatatableFooterTpl]", ngImport: i0 });
|
|
399
|
+
}
|
|
400
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableFooterTplDirective, decorators: [{
|
|
401
|
+
type: Directive,
|
|
402
|
+
args: [{
|
|
403
|
+
selector: '[seamDatatableFooterTpl]',
|
|
404
|
+
standalone: false
|
|
405
|
+
}]
|
|
406
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef }] });
|
|
407
|
+
|
|
408
|
+
class TheSeamDatatableFooterDirective {
|
|
409
|
+
// eslint-disable-next-line @angular-eslint/no-input-rename
|
|
410
|
+
_templateInput;
|
|
411
|
+
_templateQuery;
|
|
412
|
+
get template() {
|
|
413
|
+
return this._templateInput || this._templateQuery;
|
|
414
|
+
}
|
|
415
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDatatableFooterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
416
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: TheSeamDatatableFooterDirective, isStandalone: false, selector: "seam-datatable-footer", inputs: { _templateInput: ["template", "_templateInput"] }, queries: [{ propertyName: "_templateQuery", first: true, predicate: DatatableFooterTplDirective, descendants: true, read: TemplateRef, static: true }], ngImport: i0 });
|
|
417
|
+
}
|
|
418
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDatatableFooterDirective, decorators: [{
|
|
419
|
+
type: Directive,
|
|
420
|
+
args: [{
|
|
421
|
+
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
422
|
+
selector: 'seam-datatable-footer',
|
|
423
|
+
standalone: false
|
|
424
|
+
}]
|
|
425
|
+
}], propDecorators: { _templateInput: [{
|
|
426
|
+
type: Input,
|
|
427
|
+
args: ['template']
|
|
428
|
+
}], _templateQuery: [{
|
|
429
|
+
type: ContentChild,
|
|
430
|
+
args: [DatatableFooterTplDirective, { read: TemplateRef, static: true }]
|
|
431
|
+
}] } });
|
|
432
|
+
|
|
433
|
+
class DatatableFilterDirective {
|
|
434
|
+
_filter;
|
|
435
|
+
constructor(dataFilters) {
|
|
436
|
+
if (dataFilters && dataFilters.length > 0) {
|
|
437
|
+
this._filter = dataFilters[0];
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
get filter() {
|
|
441
|
+
return this._filter;
|
|
442
|
+
}
|
|
443
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableFilterDirective, deps: [{ token: THESEAM_DATA_FILTER, self: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
444
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: DatatableFilterDirective, isStandalone: false, selector: "[seamDatatableFilter]", ngImport: i0 });
|
|
445
|
+
}
|
|
446
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableFilterDirective, decorators: [{
|
|
447
|
+
type: Directive,
|
|
448
|
+
args: [{
|
|
449
|
+
selector: '[seamDatatableFilter]',
|
|
450
|
+
standalone: false
|
|
451
|
+
}]
|
|
452
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
453
|
+
type: Self
|
|
454
|
+
}, {
|
|
455
|
+
type: Inject,
|
|
456
|
+
args: [THESEAM_DATA_FILTER]
|
|
457
|
+
}] }] });
|
|
458
|
+
|
|
459
|
+
const _THESEAM_DATA_FILTER_CONTAINER = {
|
|
460
|
+
provide: THESEAM_DATA_FILTER_CONTAINER,
|
|
461
|
+
// tslint:disable-next-line:no-use-before-declare
|
|
462
|
+
useExisting: forwardRef(() => DatatableMenuBarComponent)
|
|
463
|
+
};
|
|
464
|
+
class DatatableMenuBarComponent {
|
|
465
|
+
get filterDirectives() {
|
|
466
|
+
return this._filterDirectives;
|
|
467
|
+
}
|
|
468
|
+
set filterDirectives(value) {
|
|
469
|
+
this._filterDirectives = value;
|
|
470
|
+
this.filtersChanged.emit(this.filters());
|
|
471
|
+
}
|
|
472
|
+
_filterDirectives;
|
|
473
|
+
_filtersArr = [];
|
|
474
|
+
filtersChanged = new EventEmitter();
|
|
475
|
+
filters() {
|
|
476
|
+
const fDirectives = this._filterDirectives
|
|
477
|
+
? this._filterDirectives.map(f => f.filter).filter(notNullOrUndefined)
|
|
478
|
+
: [];
|
|
479
|
+
const fArr = this._filtersArr
|
|
480
|
+
.filter(f => fDirectives.findIndex(fd => fd.uid === f.uid) === -1);
|
|
481
|
+
return [...fArr, ...fDirectives];
|
|
482
|
+
}
|
|
483
|
+
addFilter(dataFilter) {
|
|
484
|
+
this._filtersArr.push(dataFilter);
|
|
485
|
+
this.filtersChanged.emit(this.filters());
|
|
486
|
+
}
|
|
487
|
+
removeFilter(dataFilter) {
|
|
488
|
+
this._filtersArr = this._filtersArr.filter(f => f !== dataFilter);
|
|
489
|
+
this.filtersChanged.emit(this.filters());
|
|
490
|
+
}
|
|
491
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableMenuBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
492
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableMenuBarComponent, isStandalone: false, selector: "seam-datatable-menu-bar", providers: [_THESEAM_DATA_FILTER_CONTAINER], queries: [{ propertyName: "filterDirectives", predicate: DatatableFilterDirective }], ngImport: i0, template: "<div class=\"bg-light border rounded p-2\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{display:block}\n"] });
|
|
493
|
+
}
|
|
494
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableMenuBarComponent, decorators: [{
|
|
495
|
+
type: Component,
|
|
496
|
+
args: [{ selector: 'seam-datatable-menu-bar', providers: [_THESEAM_DATA_FILTER_CONTAINER], standalone: false, template: "<div class=\"bg-light border rounded p-2\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{display:block}\n"] }]
|
|
497
|
+
}], propDecorators: { filterDirectives: [{
|
|
498
|
+
type: ContentChildren,
|
|
499
|
+
args: [DatatableFilterDirective]
|
|
500
|
+
}] } });
|
|
501
|
+
|
|
502
|
+
class DatatableRowDetailTplDirective {
|
|
503
|
+
template;
|
|
504
|
+
constructor(template) {
|
|
505
|
+
this.template = template;
|
|
506
|
+
}
|
|
507
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableRowDetailTplDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
508
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: DatatableRowDetailTplDirective, isStandalone: false, selector: "[seamDatatableRowDetailTpl]", ngImport: i0 });
|
|
509
|
+
}
|
|
510
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableRowDetailTplDirective, decorators: [{
|
|
511
|
+
type: Directive,
|
|
512
|
+
args: [{
|
|
513
|
+
selector: '[seamDatatableRowDetailTpl]',
|
|
514
|
+
standalone: false
|
|
515
|
+
}]
|
|
516
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef }] });
|
|
517
|
+
|
|
518
|
+
class TheSeamDatatableRowDetailDirective {
|
|
519
|
+
/**
|
|
520
|
+
* The detail row height is required especially
|
|
521
|
+
* when virtual scroll is enabled.
|
|
522
|
+
*/
|
|
523
|
+
rowHeight = 0;
|
|
524
|
+
// eslint-disable-next-line @angular-eslint/no-input-rename
|
|
525
|
+
_templateInput;
|
|
526
|
+
_templateQuery;
|
|
527
|
+
get template() {
|
|
528
|
+
return this._templateInput || this._templateQuery;
|
|
529
|
+
}
|
|
530
|
+
/**
|
|
531
|
+
* Row detail row visbility was toggled.
|
|
532
|
+
*/
|
|
533
|
+
// NOTE: This will trigger from the internal ngx-datatable toggle event.
|
|
534
|
+
toggle = new EventEmitter();
|
|
535
|
+
/**
|
|
536
|
+
* Internal use for wrapper only.
|
|
537
|
+
*
|
|
538
|
+
* To avoid confusion with this directives output and the ngx-datatable
|
|
539
|
+
* directive being wrapped, this directive emits `_toggle` stream to the
|
|
540
|
+
* `ngx-datatable-row-detail` directive and emits it's `toggle` stream out to
|
|
541
|
+
* this directives `toggle` stream.
|
|
542
|
+
* @ignore
|
|
543
|
+
*/
|
|
544
|
+
_toggle = new EventEmitter();
|
|
545
|
+
/**
|
|
546
|
+
* Toggle the expansion of the row
|
|
547
|
+
*/
|
|
548
|
+
toggleExpandRow(row) {
|
|
549
|
+
this._toggle.emit({
|
|
550
|
+
type: 'row',
|
|
551
|
+
value: row
|
|
552
|
+
});
|
|
553
|
+
}
|
|
554
|
+
/**
|
|
555
|
+
* API method to expand all the rows.
|
|
556
|
+
*/
|
|
557
|
+
expandAllRows() {
|
|
558
|
+
this._toggle.emit({
|
|
559
|
+
type: 'all',
|
|
560
|
+
value: true
|
|
561
|
+
});
|
|
562
|
+
}
|
|
563
|
+
/**
|
|
564
|
+
* API method to collapse all the rows.
|
|
565
|
+
*/
|
|
566
|
+
collapseAllRows() {
|
|
567
|
+
this._toggle.emit({
|
|
568
|
+
type: 'all',
|
|
569
|
+
value: false
|
|
570
|
+
});
|
|
571
|
+
}
|
|
572
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDatatableRowDetailDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
573
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: TheSeamDatatableRowDetailDirective, isStandalone: false, selector: "seam-datatable-row-detail", inputs: { rowHeight: "rowHeight", _templateInput: ["template", "_templateInput"] }, outputs: { toggle: "toggle" }, queries: [{ propertyName: "_templateQuery", first: true, predicate: DatatableRowDetailTplDirective, descendants: true, read: TemplateRef, static: true }], ngImport: i0 });
|
|
574
|
+
}
|
|
575
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDatatableRowDetailDirective, decorators: [{
|
|
576
|
+
type: Directive,
|
|
577
|
+
args: [{
|
|
578
|
+
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
579
|
+
selector: 'seam-datatable-row-detail',
|
|
580
|
+
standalone: false
|
|
581
|
+
}]
|
|
582
|
+
}], propDecorators: { rowHeight: [{
|
|
583
|
+
type: Input
|
|
584
|
+
}], _templateInput: [{
|
|
585
|
+
type: Input,
|
|
586
|
+
args: ['template']
|
|
587
|
+
}], _templateQuery: [{
|
|
588
|
+
type: ContentChild,
|
|
589
|
+
args: [DatatableRowDetailTplDirective, { read: TemplateRef, static: true }]
|
|
590
|
+
}], toggle: [{
|
|
591
|
+
type: Output
|
|
592
|
+
}] } });
|
|
593
|
+
|
|
594
|
+
class DatatableRowActionItemDirective {
|
|
595
|
+
template;
|
|
596
|
+
constructor(template) {
|
|
597
|
+
this.template = template;
|
|
598
|
+
}
|
|
599
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableRowActionItemDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
600
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: DatatableRowActionItemDirective, isStandalone: false, selector: "[seamDatatableRowActionItem]", ngImport: i0 });
|
|
601
|
+
}
|
|
602
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableRowActionItemDirective, decorators: [{
|
|
603
|
+
type: Directive,
|
|
604
|
+
args: [{
|
|
605
|
+
selector: '[seamDatatableRowActionItem]',
|
|
606
|
+
standalone: false
|
|
607
|
+
}]
|
|
608
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef }] });
|
|
609
|
+
|
|
610
|
+
class DatatableDataSource extends DataSource {
|
|
611
|
+
_datatableSubject = new BehaviorSubject(undefined);
|
|
612
|
+
sorts$;
|
|
613
|
+
filterStates$;
|
|
614
|
+
page$;
|
|
615
|
+
constructor() {
|
|
616
|
+
super();
|
|
617
|
+
this.sorts$ = this._datatableSubject.pipe(switchMap(_datatable => {
|
|
618
|
+
if (!_datatable) {
|
|
619
|
+
return of([]);
|
|
620
|
+
}
|
|
621
|
+
return _datatable.sort.pipe(map(v => v.sorts), startWith(_datatable.sorts));
|
|
622
|
+
}));
|
|
623
|
+
this.filterStates$ = this._datatableSubject.pipe(switchMap(_datatable => {
|
|
624
|
+
if (!_datatable) {
|
|
625
|
+
return of([]);
|
|
626
|
+
}
|
|
627
|
+
return _datatable.filterStates;
|
|
628
|
+
}));
|
|
629
|
+
this.page$ = this._datatableSubject.pipe(switchMap(_datatable => {
|
|
630
|
+
if (!_datatable) {
|
|
631
|
+
return of({
|
|
632
|
+
offset: 0,
|
|
633
|
+
pageSize: 0,
|
|
634
|
+
limit: undefined,
|
|
635
|
+
count: 0
|
|
636
|
+
});
|
|
637
|
+
}
|
|
638
|
+
return _datatable.page.pipe(startWith(_datatable.pageInfo));
|
|
639
|
+
}));
|
|
640
|
+
}
|
|
641
|
+
// connect(): Observable<readonly TRow[]> {
|
|
642
|
+
// return this.
|
|
643
|
+
// }
|
|
644
|
+
// disconnect(): void {
|
|
645
|
+
// throw new Error('Method not implemented.')
|
|
646
|
+
// }
|
|
647
|
+
setDatatableAccessor(accessor) {
|
|
648
|
+
this._datatableSubject.next(accessor);
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
const ACTION_MENU_COLUMN_PROP = '$$__actionMenu__';
|
|
653
|
+
function createActionMenuColumn(cellTemplate, headerTemplate, frozenLeft, frozenRight) {
|
|
654
|
+
return {
|
|
655
|
+
prop: ACTION_MENU_COLUMN_PROP,
|
|
656
|
+
name: '',
|
|
657
|
+
width: 50,
|
|
658
|
+
minWidth: 50,
|
|
659
|
+
maxWidth: 50,
|
|
660
|
+
resizeable: false,
|
|
661
|
+
sortable: false,
|
|
662
|
+
draggable: false,
|
|
663
|
+
// TODO: Fix column auto sizing with fixed column and cell overlay before enabling.
|
|
664
|
+
frozenLeft: frozenLeft,
|
|
665
|
+
frozenRight: frozenRight,
|
|
666
|
+
cellTemplate,
|
|
667
|
+
headerTemplate,
|
|
668
|
+
};
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
const CHECKBOX_COLUMN_PROP = '$$__checkbox__';
|
|
672
|
+
function createCheckboxColumn() {
|
|
673
|
+
return {
|
|
674
|
+
prop: CHECKBOX_COLUMN_PROP,
|
|
675
|
+
name: '',
|
|
676
|
+
width: 40,
|
|
677
|
+
sortable: false,
|
|
678
|
+
canAutoResize: false,
|
|
679
|
+
draggable: false,
|
|
680
|
+
resizeable: false,
|
|
681
|
+
headerCheckboxable: true,
|
|
682
|
+
checkboxable: true,
|
|
683
|
+
};
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
function getColumnProp(col) {
|
|
687
|
+
if (!notNullOrUndefined(col.prop) && col.name) {
|
|
688
|
+
return camelCase(col.name);
|
|
689
|
+
}
|
|
690
|
+
return col.prop === null ? undefined : col.prop;
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
function setColumnDefaults(columns) {
|
|
694
|
+
for (const column of columns) {
|
|
695
|
+
if (!Object.prototype.hasOwnProperty.call(column, 'hidden')) {
|
|
696
|
+
column.hidden = false;
|
|
697
|
+
}
|
|
698
|
+
}
|
|
699
|
+
setColumnDefaults$1(columns);
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
// TODO: Replace with a `translateTemplates` function that fits the
|
|
703
|
+
// wrapper component better.
|
|
704
|
+
function translateTemplateColumns(v) {
|
|
705
|
+
const cols = translateTemplates(v);
|
|
706
|
+
for (const col of cols) {
|
|
707
|
+
col.prop = getColumnProp(col);
|
|
708
|
+
}
|
|
709
|
+
return cols;
|
|
710
|
+
}
|
|
711
|
+
|
|
712
|
+
class ColumnsDataFilter {
|
|
713
|
+
prop;
|
|
714
|
+
initialValue;
|
|
715
|
+
column;
|
|
716
|
+
constructor(prop, initialValue, column) {
|
|
717
|
+
this.prop = prop;
|
|
718
|
+
this.initialValue = initialValue;
|
|
719
|
+
this.column = column;
|
|
720
|
+
}
|
|
721
|
+
}
|
|
722
|
+
const THESEAM_COLUMNS_DATA_FILTER = new InjectionToken('ColumnsDataFilter');
|
|
723
|
+
|
|
724
|
+
const THESEAM_COLUMNS_DATA_FILTER_DATE_SEARCH_NAME = 'search-date';
|
|
725
|
+
const THESEAM_COLUMNS_DATA_FILTER_DATE_SEARCH_TYPES = [
|
|
726
|
+
'lt',
|
|
727
|
+
'lte',
|
|
728
|
+
'gt',
|
|
729
|
+
'gte',
|
|
730
|
+
'eq',
|
|
731
|
+
'blank',
|
|
732
|
+
'not-blank',
|
|
733
|
+
'between',
|
|
734
|
+
'not-between'
|
|
735
|
+
];
|
|
736
|
+
const THESEAM_COLUMNS_DATA_FILTER_DATE_TEXT_SEARCH_TYPES = [
|
|
737
|
+
'lt',
|
|
738
|
+
'lte',
|
|
739
|
+
'gt',
|
|
740
|
+
'gte',
|
|
741
|
+
'eq',
|
|
742
|
+
];
|
|
743
|
+
const THESEAM_COLUMNS_DATA_FILTER_DATE_RANGE_SEARCH_TYPES = [
|
|
744
|
+
'between',
|
|
745
|
+
'not-between'
|
|
746
|
+
];
|
|
747
|
+
const THESEAM_COLUMNS_DATA_FILTER_DATE_SELECT_SEARCH_TYPES = [
|
|
748
|
+
'blank',
|
|
749
|
+
'not-blank',
|
|
750
|
+
];
|
|
751
|
+
const THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SEARCH_NAME = 'search-numeric';
|
|
752
|
+
const THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SEARCH_TYPES = [
|
|
753
|
+
'gt',
|
|
754
|
+
'lt',
|
|
755
|
+
'eq',
|
|
756
|
+
'gte',
|
|
757
|
+
'lte',
|
|
758
|
+
'blank',
|
|
759
|
+
'not-blank',
|
|
760
|
+
'between',
|
|
761
|
+
'not-between'
|
|
762
|
+
];
|
|
763
|
+
const THESEAM_COLUMNS_DATA_FILTER_NUMERIC_TEXT_SEARCH_TYPES = [
|
|
764
|
+
'gt',
|
|
765
|
+
'lt',
|
|
766
|
+
'eq',
|
|
767
|
+
'gte',
|
|
768
|
+
'lte',
|
|
769
|
+
];
|
|
770
|
+
const THESEAM_COLUMNS_DATA_FILTER_NUMERIC_RANGE_SEARCH_TYPES = [
|
|
771
|
+
'between',
|
|
772
|
+
'not-between'
|
|
773
|
+
];
|
|
774
|
+
const THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SELECT_SEARCH_TYPES = [
|
|
775
|
+
'blank',
|
|
776
|
+
'not-blank',
|
|
777
|
+
];
|
|
778
|
+
const THESEAM_COLUMNS_DATA_FILTER_TEXT_SEARCH_NAME = 'search-text';
|
|
779
|
+
const THESEAM_COLUMNS_DATA_FILTER_TEXT_SEARCH_TYPES = [
|
|
780
|
+
'contains',
|
|
781
|
+
'ncontains',
|
|
782
|
+
'eq',
|
|
783
|
+
'neq',
|
|
784
|
+
'blank',
|
|
785
|
+
'not-blank'
|
|
786
|
+
];
|
|
787
|
+
const THESEAM_COLUMNS_DATA_FILTER_TEXT_TEXT_SEARCH_TYPES = [
|
|
788
|
+
'contains',
|
|
789
|
+
'ncontains',
|
|
790
|
+
'eq',
|
|
791
|
+
'neq',
|
|
792
|
+
];
|
|
793
|
+
const THESEAM_COLUMNS_DATA_FILTER_TEXT_SELECT_SEARCH_TYPES = [
|
|
794
|
+
'blank',
|
|
795
|
+
'not-blank'
|
|
796
|
+
];
|
|
797
|
+
|
|
798
|
+
class SearchDateColumnsDataFilter extends ColumnsDataFilter {
|
|
799
|
+
name = THESEAM_COLUMNS_DATA_FILTER_DATE_SEARCH_NAME;
|
|
800
|
+
uid;
|
|
801
|
+
form;
|
|
802
|
+
filterStateChanges;
|
|
803
|
+
options;
|
|
804
|
+
_updateFilterValue = new Subject;
|
|
805
|
+
constructor(prop, initialValue, column) {
|
|
806
|
+
super(prop, initialValue, column);
|
|
807
|
+
this.form = new FormGroup({
|
|
808
|
+
searchType: new FormControl(notNullOrUndefined(initialValue) ? initialValue.searchType : 'eq'),
|
|
809
|
+
searchText: new FormControl(notNullOrUndefined(initialValue) ? initialValue.searchText : null),
|
|
810
|
+
fromText: new FormControl(notNullOrUndefined(initialValue) ? initialValue.fromText : null),
|
|
811
|
+
toText: new FormControl(notNullOrUndefined(initialValue) ? initialValue.toText : null),
|
|
812
|
+
});
|
|
813
|
+
this.uid = `${this.name}--${prop}`;
|
|
814
|
+
this.filterStateChanges = this._updateFilterValue.pipe(startWith$1(undefined), map$1(() => this.filterState()));
|
|
815
|
+
this.options = {
|
|
816
|
+
dateType: this.column.filterOptions?.dateType || 'date'
|
|
817
|
+
};
|
|
818
|
+
}
|
|
819
|
+
dataFilter(data, filterValue, options) {
|
|
820
|
+
if (isNullOrUndefined(filterValue) || this.isDefault()) {
|
|
821
|
+
return data;
|
|
822
|
+
}
|
|
823
|
+
return this._dateSearchDataFilter(this.prop, data, filterValue.searchText, filterValue.fromText, filterValue.toText, filterValue.searchType || null);
|
|
824
|
+
}
|
|
825
|
+
_isInvalidDate(dateString) {
|
|
826
|
+
return isNullOrUndefinedOrEmpty(dateString) || isNaN(new Date(dateString).valueOf());
|
|
827
|
+
}
|
|
828
|
+
_isInvalidSearchTerm(searchText, fromText, toText, comparator) {
|
|
829
|
+
if (THESEAM_COLUMNS_DATA_FILTER_DATE_TEXT_SEARCH_TYPES.includes(comparator) && this._isInvalidDate(searchText)) {
|
|
830
|
+
return true;
|
|
831
|
+
}
|
|
832
|
+
else if (THESEAM_COLUMNS_DATA_FILTER_DATE_RANGE_SEARCH_TYPES.includes(comparator) && (this._isInvalidDate(fromText) || this._isInvalidDate(toText))) {
|
|
833
|
+
return true;
|
|
834
|
+
}
|
|
835
|
+
return false;
|
|
836
|
+
}
|
|
837
|
+
_dateSearchDataFilter(prop, data, text, fromText, toText, comparator) {
|
|
838
|
+
if (!data || data.length <= 0 || isNullOrUndefined(comparator)) {
|
|
839
|
+
console.warn('No filter applied - invalid options.');
|
|
840
|
+
return data;
|
|
841
|
+
}
|
|
842
|
+
if (this._isInvalidSearchTerm(text, fromText, toText, comparator)) {
|
|
843
|
+
console.warn('No filter applied - invalid search terms.');
|
|
844
|
+
return data;
|
|
845
|
+
}
|
|
846
|
+
const useLocalTime = this.column.filterOptions?.useLocalTime === true;
|
|
847
|
+
const textDate = getFormattedDateForComparison(text, this.options.dateType, true);
|
|
848
|
+
const fromTextDate = getFormattedDateForComparison(fromText, this.options.dateType, true);
|
|
849
|
+
const toTextDate = getFormattedDateForComparison(toText, this.options.dateType, true);
|
|
850
|
+
return data.filter(item => {
|
|
851
|
+
let propDate = getFormattedDateForComparison(item[prop], this.options.dateType, useLocalTime);
|
|
852
|
+
if ((comparator === 'blank' && (isNullOrUndefined(item[prop]) || isNullOrUndefinedOrEmpty(`${item[prop]}`))) ||
|
|
853
|
+
(comparator === 'not-blank' && notNullOrUndefined(item[prop]) && notNullOrUndefinedOrEmpty(`${item[prop]}`)) ||
|
|
854
|
+
(comparator === 'lt' && propDate.valueOf() < textDate.valueOf()) ||
|
|
855
|
+
(comparator === 'lte' && propDate.valueOf() <= textDate.valueOf()) ||
|
|
856
|
+
(comparator === 'gt' && propDate.valueOf() > textDate.valueOf()) ||
|
|
857
|
+
(comparator === 'gte' && propDate.valueOf() >= textDate.valueOf()) ||
|
|
858
|
+
(comparator === 'eq' && propDate.valueOf() === textDate.valueOf()) ||
|
|
859
|
+
(comparator === 'between' && propDate.valueOf() >= fromTextDate.valueOf() && propDate.valueOf() <= toTextDate.valueOf()) ||
|
|
860
|
+
(comparator === 'not-between' && !(propDate.valueOf() >= fromTextDate.valueOf() && propDate.valueOf() <= toTextDate.valueOf()))) {
|
|
861
|
+
return true;
|
|
862
|
+
}
|
|
863
|
+
return false;
|
|
864
|
+
});
|
|
865
|
+
}
|
|
866
|
+
filter(data) {
|
|
867
|
+
return this._updateFilterValue.pipe(startWith$1(undefined), map$1(() => this.dataFilter(data, this.form.value, undefined)));
|
|
868
|
+
}
|
|
869
|
+
filterState() {
|
|
870
|
+
return {
|
|
871
|
+
name: this.name,
|
|
872
|
+
state: {
|
|
873
|
+
prop: this.prop,
|
|
874
|
+
formValue: this.form.value,
|
|
875
|
+
options: this.options
|
|
876
|
+
}
|
|
877
|
+
};
|
|
878
|
+
}
|
|
879
|
+
applyFilter() {
|
|
880
|
+
this._updateFilterValue.next();
|
|
881
|
+
}
|
|
882
|
+
clearFilter() {
|
|
883
|
+
this.form.setValue({
|
|
884
|
+
searchType: 'eq',
|
|
885
|
+
searchText: null,
|
|
886
|
+
fromText: null,
|
|
887
|
+
toText: null
|
|
888
|
+
});
|
|
889
|
+
this._updateFilterValue.next();
|
|
890
|
+
}
|
|
891
|
+
isDefault() {
|
|
892
|
+
const formValue = this.form.value;
|
|
893
|
+
if (isNullOrUndefinedOrEmpty(formValue.searchType)) {
|
|
894
|
+
return true;
|
|
895
|
+
}
|
|
896
|
+
if (THESEAM_COLUMNS_DATA_FILTER_DATE_SELECT_SEARCH_TYPES.includes(formValue.searchType)) {
|
|
897
|
+
return false;
|
|
898
|
+
}
|
|
899
|
+
else if (THESEAM_COLUMNS_DATA_FILTER_DATE_TEXT_SEARCH_TYPES.includes(formValue.searchType) && notNullOrUndefinedOrEmpty(formValue.searchText)) {
|
|
900
|
+
return false;
|
|
901
|
+
}
|
|
902
|
+
else if (THESEAM_COLUMNS_DATA_FILTER_DATE_RANGE_SEARCH_TYPES.includes(formValue.searchType) && notNullOrUndefinedOrEmpty(formValue.fromText) && notNullOrUndefinedOrEmpty(formValue.toText)) {
|
|
903
|
+
return false;
|
|
904
|
+
}
|
|
905
|
+
return true;
|
|
906
|
+
}
|
|
907
|
+
}
|
|
908
|
+
|
|
909
|
+
class SearchNumericColumnsDataFilter extends ColumnsDataFilter {
|
|
910
|
+
name = THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SEARCH_NAME;
|
|
911
|
+
uid;
|
|
912
|
+
form;
|
|
913
|
+
filterStateChanges;
|
|
914
|
+
options;
|
|
915
|
+
_updateFilterValue = new Subject;
|
|
916
|
+
constructor(prop, initialValue, column) {
|
|
917
|
+
super(prop, initialValue, column);
|
|
918
|
+
this.form = new FormGroup({
|
|
919
|
+
searchType: new FormControl(notNullOrUndefined(initialValue) ? initialValue.searchType : 'eq'),
|
|
920
|
+
searchText: new FormControl(notNullOrUndefined(initialValue) ? initialValue.searchText : null),
|
|
921
|
+
fromText: new FormControl(notNullOrUndefined(initialValue) ? initialValue.fromText : null),
|
|
922
|
+
toText: new FormControl(notNullOrUndefined(initialValue) ? initialValue.toText : null),
|
|
923
|
+
});
|
|
924
|
+
this.uid = `${this.name}--${prop}`;
|
|
925
|
+
this.filterStateChanges = this._updateFilterValue.pipe(startWith$1(undefined), map$1(() => this.filterState()));
|
|
926
|
+
}
|
|
927
|
+
dataFilter(data, filterValue, options) {
|
|
928
|
+
if (isNullOrUndefined(filterValue) || this.isDefault()) {
|
|
929
|
+
return data;
|
|
930
|
+
}
|
|
931
|
+
return this.numberSearchDataFilter(this.prop, data, filterValue.searchText, filterValue.fromText, filterValue.toText, filterValue.searchType || null);
|
|
932
|
+
}
|
|
933
|
+
_isInvalidSearchTerm(searchText, fromText, toText, comparator) {
|
|
934
|
+
if (isNaN(searchText) && THESEAM_COLUMNS_DATA_FILTER_NUMERIC_TEXT_SEARCH_TYPES.includes(comparator)) {
|
|
935
|
+
return true;
|
|
936
|
+
}
|
|
937
|
+
else if ((isNaN(fromText) || isNaN(toText)) && THESEAM_COLUMNS_DATA_FILTER_NUMERIC_RANGE_SEARCH_TYPES.includes(comparator)) {
|
|
938
|
+
return true;
|
|
939
|
+
}
|
|
940
|
+
return false;
|
|
941
|
+
}
|
|
942
|
+
numberSearchDataFilter(prop, data, text, fromText, toText, comparator) {
|
|
943
|
+
if (!data || data.length <= 0 || isNullOrUndefined(comparator)) {
|
|
944
|
+
console.warn('No filter applied - invalid options.');
|
|
945
|
+
return data;
|
|
946
|
+
}
|
|
947
|
+
const textNumeric = notNullOrUndefinedOrEmpty(text) ? parseFloat(text) : NaN;
|
|
948
|
+
const toTextNumeric = notNullOrUndefinedOrEmpty(toText) ? parseFloat(toText) : NaN;
|
|
949
|
+
const fromTextNumeric = notNullOrUndefinedOrEmpty(fromText) ? parseFloat(fromText) : NaN;
|
|
950
|
+
if (this._isInvalidSearchTerm(textNumeric, fromTextNumeric, toTextNumeric, comparator)) {
|
|
951
|
+
console.warn('No filter applied - invalid search terms.');
|
|
952
|
+
return data;
|
|
953
|
+
}
|
|
954
|
+
return data.filter(item => {
|
|
955
|
+
let propNumeric = parseFloat(item[prop]);
|
|
956
|
+
if ((comparator === 'blank' && (isNullOrUndefined(item[prop]) || isNullOrUndefinedOrEmpty(`${item[prop]}`))) ||
|
|
957
|
+
(comparator === 'not-blank' && notNullOrUndefined(item[prop]) && notNullOrUndefinedOrEmpty(`${item[prop]}`)) ||
|
|
958
|
+
(comparator === 'lt' && propNumeric < textNumeric) ||
|
|
959
|
+
(comparator === 'lte' && propNumeric <= textNumeric) ||
|
|
960
|
+
(comparator === 'gt' && propNumeric > textNumeric) ||
|
|
961
|
+
(comparator === 'gte' && propNumeric >= textNumeric) ||
|
|
962
|
+
(comparator === 'eq' && propNumeric === textNumeric) ||
|
|
963
|
+
(comparator === 'between' && propNumeric >= fromTextNumeric && propNumeric <= toTextNumeric) ||
|
|
964
|
+
(comparator === 'not-between' && !(propNumeric >= fromTextNumeric && propNumeric <= toTextNumeric))) {
|
|
965
|
+
return true;
|
|
966
|
+
}
|
|
967
|
+
return false;
|
|
968
|
+
});
|
|
969
|
+
}
|
|
970
|
+
filter(data) {
|
|
971
|
+
return this._updateFilterValue.pipe(startWith$1(undefined), map$1(() => this.dataFilter(data, this.form.value, undefined)));
|
|
972
|
+
}
|
|
973
|
+
filterState() {
|
|
974
|
+
return {
|
|
975
|
+
name: this.name,
|
|
976
|
+
state: {
|
|
977
|
+
prop: this.prop,
|
|
978
|
+
formValue: this.form.value
|
|
979
|
+
}
|
|
980
|
+
};
|
|
981
|
+
}
|
|
982
|
+
applyFilter() {
|
|
983
|
+
this._updateFilterValue.next();
|
|
984
|
+
}
|
|
985
|
+
clearFilter() {
|
|
986
|
+
this.form.setValue({
|
|
987
|
+
searchType: 'eq',
|
|
988
|
+
searchText: null,
|
|
989
|
+
fromText: null,
|
|
990
|
+
toText: null
|
|
991
|
+
});
|
|
992
|
+
this._updateFilterValue.next();
|
|
993
|
+
}
|
|
994
|
+
isDefault() {
|
|
995
|
+
const formValue = this.form.value;
|
|
996
|
+
if (isNullOrUndefinedOrEmpty(formValue.searchType)) {
|
|
997
|
+
return true;
|
|
998
|
+
}
|
|
999
|
+
else if (THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SELECT_SEARCH_TYPES.includes(formValue.searchType)) {
|
|
1000
|
+
return false;
|
|
1001
|
+
}
|
|
1002
|
+
else if (THESEAM_COLUMNS_DATA_FILTER_NUMERIC_TEXT_SEARCH_TYPES.includes(formValue.searchType) && notNullOrUndefinedOrEmpty(formValue.searchText)) {
|
|
1003
|
+
return false;
|
|
1004
|
+
}
|
|
1005
|
+
else if (THESEAM_COLUMNS_DATA_FILTER_NUMERIC_RANGE_SEARCH_TYPES.includes(formValue.searchType) && notNullOrUndefinedOrEmpty(formValue.fromText) && notNullOrUndefinedOrEmpty(formValue.toText)) {
|
|
1006
|
+
return false;
|
|
1007
|
+
}
|
|
1008
|
+
return true;
|
|
1009
|
+
}
|
|
1010
|
+
}
|
|
1011
|
+
|
|
1012
|
+
class SearchTextColumnsDataFilter extends ColumnsDataFilter {
|
|
1013
|
+
name = THESEAM_COLUMNS_DATA_FILTER_TEXT_SEARCH_NAME;
|
|
1014
|
+
uid;
|
|
1015
|
+
form;
|
|
1016
|
+
filterStateChanges;
|
|
1017
|
+
options;
|
|
1018
|
+
_updateFilterValue = new Subject;
|
|
1019
|
+
constructor(prop, initialValue, column) {
|
|
1020
|
+
super(prop, initialValue, column);
|
|
1021
|
+
this.form = new FormGroup({
|
|
1022
|
+
searchType: new FormControl(notNullOrUndefined(initialValue) ? initialValue.searchType : 'contains'),
|
|
1023
|
+
searchText: new FormControl(notNullOrUndefined(initialValue) ? initialValue.searchText : null),
|
|
1024
|
+
// caseSensitive: new FormControl<boolean | null>(notNullOrUndefined(initialValue) ? initialValue.caseSensitive : null),
|
|
1025
|
+
});
|
|
1026
|
+
this.uid = `${this.name}--${prop}`;
|
|
1027
|
+
this.filterStateChanges = this._updateFilterValue.pipe(startWith$1(undefined), map$1(() => this.filterState()));
|
|
1028
|
+
}
|
|
1029
|
+
dataFilter(data, filterValue, options) {
|
|
1030
|
+
if (isNullOrUndefined(filterValue) || this.isDefault()) {
|
|
1031
|
+
return data;
|
|
1032
|
+
}
|
|
1033
|
+
return this._textSearchDataFilter(this.prop, data, filterValue.searchText, filterValue.searchType || null);
|
|
1034
|
+
}
|
|
1035
|
+
_textSearchDataFilter(prop, data, text, comparator) {
|
|
1036
|
+
if (!data || data.length < 0 || isNullOrUndefined(comparator)) {
|
|
1037
|
+
return data;
|
|
1038
|
+
}
|
|
1039
|
+
return data.filter(item => {
|
|
1040
|
+
let value1 = `${notNullOrUndefined(item[prop]) ? item[prop] : ''}`;
|
|
1041
|
+
let value2 = text || '';
|
|
1042
|
+
// if (!options.caseSensitive) {
|
|
1043
|
+
// value1 = value1.toLowerCase()
|
|
1044
|
+
// value2 = value2.toLowerCase()
|
|
1045
|
+
// }
|
|
1046
|
+
value1 = value1.toLowerCase();
|
|
1047
|
+
value2 = value2.toLowerCase();
|
|
1048
|
+
if ((comparator === 'eq' && value1 === value2) ||
|
|
1049
|
+
(comparator === 'neq' && value1 !== value2) ||
|
|
1050
|
+
(comparator === 'contains' && value1.indexOf(value2) !== -1) ||
|
|
1051
|
+
(comparator === 'ncontains' && value1.indexOf(value2) === -1) ||
|
|
1052
|
+
(comparator === 'blank' && isNullOrUndefinedOrEmpty(value1)) ||
|
|
1053
|
+
(comparator === 'not-blank' && notNullOrUndefinedOrEmpty(value1))) {
|
|
1054
|
+
return true;
|
|
1055
|
+
}
|
|
1056
|
+
return false;
|
|
1057
|
+
});
|
|
1058
|
+
}
|
|
1059
|
+
filter(data) {
|
|
1060
|
+
return this._updateFilterValue.pipe(startWith$1(undefined), map$1(() => this.dataFilter(data, this.form.value, undefined)));
|
|
1061
|
+
}
|
|
1062
|
+
filterState() {
|
|
1063
|
+
return {
|
|
1064
|
+
name: this.name,
|
|
1065
|
+
state: {
|
|
1066
|
+
prop: this.prop,
|
|
1067
|
+
formValue: this.form.value,
|
|
1068
|
+
}
|
|
1069
|
+
};
|
|
1070
|
+
}
|
|
1071
|
+
applyFilter() {
|
|
1072
|
+
this._updateFilterValue.next();
|
|
1073
|
+
}
|
|
1074
|
+
clearFilter() {
|
|
1075
|
+
this.form.setValue({
|
|
1076
|
+
searchType: 'contains',
|
|
1077
|
+
searchText: null,
|
|
1078
|
+
// caseSensitive: null
|
|
1079
|
+
});
|
|
1080
|
+
this._updateFilterValue.next();
|
|
1081
|
+
}
|
|
1082
|
+
isDefault() {
|
|
1083
|
+
const formValue = this.form.value;
|
|
1084
|
+
if (isNullOrUndefinedOrEmpty(formValue.searchType)) {
|
|
1085
|
+
return true;
|
|
1086
|
+
}
|
|
1087
|
+
else if (THESEAM_COLUMNS_DATA_FILTER_TEXT_TEXT_SEARCH_TYPES.includes(formValue.searchType) && notNullOrUndefinedOrEmpty(formValue.searchText)) {
|
|
1088
|
+
return false;
|
|
1089
|
+
}
|
|
1090
|
+
else if (THESEAM_COLUMNS_DATA_FILTER_TEXT_SELECT_SEARCH_TYPES.includes(formValue.searchType)) {
|
|
1091
|
+
return false;
|
|
1092
|
+
}
|
|
1093
|
+
return true;
|
|
1094
|
+
}
|
|
1095
|
+
}
|
|
1096
|
+
|
|
1097
|
+
const THESEAM_COLUMNS_DATA_FILTERS_DEFAULT = [
|
|
1098
|
+
{ name: THESEAM_COLUMNS_DATA_FILTER_TEXT_SEARCH_NAME, class: SearchTextColumnsDataFilter },
|
|
1099
|
+
{ name: THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SEARCH_NAME, class: SearchNumericColumnsDataFilter },
|
|
1100
|
+
{ name: THESEAM_COLUMNS_DATA_FILTER_DATE_SEARCH_NAME, class: SearchDateColumnsDataFilter },
|
|
1101
|
+
];
|
|
1102
|
+
const getFormattedDateForComparison = (date, dateType, setToLocalTime = false) => {
|
|
1103
|
+
const dateObj = new Date(notNullOrUndefined(date) ? date : '');
|
|
1104
|
+
if (dateType === 'datetime-local') {
|
|
1105
|
+
// reset seconds and ms, since they can't be specified from the search input
|
|
1106
|
+
dateObj.setSeconds(0);
|
|
1107
|
+
dateObj.setMilliseconds(0);
|
|
1108
|
+
}
|
|
1109
|
+
else if (dateType === 'date') {
|
|
1110
|
+
if (setToLocalTime) {
|
|
1111
|
+
// set date from input type="date" to current timezone, to match expected behavior
|
|
1112
|
+
dateObj.setMinutes(dateObj.getMinutes() + dateObj.getTimezoneOffset());
|
|
1113
|
+
}
|
|
1114
|
+
// reset hours/minutes/seconds/ms, since they can't be specified from the search input
|
|
1115
|
+
dateObj.setHours(0, 0, 0, 0);
|
|
1116
|
+
}
|
|
1117
|
+
return dateObj;
|
|
1118
|
+
};
|
|
1119
|
+
|
|
1120
|
+
class ColumnsFiltersService {
|
|
1121
|
+
_customColumnsDataFilters;
|
|
1122
|
+
_columnFilterTemplates = new BehaviorSubject([]);
|
|
1123
|
+
columnFilterTemplates$ = this._columnFilterTemplates.asObservable();
|
|
1124
|
+
_columns = new BehaviorSubject([]);
|
|
1125
|
+
columnsFilters$ = this._columns.pipe(map$1(columns => columns
|
|
1126
|
+
.map(col => col.$$filter)
|
|
1127
|
+
.filter(notNullOrUndefined)));
|
|
1128
|
+
columnActiveFilterProps$ = this.columnsFilters$.pipe(switchMap$1(filters => {
|
|
1129
|
+
if (!filters.length) {
|
|
1130
|
+
return of([]);
|
|
1131
|
+
}
|
|
1132
|
+
return combineLatest(filters.map(f => f.filterStateChanges.pipe(map$1((filterState) => !f.isDefault() ? filterState.state.prop : null))));
|
|
1133
|
+
}), map$1(props => props.filter(notNullOrUndefined)));
|
|
1134
|
+
constructor(_customColumnsDataFilters) {
|
|
1135
|
+
this._customColumnsDataFilters = _customColumnsDataFilters;
|
|
1136
|
+
}
|
|
1137
|
+
setFilterTemplates(tpls) {
|
|
1138
|
+
this._columnFilterTemplates.next(tpls);
|
|
1139
|
+
}
|
|
1140
|
+
createColumnDataFilter(column, initialValue) {
|
|
1141
|
+
const prop = this.getColumnFilterProp(column);
|
|
1142
|
+
if (isNullOrUndefined(prop)) {
|
|
1143
|
+
return null;
|
|
1144
|
+
}
|
|
1145
|
+
return this._getColumnsDataFilter(prop, column, initialValue);
|
|
1146
|
+
}
|
|
1147
|
+
_getColumnsDataFilter(prop, column, initialValue) {
|
|
1148
|
+
const filterClass = this._getColumnsDataFilterType(column);
|
|
1149
|
+
let filter;
|
|
1150
|
+
if (notNullOrUndefined(this._customColumnsDataFilters)) {
|
|
1151
|
+
filter = this._customColumnsDataFilters.find(x => x.name === filterClass);
|
|
1152
|
+
}
|
|
1153
|
+
if (isNullOrUndefined(filter)) {
|
|
1154
|
+
filter = THESEAM_COLUMNS_DATA_FILTERS_DEFAULT.find(x => x.name === filterClass);
|
|
1155
|
+
}
|
|
1156
|
+
if (notNullOrUndefined(filter)) {
|
|
1157
|
+
// eslint-disable-next-line new-cap
|
|
1158
|
+
return new filter.class(prop, initialValue, column);
|
|
1159
|
+
}
|
|
1160
|
+
return null;
|
|
1161
|
+
}
|
|
1162
|
+
_getColumnsDataFilterType(column) {
|
|
1163
|
+
if (notNullOrUndefined(column.filterOptions) && notNullOrUndefined(column.filterOptions.filterType)) {
|
|
1164
|
+
return column.filterOptions.filterType;
|
|
1165
|
+
}
|
|
1166
|
+
else if (notNullOrUndefined(column.cellType)) {
|
|
1167
|
+
switch (column.cellType) {
|
|
1168
|
+
case 'string':
|
|
1169
|
+
case 'phone':
|
|
1170
|
+
return THESEAM_COLUMNS_DATA_FILTER_TEXT_SEARCH_NAME;
|
|
1171
|
+
case 'currency':
|
|
1172
|
+
case 'decimal':
|
|
1173
|
+
case 'integer':
|
|
1174
|
+
return THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SEARCH_NAME;
|
|
1175
|
+
case 'date':
|
|
1176
|
+
return THESEAM_COLUMNS_DATA_FILTER_DATE_SEARCH_NAME;
|
|
1177
|
+
}
|
|
1178
|
+
}
|
|
1179
|
+
return THESEAM_COLUMNS_DATA_FILTER_TEXT_SEARCH_NAME;
|
|
1180
|
+
}
|
|
1181
|
+
getColumnFilterProp(column) {
|
|
1182
|
+
if (isNullOrUndefined(column)) {
|
|
1183
|
+
return null;
|
|
1184
|
+
}
|
|
1185
|
+
const prop = column.filterOptions?.filterProp || column.prop || (notNullOrUndefined(column.name) ? camelCase(column.name) : undefined);
|
|
1186
|
+
if (isNullOrUndefined(prop)) {
|
|
1187
|
+
return null;
|
|
1188
|
+
}
|
|
1189
|
+
return `${prop}`;
|
|
1190
|
+
}
|
|
1191
|
+
setColumns(columns) {
|
|
1192
|
+
this._columns.next(columns);
|
|
1193
|
+
}
|
|
1194
|
+
getColumnFilter(prop) {
|
|
1195
|
+
if (isNullOrUndefined(prop)) {
|
|
1196
|
+
return undefined;
|
|
1197
|
+
}
|
|
1198
|
+
const columns = this._columns.value;
|
|
1199
|
+
const column = columns.find(col => this.getColumnFilterProp(col) === prop);
|
|
1200
|
+
return column ? column.$$filter : undefined;
|
|
1201
|
+
}
|
|
1202
|
+
filters() {
|
|
1203
|
+
return this._columns.value
|
|
1204
|
+
.map(col => col.$$filter)
|
|
1205
|
+
.filter(notNullOrUndefined);
|
|
1206
|
+
}
|
|
1207
|
+
addFilter(filter) {
|
|
1208
|
+
// Filters are now managed through columns, so this method is deprecated
|
|
1209
|
+
console.warn('ColumnsFiltersService.addFilter is deprecated - filters are now managed through columns');
|
|
1210
|
+
}
|
|
1211
|
+
removeFilter(filter) {
|
|
1212
|
+
// Filters are now managed through columns, so this method is deprecated
|
|
1213
|
+
console.warn('ColumnsFiltersService.removeFilter is deprecated - filters are now managed through columns');
|
|
1214
|
+
}
|
|
1215
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: ColumnsFiltersService, deps: [{ token: THESEAM_COLUMNS_DATA_FILTER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1216
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: ColumnsFiltersService });
|
|
1217
|
+
}
|
|
1218
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: ColumnsFiltersService, decorators: [{
|
|
1219
|
+
type: Injectable
|
|
1220
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
1221
|
+
type: Optional
|
|
1222
|
+
}, {
|
|
1223
|
+
type: Inject,
|
|
1224
|
+
args: [THESEAM_COLUMNS_DATA_FILTER]
|
|
1225
|
+
}] }] });
|
|
1226
|
+
|
|
1227
|
+
var ColumnsTypes;
|
|
1228
|
+
(function (ColumnsTypes) {
|
|
1229
|
+
ColumnsTypes[ColumnsTypes["Input"] = 0] = "Input";
|
|
1230
|
+
ColumnsTypes[ColumnsTypes["Template"] = 1] = "Template";
|
|
1231
|
+
ColumnsTypes[ColumnsTypes["Result"] = 2] = "Result";
|
|
1232
|
+
})(ColumnsTypes || (ColumnsTypes = {}));
|
|
1233
|
+
class ColumnsManagerService {
|
|
1234
|
+
_differs;
|
|
1235
|
+
_columnChangesService;
|
|
1236
|
+
_columnsFilters;
|
|
1237
|
+
_updateColumns = new Subject();
|
|
1238
|
+
_inputColumns = new BehaviorSubject([]);
|
|
1239
|
+
_templateColumns = new BehaviorSubject([]);
|
|
1240
|
+
_inpColDiffersMap = new Map();
|
|
1241
|
+
_tplColDiffersMap = new Map();
|
|
1242
|
+
_resultColDiffersMap = new Map();
|
|
1243
|
+
_colPropsDiffer;
|
|
1244
|
+
_internalColumnsGetter;
|
|
1245
|
+
_selectionType;
|
|
1246
|
+
_rowActionItem;
|
|
1247
|
+
_actionMenuCellTpl;
|
|
1248
|
+
_actionItemColumnPosition;
|
|
1249
|
+
_blankHeaderTpl;
|
|
1250
|
+
_treeToggleTpl;
|
|
1251
|
+
_headerTpl;
|
|
1252
|
+
_cellTypeSelectorTpl;
|
|
1253
|
+
// TODO: Consider making this a columns changed obervable, to make changes more predictable.
|
|
1254
|
+
columns$;
|
|
1255
|
+
constructor(_differs, _columnChangesService, _columnsFilters) {
|
|
1256
|
+
this._differs = _differs;
|
|
1257
|
+
this._columnChangesService = _columnChangesService;
|
|
1258
|
+
this._columnsFilters = _columnsFilters;
|
|
1259
|
+
const templateColumns$ = this._columnChangesService.columnInputChanges$.pipe(startWith(undefined), switchMap(() => {
|
|
1260
|
+
return this._templateColumns.asObservable().pipe(map(translateTemplateColumns));
|
|
1261
|
+
}));
|
|
1262
|
+
this.columns$ = defer(() => {
|
|
1263
|
+
let isFirst = true;
|
|
1264
|
+
return combineLatest([
|
|
1265
|
+
this._inputColumns.asObservable(),
|
|
1266
|
+
templateColumns$,
|
|
1267
|
+
this._updateColumns.asObservable().pipe(auditTime(0), startWith(undefined))
|
|
1268
|
+
]).pipe(switchMap(([inputColumns, templateColumns]) => {
|
|
1269
|
+
const cols = this._mergeColumns(inputColumns, templateColumns);
|
|
1270
|
+
const hasColumnsChanged = this._hasColumnsChanged(cols);
|
|
1271
|
+
// TODO: Look for columns added/removed and remove the removed columns
|
|
1272
|
+
// differs, not just changes to columns.
|
|
1273
|
+
const hasAddedOrRemovedColumns = this._hasAddedOrRemovedColumns(cols);
|
|
1274
|
+
// NOTE: Both checks need to be run, even though only one needs to be
|
|
1275
|
+
// true, because their differs need to be called.
|
|
1276
|
+
if (hasColumnsChanged || hasAddedOrRemovedColumns || isFirst) {
|
|
1277
|
+
isFirst = false;
|
|
1278
|
+
// Update the filters service with the new columns
|
|
1279
|
+
this._columnsFilters.setColumns(cols);
|
|
1280
|
+
return of(cols);
|
|
1281
|
+
}
|
|
1282
|
+
return EMPTY;
|
|
1283
|
+
}));
|
|
1284
|
+
}).pipe(shareReplay({ refCount: true, bufferSize: 1 }));
|
|
1285
|
+
}
|
|
1286
|
+
setInputColumns(columns) {
|
|
1287
|
+
this._inputColumns.next(columns);
|
|
1288
|
+
}
|
|
1289
|
+
setTemplateColumns(columns) {
|
|
1290
|
+
this._templateColumns.next(columns);
|
|
1291
|
+
}
|
|
1292
|
+
setInternalColumnsGetter(getter) {
|
|
1293
|
+
this._internalColumnsGetter = getter || undefined;
|
|
1294
|
+
this._updateColumns.next(undefined);
|
|
1295
|
+
}
|
|
1296
|
+
setSelectionType(selectionType) {
|
|
1297
|
+
const changed = this._selectionType !== selectionType;
|
|
1298
|
+
this._selectionType = selectionType;
|
|
1299
|
+
if (changed) {
|
|
1300
|
+
this._updateColumns.next(undefined);
|
|
1301
|
+
}
|
|
1302
|
+
}
|
|
1303
|
+
getSelectionType() {
|
|
1304
|
+
return this._selectionType;
|
|
1305
|
+
}
|
|
1306
|
+
setRowActionItem(rowActionItem) {
|
|
1307
|
+
const changed = this._rowActionItem !== rowActionItem;
|
|
1308
|
+
this._rowActionItem = rowActionItem;
|
|
1309
|
+
if (changed) {
|
|
1310
|
+
this._updateColumns.next(undefined);
|
|
1311
|
+
}
|
|
1312
|
+
}
|
|
1313
|
+
setActionItemColumnPosition(actionItemColumnPosition) {
|
|
1314
|
+
const changed = this._actionItemColumnPosition !== actionItemColumnPosition;
|
|
1315
|
+
this._actionItemColumnPosition = actionItemColumnPosition;
|
|
1316
|
+
if (changed) {
|
|
1317
|
+
this._updateColumns.next(undefined);
|
|
1318
|
+
}
|
|
1319
|
+
}
|
|
1320
|
+
setActionMenuCellTpl(actionMenuCellTpl) {
|
|
1321
|
+
const changed = this._actionMenuCellTpl !== actionMenuCellTpl;
|
|
1322
|
+
this._actionMenuCellTpl = actionMenuCellTpl;
|
|
1323
|
+
if (changed) {
|
|
1324
|
+
this._updateColumns.next(undefined);
|
|
1325
|
+
}
|
|
1326
|
+
}
|
|
1327
|
+
setBlankHeaderTpl(blankHeaderTpl) {
|
|
1328
|
+
const changed = this._blankHeaderTpl !== blankHeaderTpl;
|
|
1329
|
+
this._blankHeaderTpl = blankHeaderTpl;
|
|
1330
|
+
if (changed) {
|
|
1331
|
+
this._updateColumns.next(undefined);
|
|
1332
|
+
}
|
|
1333
|
+
}
|
|
1334
|
+
setTreeToggleTpl(treeToggleTpl) {
|
|
1335
|
+
const changed = this._treeToggleTpl !== treeToggleTpl;
|
|
1336
|
+
this._treeToggleTpl = treeToggleTpl;
|
|
1337
|
+
if (changed) {
|
|
1338
|
+
this._updateColumns.next(undefined);
|
|
1339
|
+
}
|
|
1340
|
+
}
|
|
1341
|
+
setHeaderTpl(headerTpl) {
|
|
1342
|
+
const changed = this._headerTpl !== headerTpl;
|
|
1343
|
+
this._headerTpl = headerTpl;
|
|
1344
|
+
if (changed) {
|
|
1345
|
+
this._updateColumns.next(undefined);
|
|
1346
|
+
}
|
|
1347
|
+
}
|
|
1348
|
+
setCellTypeSelectorTpl(cellTypeSelectorTpl) {
|
|
1349
|
+
const changed = this._cellTypeSelectorTpl !== cellTypeSelectorTpl;
|
|
1350
|
+
this._cellTypeSelectorTpl = cellTypeSelectorTpl;
|
|
1351
|
+
if (changed) {
|
|
1352
|
+
this._updateColumns.next(undefined);
|
|
1353
|
+
}
|
|
1354
|
+
}
|
|
1355
|
+
_mergeColumns(inputColumns, templateColumns) {
|
|
1356
|
+
const cols = [];
|
|
1357
|
+
// Add the first column checkbox if 'checkbox' selection is enabled.
|
|
1358
|
+
if (this._shouldAddCheckboxColumn()) {
|
|
1359
|
+
cols.push(createCheckboxColumn());
|
|
1360
|
+
}
|
|
1361
|
+
// Column needs to be provided in the inputColumns, so iterate the
|
|
1362
|
+
// inputColumns.
|
|
1363
|
+
for (const inpCol of inputColumns) {
|
|
1364
|
+
const prop = getColumnProp(inpCol);
|
|
1365
|
+
if (!notNullOrUndefined(prop)) {
|
|
1366
|
+
throw Error(`Column may have 'prop' or 'name' defined.`);
|
|
1367
|
+
}
|
|
1368
|
+
const internalCol = this._getInternalColumn(prop);
|
|
1369
|
+
const inpColDif = this._getColDif(inpCol, ColumnsTypes.Input);
|
|
1370
|
+
if (notNullOrUndefined(inpColDif)) {
|
|
1371
|
+
this._updateColDif(inpColDif, internalCol, inpCol);
|
|
1372
|
+
}
|
|
1373
|
+
const tplCol = this._findColumnByProp(prop, templateColumns);
|
|
1374
|
+
if (tplCol !== undefined) {
|
|
1375
|
+
const tplColDif = this._getColDif(tplCol, ColumnsTypes.Template);
|
|
1376
|
+
if (notNullOrUndefined(tplColDif)) {
|
|
1377
|
+
this._updateColDif(tplColDif, internalCol, tplCol);
|
|
1378
|
+
}
|
|
1379
|
+
}
|
|
1380
|
+
// Preserve or create filter for this column
|
|
1381
|
+
const existingFilter = this._getExistingFilter(internalCol, inpCol);
|
|
1382
|
+
const _col = {
|
|
1383
|
+
...(internalCol || {}),
|
|
1384
|
+
...inpCol,
|
|
1385
|
+
// TODO: Rethink this, because I don't know if this is correct.
|
|
1386
|
+
...(tplCol || {}),
|
|
1387
|
+
// Store filter directly on column object
|
|
1388
|
+
$$filter: existingFilter || this._createColumnFilter(inpCol)
|
|
1389
|
+
};
|
|
1390
|
+
if (this._shouldAddTreeToggleColumn(_col)) {
|
|
1391
|
+
_col.treeToggleTemplate = this._treeToggleTpl;
|
|
1392
|
+
}
|
|
1393
|
+
if (this._shouldAddHeaderTemplate(_col)) {
|
|
1394
|
+
_col.headerTemplate = this._headerTpl; // TODO: Fix type
|
|
1395
|
+
}
|
|
1396
|
+
if (this._shouldAddCellTypeSelectorTpl(_col)) {
|
|
1397
|
+
_col.cellTemplate = this._cellTypeSelectorTpl; // TODO: Fix type
|
|
1398
|
+
}
|
|
1399
|
+
cols.push(_col);
|
|
1400
|
+
}
|
|
1401
|
+
if (this._shouldAddRowActionColumn()) {
|
|
1402
|
+
const actionMenuColumn = createActionMenuColumn(this._actionMenuCellTpl, this._blankHeaderTpl, this._rowActionColumnIsFrozenLeft(), this._rowActionColumnIsFrozenRight());
|
|
1403
|
+
if (this._rowActionColumnIsStaticLeft()) {
|
|
1404
|
+
cols.unshift(actionMenuColumn);
|
|
1405
|
+
}
|
|
1406
|
+
else {
|
|
1407
|
+
cols.push(actionMenuColumn);
|
|
1408
|
+
}
|
|
1409
|
+
}
|
|
1410
|
+
// Make sure the default for any missing props are set.
|
|
1411
|
+
// TODO: Determine if this should be done earlier, because I don't like
|
|
1412
|
+
// how this is done after dif checks.
|
|
1413
|
+
setColumnDefaults(cols);
|
|
1414
|
+
return cols;
|
|
1415
|
+
}
|
|
1416
|
+
_getInternalColumns() {
|
|
1417
|
+
if (this._internalColumnsGetter === undefined) {
|
|
1418
|
+
return undefined;
|
|
1419
|
+
}
|
|
1420
|
+
return this._internalColumnsGetter();
|
|
1421
|
+
}
|
|
1422
|
+
_getInternalColumn(prop) {
|
|
1423
|
+
const internalCols = this._getInternalColumns();
|
|
1424
|
+
if (internalCols === undefined) {
|
|
1425
|
+
return undefined;
|
|
1426
|
+
}
|
|
1427
|
+
return internalCols.find(c => getColumnProp(c) === prop);
|
|
1428
|
+
}
|
|
1429
|
+
_findColumnByProp(prop, columns) {
|
|
1430
|
+
return columns.find(c => getColumnProp(c) === prop);
|
|
1431
|
+
}
|
|
1432
|
+
_getDifMapForColumnsType(columnsType) {
|
|
1433
|
+
switch (columnsType) {
|
|
1434
|
+
case ColumnsTypes.Input: return this._inpColDiffersMap;
|
|
1435
|
+
case ColumnsTypes.Template: return this._tplColDiffersMap;
|
|
1436
|
+
case ColumnsTypes.Result: return this._resultColDiffersMap;
|
|
1437
|
+
}
|
|
1438
|
+
}
|
|
1439
|
+
_getColumnDiffer(prop, colsType) {
|
|
1440
|
+
const difMap = this._getDifMapForColumnsType(colsType);
|
|
1441
|
+
if (difMap === null) {
|
|
1442
|
+
throw Error(`Invalid columns type.`);
|
|
1443
|
+
}
|
|
1444
|
+
if (!difMap.has(prop)) {
|
|
1445
|
+
difMap.set(prop, this._differs.find({}).create());
|
|
1446
|
+
}
|
|
1447
|
+
const differ = difMap.get(prop);
|
|
1448
|
+
if (differ === undefined) {
|
|
1449
|
+
throw Error(`Differ not found. New differ should have been created.`);
|
|
1450
|
+
}
|
|
1451
|
+
return differ;
|
|
1452
|
+
}
|
|
1453
|
+
_getColDif(col, colsType) {
|
|
1454
|
+
const prop = getColumnProp(col);
|
|
1455
|
+
if (prop === undefined) {
|
|
1456
|
+
throw Error(`Column prop not found.`);
|
|
1457
|
+
}
|
|
1458
|
+
return this._getColumnDiffer(prop, colsType).diff(col);
|
|
1459
|
+
}
|
|
1460
|
+
_updateColDif(colDif, internalColumn, col) {
|
|
1461
|
+
colDif.forEachRemovedItem(r => {
|
|
1462
|
+
if (internalColumn && Object.prototype.hasOwnProperty.call(internalColumn, r.key)) {
|
|
1463
|
+
const k = r.key;
|
|
1464
|
+
delete internalColumn[k];
|
|
1465
|
+
}
|
|
1466
|
+
});
|
|
1467
|
+
colDif.forEachAddedItem(r => col[r.key] = r.currentValue);
|
|
1468
|
+
colDif.forEachChangedItem(r => col[r.key] = r.currentValue);
|
|
1469
|
+
}
|
|
1470
|
+
_hasAddedOrRemovedColumns(columns) {
|
|
1471
|
+
if (!this._colPropsDiffer) {
|
|
1472
|
+
this._colPropsDiffer = this._differs.find([]).create();
|
|
1473
|
+
}
|
|
1474
|
+
const props = columns.map(c => getColumnProp(c));
|
|
1475
|
+
return this._colPropsDiffer.diff(props) !== null;
|
|
1476
|
+
}
|
|
1477
|
+
_hasColumnsChanged(columns) {
|
|
1478
|
+
let colChanged = false;
|
|
1479
|
+
for (const col of columns) {
|
|
1480
|
+
const resultDif = this._getColDif(col, ColumnsTypes.Result);
|
|
1481
|
+
if (resultDif) {
|
|
1482
|
+
// NOTE: Can't return early, because the differs need to be updated.
|
|
1483
|
+
colChanged = true;
|
|
1484
|
+
}
|
|
1485
|
+
}
|
|
1486
|
+
return colChanged;
|
|
1487
|
+
}
|
|
1488
|
+
_shouldAddCheckboxColumn() {
|
|
1489
|
+
return this._selectionType === SelectionType.checkbox;
|
|
1490
|
+
}
|
|
1491
|
+
_shouldAddRowActionColumn() {
|
|
1492
|
+
return this._rowActionItem !== undefined;
|
|
1493
|
+
}
|
|
1494
|
+
_rowActionColumnIsFrozenLeft() {
|
|
1495
|
+
return this._actionItemColumnPosition === 'frozenLeft';
|
|
1496
|
+
}
|
|
1497
|
+
_rowActionColumnIsFrozenRight() {
|
|
1498
|
+
return this._actionItemColumnPosition === 'frozenRight';
|
|
1499
|
+
}
|
|
1500
|
+
_rowActionColumnIsStaticLeft() {
|
|
1501
|
+
return this._actionItemColumnPosition === 'staticLeft';
|
|
1502
|
+
}
|
|
1503
|
+
_rowActionColumnIsStaticRight() {
|
|
1504
|
+
return this._actionItemColumnPosition === 'staticRight';
|
|
1505
|
+
}
|
|
1506
|
+
_shouldAddTreeToggleColumn(column) {
|
|
1507
|
+
return column.isTreeColumn !== undefined && column.isTreeColumn &&
|
|
1508
|
+
(!hasProperty(column, 'treeToggleTemplate') || !notNullOrUndefined(column.treeToggleTemplate));
|
|
1509
|
+
}
|
|
1510
|
+
_shouldAddHeaderTemplate(column) {
|
|
1511
|
+
return !hasProperty(column, 'headerTemplate');
|
|
1512
|
+
}
|
|
1513
|
+
_shouldAddCellTypeSelectorTpl(column) {
|
|
1514
|
+
return hasProperty(column, 'cellType');
|
|
1515
|
+
}
|
|
1516
|
+
_getExistingFilter(internalCol, inputCol) {
|
|
1517
|
+
// Check if internal column has existing filter (from NgxDatatable)
|
|
1518
|
+
if (internalCol && internalCol.$$filter) {
|
|
1519
|
+
return internalCol.$$filter;
|
|
1520
|
+
}
|
|
1521
|
+
// Check if input column has existing filter (from previous merge)
|
|
1522
|
+
if (inputCol.$$filter) {
|
|
1523
|
+
return inputCol.$$filter;
|
|
1524
|
+
}
|
|
1525
|
+
return undefined;
|
|
1526
|
+
}
|
|
1527
|
+
_createColumnFilter(column) {
|
|
1528
|
+
if (!column.filterable) {
|
|
1529
|
+
return undefined;
|
|
1530
|
+
}
|
|
1531
|
+
return this._columnsFilters.createColumnDataFilter(column, null) || undefined;
|
|
1532
|
+
}
|
|
1533
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: ColumnsManagerService, deps: [{ token: i0.KeyValueDiffers }, { token: DatatableColumnChangesService }, { token: ColumnsFiltersService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1534
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: ColumnsManagerService });
|
|
1535
|
+
}
|
|
1536
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: ColumnsManagerService, decorators: [{
|
|
1537
|
+
type: Injectable
|
|
1538
|
+
}], ctorParameters: () => [{ type: i0.KeyValueDiffers }, { type: DatatableColumnChangesService }, { type: ColumnsFiltersService }] });
|
|
1539
|
+
|
|
1540
|
+
const THESEAM_DATATABLE_ACCESSOR = new InjectionToken('TheSeamDatatableAccessor');
|
|
1541
|
+
|
|
1542
|
+
function removeUnusedDiffs(cols, colDiffersInp, colDiffersTpl) {
|
|
1543
|
+
const inpKeys = Object.keys(colDiffersInp);
|
|
1544
|
+
inpKeys.filter(k => cols.findIndex(c => c.prop === k) === -1)
|
|
1545
|
+
.forEach(k => { delete colDiffersInp[k]; });
|
|
1546
|
+
const tplKeys = Object.keys(colDiffersTpl);
|
|
1547
|
+
tplKeys.filter(k => cols.findIndex(c => c.prop === k) === -1)
|
|
1548
|
+
.forEach(k => { delete colDiffersTpl[k]; });
|
|
1549
|
+
}
|
|
1550
|
+
|
|
1551
|
+
/**
|
|
1552
|
+
* Alteration applied to a column or columns that can be persisted.
|
|
1553
|
+
*
|
|
1554
|
+
* Tracking if a column was altered by user or library code can be confusing.
|
|
1555
|
+
* This allows us to store a list of replayable alterations on columns. By
|
|
1556
|
+
* having a defined way to implement alterations, the datatable should be easier
|
|
1557
|
+
* to support external features that want to provide an alteration.
|
|
1558
|
+
*
|
|
1559
|
+
* NOTE: Current, to unapply an alteration you can create an alteration with
|
|
1560
|
+
* `persistent` set to false and the alteration will be removed after `apply()`
|
|
1561
|
+
* is called.
|
|
1562
|
+
*/
|
|
1563
|
+
class ColumnsAlteration {
|
|
1564
|
+
state;
|
|
1565
|
+
persistent;
|
|
1566
|
+
constructor(
|
|
1567
|
+
/**
|
|
1568
|
+
* Persistable state.
|
|
1569
|
+
*
|
|
1570
|
+
* Returned value should be JSON stringifyable.
|
|
1571
|
+
*/
|
|
1572
|
+
state,
|
|
1573
|
+
/**
|
|
1574
|
+
* If false, the state will not be persisted to a persistent storage and
|
|
1575
|
+
* will be removed after applied.
|
|
1576
|
+
*/
|
|
1577
|
+
persistent) {
|
|
1578
|
+
this.state = state;
|
|
1579
|
+
this.persistent = persistent;
|
|
1580
|
+
this.state = state;
|
|
1581
|
+
}
|
|
1582
|
+
toJSON() {
|
|
1583
|
+
return {
|
|
1584
|
+
id: this.id,
|
|
1585
|
+
type: this.type,
|
|
1586
|
+
state: this.state
|
|
1587
|
+
};
|
|
1588
|
+
}
|
|
1589
|
+
}
|
|
1590
|
+
|
|
1591
|
+
class HideColumnColumnsAlteration extends ColumnsAlteration {
|
|
1592
|
+
id;
|
|
1593
|
+
type = 'hide-column';
|
|
1594
|
+
constructor(state, persistent) {
|
|
1595
|
+
super(state, persistent);
|
|
1596
|
+
if (!this._isValidState(state)) {
|
|
1597
|
+
throw Error(`Invalid state: ${JSON.stringify(state)}`);
|
|
1598
|
+
}
|
|
1599
|
+
this.id = `${this.type}--${state.columnProp}`;
|
|
1600
|
+
}
|
|
1601
|
+
apply(columns, datatable) {
|
|
1602
|
+
for (const col of columns) {
|
|
1603
|
+
const prop = getColumnProp(col);
|
|
1604
|
+
if (prop === this.state.columnProp) {
|
|
1605
|
+
col.hidden = this.state.hidden;
|
|
1606
|
+
}
|
|
1607
|
+
}
|
|
1608
|
+
}
|
|
1609
|
+
toDisplayItem() {
|
|
1610
|
+
const summary = this._createHideSummary();
|
|
1611
|
+
const details = this._createHideDetails();
|
|
1612
|
+
return {
|
|
1613
|
+
id: this.id,
|
|
1614
|
+
type: this.type,
|
|
1615
|
+
summary,
|
|
1616
|
+
details,
|
|
1617
|
+
sortOrder: this._getColumnSortOrder()
|
|
1618
|
+
};
|
|
1619
|
+
}
|
|
1620
|
+
getDisplaySortOrder() {
|
|
1621
|
+
return this._getColumnSortOrder();
|
|
1622
|
+
}
|
|
1623
|
+
_isValidState(state) {
|
|
1624
|
+
// NOTE: Checking null or undefined, even though the type doesn't allow,
|
|
1625
|
+
// because the state may have been loaded from an invalid persistant
|
|
1626
|
+
// storage.
|
|
1627
|
+
// TODO: Remove when state validation/migration is implemented to happen
|
|
1628
|
+
// when retrieved from storage.
|
|
1629
|
+
if (!notNullOrUndefined(state.columnProp)) {
|
|
1630
|
+
return false;
|
|
1631
|
+
}
|
|
1632
|
+
// TODO: Remove when state validation/migration is implemented to happen
|
|
1633
|
+
// when retrieved from storage.
|
|
1634
|
+
if (!notNullOrUndefined(state.hidden)) {
|
|
1635
|
+
return false;
|
|
1636
|
+
}
|
|
1637
|
+
return true;
|
|
1638
|
+
}
|
|
1639
|
+
_createHideSummary() {
|
|
1640
|
+
const action = this.state.hidden ? 'Hidden' : 'Shown';
|
|
1641
|
+
return `${action}: ${this.state.columnProp}`;
|
|
1642
|
+
}
|
|
1643
|
+
_createHideDetails() {
|
|
1644
|
+
const action = this.state.hidden ? 'hidden' : 'visible';
|
|
1645
|
+
return [`Column: ${this.state.columnProp}`, `Status: ${action}`];
|
|
1646
|
+
}
|
|
1647
|
+
_getColumnSortOrder() {
|
|
1648
|
+
// Sort by column name for consistent ordering
|
|
1649
|
+
return String(this.state.columnProp).charCodeAt(0);
|
|
1650
|
+
}
|
|
1651
|
+
}
|
|
1652
|
+
|
|
1653
|
+
class SortColumnsAlteration extends ColumnsAlteration {
|
|
1654
|
+
id;
|
|
1655
|
+
type = 'sort';
|
|
1656
|
+
constructor(state, persistent) {
|
|
1657
|
+
super(state, persistent);
|
|
1658
|
+
if (!this._isValidState(state)) {
|
|
1659
|
+
throw Error(`Invalid state: ${JSON.stringify(state)}`);
|
|
1660
|
+
}
|
|
1661
|
+
this.id = `${this.type}`;
|
|
1662
|
+
}
|
|
1663
|
+
apply(columns, datatable) {
|
|
1664
|
+
if (datatable.sortType === SortType.single) {
|
|
1665
|
+
datatable.sorts = this.state.sorts.length > 0 ? [this.state.sorts[0]] : [];
|
|
1666
|
+
}
|
|
1667
|
+
else {
|
|
1668
|
+
datatable.sorts = this.state.sorts;
|
|
1669
|
+
}
|
|
1670
|
+
}
|
|
1671
|
+
toDisplayItem() {
|
|
1672
|
+
const summary = this._createSortSummary();
|
|
1673
|
+
const details = this._createSortDetails();
|
|
1674
|
+
return {
|
|
1675
|
+
id: this.id,
|
|
1676
|
+
type: this.type,
|
|
1677
|
+
summary,
|
|
1678
|
+
details,
|
|
1679
|
+
sortOrder: 0
|
|
1680
|
+
};
|
|
1681
|
+
}
|
|
1682
|
+
getDisplaySortOrder() {
|
|
1683
|
+
return 0; // Only one sort alteration per table
|
|
1684
|
+
}
|
|
1685
|
+
_isValidState(state) {
|
|
1686
|
+
// NOTE: Checking null or undefined, even though the type doesn't allow,
|
|
1687
|
+
// because the state may have been loaded from an invalid persistant
|
|
1688
|
+
// storage.
|
|
1689
|
+
// TODO: Remove when state validation/migration is implemented to happen
|
|
1690
|
+
// when retrieved from storage.
|
|
1691
|
+
if (!notNullOrUndefined(state.sorts)) {
|
|
1692
|
+
return false;
|
|
1693
|
+
}
|
|
1694
|
+
return true;
|
|
1695
|
+
}
|
|
1696
|
+
_createSortSummary() {
|
|
1697
|
+
if (this.state.sorts.length === 0) {
|
|
1698
|
+
return 'No sorting';
|
|
1699
|
+
}
|
|
1700
|
+
const sortDescriptions = this.state.sorts.map(sort => {
|
|
1701
|
+
const direction = sort.dir === 'asc' ? '↑' : '↓';
|
|
1702
|
+
return `${sort.prop} ${direction}`;
|
|
1703
|
+
});
|
|
1704
|
+
return sortDescriptions.join(', ');
|
|
1705
|
+
}
|
|
1706
|
+
_createSortDetails() {
|
|
1707
|
+
if (this.state.sorts.length === 0) {
|
|
1708
|
+
return ['No columns are currently sorted'];
|
|
1709
|
+
}
|
|
1710
|
+
return this.state.sorts.map((sort, index) => {
|
|
1711
|
+
const direction = sort.dir === 'asc' ? 'Ascending' : 'Descending';
|
|
1712
|
+
const priority = this.state.sorts.length > 1 ? ` (Priority: ${index + 1})` : '';
|
|
1713
|
+
return `${sort.prop}: ${direction}${priority}`;
|
|
1714
|
+
});
|
|
1715
|
+
}
|
|
1716
|
+
}
|
|
1717
|
+
|
|
1718
|
+
class WidthColumnsAlteration extends ColumnsAlteration {
|
|
1719
|
+
id;
|
|
1720
|
+
type = 'width';
|
|
1721
|
+
constructor(state, persistent) {
|
|
1722
|
+
super(state, persistent);
|
|
1723
|
+
if (!this._isValidState(state)) {
|
|
1724
|
+
throw Error(`Invalid state: ${JSON.stringify(state)}`);
|
|
1725
|
+
}
|
|
1726
|
+
this.id = `${this.type}--${state.columnProp}`;
|
|
1727
|
+
}
|
|
1728
|
+
apply(columns, datatable) {
|
|
1729
|
+
for (const col of columns) {
|
|
1730
|
+
const prop = getColumnProp(col);
|
|
1731
|
+
if (prop === this.state.columnProp) {
|
|
1732
|
+
col.canAutoResize = this.state.canAutoResize;
|
|
1733
|
+
if (notNullOrUndefined(this.state.width)) {
|
|
1734
|
+
col.width = this.state.width;
|
|
1735
|
+
}
|
|
1736
|
+
}
|
|
1737
|
+
}
|
|
1738
|
+
}
|
|
1739
|
+
toDisplayItem() {
|
|
1740
|
+
const summary = this._createWidthSummary();
|
|
1741
|
+
const details = this._createWidthDetails();
|
|
1742
|
+
return {
|
|
1743
|
+
id: this.id,
|
|
1744
|
+
type: this.type,
|
|
1745
|
+
summary,
|
|
1746
|
+
details,
|
|
1747
|
+
sortOrder: this._getColumnSortOrder()
|
|
1748
|
+
};
|
|
1749
|
+
}
|
|
1750
|
+
getDisplaySortOrder() {
|
|
1751
|
+
return this._getColumnSortOrder();
|
|
1752
|
+
}
|
|
1753
|
+
_isValidState(state) {
|
|
1754
|
+
// NOTE: Checking null or undefined, even though the type doesn't allow,
|
|
1755
|
+
// because the state may have been loaded from an invalid persistant
|
|
1756
|
+
// storage.
|
|
1757
|
+
// TODO: Remove when state validation/migration is implemented to happen
|
|
1758
|
+
// when retrieved from storage.
|
|
1759
|
+
if (!notNullOrUndefined(state.columnProp)) {
|
|
1760
|
+
return false;
|
|
1761
|
+
}
|
|
1762
|
+
// TODO: Remove when state validation/migration is implemented to happen
|
|
1763
|
+
// when retrieved from storage.
|
|
1764
|
+
if (!notNullOrUndefined(state.canAutoResize)) {
|
|
1765
|
+
return false;
|
|
1766
|
+
}
|
|
1767
|
+
return true;
|
|
1768
|
+
}
|
|
1769
|
+
_createWidthSummary() {
|
|
1770
|
+
const widthText = notNullOrUndefined(this.state.width) ? `${this.state.width}px` : 'auto';
|
|
1771
|
+
return `${this.state.columnProp}: ${widthText}`;
|
|
1772
|
+
}
|
|
1773
|
+
_createWidthDetails() {
|
|
1774
|
+
const details = [`Column: ${this.state.columnProp}`];
|
|
1775
|
+
if (notNullOrUndefined(this.state.width)) {
|
|
1776
|
+
details.push(`Width: ${this.state.width}px`);
|
|
1777
|
+
}
|
|
1778
|
+
details.push(`Auto-resize: ${this.state.canAutoResize ? 'enabled' : 'disabled'}`);
|
|
1779
|
+
return details;
|
|
1780
|
+
}
|
|
1781
|
+
_getColumnSortOrder() {
|
|
1782
|
+
// Sort by column name for consistent ordering
|
|
1783
|
+
return String(this.state.columnProp).charCodeAt(0);
|
|
1784
|
+
}
|
|
1785
|
+
}
|
|
1786
|
+
|
|
1787
|
+
class ColumnsAlterationsManagerService {
|
|
1788
|
+
_changesSubject = new Subject();
|
|
1789
|
+
_alterations = [];
|
|
1790
|
+
changes;
|
|
1791
|
+
constructor() {
|
|
1792
|
+
this.changes = this._changesSubject.asObservable();
|
|
1793
|
+
}
|
|
1794
|
+
get() {
|
|
1795
|
+
return [...this._alterations];
|
|
1796
|
+
}
|
|
1797
|
+
/**
|
|
1798
|
+
* Adds alterations to be applied to columns.
|
|
1799
|
+
*
|
|
1800
|
+
* If an alteration with the same `id` already exists then the existing
|
|
1801
|
+
* alteration will be removed and the new one added.
|
|
1802
|
+
*
|
|
1803
|
+
* NOTE: When there is a duplicate alteration the old alteration is removed,
|
|
1804
|
+
* instead of updated, to maintain the order alterations are applied.
|
|
1805
|
+
*/
|
|
1806
|
+
add(alterations, options) {
|
|
1807
|
+
// console.log('add', alterations)
|
|
1808
|
+
const removed = this.remove(alterations, { emitEvent: false });
|
|
1809
|
+
this._alterations = [...this._alterations, ...alterations];
|
|
1810
|
+
const changes = [
|
|
1811
|
+
...removed,
|
|
1812
|
+
...alterations.map(a => {
|
|
1813
|
+
const record = {
|
|
1814
|
+
type: 'added',
|
|
1815
|
+
alteration: a
|
|
1816
|
+
};
|
|
1817
|
+
return record;
|
|
1818
|
+
})
|
|
1819
|
+
];
|
|
1820
|
+
if (notNullOrUndefined(options?.emitEvent) && !options?.emitEvent) {
|
|
1821
|
+
return changes;
|
|
1822
|
+
}
|
|
1823
|
+
this._emitChanges(changes);
|
|
1824
|
+
return changes;
|
|
1825
|
+
}
|
|
1826
|
+
remove(alterations, options) {
|
|
1827
|
+
// console.log('remove', alterations)
|
|
1828
|
+
const removed = [];
|
|
1829
|
+
this._alterations = this._alterations.filter(x => {
|
|
1830
|
+
const found = alterations.findIndex(y => y.id === x.id) !== -1;
|
|
1831
|
+
if (found) {
|
|
1832
|
+
const eventRecord = {
|
|
1833
|
+
type: 'removed',
|
|
1834
|
+
alteration: x
|
|
1835
|
+
};
|
|
1836
|
+
removed.push(eventRecord);
|
|
1837
|
+
}
|
|
1838
|
+
return !found;
|
|
1839
|
+
});
|
|
1840
|
+
// console.log('removed', removed, this._alterations)
|
|
1841
|
+
if (notNullOrUndefined(options?.emitEvent) && !options?.emitEvent) {
|
|
1842
|
+
return removed;
|
|
1843
|
+
}
|
|
1844
|
+
this._emitChanges(removed);
|
|
1845
|
+
return removed;
|
|
1846
|
+
}
|
|
1847
|
+
apply(columns, datatable) {
|
|
1848
|
+
for (const a of this._alterations) {
|
|
1849
|
+
a.apply(columns, datatable);
|
|
1850
|
+
}
|
|
1851
|
+
this._removeNonPersistant();
|
|
1852
|
+
}
|
|
1853
|
+
// TODO: Make aware of original column order and properties. This is tricky,
|
|
1854
|
+
// because the datatable does not deal with immutable column/row records and
|
|
1855
|
+
// it is hard to know where changes happened. Just serializing the columns
|
|
1856
|
+
// input is not enough, because the columns input is called anytime the user
|
|
1857
|
+
// makes a column change. We can probably come up with a mostly accurate
|
|
1858
|
+
// implementation, such as "reset original columns cache when preferencesKey
|
|
1859
|
+
// changes" or "number of columns change". There are issues with those rules,
|
|
1860
|
+
// but with some testing/experimenting I think there should be a "good enough"
|
|
1861
|
+
// solution.
|
|
1862
|
+
//
|
|
1863
|
+
// TODO: Find a generic way to clear alterations. I would like to add an
|
|
1864
|
+
// `unapply` method to `ColumnsAlteration`, but since the alterations
|
|
1865
|
+
// themselves are not too generic it may be tricky.
|
|
1866
|
+
clear(options) {
|
|
1867
|
+
const changes = [];
|
|
1868
|
+
for (const colAlt of this._alterations) {
|
|
1869
|
+
switch (colAlt.type) {
|
|
1870
|
+
case 'hide-column': {
|
|
1871
|
+
const alteration = new HideColumnColumnsAlteration({ columnProp: colAlt.state.columnProp, hidden: false }, false);
|
|
1872
|
+
changes.push(...this.add([alteration]));
|
|
1873
|
+
break;
|
|
1874
|
+
}
|
|
1875
|
+
case 'order': {
|
|
1876
|
+
changes.push(...this.remove([colAlt]));
|
|
1877
|
+
break;
|
|
1878
|
+
}
|
|
1879
|
+
case 'sort': {
|
|
1880
|
+
const alteration = new SortColumnsAlteration({ sorts: [] }, false);
|
|
1881
|
+
changes.push(...this.add([alteration]));
|
|
1882
|
+
break;
|
|
1883
|
+
}
|
|
1884
|
+
case 'width': {
|
|
1885
|
+
const alteration = new WidthColumnsAlteration({ columnProp: colAlt.state.columnProp, canAutoResize: true }, false);
|
|
1886
|
+
changes.push(...this.add([alteration]));
|
|
1887
|
+
break;
|
|
1888
|
+
}
|
|
1889
|
+
}
|
|
1890
|
+
}
|
|
1891
|
+
if (notNullOrUndefined(options?.emitEvent) && !options?.emitEvent) {
|
|
1892
|
+
return changes;
|
|
1893
|
+
}
|
|
1894
|
+
this._emitChanges(changes);
|
|
1895
|
+
return changes;
|
|
1896
|
+
}
|
|
1897
|
+
_removeNonPersistant() {
|
|
1898
|
+
const nonPersistent = this._alterations.filter(x => !x.persistent);
|
|
1899
|
+
this.remove(nonPersistent, { emitEvent: false });
|
|
1900
|
+
}
|
|
1901
|
+
_emitChanges(changes) {
|
|
1902
|
+
if (changes.length === 0) {
|
|
1903
|
+
return;
|
|
1904
|
+
}
|
|
1905
|
+
const event = {
|
|
1906
|
+
changes
|
|
1907
|
+
};
|
|
1908
|
+
this._changesSubject.next(event);
|
|
1909
|
+
}
|
|
1910
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: ColumnsAlterationsManagerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1911
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: ColumnsAlterationsManagerService });
|
|
1912
|
+
}
|
|
1913
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: ColumnsAlterationsManagerService, decorators: [{
|
|
1914
|
+
type: Injectable
|
|
1915
|
+
}], ctorParameters: () => [] });
|
|
1916
|
+
|
|
1917
|
+
class FilterColumnsAlteration extends ColumnsAlteration {
|
|
1918
|
+
id;
|
|
1919
|
+
type = 'filter';
|
|
1920
|
+
constructor(state, persistent) {
|
|
1921
|
+
super(state, persistent);
|
|
1922
|
+
if (!this._isValidState(state)) {
|
|
1923
|
+
throw Error(`Invalid filter alteration state: ${JSON.stringify(state)}`);
|
|
1924
|
+
}
|
|
1925
|
+
this.id = `${this.type}--${state.columnProp}`;
|
|
1926
|
+
}
|
|
1927
|
+
apply(columns, datatable) {
|
|
1928
|
+
// Get the columns filters service from the datatable
|
|
1929
|
+
const columnsFiltersService = datatable._columnsFilters;
|
|
1930
|
+
if (!columnsFiltersService) {
|
|
1931
|
+
throw new Error('ColumnsFiltersService not found on datatable');
|
|
1932
|
+
}
|
|
1933
|
+
// Find the filter for this column
|
|
1934
|
+
const filter = columnsFiltersService.getColumnFilter(this.state.columnProp);
|
|
1935
|
+
if (!filter) {
|
|
1936
|
+
throw new Error(`Filter not found for column: ${this.state.columnProp}`);
|
|
1937
|
+
}
|
|
1938
|
+
// Apply the filter based on the filter type
|
|
1939
|
+
this._applyFilterValues(filter);
|
|
1940
|
+
}
|
|
1941
|
+
_applyFilterValues(filter) {
|
|
1942
|
+
const { operation, value, fromValue, toValue } = this.state;
|
|
1943
|
+
// Create the form values based on the operation type
|
|
1944
|
+
const formValues = {
|
|
1945
|
+
searchType: operation,
|
|
1946
|
+
searchText: null,
|
|
1947
|
+
fromText: null,
|
|
1948
|
+
toText: null
|
|
1949
|
+
};
|
|
1950
|
+
// Set values based on operation type
|
|
1951
|
+
if (this._isRangeOperation(operation)) {
|
|
1952
|
+
if (!notNullOrUndefined(fromValue) || !notNullOrUndefined(toValue)) {
|
|
1953
|
+
throw new Error(`Range operation '${operation}' requires both fromValue and toValue`);
|
|
1954
|
+
}
|
|
1955
|
+
formValues.fromText = String(fromValue);
|
|
1956
|
+
formValues.toText = String(toValue);
|
|
1957
|
+
}
|
|
1958
|
+
else if (this._isValueOperation(operation)) {
|
|
1959
|
+
if (!notNullOrUndefined(value)) {
|
|
1960
|
+
throw new Error(`Operation '${operation}' requires a value`);
|
|
1961
|
+
}
|
|
1962
|
+
formValues.searchText = String(value);
|
|
1963
|
+
}
|
|
1964
|
+
// For 'blank' and 'not-blank' operations, no additional values are needed
|
|
1965
|
+
// Apply the values to the filter form
|
|
1966
|
+
filter.form.patchValue(formValues);
|
|
1967
|
+
}
|
|
1968
|
+
toDisplayItem() {
|
|
1969
|
+
const summary = this._createFilterSummary();
|
|
1970
|
+
const details = this._createFilterDetails();
|
|
1971
|
+
return {
|
|
1972
|
+
id: this.id,
|
|
1973
|
+
type: this.type,
|
|
1974
|
+
summary,
|
|
1975
|
+
details,
|
|
1976
|
+
sortOrder: this._getColumnSortOrder()
|
|
1977
|
+
};
|
|
1978
|
+
}
|
|
1979
|
+
getDisplaySortOrder() {
|
|
1980
|
+
return this._getColumnSortOrder();
|
|
1981
|
+
}
|
|
1982
|
+
_isRangeOperation(operation) {
|
|
1983
|
+
return operation === 'between' || operation === 'not-between';
|
|
1984
|
+
}
|
|
1985
|
+
_isValueOperation(operation) {
|
|
1986
|
+
const valueOperations = [
|
|
1987
|
+
'contains', 'ncontains', 'eq', 'neq', // text
|
|
1988
|
+
'gt', 'lt', 'gte', 'lte' // numeric/date
|
|
1989
|
+
];
|
|
1990
|
+
return valueOperations.includes(operation);
|
|
1991
|
+
}
|
|
1992
|
+
_isValidState(state) {
|
|
1993
|
+
// Check required fields
|
|
1994
|
+
if (!notNullOrUndefined(state.columnProp)) {
|
|
1995
|
+
return false;
|
|
1996
|
+
}
|
|
1997
|
+
if (!notNullOrUndefined(state.filterType)) {
|
|
1998
|
+
return false;
|
|
1999
|
+
}
|
|
2000
|
+
if (!notNullOrUndefined(state.operation)) {
|
|
2001
|
+
return false;
|
|
2002
|
+
}
|
|
2003
|
+
// Validate operation is valid for filter type
|
|
2004
|
+
if (!this._isValidOperationForFilterType(state.operation, state.filterType)) {
|
|
2005
|
+
throw new Error(`Operation '${state.operation}' is not valid for filter type '${state.filterType}'`);
|
|
2006
|
+
}
|
|
2007
|
+
// Validate required values for operations
|
|
2008
|
+
if (this._isRangeOperation(state.operation)) {
|
|
2009
|
+
if (!notNullOrUndefined(state.fromValue) || !notNullOrUndefined(state.toValue)) {
|
|
2010
|
+
throw new Error(`Range operation '${state.operation}' requires both fromValue and toValue`);
|
|
2011
|
+
}
|
|
2012
|
+
}
|
|
2013
|
+
else if (this._isValueOperation(state.operation)) {
|
|
2014
|
+
if (!notNullOrUndefined(state.value)) {
|
|
2015
|
+
throw new Error(`Operation '${state.operation}' requires a value`);
|
|
2016
|
+
}
|
|
2017
|
+
}
|
|
2018
|
+
return true;
|
|
2019
|
+
}
|
|
2020
|
+
_isValidOperationForFilterType(operation, filterType) {
|
|
2021
|
+
const textOperations = ['contains', 'ncontains', 'eq', 'neq', 'blank', 'not-blank'];
|
|
2022
|
+
const numericOperations = ['gt', 'lt', 'eq', 'gte', 'lte', 'blank', 'not-blank', 'between', 'not-between'];
|
|
2023
|
+
const dateOperations = ['lt', 'lte', 'gt', 'gte', 'eq', 'blank', 'not-blank', 'between', 'not-between'];
|
|
2024
|
+
switch (filterType) {
|
|
2025
|
+
case 'text':
|
|
2026
|
+
return textOperations.includes(operation);
|
|
2027
|
+
case 'numeric':
|
|
2028
|
+
return numericOperations.includes(operation);
|
|
2029
|
+
case 'date':
|
|
2030
|
+
return dateOperations.includes(operation);
|
|
2031
|
+
default:
|
|
2032
|
+
return false;
|
|
2033
|
+
}
|
|
2034
|
+
}
|
|
2035
|
+
_createFilterSummary() {
|
|
2036
|
+
const { columnProp, operation, value, fromValue, toValue } = this.state;
|
|
2037
|
+
if (this._isRangeOperation(operation)) {
|
|
2038
|
+
return `${columnProp}: ${fromValue} to ${toValue}`;
|
|
2039
|
+
}
|
|
2040
|
+
else if (this._isValueOperation(operation)) {
|
|
2041
|
+
return `${columnProp} ${this._getOperationSymbol(operation)} ${value}`;
|
|
2042
|
+
}
|
|
2043
|
+
else {
|
|
2044
|
+
// blank or not-blank operations
|
|
2045
|
+
const operationText = operation === 'blank' ? 'is empty' : 'is not empty';
|
|
2046
|
+
return `${columnProp} ${operationText}`;
|
|
2047
|
+
}
|
|
2048
|
+
}
|
|
2049
|
+
_createFilterDetails() {
|
|
2050
|
+
const { columnProp, filterType, operation, value, fromValue, toValue } = this.state;
|
|
2051
|
+
const details = [
|
|
2052
|
+
`Column: ${columnProp}`,
|
|
2053
|
+
`Type: ${filterType}`,
|
|
2054
|
+
`Operation: ${this._getOperationDisplayName(operation)}`
|
|
2055
|
+
];
|
|
2056
|
+
if (this._isRangeOperation(operation)) {
|
|
2057
|
+
details.push(`From: ${fromValue}`);
|
|
2058
|
+
details.push(`To: ${toValue}`);
|
|
2059
|
+
}
|
|
2060
|
+
else if (this._isValueOperation(operation)) {
|
|
2061
|
+
details.push(`Value: ${value}`);
|
|
2062
|
+
}
|
|
2063
|
+
return details;
|
|
2064
|
+
}
|
|
2065
|
+
_getOperationSymbol(operation) {
|
|
2066
|
+
const symbols = {
|
|
2067
|
+
'contains': 'contains',
|
|
2068
|
+
'ncontains': 'does not contain',
|
|
2069
|
+
'eq': '=',
|
|
2070
|
+
'neq': '≠',
|
|
2071
|
+
'gt': '>',
|
|
2072
|
+
'lt': '<',
|
|
2073
|
+
'gte': '≥',
|
|
2074
|
+
'lte': '≤'
|
|
2075
|
+
};
|
|
2076
|
+
return symbols[operation] || operation;
|
|
2077
|
+
}
|
|
2078
|
+
_getOperationDisplayName(operation) {
|
|
2079
|
+
const names = {
|
|
2080
|
+
'contains': 'Contains',
|
|
2081
|
+
'ncontains': 'Does not contain',
|
|
2082
|
+
'eq': 'Equals',
|
|
2083
|
+
'neq': 'Not equals',
|
|
2084
|
+
'gt': 'Greater than',
|
|
2085
|
+
'lt': 'Less than',
|
|
2086
|
+
'gte': 'Greater than or equal',
|
|
2087
|
+
'lte': 'Less than or equal',
|
|
2088
|
+
'blank': 'Is blank',
|
|
2089
|
+
'not-blank': 'Is not blank',
|
|
2090
|
+
'between': 'Between',
|
|
2091
|
+
'not-between': 'Not between'
|
|
2092
|
+
};
|
|
2093
|
+
return names[operation] || operation;
|
|
2094
|
+
}
|
|
2095
|
+
_getColumnSortOrder() {
|
|
2096
|
+
// Sort by column name for consistent ordering
|
|
2097
|
+
return String(this.state.columnProp).charCodeAt(0);
|
|
2098
|
+
}
|
|
2099
|
+
}
|
|
2100
|
+
|
|
2101
|
+
/**
|
|
2102
|
+
* Strings used for columns created and managed
|
|
2103
|
+
* by the datatable.
|
|
2104
|
+
*/
|
|
2105
|
+
const INTERNAL_COLUMN_PROPS = [
|
|
2106
|
+
ACTION_MENU_COLUMN_PROP,
|
|
2107
|
+
CHECKBOX_COLUMN_PROP
|
|
2108
|
+
];
|
|
2109
|
+
function isInternalColumn(column) {
|
|
2110
|
+
return INTERNAL_COLUMN_PROPS.findIndex(p => getColumnProp(column) === p) !== -1;
|
|
2111
|
+
}
|
|
2112
|
+
|
|
2113
|
+
class OrderColumnsAlteration extends ColumnsAlteration {
|
|
2114
|
+
id;
|
|
2115
|
+
type = 'order';
|
|
2116
|
+
constructor(state, persistent) {
|
|
2117
|
+
super(state, persistent);
|
|
2118
|
+
if (!this._isValidState(state)) {
|
|
2119
|
+
throw Error(`Invalid state: ${JSON.stringify(state)}`);
|
|
2120
|
+
}
|
|
2121
|
+
this.id = `${this.type}`;
|
|
2122
|
+
}
|
|
2123
|
+
apply(columns, datatable) {
|
|
2124
|
+
if (this.state.columns.length === 0) {
|
|
2125
|
+
return;
|
|
2126
|
+
}
|
|
2127
|
+
const stateColumns = this._stateColumns();
|
|
2128
|
+
// The internal columns are not intended for a user to be able to move them.
|
|
2129
|
+
// Store the internal columns current index, so it can be moved back ofter
|
|
2130
|
+
// sorting. This may not be the best way to do this, but it is easier than
|
|
2131
|
+
// making a sort that avoids them.
|
|
2132
|
+
//
|
|
2133
|
+
// NOTE: If we add an internal column that can be moved then this will need
|
|
2134
|
+
// to be changed.
|
|
2135
|
+
const internalColumns = columns
|
|
2136
|
+
.map((column, index) => ({ column, index }))
|
|
2137
|
+
.filter(x => isInternalColumn(x.column));
|
|
2138
|
+
for (const c of stateColumns) {
|
|
2139
|
+
const currentIndex = columns.findIndex(x => getColumnProp(x) === c.columnProp);
|
|
2140
|
+
if (currentIndex === c.index || currentIndex === -1) {
|
|
2141
|
+
// Skip if already at correct index.
|
|
2142
|
+
// Skip columns not found. It may be a column that was removed from the
|
|
2143
|
+
// table, but we still want to handle the other columns.
|
|
2144
|
+
continue;
|
|
2145
|
+
}
|
|
2146
|
+
arrayMoveMutable(columns, currentIndex, c.index);
|
|
2147
|
+
}
|
|
2148
|
+
for (const c of internalColumns) {
|
|
2149
|
+
const currentIndex = columns.findIndex(col => col === c.column);
|
|
2150
|
+
if (currentIndex !== -1) {
|
|
2151
|
+
arrayMoveMutable(columns, currentIndex, c.index);
|
|
2152
|
+
}
|
|
2153
|
+
else {
|
|
2154
|
+
if (isDevMode()) {
|
|
2155
|
+
// eslint-disable-next-line no-console
|
|
2156
|
+
console.warn(`Internal column could not be found after sorting. Was it lost during the sorting?`);
|
|
2157
|
+
}
|
|
2158
|
+
}
|
|
2159
|
+
}
|
|
2160
|
+
}
|
|
2161
|
+
toDisplayItem() {
|
|
2162
|
+
const summary = this._createOrderSummary();
|
|
2163
|
+
const details = this._createOrderDetails();
|
|
2164
|
+
return {
|
|
2165
|
+
id: this.id,
|
|
2166
|
+
type: this.type,
|
|
2167
|
+
summary,
|
|
2168
|
+
details,
|
|
2169
|
+
sortOrder: 0
|
|
2170
|
+
};
|
|
2171
|
+
}
|
|
2172
|
+
getDisplaySortOrder() {
|
|
2173
|
+
return 0; // Only one order alteration per table
|
|
2174
|
+
}
|
|
2175
|
+
_isValidState(state) {
|
|
2176
|
+
// NOTE: Checking null or undefined, even though the type doesn't allow,
|
|
2177
|
+
// because the state may have been loaded from an invalid persistant
|
|
2178
|
+
// storage.
|
|
2179
|
+
// TODO: Remove when state validation/migration is implemented to happen
|
|
2180
|
+
// when retrieved from storage.
|
|
2181
|
+
if (!notNullOrUndefined(state.columns)) {
|
|
2182
|
+
return false;
|
|
2183
|
+
}
|
|
2184
|
+
// NOTE: Didn't iterate each column record, because it is probably better to
|
|
2185
|
+
// just skip to invalid column records. It does prevent being able to
|
|
2186
|
+
// validate the whole state though.
|
|
2187
|
+
return true;
|
|
2188
|
+
}
|
|
2189
|
+
_isColumnOrderRecordValid(columnOrder) {
|
|
2190
|
+
return notNullOrUndefined(columnOrder.columnProp) && notNullOrUndefined(columnOrder.index);
|
|
2191
|
+
}
|
|
2192
|
+
_stateColumns() {
|
|
2193
|
+
return this.state.columns.filter(c => {
|
|
2194
|
+
if (!this._isColumnOrderRecordValid(c)) {
|
|
2195
|
+
if (isDevMode()) {
|
|
2196
|
+
// eslint-disable-next-line no-console
|
|
2197
|
+
console.warn('Invalid column order record', c);
|
|
2198
|
+
}
|
|
2199
|
+
return false;
|
|
2200
|
+
}
|
|
2201
|
+
return true;
|
|
2202
|
+
}).sort((a, b) => a.index === b.index ? 0 : a.index > b.index ? 1 : -1);
|
|
2203
|
+
}
|
|
2204
|
+
_createOrderSummary() {
|
|
2205
|
+
if (this.state.columns.length === 0) {
|
|
2206
|
+
return 'Default column order';
|
|
2207
|
+
}
|
|
2208
|
+
const reorderedCount = this.state.columns.length;
|
|
2209
|
+
return `${reorderedCount} column${reorderedCount === 1 ? '' : 's'} reordered`;
|
|
2210
|
+
}
|
|
2211
|
+
_createOrderDetails() {
|
|
2212
|
+
if (this.state.columns.length === 0) {
|
|
2213
|
+
return ['Columns are in their default order'];
|
|
2214
|
+
}
|
|
2215
|
+
const sortedColumns = this._stateColumns();
|
|
2216
|
+
return sortedColumns.map(col => `${col.columnProp}: Position ${col.index + 1}`);
|
|
2217
|
+
}
|
|
2218
|
+
}
|
|
2219
|
+
|
|
2220
|
+
function mapColumnsAlterationsStates(states) {
|
|
2221
|
+
const alterations = [];
|
|
2222
|
+
for (const state of states) {
|
|
2223
|
+
try {
|
|
2224
|
+
switch (state.type) {
|
|
2225
|
+
case 'filter':
|
|
2226
|
+
alterations.push(new FilterColumnsAlteration(state.state, true));
|
|
2227
|
+
break;
|
|
2228
|
+
case 'hide-column':
|
|
2229
|
+
alterations.push(new HideColumnColumnsAlteration(state.state, true));
|
|
2230
|
+
break;
|
|
2231
|
+
case 'width':
|
|
2232
|
+
alterations.push(new WidthColumnsAlteration(state.state, true));
|
|
2233
|
+
break;
|
|
2234
|
+
case 'order':
|
|
2235
|
+
alterations.push(new OrderColumnsAlteration(state.state, true));
|
|
2236
|
+
break;
|
|
2237
|
+
case 'sort':
|
|
2238
|
+
alterations.push(new SortColumnsAlteration(state.state, true));
|
|
2239
|
+
break;
|
|
2240
|
+
default: {
|
|
2241
|
+
if (isDevMode()) {
|
|
2242
|
+
// eslint-disable-next-line no-console
|
|
2243
|
+
console.warn('Unrecognized ColumnsAlteration state', state);
|
|
2244
|
+
}
|
|
2245
|
+
}
|
|
2246
|
+
}
|
|
2247
|
+
}
|
|
2248
|
+
catch (e) {
|
|
2249
|
+
if (isDevMode()) {
|
|
2250
|
+
// eslint-disable-next-line no-console
|
|
2251
|
+
console.warn('Unable to map ColumnsAlteration state', state);
|
|
2252
|
+
// eslint-disable-next-line no-console
|
|
2253
|
+
console.warn(e);
|
|
2254
|
+
}
|
|
2255
|
+
}
|
|
2256
|
+
}
|
|
2257
|
+
return alterations;
|
|
2258
|
+
}
|
|
2259
|
+
|
|
2260
|
+
const ActionItemColumnPosition = ['frozenLeft', 'frozenRight', 'staticLeft', 'staticRight'];
|
|
2261
|
+
function isActionItemColumnPosition(input) {
|
|
2262
|
+
return ActionItemColumnPosition.indexOf(input) != -1;
|
|
2263
|
+
}
|
|
2264
|
+
|
|
2265
|
+
const THESEAM_DATATABLE_CONFIG = new InjectionToken('TheSeamDatatableConfig');
|
|
2266
|
+
|
|
2267
|
+
class DatatableColumnFilterTplDirective {
|
|
2268
|
+
template;
|
|
2269
|
+
constructor(template) {
|
|
2270
|
+
this.template = template;
|
|
2271
|
+
}
|
|
2272
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnFilterTplDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
2273
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: DatatableColumnFilterTplDirective, isStandalone: false, selector: "[seamDatatableColumnFilterTpl]", ngImport: i0 });
|
|
2274
|
+
}
|
|
2275
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnFilterTplDirective, decorators: [{
|
|
2276
|
+
type: Directive,
|
|
2277
|
+
args: [{
|
|
2278
|
+
selector: '[seamDatatableColumnFilterTpl]',
|
|
2279
|
+
standalone: false
|
|
2280
|
+
}]
|
|
2281
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef }] });
|
|
2282
|
+
|
|
2283
|
+
class TheSeamDatatableColumnFilterDirective {
|
|
2284
|
+
filterName;
|
|
2285
|
+
// eslint-disable-next-line @angular-eslint/no-input-rename
|
|
2286
|
+
_templateInput;
|
|
2287
|
+
_templateQuery;
|
|
2288
|
+
get template() {
|
|
2289
|
+
return this._templateInput || this._templateQuery;
|
|
2290
|
+
}
|
|
2291
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDatatableColumnFilterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2292
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: TheSeamDatatableColumnFilterDirective, isStandalone: false, selector: "seam-datatable-column-filter", inputs: { filterName: "filterName", _templateInput: ["template", "_templateInput"] }, queries: [{ propertyName: "_templateQuery", first: true, predicate: DatatableColumnFilterTplDirective, descendants: true, read: TemplateRef, static: true }], ngImport: i0 });
|
|
2293
|
+
}
|
|
2294
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDatatableColumnFilterDirective, decorators: [{
|
|
2295
|
+
type: Directive,
|
|
2296
|
+
args: [{
|
|
2297
|
+
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
2298
|
+
selector: 'seam-datatable-column-filter',
|
|
2299
|
+
standalone: false
|
|
2300
|
+
}]
|
|
2301
|
+
}], propDecorators: { filterName: [{
|
|
2302
|
+
type: Input
|
|
2303
|
+
}], _templateInput: [{
|
|
2304
|
+
type: Input,
|
|
2305
|
+
args: ['template']
|
|
2306
|
+
}], _templateQuery: [{
|
|
2307
|
+
type: ContentChild,
|
|
2308
|
+
args: [DatatableColumnFilterTplDirective, { read: TemplateRef, static: true }]
|
|
2309
|
+
}] } });
|
|
2310
|
+
|
|
2311
|
+
const CURRENT_DATATABLE_PREFERENCES_VERSION = 2;
|
|
2312
|
+
const EMPTY_DATATABLE_PREFERENCES = {
|
|
2313
|
+
version: 2,
|
|
2314
|
+
alterations: []
|
|
2315
|
+
};
|
|
2316
|
+
|
|
2317
|
+
const THESEAM_DATATABLE_PREFERENCES_ACCESSOR = new InjectionToken('TheSeamDatatablePreferencesAccessor');
|
|
2318
|
+
|
|
2319
|
+
class DatatablePreferencesService {
|
|
2320
|
+
_preferencesManager;
|
|
2321
|
+
_prefsAccessor;
|
|
2322
|
+
// TODO: Remove the need for this internal pending flag. I only kept it for
|
|
2323
|
+
// backwards compatibility, until better tests are added to make sure if isn't
|
|
2324
|
+
// neccessary anymore.
|
|
2325
|
+
/**
|
|
2326
|
+
* Used to prevent multiple updates from happening at the same time, but it is not per key.
|
|
2327
|
+
*/
|
|
2328
|
+
_pending = false;
|
|
2329
|
+
constructor(_preferencesManager, _prefsAccessor) {
|
|
2330
|
+
this._preferencesManager = _preferencesManager;
|
|
2331
|
+
this._prefsAccessor = _prefsAccessor;
|
|
2332
|
+
}
|
|
2333
|
+
isPending(preferenceKey) {
|
|
2334
|
+
return this._pending || this._preferencesManager.isPending(preferenceKey);
|
|
2335
|
+
}
|
|
2336
|
+
isLoaded(preferenceKey) {
|
|
2337
|
+
if (this._pending) {
|
|
2338
|
+
return false;
|
|
2339
|
+
}
|
|
2340
|
+
return this._preferencesManager.isLoaded(preferenceKey);
|
|
2341
|
+
}
|
|
2342
|
+
preferences(preferenceKey) {
|
|
2343
|
+
if (!this._prefsAccessor) {
|
|
2344
|
+
return of(JSON.parse(JSON.stringify(EMPTY_DATATABLE_PREFERENCES)));
|
|
2345
|
+
}
|
|
2346
|
+
return this._preferencesManager.preferences(preferenceKey, this._prefsAccessor, EMPTY_DATATABLE_PREFERENCES).pipe(map(prefs => {
|
|
2347
|
+
if (this._isValidDatatablePreferences(prefs)) {
|
|
2348
|
+
return prefs;
|
|
2349
|
+
}
|
|
2350
|
+
throw Error(`Preferences for key '${preferenceKey}' is not a valid datatable preferences.`);
|
|
2351
|
+
}));
|
|
2352
|
+
}
|
|
2353
|
+
refresh(preferenceKey) {
|
|
2354
|
+
this._preferencesManager.refresh(preferenceKey);
|
|
2355
|
+
}
|
|
2356
|
+
setAlterations(preferenceKey, alterations) {
|
|
2357
|
+
if (!this._prefsAccessor) {
|
|
2358
|
+
return;
|
|
2359
|
+
}
|
|
2360
|
+
this._pending = true;
|
|
2361
|
+
this.preferences(preferenceKey).pipe(map(prefs => {
|
|
2362
|
+
// Making the preferences immutable may not be necessary, but for now
|
|
2363
|
+
// this obj->str->obj will work as a naive clone.
|
|
2364
|
+
// const columns = JSON.parse(JSON.stringify(prefs.columns || []))
|
|
2365
|
+
// const _colPref = columns.find((c: any) => c.prop === column.prop)
|
|
2366
|
+
// // console.log('has', _colPref)
|
|
2367
|
+
// if (_colPref) {
|
|
2368
|
+
// // console.log('hasProperty(column, "width"))', hasProperty(column, 'width'))
|
|
2369
|
+
// if (hasProperty(column, 'width')) { _colPref.width = column.width }
|
|
2370
|
+
// if (hasProperty(column, 'canAutoResize')) { _colPref.canAutoResize = column.canAutoResize }
|
|
2371
|
+
// if (hasProperty(column, 'hidden')) { _colPref.hidden = column.hidden }
|
|
2372
|
+
// } else {
|
|
2373
|
+
// columns.push({ ...column })
|
|
2374
|
+
// }
|
|
2375
|
+
// const newPrefs: TheSeamDatatablePreferences = { ...prefs, columns }
|
|
2376
|
+
// return newPrefs
|
|
2377
|
+
const newPrefs = {
|
|
2378
|
+
...EMPTY_DATATABLE_PREFERENCES,
|
|
2379
|
+
alterations
|
|
2380
|
+
};
|
|
2381
|
+
this._pending = false;
|
|
2382
|
+
return newPrefs;
|
|
2383
|
+
}),
|
|
2384
|
+
// tap(v => console.log('newPrefs', v)),
|
|
2385
|
+
take(1), switchMap(newPrefs => this._prefsAccessor
|
|
2386
|
+
? this._prefsAccessor.update(preferenceKey, JSON.stringify(newPrefs))
|
|
2387
|
+
: of(newPrefs)), tap(() => this.refresh(preferenceKey)))
|
|
2388
|
+
.subscribe();
|
|
2389
|
+
}
|
|
2390
|
+
_isValidDatatablePreferences(prefs) {
|
|
2391
|
+
return prefs.version === CURRENT_DATATABLE_PREFERENCES_VERSION;
|
|
2392
|
+
}
|
|
2393
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatablePreferencesService, deps: [{ token: i1$1.TheSeamPreferencesManagerService }, { token: THESEAM_DATATABLE_PREFERENCES_ACCESSOR, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2394
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatablePreferencesService, providedIn: 'root' });
|
|
2395
|
+
}
|
|
2396
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatablePreferencesService, decorators: [{
|
|
2397
|
+
type: Injectable,
|
|
2398
|
+
args: [{
|
|
2399
|
+
providedIn: 'root'
|
|
2400
|
+
}]
|
|
2401
|
+
}], ctorParameters: () => [{ type: i1$1.TheSeamPreferencesManagerService }, { type: undefined, decorators: [{
|
|
2402
|
+
type: Optional
|
|
2403
|
+
}, {
|
|
2404
|
+
type: Inject,
|
|
2405
|
+
args: [THESEAM_DATATABLE_PREFERENCES_ACCESSOR]
|
|
2406
|
+
}] }] });
|
|
2407
|
+
|
|
2408
|
+
class DatatableColumnFilterSearchTextComponent {
|
|
2409
|
+
searchTypes = [
|
|
2410
|
+
{ label: 'Contains', value: 'contains' },
|
|
2411
|
+
{ label: 'Does not contain', value: 'ncontains' },
|
|
2412
|
+
{ label: 'Matches exactly', value: 'eq' },
|
|
2413
|
+
{ label: 'Does not match exactly', value: 'neq' },
|
|
2414
|
+
{ label: 'Is blank', value: 'blank' },
|
|
2415
|
+
{ label: 'Is not blank', value: 'not-blank' },
|
|
2416
|
+
];
|
|
2417
|
+
filterForm;
|
|
2418
|
+
showTextbox$;
|
|
2419
|
+
ngOnInit() {
|
|
2420
|
+
this.showTextbox$ = this.filterForm?.controls.searchType.valueChanges.pipe(startWith$1(this.filterForm?.controls.searchType.value), map$1(value => THESEAM_COLUMNS_DATA_FILTER_TEXT_TEXT_SEARCH_TYPES.includes(value || '')));
|
|
2421
|
+
}
|
|
2422
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnFilterSearchTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2423
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableColumnFilterSearchTextComponent, isStandalone: false, selector: "seam-datatable-column-filter-search-text", inputs: { filterForm: "filterForm" }, ngImport: i0, template: "<ng-container *ngIf=\"filterForm\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <ng-select\n seamInput\n seamAutoFocus\n formControlName=\"searchType\"\n [clearable]=\"false\"\n placeholder=\"Select search type\"\n bindValue=\"value\"\n [items]=\"searchTypes\"></ng-select>\n </seam-form-field>\n <ng-container *ngIf=\"showTextbox$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput formControlName=\"searchText\" placeholder=\"Type to search\" seamAutoFocus>\n </seam-form-field>\n <!-- TODO: implement this? Does not work with current Seam GraphQL/SQL Server implementation. -->\n <!-- <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <seam-checkbox seamInput formControlName=\"caseSensitive\">Case Sensitive</seam-checkbox>\n </seam-form-field> -->\n </ng-container>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.TheSeamAutoFocusDirective, selector: "[seamAutoFocus]", inputs: ["seamAutoFocus"], exportAs: ["seamAutoFocus"] }, { kind: "directive", type: i2$2.TheSeamNgSelectExtraDirective, selector: "ng-select", exportAs: ["seamNgSelectExtra"] }, { kind: "component", type: i3.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput], seam-rich-text[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5$1.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }], viewProviders: [
|
|
2424
|
+
{
|
|
2425
|
+
provide: ControlContainer,
|
|
2426
|
+
useExisting: FormGroupDirective
|
|
2427
|
+
}
|
|
2428
|
+
] });
|
|
2429
|
+
}
|
|
2430
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnFilterSearchTextComponent, decorators: [{
|
|
2431
|
+
type: Component,
|
|
2432
|
+
args: [{ selector: 'seam-datatable-column-filter-search-text', viewProviders: [
|
|
2433
|
+
{
|
|
2434
|
+
provide: ControlContainer,
|
|
2435
|
+
useExisting: FormGroupDirective
|
|
2436
|
+
}
|
|
2437
|
+
], standalone: false, template: "<ng-container *ngIf=\"filterForm\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <ng-select\n seamInput\n seamAutoFocus\n formControlName=\"searchType\"\n [clearable]=\"false\"\n placeholder=\"Select search type\"\n bindValue=\"value\"\n [items]=\"searchTypes\"></ng-select>\n </seam-form-field>\n <ng-container *ngIf=\"showTextbox$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput formControlName=\"searchText\" placeholder=\"Type to search\" seamAutoFocus>\n </seam-form-field>\n <!-- TODO: implement this? Does not work with current Seam GraphQL/SQL Server implementation. -->\n <!-- <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <seam-checkbox seamInput formControlName=\"caseSensitive\">Case Sensitive</seam-checkbox>\n </seam-form-field> -->\n </ng-container>\n</ng-container>\n" }]
|
|
2438
|
+
}], propDecorators: { filterForm: [{
|
|
2439
|
+
type: Input
|
|
2440
|
+
}] } });
|
|
2441
|
+
|
|
2442
|
+
class DatatableColumnFilterSearchNumericComponent {
|
|
2443
|
+
searchTypes = [
|
|
2444
|
+
{ label: 'Less than (<)', value: 'lt' },
|
|
2445
|
+
{ label: 'Less than or equal to (<=)', value: 'lte' },
|
|
2446
|
+
{ label: 'Equal to (=)', value: 'eq' },
|
|
2447
|
+
{ label: 'Greater than (>)', value: 'gt' },
|
|
2448
|
+
{ label: 'Greater than or equal to (>=)', value: 'gte' },
|
|
2449
|
+
{ label: 'Between', value: 'between' },
|
|
2450
|
+
{ label: 'Not between', value: 'not-between' },
|
|
2451
|
+
{ label: 'Blank', value: 'blank' },
|
|
2452
|
+
{ label: 'Not blank', value: 'not-blank' },
|
|
2453
|
+
];
|
|
2454
|
+
filterForm;
|
|
2455
|
+
showSearchInput$;
|
|
2456
|
+
showRangeInputs$;
|
|
2457
|
+
ngOnInit() {
|
|
2458
|
+
this.showSearchInput$ = this.filterForm?.controls.searchType.valueChanges.pipe(startWith$1(this.filterForm?.controls.searchType.value), map$1(searchType => THESEAM_COLUMNS_DATA_FILTER_NUMERIC_TEXT_SEARCH_TYPES.includes(searchType || '')));
|
|
2459
|
+
this.showRangeInputs$ = this.filterForm?.controls.searchType.valueChanges.pipe(startWith$1(this.filterForm?.controls.searchType.value), map$1(searchType => THESEAM_COLUMNS_DATA_FILTER_NUMERIC_RANGE_SEARCH_TYPES.includes(searchType || '')));
|
|
2460
|
+
}
|
|
2461
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnFilterSearchNumericComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2462
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableColumnFilterSearchNumericComponent, isStandalone: false, selector: "seam-datatable-column-filter-search-numeric", inputs: { filterForm: "filterForm" }, ngImport: i0, template: "<ng-container *ngIf=\"filterForm\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <ng-select\n seamInput\n formControlName=\"searchType\"\n [clearable]=\"false\"\n placeholder=\"Select search type\"\n bindValue=\"value\"\n [items]=\"searchTypes\"></ng-select>\n </seam-form-field>\n\n <ng-container *ngIf=\"showSearchInput$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput formControlName=\"searchText\" placeholder=\"Type to search\" seamAutoFocus>\n </seam-form-field>\n </ng-container>\n\n <ng-container *ngIf=\"showRangeInputs$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput formControlName=\"fromText\" placeholder=\"Range Start\" seamAutoFocus>\n </seam-form-field>\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput formControlName=\"toText\" placeholder=\"Range End\">\n </seam-form-field>\n </ng-container>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.TheSeamAutoFocusDirective, selector: "[seamAutoFocus]", inputs: ["seamAutoFocus"], exportAs: ["seamAutoFocus"] }, { kind: "directive", type: i2$2.TheSeamNgSelectExtraDirective, selector: "ng-select", exportAs: ["seamNgSelectExtra"] }, { kind: "component", type: i3.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput], seam-rich-text[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5$1.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }], viewProviders: [
|
|
2463
|
+
{
|
|
2464
|
+
provide: ControlContainer,
|
|
2465
|
+
useExisting: FormGroupDirective
|
|
2466
|
+
}
|
|
2467
|
+
] });
|
|
2468
|
+
}
|
|
2469
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnFilterSearchNumericComponent, decorators: [{
|
|
2470
|
+
type: Component,
|
|
2471
|
+
args: [{ selector: 'seam-datatable-column-filter-search-numeric', viewProviders: [
|
|
2472
|
+
{
|
|
2473
|
+
provide: ControlContainer,
|
|
2474
|
+
useExisting: FormGroupDirective
|
|
2475
|
+
}
|
|
2476
|
+
], standalone: false, template: "<ng-container *ngIf=\"filterForm\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <ng-select\n seamInput\n formControlName=\"searchType\"\n [clearable]=\"false\"\n placeholder=\"Select search type\"\n bindValue=\"value\"\n [items]=\"searchTypes\"></ng-select>\n </seam-form-field>\n\n <ng-container *ngIf=\"showSearchInput$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput formControlName=\"searchText\" placeholder=\"Type to search\" seamAutoFocus>\n </seam-form-field>\n </ng-container>\n\n <ng-container *ngIf=\"showRangeInputs$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput formControlName=\"fromText\" placeholder=\"Range Start\" seamAutoFocus>\n </seam-form-field>\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput formControlName=\"toText\" placeholder=\"Range End\">\n </seam-form-field>\n </ng-container>\n</ng-container>\n" }]
|
|
2477
|
+
}], propDecorators: { filterForm: [{
|
|
2478
|
+
type: Input
|
|
2479
|
+
}] } });
|
|
2480
|
+
|
|
2481
|
+
class DatatableColumnFilterSearchDateComponent {
|
|
2482
|
+
searchTypes = [
|
|
2483
|
+
{ label: 'Before', value: 'lt' },
|
|
2484
|
+
{ label: 'Before or on', value: 'lte' },
|
|
2485
|
+
{ label: 'On', value: 'eq' },
|
|
2486
|
+
{ label: 'After', value: 'gt' },
|
|
2487
|
+
{ label: 'After or on', value: 'gte' },
|
|
2488
|
+
{ label: 'Between', value: 'between' },
|
|
2489
|
+
{ label: 'Not between', value: 'not-between' },
|
|
2490
|
+
{ label: 'Blank', value: 'blank' },
|
|
2491
|
+
{ label: 'Not blank', value: 'not-blank' },
|
|
2492
|
+
];
|
|
2493
|
+
options;
|
|
2494
|
+
filterForm;
|
|
2495
|
+
dateFormat;
|
|
2496
|
+
showSearchInput$;
|
|
2497
|
+
showRangeInputs$;
|
|
2498
|
+
ngOnInit() {
|
|
2499
|
+
if (notNullOrUndefined(this.options?.dateType)) {
|
|
2500
|
+
this.dateFormat = this.options?.dateType;
|
|
2501
|
+
}
|
|
2502
|
+
this.showSearchInput$ = this.filterForm?.controls.searchType.valueChanges.pipe(startWith$1(this.filterForm?.controls.searchType.value), map$1(searchType => THESEAM_COLUMNS_DATA_FILTER_DATE_TEXT_SEARCH_TYPES.includes(searchType || '')));
|
|
2503
|
+
this.showRangeInputs$ = this.filterForm?.controls.searchType.valueChanges.pipe(startWith$1(this.filterForm?.controls.searchType.value), map$1(searchType => THESEAM_COLUMNS_DATA_FILTER_DATE_RANGE_SEARCH_TYPES.includes(searchType || '')));
|
|
2504
|
+
}
|
|
2505
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnFilterSearchDateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2506
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableColumnFilterSearchDateComponent, isStandalone: false, selector: "seam-datatable-column-filter-search-date", inputs: { options: "options", filterForm: "filterForm" }, ngImport: i0, template: "<ng-container *ngIf=\"filterForm\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <ng-select\n seamInput\n formControlName=\"searchType\"\n [clearable]=\"false\"\n placeholder=\"Select search type\"\n bindValue=\"value\"\n [items]=\"searchTypes\"></ng-select>\n </seam-form-field>\n\n <ng-container *ngIf=\"showSearchInput$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput [type]=\"dateFormat\" formControlName=\"searchText\" placeholder=\"Type to search\" seamAutoFocus>\n </seam-form-field>\n </ng-container>\n\n <ng-container *ngIf=\"showRangeInputs$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput [type]=\"dateFormat\" formControlName=\"fromText\" placeholder=\"Range Start\" seamAutoFocus>\n </seam-form-field>\n\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput [type]=\"dateFormat\" formControlName=\"toText\" placeholder=\"Range End\">\n </seam-form-field>\n </ng-container>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.TheSeamAutoFocusDirective, selector: "[seamAutoFocus]", inputs: ["seamAutoFocus"], exportAs: ["seamAutoFocus"] }, { kind: "directive", type: i2$2.TheSeamNgSelectExtraDirective, selector: "ng-select", exportAs: ["seamNgSelectExtra"] }, { kind: "component", type: i3.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput], seam-rich-text[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5$1.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }], viewProviders: [
|
|
2507
|
+
{
|
|
2508
|
+
provide: ControlContainer,
|
|
2509
|
+
useExisting: FormGroupDirective
|
|
2510
|
+
}
|
|
2511
|
+
] });
|
|
2512
|
+
}
|
|
2513
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnFilterSearchDateComponent, decorators: [{
|
|
2514
|
+
type: Component,
|
|
2515
|
+
args: [{ selector: 'seam-datatable-column-filter-search-date', viewProviders: [
|
|
2516
|
+
{
|
|
2517
|
+
provide: ControlContainer,
|
|
2518
|
+
useExisting: FormGroupDirective
|
|
2519
|
+
}
|
|
2520
|
+
], standalone: false, template: "<ng-container *ngIf=\"filterForm\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <ng-select\n seamInput\n formControlName=\"searchType\"\n [clearable]=\"false\"\n placeholder=\"Select search type\"\n bindValue=\"value\"\n [items]=\"searchTypes\"></ng-select>\n </seam-form-field>\n\n <ng-container *ngIf=\"showSearchInput$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput [type]=\"dateFormat\" formControlName=\"searchText\" placeholder=\"Type to search\" seamAutoFocus>\n </seam-form-field>\n </ng-container>\n\n <ng-container *ngIf=\"showRangeInputs$ | async\">\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput [type]=\"dateFormat\" formControlName=\"fromText\" placeholder=\"Range Start\" seamAutoFocus>\n </seam-form-field>\n\n <seam-form-field [numPaddingErrors]=\"0\" class=\"mb-2\">\n <input seamInput [type]=\"dateFormat\" formControlName=\"toText\" placeholder=\"Range End\">\n </seam-form-field>\n </ng-container>\n</ng-container>\n" }]
|
|
2521
|
+
}], propDecorators: { options: [{
|
|
2522
|
+
type: Input
|
|
2523
|
+
}], filterForm: [{
|
|
2524
|
+
type: Input
|
|
2525
|
+
}] } });
|
|
2526
|
+
|
|
2527
|
+
class DatatableColumnFilterMenuComponent {
|
|
2528
|
+
_columnsFilters;
|
|
2529
|
+
_filterForm;
|
|
2530
|
+
column;
|
|
2531
|
+
updateMethod;
|
|
2532
|
+
debounce;
|
|
2533
|
+
columnFilterProp;
|
|
2534
|
+
columnFilter;
|
|
2535
|
+
customFilterTemplate$;
|
|
2536
|
+
closePopover = new EventEmitter();
|
|
2537
|
+
constructor(_columnsFilters) {
|
|
2538
|
+
this._columnsFilters = _columnsFilters;
|
|
2539
|
+
}
|
|
2540
|
+
ngOnInit() {
|
|
2541
|
+
this.columnFilterProp = this._columnsFilters.getColumnFilterProp(this.column);
|
|
2542
|
+
this.columnFilter = this._columnsFilters.getColumnFilter(this.columnFilterProp);
|
|
2543
|
+
if (notNullOrUndefined(this.columnFilter)) {
|
|
2544
|
+
this._filterForm = this.columnFilter.form;
|
|
2545
|
+
}
|
|
2546
|
+
this.customFilterTemplate$ = this._columnsFilters.columnFilterTemplates$.pipe(map$1(templates => templates.find(t => t.filterName === this.columnFilter?.name)));
|
|
2547
|
+
if (this.updateMethod === 'valueChanges' && notNullOrUndefined(this._filterForm)) {
|
|
2548
|
+
this._filterForm.valueChanges.pipe(debounceTime(this.debounce || 0), tap$1(() => this.columnFilter?.applyFilter())).subscribe();
|
|
2549
|
+
}
|
|
2550
|
+
}
|
|
2551
|
+
submit() {
|
|
2552
|
+
this.columnFilter?.applyFilter();
|
|
2553
|
+
this.closePopover.emit();
|
|
2554
|
+
}
|
|
2555
|
+
clearFilter() {
|
|
2556
|
+
this.columnFilter?.clearFilter();
|
|
2557
|
+
}
|
|
2558
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnFilterMenuComponent, deps: [{ token: ColumnsFiltersService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2559
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableColumnFilterMenuComponent, isStandalone: false, selector: "seam-datatable-column-filter-menu", inputs: { column: "column", updateMethod: "updateMethod", debounce: "debounce" }, outputs: { closePopover: "closePopover" }, ngImport: i0, template: "<ng-container *ngIf=\"_filterForm && columnFilter\">\n <form [formGroup]=\"_filterForm\" (ngSubmit)=\"submit()\">\n <ng-container [ngSwitch]=\"columnFilter.name\">\n <div *ngSwitchCase=\"'search-text'\">\n <seam-datatable-column-filter-search-text [filterForm]=\"_filterForm\"></seam-datatable-column-filter-search-text>\n </div>\n <div *ngSwitchCase=\"'search-numeric'\">\n <seam-datatable-column-filter-search-numeric [filterForm]=\"_filterForm\"></seam-datatable-column-filter-search-numeric>\n </div>\n <div *ngSwitchCase=\"'search-date'\">\n <seam-datatable-column-filter-search-date [filterForm]=\"_filterForm\" [options]=\"columnFilter.options\"></seam-datatable-column-filter-search-date>\n </div>\n <div *ngSwitchDefault>\n <ng-container *ngIf=\"customFilterTemplate$ | async as filterTpl\">\n <ng-container *ngIf=\"filterTpl.template\">\n <ng-container\n [ngTemplateOutlet]=\"filterTpl.template\"\n [ngTemplateOutletContext]=\"{ $implicit: _filterForm, filterForm: _filterForm, options: columnFilter.options, column: column, columnFilter: columnFilter }\">\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n\n <hr class=\"mb-1\">\n <div class=\"d-flex align-items-center\" [class.justify-content-between]=\"updateMethod === 'submit'\" [class.text-right]=\"updateMethod === 'valueChanges'\">\n <button seamButton size=\"sm\" class=\"text-primary p-0\" (click)=\"clearFilter()\" [disabled]=\"columnFilter?.isDefault() === true\">Clear</button>\n <button\n *ngIf=\"updateMethod === 'submit'\"\n seamButton\n size=\"sm\"\n class=\"text-primary p-0\"\n type=\"submit\"\n [disabled]=\"columnFilter?.isDefault() === true\">\n Apply\n </button>\n </div>\n </form>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i3$1.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }, { kind: "directive", type: i4$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: DatatableColumnFilterSearchTextComponent, selector: "seam-datatable-column-filter-search-text", inputs: ["filterForm"] }, { kind: "component", type: DatatableColumnFilterSearchNumericComponent, selector: "seam-datatable-column-filter-search-numeric", inputs: ["filterForm"] }, { kind: "component", type: DatatableColumnFilterSearchDateComponent, selector: "seam-datatable-column-filter-search-date", inputs: ["options", "filterForm"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }] });
|
|
2560
|
+
}
|
|
2561
|
+
__decorate([
|
|
2562
|
+
InputNumber()
|
|
2563
|
+
], DatatableColumnFilterMenuComponent.prototype, "debounce", void 0);
|
|
2564
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnFilterMenuComponent, decorators: [{
|
|
2565
|
+
type: Component,
|
|
2566
|
+
args: [{ selector: 'seam-datatable-column-filter-menu', standalone: false, template: "<ng-container *ngIf=\"_filterForm && columnFilter\">\n <form [formGroup]=\"_filterForm\" (ngSubmit)=\"submit()\">\n <ng-container [ngSwitch]=\"columnFilter.name\">\n <div *ngSwitchCase=\"'search-text'\">\n <seam-datatable-column-filter-search-text [filterForm]=\"_filterForm\"></seam-datatable-column-filter-search-text>\n </div>\n <div *ngSwitchCase=\"'search-numeric'\">\n <seam-datatable-column-filter-search-numeric [filterForm]=\"_filterForm\"></seam-datatable-column-filter-search-numeric>\n </div>\n <div *ngSwitchCase=\"'search-date'\">\n <seam-datatable-column-filter-search-date [filterForm]=\"_filterForm\" [options]=\"columnFilter.options\"></seam-datatable-column-filter-search-date>\n </div>\n <div *ngSwitchDefault>\n <ng-container *ngIf=\"customFilterTemplate$ | async as filterTpl\">\n <ng-container *ngIf=\"filterTpl.template\">\n <ng-container\n [ngTemplateOutlet]=\"filterTpl.template\"\n [ngTemplateOutletContext]=\"{ $implicit: _filterForm, filterForm: _filterForm, options: columnFilter.options, column: column, columnFilter: columnFilter }\">\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n\n <hr class=\"mb-1\">\n <div class=\"d-flex align-items-center\" [class.justify-content-between]=\"updateMethod === 'submit'\" [class.text-right]=\"updateMethod === 'valueChanges'\">\n <button seamButton size=\"sm\" class=\"text-primary p-0\" (click)=\"clearFilter()\" [disabled]=\"columnFilter?.isDefault() === true\">Clear</button>\n <button\n *ngIf=\"updateMethod === 'submit'\"\n seamButton\n size=\"sm\"\n class=\"text-primary p-0\"\n type=\"submit\"\n [disabled]=\"columnFilter?.isDefault() === true\">\n Apply\n </button>\n </div>\n </form>\n</ng-container>\n" }]
|
|
2567
|
+
}], ctorParameters: () => [{ type: ColumnsFiltersService }], propDecorators: { column: [{
|
|
2568
|
+
type: Input
|
|
2569
|
+
}], updateMethod: [{
|
|
2570
|
+
type: Input
|
|
2571
|
+
}], debounce: [{
|
|
2572
|
+
type: Input
|
|
2573
|
+
}], closePopover: [{
|
|
2574
|
+
type: Output
|
|
2575
|
+
}] } });
|
|
2576
|
+
|
|
2577
|
+
/**
|
|
2578
|
+
* Intended for internal classes declared by the `TheSeamDatatableModule`.
|
|
2579
|
+
*/
|
|
2580
|
+
const THESEAM_DATATABLE = new InjectionToken('LibDatatable');
|
|
2581
|
+
const _THESEAM_DATATABLE = {
|
|
2582
|
+
provide: THESEAM_DATATABLE,
|
|
2583
|
+
useExisting: forwardRef(() => DatatableComponent)
|
|
2584
|
+
};
|
|
2585
|
+
const _THESEAM_DATATABLE_ACCESSOR = {
|
|
2586
|
+
provide: THESEAM_DATATABLE_ACCESSOR,
|
|
2587
|
+
// tslint:disable-next-line:no-use-before-declare
|
|
2588
|
+
useExisting: forwardRef(() => DatatableComponent)
|
|
2589
|
+
};
|
|
2590
|
+
class DatatableComponent {
|
|
2591
|
+
_preferences;
|
|
2592
|
+
_columnsManager;
|
|
2593
|
+
_columnsAlterationsManager;
|
|
2594
|
+
_columnsFilters;
|
|
2595
|
+
_config;
|
|
2596
|
+
static ngAcceptInputType_externalPaging;
|
|
2597
|
+
static ngAcceptInputType_externalSorting;
|
|
2598
|
+
static ngAcceptInputType_externalFiltering;
|
|
2599
|
+
static ngAcceptInputType_loadingIndicator;
|
|
2600
|
+
static ngAcceptInputType_reorderable;
|
|
2601
|
+
static ngAcceptInputType_swapColumns;
|
|
2602
|
+
static ngAcceptInputType_groupExpansionDefault;
|
|
2603
|
+
static ngAcceptInputType_selectAllRowsOnPage;
|
|
2604
|
+
static ngAcceptInputType_summaryRow;
|
|
2605
|
+
static ngAcceptInputType_virtualization;
|
|
2606
|
+
static ngAcceptInputType_scrollbarV;
|
|
2607
|
+
static ngAcceptInputType_scrollbarH;
|
|
2608
|
+
static ngAcceptInputType_limit;
|
|
2609
|
+
static ngAcceptInputType_count;
|
|
2610
|
+
static ngAcceptInputType_offset;
|
|
2611
|
+
static ngAcceptInputType_headerHeight;
|
|
2612
|
+
static ngAcceptInputType_rowHeight;
|
|
2613
|
+
static ngAcceptInputType_footerHeight;
|
|
2614
|
+
static ngAcceptInputType_summaryHeight;
|
|
2615
|
+
static ngAcceptInputType_columns;
|
|
2616
|
+
static ngAcceptInputType_sorts;
|
|
2617
|
+
_faChevronDown = faChevronDown;
|
|
2618
|
+
_faChevronRight = faChevronRight;
|
|
2619
|
+
_faSpinner = faSpinner;
|
|
2620
|
+
_cdr = inject(ChangeDetectorRef);
|
|
2621
|
+
_ngUnsubscribe = new Subject();
|
|
2622
|
+
_menuBarsFiltersSubject = new BehaviorSubject([]);
|
|
2623
|
+
_dataSourceSubject = new BehaviorSubject(undefined);
|
|
2624
|
+
_resizing = {};
|
|
2625
|
+
filterStates;
|
|
2626
|
+
get filters() {
|
|
2627
|
+
return [
|
|
2628
|
+
...this._menuBarsFiltersSubject.value,
|
|
2629
|
+
...this._columnsFilters.filters()
|
|
2630
|
+
];
|
|
2631
|
+
}
|
|
2632
|
+
filters$;
|
|
2633
|
+
get preferencesKey() { return this._preferencesKey.value; }
|
|
2634
|
+
set preferencesKey(value) { this._preferencesKey.next(value || undefined); }
|
|
2635
|
+
_preferencesKey = new BehaviorSubject(undefined);
|
|
2636
|
+
targetMarkerTemplate;
|
|
2637
|
+
set columns(value) {
|
|
2638
|
+
this._columnsManager.setInputColumns(Array.isArray(value) ? value : []);
|
|
2639
|
+
}
|
|
2640
|
+
get rows() { return this._rows.value; }
|
|
2641
|
+
set rows(value) {
|
|
2642
|
+
this._rows.next(value || []);
|
|
2643
|
+
}
|
|
2644
|
+
_rows = new BehaviorSubject([]);
|
|
2645
|
+
rows$;
|
|
2646
|
+
columnMode = ColumnMode.force;
|
|
2647
|
+
groupRowsBy;
|
|
2648
|
+
groupedRows;
|
|
2649
|
+
selected = [];
|
|
2650
|
+
externalPaging = false;
|
|
2651
|
+
externalSorting = false;
|
|
2652
|
+
externalFiltering = false;
|
|
2653
|
+
limit;
|
|
2654
|
+
count = 0;
|
|
2655
|
+
offset = 0;
|
|
2656
|
+
loadingIndicator = false;
|
|
2657
|
+
get selectionType() { return this._columnsManager.getSelectionType(); }
|
|
2658
|
+
set selectionType(value) {
|
|
2659
|
+
this._columnsManager.setSelectionType(notNullOrUndefined(value) ? value : undefined);
|
|
2660
|
+
}
|
|
2661
|
+
reorderable = true;
|
|
2662
|
+
swapColumns = false;
|
|
2663
|
+
get sortType() { return this._sortType; }
|
|
2664
|
+
set sortType(value) {
|
|
2665
|
+
if (notNullOrUndefined(value) && (value === SortType.single || value === SortType.multi)) {
|
|
2666
|
+
this._sortType = value;
|
|
2667
|
+
}
|
|
2668
|
+
else {
|
|
2669
|
+
this._sortType = SortType.single;
|
|
2670
|
+
}
|
|
2671
|
+
}
|
|
2672
|
+
_sortType = SortType.single;
|
|
2673
|
+
get sorts() {
|
|
2674
|
+
return this.ngxDatatable ? this.ngxDatatable.sorts : this._sorts;
|
|
2675
|
+
}
|
|
2676
|
+
set sorts(value) {
|
|
2677
|
+
this._sorts = notNullOrUndefined(value) ? coerceArray(value) : [];
|
|
2678
|
+
}
|
|
2679
|
+
_sorts = [];
|
|
2680
|
+
get cssClasses() {
|
|
2681
|
+
return this._cssClasses;
|
|
2682
|
+
}
|
|
2683
|
+
set cssClasses(value) {
|
|
2684
|
+
if (notNullOrUndefined(value)) {
|
|
2685
|
+
this._cssClasses = value;
|
|
2686
|
+
}
|
|
2687
|
+
else if (notNullOrUndefined(this._config?.cssClasses)) {
|
|
2688
|
+
this._cssClasses = this._config?.cssClasses;
|
|
2689
|
+
}
|
|
2690
|
+
else {
|
|
2691
|
+
this._cssClasses = this._cssClassesDefault;
|
|
2692
|
+
}
|
|
2693
|
+
}
|
|
2694
|
+
_cssClassesDefault = {
|
|
2695
|
+
sortAscending: 'datatable-icon-up',
|
|
2696
|
+
sortDescending: 'datatable-icon-down',
|
|
2697
|
+
pagerLeftArrow: 'datatable-icon-left',
|
|
2698
|
+
pagerRightArrow: 'datatable-icon-right',
|
|
2699
|
+
pagerPrevious: 'datatable-icon-prev',
|
|
2700
|
+
pagerNext: 'datatable-icon-skip'
|
|
2701
|
+
};
|
|
2702
|
+
_cssClasses;
|
|
2703
|
+
get messages() {
|
|
2704
|
+
return this._messages;
|
|
2705
|
+
}
|
|
2706
|
+
set messages(value) {
|
|
2707
|
+
if (notNullOrUndefined(value)) {
|
|
2708
|
+
this._messages = value;
|
|
2709
|
+
}
|
|
2710
|
+
else if (notNullOrUndefined(this._config?.messages)) {
|
|
2711
|
+
this._messages = {
|
|
2712
|
+
...this._messagesDefault,
|
|
2713
|
+
...this._config?.messages
|
|
2714
|
+
};
|
|
2715
|
+
}
|
|
2716
|
+
else {
|
|
2717
|
+
this._messages = this._messagesDefault;
|
|
2718
|
+
}
|
|
2719
|
+
}
|
|
2720
|
+
_messagesDefault = {
|
|
2721
|
+
// Message to show when array is presented
|
|
2722
|
+
// but contains no values
|
|
2723
|
+
emptyMessage: 'No records found',
|
|
2724
|
+
// Footer total message
|
|
2725
|
+
totalMessage: 'total',
|
|
2726
|
+
// Footer selected message
|
|
2727
|
+
selectedMessage: 'selected'
|
|
2728
|
+
};
|
|
2729
|
+
_messages;
|
|
2730
|
+
rowIdentity = (x) => x;
|
|
2731
|
+
rowClass;
|
|
2732
|
+
selectCheck;
|
|
2733
|
+
displayCheck;
|
|
2734
|
+
groupExpansionDefault = false;
|
|
2735
|
+
trackByProp;
|
|
2736
|
+
selectAllRowsOnPage = false;
|
|
2737
|
+
treeFromRelation;
|
|
2738
|
+
treeToRelation;
|
|
2739
|
+
summaryRow = false;
|
|
2740
|
+
summaryHeight = 30;
|
|
2741
|
+
summaryPosition = 'top';
|
|
2742
|
+
virtualization = true;
|
|
2743
|
+
get headerHeight() {
|
|
2744
|
+
return this._headerHeight;
|
|
2745
|
+
}
|
|
2746
|
+
set headerHeight(value) {
|
|
2747
|
+
if (notNullOrUndefined(value)) {
|
|
2748
|
+
this._headerHeight = value;
|
|
2749
|
+
}
|
|
2750
|
+
else if (notNullOrUndefined(this._config?.headerHeight)) {
|
|
2751
|
+
this._headerHeight = this._config?.headerHeight;
|
|
2752
|
+
}
|
|
2753
|
+
else {
|
|
2754
|
+
this._headerHeight = this._headerHeightDefault;
|
|
2755
|
+
}
|
|
2756
|
+
}
|
|
2757
|
+
_headerHeightDefault = 50;
|
|
2758
|
+
_headerHeight;
|
|
2759
|
+
get rowHeight() {
|
|
2760
|
+
return this._rowHeight;
|
|
2761
|
+
}
|
|
2762
|
+
set rowHeight(value) {
|
|
2763
|
+
if (notNullOrUndefined(value)) {
|
|
2764
|
+
this._rowHeight = value;
|
|
2765
|
+
}
|
|
2766
|
+
else if (notNullOrUndefined(this._config?.rowHeight)) {
|
|
2767
|
+
this._rowHeight = this._config?.rowHeight;
|
|
2768
|
+
}
|
|
2769
|
+
else {
|
|
2770
|
+
this._rowHeight = this._rowHeightDefault;
|
|
2771
|
+
}
|
|
2772
|
+
}
|
|
2773
|
+
_rowHeightDefault = 50;
|
|
2774
|
+
_rowHeight;
|
|
2775
|
+
get footerHeight() {
|
|
2776
|
+
return this._footerHeight;
|
|
2777
|
+
}
|
|
2778
|
+
set footerHeight(value) {
|
|
2779
|
+
if (notNullOrUndefined(value)) {
|
|
2780
|
+
this._footerHeight = value;
|
|
2781
|
+
}
|
|
2782
|
+
else if (notNullOrUndefined(this._config?.footerHeight)) {
|
|
2783
|
+
this._footerHeight = this._config?.footerHeight;
|
|
2784
|
+
}
|
|
2785
|
+
else {
|
|
2786
|
+
this._footerHeight = this._footerHeightDefault;
|
|
2787
|
+
}
|
|
2788
|
+
}
|
|
2789
|
+
_footerHeightDefault = 40;
|
|
2790
|
+
_footerHeight;
|
|
2791
|
+
scrollbarV = true;
|
|
2792
|
+
scrollbarH = true;
|
|
2793
|
+
set dataSource(value) {
|
|
2794
|
+
if (value instanceof DatatableDataSource) {
|
|
2795
|
+
value.setDatatableAccessor(this);
|
|
2796
|
+
}
|
|
2797
|
+
this._dataSourceSubject.next(value || undefined);
|
|
2798
|
+
}
|
|
2799
|
+
/**
|
|
2800
|
+
* Sets position behavior for optional Action Menu Button column.
|
|
2801
|
+
*
|
|
2802
|
+
* Defaults to `frozenRight`.
|
|
2803
|
+
*/
|
|
2804
|
+
get actionItemColumnPosition() { return this._actionItemColumnPosition; }
|
|
2805
|
+
set actionItemColumnPosition(value) {
|
|
2806
|
+
if (notNullOrUndefined(value) && isActionItemColumnPosition(value)) {
|
|
2807
|
+
this._actionItemColumnPosition = value;
|
|
2808
|
+
}
|
|
2809
|
+
else if (notNullOrUndefined(this._config?.actionItemColumnPosition) && isActionItemColumnPosition(this._config?.actionItemColumnPosition)) {
|
|
2810
|
+
this._actionItemColumnPosition = this._config?.actionItemColumnPosition;
|
|
2811
|
+
}
|
|
2812
|
+
else {
|
|
2813
|
+
this._actionItemColumnPosition = this._actionItemColumnPositionDefault;
|
|
2814
|
+
}
|
|
2815
|
+
this._columnsManager.setActionItemColumnPosition(this._actionItemColumnPosition);
|
|
2816
|
+
}
|
|
2817
|
+
_actionItemColumnPositionDefault = 'frozenRight';
|
|
2818
|
+
_actionItemColumnPosition;
|
|
2819
|
+
get columnFilterIcon() {
|
|
2820
|
+
return this._columnFilterIcon;
|
|
2821
|
+
}
|
|
2822
|
+
set columnFilterIcon(value) {
|
|
2823
|
+
if (notNullOrUndefined(value)) {
|
|
2824
|
+
this._columnFilterIcon = value;
|
|
2825
|
+
}
|
|
2826
|
+
else if (notNullOrUndefined(this._config?.columnFilterIcon)) {
|
|
2827
|
+
this._columnFilterIcon = this._config?.columnFilterIcon;
|
|
2828
|
+
}
|
|
2829
|
+
else {
|
|
2830
|
+
this._columnFilterIcon = this._columnFilterIconDefault;
|
|
2831
|
+
}
|
|
2832
|
+
}
|
|
2833
|
+
_columnFilterIconDefault = faFilter;
|
|
2834
|
+
_columnFilterIcon;
|
|
2835
|
+
get columnFilterUpdateMethod() {
|
|
2836
|
+
return this._columnFilterUpdateMethod;
|
|
2837
|
+
}
|
|
2838
|
+
set columnFilterUpdateMethod(value) {
|
|
2839
|
+
if (notNullOrUndefined(value)) {
|
|
2840
|
+
this._columnFilterUpdateMethod = value;
|
|
2841
|
+
}
|
|
2842
|
+
else if (notNullOrUndefined(this._config?.columnFilterUpdateMethod)) {
|
|
2843
|
+
this._columnFilterUpdateMethod = this._config?.columnFilterUpdateMethod;
|
|
2844
|
+
}
|
|
2845
|
+
else {
|
|
2846
|
+
this._columnFilterUpdateMethod = this._columnFilterUpdateMethodDefault;
|
|
2847
|
+
}
|
|
2848
|
+
}
|
|
2849
|
+
_columnFilterUpdateMethodDefault = 'valueChanges';
|
|
2850
|
+
_columnFilterUpdateMethod;
|
|
2851
|
+
get columnFilterUpdateDebounce() {
|
|
2852
|
+
return this._columnFilterUpdateDebounce;
|
|
2853
|
+
}
|
|
2854
|
+
set columnFilterUpdateDebounce(value) {
|
|
2855
|
+
if (notNullOrUndefined(value)) {
|
|
2856
|
+
this._columnFilterUpdateDebounce = value;
|
|
2857
|
+
}
|
|
2858
|
+
else if (notNullOrUndefined(this._config?.columnFilterUpdateDebounce)) {
|
|
2859
|
+
this._columnFilterUpdateDebounce = this._config?.columnFilterUpdateDebounce;
|
|
2860
|
+
}
|
|
2861
|
+
else {
|
|
2862
|
+
this._columnFilterUpdateDebounce = this._columnFilterUpdateDebounceDefault;
|
|
2863
|
+
}
|
|
2864
|
+
}
|
|
2865
|
+
_columnFilterUpdateDebounceDefault = 400;
|
|
2866
|
+
_columnFilterUpdateDebounce;
|
|
2867
|
+
// eslint-disable-next-line @angular-eslint/no-output-native
|
|
2868
|
+
scroll = new EventEmitter();
|
|
2869
|
+
activate = new EventEmitter();
|
|
2870
|
+
// eslint-disable-next-line @angular-eslint/no-output-native
|
|
2871
|
+
select = new EventEmitter();
|
|
2872
|
+
sort = new EventEmitter();
|
|
2873
|
+
page = new EventEmitter();
|
|
2874
|
+
reorder = new EventEmitter();
|
|
2875
|
+
// eslint-disable-next-line @angular-eslint/no-output-native
|
|
2876
|
+
resize = new EventEmitter();
|
|
2877
|
+
tableContextmenu = new EventEmitter(false);
|
|
2878
|
+
treeAction = new EventEmitter();
|
|
2879
|
+
actionRefreshRequest = new EventEmitter();
|
|
2880
|
+
hiddenColumnsChange = new EventEmitter();
|
|
2881
|
+
set columnComponents(value) {
|
|
2882
|
+
this._columnsManager.setTemplateColumns(translateTemplateColumns(value?.toArray() ?? []));
|
|
2883
|
+
}
|
|
2884
|
+
actionMenu;
|
|
2885
|
+
get rowActionItem() { return this._rowActionItem; }
|
|
2886
|
+
set rowActionItem(value) {
|
|
2887
|
+
this._rowActionItem = value;
|
|
2888
|
+
this._columnsManager.setRowActionItem(notNullOrUndefined(value) ? value : undefined);
|
|
2889
|
+
}
|
|
2890
|
+
_rowActionItem;
|
|
2891
|
+
rowDetail;
|
|
2892
|
+
footer;
|
|
2893
|
+
get menuBarComponent() { return this._menuBarComponent; }
|
|
2894
|
+
set menuBarComponent(value) {
|
|
2895
|
+
this._menuBarComponent = value;
|
|
2896
|
+
if (this._menuBarSub) {
|
|
2897
|
+
this._menuBarSub.unsubscribe();
|
|
2898
|
+
}
|
|
2899
|
+
if (value) {
|
|
2900
|
+
this._setMenuBarFilters(value.filters());
|
|
2901
|
+
this._menuBarSub = this._menuBarComponent?.filtersChanged
|
|
2902
|
+
.subscribe(() => { this._setMenuBarFilters(value.filters()); });
|
|
2903
|
+
}
|
|
2904
|
+
}
|
|
2905
|
+
_menuBarComponent;
|
|
2906
|
+
_menuBarSub;
|
|
2907
|
+
set columnFilterTemplates(value) {
|
|
2908
|
+
this._columnsFilters.setFilterTemplates(value?.toArray() ?? []);
|
|
2909
|
+
}
|
|
2910
|
+
ngxDatatable;
|
|
2911
|
+
ngxDatatableElement;
|
|
2912
|
+
ngxRowDetail;
|
|
2913
|
+
get actionMenuCellTpl() { return this._actionMenuCellTpl; }
|
|
2914
|
+
set actionMenuCellTpl(value) {
|
|
2915
|
+
this._actionMenuCellTpl = value;
|
|
2916
|
+
this._columnsManager.setActionMenuCellTpl(notNullOrUndefined(value) ? value : undefined);
|
|
2917
|
+
}
|
|
2918
|
+
_actionMenuCellTpl;
|
|
2919
|
+
get treeToggleTpl() { return this._treeToggleTpl; }
|
|
2920
|
+
set treeToggleTpl(value) {
|
|
2921
|
+
this._treeToggleTpl = value;
|
|
2922
|
+
this._columnsManager.setTreeToggleTpl(notNullOrUndefined(value) ? value : undefined);
|
|
2923
|
+
}
|
|
2924
|
+
_treeToggleTpl;
|
|
2925
|
+
get headerTpl() { return this._headerTpl; }
|
|
2926
|
+
set headerTpl(value) {
|
|
2927
|
+
this._headerTpl = value;
|
|
2928
|
+
this._columnsManager.setHeaderTpl(notNullOrUndefined(value) ? value : undefined);
|
|
2929
|
+
}
|
|
2930
|
+
_headerTpl;
|
|
2931
|
+
get blankHeaderTpl() { return this._blankHeaderTpl; }
|
|
2932
|
+
set blankHeaderTpl(value) {
|
|
2933
|
+
this._blankHeaderTpl = value;
|
|
2934
|
+
this._columnsManager.setBlankHeaderTpl(notNullOrUndefined(value) ? value : undefined);
|
|
2935
|
+
}
|
|
2936
|
+
_blankHeaderTpl;
|
|
2937
|
+
get cellTypeSelectorTpl() { return this._cellTypeSelectorTpl; }
|
|
2938
|
+
set cellTypeSelectorTpl(value) {
|
|
2939
|
+
this._cellTypeSelectorTpl = value;
|
|
2940
|
+
this._columnsManager.setCellTypeSelectorTpl(notNullOrUndefined(value) ? value : undefined);
|
|
2941
|
+
}
|
|
2942
|
+
_cellTypeSelectorTpl;
|
|
2943
|
+
columnComponents$;
|
|
2944
|
+
_colDiffersInp = {};
|
|
2945
|
+
_colDiffersTpl = {};
|
|
2946
|
+
columns$;
|
|
2947
|
+
displayColumns$;
|
|
2948
|
+
viewChange;
|
|
2949
|
+
_rowDetailToggleSubscription = Subscription.EMPTY;
|
|
2950
|
+
// TODO: Remove this DOM-dependent code when a way to property listen for
|
|
2951
|
+
// dblclick on the header reasize handles.
|
|
2952
|
+
_dblClick(event) {
|
|
2953
|
+
const isHandle = event.target.classList.contains('resize-handle');
|
|
2954
|
+
if (isHandle) {
|
|
2955
|
+
const isResizeable = event.target.parentElement?.classList.contains('resizeable');
|
|
2956
|
+
if (isResizeable) {
|
|
2957
|
+
event.stopPropagation();
|
|
2958
|
+
const id = event.target.parentElement
|
|
2959
|
+
?.querySelector('.datatable-column-header-separator')
|
|
2960
|
+
?.getAttribute('data-column-id');
|
|
2961
|
+
this._columnsManager.columns$.pipe(take(1)).subscribe(columns => {
|
|
2962
|
+
const column = columns.find(c => c.$$id === id);
|
|
2963
|
+
if (column) {
|
|
2964
|
+
const columnProp = getColumnProp(column);
|
|
2965
|
+
if (columnProp) {
|
|
2966
|
+
const alteration = new WidthColumnsAlteration({ columnProp, canAutoResize: true }, false);
|
|
2967
|
+
this._columnsAlterationsManager.add([alteration]);
|
|
2968
|
+
}
|
|
2969
|
+
}
|
|
2970
|
+
});
|
|
2971
|
+
}
|
|
2972
|
+
}
|
|
2973
|
+
}
|
|
2974
|
+
constructor(_preferences, _columnsManager, _columnsAlterationsManager, _columnsFilters, _config) {
|
|
2975
|
+
this._preferences = _preferences;
|
|
2976
|
+
this._columnsManager = _columnsManager;
|
|
2977
|
+
this._columnsAlterationsManager = _columnsAlterationsManager;
|
|
2978
|
+
this._columnsFilters = _columnsFilters;
|
|
2979
|
+
this._config = _config;
|
|
2980
|
+
this._preferencesKey.pipe(distinctUntilChanged(), switchMap(key => {
|
|
2981
|
+
if (!notNullOrUndefined(key) || key.length === 0) {
|
|
2982
|
+
return of(undefined);
|
|
2983
|
+
}
|
|
2984
|
+
return from(waitOnConditionAsync(() => this._preferences.isLoaded(key))).pipe(switchMap(() => this._columnsAlterationsManager.changes.pipe(startWith(undefined), tap(() => {
|
|
2985
|
+
console.log('%cSaving columns alterations to preferences', 'color: blue', this._columnsAlterationsManager.get());
|
|
2986
|
+
this._preferences.setAlterations(key, this._columnsAlterationsManager.get());
|
|
2987
|
+
}))));
|
|
2988
|
+
}), takeUntil(this._ngUnsubscribe)).subscribe();
|
|
2989
|
+
const applyPrefs = (cols) => this._columnsAlterationsManager.changes.pipe(startWith(undefined), map(() => {
|
|
2990
|
+
console.log('%cApplying columns alterations', 'color: blue', cols);
|
|
2991
|
+
this._columnsAlterationsManager.apply(cols, this);
|
|
2992
|
+
return cols;
|
|
2993
|
+
}));
|
|
2994
|
+
this._preferencesKey.pipe(distinctUntilChanged(), switchMap(prefsKey => {
|
|
2995
|
+
if (!notNullOrUndefined(prefsKey)) {
|
|
2996
|
+
return of(undefined);
|
|
2997
|
+
}
|
|
2998
|
+
return this._preferences.preferences(prefsKey).pipe(switchMap(async (preferences) => {
|
|
2999
|
+
await waitOnConditionAsync(() => this._preferences.isLoaded(prefsKey));
|
|
3000
|
+
return preferences;
|
|
3001
|
+
}), take(1), map(preferences => {
|
|
3002
|
+
let alterations = [];
|
|
3003
|
+
try {
|
|
3004
|
+
alterations = mapColumnsAlterationsStates(preferences.alterations);
|
|
3005
|
+
}
|
|
3006
|
+
catch (e) {
|
|
3007
|
+
if (isDevMode()) {
|
|
3008
|
+
// eslint-disable-next-line no-console
|
|
3009
|
+
console.warn('Unable to map columns alterations states');
|
|
3010
|
+
// eslint-disable-next-line no-console
|
|
3011
|
+
console.warn(e);
|
|
3012
|
+
}
|
|
3013
|
+
}
|
|
3014
|
+
console.log('%cSetting columns alterations from preferences', 'color: blue', alterations);
|
|
3015
|
+
this._columnsAlterationsManager.add(alterations);
|
|
3016
|
+
}));
|
|
3017
|
+
}), takeUntil(this._ngUnsubscribe)).subscribe();
|
|
3018
|
+
this.columns$ = combineLatest([this._columnsManager.columns$, this._columnsFilters.columnActiveFilterProps$]).pipe(map(([columns, columnActiveFilterProps]) => columns.map(col => ({
|
|
3019
|
+
...col,
|
|
3020
|
+
filterActive: columnActiveFilterProps.includes(this._columnsFilters.getColumnFilterProp(col) || '')
|
|
3021
|
+
}))));
|
|
3022
|
+
this.displayColumns$ = this.columns$.pipe(switchMap(cols => applyPrefs(cols)), map(cols => cols.filter(c => !c.hidden)), tap(v => removeUnusedDiffs(v, this._colDiffersInp, this._colDiffersTpl)));
|
|
3023
|
+
this.filters$ = combineLatest([this._menuBarsFiltersSubject.asObservable(), this._columnsFilters.columnsFilters$]).pipe(map(([menuFilters, columnsFilters]) => [...menuFilters, ...columnsFilters]));
|
|
3024
|
+
this.filterStates = this.filters$.pipe(switchMap(filters => composeDataFilterStates(filters)));
|
|
3025
|
+
this.rows$ = this._dataSourceSubject.pipe(switchMap(dataSource => {
|
|
3026
|
+
// console.log('dataSource', dataSource)
|
|
3027
|
+
let dataStream;
|
|
3028
|
+
if (isDataSource(dataSource)) {
|
|
3029
|
+
// console.log('~datasource')
|
|
3030
|
+
dataStream = dataSource.connect(this);
|
|
3031
|
+
}
|
|
3032
|
+
else if (isObservable(dataSource)) {
|
|
3033
|
+
// console.log('~observable')
|
|
3034
|
+
dataStream = dataSource;
|
|
3035
|
+
}
|
|
3036
|
+
else if (Array.isArray(dataSource)) {
|
|
3037
|
+
// console.log('~array')
|
|
3038
|
+
dataStream = of(dataSource);
|
|
3039
|
+
}
|
|
3040
|
+
else {
|
|
3041
|
+
// console.log('~rows fallback')
|
|
3042
|
+
dataStream = this._rows.asObservable();
|
|
3043
|
+
// .pipe(tap(v => console.log('rows~', v)))
|
|
3044
|
+
}
|
|
3045
|
+
if (!this.externalFiltering) {
|
|
3046
|
+
// console.log('not using externalFiltering')
|
|
3047
|
+
dataStream = dataStream.pipe(switchMap(rows => this.filters$.pipe(
|
|
3048
|
+
// tap(v => console.log('filters', v)),
|
|
3049
|
+
concatMap(filters => of(rows).pipe(composeDataFilters(filters))))));
|
|
3050
|
+
// dataStream = this._filtersSubject.pipe(
|
|
3051
|
+
// tap(v => console.log('filters', v)),
|
|
3052
|
+
// concatMap(filters => dataStream.pipe(composeDataFilters(filters))),
|
|
3053
|
+
// tap(v => console.log('composed filters', v)),
|
|
3054
|
+
// )
|
|
3055
|
+
}
|
|
3056
|
+
return dataStream.pipe(
|
|
3057
|
+
// tap(v => console.log('stream', v)),
|
|
3058
|
+
takeUntil(this._ngUnsubscribe));
|
|
3059
|
+
}));
|
|
3060
|
+
// TODO: Implement viewChange for CollectionViewer.
|
|
3061
|
+
this.viewChange = this.page.pipe(map(p => ({ start: 0, end: p.count })));
|
|
3062
|
+
}
|
|
3063
|
+
ngOnInit() {
|
|
3064
|
+
if (this.rowDetail) {
|
|
3065
|
+
this._rowDetailToggleSubscription = this.rowDetail._toggle.subscribe(event => {
|
|
3066
|
+
if (this.ngxRowDetail) {
|
|
3067
|
+
this.ngxRowDetail.toggle.emit(event);
|
|
3068
|
+
}
|
|
3069
|
+
});
|
|
3070
|
+
}
|
|
3071
|
+
this._setDatatableConfigOrDefault();
|
|
3072
|
+
}
|
|
3073
|
+
/** Sets missing inputs from config */
|
|
3074
|
+
_setDatatableConfigOrDefault() {
|
|
3075
|
+
if (isNullOrUndefined(this.messages)) {
|
|
3076
|
+
this.messages = undefined;
|
|
3077
|
+
}
|
|
3078
|
+
if (isNullOrUndefined(this.headerHeight)) {
|
|
3079
|
+
this.headerHeight = undefined;
|
|
3080
|
+
}
|
|
3081
|
+
if (isNullOrUndefined(this.rowHeight)) {
|
|
3082
|
+
this.rowHeight = undefined;
|
|
3083
|
+
}
|
|
3084
|
+
if (isNullOrUndefined(this.footerHeight)) {
|
|
3085
|
+
this.footerHeight = undefined;
|
|
3086
|
+
}
|
|
3087
|
+
if (isNullOrUndefined(this.cssClasses)) {
|
|
3088
|
+
this.cssClasses = undefined;
|
|
3089
|
+
}
|
|
3090
|
+
if (isNullOrUndefined(this.columnFilterIcon)) {
|
|
3091
|
+
this.columnFilterIcon = undefined;
|
|
3092
|
+
}
|
|
3093
|
+
if (isNullOrUndefined(this.columnFilterUpdateMethod)) {
|
|
3094
|
+
this.columnFilterUpdateMethod = undefined;
|
|
3095
|
+
}
|
|
3096
|
+
if (isNullOrUndefined(this.columnFilterUpdateDebounce)) {
|
|
3097
|
+
this.columnFilterUpdateDebounce = undefined;
|
|
3098
|
+
}
|
|
3099
|
+
if (isNullOrUndefined(this.actionItemColumnPosition)) {
|
|
3100
|
+
this.actionItemColumnPosition = undefined;
|
|
3101
|
+
}
|
|
3102
|
+
}
|
|
3103
|
+
ngOnDestroy() {
|
|
3104
|
+
this._rowDetailToggleSubscription.unsubscribe();
|
|
3105
|
+
}
|
|
3106
|
+
_setMenuBarFilters(filters) {
|
|
3107
|
+
this._menuBarsFiltersSubject.next(filters || []);
|
|
3108
|
+
}
|
|
3109
|
+
getColumnComponent(propName) {
|
|
3110
|
+
if (!this.columnComponents || this.columnComponents.length === 0) {
|
|
3111
|
+
return null;
|
|
3112
|
+
}
|
|
3113
|
+
const tpl = this.columnComponents.find(t => t.prop === propName);
|
|
3114
|
+
if (tpl) {
|
|
3115
|
+
return tpl;
|
|
3116
|
+
}
|
|
3117
|
+
return null;
|
|
3118
|
+
}
|
|
3119
|
+
_columnData(col) {
|
|
3120
|
+
const comp = this.getColumnComponent(col.prop);
|
|
3121
|
+
return { col, comp };
|
|
3122
|
+
}
|
|
3123
|
+
_getRowExpanded(row) {
|
|
3124
|
+
if (this.ngxDatatable && this.ngxDatatable.bodyComponent) {
|
|
3125
|
+
return this.ngxDatatable.bodyComponent.getRowExpanded(row);
|
|
3126
|
+
}
|
|
3127
|
+
return false;
|
|
3128
|
+
}
|
|
3129
|
+
trackByFnColumn(index, item) {
|
|
3130
|
+
return item.prop;
|
|
3131
|
+
}
|
|
3132
|
+
onDatatableResize(event) {
|
|
3133
|
+
if (this.ngxDatatable && this.ngxDatatableElement && this.ngxDatatableElement.nativeElement) {
|
|
3134
|
+
// TODO: Consider integrating this into the ngx-datatable library to avoid
|
|
3135
|
+
// multiple resize calls when the table resizes itself.
|
|
3136
|
+
this.ngxDatatable.recalculate();
|
|
3137
|
+
}
|
|
3138
|
+
}
|
|
3139
|
+
_onResize(event) {
|
|
3140
|
+
this.resize.emit(event);
|
|
3141
|
+
if (!notNullOrUndefined(event.column)) {
|
|
3142
|
+
return;
|
|
3143
|
+
}
|
|
3144
|
+
const columnProp = getColumnProp(event.column);
|
|
3145
|
+
if (columnProp) {
|
|
3146
|
+
let addAlteration = false;
|
|
3147
|
+
if (!this._resizing[columnProp]) {
|
|
3148
|
+
this._resizing[columnProp] = true;
|
|
3149
|
+
addAlteration = true;
|
|
3150
|
+
}
|
|
3151
|
+
if (event.isDone) {
|
|
3152
|
+
this._resizing[columnProp] = false;
|
|
3153
|
+
addAlteration = true;
|
|
3154
|
+
}
|
|
3155
|
+
if (addAlteration) {
|
|
3156
|
+
const alteration = new WidthColumnsAlteration({
|
|
3157
|
+
columnProp,
|
|
3158
|
+
width: event.column.width,
|
|
3159
|
+
canAutoResize: false
|
|
3160
|
+
}, true);
|
|
3161
|
+
this._columnsAlterationsManager.add([alteration]);
|
|
3162
|
+
}
|
|
3163
|
+
}
|
|
3164
|
+
}
|
|
3165
|
+
_onReorder(event) {
|
|
3166
|
+
this.reorder.emit(event);
|
|
3167
|
+
const columnProp = getColumnProp(event.column);
|
|
3168
|
+
if (columnProp) {
|
|
3169
|
+
const currentOrderAlteration = this._columnsAlterationsManager.get().find(x => x.type === 'order');
|
|
3170
|
+
const state = {
|
|
3171
|
+
columns: [
|
|
3172
|
+
...(currentOrderAlteration?.state.columns || []).filter((x) => x.columnProp !== columnProp),
|
|
3173
|
+
{ columnProp, index: event.newValue }
|
|
3174
|
+
]
|
|
3175
|
+
};
|
|
3176
|
+
const alteration = new OrderColumnsAlteration(state, true);
|
|
3177
|
+
this._columnsAlterationsManager.add([alteration]);
|
|
3178
|
+
}
|
|
3179
|
+
}
|
|
3180
|
+
_onSort(event) {
|
|
3181
|
+
this.sort.emit(event);
|
|
3182
|
+
const alteration = new SortColumnsAlteration({ sorts: event.sorts }, true);
|
|
3183
|
+
this._columnsAlterationsManager.add([alteration]);
|
|
3184
|
+
}
|
|
3185
|
+
_onTreeAction(event) {
|
|
3186
|
+
const index = event.rowIndex;
|
|
3187
|
+
const row = event.row;
|
|
3188
|
+
if (row.treeStatus === 'collapsed') {
|
|
3189
|
+
row.treeStatus = 'expanded';
|
|
3190
|
+
}
|
|
3191
|
+
else {
|
|
3192
|
+
row.treeStatus = 'collapsed';
|
|
3193
|
+
}
|
|
3194
|
+
this.rows = [...this.rows];
|
|
3195
|
+
}
|
|
3196
|
+
triggerActionRefreshRequest() {
|
|
3197
|
+
this.actionRefreshRequest.emit(undefined);
|
|
3198
|
+
}
|
|
3199
|
+
/**
|
|
3200
|
+
* Returns the page info from the wrapped NgxDatatable instance or defaults.
|
|
3201
|
+
*/
|
|
3202
|
+
get pageInfo() {
|
|
3203
|
+
return {
|
|
3204
|
+
offset: this.ngxDatatable?.offset ?? 0,
|
|
3205
|
+
pageSize: this.ngxDatatable?.pageSize ?? 0,
|
|
3206
|
+
limit: this.ngxDatatable?.limit,
|
|
3207
|
+
count: this.ngxDatatable?.count ?? 0
|
|
3208
|
+
};
|
|
3209
|
+
}
|
|
3210
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableComponent, deps: [{ token: DatatablePreferencesService }, { token: ColumnsManagerService }, { token: ColumnsAlterationsManagerService }, { token: ColumnsFiltersService }, { token: THESEAM_DATATABLE_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
3211
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableComponent, isStandalone: false, selector: "seam-datatable", inputs: { preferencesKey: "preferencesKey", targetMarkerTemplate: "targetMarkerTemplate", columns: "columns", rows: "rows", columnMode: "columnMode", groupRowsBy: "groupRowsBy", groupedRows: "groupedRows", selected: "selected", externalPaging: "externalPaging", externalSorting: "externalSorting", externalFiltering: "externalFiltering", limit: "limit", count: "count", offset: "offset", loadingIndicator: "loadingIndicator", selectionType: "selectionType", reorderable: "reorderable", swapColumns: "swapColumns", sortType: "sortType", sorts: "sorts", cssClasses: "cssClasses", messages: "messages", rowIdentity: "rowIdentity", rowClass: "rowClass", selectCheck: "selectCheck", displayCheck: "displayCheck", groupExpansionDefault: "groupExpansionDefault", trackByProp: "trackByProp", selectAllRowsOnPage: "selectAllRowsOnPage", treeFromRelation: "treeFromRelation", treeToRelation: "treeToRelation", summaryRow: "summaryRow", summaryHeight: "summaryHeight", summaryPosition: "summaryPosition", virtualization: "virtualization", headerHeight: "headerHeight", rowHeight: "rowHeight", footerHeight: "footerHeight", scrollbarV: "scrollbarV", scrollbarH: "scrollbarH", dataSource: "dataSource", actionItemColumnPosition: "actionItemColumnPosition", columnFilterIcon: "columnFilterIcon", columnFilterUpdateMethod: "columnFilterUpdateMethod", columnFilterUpdateDebounce: "columnFilterUpdateDebounce" }, outputs: { scroll: "scroll", activate: "activate", select: "select", sort: "sort", page: "page", reorder: "reorder", resize: "resize", tableContextmenu: "tableContextmenu", treeAction: "treeAction", actionRefreshRequest: "actionRefreshRequest", hiddenColumnsChange: "hiddenColumnsChange" }, host: { listeners: { "dblclick": "_dblClick($event)" } }, providers: [
|
|
3212
|
+
_THESEAM_DATATABLE,
|
|
3213
|
+
DatatableColumnChangesService,
|
|
3214
|
+
_THESEAM_DATATABLE_ACCESSOR,
|
|
3215
|
+
ColumnsManagerService,
|
|
3216
|
+
ColumnsAlterationsManagerService,
|
|
3217
|
+
ColumnsFiltersService
|
|
3218
|
+
], queries: [{ propertyName: "actionMenu", first: true, predicate: DatatableActionMenuComponent, descendants: true, static: true }, { propertyName: "rowActionItem", first: true, predicate: DatatableRowActionItemDirective, descendants: true }, { propertyName: "rowDetail", first: true, predicate: TheSeamDatatableRowDetailDirective, descendants: true, static: true }, { propertyName: "footer", first: true, predicate: TheSeamDatatableFooterDirective, descendants: true, static: true }, { propertyName: "menuBarComponent", first: true, predicate: DatatableMenuBarComponent, descendants: true }, { propertyName: "columnComponents", predicate: DatatableColumnComponent }, { propertyName: "columnFilterTemplates", predicate: TheSeamDatatableColumnFilterDirective }], viewQueries: [{ propertyName: "ngxDatatable", first: true, predicate: DatatableComponent$1, descendants: true }, { propertyName: "ngxDatatableElement", first: true, predicate: DatatableComponent$1, descendants: true, read: ElementRef }, { propertyName: "ngxRowDetail", first: true, predicate: DatatableRowDetailDirective, descendants: true }, { propertyName: "actionMenuCellTpl", first: true, predicate: ["actionMenuCellTpl"], descendants: true, static: true }, { propertyName: "treeToggleTpl", first: true, predicate: ["treeToggleTpl"], descendants: true, static: true }, { propertyName: "headerTpl", first: true, predicate: ["headerTpl"], descendants: true, static: true }, { propertyName: "blankHeaderTpl", first: true, predicate: ["blankHeaderTpl"], descendants: true, static: true }, { propertyName: "cellTypeSelectorTpl", first: true, predicate: ["cellTypeSelectorTpl"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"datatable-wrapper\">\n <ng-content select=\"seam-datatable-menu-bar\"></ng-content>\n <div class=\"datatable-table-wrapper\">\n <ng-container>\n <ngx-datatable\n [columnMode]=\"$any(columnMode)\"\n [scrollbarV]=\"scrollbarV\"\n [scrollbarH]=\"scrollbarH\"\n [virtualization]=\"virtualization\"\n [targetMarkerTemplate]=\"targetMarkerTemplate\"\n [groupRowsBy]=\"$any(groupRowsBy)\"\n [groupedRows]=\"$any(groupedRows)\"\n [selected]=\"$any(selected)\"\n [externalPaging]=\"externalPaging\"\n [externalSorting]=\"externalSorting\"\n [limit]=\"$any(limit)\"\n [count]=\"$any(count)\"\n [offset]=\"$any(offset)\"\n [loadingIndicator]=\"loadingIndicator\"\n [selectionType]=\"$any(selectionType)\"\n [reorderable]=\"reorderable\"\n [swapColumns]=\"swapColumns\"\n [sortType]=\"$any(sortType)\"\n [sorts]=\"$any(_sorts)\"\n [cssClasses]=\"$any(cssClasses)\"\n [messages]=\"$any(messages)\"\n [rowIdentity]=\"$any(rowIdentity)\"\n [rowClass]=\"rowClass\"\n [selectCheck]=\"selectCheck\"\n [displayCheck]=\"$any(displayCheck)\"\n [groupExpansionDefault]=\"groupExpansionDefault\"\n [trackByProp]=\"$any(trackByProp)\"\n [selectAllRowsOnPage]=\"selectAllRowsOnPage\"\n [treeFromRelation]=\"$any(treeFromRelation)\"\n [treeToRelation]=\"$any(treeToRelation)\"\n [summaryRow]=\"summaryRow\"\n [summaryHeight]=\"$any(summaryHeight)\"\n [summaryPosition]=\"$any(summaryPosition)\"\n [rows]=\"rows$ | async\"\n [columns]=\"$any(displayColumns$ | async)\"\n [headerHeight]=\"$any(headerHeight)\"\n [rowHeight]=\"$any(rowHeight)\"\n [footerHeight]=\"$any(footerHeight)\"\n (scroll)=\"scroll.emit($event)\"\n (activate)=\"activate.emit($event)\"\n (select)=\"select.emit($event)\"\n (sort)=\"_onSort($event)\"\n (page)=\"page.emit($event)\"\n (reorder)=\"_onReorder($event)\"\n (resize)=\"_onResize($event)\"\n (tableContextmenu)=\"tableContextmenu.emit($event)\"\n (treeAction)=\"treeAction.emit($event)\"\n (seamElemResized)=\"onDatatableResize($event)\"\n (treeAction)=\"_onTreeAction($event)\">\n\n <ngx-datatable-group-header [rowHeight]=\"50\" #myGroupHeader *ngIf=\"groupRowsBy\">\n <ng-template let-group=\"group\" let-expanded=\"expanded\" ngx-datatable-group-header-template>\n <div\n class=\"w-100 bg-light p-1\"\n [class.border-bottom]=\"!expanded\"\n [class.datatable-icon-right]=\"!expanded\"\n [class.datatable-icon-down]=\"expanded\"\n title=\"Expand/Collapse Group\"\n (click)=\"ngxDatatable?.groupHeader?.toggleExpandGroup(group)\">\n <!-- <b>Age: {{ group.age }}</b> -->\n </div>\n </ng-template>\n </ngx-datatable-group-header>\n\n <ngx-datatable-row-detail *ngIf=\"rowDetail && rowDetail.template\"\n [rowHeight]=\"rowDetail.rowHeight || 0\"\n [template]=\"$any(rowDetail.template)\"\n (toggle)=\"rowDetail.toggle.emit($event)\">\n </ngx-datatable-row-detail>\n\n <ngx-datatable-footer *ngIf=\"footer && footer.template\"\n [template]=\"$any(footer.template)\">\n </ngx-datatable-footer>\n </ngx-datatable>\n </ng-container>\n </div>\n</div>\n\n<ng-template #blankHeaderTpl ngx-datatable-header-template></ng-template>\n\n<ng-template\n #headerTpl\n ngx-datatable-header-template\n let-column=\"column\"\n let-sortFn=\"sortFn\"\n>\n <div class=\"d-inline-flex align-items-center\">\n <ng-container *ngIf=\"$any(column).filterable\">\n <button\n seamIconBtn\n [icon]=\"columnFilterIcon\"\n size=\"sm\"\n [seamPopover]=\"filterMenu\"\n [seamPopoverBaseWidth]=\"300\"\n class=\"datatable-column-header-filter-button d-flex align-items-center mr-2\"\n [class.datatable-column-header-filter-button-active]=\"$any(column).filterActive\"\n style=\"width: 1rem;\"\n title=\"Click to see filter options\"></button>\n </ng-container>\n <strong *ngIf=\"!column.sortable\" class=\"draggable\">{{column.name}}</strong>\n <button\n seamButton\n *ngIf=\"column.sortable\"\n class=\"datatable-sort-target p-0\"\n (click)=\"sortFn()\"\n title=\"Click to sort\">\n <strong class=\"draggable\">{{column.name}}</strong>\n </button>\n <div class=\"datatable-column-header-separator\" [attr.data-column-id]=\"column.$$id\"></div>\n </div>\n <ng-template #filterMenu let-popover=\"popover\">\n <seam-datatable-column-filter-menu\n [column]=\"column\"\n [updateMethod]=\"columnFilterUpdateMethod\"\n [debounce]=\"columnFilterUpdateDebounce\"\n (closePopover)=\"popover?.closePopover()\"></seam-datatable-column-filter-menu>\n </ng-template>\n</ng-template>\n\n<ng-template #cellTypeSelectorTpl ngx-datatable-cell-template\n let-value=\"value\" let-rowIndex=\"rowIndex\" let-row=\"row\" let-column=\"column\">\n <seam-table-cell-type-selector *ngIf=\"row\"\n [type]=\"$any(column).cellType\"\n [value]=\"value\"\n [rowIndex]=\"rowIndex\"\n [row]=\"row\"\n [colData]=\"column\">\n </seam-table-cell-type-selector>\n</ng-template>\n\n<ng-template #actionMenuCellTpl ngx-datatable-cell-template\n let-value=\"value\" let-rowIndex=\"rowIndex\" let-row=\"row\">\n\n <ng-container *ngIf=\"row && rowActionItem?.template\">\n <ng-template\n [ngTemplateOutlet]=\"$any(rowActionItem?.template)\"\n [ngTemplateOutletContext]=\"{ $implicit: row, row: row, rowIndex: rowIndex }\">\n </ng-template>\n </ng-container>\n\n</ng-template>\n\n<ng-template #treeToggleTpl ngx-datatable-tree-toggle let-tree=\"cellContext\">\n <button\n class=\"p-0 bg-transparent border-0 btn\"\n [disabled]=\"tree.treeStatus==='disabled'\"\n (click)=\"tree.onTreeAction()\">\n <span *ngIf=\"tree.treeStatus==='loading'\">\n <fa-icon [icon]=\"_faSpinner\"></fa-icon>\n </span>\n <span *ngIf=\"tree.treeStatus==='collapsed'\">\n <fa-icon [icon]=\"_faChevronRight\"></fa-icon>\n </span>\n <span *ngIf=\"tree.treeStatus==='expanded'\">\n <fa-icon [icon]=\"_faChevronDown\"></fa-icon>\n </span>\n <span *ngIf=\"tree.treeStatus==='disabled'\">\n <fa-icon [icon]=\"_faChevronRight\"></fa-icon>\n </span>\n </button>\n</ng-template>\n", styles: [":host{display:flex;flex-grow:1;flex-direction:column}::ng-deep .seam-datatable-action-menu{min-width:auto!important}ngx-datatable{position:absolute!important;inset:0}.datatable-wrapper{display:flex;flex-direction:column;flex-grow:1}.datatable-wrapper .datatable-table-wrapper{position:relative;flex:1 1 100%}.datatable-column-header-separator{position:absolute}.datatable-sort-target{cursor:pointer}::ng-deep .ngx-datatable .datatable-body-row{position:relative}::ng-deep .ngx-datatable .datatable-row-right{position:absolute!important;top:0}::ng-deep .ngx-datatable .datatable-row-right{right:0}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6.DatatableComponent, selector: "ngx-datatable", inputs: ["targetMarkerTemplate", "rows", "groupRowsBy", "groupedRows", "columns", "selected", "scrollbarV", "scrollbarVDynamic", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "limit", "count", "offset", "loadingIndicator", "ghostLoadingIndicator", "selectionType", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "rowClass", "selectCheck", "displayCheck", "groupExpansionDefault", "trackByProp", "selectAllRowsOnPage", "virtualization", "treeFromRelation", "treeToRelation", "summaryRow", "summaryHeight", "summaryPosition", "displayPageCount", "displayPager", "disableRowCheck", "rowDraggable", "enableClearingSortState", "rowIdentity"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction", "rowDragEvents"] }, { kind: "directive", type: i6.DatatableRowDetailDirective, selector: "ngx-datatable-row-detail", inputs: ["rowHeight", "template"], outputs: ["toggle"] }, { kind: "directive", type: i6.DatatableGroupHeaderDirective, selector: "ngx-datatable-group-header", inputs: ["rowHeight", "checkboxable", "template"], outputs: ["toggle"] }, { kind: "directive", type: i6.DataTableColumnHeaderDirective, selector: "[ngx-datatable-header-template]" }, { kind: "directive", type: i6.DataTableColumnCellDirective, selector: "[ngx-datatable-cell-template]" }, { kind: "directive", type: i6.DataTableColumnCellTreeToggle, selector: "[ngx-datatable-tree-toggle]" }, { kind: "directive", type: i6.DatatableFooterDirective, selector: "ngx-datatable-footer", inputs: ["footerHeight", "totalMessage", "selectedMessage", "pagerLeftArrowIcon", "pagerRightArrowIcon", "pagerPreviousIcon", "pagerNextIcon", "template"] }, { kind: "directive", type: i6.DatatableGroupHeaderTemplateDirective, selector: "[ngx-datatable-group-header-template]" }, { kind: "component", type: i7.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "directive", type: i2$2.TheSeamElemResizedDirective, selector: "[seamElemResized]", outputs: ["seamElemResized"], exportAs: ["seamElemResized"] }, { kind: "component", type: i5.IconBtnComponent, selector: "button[seamIconBtn]", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "iconType", "btnTheme", "badgeTheme", "badgeText", "btnSize", "type", "role"] }, { kind: "component", type: i3$1.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }, { kind: "directive", type: i11.TheSeamPopoverDirective, selector: "[seamPopover]", inputs: ["seamPopover", "seamPopoverContext", "seamPopoverBaseWidth", "seamPopoverDisabled"], exportAs: ["seamPopover"] }, { kind: "component", type: i12.TableCellTypeSelectorComponent, selector: "seam-table-cell-type-selector", inputs: ["type", "value", "rowIndex", "row", "colData"] }, { kind: "component", type: DatatableColumnFilterMenuComponent, selector: "seam-datatable-column-filter-menu", inputs: ["column", "updateMethod", "debounce"], outputs: ["closePopover"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }], animations: [
|
|
3219
|
+
trigger('slideDown', [
|
|
3220
|
+
transition(':enter', [
|
|
3221
|
+
style({ transform: 'translateY(-20%)', opacity: '0' }),
|
|
3222
|
+
animate('250ms', style({ transform: 'translateY(0)', opacity: '1' })),
|
|
3223
|
+
]),
|
|
3224
|
+
transition(':leave', [
|
|
3225
|
+
style({ transform: 'translateY(0)', opacity: '1' }),
|
|
3226
|
+
animate('250ms', style({ transform: 'translateY(-20%)', opacity: '0' })),
|
|
3227
|
+
])
|
|
3228
|
+
])
|
|
3229
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3230
|
+
}
|
|
3231
|
+
__decorate([
|
|
3232
|
+
InputBoolean()
|
|
3233
|
+
], DatatableComponent.prototype, "externalPaging", void 0);
|
|
3234
|
+
__decorate([
|
|
3235
|
+
InputBoolean()
|
|
3236
|
+
], DatatableComponent.prototype, "externalSorting", void 0);
|
|
3237
|
+
__decorate([
|
|
3238
|
+
InputBoolean()
|
|
3239
|
+
], DatatableComponent.prototype, "externalFiltering", void 0);
|
|
3240
|
+
__decorate([
|
|
3241
|
+
InputNumber()
|
|
3242
|
+
], DatatableComponent.prototype, "limit", void 0);
|
|
3243
|
+
__decorate([
|
|
3244
|
+
InputNumber(0)
|
|
3245
|
+
], DatatableComponent.prototype, "count", void 0);
|
|
3246
|
+
__decorate([
|
|
3247
|
+
InputNumber(0)
|
|
3248
|
+
], DatatableComponent.prototype, "offset", void 0);
|
|
3249
|
+
__decorate([
|
|
3250
|
+
InputBoolean()
|
|
3251
|
+
], DatatableComponent.prototype, "loadingIndicator", void 0);
|
|
3252
|
+
__decorate([
|
|
3253
|
+
InputBoolean()
|
|
3254
|
+
], DatatableComponent.prototype, "reorderable", void 0);
|
|
3255
|
+
__decorate([
|
|
3256
|
+
InputBoolean()
|
|
3257
|
+
], DatatableComponent.prototype, "swapColumns", void 0);
|
|
3258
|
+
__decorate([
|
|
3259
|
+
InputBoolean()
|
|
3260
|
+
], DatatableComponent.prototype, "groupExpansionDefault", void 0);
|
|
3261
|
+
__decorate([
|
|
3262
|
+
InputBoolean()
|
|
3263
|
+
], DatatableComponent.prototype, "selectAllRowsOnPage", void 0);
|
|
3264
|
+
__decorate([
|
|
3265
|
+
InputBoolean()
|
|
3266
|
+
], DatatableComponent.prototype, "summaryRow", void 0);
|
|
3267
|
+
__decorate([
|
|
3268
|
+
InputNumber()
|
|
3269
|
+
], DatatableComponent.prototype, "summaryHeight", void 0);
|
|
3270
|
+
__decorate([
|
|
3271
|
+
InputBoolean()
|
|
3272
|
+
], DatatableComponent.prototype, "virtualization", void 0);
|
|
3273
|
+
__decorate([
|
|
3274
|
+
InputNumber()
|
|
3275
|
+
], DatatableComponent.prototype, "headerHeight", null);
|
|
3276
|
+
__decorate([
|
|
3277
|
+
InputNumber()
|
|
3278
|
+
], DatatableComponent.prototype, "rowHeight", null);
|
|
3279
|
+
__decorate([
|
|
3280
|
+
InputNumber()
|
|
3281
|
+
], DatatableComponent.prototype, "footerHeight", null);
|
|
3282
|
+
__decorate([
|
|
3283
|
+
InputBoolean()
|
|
3284
|
+
], DatatableComponent.prototype, "scrollbarV", void 0);
|
|
3285
|
+
__decorate([
|
|
3286
|
+
InputBoolean()
|
|
3287
|
+
], DatatableComponent.prototype, "scrollbarH", void 0);
|
|
3288
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableComponent, decorators: [{
|
|
3289
|
+
type: Component,
|
|
3290
|
+
args: [{ selector: 'seam-datatable', changeDetection: ChangeDetectionStrategy.OnPush, animations: [
|
|
3291
|
+
trigger('slideDown', [
|
|
3292
|
+
transition(':enter', [
|
|
3293
|
+
style({ transform: 'translateY(-20%)', opacity: '0' }),
|
|
3294
|
+
animate('250ms', style({ transform: 'translateY(0)', opacity: '1' })),
|
|
3295
|
+
]),
|
|
3296
|
+
transition(':leave', [
|
|
3297
|
+
style({ transform: 'translateY(0)', opacity: '1' }),
|
|
3298
|
+
animate('250ms', style({ transform: 'translateY(-20%)', opacity: '0' })),
|
|
3299
|
+
])
|
|
3300
|
+
])
|
|
3301
|
+
], providers: [
|
|
3302
|
+
_THESEAM_DATATABLE,
|
|
3303
|
+
DatatableColumnChangesService,
|
|
3304
|
+
_THESEAM_DATATABLE_ACCESSOR,
|
|
3305
|
+
ColumnsManagerService,
|
|
3306
|
+
ColumnsAlterationsManagerService,
|
|
3307
|
+
ColumnsFiltersService
|
|
3308
|
+
], standalone: false, template: "<div class=\"datatable-wrapper\">\n <ng-content select=\"seam-datatable-menu-bar\"></ng-content>\n <div class=\"datatable-table-wrapper\">\n <ng-container>\n <ngx-datatable\n [columnMode]=\"$any(columnMode)\"\n [scrollbarV]=\"scrollbarV\"\n [scrollbarH]=\"scrollbarH\"\n [virtualization]=\"virtualization\"\n [targetMarkerTemplate]=\"targetMarkerTemplate\"\n [groupRowsBy]=\"$any(groupRowsBy)\"\n [groupedRows]=\"$any(groupedRows)\"\n [selected]=\"$any(selected)\"\n [externalPaging]=\"externalPaging\"\n [externalSorting]=\"externalSorting\"\n [limit]=\"$any(limit)\"\n [count]=\"$any(count)\"\n [offset]=\"$any(offset)\"\n [loadingIndicator]=\"loadingIndicator\"\n [selectionType]=\"$any(selectionType)\"\n [reorderable]=\"reorderable\"\n [swapColumns]=\"swapColumns\"\n [sortType]=\"$any(sortType)\"\n [sorts]=\"$any(_sorts)\"\n [cssClasses]=\"$any(cssClasses)\"\n [messages]=\"$any(messages)\"\n [rowIdentity]=\"$any(rowIdentity)\"\n [rowClass]=\"rowClass\"\n [selectCheck]=\"selectCheck\"\n [displayCheck]=\"$any(displayCheck)\"\n [groupExpansionDefault]=\"groupExpansionDefault\"\n [trackByProp]=\"$any(trackByProp)\"\n [selectAllRowsOnPage]=\"selectAllRowsOnPage\"\n [treeFromRelation]=\"$any(treeFromRelation)\"\n [treeToRelation]=\"$any(treeToRelation)\"\n [summaryRow]=\"summaryRow\"\n [summaryHeight]=\"$any(summaryHeight)\"\n [summaryPosition]=\"$any(summaryPosition)\"\n [rows]=\"rows$ | async\"\n [columns]=\"$any(displayColumns$ | async)\"\n [headerHeight]=\"$any(headerHeight)\"\n [rowHeight]=\"$any(rowHeight)\"\n [footerHeight]=\"$any(footerHeight)\"\n (scroll)=\"scroll.emit($event)\"\n (activate)=\"activate.emit($event)\"\n (select)=\"select.emit($event)\"\n (sort)=\"_onSort($event)\"\n (page)=\"page.emit($event)\"\n (reorder)=\"_onReorder($event)\"\n (resize)=\"_onResize($event)\"\n (tableContextmenu)=\"tableContextmenu.emit($event)\"\n (treeAction)=\"treeAction.emit($event)\"\n (seamElemResized)=\"onDatatableResize($event)\"\n (treeAction)=\"_onTreeAction($event)\">\n\n <ngx-datatable-group-header [rowHeight]=\"50\" #myGroupHeader *ngIf=\"groupRowsBy\">\n <ng-template let-group=\"group\" let-expanded=\"expanded\" ngx-datatable-group-header-template>\n <div\n class=\"w-100 bg-light p-1\"\n [class.border-bottom]=\"!expanded\"\n [class.datatable-icon-right]=\"!expanded\"\n [class.datatable-icon-down]=\"expanded\"\n title=\"Expand/Collapse Group\"\n (click)=\"ngxDatatable?.groupHeader?.toggleExpandGroup(group)\">\n <!-- <b>Age: {{ group.age }}</b> -->\n </div>\n </ng-template>\n </ngx-datatable-group-header>\n\n <ngx-datatable-row-detail *ngIf=\"rowDetail && rowDetail.template\"\n [rowHeight]=\"rowDetail.rowHeight || 0\"\n [template]=\"$any(rowDetail.template)\"\n (toggle)=\"rowDetail.toggle.emit($event)\">\n </ngx-datatable-row-detail>\n\n <ngx-datatable-footer *ngIf=\"footer && footer.template\"\n [template]=\"$any(footer.template)\">\n </ngx-datatable-footer>\n </ngx-datatable>\n </ng-container>\n </div>\n</div>\n\n<ng-template #blankHeaderTpl ngx-datatable-header-template></ng-template>\n\n<ng-template\n #headerTpl\n ngx-datatable-header-template\n let-column=\"column\"\n let-sortFn=\"sortFn\"\n>\n <div class=\"d-inline-flex align-items-center\">\n <ng-container *ngIf=\"$any(column).filterable\">\n <button\n seamIconBtn\n [icon]=\"columnFilterIcon\"\n size=\"sm\"\n [seamPopover]=\"filterMenu\"\n [seamPopoverBaseWidth]=\"300\"\n class=\"datatable-column-header-filter-button d-flex align-items-center mr-2\"\n [class.datatable-column-header-filter-button-active]=\"$any(column).filterActive\"\n style=\"width: 1rem;\"\n title=\"Click to see filter options\"></button>\n </ng-container>\n <strong *ngIf=\"!column.sortable\" class=\"draggable\">{{column.name}}</strong>\n <button\n seamButton\n *ngIf=\"column.sortable\"\n class=\"datatable-sort-target p-0\"\n (click)=\"sortFn()\"\n title=\"Click to sort\">\n <strong class=\"draggable\">{{column.name}}</strong>\n </button>\n <div class=\"datatable-column-header-separator\" [attr.data-column-id]=\"column.$$id\"></div>\n </div>\n <ng-template #filterMenu let-popover=\"popover\">\n <seam-datatable-column-filter-menu\n [column]=\"column\"\n [updateMethod]=\"columnFilterUpdateMethod\"\n [debounce]=\"columnFilterUpdateDebounce\"\n (closePopover)=\"popover?.closePopover()\"></seam-datatable-column-filter-menu>\n </ng-template>\n</ng-template>\n\n<ng-template #cellTypeSelectorTpl ngx-datatable-cell-template\n let-value=\"value\" let-rowIndex=\"rowIndex\" let-row=\"row\" let-column=\"column\">\n <seam-table-cell-type-selector *ngIf=\"row\"\n [type]=\"$any(column).cellType\"\n [value]=\"value\"\n [rowIndex]=\"rowIndex\"\n [row]=\"row\"\n [colData]=\"column\">\n </seam-table-cell-type-selector>\n</ng-template>\n\n<ng-template #actionMenuCellTpl ngx-datatable-cell-template\n let-value=\"value\" let-rowIndex=\"rowIndex\" let-row=\"row\">\n\n <ng-container *ngIf=\"row && rowActionItem?.template\">\n <ng-template\n [ngTemplateOutlet]=\"$any(rowActionItem?.template)\"\n [ngTemplateOutletContext]=\"{ $implicit: row, row: row, rowIndex: rowIndex }\">\n </ng-template>\n </ng-container>\n\n</ng-template>\n\n<ng-template #treeToggleTpl ngx-datatable-tree-toggle let-tree=\"cellContext\">\n <button\n class=\"p-0 bg-transparent border-0 btn\"\n [disabled]=\"tree.treeStatus==='disabled'\"\n (click)=\"tree.onTreeAction()\">\n <span *ngIf=\"tree.treeStatus==='loading'\">\n <fa-icon [icon]=\"_faSpinner\"></fa-icon>\n </span>\n <span *ngIf=\"tree.treeStatus==='collapsed'\">\n <fa-icon [icon]=\"_faChevronRight\"></fa-icon>\n </span>\n <span *ngIf=\"tree.treeStatus==='expanded'\">\n <fa-icon [icon]=\"_faChevronDown\"></fa-icon>\n </span>\n <span *ngIf=\"tree.treeStatus==='disabled'\">\n <fa-icon [icon]=\"_faChevronRight\"></fa-icon>\n </span>\n </button>\n</ng-template>\n", styles: [":host{display:flex;flex-grow:1;flex-direction:column}::ng-deep .seam-datatable-action-menu{min-width:auto!important}ngx-datatable{position:absolute!important;inset:0}.datatable-wrapper{display:flex;flex-direction:column;flex-grow:1}.datatable-wrapper .datatable-table-wrapper{position:relative;flex:1 1 100%}.datatable-column-header-separator{position:absolute}.datatable-sort-target{cursor:pointer}::ng-deep .ngx-datatable .datatable-body-row{position:relative}::ng-deep .ngx-datatable .datatable-row-right{position:absolute!important;top:0}::ng-deep .ngx-datatable .datatable-row-right{right:0}\n"] }]
|
|
3309
|
+
}], ctorParameters: () => [{ type: DatatablePreferencesService }, { type: ColumnsManagerService }, { type: ColumnsAlterationsManagerService }, { type: ColumnsFiltersService }, { type: undefined, decorators: [{
|
|
3310
|
+
type: Optional
|
|
3311
|
+
}, {
|
|
3312
|
+
type: Inject,
|
|
3313
|
+
args: [THESEAM_DATATABLE_CONFIG]
|
|
3314
|
+
}] }], propDecorators: { preferencesKey: [{
|
|
3315
|
+
type: Input
|
|
3316
|
+
}], targetMarkerTemplate: [{
|
|
3317
|
+
type: Input
|
|
3318
|
+
}], columns: [{
|
|
3319
|
+
type: Input
|
|
3320
|
+
}], rows: [{
|
|
3321
|
+
type: Input
|
|
3322
|
+
}], columnMode: [{
|
|
3323
|
+
type: Input
|
|
3324
|
+
}], groupRowsBy: [{
|
|
3325
|
+
type: Input
|
|
3326
|
+
}], groupedRows: [{
|
|
3327
|
+
type: Input
|
|
3328
|
+
}], selected: [{
|
|
3329
|
+
type: Input
|
|
3330
|
+
}], externalPaging: [{
|
|
3331
|
+
type: Input
|
|
3332
|
+
}], externalSorting: [{
|
|
3333
|
+
type: Input
|
|
3334
|
+
}], externalFiltering: [{
|
|
3335
|
+
type: Input
|
|
3336
|
+
}], limit: [{
|
|
3337
|
+
type: Input
|
|
3338
|
+
}], count: [{
|
|
3339
|
+
type: Input
|
|
3340
|
+
}], offset: [{
|
|
3341
|
+
type: Input
|
|
3342
|
+
}], loadingIndicator: [{
|
|
3343
|
+
type: Input
|
|
3344
|
+
}], selectionType: [{
|
|
3345
|
+
type: Input
|
|
3346
|
+
}], reorderable: [{
|
|
3347
|
+
type: Input
|
|
3348
|
+
}], swapColumns: [{
|
|
3349
|
+
type: Input
|
|
3350
|
+
}], sortType: [{
|
|
3351
|
+
type: Input
|
|
3352
|
+
}], sorts: [{
|
|
3353
|
+
type: Input
|
|
3354
|
+
}], cssClasses: [{
|
|
3355
|
+
type: Input
|
|
3356
|
+
}], messages: [{
|
|
3357
|
+
type: Input
|
|
3358
|
+
}], rowIdentity: [{
|
|
3359
|
+
type: Input
|
|
3360
|
+
}], rowClass: [{
|
|
3361
|
+
type: Input
|
|
3362
|
+
}], selectCheck: [{
|
|
3363
|
+
type: Input
|
|
3364
|
+
}], displayCheck: [{
|
|
3365
|
+
type: Input
|
|
3366
|
+
}], groupExpansionDefault: [{
|
|
3367
|
+
type: Input
|
|
3368
|
+
}], trackByProp: [{
|
|
3369
|
+
type: Input
|
|
3370
|
+
}], selectAllRowsOnPage: [{
|
|
3371
|
+
type: Input
|
|
3372
|
+
}], treeFromRelation: [{
|
|
3373
|
+
type: Input
|
|
3374
|
+
}], treeToRelation: [{
|
|
3375
|
+
type: Input
|
|
3376
|
+
}], summaryRow: [{
|
|
3377
|
+
type: Input
|
|
3378
|
+
}], summaryHeight: [{
|
|
3379
|
+
type: Input
|
|
3380
|
+
}], summaryPosition: [{
|
|
3381
|
+
type: Input
|
|
3382
|
+
}], virtualization: [{
|
|
3383
|
+
type: Input
|
|
3384
|
+
}], headerHeight: [{
|
|
3385
|
+
type: Input
|
|
3386
|
+
}], rowHeight: [{
|
|
3387
|
+
type: Input
|
|
3388
|
+
}], footerHeight: [{
|
|
3389
|
+
type: Input
|
|
3390
|
+
}], scrollbarV: [{
|
|
3391
|
+
type: Input
|
|
3392
|
+
}], scrollbarH: [{
|
|
3393
|
+
type: Input
|
|
3394
|
+
}], dataSource: [{
|
|
3395
|
+
type: Input
|
|
3396
|
+
}], actionItemColumnPosition: [{
|
|
3397
|
+
type: Input
|
|
3398
|
+
}], columnFilterIcon: [{
|
|
3399
|
+
type: Input
|
|
3400
|
+
}], columnFilterUpdateMethod: [{
|
|
3401
|
+
type: Input
|
|
3402
|
+
}], columnFilterUpdateDebounce: [{
|
|
3403
|
+
type: Input
|
|
3404
|
+
}], scroll: [{
|
|
3405
|
+
type: Output
|
|
3406
|
+
}], activate: [{
|
|
3407
|
+
type: Output
|
|
3408
|
+
}], select: [{
|
|
3409
|
+
type: Output
|
|
3410
|
+
}], sort: [{
|
|
3411
|
+
type: Output
|
|
3412
|
+
}], page: [{
|
|
3413
|
+
type: Output
|
|
3414
|
+
}], reorder: [{
|
|
3415
|
+
type: Output
|
|
3416
|
+
}], resize: [{
|
|
3417
|
+
type: Output
|
|
3418
|
+
}], tableContextmenu: [{
|
|
3419
|
+
type: Output
|
|
3420
|
+
}], treeAction: [{
|
|
3421
|
+
type: Output
|
|
3422
|
+
}], actionRefreshRequest: [{
|
|
3423
|
+
type: Output
|
|
3424
|
+
}], hiddenColumnsChange: [{
|
|
3425
|
+
type: Output
|
|
3426
|
+
}], columnComponents: [{
|
|
3427
|
+
type: ContentChildren,
|
|
3428
|
+
args: [DatatableColumnComponent]
|
|
3429
|
+
}], actionMenu: [{
|
|
3430
|
+
type: ContentChild,
|
|
3431
|
+
args: [DatatableActionMenuComponent, { static: true }]
|
|
3432
|
+
}], rowActionItem: [{
|
|
3433
|
+
type: ContentChild,
|
|
3434
|
+
args: [DatatableRowActionItemDirective]
|
|
3435
|
+
}], rowDetail: [{
|
|
3436
|
+
type: ContentChild,
|
|
3437
|
+
args: [TheSeamDatatableRowDetailDirective, { static: true }]
|
|
3438
|
+
}], footer: [{
|
|
3439
|
+
type: ContentChild,
|
|
3440
|
+
args: [TheSeamDatatableFooterDirective, { static: true }]
|
|
3441
|
+
}], menuBarComponent: [{
|
|
3442
|
+
type: ContentChild,
|
|
3443
|
+
args: [DatatableMenuBarComponent]
|
|
3444
|
+
}], columnFilterTemplates: [{
|
|
3445
|
+
type: ContentChildren,
|
|
3446
|
+
args: [TheSeamDatatableColumnFilterDirective]
|
|
3447
|
+
}], ngxDatatable: [{
|
|
3448
|
+
type: ViewChild,
|
|
3449
|
+
args: [DatatableComponent$1]
|
|
3450
|
+
}], ngxDatatableElement: [{
|
|
3451
|
+
type: ViewChild,
|
|
3452
|
+
args: [DatatableComponent$1, { read: ElementRef }]
|
|
3453
|
+
}], ngxRowDetail: [{
|
|
3454
|
+
type: ViewChild,
|
|
3455
|
+
args: [DatatableRowDetailDirective]
|
|
3456
|
+
}], actionMenuCellTpl: [{
|
|
3457
|
+
type: ViewChild,
|
|
3458
|
+
args: ['actionMenuCellTpl', { static: true }]
|
|
3459
|
+
}], treeToggleTpl: [{
|
|
3460
|
+
type: ViewChild,
|
|
3461
|
+
args: ['treeToggleTpl', { static: true }]
|
|
3462
|
+
}], headerTpl: [{
|
|
3463
|
+
type: ViewChild,
|
|
3464
|
+
args: ['headerTpl', { static: true }]
|
|
3465
|
+
}], blankHeaderTpl: [{
|
|
3466
|
+
type: ViewChild,
|
|
3467
|
+
args: ['blankHeaderTpl', { static: true }]
|
|
3468
|
+
}], cellTypeSelectorTpl: [{
|
|
3469
|
+
type: ViewChild,
|
|
3470
|
+
args: ['cellTypeSelectorTpl', { static: true }]
|
|
3471
|
+
}], _dblClick: [{
|
|
3472
|
+
type: HostListener,
|
|
3473
|
+
args: ['dblclick', ['$event']]
|
|
3474
|
+
}] } });
|
|
3475
|
+
|
|
3476
|
+
class DatatableColumnPreferencesComponent {
|
|
3477
|
+
_datatable;
|
|
3478
|
+
_columnsAlterationsManager;
|
|
3479
|
+
_columns$;
|
|
3480
|
+
_filterControl = new UntypedFormControl();
|
|
3481
|
+
constructor(_datatable, _columnsAlterationsManager) {
|
|
3482
|
+
this._datatable = _datatable;
|
|
3483
|
+
this._columnsAlterationsManager = _columnsAlterationsManager;
|
|
3484
|
+
this._columns$ = combineLatest([
|
|
3485
|
+
this._datatable.columns$ ?? of([]),
|
|
3486
|
+
observeControlValue(this._filterControl)
|
|
3487
|
+
]).pipe(map(([columns, filter]) => {
|
|
3488
|
+
const _filter = (filter || '').trim().toLowerCase();
|
|
3489
|
+
return columns
|
|
3490
|
+
.filter(c => this._canToggleColumn(c, _filter));
|
|
3491
|
+
}));
|
|
3492
|
+
}
|
|
3493
|
+
_canToggleColumn(column, filter, omitInternalColumns = true) {
|
|
3494
|
+
if (omitInternalColumns && isInternalColumn(column)) {
|
|
3495
|
+
return false;
|
|
3496
|
+
}
|
|
3497
|
+
return this._columnMatchesFilter(column, filter);
|
|
3498
|
+
}
|
|
3499
|
+
_columnMatchesFilter(column, filter) {
|
|
3500
|
+
if (filter.length === 0) {
|
|
3501
|
+
return true;
|
|
3502
|
+
}
|
|
3503
|
+
return `${(getColumnProp(column) || '')}`.toLowerCase().indexOf(filter) !== -1;
|
|
3504
|
+
}
|
|
3505
|
+
_onChange(event, col) {
|
|
3506
|
+
const columnProp = getColumnProp(col);
|
|
3507
|
+
const hidden = !event.checked;
|
|
3508
|
+
if (!notNullOrUndefined(columnProp)) {
|
|
3509
|
+
throw Error(`Unable to get column prop.`);
|
|
3510
|
+
}
|
|
3511
|
+
const alteration = new HideColumnColumnsAlteration({
|
|
3512
|
+
columnProp,
|
|
3513
|
+
hidden
|
|
3514
|
+
}, hidden);
|
|
3515
|
+
this._columnsAlterationsManager.add([alteration]);
|
|
3516
|
+
}
|
|
3517
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnPreferencesComponent, deps: [{ token: THESEAM_DATATABLE }, { token: ColumnsAlterationsManagerService }], target: i0.ɵɵFactoryTarget.Component });
|
|
3518
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableColumnPreferencesComponent, isStandalone: false, selector: "seam-datatable-column-preferences", ngImport: i0, template: "<h3>Columns</h3>\n\n<seam-form-field [numPaddingErrors]=\"0\" >\n <input seamInput [formControl]=\"_filterControl\" seamInputSize=\"sm\" placeholder=\"Search\" seamAutoFocus>\n</seam-form-field>\n\n<div seamOverlayScrollbar style=\"min-height: 200px; max-height: 600px; min-width: 250px;\" class=\"flex-grow-1 mb-2\">\n <div class=\"p-2\">\n <ng-container *ngFor=\"let col of _columns$ | async\">\n <seam-checkbox [checked]=\"!col.hidden\" (change)=\"_onChange($event, col)\">{{ col.name || col.prop }}</seam-checkbox>\n </ng-container>\n </div>\n\n</div>\n<div class=\"d-flex flex-row justify-content-end\">\n <!-- <button seamButton size=\"sm\" theme=\"lightgray\" (click)=\"_onCloseClick()\">Close</button> -->\n <!-- <button seamButton size=\"sm\" theme=\"lightgray\" class=\"mr-1\">Cancel</button>\n <button seamButton size=\"sm\" theme=\"success\">Done</button> -->\n</div>\n", styles: [":host{display:flex;flex-direction:column}\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$2.TheSeamAutoFocusDirective, selector: "[seamAutoFocus]", inputs: ["seamAutoFocus"], exportAs: ["seamAutoFocus"] }, { kind: "component", type: i4$2.TheSeamCheckboxComponent, selector: "seam-checkbox", inputs: ["tabIndex", "id", "aria-label", "aria-labelledby", "required", "checked", "disabled", "indeterminate", "name", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["seamCheckbox"] }, { kind: "component", type: i3.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i3.InputDirective, selector: "input[seamInput], textarea[seamInput], ng-select[seamInput], seam-tel-input[seamInput], quill-editor[seamInput], seam-google-maps[seamInput], seam-rich-text[seamInput]", inputs: ["seamInputSize", "id", "type", "placeholder", "required", "disabled", "readonly"], exportAs: ["seamInput"] }, { kind: "directive", type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3519
|
+
}
|
|
3520
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnPreferencesComponent, decorators: [{
|
|
3521
|
+
type: Component,
|
|
3522
|
+
args: [{ selector: 'seam-datatable-column-preferences', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<h3>Columns</h3>\n\n<seam-form-field [numPaddingErrors]=\"0\" >\n <input seamInput [formControl]=\"_filterControl\" seamInputSize=\"sm\" placeholder=\"Search\" seamAutoFocus>\n</seam-form-field>\n\n<div seamOverlayScrollbar style=\"min-height: 200px; max-height: 600px; min-width: 250px;\" class=\"flex-grow-1 mb-2\">\n <div class=\"p-2\">\n <ng-container *ngFor=\"let col of _columns$ | async\">\n <seam-checkbox [checked]=\"!col.hidden\" (change)=\"_onChange($event, col)\">{{ col.name || col.prop }}</seam-checkbox>\n </ng-container>\n </div>\n\n</div>\n<div class=\"d-flex flex-row justify-content-end\">\n <!-- <button seamButton size=\"sm\" theme=\"lightgray\" (click)=\"_onCloseClick()\">Close</button> -->\n <!-- <button seamButton size=\"sm\" theme=\"lightgray\" class=\"mr-1\">Cancel</button>\n <button seamButton size=\"sm\" theme=\"success\">Done</button> -->\n</div>\n", styles: [":host{display:flex;flex-direction:column}\n"] }]
|
|
3523
|
+
}], ctorParameters: () => [{ type: DatatableComponent, decorators: [{
|
|
3524
|
+
type: Inject,
|
|
3525
|
+
args: [THESEAM_DATATABLE]
|
|
3526
|
+
}] }, { type: ColumnsAlterationsManagerService }] });
|
|
3527
|
+
|
|
3528
|
+
class DatatableColumnPreferencesButtonComponent {
|
|
3529
|
+
_columnsAlterationsManager;
|
|
3530
|
+
icon = faColumns;
|
|
3531
|
+
/** @ignore */
|
|
3532
|
+
_actionMenuPositions = [
|
|
3533
|
+
{
|
|
3534
|
+
originX: 'start',
|
|
3535
|
+
originY: 'bottom',
|
|
3536
|
+
overlayX: 'end',
|
|
3537
|
+
overlayY: 'top',
|
|
3538
|
+
},
|
|
3539
|
+
{
|
|
3540
|
+
originX: 'start',
|
|
3541
|
+
originY: 'top',
|
|
3542
|
+
overlayX: 'end',
|
|
3543
|
+
overlayY: 'bottom',
|
|
3544
|
+
},
|
|
3545
|
+
{
|
|
3546
|
+
originX: 'end',
|
|
3547
|
+
originY: 'bottom',
|
|
3548
|
+
overlayX: 'start',
|
|
3549
|
+
overlayY: 'top',
|
|
3550
|
+
},
|
|
3551
|
+
{
|
|
3552
|
+
originX: 'end',
|
|
3553
|
+
originY: 'top',
|
|
3554
|
+
overlayX: 'start',
|
|
3555
|
+
overlayY: 'bottom',
|
|
3556
|
+
},
|
|
3557
|
+
];
|
|
3558
|
+
constructor(_columnsAlterationsManager) {
|
|
3559
|
+
this._columnsAlterationsManager = _columnsAlterationsManager;
|
|
3560
|
+
}
|
|
3561
|
+
_resetColumns(event) {
|
|
3562
|
+
this._columnsAlterationsManager.clear();
|
|
3563
|
+
}
|
|
3564
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnPreferencesButtonComponent, deps: [{ token: ColumnsAlterationsManagerService }], target: i0.ɵɵFactoryTarget.Component });
|
|
3565
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableColumnPreferencesButtonComponent, isStandalone: false, selector: "seam-datatable-column-preferences-button", ngImport: i0, template: "<ng-template #colPrefsTpl>\n <seam-datatable-column-preferences></seam-datatable-column-preferences>\n</ng-template>\n\n<seam-menu #menu\n menuClass=\"list-group py-0 border-0 seam-datatable-action-menu\"\n animationType=\"fade\">\n <button seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n [seamPopover]=\"colPrefsTpl\">\n Show/Hide Columns\n </button>\n\n <button seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n (click)=\"_resetColumns($event)\">\n Reset Columns\n </button>\n</seam-menu>\n\n<button type=\"button\" class=\"btn btn-lightgray btn-sm\"\n [seamMenuToggle]=\"menu\"\n [positions]=\"_actionMenuPositions || []\"\n style=\"padding-left: 10px; padding-right: 10px;\"\n title=\"Column Preferences\">\n <seam-icon [icon]=\"icon\"></seam-icon>\n <span class=\"sr-only\">Column Preferences</span>\n</button>\n\n", styles: [""], dependencies: [{ kind: "component", type: i4.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i4.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuToggle", "menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: i4.MenuItemComponent, selector: "[seamMenuItem]", inputs: ["disabled", "role", "icon", "iconClass", "sublevelIcon", "subLevelIconClass", "badgeText", "badgeTheme"], exportAs: ["seamMenuItem"] }, { kind: "component", type: i5.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "directive", type: i11.TheSeamPopoverDirective, selector: "[seamPopover]", inputs: ["seamPopover", "seamPopoverContext", "seamPopoverBaseWidth", "seamPopoverDisabled"], exportAs: ["seamPopover"] }, { kind: "component", type: DatatableColumnPreferencesComponent, selector: "seam-datatable-column-preferences" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3566
|
+
}
|
|
3567
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableColumnPreferencesButtonComponent, decorators: [{
|
|
3568
|
+
type: Component,
|
|
3569
|
+
args: [{ selector: 'seam-datatable-column-preferences-button', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-template #colPrefsTpl>\n <seam-datatable-column-preferences></seam-datatable-column-preferences>\n</ng-template>\n\n<seam-menu #menu\n menuClass=\"list-group py-0 border-0 seam-datatable-action-menu\"\n animationType=\"fade\">\n <button seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n [seamPopover]=\"colPrefsTpl\">\n Show/Hide Columns\n </button>\n\n <button seamMenuItem\n type=\"button\"\n class=\"list-group-item list-group-item-action py-1\"\n (click)=\"_resetColumns($event)\">\n Reset Columns\n </button>\n</seam-menu>\n\n<button type=\"button\" class=\"btn btn-lightgray btn-sm\"\n [seamMenuToggle]=\"menu\"\n [positions]=\"_actionMenuPositions || []\"\n style=\"padding-left: 10px; padding-right: 10px;\"\n title=\"Column Preferences\">\n <seam-icon [icon]=\"icon\"></seam-icon>\n <span class=\"sr-only\">Column Preferences</span>\n</button>\n\n" }]
|
|
3570
|
+
}], ctorParameters: () => [{ type: ColumnsAlterationsManagerService }] });
|
|
3571
|
+
|
|
3572
|
+
class DatatableExportButtonComponent {
|
|
3573
|
+
_datatable;
|
|
3574
|
+
_toastr;
|
|
3575
|
+
_loading;
|
|
3576
|
+
_valueHelper;
|
|
3577
|
+
_data;
|
|
3578
|
+
icon = faFileDownload;
|
|
3579
|
+
exporters;
|
|
3580
|
+
get disabled() {
|
|
3581
|
+
return !(this.exporters && this.exporters.length > 0);
|
|
3582
|
+
}
|
|
3583
|
+
constructor(_datatable, _toastr, _loading, _valueHelper, _data) {
|
|
3584
|
+
this._datatable = _datatable;
|
|
3585
|
+
this._toastr = _toastr;
|
|
3586
|
+
this._loading = _loading;
|
|
3587
|
+
this._valueHelper = _valueHelper;
|
|
3588
|
+
this._data = _data;
|
|
3589
|
+
if (this._data && this._data.exporters) {
|
|
3590
|
+
this.exporters = this._data.exporters;
|
|
3591
|
+
}
|
|
3592
|
+
}
|
|
3593
|
+
_onExporterClicked(exporter) {
|
|
3594
|
+
if (!exporter.export) {
|
|
3595
|
+
const msg = isDevMode()
|
|
3596
|
+
? `Exporter '${exporter.name}' is missing an export method.`
|
|
3597
|
+
: `${exporter.label} export is not available.`;
|
|
3598
|
+
this._toastr.error(msg, 'Data Export');
|
|
3599
|
+
}
|
|
3600
|
+
const export$ = combineLatest([
|
|
3601
|
+
this._datatable.rows$,
|
|
3602
|
+
this._datatable.columns$.pipe(map(cols => cols.filter(c => !isInternalColumn(c))))
|
|
3603
|
+
]).pipe(take(1), map(([rows, columns]) => {
|
|
3604
|
+
if (exporter.skipDataMapping) {
|
|
3605
|
+
return rows;
|
|
3606
|
+
}
|
|
3607
|
+
return this._mapExportData(columns || [], rows);
|
|
3608
|
+
}), concatMap(data => exporter.export(data)), catchError(err => {
|
|
3609
|
+
// eslint-disable-next-line no-console
|
|
3610
|
+
console.error(err);
|
|
3611
|
+
return of(false);
|
|
3612
|
+
}), tap(success => {
|
|
3613
|
+
if (success) {
|
|
3614
|
+
this._toastr.success(`${exporter.label} export complete.`, 'Data Export');
|
|
3615
|
+
}
|
|
3616
|
+
else {
|
|
3617
|
+
this._toastr.error(`${exporter.label} export failed.`, 'Data Export');
|
|
3618
|
+
}
|
|
3619
|
+
}));
|
|
3620
|
+
this._loading.while(export$).subscribe();
|
|
3621
|
+
}
|
|
3622
|
+
_mapExportData(columns, rows) {
|
|
3623
|
+
const data = [];
|
|
3624
|
+
for (const row of rows) {
|
|
3625
|
+
const newRow = {};
|
|
3626
|
+
for (const col of columns) {
|
|
3627
|
+
if (!col.exportIgnore) {
|
|
3628
|
+
const colName = col.exportHeader || col.name || col.prop;
|
|
3629
|
+
if (colName) {
|
|
3630
|
+
newRow[colName] = this._rowValue(col, row);
|
|
3631
|
+
}
|
|
3632
|
+
}
|
|
3633
|
+
}
|
|
3634
|
+
data.push(newRow);
|
|
3635
|
+
}
|
|
3636
|
+
return data;
|
|
3637
|
+
}
|
|
3638
|
+
_rowValue(column, row) {
|
|
3639
|
+
if (hasProperty(column, 'exportValue')) {
|
|
3640
|
+
const context = { value: column.prop ? row[column.prop] : undefined, row };
|
|
3641
|
+
return this._valueHelper.evalSync(column.exportValue, context);
|
|
3642
|
+
}
|
|
3643
|
+
const colProp = column.prop;
|
|
3644
|
+
if (colProp) {
|
|
3645
|
+
return row[colProp];
|
|
3646
|
+
}
|
|
3647
|
+
return undefined;
|
|
3648
|
+
}
|
|
3649
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableExportButtonComponent, deps: [{ token: THESEAM_DATATABLE }, { token: i1$2.ToastrService }, { token: i2$3.TheSeamLoadingOverlayService }, { token: i3$2.DynamicValueHelperService }, { token: THESEAM_DYNAMIC_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
3650
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableExportButtonComponent, isStandalone: false, selector: "seam-datatable-export-button", inputs: { exporters: "exporters" }, ngImport: i0, template: "<seam-menu #menu>\n <button *ngFor=\"let exp of exporters\"\n seamMenuItem\n [icon]=\"exp?.icon\"\n (click)=\"_onExporterClicked(exp)\">\n {{ exp.label }}\n </button>\n</seam-menu>\n<button\n [seamMenuToggle]=\"menu\"\n seamButton\n theme=\"lightgray\"\n size=\"sm\"\n class=\"dropdown-toggle\"\n style=\"padding-left: 10px; padding-right: 10px;\"\n title=\"Export\"\n [disabled]=\"disabled\"\n >\n <seam-icon [icon]=\"icon\" class=\"mr-2\"></seam-icon>\n</button>\n", styles: [":host{display:inline-block}\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i4.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i4.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuToggle", "menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: i4.MenuItemComponent, selector: "[seamMenuItem]", inputs: ["disabled", "role", "icon", "iconClass", "sublevelIcon", "subLevelIconClass", "badgeText", "badgeTheme"], exportAs: ["seamMenuItem"] }, { kind: "component", type: i5.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "component", type: i3$1.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3651
|
+
}
|
|
3652
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableExportButtonComponent, decorators: [{
|
|
3653
|
+
type: Component,
|
|
3654
|
+
args: [{ selector: 'seam-datatable-export-button', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<seam-menu #menu>\n <button *ngFor=\"let exp of exporters\"\n seamMenuItem\n [icon]=\"exp?.icon\"\n (click)=\"_onExporterClicked(exp)\">\n {{ exp.label }}\n </button>\n</seam-menu>\n<button\n [seamMenuToggle]=\"menu\"\n seamButton\n theme=\"lightgray\"\n size=\"sm\"\n class=\"dropdown-toggle\"\n style=\"padding-left: 10px; padding-right: 10px;\"\n title=\"Export\"\n [disabled]=\"disabled\"\n >\n <seam-icon [icon]=\"icon\" class=\"mr-2\"></seam-icon>\n</button>\n", styles: [":host{display:inline-block}\n"] }]
|
|
3655
|
+
}], ctorParameters: () => [{ type: DatatableComponent, decorators: [{
|
|
3656
|
+
type: Inject,
|
|
3657
|
+
args: [THESEAM_DATATABLE]
|
|
3658
|
+
}] }, { type: i1$2.ToastrService }, { type: i2$3.TheSeamLoadingOverlayService }, { type: i3$2.DynamicValueHelperService }, { type: undefined, decorators: [{
|
|
3659
|
+
type: Optional
|
|
3660
|
+
}, {
|
|
3661
|
+
type: Inject,
|
|
3662
|
+
args: [THESEAM_DYNAMIC_DATA]
|
|
3663
|
+
}] }], propDecorators: { exporters: [{
|
|
3664
|
+
type: Input
|
|
3665
|
+
}] } });
|
|
3666
|
+
|
|
3667
|
+
class DatatableMenuBarColumnCenterComponent {
|
|
3668
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableMenuBarColumnCenterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3669
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableMenuBarColumnCenterComponent, isStandalone: false, selector: "seam-datatable-menu-bar-column-center", ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:flex;flex-direction:row;flex:1 1 auto;justify-content:center}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3670
|
+
}
|
|
3671
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableMenuBarColumnCenterComponent, decorators: [{
|
|
3672
|
+
type: Component,
|
|
3673
|
+
args: [{ selector: 'seam-datatable-menu-bar-column-center', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-content></ng-content>\n", styles: [":host{display:flex;flex-direction:row;flex:1 1 auto;justify-content:center}\n"] }]
|
|
3674
|
+
}] });
|
|
3675
|
+
|
|
3676
|
+
class DatatableMenuBarColumnLeftComponent {
|
|
3677
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableMenuBarColumnLeftComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3678
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableMenuBarColumnLeftComponent, isStandalone: false, selector: "seam-datatable-menu-bar-column-left", ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:flex;flex-direction:row;flex:1 1 0%;justify-content:flex-start}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3679
|
+
}
|
|
3680
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableMenuBarColumnLeftComponent, decorators: [{
|
|
3681
|
+
type: Component,
|
|
3682
|
+
args: [{ selector: 'seam-datatable-menu-bar-column-left', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-content></ng-content>\n", styles: [":host{display:flex;flex-direction:row;flex:1 1 0%;justify-content:flex-start}\n"] }]
|
|
3683
|
+
}] });
|
|
3684
|
+
|
|
3685
|
+
class DatatableMenuBarColumnRightComponent {
|
|
3686
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableMenuBarColumnRightComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3687
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableMenuBarColumnRightComponent, isStandalone: false, selector: "seam-datatable-menu-bar-column-right", ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:flex;flex-direction:row;flex:1 1 0%;justify-content:flex-end}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3688
|
+
}
|
|
3689
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableMenuBarColumnRightComponent, decorators: [{
|
|
3690
|
+
type: Component,
|
|
3691
|
+
args: [{ selector: 'seam-datatable-menu-bar-column-right', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-content></ng-content>\n", styles: [":host{display:flex;flex-direction:row;flex:1 1 0%;justify-content:flex-end}\n"] }]
|
|
3692
|
+
}] });
|
|
3693
|
+
|
|
3694
|
+
class DatatableMenuBarRowComponent {
|
|
3695
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableMenuBarRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3696
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableMenuBarRowComponent, isStandalone: false, selector: "seam-datatable-menu-bar-row", ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3697
|
+
}
|
|
3698
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableMenuBarRowComponent, decorators: [{
|
|
3699
|
+
type: Component,
|
|
3700
|
+
args: [{ selector: 'seam-datatable-menu-bar-row', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-content></ng-content>\n", styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap}\n"] }]
|
|
3701
|
+
}] });
|
|
3702
|
+
|
|
3703
|
+
const THESEAM_MENUBAR_ITEM_DATA = new InjectionToken('MenubarItemData');
|
|
3704
|
+
|
|
3705
|
+
class DatatableMenuBarTextComponent {
|
|
3706
|
+
_menuBar;
|
|
3707
|
+
_data;
|
|
3708
|
+
value;
|
|
3709
|
+
constructor(_menuBar, _data) {
|
|
3710
|
+
this._menuBar = _menuBar;
|
|
3711
|
+
this._data = _data;
|
|
3712
|
+
if (notNullOrUndefined(this._data)) {
|
|
3713
|
+
if (hasProperty(this._data, 'value')) {
|
|
3714
|
+
this.value = this._data.value;
|
|
3715
|
+
}
|
|
3716
|
+
}
|
|
3717
|
+
}
|
|
3718
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableMenuBarTextComponent, deps: [{ token: DatatableMenuBarComponent }, { token: THESEAM_MENUBAR_ITEM_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
3719
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DatatableMenuBarTextComponent, isStandalone: false, selector: "seam-datatable-menu-bar-text", inputs: { value: "value" }, ngImport: i0, template: "{{ value }}\n", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3720
|
+
}
|
|
3721
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableMenuBarTextComponent, decorators: [{
|
|
3722
|
+
type: Component,
|
|
3723
|
+
args: [{ selector: 'seam-datatable-menu-bar-text', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "{{ value }}\n" }]
|
|
3724
|
+
}], ctorParameters: () => [{ type: DatatableMenuBarComponent }, { type: undefined, decorators: [{
|
|
3725
|
+
type: Optional
|
|
3726
|
+
}, {
|
|
3727
|
+
type: Inject,
|
|
3728
|
+
args: [THESEAM_MENUBAR_ITEM_DATA]
|
|
3729
|
+
}] }], propDecorators: { value: [{
|
|
3730
|
+
type: Input
|
|
3731
|
+
}] } });
|
|
3732
|
+
|
|
3733
|
+
class DatatableActionMenuItemDirective {
|
|
3734
|
+
_modal;
|
|
3735
|
+
_dynamicComponentLoader;
|
|
3736
|
+
_http;
|
|
3737
|
+
_listGroupItem = true;
|
|
3738
|
+
_listGroupItemAction = true;
|
|
3739
|
+
label;
|
|
3740
|
+
// eslint-disable-next-line @angular-eslint/no-input-rename
|
|
3741
|
+
href;
|
|
3742
|
+
target;
|
|
3743
|
+
// Allow routerLink inputs on menu item
|
|
3744
|
+
queryParams;
|
|
3745
|
+
fragment;
|
|
3746
|
+
// @Input() queryParamsHandling: QueryParamsHandling
|
|
3747
|
+
queryParamsHandling;
|
|
3748
|
+
preserveFragment;
|
|
3749
|
+
skipLocationChange;
|
|
3750
|
+
replaceUrl;
|
|
3751
|
+
state;
|
|
3752
|
+
routerLink;
|
|
3753
|
+
confirmDialog;
|
|
3754
|
+
// @Input()
|
|
3755
|
+
// get endpointConfig(): IActionMenuItemEndpointConfig { return this._endpointConfig }
|
|
3756
|
+
// set endpointConfig(value: IActionMenuItemEndpointConfig) {
|
|
3757
|
+
// this._endpointConfig = value
|
|
3758
|
+
// if (value) {
|
|
3759
|
+
// // TODO: Handle this in a way that can be canceled.
|
|
3760
|
+
// this._endpointConfigSub = this.click
|
|
3761
|
+
// .pipe(untilDestroyed(this))
|
|
3762
|
+
// .subscribe(e => this._handleEndpointAction())
|
|
3763
|
+
// } else {
|
|
3764
|
+
// if (this._endpointConfigSub) {
|
|
3765
|
+
// this._endpointConfigSub.unsubscribe()
|
|
3766
|
+
// }
|
|
3767
|
+
// }
|
|
3768
|
+
// }
|
|
3769
|
+
// private _endpointConfig: IActionMenuItemEndpointConfig
|
|
3770
|
+
// private _endpointConfigSub: Subscription
|
|
3771
|
+
// @Input()
|
|
3772
|
+
// get modalConfig(): IActionMenuItemModalConfig { return this._modalConfig }
|
|
3773
|
+
// set modalConfig(value: IActionMenuItemModalConfig) {
|
|
3774
|
+
// this._modalConfig = value
|
|
3775
|
+
// if (value) {
|
|
3776
|
+
// // TODO: Handle this in a way that can be canceled.
|
|
3777
|
+
// this._modalConfigSub = this.click
|
|
3778
|
+
// .pipe(untilDestroyed(this))
|
|
3779
|
+
// .subscribe(e => this._handleModalAction())
|
|
3780
|
+
// } else {
|
|
3781
|
+
// if (this._modalConfigSub) {
|
|
3782
|
+
// this._modalConfigSub.unsubscribe()
|
|
3783
|
+
// }
|
|
3784
|
+
// }
|
|
3785
|
+
// }
|
|
3786
|
+
// private _modalConfig: IActionMenuItemModalConfig
|
|
3787
|
+
// private _modalConfigSub: Subscription
|
|
3788
|
+
row;
|
|
3789
|
+
// eslint-disable-next-line @angular-eslint/no-output-native
|
|
3790
|
+
click = new EventEmitter();
|
|
3791
|
+
constructor(_modal, _dynamicComponentLoader, _http) {
|
|
3792
|
+
this._modal = _modal;
|
|
3793
|
+
this._dynamicComponentLoader = _dynamicComponentLoader;
|
|
3794
|
+
this._http = _http;
|
|
3795
|
+
}
|
|
3796
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableActionMenuItemDirective, deps: [{ token: i1$3.Modal }, { token: i2$4.TheSeamDynamicComponentLoader }, { token: i3$3.HttpClient, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
3797
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: DatatableActionMenuItemDirective, isStandalone: false, selector: "[seamDatatableActionMenuItem]", inputs: { label: "label", href: ["attr.href", "href"], target: "target", queryParams: "queryParams", fragment: "fragment", queryParamsHandling: "queryParamsHandling", preserveFragment: "preserveFragment", skipLocationChange: "skipLocationChange", replaceUrl: "replaceUrl", state: "state", routerLink: "routerLink", confirmDialog: "confirmDialog", row: "row" }, outputs: { click: "click" }, host: { properties: { "class.list-group-item": "this._listGroupItem", "class.list-group-item-action": "this._listGroupItemAction" } }, ngImport: i0 });
|
|
3798
|
+
}
|
|
3799
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableActionMenuItemDirective, decorators: [{
|
|
3800
|
+
type: Directive,
|
|
3801
|
+
args: [{
|
|
3802
|
+
selector: '[seamDatatableActionMenuItem]',
|
|
3803
|
+
standalone: false
|
|
3804
|
+
}]
|
|
3805
|
+
}], ctorParameters: () => [{ type: i1$3.Modal }, { type: i2$4.TheSeamDynamicComponentLoader }, { type: i3$3.HttpClient, decorators: [{
|
|
3806
|
+
type: Optional
|
|
3807
|
+
}] }], propDecorators: { _listGroupItem: [{
|
|
3808
|
+
type: HostBinding,
|
|
3809
|
+
args: ['class.list-group-item']
|
|
3810
|
+
}], _listGroupItemAction: [{
|
|
3811
|
+
type: HostBinding,
|
|
3812
|
+
args: ['class.list-group-item-action']
|
|
3813
|
+
}], label: [{
|
|
3814
|
+
type: Input
|
|
3815
|
+
}], href: [{
|
|
3816
|
+
type: Input,
|
|
3817
|
+
args: ['attr.href']
|
|
3818
|
+
}], target: [{
|
|
3819
|
+
type: Input
|
|
3820
|
+
}], queryParams: [{
|
|
3821
|
+
type: Input
|
|
3822
|
+
}], fragment: [{
|
|
3823
|
+
type: Input
|
|
3824
|
+
}], queryParamsHandling: [{
|
|
3825
|
+
type: Input
|
|
3826
|
+
}], preserveFragment: [{
|
|
3827
|
+
type: Input
|
|
3828
|
+
}], skipLocationChange: [{
|
|
3829
|
+
type: Input
|
|
3830
|
+
}], replaceUrl: [{
|
|
3831
|
+
type: Input
|
|
3832
|
+
}], state: [{
|
|
3833
|
+
type: Input
|
|
3834
|
+
}], routerLink: [{
|
|
3835
|
+
type: Input
|
|
3836
|
+
}], confirmDialog: [{
|
|
3837
|
+
type: Input
|
|
3838
|
+
}], row: [{
|
|
3839
|
+
type: Input
|
|
3840
|
+
}], click: [{
|
|
3841
|
+
type: Output
|
|
3842
|
+
}] } });
|
|
3843
|
+
|
|
3844
|
+
class DatatableActionMenuToggleDirective {
|
|
3845
|
+
_elementRef;
|
|
3846
|
+
_viewContainerRef;
|
|
3847
|
+
_overlay;
|
|
3848
|
+
seamDatatableActionMenuToggle;
|
|
3849
|
+
_active = false;
|
|
3850
|
+
_overlayRef;
|
|
3851
|
+
_actionDown = false;
|
|
3852
|
+
_onKeydown(event) {
|
|
3853
|
+
if (event.keyCode === ESCAPE) {
|
|
3854
|
+
this.disable();
|
|
3855
|
+
}
|
|
3856
|
+
}
|
|
3857
|
+
_onClick(event) {
|
|
3858
|
+
this.toggle();
|
|
3859
|
+
}
|
|
3860
|
+
_mouseDown(event) { this.onInputDown(event); }
|
|
3861
|
+
_pointerDown(event) { this.onInputDown(event); }
|
|
3862
|
+
_mouseUp(event) { this.onInputUp(event); }
|
|
3863
|
+
_pointerUp(event) { this.onInputUp(event); }
|
|
3864
|
+
constructor(_elementRef, _viewContainerRef, _overlay) {
|
|
3865
|
+
this._elementRef = _elementRef;
|
|
3866
|
+
this._viewContainerRef = _viewContainerRef;
|
|
3867
|
+
this._overlay = _overlay;
|
|
3868
|
+
}
|
|
3869
|
+
get active() { return this._active; }
|
|
3870
|
+
toggle() {
|
|
3871
|
+
if (this._active) {
|
|
3872
|
+
this.disable();
|
|
3873
|
+
}
|
|
3874
|
+
else {
|
|
3875
|
+
this.enable();
|
|
3876
|
+
}
|
|
3877
|
+
}
|
|
3878
|
+
enable() {
|
|
3879
|
+
if (this.active) {
|
|
3880
|
+
return;
|
|
3881
|
+
}
|
|
3882
|
+
if (!this.seamDatatableActionMenuToggle) {
|
|
3883
|
+
return;
|
|
3884
|
+
}
|
|
3885
|
+
this._overlayRef = this._overlay.create({
|
|
3886
|
+
hasBackdrop: false,
|
|
3887
|
+
positionStrategy: this.getOverlayPosition(this._elementRef.nativeElement),
|
|
3888
|
+
});
|
|
3889
|
+
this._overlayRef.attach(new TemplatePortal(this.seamDatatableActionMenuToggle, this._viewContainerRef));
|
|
3890
|
+
this._active = true;
|
|
3891
|
+
}
|
|
3892
|
+
disable() {
|
|
3893
|
+
if (!this.active) {
|
|
3894
|
+
return;
|
|
3895
|
+
}
|
|
3896
|
+
if (this._overlayRef?.hasAttached()) {
|
|
3897
|
+
this._overlayRef.detach();
|
|
3898
|
+
}
|
|
3899
|
+
this._active = false;
|
|
3900
|
+
}
|
|
3901
|
+
getOverlayPosition(origin) {
|
|
3902
|
+
const positionStrategy = this._overlay.position()
|
|
3903
|
+
.flexibleConnectedTo(origin)
|
|
3904
|
+
.withPositions(this.getPositions())
|
|
3905
|
+
.withFlexibleDimensions(false)
|
|
3906
|
+
.withPush(false);
|
|
3907
|
+
return positionStrategy;
|
|
3908
|
+
}
|
|
3909
|
+
getPositions() {
|
|
3910
|
+
return [
|
|
3911
|
+
{
|
|
3912
|
+
originX: 'start',
|
|
3913
|
+
originY: 'bottom',
|
|
3914
|
+
overlayX: 'end',
|
|
3915
|
+
overlayY: 'top',
|
|
3916
|
+
},
|
|
3917
|
+
{
|
|
3918
|
+
originX: 'start',
|
|
3919
|
+
originY: 'top',
|
|
3920
|
+
overlayX: 'end',
|
|
3921
|
+
overlayY: 'bottom',
|
|
3922
|
+
},
|
|
3923
|
+
{
|
|
3924
|
+
originX: 'end',
|
|
3925
|
+
originY: 'bottom',
|
|
3926
|
+
overlayX: 'start',
|
|
3927
|
+
overlayY: 'top',
|
|
3928
|
+
},
|
|
3929
|
+
{
|
|
3930
|
+
originX: 'end',
|
|
3931
|
+
originY: 'top',
|
|
3932
|
+
overlayX: 'start',
|
|
3933
|
+
overlayY: 'bottom',
|
|
3934
|
+
},
|
|
3935
|
+
];
|
|
3936
|
+
}
|
|
3937
|
+
onFocusChangeOverlay(event) {
|
|
3938
|
+
if (event === null) {
|
|
3939
|
+
if (!this._actionDown) {
|
|
3940
|
+
// this.disable()
|
|
3941
|
+
}
|
|
3942
|
+
}
|
|
3943
|
+
}
|
|
3944
|
+
onInputDown(event) {
|
|
3945
|
+
this._actionDown = true;
|
|
3946
|
+
}
|
|
3947
|
+
onInputUp(event) {
|
|
3948
|
+
this._actionDown = false;
|
|
3949
|
+
}
|
|
3950
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableActionMenuToggleDirective, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i1$4.Overlay }], target: i0.ɵɵFactoryTarget.Directive });
|
|
3951
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: DatatableActionMenuToggleDirective, isStandalone: false, selector: "[seamDatatableActionMenuToggle]", inputs: { seamDatatableActionMenuToggle: "seamDatatableActionMenuToggle" }, host: { listeners: { "document:keydown": "_onKeydown($event)", "click": "_onClick($event)", "mousedown": "_mouseDown($event)", "pointerdown": "_pointerDown($event)", "mouseup": "_mouseUp($event)", "pointerup": "_pointerUp($event)" } }, exportAs: ["seamDatatableActionMenuToggle"], ngImport: i0 });
|
|
3952
|
+
}
|
|
3953
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DatatableActionMenuToggleDirective, decorators: [{
|
|
3954
|
+
type: Directive,
|
|
3955
|
+
args: [{
|
|
3956
|
+
selector: '[seamDatatableActionMenuToggle]',
|
|
3957
|
+
exportAs: 'seamDatatableActionMenuToggle',
|
|
3958
|
+
standalone: false
|
|
3959
|
+
}]
|
|
3960
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i1$4.Overlay }], propDecorators: { seamDatatableActionMenuToggle: [{
|
|
3961
|
+
type: Input
|
|
3962
|
+
}], _onKeydown: [{
|
|
3963
|
+
type: HostListener,
|
|
3964
|
+
args: ['document:keydown', ['$event']]
|
|
3965
|
+
}], _onClick: [{
|
|
3966
|
+
type: HostListener,
|
|
3967
|
+
args: ['click', ['$event']]
|
|
3968
|
+
}], _mouseDown: [{
|
|
3969
|
+
type: HostListener,
|
|
3970
|
+
args: ['mousedown', ['$event']]
|
|
3971
|
+
}], _pointerDown: [{
|
|
3972
|
+
type: HostListener,
|
|
3973
|
+
args: ['pointerdown', ['$event']]
|
|
3974
|
+
}], _mouseUp: [{
|
|
3975
|
+
type: HostListener,
|
|
3976
|
+
args: ['mouseup', ['$event']]
|
|
3977
|
+
}], _pointerUp: [{
|
|
3978
|
+
type: HostListener,
|
|
3979
|
+
args: ['pointerup', ['$event']]
|
|
3980
|
+
}] } });
|
|
3981
|
+
|
|
3982
|
+
class DatatableGqlDataSource extends DatatableDataSource {
|
|
3983
|
+
connect(collectionViewer) {
|
|
3984
|
+
throw new Error('Method not implemented.');
|
|
3985
|
+
// return combineLatest([
|
|
3986
|
+
// this.sorts$,
|
|
3987
|
+
// this.filterStates$,
|
|
3988
|
+
// this.page$
|
|
3989
|
+
// ]).pipe()
|
|
3990
|
+
}
|
|
3991
|
+
disconnect(collectionViewer) {
|
|
3992
|
+
throw new Error('Method not implemented.');
|
|
3993
|
+
}
|
|
3994
|
+
}
|
|
3995
|
+
|
|
3996
|
+
class TheSeamDatatableScrollbarHelperService {
|
|
3997
|
+
_ngZone;
|
|
3998
|
+
_scrollbars;
|
|
3999
|
+
width = 0;
|
|
4000
|
+
/**
|
|
4001
|
+
* Animates programmatic scrolling, such as switching pages.
|
|
4002
|
+
*
|
|
4003
|
+
* NOTE: Animating the scrolling works, but the datatable may need changes
|
|
4004
|
+
* before this is enabled, because it seems a little stuttery when it moves.
|
|
4005
|
+
*/
|
|
4006
|
+
animatedScrolling = false;
|
|
4007
|
+
animatedScrollingTime = 250;
|
|
4008
|
+
constructor(_ngZone, _scrollbars) {
|
|
4009
|
+
this._ngZone = _ngZone;
|
|
4010
|
+
this._scrollbars = _scrollbars;
|
|
4011
|
+
}
|
|
4012
|
+
onInitScroller(scroller) {
|
|
4013
|
+
this._scrollbars.initializeInstance(scroller.parentElement, {
|
|
4014
|
+
callbacks: {
|
|
4015
|
+
onScroll: e => {
|
|
4016
|
+
this._ngZone.run(() => {
|
|
4017
|
+
scroller.onScrolled(e);
|
|
4018
|
+
});
|
|
4019
|
+
}
|
|
4020
|
+
}
|
|
4021
|
+
});
|
|
4022
|
+
}
|
|
4023
|
+
onDestroyScroller(scroller) {
|
|
4024
|
+
this._scrollbars.destroyInstance(scroller.parentElement);
|
|
4025
|
+
}
|
|
4026
|
+
setOffset(scroller, offsetY) {
|
|
4027
|
+
this._ngZone.runOutsideAngular(() => {
|
|
4028
|
+
if (this.animatedScrolling) {
|
|
4029
|
+
this._scrollbars.getInstance(scroller.parentElement)
|
|
4030
|
+
.scroll({ y: offsetY }, this.animatedScrollingTime);
|
|
4031
|
+
}
|
|
4032
|
+
else {
|
|
4033
|
+
this._scrollbars.getInstance(scroller.parentElement)
|
|
4034
|
+
.scroll({ y: offsetY });
|
|
4035
|
+
}
|
|
4036
|
+
});
|
|
4037
|
+
}
|
|
4038
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDatatableScrollbarHelperService, deps: [{ token: i0.NgZone }, { token: i1$5.TheSeamOverlayScrollbarsService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4039
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDatatableScrollbarHelperService });
|
|
4040
|
+
}
|
|
4041
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDatatableScrollbarHelperService, decorators: [{
|
|
4042
|
+
type: Injectable
|
|
4043
|
+
}], ctorParameters: () => [{ type: i0.NgZone }, { type: i1$5.TheSeamOverlayScrollbarsService }] });
|
|
4044
|
+
|
|
4045
|
+
function withStoredColumnInfo(columns, preferenceColumns) {
|
|
4046
|
+
const _columns = [];
|
|
4047
|
+
for (const col of columns) {
|
|
4048
|
+
const storedCol = preferenceColumns.find(v => v.prop === col.prop);
|
|
4049
|
+
if (storedCol) {
|
|
4050
|
+
const _col = { ...col };
|
|
4051
|
+
if (hasProperty(storedCol, 'width')) {
|
|
4052
|
+
_col.width = Math.max(storedCol.width, 0);
|
|
4053
|
+
}
|
|
4054
|
+
_col.canAutoResize = storedCol.canAutoResize;
|
|
4055
|
+
_columns.push(_col);
|
|
4056
|
+
}
|
|
4057
|
+
else {
|
|
4058
|
+
_columns.push(col);
|
|
4059
|
+
}
|
|
4060
|
+
}
|
|
4061
|
+
return _columns;
|
|
4062
|
+
}
|
|
4063
|
+
|
|
4064
|
+
class TheSeamDatatableModule {
|
|
4065
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDatatableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
4066
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDatatableModule, declarations: [DatatableComponent,
|
|
4067
|
+
DatatableCellTplDirective,
|
|
4068
|
+
DatatableColumnComponent,
|
|
4069
|
+
DatatableActionMenuComponent,
|
|
4070
|
+
DatatableActionMenuToggleDirective,
|
|
4071
|
+
DatatableActionMenuItemComponent,
|
|
4072
|
+
DatatableMenuBarComponent,
|
|
4073
|
+
DatatableFilterDirective,
|
|
4074
|
+
DatatableRowActionItemDirective,
|
|
4075
|
+
DatatableExportButtonComponent,
|
|
4076
|
+
TheSeamDatatableRowDetailDirective,
|
|
4077
|
+
DatatableRowDetailTplDirective,
|
|
4078
|
+
TheSeamDatatableFooterDirective,
|
|
4079
|
+
DatatableFooterTplDirective,
|
|
4080
|
+
DatatableColumnPreferencesComponent,
|
|
4081
|
+
DatatableColumnPreferencesButtonComponent,
|
|
4082
|
+
DatatableActionMenuItemDirective,
|
|
4083
|
+
DatatableMenuBarRowComponent,
|
|
4084
|
+
DatatableMenuBarColumnLeftComponent,
|
|
4085
|
+
DatatableMenuBarColumnCenterComponent,
|
|
4086
|
+
DatatableMenuBarColumnRightComponent,
|
|
4087
|
+
DatatableMenuBarTextComponent,
|
|
4088
|
+
DatatableColumnFilterMenuComponent,
|
|
4089
|
+
DatatableColumnFilterSearchTextComponent,
|
|
4090
|
+
DatatableColumnFilterSearchNumericComponent,
|
|
4091
|
+
DatatableColumnFilterSearchDateComponent,
|
|
4092
|
+
DatatableColumnFilterTplDirective,
|
|
4093
|
+
TheSeamDatatableColumnFilterDirective], imports: [CommonModule,
|
|
4094
|
+
NgxDatatableModule,
|
|
4095
|
+
FontAwesomeModule,
|
|
4096
|
+
OverlayModule,
|
|
4097
|
+
A11yModule,
|
|
4098
|
+
TheSeamSharedModule,
|
|
4099
|
+
RouterModule,
|
|
4100
|
+
TheSeamMenuModule,
|
|
4101
|
+
TheSeamButtonsModule,
|
|
4102
|
+
TheSeamIconModule,
|
|
4103
|
+
ToastrModule,
|
|
4104
|
+
TheSeamLoadingModule,
|
|
4105
|
+
PortalModule,
|
|
4106
|
+
TheSeamConfirmDialogModule,
|
|
4107
|
+
TheSeamPopoverModule,
|
|
4108
|
+
TheSeamCheckboxComponent,
|
|
4109
|
+
TheSeamFormFieldModule,
|
|
4110
|
+
ReactiveFormsModule,
|
|
4111
|
+
TheSeamTableCellTypeModule,
|
|
4112
|
+
TheSeamDataFiltersModule,
|
|
4113
|
+
NgSelectModule,
|
|
4114
|
+
TheSeamToggleGroupModule], exports: [DatatableComponent,
|
|
4115
|
+
DatatableCellTplDirective,
|
|
4116
|
+
DatatableColumnComponent,
|
|
4117
|
+
DatatableActionMenuComponent,
|
|
4118
|
+
DatatableActionMenuItemComponent,
|
|
4119
|
+
DatatableMenuBarComponent,
|
|
4120
|
+
DatatableFilterDirective,
|
|
4121
|
+
DatatableRowActionItemDirective,
|
|
4122
|
+
DatatableExportButtonComponent,
|
|
4123
|
+
TheSeamDatatableRowDetailDirective,
|
|
4124
|
+
DatatableRowDetailTplDirective,
|
|
4125
|
+
TheSeamDatatableFooterDirective,
|
|
4126
|
+
DatatableFooterTplDirective,
|
|
4127
|
+
DatatableColumnPreferencesComponent,
|
|
4128
|
+
DatatableColumnPreferencesButtonComponent,
|
|
4129
|
+
DatatableActionMenuItemDirective,
|
|
4130
|
+
DatatableMenuBarRowComponent,
|
|
4131
|
+
DatatableMenuBarColumnLeftComponent,
|
|
4132
|
+
DatatableMenuBarColumnCenterComponent,
|
|
4133
|
+
DatatableMenuBarColumnRightComponent,
|
|
4134
|
+
DatatableMenuBarTextComponent,
|
|
4135
|
+
DatatableColumnFilterMenuComponent,
|
|
4136
|
+
DatatableColumnFilterSearchTextComponent,
|
|
4137
|
+
DatatableColumnFilterSearchNumericComponent,
|
|
4138
|
+
DatatableColumnFilterSearchDateComponent,
|
|
4139
|
+
DatatableColumnFilterTplDirective,
|
|
4140
|
+
TheSeamDatatableColumnFilterDirective] });
|
|
4141
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDatatableModule, providers: [
|
|
4142
|
+
{ provide: ScrollbarHelper, useClass: TheSeamDatatableScrollbarHelperService },
|
|
4143
|
+
], imports: [CommonModule,
|
|
4144
|
+
NgxDatatableModule,
|
|
4145
|
+
FontAwesomeModule,
|
|
4146
|
+
OverlayModule,
|
|
4147
|
+
A11yModule,
|
|
4148
|
+
TheSeamSharedModule,
|
|
4149
|
+
RouterModule,
|
|
4150
|
+
TheSeamMenuModule,
|
|
4151
|
+
TheSeamButtonsModule,
|
|
4152
|
+
TheSeamIconModule,
|
|
4153
|
+
ToastrModule,
|
|
4154
|
+
TheSeamLoadingModule,
|
|
4155
|
+
PortalModule,
|
|
4156
|
+
TheSeamConfirmDialogModule,
|
|
4157
|
+
TheSeamPopoverModule,
|
|
4158
|
+
TheSeamCheckboxComponent,
|
|
4159
|
+
TheSeamFormFieldModule,
|
|
4160
|
+
ReactiveFormsModule,
|
|
4161
|
+
TheSeamTableCellTypeModule,
|
|
4162
|
+
TheSeamDataFiltersModule,
|
|
4163
|
+
NgSelectModule,
|
|
4164
|
+
TheSeamToggleGroupModule] });
|
|
4165
|
+
}
|
|
4166
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDatatableModule, decorators: [{
|
|
4167
|
+
type: NgModule,
|
|
4168
|
+
args: [{
|
|
4169
|
+
declarations: [
|
|
4170
|
+
DatatableComponent,
|
|
4171
|
+
DatatableCellTplDirective,
|
|
4172
|
+
DatatableColumnComponent,
|
|
4173
|
+
DatatableActionMenuComponent,
|
|
4174
|
+
DatatableActionMenuToggleDirective,
|
|
4175
|
+
DatatableActionMenuItemComponent,
|
|
4176
|
+
DatatableMenuBarComponent,
|
|
4177
|
+
DatatableFilterDirective,
|
|
4178
|
+
DatatableRowActionItemDirective,
|
|
4179
|
+
DatatableExportButtonComponent,
|
|
4180
|
+
TheSeamDatatableRowDetailDirective,
|
|
4181
|
+
DatatableRowDetailTplDirective,
|
|
4182
|
+
TheSeamDatatableFooterDirective,
|
|
4183
|
+
DatatableFooterTplDirective,
|
|
4184
|
+
DatatableColumnPreferencesComponent,
|
|
4185
|
+
DatatableColumnPreferencesButtonComponent,
|
|
4186
|
+
DatatableActionMenuItemDirective,
|
|
4187
|
+
DatatableMenuBarRowComponent,
|
|
4188
|
+
DatatableMenuBarColumnLeftComponent,
|
|
4189
|
+
DatatableMenuBarColumnCenterComponent,
|
|
4190
|
+
DatatableMenuBarColumnRightComponent,
|
|
4191
|
+
DatatableMenuBarTextComponent,
|
|
4192
|
+
DatatableColumnFilterMenuComponent,
|
|
4193
|
+
DatatableColumnFilterSearchTextComponent,
|
|
4194
|
+
DatatableColumnFilterSearchNumericComponent,
|
|
4195
|
+
DatatableColumnFilterSearchDateComponent,
|
|
4196
|
+
DatatableColumnFilterTplDirective,
|
|
4197
|
+
TheSeamDatatableColumnFilterDirective,
|
|
4198
|
+
],
|
|
4199
|
+
imports: [
|
|
4200
|
+
CommonModule,
|
|
4201
|
+
NgxDatatableModule,
|
|
4202
|
+
FontAwesomeModule,
|
|
4203
|
+
OverlayModule,
|
|
4204
|
+
A11yModule,
|
|
4205
|
+
TheSeamSharedModule,
|
|
4206
|
+
RouterModule,
|
|
4207
|
+
TheSeamMenuModule,
|
|
4208
|
+
TheSeamButtonsModule,
|
|
4209
|
+
TheSeamIconModule,
|
|
4210
|
+
ToastrModule,
|
|
4211
|
+
TheSeamLoadingModule,
|
|
4212
|
+
PortalModule,
|
|
4213
|
+
TheSeamConfirmDialogModule,
|
|
4214
|
+
TheSeamPopoverModule,
|
|
4215
|
+
TheSeamCheckboxComponent,
|
|
4216
|
+
TheSeamFormFieldModule,
|
|
4217
|
+
ReactiveFormsModule,
|
|
4218
|
+
TheSeamTableCellTypeModule,
|
|
4219
|
+
TheSeamDataFiltersModule,
|
|
4220
|
+
NgSelectModule,
|
|
4221
|
+
TheSeamToggleGroupModule,
|
|
4222
|
+
],
|
|
4223
|
+
exports: [
|
|
4224
|
+
DatatableComponent,
|
|
4225
|
+
DatatableCellTplDirective,
|
|
4226
|
+
DatatableColumnComponent,
|
|
4227
|
+
DatatableActionMenuComponent,
|
|
4228
|
+
DatatableActionMenuItemComponent,
|
|
4229
|
+
DatatableMenuBarComponent,
|
|
4230
|
+
DatatableFilterDirective,
|
|
4231
|
+
DatatableRowActionItemDirective,
|
|
4232
|
+
DatatableExportButtonComponent,
|
|
4233
|
+
TheSeamDatatableRowDetailDirective,
|
|
4234
|
+
DatatableRowDetailTplDirective,
|
|
4235
|
+
TheSeamDatatableFooterDirective,
|
|
4236
|
+
DatatableFooterTplDirective,
|
|
4237
|
+
DatatableColumnPreferencesComponent,
|
|
4238
|
+
DatatableColumnPreferencesButtonComponent,
|
|
4239
|
+
DatatableActionMenuItemDirective,
|
|
4240
|
+
DatatableMenuBarRowComponent,
|
|
4241
|
+
DatatableMenuBarColumnLeftComponent,
|
|
4242
|
+
DatatableMenuBarColumnCenterComponent,
|
|
4243
|
+
DatatableMenuBarColumnRightComponent,
|
|
4244
|
+
DatatableMenuBarTextComponent,
|
|
4245
|
+
DatatableColumnFilterMenuComponent,
|
|
4246
|
+
DatatableColumnFilterSearchTextComponent,
|
|
4247
|
+
DatatableColumnFilterSearchNumericComponent,
|
|
4248
|
+
DatatableColumnFilterSearchDateComponent,
|
|
4249
|
+
DatatableColumnFilterTplDirective,
|
|
4250
|
+
TheSeamDatatableColumnFilterDirective,
|
|
4251
|
+
],
|
|
4252
|
+
providers: [
|
|
4253
|
+
{ provide: ScrollbarHelper, useClass: TheSeamDatatableScrollbarHelperService },
|
|
4254
|
+
],
|
|
4255
|
+
}]
|
|
4256
|
+
}] });
|
|
4257
|
+
|
|
4258
|
+
/**
|
|
4259
|
+
* Generated bundle index. Do not edit.
|
|
4260
|
+
*/
|
|
4261
|
+
|
|
4262
|
+
export { CURRENT_DATATABLE_PREFERENCES_VERSION, ColumnsAlteration, ColumnsDataFilter, ColumnsFiltersService, DatatableActionMenuComponent, DatatableActionMenuItemComponent, DatatableActionMenuItemDirective, DatatableActionMenuToggleDirective, DatatableCellTplDirective, DatatableColumnChangesService, DatatableColumnComponent, DatatableColumnFilterMenuComponent, DatatableColumnFilterSearchDateComponent, DatatableColumnFilterSearchNumericComponent, DatatableColumnFilterSearchTextComponent, DatatableColumnFilterTplDirective, DatatableColumnPreferencesButtonComponent, DatatableColumnPreferencesComponent, DatatableComponent, DatatableDataSource, DatatableExportButtonComponent, DatatableFilterDirective, DatatableFooterTplDirective, DatatableGqlDataSource, DatatableMenuBarColumnCenterComponent, DatatableMenuBarColumnLeftComponent, DatatableMenuBarColumnRightComponent, DatatableMenuBarComponent, DatatableMenuBarRowComponent, DatatableMenuBarTextComponent, DatatablePreferencesService, DatatableRowActionItemDirective, DatatableRowDetailTplDirective, EMPTY_DATATABLE_PREFERENCES, SearchDateColumnsDataFilter, SearchNumericColumnsDataFilter, SearchTextColumnsDataFilter, THESEAM_COLUMNS_DATA_FILTER, THESEAM_COLUMNS_DATA_FILTERS_DEFAULT, THESEAM_COLUMNS_DATA_FILTER_DATE_RANGE_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_DATE_SEARCH_NAME, THESEAM_COLUMNS_DATA_FILTER_DATE_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_DATE_SELECT_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_DATE_TEXT_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_NUMERIC_RANGE_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SEARCH_NAME, THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_NUMERIC_SELECT_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_NUMERIC_TEXT_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_TEXT_SEARCH_NAME, THESEAM_COLUMNS_DATA_FILTER_TEXT_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_TEXT_SELECT_SEARCH_TYPES, THESEAM_COLUMNS_DATA_FILTER_TEXT_TEXT_SEARCH_TYPES, THESEAM_DATATABLE, THESEAM_DATATABLE_CONFIG, THESEAM_DATATABLE_PREFERENCES_ACCESSOR, THESEAM_MENUBAR_ITEM_DATA, TheSeamDatatableColumnFilterDirective, TheSeamDatatableFooterDirective, TheSeamDatatableModule, TheSeamDatatableRowDetailDirective, TheSeamDatatableScrollbarHelperService, _THESEAM_DATATABLE, _THESEAM_DATATABLE_ACCESSOR, _THESEAM_DATA_FILTER_CONTAINER, getFormattedDateForComparison, mapColumnsAlterationsStates, withStoredColumnInfo };
|
|
4263
|
+
//# sourceMappingURL=theseam-ui-common-datatable.mjs.map
|