@theseam/ui-common 0.2.9 → 0.2.13
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/assets/vendor/intl-tel-input/js/utils.js +255 -254
- package/bundles/theseam-ui-common-asset-reader.umd.js +7 -9
- package/bundles/theseam-ui-common-asset-reader.umd.js.map +1 -1
- package/bundles/theseam-ui-common-breadcrumbs.umd.js +6 -8
- package/bundles/theseam-ui-common-breadcrumbs.umd.js.map +1 -1
- package/bundles/theseam-ui-common-buttons.umd.js +5 -5
- package/bundles/theseam-ui-common-buttons.umd.js.map +1 -1
- package/bundles/theseam-ui-common-card.umd.js +6 -6
- package/bundles/theseam-ui-common-card.umd.js.map +1 -1
- package/bundles/theseam-ui-common-checkbox.umd.js +4 -4
- package/bundles/theseam-ui-common-checkbox.umd.js.map +1 -1
- package/bundles/theseam-ui-common-confirm-dialog.umd.js +4 -4
- package/bundles/theseam-ui-common-confirm-dialog.umd.js.map +1 -1
- package/bundles/theseam-ui-common-core.umd.js +4 -4
- package/bundles/theseam-ui-common-core.umd.js.map +1 -1
- package/bundles/theseam-ui-common-data-exporter.umd.js +5 -5
- package/bundles/theseam-ui-common-data-filters.umd.js +9 -6
- package/bundles/theseam-ui-common-data-filters.umd.js.map +1 -1
- package/bundles/theseam-ui-common-datatable-dynamic.umd.js +7 -7
- package/bundles/theseam-ui-common-datatable-dynamic.umd.js.map +1 -1
- package/bundles/theseam-ui-common-datatable.umd.js +1353 -375
- package/bundles/theseam-ui-common-datatable.umd.js.map +1 -1
- package/bundles/theseam-ui-common-dynamic-component-loader.umd.js +5 -7
- package/bundles/theseam-ui-common-dynamic-component-loader.umd.js.map +1 -1
- package/bundles/theseam-ui-common-dynamic.umd.js +7 -9
- package/bundles/theseam-ui-common-dynamic.umd.js.map +1 -1
- package/bundles/theseam-ui-common-footer-bar.umd.js +3 -3
- package/bundles/theseam-ui-common-form-field-error.umd.js +5 -5
- package/bundles/theseam-ui-common-form-field-error.umd.js.map +1 -1
- package/bundles/theseam-ui-common-form-field.umd.js +5 -5
- package/bundles/theseam-ui-common-form-field.umd.js.map +1 -1
- package/bundles/theseam-ui-common-framework.umd.js +28 -30
- package/bundles/theseam-ui-common-framework.umd.js.map +1 -1
- package/bundles/theseam-ui-common-graphql.umd.js +958 -8
- package/bundles/theseam-ui-common-graphql.umd.js.map +1 -1
- package/bundles/theseam-ui-common-icon.umd.js +5 -5
- package/bundles/theseam-ui-common-icon.umd.js.map +1 -1
- package/bundles/theseam-ui-common-layout.umd.js +5 -7
- package/bundles/theseam-ui-common-layout.umd.js.map +1 -1
- package/bundles/theseam-ui-common-loading.umd.js +4 -4
- package/bundles/theseam-ui-common-menu.umd.js +5 -5
- package/bundles/theseam-ui-common-menu.umd.js.map +1 -1
- package/bundles/theseam-ui-common-modal.umd.js +6 -6
- package/bundles/theseam-ui-common-modal.umd.js.map +1 -1
- package/bundles/theseam-ui-common-models.umd.js +3 -3
- package/bundles/theseam-ui-common-popover.umd.js +4 -4
- package/bundles/theseam-ui-common-progress.umd.js +5 -5
- package/bundles/theseam-ui-common-progress.umd.js.map +1 -1
- package/bundles/theseam-ui-common-scrollbar.umd.js +7 -9
- package/bundles/theseam-ui-common-scrollbar.umd.js.map +1 -1
- package/bundles/theseam-ui-common-services.umd.js +6 -8
- package/bundles/theseam-ui-common-services.umd.js.map +1 -1
- package/bundles/theseam-ui-common-shared.umd.js +4 -4
- package/bundles/theseam-ui-common-shared.umd.js.map +1 -1
- package/bundles/theseam-ui-common-storage.umd.js +5 -7
- package/bundles/theseam-ui-common-storage.umd.js.map +1 -1
- package/bundles/theseam-ui-common-story-helpers.umd.js +4 -4
- package/bundles/theseam-ui-common-story-helpers.umd.js.map +1 -1
- package/bundles/theseam-ui-common-tabbed.umd.js +5 -5
- package/bundles/theseam-ui-common-tabbed.umd.js.map +1 -1
- package/bundles/theseam-ui-common-table-cell-type.umd.js +5 -7
- package/bundles/theseam-ui-common-table-cell-type.umd.js.map +1 -1
- package/bundles/theseam-ui-common-table-cell-types.umd.js +258 -32
- package/bundles/theseam-ui-common-table-cell-types.umd.js.map +1 -1
- package/bundles/theseam-ui-common-table.umd.js +5 -5
- package/bundles/theseam-ui-common-table.umd.js.map +1 -1
- package/bundles/theseam-ui-common-tel-input.umd.js +6 -6
- package/bundles/theseam-ui-common-tel-input.umd.js.map +1 -1
- package/bundles/theseam-ui-common-testing.umd.js +568 -0
- package/bundles/theseam-ui-common-testing.umd.js.map +1 -0
- package/bundles/theseam-ui-common-tiled-select.umd.js +56 -39
- package/bundles/theseam-ui-common-tiled-select.umd.js.map +1 -1
- package/bundles/theseam-ui-common-toggle-edit.umd.js +8 -10
- package/bundles/theseam-ui-common-toggle-edit.umd.js.map +1 -1
- package/bundles/theseam-ui-common-toggle-group.umd.js +4 -4
- package/bundles/theseam-ui-common-toggle-group.umd.js.map +1 -1
- package/bundles/theseam-ui-common-unsaved-changes-dialog.umd.js +5 -7
- package/bundles/theseam-ui-common-unsaved-changes-dialog.umd.js.map +1 -1
- package/bundles/theseam-ui-common-utils.umd.js +174 -81
- package/bundles/theseam-ui-common-utils.umd.js.map +1 -1
- package/bundles/theseam-ui-common-validators.umd.js +3 -3
- package/bundles/theseam-ui-common-viewers.umd.js +6 -8
- package/bundles/theseam-ui-common-viewers.umd.js.map +1 -1
- package/bundles/theseam-ui-common-widget.umd.js +18 -20
- package/bundles/theseam-ui-common-widget.umd.js.map +1 -1
- package/bundles/theseam-ui-common.umd.js +2 -2
- package/buttons/theseam-ui-common-buttons.metadata.json +1 -1
- package/card/theseam-ui-common-card.metadata.json +1 -1
- package/data-filters/data-filter.d.ts +10 -6
- package/data-filters/theseam-ui-common-data-filters.metadata.json +1 -1
- package/datatable/datatable/datatable.component.d.ts +48 -32
- package/datatable/datatable-column/datatable-column.component.d.ts +26 -25
- package/datatable/datatable-column-preferences/datatable-column-preferences.component.d.ts +7 -5
- package/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.d.ts +7 -1
- package/datatable/datatable-footer/datatable-footer-tpl.directive.d.ts +5 -0
- package/datatable/datatable-footer/datatable-footer.directive.d.ts +6 -0
- package/datatable/datatable-menu-bar/datatable-menu-bar.component.d.ts +1 -1
- package/datatable/directives/datatable-filter.directive.d.ts +1 -1
- package/datatable/models/columns-alteration.d.ts +61 -0
- package/datatable/models/columns-alterations/hide-column.columns-alteration.d.ts +15 -0
- package/datatable/models/columns-alterations/order.columns-alteration.d.ts +20 -0
- package/datatable/models/columns-alterations/sort.columns-alteration.d.ts +14 -0
- package/datatable/models/columns-alterations/width.columns-alteration.d.ts +16 -0
- package/datatable/models/datatable-accessor.d.ts +5 -3
- package/datatable/models/internal-column-props.d.ts +7 -0
- package/datatable/models/page-info.d.ts +12 -0
- package/datatable/models/preferences-accessor.d.ts +1 -1
- package/datatable/models/preferences.d.ts +11 -3
- package/datatable/models/sort-item.d.ts +2 -1
- package/datatable/public-api.d.ts +2 -0
- package/datatable/services/columns-alterations-manager.service.d.ts +39 -0
- package/datatable/services/columns-manager.service.d.ts +55 -0
- package/datatable/services/datatable-preferences.service.d.ts +10 -7
- package/datatable/theseam-ui-common-datatable.d.ts +2 -0
- package/datatable/theseam-ui-common-datatable.metadata.json +1 -1
- package/datatable/tokens/datatable-preferences-accessor.d.ts +2 -2
- package/datatable/utils/create-action-menu-column.d.ts +3 -0
- package/datatable/utils/create-checkbox-column.d.ts +3 -0
- package/datatable/utils/get-column-prop.d.ts +5 -0
- package/datatable/utils/map-columns-alterations-states.d.ts +2 -0
- package/datatable/utils/remove-unused-diffs.d.ts +7 -0
- package/datatable/utils/set-column-defaults.d.ts +2 -0
- package/datatable/utils/translate-templates.d.ts +2 -0
- package/datatable/utils/with-stored-column-info.d.ts +2 -2
- package/datatable-dynamic/theseam-ui-common-datatable-dynamic.metadata.json +1 -1
- package/esm2015/buttons/progress-circle-button/progress-circle-button.component.js +1 -1
- package/esm2015/card/card-action/card-action.component.js +1 -1
- package/esm2015/card/card-body/card-body.component.js +1 -1
- package/esm2015/data-filters/data-filter.js +5 -2
- package/esm2015/data-filters/filters/data-filter-search/data-filter-search.component.js +1 -1
- package/esm2015/data-filters/filters/data-filter-text/data-filter-text.component.js +1 -1
- package/esm2015/datatable/datatable/datatable.component.js +197 -211
- package/esm2015/datatable/datatable-action-menu/datatable-action-menu.component.js +1 -1
- package/esm2015/datatable/datatable-column/datatable-column.component.js +1 -1
- package/esm2015/datatable/datatable-column-preferences/datatable-column-preferences.component.js +42 -19
- package/esm2015/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.js +38 -4
- package/esm2015/datatable/datatable-export-button/datatable-export-button.component.js +1 -1
- package/esm2015/datatable/datatable-footer/datatable-footer-tpl.directive.js +15 -0
- package/esm2015/datatable/datatable-footer/datatable-footer.directive.js +18 -0
- package/esm2015/datatable/datatable-menu-bar/datatable-menu-bar.component.js +1 -1
- package/esm2015/datatable/datatable-menu-bar-column-center/datatable-menu-bar-column-center.component.js +1 -1
- package/esm2015/datatable/datatable-menu-bar-column-left/datatable-menu-bar-column-left.component.js +1 -1
- package/esm2015/datatable/datatable-menu-bar-column-right/datatable-menu-bar-column-right.component.js +1 -1
- package/esm2015/datatable/datatable-menu-bar-row/datatable-menu-bar-row.component.js +1 -1
- package/esm2015/datatable/datatable.module.js +7 -1
- package/esm2015/datatable/models/columns-alteration.js +38 -0
- package/esm2015/datatable/models/columns-alterations/hide-column.columns-alteration.js +38 -0
- package/esm2015/datatable/models/columns-alterations/order.columns-alteration.js +81 -0
- package/esm2015/datatable/models/columns-alterations/sort.columns-alteration.js +33 -0
- package/esm2015/datatable/models/columns-alterations/width.columns-alteration.js +41 -0
- package/esm2015/datatable/models/datatable-accessor.js +1 -1
- package/esm2015/datatable/models/internal-column-props.js +15 -0
- package/esm2015/datatable/models/page-info.js +1 -1
- package/esm2015/datatable/models/preferences-accessor.js +1 -1
- package/esm2015/datatable/models/preferences.js +6 -2
- package/esm2015/datatable/models/sort-item.js +1 -1
- package/esm2015/datatable/public-api.js +3 -1
- package/esm2015/datatable/services/columns-alterations-manager.service.js +134 -0
- package/esm2015/datatable/services/columns-manager.service.js +257 -0
- package/esm2015/datatable/services/datatable-preferences.service.js +78 -32
- package/esm2015/datatable/theseam-ui-common-datatable.js +3 -1
- package/esm2015/datatable/tokens/datatable-preferences-accessor.js +2 -2
- package/esm2015/datatable/utils/create-action-menu-column.js +18 -0
- package/esm2015/datatable/utils/create-checkbox-column.js +15 -0
- package/esm2015/datatable/utils/get-column-prop.js +9 -0
- package/esm2015/datatable/utils/map-columns-alterations-states.js +39 -0
- package/esm2015/datatable/utils/remove-unused-diffs.js +9 -0
- package/esm2015/datatable/utils/set-column-defaults.js +10 -0
- package/esm2015/datatable/utils/translate-templates.js +12 -0
- package/esm2015/datatable/utils/with-stored-column-info.js +1 -1
- package/esm2015/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.js +1 -1
- package/esm2015/datatable-dynamic/datatable-dynamic-filter-container/datatable-dynamic-filter-container.component.js +1 -1
- package/esm2015/datatable-dynamic/datatable-dynamic.component.js +1 -1
- package/esm2015/form-field/form-field.component.js +1 -1
- package/esm2015/form-field-error/form-field-error/form-field-error.component.js +1 -1
- package/esm2015/framework/base-layout/base-layout.component.js +1 -1
- package/esm2015/framework/dashboard/dashboard-widgets/dashboard-widgets.component.js +1 -1
- package/esm2015/framework/dynamic-router/hierarchy-router-outlet/hierarchy-router-outlet.component.js +1 -1
- package/esm2015/framework/schema-form-controls/schema-form-input/schema-form-input.component.js +1 -1
- package/esm2015/framework/schema-form-controls/schema-form-number/schema-form-number.component.js +1 -1
- package/esm2015/framework/schema-form-controls/schema-form-select/schema-form-select.component.js +1 -1
- package/esm2015/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.js +1 -1
- package/esm2015/framework/side-nav/side-nav-item/side-nav-item.component.js +3 -3
- package/esm2015/framework/side-nav/side-nav-toggle/side-nav-toggle.component.js +1 -1
- package/esm2015/framework/side-nav/side-nav.component.js +1 -1
- package/esm2015/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.js +1 -1
- package/esm2015/framework/top-bar/top-bar-title/top-bar-title.component.js +1 -1
- package/esm2015/framework/top-bar/top-bar.component.js +1 -1
- package/esm2015/graphql/datatable/create-page-info-observable.js +38 -0
- package/esm2015/graphql/datatable/datatable-graphql-query-ref.js +236 -0
- package/esm2015/graphql/datatable/datatable-graphql.service.js +35 -0
- package/esm2015/graphql/datatable/datatable-helpers.js +170 -0
- package/esm2015/graphql/datatable/get-page-info.js +11 -0
- package/esm2015/graphql/datatable/index.js +7 -0
- package/esm2015/graphql/datatable/map-filter-states.js +64 -0
- package/esm2015/graphql/datatable/map-page-info.js +14 -0
- package/esm2015/graphql/datatable/mapper-context.js +2 -0
- package/esm2015/graphql/models/gql-datatable-accessor.js +2 -0
- package/esm2015/graphql/models/index.js +2 -1
- package/esm2015/graphql/models/query-processing-config.js +1 -1
- package/esm2015/graphql/public-api.js +2 -1
- package/esm2015/graphql/utils/parse-hints.js +3 -3
- package/esm2015/icon/icon/icon.component.js +1 -1
- package/esm2015/loading/loading/loading.component.js +1 -1
- package/esm2015/menu/menu.component.js +1 -1
- package/esm2015/modal/modal-body/modal-body.component.js +1 -1
- package/esm2015/modal/modal-container/modal-container.component.js +1 -1
- package/esm2015/popover/popover/popover.component.js +1 -1
- package/esm2015/progress/progress-circle/progress-circle.component.js +1 -1
- package/esm2015/tabbed/tabbed.component.js +1 -1
- package/esm2015/table/table/table.component.js +1 -1
- package/esm2015/table-cell-types/public-api.js +8 -1
- package/esm2015/table-cell-types/table-cell-type-currency/table-cell-type-currency-config.js +2 -0
- package/esm2015/table-cell-types/table-cell-type-currency/table-cell-type-currency.component.js +74 -0
- package/esm2015/table-cell-types/table-cell-type-currency/table-cell-type-currency.js +2 -0
- package/esm2015/table-cell-types/table-cell-type-decimal/table-cell-type-decimal-config.js +1 -1
- package/esm2015/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.component.js +73 -0
- package/esm2015/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.js +2 -0
- package/esm2015/table-cell-types/table-cell-type-icon/table-cell-type-icon.component.js +1 -1
- package/esm2015/table-cell-types/table-cell-type-integer/table-cell-type-integer-config.js +1 -1
- package/esm2015/table-cell-types/table-cell-type-integer/table-cell-type-integer.component.js +71 -0
- package/esm2015/table-cell-types/table-cell-type-integer/table-cell-type-integer.js +2 -0
- package/esm2015/table-cell-types/table-cell-type-manifests.js +29 -17
- package/esm2015/table-cell-types/table-cell-type-progress-circle/table-cell-type-progress-circle.component.js +1 -1
- package/esm2015/table-cell-types/table-cell-types.module.js +9 -2
- package/esm2015/tel-input/tel-input/tel-input.component.js +1 -1
- package/esm2015/testing/current-tick-time.js +16 -0
- package/esm2015/testing/fake-toastr.js +29 -0
- package/esm2015/testing/get-harness.js +16 -0
- package/esm2015/testing/public-api.js +7 -0
- package/esm2015/testing/render-story.js +12 -0
- package/esm2015/testing/story-expect.js +39 -0
- package/esm2015/testing/theseam-ui-common-testing.js +5 -0
- package/esm2015/testing/tick-helper.js +74 -0
- package/esm2015/tiled-select/components/tiled-select/tiled-select.component.js +25 -17
- package/esm2015/tiled-select/components/tiled-select-tile/tiled-select-tile.component.js +5 -2
- package/esm2015/tiled-select/components/tiled-select-tile-icon/tiled-select-tile-icon.component.js +1 -1
- package/esm2015/tiled-select/public-api.js +2 -1
- package/esm2015/tiled-select/tiled-select.models.js +1 -1
- package/esm2015/tiled-select/tiled-select.module.js +4 -4
- package/esm2015/toggle-edit/toggle-edit-actions-container/toggle-edit-actions-container.component.js +1 -1
- package/esm2015/toggle-edit/toggle-edit.component.js +1 -1
- package/esm2015/utils/array-move.js +62 -0
- package/esm2015/utils/public-api.js +2 -1
- package/esm2015/utils/subscriber-count.js +31 -4
- package/esm2015/widget/widget/widget.component.js +1 -1
- package/esm2015/widget/widget-content-components/widget-button-group/widget-button-group.component.js +1 -1
- package/esm2015/widget/widget-content-components/widget-content-header/widget-content-header.component.js +1 -1
- package/esm2015/widget/widget-content-components/widget-empty-label/widget-empty-label.component.js +1 -1
- package/esm2015/widget/widget-content-components/widget-footer-link/widget-footer-link.component.js +1 -1
- package/esm2015/widget/widget-content-components/widget-footer-text/widget-footer-text.component.js +1 -1
- package/esm2015/widget/widget-content-components/widget-header-badge/widget-header-badge.component.js +1 -1
- package/esm2015/widget/widget-content-components/widget-tile/widget-tile-footer-item/widget-tile-footer-item.component.js +1 -1
- package/esm2015/widget/widget-content-components/widget-tile/widget-tile-group/widget-tile-group.component.js +1 -1
- package/esm2015/widget/widget-content-components/widget-tile/widget-tile.component.js +1 -1
- package/esm2015/widget/widget-content-components/widget-tile-list/widget-tile-list.component.js +1 -1
- package/esm2015/widget/widget-footer/widget-footer.component.js +1 -1
- package/fesm2015/theseam-ui-common-buttons.js +1 -1
- package/fesm2015/theseam-ui-common-card.js +2 -2
- package/fesm2015/theseam-ui-common-data-filters.js +6 -3
- package/fesm2015/theseam-ui-common-data-filters.js.map +1 -1
- package/fesm2015/theseam-ui-common-datatable-dynamic.js +3 -3
- package/fesm2015/theseam-ui-common-datatable.js +1136 -316
- package/fesm2015/theseam-ui-common-datatable.js.map +1 -1
- package/fesm2015/theseam-ui-common-form-field-error.js +1 -1
- package/fesm2015/theseam-ui-common-form-field.js +1 -1
- package/fesm2015/theseam-ui-common-framework.js +14 -14
- package/fesm2015/theseam-ui-common-framework.js.map +1 -1
- package/fesm2015/theseam-ui-common-graphql.js +555 -5
- package/fesm2015/theseam-ui-common-graphql.js.map +1 -1
- package/fesm2015/theseam-ui-common-icon.js +1 -1
- package/fesm2015/theseam-ui-common-loading.js +1 -1
- package/fesm2015/theseam-ui-common-menu.js +1 -1
- package/fesm2015/theseam-ui-common-modal.js +2 -2
- package/fesm2015/theseam-ui-common-popover.js +1 -1
- package/fesm2015/theseam-ui-common-progress.js +1 -1
- package/fesm2015/theseam-ui-common-tabbed.js +1 -1
- package/fesm2015/theseam-ui-common-table-cell-types.js +234 -22
- package/fesm2015/theseam-ui-common-table-cell-types.js.map +1 -1
- package/fesm2015/theseam-ui-common-table.js +1 -1
- package/fesm2015/theseam-ui-common-tel-input.js +1 -1
- package/fesm2015/theseam-ui-common-testing.js +191 -0
- package/fesm2015/theseam-ui-common-testing.js.map +1 -0
- package/fesm2015/theseam-ui-common-tiled-select.js +34 -21
- package/fesm2015/theseam-ui-common-tiled-select.js.map +1 -1
- package/fesm2015/theseam-ui-common-toggle-edit.js +2 -2
- package/fesm2015/theseam-ui-common-utils.js +92 -4
- package/fesm2015/theseam-ui-common-utils.js.map +1 -1
- package/fesm2015/theseam-ui-common-widget.js +12 -12
- package/form-field/theseam-ui-common-form-field.metadata.json +1 -1
- package/form-field-error/theseam-ui-common-form-field-error.metadata.json +1 -1
- package/framework/side-nav/side-nav-item/side-nav-item.component.scss +36 -9
- package/framework/theseam-ui-common-framework.metadata.json +1 -1
- package/graphql/datatable/create-page-info-observable.d.ts +4 -0
- package/graphql/datatable/datatable-graphql-query-ref.d.ts +65 -0
- package/graphql/datatable/datatable-graphql.service.d.ts +26 -0
- package/graphql/datatable/datatable-helpers.d.ts +12 -0
- package/graphql/datatable/get-page-info.d.ts +4 -0
- package/graphql/datatable/index.d.ts +6 -0
- package/graphql/datatable/map-filter-states.d.ts +18 -0
- package/graphql/datatable/map-page-info.d.ts +11 -0
- package/graphql/datatable/mapper-context.d.ts +6 -0
- package/graphql/models/gql-datatable-accessor.d.ts +9 -0
- package/graphql/models/index.d.ts +1 -0
- package/graphql/models/query-processing-config.d.ts +4 -0
- package/graphql/public-api.d.ts +1 -0
- package/graphql/theseam-ui-common-graphql.metadata.json +1 -1
- package/icon/theseam-ui-common-icon.metadata.json +1 -1
- package/loading/theseam-ui-common-loading.metadata.json +1 -1
- package/menu/theseam-ui-common-menu.metadata.json +1 -1
- package/modal/theseam-ui-common-modal.metadata.json +1 -1
- package/package.json +1 -1
- package/popover/theseam-ui-common-popover.metadata.json +1 -1
- package/progress/theseam-ui-common-progress.metadata.json +1 -1
- package/styles/common/_table.scss +0 -5
- package/styles/vendor/ngx-datatable/_ngx-datatable.scss +478 -87
- package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +174 -0
- package/styles/vendor/ngx-datatable/_themes/dark/_variables.scss +166 -0
- package/styles/vendor/ngx-datatable/_themes/material/_variables.scss +165 -0
- package/styles/vendor/ngx-datatable/_variables.scss +3 -0
- package/tabbed/theseam-ui-common-tabbed.metadata.json +1 -1
- package/table/theseam-ui-common-table.metadata.json +1 -1
- package/table-cell-types/public-api.d.ts +7 -0
- package/table-cell-types/table-cell-type-currency/table-cell-type-currency-config.d.ts +39 -0
- package/table-cell-types/table-cell-type-currency/table-cell-type-currency.component.d.ts +19 -0
- package/table-cell-types/table-cell-type-currency/table-cell-type-currency.d.ts +3 -0
- package/table-cell-types/table-cell-type-decimal/table-cell-type-decimal-config.d.ts +31 -1
- package/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.component.d.ts +19 -0
- package/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.d.ts +3 -0
- package/table-cell-types/table-cell-type-integer/table-cell-type-integer-config.d.ts +23 -1
- package/table-cell-types/table-cell-type-integer/table-cell-type-integer.component.d.ts +19 -0
- package/table-cell-types/table-cell-type-integer/table-cell-type-integer.d.ts +3 -0
- package/table-cell-types/table-cell-type-manifests.d.ts +2 -1
- package/table-cell-types/theseam-ui-common-table-cell-types.metadata.json +1 -1
- package/tel-input/theseam-ui-common-tel-input.metadata.json +1 -1
- package/testing/current-tick-time.d.ts +13 -0
- package/testing/fake-toastr.d.ts +30 -0
- package/testing/get-harness.d.ts +7 -0
- package/testing/package.json +11 -0
- package/testing/public-api.d.ts +6 -0
- package/testing/render-story.d.ts +2 -0
- package/testing/story-expect.d.ts +5 -0
- package/{test-helpers/theseam-ui-common-test-helpers.d.ts → testing/theseam-ui-common-testing.d.ts} +0 -0
- package/testing/theseam-ui-common-testing.metadata.json +1 -0
- package/{test-helpers → testing}/tick-helper.d.ts +0 -0
- package/tiled-select/components/tiled-select/tiled-select.component.d.ts +7 -3
- package/tiled-select/components/tiled-select-tile/tiled-select-tile.component.d.ts +1 -0
- package/tiled-select/theseam-ui-common-tiled-select.metadata.json +1 -1
- package/tiled-select/tiled-select.models.d.ts +3 -1
- package/toggle-edit/theseam-ui-common-toggle-edit.metadata.json +1 -1
- package/utils/array-move.d.ts +49 -0
- package/utils/public-api.d.ts +1 -0
- package/utils/subscriber-count.d.ts +13 -1
- package/utils/theseam-ui-common-utils.metadata.json +1 -1
- package/widget/theseam-ui-common-widget.metadata.json +1 -1
- package/bundles/theseam-ui-common-test-helpers.umd.js +0 -94
- package/bundles/theseam-ui-common-test-helpers.umd.js.map +0 -1
- package/esm2015/test-helpers/public-api.js +0 -2
- package/esm2015/test-helpers/theseam-ui-common-test-helpers.js +0 -5
- package/esm2015/test-helpers/tick-helper.js +0 -74
- package/fesm2015/theseam-ui-common-test-helpers.js +0 -81
- package/fesm2015/theseam-ui-common-test-helpers.js.map +0 -1
- package/test-helpers/package.json +0 -11
- package/test-helpers/public-api.d.ts +0 -1
- package/test-helpers/theseam-ui-common-test-helpers.metadata.json +0 -1
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { isDevMode } from '@angular/core';
|
|
2
|
+
import { arrayMoveMutable, notNullOrUndefined } from '@theseam/ui-common/utils';
|
|
3
|
+
import { getColumnProp } from '../../utils/get-column-prop';
|
|
4
|
+
import { ColumnsAlteration } from '../columns-alteration';
|
|
5
|
+
import { isInternalColumn } from '../internal-column-props';
|
|
6
|
+
export class OrderColumnsAlteration extends ColumnsAlteration {
|
|
7
|
+
constructor(state, persistent) {
|
|
8
|
+
super(state, persistent);
|
|
9
|
+
this.type = 'order';
|
|
10
|
+
if (!this._isValidState(state)) {
|
|
11
|
+
throw Error(`Invalid state: ${JSON.stringify(state)}`);
|
|
12
|
+
}
|
|
13
|
+
this.id = `${this.type}`;
|
|
14
|
+
}
|
|
15
|
+
apply(columns, datatable) {
|
|
16
|
+
if (this.state.columns.length === 0) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const stateColumns = this._stateColumns();
|
|
20
|
+
// The internal columns are not intended for a user to be able to move them.
|
|
21
|
+
// Store the internal columns current index, so it can be moved back ofter
|
|
22
|
+
// sorting. This may not be the best way to do this, but it is easier than
|
|
23
|
+
// making a sort that avoids them.
|
|
24
|
+
//
|
|
25
|
+
// NOTE: If we add an internal column that can be moved then this will need
|
|
26
|
+
// to be changed.
|
|
27
|
+
const internalColumns = columns
|
|
28
|
+
.filter(c => isInternalColumn(c))
|
|
29
|
+
.map((column, index) => ({ column, index }));
|
|
30
|
+
for (const c of stateColumns) {
|
|
31
|
+
const currentIndex = columns.findIndex(x => getColumnProp(x) === c.columnProp);
|
|
32
|
+
if (currentIndex === c.index || currentIndex === -1) {
|
|
33
|
+
// Skip if already at correct index.
|
|
34
|
+
// Skip columns not found. It may be a column that was removed from the
|
|
35
|
+
// table, but we still want to handle the other columns.
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
arrayMoveMutable(columns, currentIndex, c.index);
|
|
39
|
+
}
|
|
40
|
+
for (const c of internalColumns) {
|
|
41
|
+
const currentIndex = columns.findIndex(col => col === c.column);
|
|
42
|
+
if (currentIndex !== -1) {
|
|
43
|
+
arrayMoveMutable(columns, currentIndex, c.index);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
if (isDevMode()) {
|
|
47
|
+
console.warn(`Internal column could not be found after sorting. Was it lost during the sorting?`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
_isValidState(state) {
|
|
53
|
+
// NOTE: Checking null or undefined, even though the type doesn't allow,
|
|
54
|
+
// because the state may have been loaded from an invalid persistant
|
|
55
|
+
// storage.
|
|
56
|
+
// TODO: Remove when state validation/migration is implemented to happen
|
|
57
|
+
// when retrieved from storage.
|
|
58
|
+
if (!notNullOrUndefined(state.columns)) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
// NOTE: Didn't iterate each column record, because it is probably better to
|
|
62
|
+
// just skip to invalid column records. It does prevent being able to
|
|
63
|
+
// validate the whole state though.
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
_isColumnOrderRecordValid(columnOrder) {
|
|
67
|
+
return notNullOrUndefined(columnOrder.columnProp) && notNullOrUndefined(columnOrder.index);
|
|
68
|
+
}
|
|
69
|
+
_stateColumns() {
|
|
70
|
+
return this.state.columns.filter(c => {
|
|
71
|
+
if (!this._isColumnOrderRecordValid(c)) {
|
|
72
|
+
if (isDevMode()) {
|
|
73
|
+
console.warn('Invalid column order record', c);
|
|
74
|
+
}
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
return true;
|
|
78
|
+
}).sort((a, b) => a.index === b.index ? 0 : a.index > b.index ? 1 : -1);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXIuY29sdW1ucy1hbHRlcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2RhdGF0YWJsZS9tb2RlbHMvY29sdW1ucy1hbHRlcmF0aW9ucy9vcmRlci5jb2x1bW5zLWFsdGVyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUd6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUcvRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFFekQsT0FBTyxFQUF5QixnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBZ0JsRixNQUFNLE9BQU8sc0JBQXVCLFNBQVEsaUJBQThDO0lBS3hGLFlBQ0UsS0FBa0MsRUFDbEMsVUFBbUI7UUFFbkIsS0FBSyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQTtRQU5WLFNBQUksR0FBVyxPQUFPLENBQUE7UUFRcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDOUIsTUFBTSxLQUFLLENBQUMsa0JBQWtCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1NBQ3ZEO1FBRUQsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMxQixDQUFDO0lBRU0sS0FBSyxDQUFDLE9BQTJDLEVBQUUsU0FBbUM7UUFDM0YsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ25DLE9BQU07U0FDUDtRQUVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUV6Qyw0RUFBNEU7UUFDNUUsMEVBQTBFO1FBQzFFLDBFQUEwRTtRQUMxRSxrQ0FBa0M7UUFDbEMsRUFBRTtRQUNGLDJFQUEyRTtRQUMzRSxpQkFBaUI7UUFDakIsTUFBTSxlQUFlLEdBQUcsT0FBTzthQUM1QixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNoQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUU5QyxLQUFLLE1BQU0sQ0FBQyxJQUFJLFlBQVksRUFBRTtZQUM1QixNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUM5RSxJQUFJLFlBQVksS0FBSyxDQUFDLENBQUMsS0FBSyxJQUFJLFlBQVksS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDbkQsb0NBQW9DO2dCQUNwQyx1RUFBdUU7Z0JBQ3ZFLHdEQUF3RDtnQkFDeEQsU0FBUTthQUNUO1lBRUQsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7U0FDakQ7UUFFRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLGVBQWUsRUFBRTtZQUMvQixNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUMvRCxJQUFJLFlBQVksS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDdkIsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7YUFDakQ7aUJBQU07Z0JBQ0wsSUFBSSxTQUFTLEVBQUUsRUFBRTtvQkFDZixPQUFPLENBQUMsSUFBSSxDQUFDLG1GQUFtRixDQUFDLENBQUE7aUJBQ2xHO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFFTyxhQUFhLENBQUMsS0FBa0M7UUFDdEQsd0VBQXdFO1FBQ3hFLG9FQUFvRTtRQUNwRSxXQUFXO1FBRVgsd0VBQXdFO1FBQ3hFLCtCQUErQjtRQUMvQixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3RDLE9BQU8sS0FBSyxDQUFBO1NBQ2I7UUFFRCw0RUFBNEU7UUFDNUUscUVBQXFFO1FBQ3JFLG1DQUFtQztRQUVuQyxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxXQUE4QjtRQUM5RCxPQUFPLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDNUYsQ0FBQztJQUVPLGFBQWE7UUFDbkIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDdEMsSUFBSSxTQUFTLEVBQUUsRUFBRTtvQkFDZixPQUFPLENBQUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUMsQ0FBQyxDQUFBO2lCQUMvQztnQkFDRCxPQUFPLEtBQUssQ0FBQTthQUNiO1lBQ0QsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDekUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuXHJcbmltcG9ydCB7IFRhYmxlQ29sdW1uUHJvcCB9IGZyb20gJ0BtYXJrbGIvbmd4LWRhdGF0YWJsZSdcclxuaW1wb3J0IHsgYXJyYXlNb3ZlTXV0YWJsZSwgbm90TnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL3V0aWxzJ1xyXG5pbXBvcnQgeyBDSEVDS0JPWF9DT0xVTU5fUFJPUCB9IGZyb20gJy4uLy4uL3V0aWxzL2NyZWF0ZS1jaGVja2JveC1jb2x1bW4nXHJcblxyXG5pbXBvcnQgeyBnZXRDb2x1bW5Qcm9wIH0gZnJvbSAnLi4vLi4vdXRpbHMvZ2V0LWNvbHVtbi1wcm9wJ1xyXG5pbXBvcnQgeyBDb2x1bW5zQWx0ZXJhdGlvbiB9IGZyb20gJy4uL2NvbHVtbnMtYWx0ZXJhdGlvbidcclxuaW1wb3J0IHsgVGhlU2VhbURhdGF0YWJsZUFjY2Vzc29yIH0gZnJvbSAnLi4vZGF0YXRhYmxlLWFjY2Vzc29yJ1xyXG5pbXBvcnQgeyBJTlRFUk5BTF9DT0xVTU5fUFJPUFMsIGlzSW50ZXJuYWxDb2x1bW4gfSBmcm9tICcuLi9pbnRlcm5hbC1jb2x1bW4tcHJvcHMnXHJcbmltcG9ydCB7IFRoZVNlYW1EYXRhdGFibGVDb2x1bW4gfSBmcm9tICcuLi90YWJsZS1jb2x1bW4nXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbk9yZGVyUmVjb3JkIHtcclxuICBjb2x1bW5Qcm9wOiBUYWJsZUNvbHVtblByb3BcclxuICBpbmRleDogbnVtYmVyXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgT3JkZXJDb2x1bW5zQWx0ZXJhdGlvblN0YXRlIHtcclxuICAvLyBOT1RFOiBUaGlzIHN0b3JlcyB0aGUgY29sdW1uIGluZGV4IG9mIHJlb3JkZXJlZCBjb2x1bW5zIG9ubHksIHRvIGF2b2lkIGFueVxyXG4gIC8vIG5ldyBjb2x1bW5zIGZyb20gYWx3YXlzIGJlaW5nIHBsYWNlZCBhdCB0aGUgZW5kLiBUaGUgbW92ZWQgY29sdW1ucyBzaG91bGRcclxuICAvLyBhbHdheXMgYmUgYWNjdXJhdGUgcmVsYXRpdmUgdG8gZWFjaCBvdGhlciwgYnV0IGlmIHRoaXMgYmVjb21lcyBhbiBpc3N1ZVxyXG4gIC8vIHRoZW4gd2UgY2FuIGp1c3Qgc3RvcmUgYWxsIHRoZSBjb2x1bW5zIHBvc2l0aW9ucy5cclxuICBjb2x1bW5zOiBDb2x1bW5PcmRlclJlY29yZFtdXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBPcmRlckNvbHVtbnNBbHRlcmF0aW9uIGV4dGVuZHMgQ29sdW1uc0FsdGVyYXRpb248T3JkZXJDb2x1bW5zQWx0ZXJhdGlvblN0YXRlPiB7XHJcbiAgcHVibGljIHJlYWRvbmx5IGlkOiBzdHJpbmdcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IHR5cGU6IHN0cmluZyA9ICdvcmRlcidcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBzdGF0ZTogT3JkZXJDb2x1bW5zQWx0ZXJhdGlvblN0YXRlLFxyXG4gICAgcGVyc2lzdGVudDogYm9vbGVhblxyXG4gICkge1xyXG4gICAgc3VwZXIoc3RhdGUsIHBlcnNpc3RlbnQpXHJcblxyXG4gICAgaWYgKCF0aGlzLl9pc1ZhbGlkU3RhdGUoc3RhdGUpKSB7XHJcbiAgICAgIHRocm93IEVycm9yKGBJbnZhbGlkIHN0YXRlOiAke0pTT04uc3RyaW5naWZ5KHN0YXRlKX1gKVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaWQgPSBgJHt0aGlzLnR5cGV9YFxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFwcGx5KGNvbHVtbnM6IFRoZVNlYW1EYXRhdGFibGVDb2x1bW48YW55LCBhbnk+W10sIGRhdGF0YWJsZTogVGhlU2VhbURhdGF0YWJsZUFjY2Vzc29yKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zdGF0ZS5jb2x1bW5zLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzdGF0ZUNvbHVtbnMgPSB0aGlzLl9zdGF0ZUNvbHVtbnMoKVxyXG5cclxuICAgIC8vIFRoZSBpbnRlcm5hbCBjb2x1bW5zIGFyZSBub3QgaW50ZW5kZWQgZm9yIGEgdXNlciB0byBiZSBhYmxlIHRvIG1vdmUgdGhlbS5cclxuICAgIC8vIFN0b3JlIHRoZSBpbnRlcm5hbCBjb2x1bW5zIGN1cnJlbnQgaW5kZXgsIHNvIGl0IGNhbiBiZSBtb3ZlZCBiYWNrIG9mdGVyXHJcbiAgICAvLyBzb3J0aW5nLiBUaGlzIG1heSBub3QgYmUgdGhlIGJlc3Qgd2F5IHRvIGRvIHRoaXMsIGJ1dCBpdCBpcyBlYXNpZXIgdGhhblxyXG4gICAgLy8gbWFraW5nIGEgc29ydCB0aGF0IGF2b2lkcyB0aGVtLlxyXG4gICAgLy9cclxuICAgIC8vIE5PVEU6IElmIHdlIGFkZCBhbiBpbnRlcm5hbCBjb2x1bW4gdGhhdCBjYW4gYmUgbW92ZWQgdGhlbiB0aGlzIHdpbGwgbmVlZFxyXG4gICAgLy8gdG8gYmUgY2hhbmdlZC5cclxuICAgIGNvbnN0IGludGVybmFsQ29sdW1ucyA9IGNvbHVtbnNcclxuICAgICAgLmZpbHRlcihjID0+IGlzSW50ZXJuYWxDb2x1bW4oYykpXHJcbiAgICAgIC5tYXAoKGNvbHVtbiwgaW5kZXgpID0+ICh7IGNvbHVtbiwgaW5kZXggfSkpXHJcblxyXG4gICAgZm9yIChjb25zdCBjIG9mIHN0YXRlQ29sdW1ucykge1xyXG4gICAgICBjb25zdCBjdXJyZW50SW5kZXggPSBjb2x1bW5zLmZpbmRJbmRleCh4ID0+IGdldENvbHVtblByb3AoeCkgPT09IGMuY29sdW1uUHJvcClcclxuICAgICAgaWYgKGN1cnJlbnRJbmRleCA9PT0gYy5pbmRleCB8fCBjdXJyZW50SW5kZXggPT09IC0xKSB7XHJcbiAgICAgICAgLy8gU2tpcCBpZiBhbHJlYWR5IGF0IGNvcnJlY3QgaW5kZXguXHJcbiAgICAgICAgLy8gU2tpcCBjb2x1bW5zIG5vdCBmb3VuZC4gSXQgbWF5IGJlIGEgY29sdW1uIHRoYXQgd2FzIHJlbW92ZWQgZnJvbSB0aGVcclxuICAgICAgICAvLyB0YWJsZSwgYnV0IHdlIHN0aWxsIHdhbnQgdG8gaGFuZGxlIHRoZSBvdGhlciBjb2x1bW5zLlxyXG4gICAgICAgIGNvbnRpbnVlXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGFycmF5TW92ZU11dGFibGUoY29sdW1ucywgY3VycmVudEluZGV4LCBjLmluZGV4KVxyXG4gICAgfVxyXG5cclxuICAgIGZvciAoY29uc3QgYyBvZiBpbnRlcm5hbENvbHVtbnMpIHtcclxuICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gY29sdW1ucy5maW5kSW5kZXgoY29sID0+IGNvbCA9PT0gYy5jb2x1bW4pXHJcbiAgICAgIGlmIChjdXJyZW50SW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgYXJyYXlNb3ZlTXV0YWJsZShjb2x1bW5zLCBjdXJyZW50SW5kZXgsIGMuaW5kZXgpXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XHJcbiAgICAgICAgICBjb25zb2xlLndhcm4oYEludGVybmFsIGNvbHVtbiBjb3VsZCBub3QgYmUgZm91bmQgYWZ0ZXIgc29ydGluZy4gV2FzIGl0IGxvc3QgZHVyaW5nIHRoZSBzb3J0aW5nP2ApXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pc1ZhbGlkU3RhdGUoc3RhdGU6IE9yZGVyQ29sdW1uc0FsdGVyYXRpb25TdGF0ZSk6IGJvb2xlYW4ge1xyXG4gICAgLy8gTk9URTogQ2hlY2tpbmcgbnVsbCBvciB1bmRlZmluZWQsIGV2ZW4gdGhvdWdoIHRoZSB0eXBlIGRvZXNuJ3QgYWxsb3csXHJcbiAgICAvLyBiZWNhdXNlIHRoZSBzdGF0ZSBtYXkgaGF2ZSBiZWVuIGxvYWRlZCBmcm9tIGFuIGludmFsaWQgcGVyc2lzdGFudFxyXG4gICAgLy8gc3RvcmFnZS5cclxuXHJcbiAgICAvLyBUT0RPOiBSZW1vdmUgd2hlbiBzdGF0ZSB2YWxpZGF0aW9uL21pZ3JhdGlvbiBpcyBpbXBsZW1lbnRlZCB0byBoYXBwZW5cclxuICAgIC8vIHdoZW4gcmV0cmlldmVkIGZyb20gc3RvcmFnZS5cclxuICAgIGlmICghbm90TnVsbE9yVW5kZWZpbmVkKHN0YXRlLmNvbHVtbnMpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgfVxyXG5cclxuICAgIC8vIE5PVEU6IERpZG4ndCBpdGVyYXRlIGVhY2ggY29sdW1uIHJlY29yZCwgYmVjYXVzZSBpdCBpcyBwcm9iYWJseSBiZXR0ZXIgdG9cclxuICAgIC8vIGp1c3Qgc2tpcCB0byBpbnZhbGlkIGNvbHVtbiByZWNvcmRzLiBJdCBkb2VzIHByZXZlbnQgYmVpbmcgYWJsZSB0b1xyXG4gICAgLy8gdmFsaWRhdGUgdGhlIHdob2xlIHN0YXRlIHRob3VnaC5cclxuXHJcbiAgICByZXR1cm4gdHJ1ZVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaXNDb2x1bW5PcmRlclJlY29yZFZhbGlkKGNvbHVtbk9yZGVyOiBDb2x1bW5PcmRlclJlY29yZCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIG5vdE51bGxPclVuZGVmaW5lZChjb2x1bW5PcmRlci5jb2x1bW5Qcm9wKSAmJiBub3ROdWxsT3JVbmRlZmluZWQoY29sdW1uT3JkZXIuaW5kZXgpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zdGF0ZUNvbHVtbnMoKTogQ29sdW1uT3JkZXJSZWNvcmRbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5jb2x1bW5zLmZpbHRlcihjID0+IHtcclxuICAgICAgaWYgKCF0aGlzLl9pc0NvbHVtbk9yZGVyUmVjb3JkVmFsaWQoYykpIHtcclxuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICAgIGNvbnNvbGUud2FybignSW52YWxpZCBjb2x1bW4gb3JkZXIgcmVjb3JkJywgYylcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH0pLnNvcnQoKGEsIGIpID0+IGEuaW5kZXggPT09IGIuaW5kZXggPyAwIDogYS5pbmRleCA+IGIuaW5kZXggPyAxIDogLTEpXHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { SortType } from '@marklb/ngx-datatable';
|
|
2
|
+
import { notNullOrUndefined } from '@theseam/ui-common/utils';
|
|
3
|
+
import { ColumnsAlteration } from '../columns-alteration';
|
|
4
|
+
export class SortColumnsAlteration extends ColumnsAlteration {
|
|
5
|
+
constructor(state, persistent) {
|
|
6
|
+
super(state, persistent);
|
|
7
|
+
this.type = 'sort';
|
|
8
|
+
if (!this._isValidState(state)) {
|
|
9
|
+
throw Error(`Invalid state: ${JSON.stringify(state)}`);
|
|
10
|
+
}
|
|
11
|
+
this.id = `${this.type}`;
|
|
12
|
+
}
|
|
13
|
+
apply(columns, datatable) {
|
|
14
|
+
if (datatable.sortType === SortType.single) {
|
|
15
|
+
datatable.sorts = this.state.sorts.length > 0 ? [this.state.sorts[0]] : [];
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
datatable.sorts = this.state.sorts;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
_isValidState(state) {
|
|
22
|
+
// NOTE: Checking null or undefined, even though the type doesn't allow,
|
|
23
|
+
// because the state may have been loaded from an invalid persistant
|
|
24
|
+
// storage.
|
|
25
|
+
// TODO: Remove when state validation/migration is implemented to happen
|
|
26
|
+
// when retrieved from storage.
|
|
27
|
+
if (!notNullOrUndefined(state.sorts)) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC5jb2x1bW5zLWFsdGVyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZGF0YXRhYmxlL21vZGVscy9jb2x1bW5zLWFsdGVyYXRpb25zL3NvcnQuY29sdW1ucy1hbHRlcmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUc3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQWF6RCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsaUJBQTZDO0lBS3RGLFlBQ0UsS0FBaUMsRUFDakMsVUFBbUI7UUFFbkIsS0FBSyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQTtRQU5WLFNBQUksR0FBVyxNQUFNLENBQUE7UUFRbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDOUIsTUFBTSxLQUFLLENBQUMsa0JBQWtCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1NBQ3ZEO1FBRUQsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMxQixDQUFDO0lBRU0sS0FBSyxDQUFDLE9BQTJDLEVBQUUsU0FBbUM7UUFDM0YsSUFBSSxTQUFTLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDMUMsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtTQUM3RTthQUFNO1lBQ0wsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQTtTQUNuQztJQUNILENBQUM7SUFFTyxhQUFhLENBQUMsS0FBaUM7UUFDckQsd0VBQXdFO1FBQ3hFLG9FQUFvRTtRQUNwRSxXQUFXO1FBRVgsd0VBQXdFO1FBQ3hFLCtCQUErQjtRQUMvQixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3BDLE9BQU8sS0FBSyxDQUFBO1NBQ2I7UUFFRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNvcnRUeXBlIH0gZnJvbSAnQG1hcmtsYi9uZ3gtZGF0YXRhYmxlJ1xyXG5pbXBvcnQgeyBub3ROdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdXRpbHMnXHJcblxyXG5pbXBvcnQgeyBTb3J0SXRlbSB9IGZyb20gJy4uL3NvcnQtaXRlbSdcclxuaW1wb3J0IHsgQ29sdW1uc0FsdGVyYXRpb24gfSBmcm9tICcuLi9jb2x1bW5zLWFsdGVyYXRpb24nXHJcbmltcG9ydCB7IFRoZVNlYW1EYXRhdGFibGVBY2Nlc3NvciB9IGZyb20gJy4uL2RhdGF0YWJsZS1hY2Nlc3NvcidcclxuaW1wb3J0IHsgVGhlU2VhbURhdGF0YWJsZUNvbHVtbiB9IGZyb20gJy4uL3RhYmxlLWNvbHVtbidcclxuXHJcbi8vIE5PVEU6IFRoaXMgZG9lc24ndCBhY3Qgb24gYSBzaW5nbGUgU29ydEl0ZW0sIGJlY2F1c2UgZGVhbGluZyB3aXRoIGNvbmZsaWN0c1xyXG4vLyBiZXR3ZWVuIGlmIGEgc29ydCB3YXMgYWRkZWQgYnkgYW4gYWx0ZXJhdGlvbiBvciBkYXRhdGFibGUgaW5wdXQgaXMgZGlmZmljdWx0XHJcbi8vIHRvIGRldGVybWluZS4gVGhlcmUgbWF5IGJlIHNvbWUgZ29vZCBhc3N1bXB0aW9ucyBmb3IgaGFuZGxpbmcgdGhlIGlzc3VlcywgYnV0XHJcbi8vIGZvciBub3cgSSB0aGluayBpdCBpcyBzYWZlc3QgdG8ganVzdCBzdG9yZSB0aGUgd2hvbGUgc29ydHMgYXJyYXkgYXMgYW5cclxuLy8gYWx0ZXJhdGlvbi5cclxuZXhwb3J0IGludGVyZmFjZSBTb3J0Q29sdW1uc0FsdGVyYXRpb25TdGF0ZSB7XHJcbiAgc29ydHM6IFNvcnRJdGVtW11cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFNvcnRDb2x1bW5zQWx0ZXJhdGlvbiBleHRlbmRzIENvbHVtbnNBbHRlcmF0aW9uPFNvcnRDb2x1bW5zQWx0ZXJhdGlvblN0YXRlPiB7XHJcbiAgcHVibGljIHJlYWRvbmx5IGlkOiBzdHJpbmdcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IHR5cGU6IHN0cmluZyA9ICdzb3J0J1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHN0YXRlOiBTb3J0Q29sdW1uc0FsdGVyYXRpb25TdGF0ZSxcclxuICAgIHBlcnNpc3RlbnQ6IGJvb2xlYW5cclxuICApIHtcclxuICAgIHN1cGVyKHN0YXRlLCBwZXJzaXN0ZW50KVxyXG5cclxuICAgIGlmICghdGhpcy5faXNWYWxpZFN0YXRlKHN0YXRlKSkge1xyXG4gICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBzdGF0ZTogJHtKU09OLnN0cmluZ2lmeShzdGF0ZSl9YClcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlkID0gYCR7dGhpcy50eXBlfWBcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhcHBseShjb2x1bW5zOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uPGFueSwgYW55PltdLCBkYXRhdGFibGU6IFRoZVNlYW1EYXRhdGFibGVBY2Nlc3Nvcik6IHZvaWQge1xyXG4gICAgaWYgKGRhdGF0YWJsZS5zb3J0VHlwZSA9PT0gU29ydFR5cGUuc2luZ2xlKSB7XHJcbiAgICAgIGRhdGF0YWJsZS5zb3J0cyA9IHRoaXMuc3RhdGUuc29ydHMubGVuZ3RoID4gMCA/IFsgdGhpcy5zdGF0ZS5zb3J0c1swXSBdIDogW11cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRhdGF0YWJsZS5zb3J0cyA9IHRoaXMuc3RhdGUuc29ydHNcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2lzVmFsaWRTdGF0ZShzdGF0ZTogU29ydENvbHVtbnNBbHRlcmF0aW9uU3RhdGUpOiBib29sZWFuIHtcclxuICAgIC8vIE5PVEU6IENoZWNraW5nIG51bGwgb3IgdW5kZWZpbmVkLCBldmVuIHRob3VnaCB0aGUgdHlwZSBkb2Vzbid0IGFsbG93LFxyXG4gICAgLy8gYmVjYXVzZSB0aGUgc3RhdGUgbWF5IGhhdmUgYmVlbiBsb2FkZWQgZnJvbSBhbiBpbnZhbGlkIHBlcnNpc3RhbnRcclxuICAgIC8vIHN0b3JhZ2UuXHJcblxyXG4gICAgLy8gVE9ETzogUmVtb3ZlIHdoZW4gc3RhdGUgdmFsaWRhdGlvbi9taWdyYXRpb24gaXMgaW1wbGVtZW50ZWQgdG8gaGFwcGVuXHJcbiAgICAvLyB3aGVuIHJldHJpZXZlZCBmcm9tIHN0b3JhZ2UuXHJcbiAgICBpZiAoIW5vdE51bGxPclVuZGVmaW5lZChzdGF0ZS5zb3J0cykpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { notNullOrUndefined } from '@theseam/ui-common/utils';
|
|
2
|
+
import { getColumnProp } from '../../utils/get-column-prop';
|
|
3
|
+
import { ColumnsAlteration } from '../columns-alteration';
|
|
4
|
+
export class WidthColumnsAlteration extends ColumnsAlteration {
|
|
5
|
+
constructor(state, persistent) {
|
|
6
|
+
super(state, persistent);
|
|
7
|
+
this.type = 'width';
|
|
8
|
+
if (!this._isValidState(state)) {
|
|
9
|
+
throw Error(`Invalid state: ${JSON.stringify(state)}`);
|
|
10
|
+
}
|
|
11
|
+
this.id = `${this.type}--${state.columnProp}`;
|
|
12
|
+
}
|
|
13
|
+
apply(columns, datatable) {
|
|
14
|
+
for (const col of columns) {
|
|
15
|
+
const prop = getColumnProp(col);
|
|
16
|
+
if (prop === this.state.columnProp) {
|
|
17
|
+
col.canAutoResize = this.state.canAutoResize;
|
|
18
|
+
if (notNullOrUndefined(this.state.width)) {
|
|
19
|
+
col.width = this.state.width;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
_isValidState(state) {
|
|
25
|
+
// NOTE: Checking null or undefined, even though the type doesn't allow,
|
|
26
|
+
// because the state may have been loaded from an invalid persistant
|
|
27
|
+
// storage.
|
|
28
|
+
// TODO: Remove when state validation/migration is implemented to happen
|
|
29
|
+
// when retrieved from storage.
|
|
30
|
+
if (!notNullOrUndefined(state.columnProp)) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
// TODO: Remove when state validation/migration is implemented to happen
|
|
34
|
+
// when retrieved from storage.
|
|
35
|
+
if (!notNullOrUndefined(state.canAutoResize)) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkdGguY29sdW1ucy1hbHRlcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2RhdGF0YWJsZS9tb2RlbHMvY29sdW1ucy1hbHRlcmF0aW9ucy93aWR0aC5jb2x1bW5zLWFsdGVyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFFN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBVXpELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxpQkFBOEM7SUFLeEYsWUFDRSxLQUFrQyxFQUNsQyxVQUFtQjtRQUVuQixLQUFLLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBTlYsU0FBSSxHQUFXLE9BQU8sQ0FBQTtRQVFwQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM5QixNQUFNLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUE7U0FDdkQ7UUFFRCxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUE7SUFDL0MsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUEyQyxFQUFFLFNBQW1DO1FBQzNGLEtBQUssTUFBTSxHQUFHLElBQUksT0FBTyxFQUFFO1lBQ3pCLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUMvQixJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRTtnQkFDbEMsR0FBRyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQTtnQkFDNUMsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUN4QyxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFBO2lCQUM3QjthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sYUFBYSxDQUFDLEtBQWtDO1FBQ3RELHdFQUF3RTtRQUN4RSxvRUFBb0U7UUFDcEUsV0FBVztRQUVYLHdFQUF3RTtRQUN4RSwrQkFBK0I7UUFDL0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN6QyxPQUFPLEtBQUssQ0FBQTtTQUNiO1FBRUQsd0VBQXdFO1FBQ3hFLCtCQUErQjtRQUMvQixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQzVDLE9BQU8sS0FBSyxDQUFBO1NBQ2I7UUFFRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhYmxlQ29sdW1uUHJvcCB9IGZyb20gJ0BtYXJrbGIvbmd4LWRhdGF0YWJsZSdcclxuaW1wb3J0IHsgbm90TnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL3V0aWxzJ1xyXG5cclxuaW1wb3J0IHsgZ2V0Q29sdW1uUHJvcCB9IGZyb20gJy4uLy4uL3V0aWxzL2dldC1jb2x1bW4tcHJvcCdcclxuaW1wb3J0IHsgQ29sdW1uc0FsdGVyYXRpb24gfSBmcm9tICcuLi9jb2x1bW5zLWFsdGVyYXRpb24nXHJcbmltcG9ydCB7IFRoZVNlYW1EYXRhdGFibGVBY2Nlc3NvciB9IGZyb20gJy4uL2RhdGF0YWJsZS1hY2Nlc3NvcidcclxuaW1wb3J0IHsgVGhlU2VhbURhdGF0YWJsZUNvbHVtbiB9IGZyb20gJy4uL3RhYmxlLWNvbHVtbidcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgV2lkdGhDb2x1bW5zQWx0ZXJhdGlvblN0YXRlIHtcclxuICBjb2x1bW5Qcm9wOiBUYWJsZUNvbHVtblByb3BcclxuICB3aWR0aD86IG51bWJlclxyXG4gIGNhbkF1dG9SZXNpemU6IGJvb2xlYW5cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFdpZHRoQ29sdW1uc0FsdGVyYXRpb24gZXh0ZW5kcyBDb2x1bW5zQWx0ZXJhdGlvbjxXaWR0aENvbHVtbnNBbHRlcmF0aW9uU3RhdGU+IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgaWQ6IHN0cmluZ1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogc3RyaW5nID0gJ3dpZHRoJ1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHN0YXRlOiBXaWR0aENvbHVtbnNBbHRlcmF0aW9uU3RhdGUsXHJcbiAgICBwZXJzaXN0ZW50OiBib29sZWFuXHJcbiAgKSB7XHJcbiAgICBzdXBlcihzdGF0ZSwgcGVyc2lzdGVudClcclxuXHJcbiAgICBpZiAoIXRoaXMuX2lzVmFsaWRTdGF0ZShzdGF0ZSkpIHtcclxuICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgc3RhdGU6ICR7SlNPTi5zdHJpbmdpZnkoc3RhdGUpfWApXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pZCA9IGAke3RoaXMudHlwZX0tLSR7c3RhdGUuY29sdW1uUHJvcH1gXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXBwbHkoY29sdW1uczogVGhlU2VhbURhdGF0YWJsZUNvbHVtbjxhbnksIGFueT5bXSwgZGF0YXRhYmxlOiBUaGVTZWFtRGF0YXRhYmxlQWNjZXNzb3IpOiB2b2lkIHtcclxuICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHVtbnMpIHtcclxuICAgICAgY29uc3QgcHJvcCA9IGdldENvbHVtblByb3AoY29sKVxyXG4gICAgICBpZiAocHJvcCA9PT0gdGhpcy5zdGF0ZS5jb2x1bW5Qcm9wKSB7XHJcbiAgICAgICAgY29sLmNhbkF1dG9SZXNpemUgPSB0aGlzLnN0YXRlLmNhbkF1dG9SZXNpemVcclxuICAgICAgICBpZiAobm90TnVsbE9yVW5kZWZpbmVkKHRoaXMuc3RhdGUud2lkdGgpKSB7XHJcbiAgICAgICAgICBjb2wud2lkdGggPSB0aGlzLnN0YXRlLndpZHRoXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pc1ZhbGlkU3RhdGUoc3RhdGU6IFdpZHRoQ29sdW1uc0FsdGVyYXRpb25TdGF0ZSk6IGJvb2xlYW4ge1xyXG4gICAgLy8gTk9URTogQ2hlY2tpbmcgbnVsbCBvciB1bmRlZmluZWQsIGV2ZW4gdGhvdWdoIHRoZSB0eXBlIGRvZXNuJ3QgYWxsb3csXHJcbiAgICAvLyBiZWNhdXNlIHRoZSBzdGF0ZSBtYXkgaGF2ZSBiZWVuIGxvYWRlZCBmcm9tIGFuIGludmFsaWQgcGVyc2lzdGFudFxyXG4gICAgLy8gc3RvcmFnZS5cclxuXHJcbiAgICAvLyBUT0RPOiBSZW1vdmUgd2hlbiBzdGF0ZSB2YWxpZGF0aW9uL21pZ3JhdGlvbiBpcyBpbXBsZW1lbnRlZCB0byBoYXBwZW5cclxuICAgIC8vIHdoZW4gcmV0cmlldmVkIGZyb20gc3RvcmFnZS5cclxuICAgIGlmICghbm90TnVsbE9yVW5kZWZpbmVkKHN0YXRlLmNvbHVtblByb3ApKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFRPRE86IFJlbW92ZSB3aGVuIHN0YXRlIHZhbGlkYXRpb24vbWlncmF0aW9uIGlzIGltcGxlbWVudGVkIHRvIGhhcHBlblxyXG4gICAgLy8gd2hlbiByZXRyaWV2ZWQgZnJvbSBzdG9yYWdlLlxyXG4gICAgaWYgKCFub3ROdWxsT3JVbmRlZmluZWQoc3RhdGUuY2FuQXV0b1Jlc2l6ZSkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXRhYmxlLWFjY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2RhdGF0YWJsZS9tb2RlbHMvZGF0YXRhYmxlLWFjY2Vzc29yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcblxuaW1wb3J0IHsgRGF0YUZpbHRlclN0YXRlLCBEYXRhRmlsdGVyIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2RhdGEtZmlsdGVycydcblxuaW1wb3J0IHsgVGhlU2VhbVBhZ2VJbmZvIH0gZnJvbSAnLi9wYWdlLWluZm8nXG5pbXBvcnQgeyBTb3J0RXZlbnQgfSBmcm9tICcuL3NvcnQtZXZlbnQnXG5pbXBvcnQgeyBTb3J0SXRlbSB9IGZyb20gJy4vc29ydC1pdGVtJ1xuaW1wb3J0IHsgVGhlU2VhbURhdGF0YWJsZUNvbHVtbiB9IGZyb20gJy4vdGFibGUtY29sdW1uJ1xuaW1wb3J0IHsgU29ydFR5cGUgfSBmcm9tICdAbWFya2xiL25neC1kYXRhdGFibGUnXG5cbi8vIFRPRE86IFJlcGxhY2UgQmVoYXZpb3JTdWJqZWN0IGJhc2VkIG9ic2VydmFibGVzIHdpdGggY2hhbmdlIG9ubHkgZW1pdHRpbmdcbi8vIG9ic2VydmFibGVzLlxuZXhwb3J0IGludGVyZmFjZSBUaGVTZWFtRGF0YXRhYmxlQWNjZXNzb3Ige1xuXG4gIGNvbHVtbnM6IFRoZVNlYW1EYXRhdGFibGVDb2x1bW5bXVxuXG4gIHJlYWRvbmx5IGNvbHVtbnMkOiBPYnNlcnZhYmxlPFRoZVNlYW1EYXRhdGFibGVDb2x1bW5bXT5cblxuICByb3dzOiBhbnlbXVxuXG4gIHJlYWRvbmx5IHJvd3MkOiBPYnNlcnZhYmxlPGFueVtdPlxuXG4gIGZpbHRlcnM6IERhdGFGaWx0ZXJbXVxuXG4gIHJlYWRvbmx5IGZpbHRlcnMkOiBPYnNlcnZhYmxlPERhdGFGaWx0ZXJbXT5cblxuICBzb3J0VHlwZTogU29ydFR5cGVcblxuICBzb3J0czogU29ydEl0ZW1bXVxuXG4gIC8vIHJlYWRvbmx5IHNvcnRzJDogT2JzZXJ2YWJsZTxTb3J0SXRlbVtdPlxuXG4gIHNvcnQ6IE9ic2VydmFibGU8U29ydEV2ZW50PlxuXG4gIHJlYWRvbmx5IGZpbHRlclN0YXRlczogT2JzZXJ2YWJsZTxEYXRhRmlsdGVyU3RhdGVbXT5cblxuICByZWFkb25seSBwYWdlOiBPYnNlcnZhYmxlPFRoZVNlYW1QYWdlSW5mbz5cblxuICBwYWdlSW5mbzogVGhlU2VhbVBhZ2VJbmZvXG59XG4iXX0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ACTION_MENU_COLUMN_PROP } from '../utils/create-action-menu-column';
|
|
2
|
+
import { CHECKBOX_COLUMN_PROP } from '../utils/create-checkbox-column';
|
|
3
|
+
import { getColumnProp } from '../utils/get-column-prop';
|
|
4
|
+
/**
|
|
5
|
+
* Strings used for columns created and managed
|
|
6
|
+
* by the datatable.
|
|
7
|
+
*/
|
|
8
|
+
export const INTERNAL_COLUMN_PROPS = [
|
|
9
|
+
ACTION_MENU_COLUMN_PROP,
|
|
10
|
+
CHECKBOX_COLUMN_PROP
|
|
11
|
+
];
|
|
12
|
+
export function isInternalColumn(column) {
|
|
13
|
+
return INTERNAL_COLUMN_PROPS.findIndex(p => getColumnProp(column) === p) !== -1;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwtY29sdW1uLXByb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2RhdGF0YWJsZS9tb2RlbHMvaW50ZXJuYWwtY29sdW1uLXByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFBO0FBQzVFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQ3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUd4RDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBYTtJQUM3Qyx1QkFBdUI7SUFDdkIsb0JBQW9CO0NBQ3JCLENBQUE7QUFHRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBOEI7SUFDN0QsT0FBTyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7QUFDakYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFDVElPTl9NRU5VX0NPTFVNTl9QUk9QIH0gZnJvbSAnLi4vdXRpbHMvY3JlYXRlLWFjdGlvbi1tZW51LWNvbHVtbidcclxuaW1wb3J0IHsgQ0hFQ0tCT1hfQ09MVU1OX1BST1AgfSBmcm9tICcuLi91dGlscy9jcmVhdGUtY2hlY2tib3gtY29sdW1uJ1xyXG5pbXBvcnQgeyBnZXRDb2x1bW5Qcm9wIH0gZnJvbSAnLi4vdXRpbHMvZ2V0LWNvbHVtbi1wcm9wJ1xyXG5pbXBvcnQgeyBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uIH0gZnJvbSAnLi90YWJsZS1jb2x1bW4nXHJcblxyXG4vKipcclxuICogU3RyaW5ncyB1c2VkIGZvciBjb2x1bW5zIGNyZWF0ZWQgYW5kIG1hbmFnZWRcclxuICogYnkgdGhlIGRhdGF0YWJsZS5cclxuICovXHJcbmV4cG9ydCBjb25zdCBJTlRFUk5BTF9DT0xVTU5fUFJPUFM6IHN0cmluZ1tdID0gW1xyXG4gIEFDVElPTl9NRU5VX0NPTFVNTl9QUk9QLFxyXG4gIENIRUNLQk9YX0NPTFVNTl9QUk9QXHJcbl1cclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNJbnRlcm5hbENvbHVtbihjb2x1bW46IFRoZVNlYW1EYXRhdGFibGVDb2x1bW4pOiBib29sZWFuIHtcclxuICByZXR1cm4gSU5URVJOQUxfQ09MVU1OX1BST1BTLmZpbmRJbmRleChwID0+IGdldENvbHVtblByb3AoY29sdW1uKSA9PT0gcCkgIT09IC0xXHJcbn1cclxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1pbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2RhdGF0YWJsZS9tb2RlbHMvcGFnZS1pbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFRoZVNlYW1QYWdlSW5mbyB7XG4gIC8qKlxuICAgKiBJbmRleCBvZiBwYWdlLlxuICAgKi9cbiAgb2Zmc2V0OiBudW1iZXJcbiAgLyoqXG4gICAqIFNpemUgb2YgYSBwYWdlLlxuICAgKi9cbiAgcGFnZVNpemU6IG51bWJlclxuICAvKipcbiAgICogTWF4IHBhZ2Ugc2l6ZS5cbiAgICovXG4gIGxpbWl0PzogbnVtYmVyXG4gIC8qKlxuICAgKiBOdW1iZXIgb2Ygcm93cy5cbiAgICovXG4gIGNvdW50OiBudW1iZXJcbn1cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyZW5jZXMtYWNjZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZGF0YXRhYmxlL21vZGVscy9wcmVmZXJlbmNlcy1hY2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnXG5cbmV4cG9ydCBpbnRlcmZhY2UgVGhlU2VhbURhdGF0YWJsZVByZWZlcmVuY2VzQWNjZXNzb3Ige1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgcHJlZmVyZW5jZS5cbiAgICovXG4gIGdldChuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz5cblxuICAvKipcbiAgICogVXBkYXRlIGEgcHJlZmVyZW5jZS5cbiAgICovXG4gIHVwZGF0ZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz5cblxuICAvKipcbiAgICogRGVsZXRlIGEgcHJlZmVyZW5jZS5cbiAgICovXG4gIGRlbGV0ZShuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+XG5cbn1cbiJdfQ==
|
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
1
|
+
export const CURRENT_DATATABLE_PREFERENCES_VERSION = 2;
|
|
2
|
+
export const EMPTY_DATATABLE_PREFERENCES = {
|
|
3
|
+
version: 2,
|
|
4
|
+
alterations: []
|
|
5
|
+
};
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyZW5jZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZGF0YXRhYmxlL21vZGVscy9wcmVmZXJlbmNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvQkEsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUcsQ0FBQyxDQUFBO0FBRXRELE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFnQztJQUN0RSxPQUFPLEVBQUUsQ0FBQztJQUNWLFdBQVcsRUFBRSxFQUFFO0NBQ2hCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2x1bW5zQWx0ZXJhdGlvblN0YXRlIH0gZnJvbSAnLi9jb2x1bW5zLWFsdGVyYXRpb24nXG5cbmV4cG9ydCBpbnRlcmZhY2UgVGhlU2VhbURhdGF0YWJsZVByZWZlcmVuY2VzQ29sdW1uIHtcbiAgcHJvcDogc3RyaW5nXG4gIHdpZHRoPzogbnVtYmVyXG4gIGNhbkF1dG9SZXNpemU/OiBib29sZWFuXG4gIGhpZGRlbj86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBUaGVTZWFtRGF0YXRhYmxlUHJlZmVyZW5jZXNfdjEge1xuICBjb2x1bW5zPzogVGhlU2VhbURhdGF0YWJsZVByZWZlcmVuY2VzQ29sdW1uW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBUaGVTZWFtRGF0YXRhYmxlUHJlZmVyZW5jZXNfdjIge1xuICB2ZXJzaW9uOiAyXG4gIGFsdGVyYXRpb25zOiBDb2x1bW5zQWx0ZXJhdGlvblN0YXRlW11cbn1cblxuZXhwb3J0IHR5cGUgVGhlU2VhbURhdGF0YWJsZVByZWZlcmVuY2VzID0gVGhlU2VhbURhdGF0YWJsZVByZWZlcmVuY2VzX3YyXG5cbmV4cG9ydCBjb25zdCBDVVJSRU5UX0RBVEFUQUJMRV9QUkVGRVJFTkNFU19WRVJTSU9OID0gMlxuXG5leHBvcnQgY29uc3QgRU1QVFlfREFUQVRBQkxFX1BSRUZFUkVOQ0VTOiBUaGVTZWFtRGF0YXRhYmxlUHJlZmVyZW5jZXMgPSB7XG4gIHZlcnNpb246IDIsXG4gIGFsdGVyYXRpb25zOiBbXVxufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2RhdGF0YWJsZS9tb2RlbHMvc29ydC1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYWJsZUNvbHVtblByb3AgfSBmcm9tICdAbWFya2xiL25neC1kYXRhdGFibGUnXG5cbmV4cG9ydCBpbnRlcmZhY2UgU29ydEl0ZW0geyBwcm9wOiBUYWJsZUNvbHVtblByb3AsICBkaXI6ICdhc2MnIHwgJ2Rlc2MnIH1cbiJdfQ==
|
|
@@ -5,6 +5,8 @@ export * from './datatable-column/datatable-column.component';
|
|
|
5
5
|
export * from './datatable-column-preferences/datatable-column-preferences.component';
|
|
6
6
|
export * from './datatable-column-preferences-button/datatable-column-preferences-button.component';
|
|
7
7
|
export * from './datatable-export-button/datatable-export-button.component';
|
|
8
|
+
export * from './datatable-footer/datatable-footer-tpl.directive';
|
|
9
|
+
export * from './datatable-footer/datatable-footer.directive';
|
|
8
10
|
export * from './datatable-menu-bar/datatable-menu-bar.component';
|
|
9
11
|
export * from './datatable-menu-bar-column-center/datatable-menu-bar-column-center.component';
|
|
10
12
|
export * from './datatable-menu-bar-column-left/datatable-menu-bar-column-left.component';
|
|
@@ -36,4 +38,4 @@ export * from './tokens/datatable-preferences-accessor';
|
|
|
36
38
|
export * from './tokens/menubar-item-data';
|
|
37
39
|
export * from './utils/with-stored-column-info';
|
|
38
40
|
export * from './datatable.module';
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9kYXRhdGFibGUvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlDQUFpQyxDQUFBO0FBQy9DLGNBQWMseURBQXlELENBQUE7QUFDdkUsY0FBYyxtRUFBbUUsQ0FBQTtBQUNqRixjQUFjLCtDQUErQyxDQUFBO0FBQzdELGNBQWMsdUVBQXVFLENBQUE7QUFDckYsY0FBYyxxRkFBcUYsQ0FBQTtBQUNuRyxjQUFjLDZEQUE2RCxDQUFBO0FBQzNFLGNBQWMsbURBQW1ELENBQUE7QUFDakUsY0FBYywrQ0FBK0MsQ0FBQTtBQUM3RCxjQUFjLG1EQUFtRCxDQUFBO0FBQ2pFLGNBQWMsK0VBQStFLENBQUE7QUFDN0YsY0FBYywyRUFBMkUsQ0FBQTtBQUN6RixjQUFjLDZFQUE2RSxDQUFBO0FBQzNGLGNBQWMsMkRBQTJELENBQUE7QUFDekUsY0FBYyw2REFBNkQsQ0FBQTtBQUMzRSxjQUFjLDJEQUEyRCxDQUFBO0FBQ3pFLGNBQWMsdURBQXVELENBQUE7QUFFckUsY0FBYyxtREFBbUQsQ0FBQTtBQUNqRSxjQUFjLHFEQUFxRCxDQUFBO0FBQ25FLGNBQWMsMkNBQTJDLENBQUE7QUFDekQsY0FBYyx5Q0FBeUMsQ0FBQTtBQUN2RCxjQUFjLGtEQUFrRCxDQUFBO0FBRWhFLGNBQWMsNkJBQTZCLENBQUE7QUFDM0MsY0FBYyxnQ0FBZ0MsQ0FBQTtBQUM5QyxjQUFjLG9DQUFvQyxDQUFBO0FBQ2xELGNBQWMsNEJBQTRCLENBQUE7QUFDMUMsY0FBYyxvQkFBb0IsQ0FBQTtBQUNsQyxjQUFjLCtCQUErQixDQUFBO0FBQzdDLGNBQWMsc0JBQXNCLENBQUE7QUFDcEMsY0FBYyx1QkFBdUIsQ0FBQTtBQUNyQyxjQUFjLHFCQUFxQixDQUFBO0FBQ25DLGNBQWMsb0JBQW9CLENBQUE7QUFDbEMsY0FBYyx1QkFBdUIsQ0FBQTtBQUVyQyxjQUFjLDZDQUE2QyxDQUFBO0FBQzNELGNBQWMsMENBQTBDLENBQUE7QUFDeEQsY0FBYywrQ0FBK0MsQ0FBQTtBQUU3RCxjQUFjLHlDQUF5QyxDQUFBO0FBQ3ZELGNBQWMsNEJBQTRCLENBQUE7QUFFMUMsY0FBYyxpQ0FBaUMsQ0FBQTtBQUUvQyxjQUFjLG9CQUFvQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kYXRhdGFibGUvZGF0YXRhYmxlLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vZGF0YXRhYmxlLWFjdGlvbi1tZW51L2RhdGF0YWJsZS1hY3Rpb24tbWVudS5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2RhdGF0YWJsZS1hY3Rpb24tbWVudS1pdGVtL2RhdGF0YWJsZS1hY3Rpb24tbWVudS1pdGVtLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vZGF0YXRhYmxlLWNvbHVtbi9kYXRhdGFibGUtY29sdW1uLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vZGF0YXRhYmxlLWNvbHVtbi1wcmVmZXJlbmNlcy9kYXRhdGFibGUtY29sdW1uLXByZWZlcmVuY2VzLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vZGF0YXRhYmxlLWNvbHVtbi1wcmVmZXJlbmNlcy1idXR0b24vZGF0YXRhYmxlLWNvbHVtbi1wcmVmZXJlbmNlcy1idXR0b24uY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhdGFibGUtZXhwb3J0LWJ1dHRvbi9kYXRhdGFibGUtZXhwb3J0LWJ1dHRvbi5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2RhdGF0YWJsZS1mb290ZXIvZGF0YXRhYmxlLWZvb3Rlci10cGwuZGlyZWN0aXZlJ1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhdGFibGUtZm9vdGVyL2RhdGF0YWJsZS1mb290ZXIuZGlyZWN0aXZlJ1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhdGFibGUtbWVudS1iYXIvZGF0YXRhYmxlLW1lbnUtYmFyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vZGF0YXRhYmxlLW1lbnUtYmFyLWNvbHVtbi1jZW50ZXIvZGF0YXRhYmxlLW1lbnUtYmFyLWNvbHVtbi1jZW50ZXIuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhdGFibGUtbWVudS1iYXItY29sdW1uLWxlZnQvZGF0YXRhYmxlLW1lbnUtYmFyLWNvbHVtbi1sZWZ0LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vZGF0YXRhYmxlLW1lbnUtYmFyLWNvbHVtbi1yaWdodC9kYXRhdGFibGUtbWVudS1iYXItY29sdW1uLXJpZ2h0LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vZGF0YXRhYmxlLW1lbnUtYmFyLXJvdy9kYXRhdGFibGUtbWVudS1iYXItcm93LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vZGF0YXRhYmxlLW1lbnUtYmFyLXRleHQvZGF0YXRhYmxlLW1lbnUtYmFyLXRleHQuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhdGFibGUtcm93LWRldGFpbC9kYXRhdGFibGUtcm93LWRldGFpbC10cGwuZGlyZWN0aXZlJ1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhdGFibGUtcm93LWRldGFpbC9kYXRhdGFibGUtcm93LWRldGFpbC5kaXJlY3RpdmUnXG5cbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9kYXRhdGFibGUtYWN0aW9uLW1lbnUtaXRlbS5kaXJlY3RpdmUnXG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvZGF0YXRhYmxlLWFjdGlvbi1tZW51LXRvZ2dsZS5kaXJlY3RpdmUnXG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvZGF0YXRhYmxlLWNlbGwtdHBsLmRpcmVjdGl2ZSdcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9kYXRhdGFibGUtZmlsdGVyLmRpcmVjdGl2ZSdcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9kYXRhdGFibGUtcm93LWFjdGlvbi1pdGVtLmRpcmVjdGl2ZSdcblxuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvZGF0YXRhYmxlLWFjY2Vzc29yJ1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvZGF0YXRhYmxlLWRhdGEtc291cmNlJ1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvZGF0YXRhYmxlLWdxbC1kYXRhLXNvdXJjZSdcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL21lbnViYXItaXRlbS1kYXRhJ1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvcGFnZS1pbmZvJ1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvcHJlZmVyZW5jZXMtYWNjZXNzb3InXG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9wcmVmZXJlbmNlcydcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL3RhYmxlLWNvbHVtbidcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL3NvcnQtZXZlbnQnXG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9zb3J0LWl0ZW0nXG5leHBvcnQgKiBmcm9tICcuL21vZGVscy90YWJsZS1jb2x1bW4nXG5cbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvZGF0YXRhYmxlLWNvbHVtbi1jaGFuZ2VzLnNlcnZpY2UnXG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2RhdGF0YWJsZS1wcmVmZXJlbmNlcy5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9kYXRhdGFibGUtc2Nyb2xsYmFyLWhlbHBlci5zZXJ2aWNlJ1xuXG5leHBvcnQgKiBmcm9tICcuL3Rva2Vucy9kYXRhdGFibGUtcHJlZmVyZW5jZXMtYWNjZXNzb3InXG5leHBvcnQgKiBmcm9tICcuL3Rva2Vucy9tZW51YmFyLWl0ZW0tZGF0YSdcblxuZXhwb3J0ICogZnJvbSAnLi91dGlscy93aXRoLXN0b3JlZC1jb2x1bW4taW5mbydcblxuZXhwb3J0ICogZnJvbSAnLi9kYXRhdGFibGUubW9kdWxlJ1xuIl19
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import { notNullOrUndefined } from '@theseam/ui-common/utils';
|
|
4
|
+
import { HideColumnColumnsAlteration } from '../models/columns-alterations/hide-column.columns-alteration';
|
|
5
|
+
import { SortColumnsAlteration } from '../models/columns-alterations/sort.columns-alteration';
|
|
6
|
+
import { WidthColumnsAlteration } from '../models/columns-alterations/width.columns-alteration';
|
|
7
|
+
export class ColumnsAlterationsManagerService {
|
|
8
|
+
constructor() {
|
|
9
|
+
this._changesSubject = new Subject();
|
|
10
|
+
this._alterations = [];
|
|
11
|
+
this.changes = this._changesSubject.asObservable();
|
|
12
|
+
}
|
|
13
|
+
get() {
|
|
14
|
+
return [...this._alterations];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Adds alterations to be applied to columns.
|
|
18
|
+
*
|
|
19
|
+
* If an alteration with the same `id` already exists then the existing
|
|
20
|
+
* alteration will be removed and the new one added.
|
|
21
|
+
*
|
|
22
|
+
* NOTE: When there is a duplicate alteration the old alteration is removed,
|
|
23
|
+
* instead of updated, to maintain the order alterations are applied.
|
|
24
|
+
*/
|
|
25
|
+
add(alterations, options) {
|
|
26
|
+
// console.log('add', alterations)
|
|
27
|
+
const removed = this.remove(alterations, { emitEvent: false });
|
|
28
|
+
this._alterations = [...this._alterations, ...alterations];
|
|
29
|
+
const changes = [
|
|
30
|
+
...removed,
|
|
31
|
+
...alterations.map(a => {
|
|
32
|
+
const record = {
|
|
33
|
+
type: 'added',
|
|
34
|
+
alteration: a
|
|
35
|
+
};
|
|
36
|
+
return record;
|
|
37
|
+
})
|
|
38
|
+
];
|
|
39
|
+
if (notNullOrUndefined(options === null || options === void 0 ? void 0 : options.emitEvent) && !(options === null || options === void 0 ? void 0 : options.emitEvent)) {
|
|
40
|
+
return changes;
|
|
41
|
+
}
|
|
42
|
+
this._emitChanges(changes);
|
|
43
|
+
return changes;
|
|
44
|
+
}
|
|
45
|
+
remove(alterations, options) {
|
|
46
|
+
// console.log('remove', alterations)
|
|
47
|
+
const removed = [];
|
|
48
|
+
this._alterations = this._alterations.filter(x => {
|
|
49
|
+
const found = alterations.findIndex(y => y.id === x.id) !== -1;
|
|
50
|
+
if (found) {
|
|
51
|
+
const eventRecord = {
|
|
52
|
+
type: 'removed',
|
|
53
|
+
alteration: x
|
|
54
|
+
};
|
|
55
|
+
removed.push(eventRecord);
|
|
56
|
+
}
|
|
57
|
+
return !found;
|
|
58
|
+
});
|
|
59
|
+
// console.log('removed', removed, this._alterations)
|
|
60
|
+
if (notNullOrUndefined(options === null || options === void 0 ? void 0 : options.emitEvent) && !(options === null || options === void 0 ? void 0 : options.emitEvent)) {
|
|
61
|
+
return removed;
|
|
62
|
+
}
|
|
63
|
+
this._emitChanges(removed);
|
|
64
|
+
return removed;
|
|
65
|
+
}
|
|
66
|
+
apply(columns, datatable) {
|
|
67
|
+
for (const a of this._alterations) {
|
|
68
|
+
a.apply(columns, datatable);
|
|
69
|
+
}
|
|
70
|
+
this._removeNonPersistant();
|
|
71
|
+
}
|
|
72
|
+
// TODO: Make aware of original column order and properties. This is tricky,
|
|
73
|
+
// because the datatable does not deal with immutable column/row records and
|
|
74
|
+
// it is hard to know where changes happened. Just serializing the columns
|
|
75
|
+
// input is not enough, because the columns input is called anytime the user
|
|
76
|
+
// makes a column change. We can probably come up with a mostly accurate
|
|
77
|
+
// implementation, such as "reset original columns cache when preferencesKey
|
|
78
|
+
// changes" or "number of columns change". There are issues with those rules,
|
|
79
|
+
// but with some testing/experimenting I think there should be a "good enough"
|
|
80
|
+
// solution.
|
|
81
|
+
//
|
|
82
|
+
// TODO: Find a generic way to clear alterations. I would like to add an
|
|
83
|
+
// `unapply` method to `ColumnsAlteration`, but since the alterations
|
|
84
|
+
// themselves are not too generic it may be tricky.
|
|
85
|
+
clear(options) {
|
|
86
|
+
const changes = [];
|
|
87
|
+
for (const colAlt of this._alterations) {
|
|
88
|
+
switch (colAlt.type) {
|
|
89
|
+
case 'hide-column': {
|
|
90
|
+
const alteration = new HideColumnColumnsAlteration({ columnProp: colAlt.state.columnProp, hidden: false }, false);
|
|
91
|
+
changes.push(...this.add([alteration]));
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
case 'order': {
|
|
95
|
+
changes.push(...this.remove([colAlt]));
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
case 'sort': {
|
|
99
|
+
const alteration = new SortColumnsAlteration({ sorts: [] }, false);
|
|
100
|
+
changes.push(...this.add([alteration]));
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
case 'width': {
|
|
104
|
+
const alteration = new WidthColumnsAlteration({ columnProp: colAlt.state.columnProp, canAutoResize: true }, false);
|
|
105
|
+
changes.push(...this.add([alteration]));
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (notNullOrUndefined(options === null || options === void 0 ? void 0 : options.emitEvent) && !(options === null || options === void 0 ? void 0 : options.emitEvent)) {
|
|
111
|
+
return changes;
|
|
112
|
+
}
|
|
113
|
+
this._emitChanges(changes);
|
|
114
|
+
return changes;
|
|
115
|
+
}
|
|
116
|
+
_removeNonPersistant() {
|
|
117
|
+
const nonPersistent = this._alterations.filter(x => !x.persistent);
|
|
118
|
+
this.remove(nonPersistent, { emitEvent: false });
|
|
119
|
+
}
|
|
120
|
+
_emitChanges(changes) {
|
|
121
|
+
if (changes.length === 0) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
const event = {
|
|
125
|
+
changes
|
|
126
|
+
};
|
|
127
|
+
this._changesSubject.next(event);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
ColumnsAlterationsManagerService.decorators = [
|
|
131
|
+
{ type: Injectable }
|
|
132
|
+
];
|
|
133
|
+
ColumnsAlterationsManagerService.ctorParameters = () => [];
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1ucy1hbHRlcmF0aW9ucy1tYW5hZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZGF0YXRhYmxlL3NlcnZpY2VzL2NvbHVtbnMtYWx0ZXJhdGlvbnMtbWFuYWdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUUxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUs3RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQTtBQUMxRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQTtBQUM3RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQTtBQVkvRixNQUFNLE9BQU8sZ0NBQWdDO0lBTzNDO1FBTGlCLG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQWtDLENBQUE7UUFDeEUsaUJBQVksR0FBd0IsRUFBRSxDQUFBO1FBSzVDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtJQUNwRCxDQUFDO0lBRU0sR0FBRztRQUNSLE9BQU8sQ0FBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUUsQ0FBQTtJQUNqQyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxHQUFHLENBQUMsV0FBZ0MsRUFBRSxPQUFpQztRQUM1RSxrQ0FBa0M7UUFDbEMsTUFBTSxPQUFPLEdBQXNDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7UUFDakcsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVks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LE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDbEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUNsRCxDQUFDO0lBRU8sWUFBWSxDQUFDLE9BQTBDO1FBQzdELElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDeEIsT0FBTTtTQUNQO1FBRUQsTUFBTSxLQUFLLEdBQW1DO1lBQzVDLE9BQU87U0FDUixDQUFBO1FBRUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDbEMsQ0FBQzs7O1lBbkpGLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnXHJcblxyXG5pbXBvcnQgeyBub3ROdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdXRpbHMnXHJcblxyXG5pbXBvcnQgeyBDb2x1bW5zQWx0ZXJhdGlvbiB9IGZyb20gJy4uL21vZGVscy9jb2x1bW5zLWFsdGVyYXRpb24nXHJcbmltcG9ydCB7IFRoZVNlYW1EYXRhdGFibGVDb2x1bW4gfSBmcm9tICcuLi9tb2RlbHMvdGFibGUtY29sdW1uJ1xyXG5pbXBvcnQgeyBUaGVTZWFtRGF0YXRhYmxlQWNjZXNzb3IgfSBmcm9tICcuLi9tb2RlbHMvZGF0YXRhYmxlLWFjY2Vzc29yJ1xyXG5pbXBvcnQgeyBIaWRlQ29sdW1uQ29sdW1uc0FsdGVyYXRpb24gfSBmcm9tICcuLi9tb2RlbHMvY29sdW1ucy1hbHRlcmF0aW9ucy9oaWRlLWNvbHVtbi5jb2x1bW5zLWFsdGVyYXRpb24nXHJcbmltcG9ydCB7IFNvcnRDb2x1bW5zQWx0ZXJhdGlvbiB9IGZyb20gJy4uL21vZGVscy9jb2x1bW5zLWFsdGVyYXRpb25zL3NvcnQuY29sdW1ucy1hbHRlcmF0aW9uJ1xyXG5pbXBvcnQgeyBXaWR0aENvbHVtbnNBbHRlcmF0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2NvbHVtbnMtYWx0ZXJhdGlvbnMvd2lkdGguY29sdW1ucy1hbHRlcmF0aW9uJ1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5zQWx0ZXJhdGlvbnNDaGFuZ2VkUmVjb3JkIHtcclxuICB0eXBlOiAnYWRkZWQnIHwgJ3JlbW92ZWQnXHJcbiAgYWx0ZXJhdGlvbjogQ29sdW1uc0FsdGVyYXRpb25cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5zQWx0ZXJhdGlvbnNDaGFuZ2VkRXZlbnQge1xyXG4gIGNoYW5nZXM6IENvbHVtbnNBbHRlcmF0aW9uc0NoYW5nZWRSZWNvcmRbXVxyXG59XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDb2x1bW5zQWx0ZXJhdGlvbnNNYW5hZ2VyU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZXNTdWJqZWN0ID0gbmV3IFN1YmplY3Q8Q29sdW1uc0FsdGVyYXRpb25zQ2hhbmdlZEV2ZW50PigpXHJcbiAgcHJpdmF0ZSBfYWx0ZXJhdGlvbnM6IENvbHVtbnNBbHRlcmF0aW9uW10gPSBbXVxyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgY2hhbmdlczogT2JzZXJ2YWJsZTxDb2x1bW5zQWx0ZXJhdGlvbnNDaGFuZ2VkRXZlbnQ+XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5jaGFuZ2VzID0gdGhpcy5fY2hhbmdlc1N1YmplY3QuYXNPYnNlcnZhYmxlKClcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQoKTogQ29sdW1uc0FsdGVyYXRpb25bXSB7XHJcbiAgICByZXR1cm4gWyAuLi50aGlzLl9hbHRlcmF0aW9ucyBdXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGRzIGFsdGVyYXRpb25zIHRvIGJlIGFwcGxpZWQgdG8gY29sdW1ucy5cclxuICAgKlxyXG4gICAqIElmIGFuIGFsdGVyYXRpb24gd2l0aCB0aGUgc2FtZSBgaWRgIGFscmVhZHkgZXhpc3RzIHRoZW4gdGhlIGV4aXN0aW5nXHJcbiAgICogYWx0ZXJhdGlvbiB3aWxsIGJlIHJlbW92ZWQgYW5kIHRoZSBuZXcgb25lIGFkZGVkLlxyXG4gICAqXHJcbiAgICogTk9URTogV2hlbiB0aGVyZSBpcyBhIGR1cGxpY2F0ZSBhbHRlcmF0aW9uIHRoZSBvbGQgYWx0ZXJhdGlvbiBpcyByZW1vdmVkLFxyXG4gICAqIGluc3RlYWQgb2YgdXBkYXRlZCwgdG8gbWFpbnRhaW4gdGhlIG9yZGVyIGFsdGVyYXRpb25zIGFyZSBhcHBsaWVkLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBhZGQoYWx0ZXJhdGlvbnM6IENvbHVtbnNBbHRlcmF0aW9uW10sIG9wdGlvbnM/OiB7IGVtaXRFdmVudD86IGJvb2xlYW4gfSk6IENvbHVtbnNBbHRlcmF0aW9uc0NoYW5nZWRSZWNvcmRbXSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnYWRkJywgYWx0ZXJhdGlvbnMpXHJcbiAgICBjb25zdCByZW1vdmVkOiBDb2x1bW5zQWx0ZXJhdGlvbnNDaGFuZ2VkUmVjb3JkW10gPSB0aGlzLnJlbW92ZShhbHRlcmF0aW9ucywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pXHJcbiAgICB0aGlzLl9hbHRlcmF0aW9ucyA9IFsgLi4udGhpcy5fYWx0ZXJhdGlvbnMsIC4uLmFsdGVyYXRpb25zIF1cclxuXHJcbiAgICBjb25zdCBjaGFuZ2VzOiBDb2x1bW5zQWx0ZXJhdGlvbnNDaGFuZ2VkUmVjb3JkW10gPSBbXHJcbiAgICAgIC4uLnJlbW92ZWQsXHJcbiAgICAgIC4uLmFsdGVyYXRpb25zLm1hcChhID0+IHtcclxuICAgICAgICBjb25zdCByZWNvcmQ6IENvbHVtbnNBbHRlcmF0aW9uc0NoYW5nZWRSZWNvcmQgPSB7XHJcbiAgICAgICAgICB0eXBlOiAnYWRkZWQnLFxyXG4gICAgICAgICAgYWx0ZXJhdGlvbjogYVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVjb3JkXHJcbiAgICAgIH0pXHJcbiAgICBdXHJcblxyXG4gICAgaWYgKG5vdE51bGxPclVuZGVmaW5lZChvcHRpb25zPy5lbWl0RXZlbnQpICYmICFvcHRpb25zPy5lbWl0RXZlbnQpIHtcclxuICAgICAgcmV0dXJuIGNoYW5nZXNcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9lbWl0Q2hhbmdlcyhjaGFuZ2VzKVxyXG5cclxuICAgIHJldHVybiBjaGFuZ2VzXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVtb3ZlKGFsdGVyYXRpb25zOiBDb2x1bW5zQWx0ZXJhdGlvbltdLCBvcHRpb25zPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pOiBDb2x1bW5zQWx0ZXJhdGlvbnNDaGFuZ2VkUmVjb3JkW10ge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ3JlbW92ZScsIGFsdGVyYXRpb25zKVxyXG4gICAgY29uc3QgcmVtb3ZlZDogQ29sdW1uc0FsdGVyYXRpb25zQ2hhbmdlZFJlY29yZFtdID0gW11cclxuICAgIHRoaXMuX2FsdGVyYXRpb25zID0gdGhpcy5fYWx0ZXJhdGlvbnMuZmlsdGVyKHggPT4ge1xyXG4gICAgICBjb25zdCBmb3VuZCA9IGFsdGVyYXRpb25zLmZpbmRJbmRleCh5ID0+IHkuaWQgPT09IHguaWQpICE9PSAtMVxyXG4gICAgICBpZiAoZm91bmQpIHtcclxuICAgICAgICBjb25zdCBldmVudFJlY29yZDogQ29sdW1uc0FsdGVyYXRpb25zQ2hhbmdlZFJlY29yZCA9IHtcclxuICAgICAgICAgIHR5cGU6ICdyZW1vdmVkJyxcclxuICAgICAgICAgIGFsdGVyYXRpb246IHhcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVtb3ZlZC5wdXNoKGV2ZW50UmVjb3JkKVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAhZm91bmRcclxuICAgIH0pXHJcblxyXG4gICAgLy8gY29uc29sZS5sb2coJ3JlbW92ZWQnLCByZW1vdmVkLCB0aGlzLl9hbHRlcmF0aW9ucylcclxuXHJcbiAgICBpZiAobm90TnVsbE9yVW5kZWZpbmVkKG9wdGlvbnM/LmVtaXRFdmVudCkgJiYgIW9wdGlvbnM/LmVtaXRFdmVudCkge1xyXG4gICAgICByZXR1cm4gcmVtb3ZlZFxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2VtaXRDaGFuZ2VzKHJlbW92ZWQpXHJcblxyXG4gICAgcmV0dXJuIHJlbW92ZWRcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhcHBseShjb2x1bW5zOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uW10sIGRhdGF0YWJsZTogVGhlU2VhbURhdGF0YWJsZUFjY2Vzc29yKTogdm9pZCB7XHJcbiAgICBmb3IgKGNvbnN0IGEgb2YgdGhpcy5fYWx0ZXJhdGlvbnMpIHtcclxuICAgICAgYS5hcHBseShjb2x1bW5zLCBkYXRhdGFibGUpXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fcmVtb3ZlTm9uUGVyc2lzdGFudCgpXHJcbiAgfVxyXG5cclxuICAvLyBUT0RPOiBNYWtlIGF3YXJlIG9mIG9yaWdpbmFsIGNvbHVtbiBvcmRlciBhbmQgcHJvcGVydGllcy4gVGhpcyBpcyB0cmlja3ksXHJcbiAgLy8gYmVjYXVzZSB0aGUgZGF0YXRhYmxlIGRvZXMgbm90IGRlYWwgd2l0aCBpbW11dGFibGUgY29sdW1uL3JvdyByZWNvcmRzIGFuZFxyXG4gIC8vIGl0IGlzIGhhcmQgdG8ga25vdyB3aGVyZSBjaGFuZ2VzIGhhcHBlbmVkLiBKdXN0IHNlcmlhbGl6aW5nIHRoZSBjb2x1bW5zXHJcbiAgLy8gaW5wdXQgaXMgbm90IGVub3VnaCwgYmVjYXVzZSB0aGUgY29sdW1ucyBpbnB1dCBpcyBjYWxsZWQgYW55dGltZSB0aGUgdXNlclxyXG4gIC8vIG1ha2VzIGEgY29sdW1uIGNoYW5nZS4gV2UgY2FuIHByb2JhYmx5IGNvbWUgdXAgd2l0aCBhIG1vc3RseSBhY2N1cmF0ZVxyXG4gIC8vIGltcGxlbWVudGF0aW9uLCBzdWNoIGFzIFwicmVzZXQgb3JpZ2luYWwgY29sdW1ucyBjYWNoZSB3aGVuIHByZWZlcmVuY2VzS2V5XHJcbiAgLy8gY2hhbmdlc1wiIG9yIFwibnVtYmVyIG9mIGNvbHVtbnMgY2hhbmdlXCIuIFRoZXJlIGFyZSBpc3N1ZXMgd2l0aCB0aG9zZSBydWxlcyxcclxuICAvLyBidXQgd2l0aCBzb21lIHRlc3RpbmcvZXhwZXJpbWVudGluZyBJIHRoaW5rIHRoZXJlIHNob3VsZCBiZSBhIFwiZ29vZCBlbm91Z2hcIlxyXG4gIC8vIHNvbHV0aW9uLlxyXG4gIC8vXHJcbiAgLy8gVE9ETzogRmluZCBhIGdlbmVyaWMgd2F5IHRvIGNsZWFyIGFsdGVyYXRpb25zLiBJIHdvdWxkIGxpa2UgdG8gYWRkIGFuXHJcbiAgLy8gYHVuYXBwbHlgIG1ldGhvZCB0byBgQ29sdW1uc0FsdGVyYXRpb25gLCBidXQgc2luY2UgdGhlIGFsdGVyYXRpb25zXHJcbiAgLy8gdGhlbXNlbHZlcyBhcmUgbm90IHRvbyBnZW5lcmljIGl0IG1heSBiZSB0cmlja3kuXHJcbiAgcHVibGljIGNsZWFyKG9wdGlvbnM/OiB7IGVtaXRFdmVudD86IGJvb2xlYW4gfSk6IENvbHVtbnNBbHRlcmF0aW9uc0NoYW5nZWRSZWNvcmRbXSB7XHJcbiAgICBjb25zdCBjaGFuZ2VzOiBDb2x1bW5zQWx0ZXJhdGlvbnNDaGFuZ2VkUmVjb3JkW10gPSBbXVxyXG4gICAgZm9yIChjb25zdCBjb2xBbHQgb2YgdGhpcy5fYWx0ZXJhdGlvbnMpIHtcclxuICAgICAgc3dpdGNoIChjb2xBbHQudHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ2hpZGUtY29sdW1uJzoge1xyXG4gICAgICAgICAgY29uc3QgYWx0ZXJhdGlvbiA9IG5ldyBIaWRlQ29sdW1uQ29sdW1uc0FsdGVyYXRpb24oeyBjb2x1bW5Qcm9wOiBjb2xBbHQuc3RhdGUuY29sdW1uUHJvcCwgaGlkZGVuOiBmYWxzZSB9LCBmYWxzZSlcclxuICAgICAgICAgIGNoYW5nZXMucHVzaCguLi50aGlzLmFkZChbIGFsdGVyYXRpb24gXSkpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnb3JkZXInOiB7XHJcbiAgICAgICAgICBjaGFuZ2VzLnB1c2goLi4udGhpcy5yZW1vdmUoWyBjb2xBbHQgXSkpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnc29ydCc6IHtcclxuICAgICAgICAgIGNvbnN0IGFsdGVyYXRpb24gPSBuZXcgU29ydENvbHVtbnNBbHRlcmF0aW9uKHsgc29ydHM6IFtdIH0sIGZhbHNlKVxyXG4gICAgICAgICAgY2hhbmdlcy5wdXNoKC4uLnRoaXMuYWRkKFsgYWx0ZXJhdGlvbiBdKSlcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICd3aWR0aCc6IHtcclxuICAgICAgICAgIGNvbnN0IGFsdGVyYXRpb24gPSBuZXcgV2lkdGhDb2x1bW5zQWx0ZXJhdGlvbih7IGNvbHVtblByb3A6IGNvbEFsdC5zdGF0ZS5jb2x1bW5Qcm9wLCBjYW5BdXRvUmVzaXplOiB0cnVlIH0sIGZhbHNlKVxyXG4gICAgICAgICAgY2hhbmdlcy5wdXNoKC4uLnRoaXMuYWRkKFsgYWx0ZXJhdGlvbiBdKSlcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChub3ROdWxsT3JVbmRlZmluZWQob3B0aW9ucz8uZW1pdEV2ZW50KSAmJiAhb3B0aW9ucz8uZW1pdEV2ZW50KSB7XHJcbiAgICAgIHJldHVybiBjaGFuZ2VzXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fZW1pdENoYW5nZXMoY2hhbmdlcylcclxuXHJcbiAgICByZXR1cm4gY2hhbmdlc1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVtb3ZlTm9uUGVyc2lzdGFudCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5vblBlcnNpc3RlbnQgPSB0aGlzLl9hbHRlcmF0aW9ucy5maWx0ZXIoeCA9PiAheC5wZXJzaXN0ZW50KVxyXG4gICAgdGhpcy5yZW1vdmUobm9uUGVyc2lzdGVudCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9lbWl0Q2hhbmdlcyhjaGFuZ2VzOiBDb2x1bW5zQWx0ZXJhdGlvbnNDaGFuZ2VkUmVjb3JkW10pOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBldmVudDogQ29sdW1uc0FsdGVyYXRpb25zQ2hhbmdlZEV2ZW50ID0ge1xyXG4gICAgICBjaGFuZ2VzXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fY2hhbmdlc1N1YmplY3QubmV4dChldmVudClcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|