@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,4018 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { inject, ElementRef, Directive, InjectionToken, ChangeDetectorRef, HostListener, HostBinding, Input, forwardRef, ViewContainerRef, isDevMode, TemplateRef, ContentChild, ViewEncapsulation, ChangeDetectionStrategy, Component, NgModule, ViewChild, EventEmitter, Output, Injectable, Injector, ViewChildren, Inject, Optional, ContentChildren } from '@angular/core';
|
|
3
|
+
import { tap, map, startWith, switchMap, shareReplay, mapTo, take, auditTime, debounceTime, takeUntil, distinctUntilChanged, finalize, filter } from 'rxjs/operators';
|
|
4
|
+
import * as i1 from '@angular/cdk/portal';
|
|
5
|
+
import { TemplatePortal, PortalModule, BasePortalOutlet, ComponentPortal } from '@angular/cdk/portal';
|
|
6
|
+
import * as i2$1 from '@angular/common';
|
|
7
|
+
import { NgIf, NgFor, NgTemplateOutlet, AsyncPipe, CommonModule, NgStyle } from '@angular/common';
|
|
8
|
+
import { BehaviorSubject, from, isObservable, Subject, of, combineLatest, map as map$1, defer, Observable } from 'rxjs';
|
|
9
|
+
import { faAngleDoubleRight, faAngleDoubleLeft, faLock, faUnlock, faAngleLeft, faBars, faAngleDown } from '@fortawesome/free-solid-svg-icons';
|
|
10
|
+
import * as i1$3 from '@theseam/ui-common/layout';
|
|
11
|
+
import { TheSeamLayoutService, TheSeamLayoutModule } from '@theseam/ui-common/layout';
|
|
12
|
+
import { TheSeamOverlayScrollbarDirective } from '@theseam/ui-common/scrollbar';
|
|
13
|
+
import { hasProperty, notNullOrUndefined, observeControlValue, observeControlStatus, isNullOrUndefined } from '@theseam/ui-common/utils';
|
|
14
|
+
import { __decorate } from 'tslib';
|
|
15
|
+
import { coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
16
|
+
import * as i1$1 from '@angular/cdk/drag-drop';
|
|
17
|
+
import { moveItemInArray, transferArrayItem, DragDropModule, CdkDrag } from '@angular/cdk/drag-drop';
|
|
18
|
+
import { InputBoolean, InputNumber, mixinDisabled } from '@theseam/ui-common/core';
|
|
19
|
+
import { THESEAM_WIDGET_DATA, THESEAM_WIDGET_ACCESSOR } from '@theseam/ui-common/widget';
|
|
20
|
+
import * as i2 from '@theseam/ui-common/icon';
|
|
21
|
+
import { TheSeamIconModule } from '@theseam/ui-common/icon';
|
|
22
|
+
import * as i3 from '@theseam/ui-common/buttons';
|
|
23
|
+
import { TheSeamButtonsModule } from '@theseam/ui-common/buttons';
|
|
24
|
+
import { TheSeamDynamicComponentLoader } from '@theseam/ui-common/dynamic-component-loader';
|
|
25
|
+
import { trigger, state, transition, style, animate, group, query, animateChild, keyframes } from '@angular/animations';
|
|
26
|
+
import * as i1$2 from '@angular/router';
|
|
27
|
+
import { RouterModule, NavigationEnd, NavigationStart, Router } from '@angular/router';
|
|
28
|
+
import * as i4 from '@angular/cdk/a11y';
|
|
29
|
+
import { A11yModule } from '@angular/cdk/a11y';
|
|
30
|
+
import * as i5 from '@theseam/ui-common/tooltip';
|
|
31
|
+
import { TheSeamTooltipModule } from '@theseam/ui-common/tooltip';
|
|
32
|
+
import { FlexLayoutModule } from '@angular/flex-layout';
|
|
33
|
+
import * as i1$4 from '@angular/flex-layout/extended';
|
|
34
|
+
import * as i3$1 from '@theseam/ui-common/menu';
|
|
35
|
+
import { MenuComponent, TheSeamMenuModule } from '@theseam/ui-common/menu';
|
|
36
|
+
import { faUserCircle } from '@fortawesome/free-regular-svg-icons';
|
|
37
|
+
import * as i1$5 from '@ajsf/core';
|
|
38
|
+
import { JsonSchemaFormModule, isArray, buildTitleMap, hasOwn, JsonSchemaFormService, Framework, WidgetLibraryModule, FrameworkLibraryService, WidgetLibraryService } from '@ajsf/core';
|
|
39
|
+
import * as i3$2 from '@angular/forms';
|
|
40
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
41
|
+
import { TheSeamCheckboxComponent } from '@theseam/ui-common/checkbox';
|
|
42
|
+
import * as i4$1 from '@theseam/ui-common/form-field';
|
|
43
|
+
import { TheSeamFormFieldModule } from '@theseam/ui-common/form-field';
|
|
44
|
+
import * as i5$1 from '@ng-select/ng-select';
|
|
45
|
+
import { NgSelectModule } from '@ng-select/ng-select';
|
|
46
|
+
import * as i5$2 from '@theseam/ui-common/tel-input';
|
|
47
|
+
import { TheSeamTelInputModule } from '@theseam/ui-common/tel-input';
|
|
48
|
+
import { Platform } from '@angular/cdk/platform';
|
|
49
|
+
import * as i4$2 from '@theseam/ui-common/tiled-select';
|
|
50
|
+
import { TheSeamTiledSelectModule } from '@theseam/ui-common/tiled-select';
|
|
51
|
+
|
|
52
|
+
class BaseLayoutContentFooterDirective {
|
|
53
|
+
_elementRef = inject(ElementRef);
|
|
54
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: BaseLayoutContentFooterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
55
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: BaseLayoutContentFooterDirective, isStandalone: true, selector: "[seamBaseLayoutContentFooter]", exportAs: ["seamBaseLayoutContentFooter"], ngImport: i0 });
|
|
56
|
+
}
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: BaseLayoutContentFooterDirective, decorators: [{
|
|
58
|
+
type: Directive,
|
|
59
|
+
args: [{
|
|
60
|
+
selector: '[seamBaseLayoutContentFooter]',
|
|
61
|
+
exportAs: 'seamBaseLayoutContentFooter',
|
|
62
|
+
}]
|
|
63
|
+
}] });
|
|
64
|
+
|
|
65
|
+
class BaseLayoutContentHeaderDirective {
|
|
66
|
+
_elementRef = inject(ElementRef);
|
|
67
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: BaseLayoutContentHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
68
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: BaseLayoutContentHeaderDirective, isStandalone: true, selector: "[seamBaseLayoutContentHeader]", exportAs: ["seamBaseLayoutContentHeader"], ngImport: i0 });
|
|
69
|
+
}
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: BaseLayoutContentHeaderDirective, decorators: [{
|
|
71
|
+
type: Directive,
|
|
72
|
+
args: [{
|
|
73
|
+
selector: '[seamBaseLayoutContentHeader]',
|
|
74
|
+
exportAs: 'seamBaseLayoutContentHeader',
|
|
75
|
+
}]
|
|
76
|
+
}] });
|
|
77
|
+
|
|
78
|
+
class BaseLayoutContentDirective {
|
|
79
|
+
_elementRef = inject(ElementRef);
|
|
80
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: BaseLayoutContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
81
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: BaseLayoutContentDirective, isStandalone: true, selector: "[seamBaseLayoutContent]", exportAs: ["seamBaseLayoutContent"], ngImport: i0 });
|
|
82
|
+
}
|
|
83
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: BaseLayoutContentDirective, decorators: [{
|
|
84
|
+
type: Directive,
|
|
85
|
+
args: [{
|
|
86
|
+
selector: '[seamBaseLayoutContent]',
|
|
87
|
+
exportAs: 'seamBaseLayoutContent',
|
|
88
|
+
}]
|
|
89
|
+
}] });
|
|
90
|
+
|
|
91
|
+
const THESEAM_BASE_LAYOUT_REF = new InjectionToken('seamBaseLayoutRef');
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Can be used to toggle the expand state of the registered nav.
|
|
95
|
+
*/
|
|
96
|
+
class TheSeamBaseLayoutNavToggleDirective {
|
|
97
|
+
_cdr = inject(ChangeDetectorRef);
|
|
98
|
+
_baseLayout = inject(THESEAM_BASE_LAYOUT_REF, { optional: true });
|
|
99
|
+
baseLayout = this._baseLayout ?? undefined;
|
|
100
|
+
get _attrType() { return this.type; }
|
|
101
|
+
type = 'button';
|
|
102
|
+
get _attrAriaLabel() { return this.ariaLabel || null; }
|
|
103
|
+
/** Screenreader label for the button. */
|
|
104
|
+
ariaLabel = 'Navigation toggle';
|
|
105
|
+
_toggleClass = true;
|
|
106
|
+
_expandedClass = false;
|
|
107
|
+
_onClick() {
|
|
108
|
+
if (this.baseLayout && this.baseLayout.registeredNav) {
|
|
109
|
+
this.baseLayout.registeredNav.toggle();
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
ngOnInit() {
|
|
113
|
+
this.baseLayout?.registeredNav?.expanded$.pipe(tap(exp => {
|
|
114
|
+
this._expandedClass = exp;
|
|
115
|
+
this._cdr.markForCheck();
|
|
116
|
+
})).subscribe();
|
|
117
|
+
}
|
|
118
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamBaseLayoutNavToggleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
119
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: TheSeamBaseLayoutNavToggleDirective, isStandalone: true, selector: "button[seamBaseLayoutNavToggle]", inputs: { type: "type", ariaLabel: ["aria-label", "ariaLabel"] }, host: { listeners: { "click": "_onClick()" }, properties: { "attr.type": "this._attrType", "attr.aria-label": "this._attrAriaLabel", "class.base-layout-nav-toggle": "this._toggleClass", "class.base-layout-nav-toggle--expanded": "this._expandedClass" } }, exportAs: ["seamBaseLayoutNavToggle"], ngImport: i0 });
|
|
120
|
+
}
|
|
121
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamBaseLayoutNavToggleDirective, decorators: [{
|
|
122
|
+
type: Directive,
|
|
123
|
+
args: [{
|
|
124
|
+
selector: 'button[seamBaseLayoutNavToggle]',
|
|
125
|
+
exportAs: 'seamBaseLayoutNavToggle',
|
|
126
|
+
}]
|
|
127
|
+
}], propDecorators: { _attrType: [{
|
|
128
|
+
type: HostBinding,
|
|
129
|
+
args: ['attr.type']
|
|
130
|
+
}], type: [{
|
|
131
|
+
type: Input
|
|
132
|
+
}], _attrAriaLabel: [{
|
|
133
|
+
type: HostBinding,
|
|
134
|
+
args: ['attr.aria-label']
|
|
135
|
+
}], ariaLabel: [{
|
|
136
|
+
type: Input,
|
|
137
|
+
args: ['aria-label']
|
|
138
|
+
}], _toggleClass: [{
|
|
139
|
+
type: HostBinding,
|
|
140
|
+
args: ['class.base-layout-nav-toggle']
|
|
141
|
+
}], _expandedClass: [{
|
|
142
|
+
type: HostBinding,
|
|
143
|
+
args: ['class.base-layout-nav-toggle--expanded']
|
|
144
|
+
}], _onClick: [{
|
|
145
|
+
type: HostListener,
|
|
146
|
+
args: ['click']
|
|
147
|
+
}] } });
|
|
148
|
+
|
|
149
|
+
class BaseLayoutSideBarFooterDirective {
|
|
150
|
+
_elementRef = inject(ElementRef);
|
|
151
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: BaseLayoutSideBarFooterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
152
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: BaseLayoutSideBarFooterDirective, isStandalone: true, selector: "[seamBaseLayoutSideBarFooter]", exportAs: ["seamBaseLayoutSideBarFooter"], ngImport: i0 });
|
|
153
|
+
}
|
|
154
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: BaseLayoutSideBarFooterDirective, decorators: [{
|
|
155
|
+
type: Directive,
|
|
156
|
+
args: [{
|
|
157
|
+
selector: '[seamBaseLayoutSideBarFooter]',
|
|
158
|
+
exportAs: 'seamBaseLayoutSideBarFooter',
|
|
159
|
+
}]
|
|
160
|
+
}] });
|
|
161
|
+
|
|
162
|
+
class BaseLayoutSideBarDirective {
|
|
163
|
+
_elementRef = inject(ElementRef);
|
|
164
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: BaseLayoutSideBarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
165
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: BaseLayoutSideBarDirective, isStandalone: true, selector: "[seamBaseLayoutSideBar]", exportAs: ["seamBaseLayoutSideBar"], ngImport: i0 });
|
|
166
|
+
}
|
|
167
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: BaseLayoutSideBarDirective, decorators: [{
|
|
168
|
+
type: Directive,
|
|
169
|
+
args: [{
|
|
170
|
+
selector: '[seamBaseLayoutSideBar]',
|
|
171
|
+
exportAs: 'seamBaseLayoutSideBar',
|
|
172
|
+
}]
|
|
173
|
+
}] });
|
|
174
|
+
|
|
175
|
+
class BaseLayoutTopBarDirective {
|
|
176
|
+
_elementRef = inject(ElementRef);
|
|
177
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: BaseLayoutTopBarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
178
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: BaseLayoutTopBarDirective, isStandalone: true, selector: "[seamBaseLayoutTopBar]", exportAs: ["seamBaseLayoutTopBar"], ngImport: i0 });
|
|
179
|
+
}
|
|
180
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: BaseLayoutTopBarDirective, decorators: [{
|
|
181
|
+
type: Directive,
|
|
182
|
+
args: [{
|
|
183
|
+
selector: '[seamBaseLayoutTopBar]',
|
|
184
|
+
exportAs: 'seamBaseLayoutTopBar',
|
|
185
|
+
}]
|
|
186
|
+
}] });
|
|
187
|
+
|
|
188
|
+
class BaseLayoutSideBarHeaderDirective {
|
|
189
|
+
_elementRef = inject(ElementRef);
|
|
190
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: BaseLayoutSideBarHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
191
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: BaseLayoutSideBarHeaderDirective, isStandalone: true, selector: "[seamBaseLayoutSideBarHeader]", exportAs: ["seamBaseLayoutSideBarHeader"], ngImport: i0 });
|
|
192
|
+
}
|
|
193
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: BaseLayoutSideBarHeaderDirective, decorators: [{
|
|
194
|
+
type: Directive,
|
|
195
|
+
args: [{
|
|
196
|
+
selector: '[seamBaseLayoutSideBarHeader]',
|
|
197
|
+
exportAs: 'seamBaseLayoutSideBarHeader',
|
|
198
|
+
}]
|
|
199
|
+
}] });
|
|
200
|
+
|
|
201
|
+
const THE_SEAM_BASE_LAYOUT = {
|
|
202
|
+
provide: THESEAM_BASE_LAYOUT_REF,
|
|
203
|
+
useExisting: forwardRef(() => TheSeamBaseLayoutComponent),
|
|
204
|
+
multi: false,
|
|
205
|
+
};
|
|
206
|
+
class TheSeamBaseLayoutComponent {
|
|
207
|
+
_viewContainerRef = inject(ViewContainerRef);
|
|
208
|
+
_layout = inject(TheSeamLayoutService);
|
|
209
|
+
faAngleDoubleRight = faAngleDoubleRight;
|
|
210
|
+
faAngleDoubleLeft = faAngleDoubleLeft;
|
|
211
|
+
overlayNav = false;
|
|
212
|
+
mobileBreakpoint;
|
|
213
|
+
showSidebar = true;
|
|
214
|
+
// TODO: Consider making the template queries not be dynamic. I can see this
|
|
215
|
+
// potentially causing confusion or issues with potential layouts built with
|
|
216
|
+
// this component.
|
|
217
|
+
_topBarTpl;
|
|
218
|
+
_sideBarTpl;
|
|
219
|
+
_contentTpl;
|
|
220
|
+
_contentHeaderTpl;
|
|
221
|
+
_contentFooterTpl;
|
|
222
|
+
_topBarPortal;
|
|
223
|
+
_sideBarPortal;
|
|
224
|
+
_contentPortal;
|
|
225
|
+
_contentHeaderPortal;
|
|
226
|
+
_contentFooterPortal;
|
|
227
|
+
_hasSideBar = new BehaviorSubject(false);
|
|
228
|
+
hasSideBar$;
|
|
229
|
+
isMobile$;
|
|
230
|
+
get registeredNav() { return this._registeredNav.value; }
|
|
231
|
+
_registeredNav = new BehaviorSubject(undefined);
|
|
232
|
+
registeredNav$ = this._registeredNav.asObservable();
|
|
233
|
+
get registeredActions() { return this._registeredActions.value; }
|
|
234
|
+
_registeredActions = new BehaviorSubject([]);
|
|
235
|
+
registeredActions$;
|
|
236
|
+
constructor() {
|
|
237
|
+
this.registeredActions$ = this._registeredActions.asObservable();
|
|
238
|
+
this.isMobile$ = this._layout.isMobile$;
|
|
239
|
+
this.hasSideBar$ = this._hasSideBar.asObservable();
|
|
240
|
+
}
|
|
241
|
+
ngOnInit() {
|
|
242
|
+
if (this.mobileBreakpoint) {
|
|
243
|
+
this._layout.setMobileBreakpoint(this.mobileBreakpoint);
|
|
244
|
+
}
|
|
245
|
+
if (this._topBarTpl) {
|
|
246
|
+
this._topBarPortal = new TemplatePortal(this._topBarTpl, this._viewContainerRef);
|
|
247
|
+
}
|
|
248
|
+
if (this._sideBarTpl) {
|
|
249
|
+
this._sideBarPortal = new TemplatePortal(this._sideBarTpl, this._viewContainerRef);
|
|
250
|
+
if (this.showSidebar) {
|
|
251
|
+
this._hasSideBar.next(true);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
if (this._contentTpl) {
|
|
255
|
+
this._contentPortal = new TemplatePortal(this._contentTpl, this._viewContainerRef);
|
|
256
|
+
}
|
|
257
|
+
if (this._contentHeaderTpl) {
|
|
258
|
+
this._contentHeaderPortal = new TemplatePortal(this._contentHeaderTpl, this._viewContainerRef);
|
|
259
|
+
}
|
|
260
|
+
if (this._contentFooterTpl) {
|
|
261
|
+
this._contentFooterPortal = new TemplatePortal(this._contentFooterTpl, this._viewContainerRef);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
registerNav(nav) {
|
|
265
|
+
// TODO: Allow multiple registered navs
|
|
266
|
+
// if (this.registeredNav) {
|
|
267
|
+
// throw new Error('[TheSeamBaseLayoutComponent] A nav is already registered.')
|
|
268
|
+
// }
|
|
269
|
+
// console.log('register nav', nav)
|
|
270
|
+
this._registeredNav.next(nav);
|
|
271
|
+
}
|
|
272
|
+
unregisterNav(nav) {
|
|
273
|
+
if (this.registeredNav === nav) {
|
|
274
|
+
this._registeredNav.next(undefined);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
registerAction(action) {
|
|
278
|
+
const actions = this._registeredActions.value;
|
|
279
|
+
if (actions.findIndex(a => a.name === action.name) !== -1) {
|
|
280
|
+
if (isDevMode()) {
|
|
281
|
+
// eslint-disable-next-line no-console
|
|
282
|
+
console.warn(`[TheSeamBaseLayoutComponent] registerAction(): Action ${action.name} not ` +
|
|
283
|
+
'registered, because another action by that name is already registered.');
|
|
284
|
+
}
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
actions.push(action);
|
|
288
|
+
}
|
|
289
|
+
unregisterAction(action) {
|
|
290
|
+
const actionName = typeof action === 'string' ? action : action.name;
|
|
291
|
+
const actions = this._registeredActions.value;
|
|
292
|
+
this._registeredActions.next(actions.filter(f => f.name !== actionName));
|
|
293
|
+
}
|
|
294
|
+
isActionRegistered(actionName) {
|
|
295
|
+
const actions = this._registeredActions.value;
|
|
296
|
+
const action = actions.find(f => f.name === actionName);
|
|
297
|
+
return !!action;
|
|
298
|
+
}
|
|
299
|
+
_handleButtonAction(action) {
|
|
300
|
+
this._execButtonAction(action).subscribe();
|
|
301
|
+
}
|
|
302
|
+
_execButtonAction(action) {
|
|
303
|
+
const fnRes = action.exec();
|
|
304
|
+
return isObservable(fnRes) ? fnRes : from(Promise.resolve(fnRes));
|
|
305
|
+
}
|
|
306
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamBaseLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
307
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: TheSeamBaseLayoutComponent, isStandalone: true, selector: "seam-base-layout", inputs: { overlayNav: "overlayNav", mobileBreakpoint: "mobileBreakpoint", showSidebar: "showSidebar" }, providers: [THE_SEAM_BASE_LAYOUT], queries: [{ propertyName: "_topBarTpl", first: true, predicate: BaseLayoutTopBarDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "_sideBarTpl", first: true, predicate: BaseLayoutSideBarDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "_contentTpl", first: true, predicate: BaseLayoutContentDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "_contentHeaderTpl", first: true, predicate: BaseLayoutContentHeaderDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "_contentFooterTpl", first: true, predicate: BaseLayoutContentFooterDirective, descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div class=\"base-layout-side-bar-nav-content-mobile\" *ngIf=\"isMobile$ | async\">\n <ng-template [cdkPortalOutlet]=\"_sideBarPortal\"></ng-template>\n</div>\n\n<div class=\"base-layout-top-bar-container\">\n <ng-template [cdkPortalOutlet]=\"_topBarPortal\"></ng-template>\n</div>\n<div class=\"base-layout-main-container\">\n <div *ngIf=\"hasSideBar$ | async\"\n class=\"base-layout-side-bar-container\">\n <div class=\"base-layout-side-bar-nav-content\" *ngIf=\"!(isMobile$ | async)\">\n <ng-template [cdkPortalOutlet]=\"_sideBarPortal\"></ng-template>\n </div>\n </div>\n <div class=\"base-layout-content-container\">\n <div class=\"base-layout-content-container-header d-flex flex-row\">\n <div class=\"base-layout-content-container-header-left flex-grow-1\">\n <ng-template [cdkPortalOutlet]=\"_contentHeaderPortal\"></ng-template>\n </div>\n <div class=\"base-layout-content-container-header-right d-flex\">\n <ng-container *ngFor=\"let action of registeredActions$ | async; first as isFirst\">\n <div class=\"base-layout-registered-action\">\n <ng-container [ngTemplateOutlet]=\"$any(action)?.template\"></ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"base-layout-content-container-inner\" seamOverlayScrollbar>\n <ng-template [cdkPortalOutlet]=\"_contentPortal\"></ng-template>\n </div>\n <div class=\"base-layout-content-container-footer\">\n <ng-template [cdkPortalOutlet]=\"_contentFooterPortal\"></ng-template>\n </div>\n </div>\n</div>\n", styles: ["seam-base-layout{display:flex;flex-direction:column;height:100%;width:100%}seam-base-layout .base-layout-side-bar-nav-content-mobile{position:absolute;top:0;bottom:0;left:0;z-index:999}seam-base-layout .base-layout-side-bar-container{flex:0 0 auto;display:flex;flex-direction:column;border-top:none;border-right:1px solid #dee2e6;border-bottom:none;border-left:none}seam-base-layout .base-layout-side-bar-container .base-layout-side-bar-nav-content{flex:1 1 0}seam-base-layout .base-layout-main-container{flex:1 1 100%;display:flex;flex-direction:row;transform:translateZ(0)}seam-base-layout .base-layout-top-bar-container{flex:0 0 auto;border-top:none;border-right:none;border-bottom:1px solid #dee2e6;border-left:none}seam-base-layout .base-layout-content-container{flex:1 1 auto;display:flex;flex-direction:column}seam-base-layout .base-layout-content-container .base-layout-content-container-header{flex:0 0 auto;background:none;margin:.25rem;padding:0;border-radius:0;overflow:hidden}seam-base-layout .base-layout-content-container .base-layout-content-container-header-left{background:none;padding:0rem;margin:0;border-radius:0}seam-base-layout .base-layout-content-container .base-layout-content-container-header-right{background:none;padding:0rem;margin:0;border-radius:0}seam-base-layout .base-layout-content-container .base-layout-content-container-inner{flex:1 1 auto}seam-base-layout .base-layout-content-container .base-layout-content-container-footer{flex:0 0 auto}seam-base-layout .btn-baselayout-action{margin:0 0 0 .25rem;color:#212529;background-color:#e9ecef;border-color:#e9ecef;padding:.5rem 1rem;font-size:1rem;line-height:1.5;border-radius:.25rem;border:none;color:#6c757d}seam-base-layout .btn-baselayout-action:hover{color:#212529;background-color:#d3d9df;border-color:#cbd3da}seam-base-layout .btn-baselayout-action:focus,seam-base-layout .btn-baselayout-action.focus{color:#212529;background-color:#d3d9df;border-color:#cbd3da;box-shadow:0 0 0 .2rem #cbced180}seam-base-layout .btn-baselayout-action.disabled,seam-base-layout .btn-baselayout-action:disabled{color:#212529;background-color:#e9ecef;border-color:#e9ecef}seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled):active,seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled).active,.show>seam-base-layout .btn-baselayout-action.dropdown-toggle{color:#212529;background-color:#d3d9df;border-color:#c4ccd4}seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled):active:focus,seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled).active:focus,.show>seam-base-layout .btn-baselayout-action.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #cbced180}seam-base-layout .btn-baselayout-action:hover{color:#6c757d}seam-base-layout .btn-baselayout-action:focus,seam-base-layout .btn-baselayout-action.focus{color:#6c757d}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "directive", type: TheSeamOverlayScrollbarDirective, selector: "[seamOverlayScrollbar]", inputs: ["seamOverlayScrollbar", "overlayScrollbarEnabled"], exportAs: ["seamOverlayScrollbar"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
308
|
+
}
|
|
309
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamBaseLayoutComponent, decorators: [{
|
|
310
|
+
type: Component,
|
|
311
|
+
args: [{ selector: 'seam-base-layout', providers: [THE_SEAM_BASE_LAYOUT], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
312
|
+
NgIf,
|
|
313
|
+
NgFor,
|
|
314
|
+
NgTemplateOutlet,
|
|
315
|
+
AsyncPipe,
|
|
316
|
+
PortalModule,
|
|
317
|
+
TheSeamOverlayScrollbarDirective,
|
|
318
|
+
], template: "<div class=\"base-layout-side-bar-nav-content-mobile\" *ngIf=\"isMobile$ | async\">\n <ng-template [cdkPortalOutlet]=\"_sideBarPortal\"></ng-template>\n</div>\n\n<div class=\"base-layout-top-bar-container\">\n <ng-template [cdkPortalOutlet]=\"_topBarPortal\"></ng-template>\n</div>\n<div class=\"base-layout-main-container\">\n <div *ngIf=\"hasSideBar$ | async\"\n class=\"base-layout-side-bar-container\">\n <div class=\"base-layout-side-bar-nav-content\" *ngIf=\"!(isMobile$ | async)\">\n <ng-template [cdkPortalOutlet]=\"_sideBarPortal\"></ng-template>\n </div>\n </div>\n <div class=\"base-layout-content-container\">\n <div class=\"base-layout-content-container-header d-flex flex-row\">\n <div class=\"base-layout-content-container-header-left flex-grow-1\">\n <ng-template [cdkPortalOutlet]=\"_contentHeaderPortal\"></ng-template>\n </div>\n <div class=\"base-layout-content-container-header-right d-flex\">\n <ng-container *ngFor=\"let action of registeredActions$ | async; first as isFirst\">\n <div class=\"base-layout-registered-action\">\n <ng-container [ngTemplateOutlet]=\"$any(action)?.template\"></ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n <div class=\"base-layout-content-container-inner\" seamOverlayScrollbar>\n <ng-template [cdkPortalOutlet]=\"_contentPortal\"></ng-template>\n </div>\n <div class=\"base-layout-content-container-footer\">\n <ng-template [cdkPortalOutlet]=\"_contentFooterPortal\"></ng-template>\n </div>\n </div>\n</div>\n", styles: ["seam-base-layout{display:flex;flex-direction:column;height:100%;width:100%}seam-base-layout .base-layout-side-bar-nav-content-mobile{position:absolute;top:0;bottom:0;left:0;z-index:999}seam-base-layout .base-layout-side-bar-container{flex:0 0 auto;display:flex;flex-direction:column;border-top:none;border-right:1px solid #dee2e6;border-bottom:none;border-left:none}seam-base-layout .base-layout-side-bar-container .base-layout-side-bar-nav-content{flex:1 1 0}seam-base-layout .base-layout-main-container{flex:1 1 100%;display:flex;flex-direction:row;transform:translateZ(0)}seam-base-layout .base-layout-top-bar-container{flex:0 0 auto;border-top:none;border-right:none;border-bottom:1px solid #dee2e6;border-left:none}seam-base-layout .base-layout-content-container{flex:1 1 auto;display:flex;flex-direction:column}seam-base-layout .base-layout-content-container .base-layout-content-container-header{flex:0 0 auto;background:none;margin:.25rem;padding:0;border-radius:0;overflow:hidden}seam-base-layout .base-layout-content-container .base-layout-content-container-header-left{background:none;padding:0rem;margin:0;border-radius:0}seam-base-layout .base-layout-content-container .base-layout-content-container-header-right{background:none;padding:0rem;margin:0;border-radius:0}seam-base-layout .base-layout-content-container .base-layout-content-container-inner{flex:1 1 auto}seam-base-layout .base-layout-content-container .base-layout-content-container-footer{flex:0 0 auto}seam-base-layout .btn-baselayout-action{margin:0 0 0 .25rem;color:#212529;background-color:#e9ecef;border-color:#e9ecef;padding:.5rem 1rem;font-size:1rem;line-height:1.5;border-radius:.25rem;border:none;color:#6c757d}seam-base-layout .btn-baselayout-action:hover{color:#212529;background-color:#d3d9df;border-color:#cbd3da}seam-base-layout .btn-baselayout-action:focus,seam-base-layout .btn-baselayout-action.focus{color:#212529;background-color:#d3d9df;border-color:#cbd3da;box-shadow:0 0 0 .2rem #cbced180}seam-base-layout .btn-baselayout-action.disabled,seam-base-layout .btn-baselayout-action:disabled{color:#212529;background-color:#e9ecef;border-color:#e9ecef}seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled):active,seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled).active,.show>seam-base-layout .btn-baselayout-action.dropdown-toggle{color:#212529;background-color:#d3d9df;border-color:#c4ccd4}seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled):active:focus,seam-base-layout .btn-baselayout-action:not(:disabled):not(.disabled).active:focus,.show>seam-base-layout .btn-baselayout-action.dropdown-toggle:focus{box-shadow:0 0 0 .2rem #cbced180}seam-base-layout .btn-baselayout-action:hover{color:#6c757d}seam-base-layout .btn-baselayout-action:focus,seam-base-layout .btn-baselayout-action.focus{color:#6c757d}\n"] }]
|
|
319
|
+
}], ctorParameters: () => [], propDecorators: { overlayNav: [{
|
|
320
|
+
type: Input
|
|
321
|
+
}], mobileBreakpoint: [{
|
|
322
|
+
type: Input
|
|
323
|
+
}], showSidebar: [{
|
|
324
|
+
type: Input
|
|
325
|
+
}], _topBarTpl: [{
|
|
326
|
+
type: ContentChild,
|
|
327
|
+
args: [BaseLayoutTopBarDirective, { static: true, read: TemplateRef }]
|
|
328
|
+
}], _sideBarTpl: [{
|
|
329
|
+
type: ContentChild,
|
|
330
|
+
args: [BaseLayoutSideBarDirective, { static: true, read: TemplateRef }]
|
|
331
|
+
}], _contentTpl: [{
|
|
332
|
+
type: ContentChild,
|
|
333
|
+
args: [BaseLayoutContentDirective, { static: true, read: TemplateRef }]
|
|
334
|
+
}], _contentHeaderTpl: [{
|
|
335
|
+
type: ContentChild,
|
|
336
|
+
args: [BaseLayoutContentHeaderDirective, { static: true, read: TemplateRef }]
|
|
337
|
+
}], _contentFooterTpl: [{
|
|
338
|
+
type: ContentChild,
|
|
339
|
+
args: [BaseLayoutContentFooterDirective, { static: true, read: TemplateRef }]
|
|
340
|
+
}] } });
|
|
341
|
+
|
|
342
|
+
class TheSeamBaseLayoutModule {
|
|
343
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamBaseLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
344
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.0", ngImport: i0, type: TheSeamBaseLayoutModule, imports: [TheSeamBaseLayoutComponent,
|
|
345
|
+
BaseLayoutContentDirective,
|
|
346
|
+
BaseLayoutSideBarDirective,
|
|
347
|
+
BaseLayoutSideBarFooterDirective,
|
|
348
|
+
BaseLayoutSideBarHeaderDirective,
|
|
349
|
+
BaseLayoutTopBarDirective,
|
|
350
|
+
TheSeamBaseLayoutNavToggleDirective,
|
|
351
|
+
BaseLayoutContentHeaderDirective,
|
|
352
|
+
BaseLayoutContentFooterDirective], exports: [TheSeamBaseLayoutComponent,
|
|
353
|
+
BaseLayoutContentDirective,
|
|
354
|
+
BaseLayoutSideBarDirective,
|
|
355
|
+
BaseLayoutSideBarFooterDirective,
|
|
356
|
+
BaseLayoutSideBarHeaderDirective,
|
|
357
|
+
BaseLayoutTopBarDirective,
|
|
358
|
+
TheSeamBaseLayoutNavToggleDirective,
|
|
359
|
+
BaseLayoutContentHeaderDirective,
|
|
360
|
+
BaseLayoutContentFooterDirective] });
|
|
361
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamBaseLayoutModule, imports: [TheSeamBaseLayoutComponent] });
|
|
362
|
+
}
|
|
363
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamBaseLayoutModule, decorators: [{
|
|
364
|
+
type: NgModule,
|
|
365
|
+
args: [{
|
|
366
|
+
imports: [
|
|
367
|
+
TheSeamBaseLayoutComponent,
|
|
368
|
+
BaseLayoutContentDirective,
|
|
369
|
+
BaseLayoutSideBarDirective,
|
|
370
|
+
BaseLayoutSideBarFooterDirective,
|
|
371
|
+
BaseLayoutSideBarHeaderDirective,
|
|
372
|
+
BaseLayoutTopBarDirective,
|
|
373
|
+
TheSeamBaseLayoutNavToggleDirective,
|
|
374
|
+
BaseLayoutContentHeaderDirective,
|
|
375
|
+
BaseLayoutContentFooterDirective,
|
|
376
|
+
],
|
|
377
|
+
exports: [
|
|
378
|
+
TheSeamBaseLayoutComponent,
|
|
379
|
+
BaseLayoutContentDirective,
|
|
380
|
+
BaseLayoutSideBarDirective,
|
|
381
|
+
BaseLayoutSideBarFooterDirective,
|
|
382
|
+
BaseLayoutSideBarHeaderDirective,
|
|
383
|
+
BaseLayoutTopBarDirective,
|
|
384
|
+
TheSeamBaseLayoutNavToggleDirective,
|
|
385
|
+
BaseLayoutContentHeaderDirective,
|
|
386
|
+
BaseLayoutContentFooterDirective,
|
|
387
|
+
],
|
|
388
|
+
}]
|
|
389
|
+
}] });
|
|
390
|
+
|
|
391
|
+
class DashboardWidgetContainerComponent {
|
|
392
|
+
def;
|
|
393
|
+
templateRef;
|
|
394
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DashboardWidgetContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
395
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DashboardWidgetContainerComponent, isStandalone: true, selector: "seam-dashboard-widget-container", inputs: { def: "def" }, viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: "<ng-template><ng-content></ng-content></ng-template>\n", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
396
|
+
}
|
|
397
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DashboardWidgetContainerComponent, decorators: [{
|
|
398
|
+
type: Component,
|
|
399
|
+
args: [{ selector: 'seam-dashboard-widget-container', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template><ng-content></ng-content></ng-template>\n" }]
|
|
400
|
+
}], propDecorators: { def: [{
|
|
401
|
+
type: Input
|
|
402
|
+
}], templateRef: [{
|
|
403
|
+
type: ViewChild,
|
|
404
|
+
args: [TemplateRef]
|
|
405
|
+
}] } });
|
|
406
|
+
|
|
407
|
+
const THESEAM_DASHBOARD_WIDGETS_ACCESSOR = new InjectionToken('THESEAM_DASHBOARD_WIDGETS_ACCESSOR');
|
|
408
|
+
|
|
409
|
+
class DashboardWidgetTemplateContainerComponent {
|
|
410
|
+
_dashboardWidgetsComponent = inject(THESEAM_DASHBOARD_WIDGETS_ACCESSOR);
|
|
411
|
+
item;
|
|
412
|
+
template$;
|
|
413
|
+
constructor() {
|
|
414
|
+
this.template$ = this._dashboardWidgetsComponent.containers$.pipe(map(containers => containers.find((c) => c.def.widgetId === this.item?.widgetId)), map(container => container && container.templateRef));
|
|
415
|
+
}
|
|
416
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DashboardWidgetTemplateContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
417
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DashboardWidgetTemplateContainerComponent, isStandalone: true, selector: "seam-dashboard-widget-template-container", inputs: { item: "item" }, ngImport: i0, template: "<ng-template [ngTemplateOutlet]=\"$any(template$ | async)\"></ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
418
|
+
}
|
|
419
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DashboardWidgetTemplateContainerComponent, decorators: [{
|
|
420
|
+
type: Component,
|
|
421
|
+
args: [{ selector: 'seam-dashboard-widget-template-container', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
422
|
+
NgTemplateOutlet,
|
|
423
|
+
AsyncPipe,
|
|
424
|
+
], template: "<ng-template [ngTemplateOutlet]=\"$any(template$ | async)\"></ng-template>\n" }]
|
|
425
|
+
}], ctorParameters: () => [], propDecorators: { item: [{
|
|
426
|
+
type: Input
|
|
427
|
+
}] } });
|
|
428
|
+
|
|
429
|
+
/**
|
|
430
|
+
* Mostly copied from
|
|
431
|
+
* `https://github.com/angular/components/blob/master/src/cdk/portal/portal-directives.ts`
|
|
432
|
+
* until I can figure out how to hold off removing the DOM nodes with the
|
|
433
|
+
* cdkPortalOutlet. When we update to Angular 9 I may be able to do this better
|
|
434
|
+
* with the new DomPortal.
|
|
435
|
+
*
|
|
436
|
+
* Directive version of a PortalOutlet. Because the directive *is* a
|
|
437
|
+
* PortalOutlet, portals can be directly attached to it, enabling declarative
|
|
438
|
+
* use.
|
|
439
|
+
*
|
|
440
|
+
* Usage: `<ng-template [cdkPortalOutlet]="greeting"></ng-template>`
|
|
441
|
+
*/
|
|
442
|
+
class DashboardWidgetPortalOutletDirective extends BasePortalOutlet {
|
|
443
|
+
_viewContainerRef = inject(ViewContainerRef);
|
|
444
|
+
/** Whether the portal component is initialized. */
|
|
445
|
+
_isInitialized = false;
|
|
446
|
+
/** Reference to the currently-attached component/view ref. */
|
|
447
|
+
_attachedRef;
|
|
448
|
+
/** Portal associated with the Portal outlet. */
|
|
449
|
+
get portal() {
|
|
450
|
+
return this._attachedPortal;
|
|
451
|
+
}
|
|
452
|
+
set portal(portal) {
|
|
453
|
+
// console.log('[DashboardWidgetPortalOutletDirective] set portal', portal, this.hasAttached())
|
|
454
|
+
// Ignore the cases where the `portal` is set to a falsy value before the lifecycle hooks have
|
|
455
|
+
// run. This handles the cases where the user might do something like `<div cdkPortalOutlet>`
|
|
456
|
+
// and attach a portal programmatically in the parent component. When Angular does the first CD
|
|
457
|
+
// round, it will fire the setter with empty string, causing the user's content to be cleared.
|
|
458
|
+
if (this.hasAttached() && !portal && !this._isInitialized) {
|
|
459
|
+
return;
|
|
460
|
+
}
|
|
461
|
+
if (this.hasAttached()) {
|
|
462
|
+
super.detach();
|
|
463
|
+
}
|
|
464
|
+
if (portal) {
|
|
465
|
+
super.attach(portal);
|
|
466
|
+
}
|
|
467
|
+
this._attachedPortal = portal;
|
|
468
|
+
}
|
|
469
|
+
/** Emits when a portal is attached to the outlet. */
|
|
470
|
+
attached = new EventEmitter();
|
|
471
|
+
/** Component or view reference that is attached to the portal. */
|
|
472
|
+
get attachedRef() {
|
|
473
|
+
return this._attachedRef;
|
|
474
|
+
}
|
|
475
|
+
ngOnInit() {
|
|
476
|
+
this._isInitialized = true;
|
|
477
|
+
}
|
|
478
|
+
ngOnDestroy() {
|
|
479
|
+
// console.log('[DashboardWidgetPortalOutletDirective] ngOnDestroy')
|
|
480
|
+
// TODO: Figure out the right way to call dispose without messing up
|
|
481
|
+
// animation. This setTimeout way assumes the transition is 500ms, but that
|
|
482
|
+
// may not always be the case and isn't guaranteed to match the animation ms
|
|
483
|
+
// duration, since setTimeout isn't really meant for accurate timing. It
|
|
484
|
+
// also makes debugging animations difficult, because you can pause an
|
|
485
|
+
// animation, but the timeout will still run.
|
|
486
|
+
setTimeout(() => {
|
|
487
|
+
super.dispose();
|
|
488
|
+
this._attachedPortal = null;
|
|
489
|
+
this._attachedRef = null;
|
|
490
|
+
}, 500);
|
|
491
|
+
}
|
|
492
|
+
/**
|
|
493
|
+
* Attach the given ComponentPortal to this PortalOutlet.
|
|
494
|
+
*
|
|
495
|
+
* @param portal Portal to be attached to the portal outlet.
|
|
496
|
+
* @returns Reference to the created component.
|
|
497
|
+
*/
|
|
498
|
+
attachComponentPortal(portal) {
|
|
499
|
+
portal.setAttachedHost(this);
|
|
500
|
+
// If the portal specifies an origin, use that as the logical location of the component
|
|
501
|
+
// in the application tree. Otherwise use the location of this PortalOutlet.
|
|
502
|
+
const viewContainerRef = portal.viewContainerRef != null
|
|
503
|
+
? portal.viewContainerRef
|
|
504
|
+
: this._viewContainerRef;
|
|
505
|
+
const ref = viewContainerRef.createComponent(portal.component, {
|
|
506
|
+
index: viewContainerRef.length,
|
|
507
|
+
injector: portal.injector || viewContainerRef.injector,
|
|
508
|
+
});
|
|
509
|
+
super.setDisposeFn(() => ref.destroy());
|
|
510
|
+
this._attachedPortal = portal;
|
|
511
|
+
this._attachedRef = ref;
|
|
512
|
+
this.attached.emit(ref);
|
|
513
|
+
return ref;
|
|
514
|
+
}
|
|
515
|
+
/**
|
|
516
|
+
* Attach the given TemplatePortal to this PortlHost as an embedded View.
|
|
517
|
+
* @param portal Portal to be attached.
|
|
518
|
+
* @returns Reference to the created embedded view.
|
|
519
|
+
*/
|
|
520
|
+
attachTemplatePortal(portal) {
|
|
521
|
+
portal.setAttachedHost(this);
|
|
522
|
+
const viewRef = this._viewContainerRef.createEmbeddedView(portal.templateRef, portal.context);
|
|
523
|
+
super.setDisposeFn(() => this._viewContainerRef.clear());
|
|
524
|
+
this._attachedPortal = portal;
|
|
525
|
+
this._attachedRef = viewRef;
|
|
526
|
+
this.attached.emit(viewRef);
|
|
527
|
+
return viewRef;
|
|
528
|
+
}
|
|
529
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DashboardWidgetPortalOutletDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
530
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: DashboardWidgetPortalOutletDirective, isStandalone: true, selector: "[seamDashboardWidgetPortalOutlet]", inputs: { portal: ["seamDashboardWidgetPortalOutlet", "portal"] }, outputs: { attached: "attached" }, exportAs: ["seamDashboardWidgetPortalOutlet"], usesInheritance: true, ngImport: i0 });
|
|
531
|
+
}
|
|
532
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DashboardWidgetPortalOutletDirective, decorators: [{
|
|
533
|
+
type: Directive,
|
|
534
|
+
args: [{
|
|
535
|
+
selector: '[seamDashboardWidgetPortalOutlet]',
|
|
536
|
+
exportAs: 'seamDashboardWidgetPortalOutlet',
|
|
537
|
+
inputs: ['portal: seamDashboardWidgetPortalOutlet'],
|
|
538
|
+
}]
|
|
539
|
+
}], propDecorators: { attached: [{
|
|
540
|
+
type: Output
|
|
541
|
+
}] } });
|
|
542
|
+
|
|
543
|
+
const THESEAM_DASHBOARD_WIDGETS_PREFERENCES_ACCESSOR = new InjectionToken('ITheSeamDashboardWidgetsPreferencesAccessor');
|
|
544
|
+
|
|
545
|
+
// TODO: This needs a unit test to make sure it will not cause a race condition
|
|
546
|
+
// if update is called faster than the previous can respond.
|
|
547
|
+
//
|
|
548
|
+
// The ideal approach I am thinking, without steping through the process too
|
|
549
|
+
// thoroughly is to hold the new data emit until all pending updates are done.
|
|
550
|
+
// Any pending updates other than the most recently requested will be ignored
|
|
551
|
+
// and just wait on the most recent, and if already running it should be
|
|
552
|
+
// canceled if possible. Also, incase something happens that causes the new data
|
|
553
|
+
// emissions to get held up too long, there could be a threshold time that the
|
|
554
|
+
// new data can be held up.
|
|
555
|
+
/**
|
|
556
|
+
* Manages anything dealing with retrieving and updating dashboard widget
|
|
557
|
+
* preference data from the provided accessor.
|
|
558
|
+
*/
|
|
559
|
+
class DashboardWidgetsPreferencesService {
|
|
560
|
+
_prefsAccessor = inject(THESEAM_DASHBOARD_WIDGETS_PREFERENCES_ACCESSOR, { optional: true });
|
|
561
|
+
_tablePrefsMap = new Map();
|
|
562
|
+
// private _pending = false
|
|
563
|
+
// public get pending() { return this._pending }
|
|
564
|
+
preferences(preferenceKey) {
|
|
565
|
+
let prefs = this._tablePrefsMap.get(preferenceKey);
|
|
566
|
+
if (!prefs) {
|
|
567
|
+
const refreshSubject = new Subject();
|
|
568
|
+
prefs = {
|
|
569
|
+
observable: this._createObservable(refreshSubject, preferenceKey),
|
|
570
|
+
refresh: refreshSubject
|
|
571
|
+
};
|
|
572
|
+
this._tablePrefsMap.set(preferenceKey, prefs);
|
|
573
|
+
}
|
|
574
|
+
return prefs.observable;
|
|
575
|
+
}
|
|
576
|
+
_createObservable(refreshSubject, prefKey) {
|
|
577
|
+
if (!this._prefsAccessor) {
|
|
578
|
+
return of({});
|
|
579
|
+
}
|
|
580
|
+
const accessor = (key) => this._prefsAccessor ? this._prefsAccessor.get(key) : of('{}');
|
|
581
|
+
return refreshSubject.pipe(startWith({}),
|
|
582
|
+
// tap(() => console.log('Start requesting: ', prefKey)),
|
|
583
|
+
switchMap(() => accessor(prefKey).pipe(map(v => {
|
|
584
|
+
if (!v) {
|
|
585
|
+
return null;
|
|
586
|
+
}
|
|
587
|
+
// TODO: Add a schema validator and migration tool to avoid parsing issues.
|
|
588
|
+
try {
|
|
589
|
+
return JSON.parse(v);
|
|
590
|
+
}
|
|
591
|
+
catch (error) {
|
|
592
|
+
if (isDevMode()) {
|
|
593
|
+
// eslint-disable-next-line no-console
|
|
594
|
+
console.error(error);
|
|
595
|
+
}
|
|
596
|
+
return null;
|
|
597
|
+
}
|
|
598
|
+
}), map(v => v || {}))), shareReplay({ bufferSize: 1, refCount: true }));
|
|
599
|
+
}
|
|
600
|
+
refresh(preferenceKey) {
|
|
601
|
+
const prefs = this._tablePrefsMap.get(preferenceKey);
|
|
602
|
+
if (prefs) {
|
|
603
|
+
// this._pending = true
|
|
604
|
+
// prefs.refresh.next()
|
|
605
|
+
return prefs.observable.pipe(
|
|
606
|
+
// tap(() => prefs.refresh.next()),
|
|
607
|
+
tap(() => setTimeout(() => { prefs.refresh.next(); }, 0)), mapTo(undefined), take(1));
|
|
608
|
+
}
|
|
609
|
+
return of(undefined);
|
|
610
|
+
}
|
|
611
|
+
selectLayout(preferenceKey, layoutName) {
|
|
612
|
+
return this.preferences(preferenceKey).pipe(map(prefs => (prefs.layouts || []).find(l => l.name === layoutName)));
|
|
613
|
+
}
|
|
614
|
+
// TODO: Improve this updating to not be more generic, so we can quickly add
|
|
615
|
+
// edits for different preference schema's.
|
|
616
|
+
//
|
|
617
|
+
// TODO: Decide if a send queue/merging of pending queue is needed to avoid
|
|
618
|
+
// out of order updates. This shouldn't be an issue, with how fast preferences
|
|
619
|
+
// will most likely be changing, but it could happen in situations, such as
|
|
620
|
+
// network issues.
|
|
621
|
+
updateLayout(preferenceKey, layout) {
|
|
622
|
+
if (!this._prefsAccessor) {
|
|
623
|
+
return of(undefined);
|
|
624
|
+
}
|
|
625
|
+
if (!hasProperty(layout, 'name')) {
|
|
626
|
+
throw Error(`Unable to save layout preference. 'name' is required for a layout preference.`);
|
|
627
|
+
}
|
|
628
|
+
const _layout = this.toSerializeableLayout(layout);
|
|
629
|
+
// this._pending = true
|
|
630
|
+
return this.preferences(preferenceKey).pipe(map(prefs => {
|
|
631
|
+
// Making the preferences immutable may not be necessary, but for now
|
|
632
|
+
// this obj->str->obj will work as a naive clone.
|
|
633
|
+
const layouts = JSON.parse(JSON.stringify(prefs.layouts || []));
|
|
634
|
+
const _layoutPref = layouts.find((c) => c.name === _layout.name);
|
|
635
|
+
// console.log('has', _layoutPref)
|
|
636
|
+
if (_layoutPref) {
|
|
637
|
+
if (hasProperty(_layout, 'name')) {
|
|
638
|
+
_layoutPref.name = _layout.name;
|
|
639
|
+
}
|
|
640
|
+
if (hasProperty(_layout, 'label')) {
|
|
641
|
+
_layoutPref.label = _layout.label;
|
|
642
|
+
}
|
|
643
|
+
if (hasProperty(_layout, 'items')) {
|
|
644
|
+
_layoutPref.items = _layout.items;
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
else {
|
|
648
|
+
layouts.push({ ..._layout });
|
|
649
|
+
}
|
|
650
|
+
const newPrefs = { ...prefs, layouts };
|
|
651
|
+
return newPrefs;
|
|
652
|
+
}),
|
|
653
|
+
// tap(v => console.log('newPrefs', v)),
|
|
654
|
+
take(1), switchMap(newPrefs => this._prefsAccessor
|
|
655
|
+
? this._prefsAccessor.update(preferenceKey, JSON.stringify(newPrefs))
|
|
656
|
+
: of(newPrefs)), switchMap(() => this.refresh(preferenceKey).pipe(mapTo(undefined))));
|
|
657
|
+
// .subscribe()
|
|
658
|
+
}
|
|
659
|
+
toSerializeableLayout(layout) {
|
|
660
|
+
const serialized = {
|
|
661
|
+
name: layout.name,
|
|
662
|
+
label: layout.label,
|
|
663
|
+
items: this.toSerializeableItems(layout.items) || [],
|
|
664
|
+
};
|
|
665
|
+
return serialized;
|
|
666
|
+
}
|
|
667
|
+
// public toDeserializedLayout(layout: IDashboardWidgetItemLayoutSerialized): IDashboardWidgetItemLayoutDef {
|
|
668
|
+
// // For now there is nothing to do. Eventually this should have at least
|
|
669
|
+
// // validation on the deserialized object.
|
|
670
|
+
// return layout
|
|
671
|
+
// }
|
|
672
|
+
/**
|
|
673
|
+
* Returns the serializable widget items as objects that can be serialized to
|
|
674
|
+
* a JSON string for storage.
|
|
675
|
+
*/
|
|
676
|
+
toSerializeableItems(widgets) {
|
|
677
|
+
const serialized = [];
|
|
678
|
+
for (const w of widgets) {
|
|
679
|
+
// if (!w.__itemDef.component || typeof w.__itemDef.component !== 'string') {
|
|
680
|
+
// console.warn(`[DashboardWidgetsService] Widget item def must have a string 'component' property to be serialized.`, w)
|
|
681
|
+
// continue
|
|
682
|
+
// }
|
|
683
|
+
// serialized.push({
|
|
684
|
+
// widgetId: w.widgetId,
|
|
685
|
+
// col: w.col,
|
|
686
|
+
// order: w.order,
|
|
687
|
+
// component: w.__itemDef.component
|
|
688
|
+
// })
|
|
689
|
+
// TODO: Remove this, it is only here for initial dev debugging.
|
|
690
|
+
serialized.push({
|
|
691
|
+
widgetId: w.widgetId,
|
|
692
|
+
col: w.col,
|
|
693
|
+
order: w.order,
|
|
694
|
+
// component: w.__itemDef.component as string,
|
|
695
|
+
});
|
|
696
|
+
}
|
|
697
|
+
return serialized;
|
|
698
|
+
}
|
|
699
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DashboardWidgetsPreferencesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
700
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DashboardWidgetsPreferencesService, providedIn: 'root' });
|
|
701
|
+
}
|
|
702
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DashboardWidgetsPreferencesService, decorators: [{
|
|
703
|
+
type: Injectable,
|
|
704
|
+
args: [{ providedIn: 'root' }]
|
|
705
|
+
}] });
|
|
706
|
+
|
|
707
|
+
class DashboardWidgetsService {
|
|
708
|
+
_dynamicComponentLoaderModule = inject(TheSeamDynamicComponentLoader);
|
|
709
|
+
_preferences = inject(DashboardWidgetsPreferencesService);
|
|
710
|
+
preferenceKey = 'datatable-widgets';
|
|
711
|
+
defaultNumColumns = 3;
|
|
712
|
+
/** Used for operations, such as 'addWidget', if the column is not specified. */
|
|
713
|
+
defaultColumn = 0;
|
|
714
|
+
get widgets() { return this._widgets.value; }
|
|
715
|
+
set widgets(value) { this._widgets.next(value); }
|
|
716
|
+
_widgets = new BehaviorSubject([]);
|
|
717
|
+
get numColumns() { return this._numColumns.value; }
|
|
718
|
+
set numColumns(value) {
|
|
719
|
+
if (value !== this._numColumns.value) {
|
|
720
|
+
this._numColumns.next(value);
|
|
721
|
+
}
|
|
722
|
+
}
|
|
723
|
+
_numColumns = new BehaviorSubject(this.defaultNumColumns);
|
|
724
|
+
numColumns$;
|
|
725
|
+
widgetItems$;
|
|
726
|
+
widgetColumns$;
|
|
727
|
+
_viewContainerRefSubject = new BehaviorSubject(undefined);
|
|
728
|
+
constructor() {
|
|
729
|
+
this.numColumns$ = this._numColumns.asObservable();
|
|
730
|
+
// Widget items without preferences
|
|
731
|
+
const _widgetItems$ = combineLatest([this._widgets, this._viewContainerRefSubject]).pipe(switchMap(([defs, vcr]) => this.createWidgetItems(defs, vcr)));
|
|
732
|
+
// Widget items with preferences
|
|
733
|
+
this.widgetItems$ = combineLatest([_widgetItems$, this.numColumns$]).pipe(
|
|
734
|
+
// Wait until the current tick is done, incase both the widgets and
|
|
735
|
+
// number of columns are set durring the same tick. Without the audit,
|
|
736
|
+
// this would get called twice when the component is initialized with
|
|
737
|
+
// both inputs set one after the other individually.
|
|
738
|
+
auditTime(0), switchMap(([items, numColumns]) => this._preferences.selectLayout(this.preferenceKey, this._layoutName(numColumns)).pipe(map(layout => layout ? this.withLayoutPreferences(items, layout) : items))), shareReplay({ bufferSize: 1, refCount: true }));
|
|
739
|
+
this.widgetColumns$ = this.widgetItems$.pipe(map(items => this.toColumnRecords(items)), shareReplay({ bufferSize: 1, refCount: true }));
|
|
740
|
+
}
|
|
741
|
+
_layoutName(numColumns) {
|
|
742
|
+
return `columns-${numColumns}`;
|
|
743
|
+
}
|
|
744
|
+
setViewContainerRef(vcr) {
|
|
745
|
+
this._viewContainerRefSubject.next(vcr);
|
|
746
|
+
}
|
|
747
|
+
createWidgetItems(defs, vcr) {
|
|
748
|
+
const _createObservables = (defs || []).map(d => this.createWidgetItem(d, vcr));
|
|
749
|
+
const items$ = _createObservables.length > 0 ? combineLatest(_createObservables) : of([]);
|
|
750
|
+
return items$.pipe(map(items => items.filter(notNullOrUndefined)), tap(items => {
|
|
751
|
+
if (isDevMode()) {
|
|
752
|
+
const ids = items.map(v => v.widgetId);
|
|
753
|
+
if ((new Set(ids)).size !== ids.length) {
|
|
754
|
+
// eslint-disable-next-line no-console
|
|
755
|
+
console.warn(`[DashboardWidgetsService] Duplicate widget's with the same 'widgetId' found.`);
|
|
756
|
+
}
|
|
757
|
+
}
|
|
758
|
+
}));
|
|
759
|
+
}
|
|
760
|
+
createWidgetItem(def, vcr) {
|
|
761
|
+
if (!def.widgetId || typeof def.widgetId !== 'string' || def.widgetId.length < 1) {
|
|
762
|
+
if (isDevMode()) {
|
|
763
|
+
// eslint-disable-next-line no-console
|
|
764
|
+
console.warn(`[DashboardWidgetsService] Widget ignored. All widgets must have a 'widgetId'.`, def);
|
|
765
|
+
}
|
|
766
|
+
return of(undefined);
|
|
767
|
+
}
|
|
768
|
+
return this.createWidgetPortal(def, vcr).pipe(map(portal => ({
|
|
769
|
+
...def,
|
|
770
|
+
col: def.col || this.defaultColumn,
|
|
771
|
+
order: def.order || 0,
|
|
772
|
+
portal,
|
|
773
|
+
__itemDef: def
|
|
774
|
+
})));
|
|
775
|
+
}
|
|
776
|
+
createWidgetPortal(def, vcr) {
|
|
777
|
+
const injector = Injector.create({ providers: [
|
|
778
|
+
{ provide: THESEAM_WIDGET_DATA, useValue: { widgetId: def.widgetId } },
|
|
779
|
+
], parent: this._viewContainerRefSubject.value?.injector });
|
|
780
|
+
// TODO: I still use the ViewContainerRef injector, but I don't pass it to
|
|
781
|
+
// the portal, because it throws an error and I am not sure why. I would
|
|
782
|
+
// like to find out why, even though I don't think it is needed, because our
|
|
783
|
+
// code has been leaving it undefined for a while, when I thought it was
|
|
784
|
+
// being used.
|
|
785
|
+
if (typeof def.component === 'string') {
|
|
786
|
+
return this._dynamicComponentLoaderModule
|
|
787
|
+
.getComponentFactory(def.component).pipe(map(componentFactory => {
|
|
788
|
+
return new ComponentPortal(componentFactory.componentType, undefined, injector);
|
|
789
|
+
}), take(1));
|
|
790
|
+
}
|
|
791
|
+
return of(new ComponentPortal(def.component, undefined, injector));
|
|
792
|
+
}
|
|
793
|
+
updateOrder() {
|
|
794
|
+
return this.widgetColumns$.pipe(take(1), tap(columns => columns.forEach(col => {
|
|
795
|
+
let i = 0;
|
|
796
|
+
col.items.forEach(itm => itm.order = i++);
|
|
797
|
+
})), mapTo(undefined));
|
|
798
|
+
}
|
|
799
|
+
toColumnRecords(items) {
|
|
800
|
+
let columns = [];
|
|
801
|
+
for (let i = 0; i < this.numColumns; i++) {
|
|
802
|
+
columns.push({ column: i, items: [] });
|
|
803
|
+
}
|
|
804
|
+
const colNotFound = [];
|
|
805
|
+
// Distribute items into columns
|
|
806
|
+
for (const item of items) {
|
|
807
|
+
const col = columns.find(c => c.column === item.col);
|
|
808
|
+
if (!col) {
|
|
809
|
+
// columns.push({ column: item.col, items: [ item ] })
|
|
810
|
+
// if (item.col < 0) {
|
|
811
|
+
// const col0: IDashboardWidgetsColumnRecord | undefined = columns.find(c => c.column === 0)
|
|
812
|
+
// if (col0) {
|
|
813
|
+
// col0.items.push(item)
|
|
814
|
+
// }
|
|
815
|
+
// } else if (item.col > this.numColumns - 1) {
|
|
816
|
+
// const colMax: IDashboardWidgetsColumnRecord | undefined = columns.find(c => c.column === this.numColumns - 1)
|
|
817
|
+
// if (colMax) {
|
|
818
|
+
// colMax.items.push(item)
|
|
819
|
+
// }
|
|
820
|
+
// }
|
|
821
|
+
colNotFound.push(item);
|
|
822
|
+
}
|
|
823
|
+
else {
|
|
824
|
+
col.items.push(item);
|
|
825
|
+
}
|
|
826
|
+
}
|
|
827
|
+
for (let i = 0; i < colNotFound.length; i++) {
|
|
828
|
+
const item = colNotFound[i];
|
|
829
|
+
const col = columns
|
|
830
|
+
.find(c => c.column === i % this.numColumns);
|
|
831
|
+
if (col) {
|
|
832
|
+
col.items.push(item);
|
|
833
|
+
}
|
|
834
|
+
}
|
|
835
|
+
// Sort columns
|
|
836
|
+
columns = columns.sort((a, b) => a.column - b.column);
|
|
837
|
+
// Sort columns items
|
|
838
|
+
columns.forEach(col => col.items.sort((a, b) => a.order - b.order));
|
|
839
|
+
return columns;
|
|
840
|
+
}
|
|
841
|
+
withLayoutPreferences(items, layout) {
|
|
842
|
+
const _items = [];
|
|
843
|
+
for (const item of items) {
|
|
844
|
+
const itemPref = layout.items.find(x => x.widgetId === item.widgetId);
|
|
845
|
+
_items.push({
|
|
846
|
+
...item,
|
|
847
|
+
...(itemPref || {}),
|
|
848
|
+
});
|
|
849
|
+
}
|
|
850
|
+
return _items;
|
|
851
|
+
}
|
|
852
|
+
savePreferences() {
|
|
853
|
+
// Right now the items are moved between the column record arrays, but the
|
|
854
|
+
// 'col' prop is not updated, so it is mapped to corrected items here from
|
|
855
|
+
// the column records.
|
|
856
|
+
const items$ = this.widgetColumns$.pipe(map(columns => []
|
|
857
|
+
.concat(...(columns.map(c => c.items.map(itm => ({ ...itm, col: c.column })))))));
|
|
858
|
+
return combineLatest([items$, this.numColumns$]).pipe(auditTime(0), take(1), switchMap(([items, numColumns]) => {
|
|
859
|
+
return this._preferences.updateLayout(this.preferenceKey, {
|
|
860
|
+
name: this._layoutName(numColumns),
|
|
861
|
+
items
|
|
862
|
+
});
|
|
863
|
+
}), mapTo(undefined));
|
|
864
|
+
}
|
|
865
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DashboardWidgetsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
866
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DashboardWidgetsService, providedIn: 'root' });
|
|
867
|
+
}
|
|
868
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DashboardWidgetsService, decorators: [{
|
|
869
|
+
type: Injectable,
|
|
870
|
+
args: [{ providedIn: 'root' }]
|
|
871
|
+
}], ctorParameters: () => [] });
|
|
872
|
+
|
|
873
|
+
class DashboardWidgetsComponent {
|
|
874
|
+
static ngAcceptInputType_gapSize;
|
|
875
|
+
static ngAcceptInputType_numColumns;
|
|
876
|
+
static ngAcceptInputType_widgetsDraggable;
|
|
877
|
+
static ngAcceptInputType_dragToggleVisible;
|
|
878
|
+
static ngAcceptInputType_widgets;
|
|
879
|
+
_dashboardWidgets = inject(DashboardWidgetsService);
|
|
880
|
+
_viewContainerRef = inject(ViewContainerRef);
|
|
881
|
+
_cdr = inject(ChangeDetectorRef);
|
|
882
|
+
_baseLayoutRef = inject(THESEAM_BASE_LAYOUT_REF, { optional: true });
|
|
883
|
+
faLock = faLock;
|
|
884
|
+
faUnlock = faUnlock;
|
|
885
|
+
_actionWidgetDragToggleName = 'widget-drag-toggle';
|
|
886
|
+
_ngUnsubscribe = new Subject();
|
|
887
|
+
get gapSize() { return this._gapSize.value; }
|
|
888
|
+
set gapSize(val) {
|
|
889
|
+
this._gapSize.next(coerceNumberProperty(val));
|
|
890
|
+
}
|
|
891
|
+
_gapSize = new BehaviorSubject(30);
|
|
892
|
+
widgetsDraggable = false;
|
|
893
|
+
get dragToggleVisible() { return this._dragToggleVisible.value; }
|
|
894
|
+
set dragToggleVisible(val) {
|
|
895
|
+
this._dragToggleVisible.next(coerceBooleanProperty(val));
|
|
896
|
+
}
|
|
897
|
+
_dragToggleVisible = new BehaviorSubject(true);
|
|
898
|
+
get numColumns() { return this._dashboardWidgets.numColumns; }
|
|
899
|
+
set numColumns(val) {
|
|
900
|
+
this._dashboardWidgets.numColumns = coerceNumberProperty(val);
|
|
901
|
+
}
|
|
902
|
+
set widgets(value) { this._dashboardWidgets.widgets = value || []; }
|
|
903
|
+
get widgets() { return this._dashboardWidgets.widgets; }
|
|
904
|
+
widgetItems$;
|
|
905
|
+
widgetColumns$;
|
|
906
|
+
containers$;
|
|
907
|
+
_gapStyleSize$;
|
|
908
|
+
containers;
|
|
909
|
+
cdkDragDirectives;
|
|
910
|
+
_toggleBtnTpl;
|
|
911
|
+
_containers = new BehaviorSubject([]);
|
|
912
|
+
_layoutChange = new Subject();
|
|
913
|
+
widgetsChange = new EventEmitter();
|
|
914
|
+
_widthChange = new Subject();
|
|
915
|
+
constructor() {
|
|
916
|
+
this._dashboardWidgets.setViewContainerRef(this._viewContainerRef);
|
|
917
|
+
this.containers$ = this._containers.asObservable();
|
|
918
|
+
this._gapStyleSize$ = this._gapSize.pipe(auditTime(0), map(size => size / 2), shareReplay({ bufferSize: 1, refCount: true }));
|
|
919
|
+
this._widthChange.pipe(debounceTime(30), tap(width => {
|
|
920
|
+
if (width > 1300) {
|
|
921
|
+
this.numColumns = 3;
|
|
922
|
+
}
|
|
923
|
+
else if (width > 800) {
|
|
924
|
+
this.numColumns = 2;
|
|
925
|
+
}
|
|
926
|
+
else {
|
|
927
|
+
this.numColumns = 1;
|
|
928
|
+
}
|
|
929
|
+
}), takeUntil(this._ngUnsubscribe)).subscribe();
|
|
930
|
+
this.widgetItems$ = this._dashboardWidgets.widgetItems$;
|
|
931
|
+
this.widgetColumns$ = this._dashboardWidgets.widgetColumns$;
|
|
932
|
+
}
|
|
933
|
+
ngOnInit() {
|
|
934
|
+
// this._dashboardWidgets.setViewContainerRef(this._viewContainerRef)
|
|
935
|
+
this._layoutChange.pipe(switchMap(() => this.widgetItems$.pipe(take(1), tap(widgetItems => this.widgetsChange.emit(widgetItems)),
|
|
936
|
+
// map(widgetItems => this._dashboardWidgets.toSerializeableItems(widgetItems)),
|
|
937
|
+
// tap(v => console.log('serializable', v)),
|
|
938
|
+
switchMap(() => this._dashboardWidgets.savePreferences()))), takeUntil(this._ngUnsubscribe)).subscribe();
|
|
939
|
+
}
|
|
940
|
+
ngOnDestroy() {
|
|
941
|
+
this._unregisterToggleAction();
|
|
942
|
+
this._ngUnsubscribe.next(undefined);
|
|
943
|
+
this._ngUnsubscribe.complete();
|
|
944
|
+
}
|
|
945
|
+
ngAfterViewInit() {
|
|
946
|
+
if (this._baseLayoutRef) {
|
|
947
|
+
this._dragToggleVisible.pipe(distinctUntilChanged(), tap(visible => {
|
|
948
|
+
const isRegistered = this._isActionToggleActionRegistered();
|
|
949
|
+
if (visible && !isRegistered) {
|
|
950
|
+
this._registerToggleAction();
|
|
951
|
+
}
|
|
952
|
+
else if (!visible && isRegistered) {
|
|
953
|
+
this._unregisterToggleAction();
|
|
954
|
+
}
|
|
955
|
+
}), takeUntil(this._ngUnsubscribe)).subscribe();
|
|
956
|
+
}
|
|
957
|
+
this.containers?.changes.pipe(startWith(undefined), map(() => this.containers?.toArray() || []), takeUntil(this._ngUnsubscribe), finalize(() => this._containers.next([]))).subscribe(v => this._containers.next(v));
|
|
958
|
+
}
|
|
959
|
+
_registerToggleAction() {
|
|
960
|
+
if (this._baseLayoutRef) {
|
|
961
|
+
// This should probably use a component dynamically created from the
|
|
962
|
+
// config and return a ref to it, instead of using a template.
|
|
963
|
+
if (this._toggleBtnTpl) {
|
|
964
|
+
this._baseLayoutRef.registerAction({
|
|
965
|
+
// type: 'button',
|
|
966
|
+
type: 'template',
|
|
967
|
+
name: this._actionWidgetDragToggleName,
|
|
968
|
+
label: 'Toggle Widget Dragging',
|
|
969
|
+
// exec: () => {
|
|
970
|
+
// console.log('toggle')
|
|
971
|
+
// },
|
|
972
|
+
template: this._toggleBtnTpl,
|
|
973
|
+
});
|
|
974
|
+
}
|
|
975
|
+
}
|
|
976
|
+
}
|
|
977
|
+
_unregisterToggleAction() {
|
|
978
|
+
if (this._baseLayoutRef) {
|
|
979
|
+
this._baseLayoutRef.unregisterAction(this._actionWidgetDragToggleName);
|
|
980
|
+
}
|
|
981
|
+
}
|
|
982
|
+
_isActionToggleActionRegistered() {
|
|
983
|
+
if (!this._baseLayoutRef) {
|
|
984
|
+
return false;
|
|
985
|
+
}
|
|
986
|
+
return this._baseLayoutRef.isActionRegistered(this._actionWidgetDragToggleName);
|
|
987
|
+
}
|
|
988
|
+
drop(event) {
|
|
989
|
+
if (event.previousContainer === event.container) {
|
|
990
|
+
moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
|
|
991
|
+
this._dashboardWidgets.updateOrder().subscribe(() => this._layoutChange.next());
|
|
992
|
+
}
|
|
993
|
+
else {
|
|
994
|
+
transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex);
|
|
995
|
+
this._dashboardWidgets.updateOrder().subscribe(() => this._layoutChange.next());
|
|
996
|
+
}
|
|
997
|
+
}
|
|
998
|
+
_containerTrackByFn(index, item) {
|
|
999
|
+
return item.widgetId;
|
|
1000
|
+
}
|
|
1001
|
+
_columnsTrackByFn(index, record) {
|
|
1002
|
+
return record.column;
|
|
1003
|
+
}
|
|
1004
|
+
toggleDragging() {
|
|
1005
|
+
this.widgetsDraggable = !this.widgetsDraggable;
|
|
1006
|
+
this._cdr.detectChanges();
|
|
1007
|
+
}
|
|
1008
|
+
_resized(event) {
|
|
1009
|
+
this._widthChange.next(event.size.width);
|
|
1010
|
+
}
|
|
1011
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DashboardWidgetsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1012
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DashboardWidgetsComponent, isStandalone: true, selector: "seam-dashboard-widgets", inputs: { gapSize: "gapSize", widgetsDraggable: "widgetsDraggable", dragToggleVisible: "dragToggleVisible", numColumns: "numColumns", widgets: "widgets" }, outputs: { widgetsChange: "widgetsChange" }, providers: [
|
|
1013
|
+
{
|
|
1014
|
+
provide: THESEAM_WIDGET_ACCESSOR,
|
|
1015
|
+
useExisting: forwardRef(() => DashboardWidgetsComponent),
|
|
1016
|
+
},
|
|
1017
|
+
{
|
|
1018
|
+
provide: THESEAM_DASHBOARD_WIDGETS_ACCESSOR,
|
|
1019
|
+
useExisting: forwardRef(() => DashboardWidgetsComponent),
|
|
1020
|
+
},
|
|
1021
|
+
], viewQueries: [{ propertyName: "_toggleBtnTpl", first: true, predicate: ["toggleBtnTpl"], descendants: true, static: true }, { propertyName: "containers", predicate: DashboardWidgetContainerComponent, descendants: true }, { propertyName: "cdkDragDirectives", predicate: CdkDrag, descendants: true }], ngImport: i0, template: "<!--\n This is an ugly trick I am using to render the component into an <ng-content>\n wrapped in an <ng-template> to move the component to different outlets without\n reinitializing it. This way the widget won't reload when moving between\n columns. When I remember how I programatically did this I will remove this\n weirdness.\n -->\n <seam-dashboard-widget-container *ngFor=\"let item of widgetItems$ | async; trackBy: _containerTrackByFn\" [def]=\"$any(item)\">\n <!-- <ng-template [cdkPortalOutlet]=\"item.portal\"></ng-template> -->\n <ng-template [seamDashboardWidgetPortalOutlet]=\"item.portal\"></ng-template>\n</seam-dashboard-widget-container>\n\n<div class=\"dashboard-widgets-base d-flex flex-row justify-content-around\"\n style=\"flex: 1410px;\"\n [style.padding.px]=\"_gapStyleSize$ | async\"\n (seamElemResized)=\"_resized($any($event))\"\n cdkDropListGroup>\n <div *ngFor=\"let col of widgetColumns$ | async; trackBy: _columnsTrackByFn\"\n class=\"d-flex flex-column flex-grow-1 dashboard-widgets-list\"\n cdkDropList\n [cdkDropListData]=\"col.items\"\n (cdkDropListDropped)=\"drop($any($event))\">\n <div *ngFor=\"let item of col.items; trackBy: _containerTrackByFn\"\n class=\"dashboard-widgets-list-item\"\n [attr.data-widget-id]=\"item.widgetId\"\n cdkDrag\n [cdkDragDisabled]=\"!widgetsDraggable\">\n <div [style.margin.px]=\"_gapStyleSize$ | async\">\n <seam-dashboard-widget-template-container [item]=\"item\"></seam-dashboard-widget-template-container>\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #toggleBtnTpl>\n <button seamButton theme=\"baselayout-action\" title=\"{{ widgetsDraggable ? 'Lock the Dashboard' : 'Modify Dashboard' }}\" (click)=\"toggleDragging()\">\n <seam-icon [icon]=\"widgetsDraggable ? faUnlock : faLock\"></seam-icon>\n </button>\n</ng-template>\n", styles: ["seam-dashboard-widgets{display:flex;justify-content:center}seam-dashboard-widgets .dashboard-widgets-base{max-width:1410px}seam-dashboard-widgets .dashboard-widgets-list{flex-basis:400px;max-width:500px}seam-dashboard-widgets .dashboard-widgets-list.cdk-drop-list-dragging .dashboard-widgets-list-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.dashboard-widgets-list-item.cdk-drag-preview{box-sizing:border-box}.dashboard-widgets-list-item.cdk-drag-preview>div{border-radius:.25rem;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.dashboard-widgets-list-item.cdk-drag-disabled .cdk-drag-handle{cursor:default}.dashboard-widgets-list-item .cdk-drag-handle{cursor:move}.dashboard-widgets-list-item.cdk-drag-placeholder{opacity:0}.dashboard-widgets-list-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i1$1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i1$1.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i1$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "ngmodule", type: TheSeamIconModule }, { kind: "component", type: i2.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "ngmodule", type: TheSeamButtonsModule }, { kind: "component", type: i3.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }, { kind: "component", type: DashboardWidgetTemplateContainerComponent, selector: "seam-dashboard-widget-template-container", inputs: ["item"] }, { kind: "component", type: DashboardWidgetContainerComponent, selector: "seam-dashboard-widget-container", inputs: ["def"] }, { kind: "directive", type: DashboardWidgetPortalOutletDirective, selector: "[seamDashboardWidgetPortalOutlet]", inputs: ["seamDashboardWidgetPortalOutlet"], outputs: ["attached"], exportAs: ["seamDashboardWidgetPortalOutlet"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
1022
|
+
}
|
|
1023
|
+
__decorate([
|
|
1024
|
+
InputBoolean()
|
|
1025
|
+
], DashboardWidgetsComponent.prototype, "widgetsDraggable", void 0);
|
|
1026
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DashboardWidgetsComponent, decorators: [{
|
|
1027
|
+
type: Component,
|
|
1028
|
+
args: [{ selector: 'seam-dashboard-widgets', providers: [
|
|
1029
|
+
{
|
|
1030
|
+
provide: THESEAM_WIDGET_ACCESSOR,
|
|
1031
|
+
useExisting: forwardRef(() => DashboardWidgetsComponent),
|
|
1032
|
+
},
|
|
1033
|
+
{
|
|
1034
|
+
provide: THESEAM_DASHBOARD_WIDGETS_ACCESSOR,
|
|
1035
|
+
useExisting: forwardRef(() => DashboardWidgetsComponent),
|
|
1036
|
+
},
|
|
1037
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
1038
|
+
NgFor,
|
|
1039
|
+
AsyncPipe,
|
|
1040
|
+
DragDropModule,
|
|
1041
|
+
TheSeamIconModule,
|
|
1042
|
+
TheSeamButtonsModule,
|
|
1043
|
+
DashboardWidgetTemplateContainerComponent,
|
|
1044
|
+
DashboardWidgetContainerComponent,
|
|
1045
|
+
DashboardWidgetPortalOutletDirective,
|
|
1046
|
+
], template: "<!--\n This is an ugly trick I am using to render the component into an <ng-content>\n wrapped in an <ng-template> to move the component to different outlets without\n reinitializing it. This way the widget won't reload when moving between\n columns. When I remember how I programatically did this I will remove this\n weirdness.\n -->\n <seam-dashboard-widget-container *ngFor=\"let item of widgetItems$ | async; trackBy: _containerTrackByFn\" [def]=\"$any(item)\">\n <!-- <ng-template [cdkPortalOutlet]=\"item.portal\"></ng-template> -->\n <ng-template [seamDashboardWidgetPortalOutlet]=\"item.portal\"></ng-template>\n</seam-dashboard-widget-container>\n\n<div class=\"dashboard-widgets-base d-flex flex-row justify-content-around\"\n style=\"flex: 1410px;\"\n [style.padding.px]=\"_gapStyleSize$ | async\"\n (seamElemResized)=\"_resized($any($event))\"\n cdkDropListGroup>\n <div *ngFor=\"let col of widgetColumns$ | async; trackBy: _columnsTrackByFn\"\n class=\"d-flex flex-column flex-grow-1 dashboard-widgets-list\"\n cdkDropList\n [cdkDropListData]=\"col.items\"\n (cdkDropListDropped)=\"drop($any($event))\">\n <div *ngFor=\"let item of col.items; trackBy: _containerTrackByFn\"\n class=\"dashboard-widgets-list-item\"\n [attr.data-widget-id]=\"item.widgetId\"\n cdkDrag\n [cdkDragDisabled]=\"!widgetsDraggable\">\n <div [style.margin.px]=\"_gapStyleSize$ | async\">\n <seam-dashboard-widget-template-container [item]=\"item\"></seam-dashboard-widget-template-container>\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #toggleBtnTpl>\n <button seamButton theme=\"baselayout-action\" title=\"{{ widgetsDraggable ? 'Lock the Dashboard' : 'Modify Dashboard' }}\" (click)=\"toggleDragging()\">\n <seam-icon [icon]=\"widgetsDraggable ? faUnlock : faLock\"></seam-icon>\n </button>\n</ng-template>\n", styles: ["seam-dashboard-widgets{display:flex;justify-content:center}seam-dashboard-widgets .dashboard-widgets-base{max-width:1410px}seam-dashboard-widgets .dashboard-widgets-list{flex-basis:400px;max-width:500px}seam-dashboard-widgets .dashboard-widgets-list.cdk-drop-list-dragging .dashboard-widgets-list-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.dashboard-widgets-list-item.cdk-drag-preview{box-sizing:border-box}.dashboard-widgets-list-item.cdk-drag-preview>div{border-radius:.25rem;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.dashboard-widgets-list-item.cdk-drag-disabled .cdk-drag-handle{cursor:default}.dashboard-widgets-list-item .cdk-drag-handle{cursor:move}.dashboard-widgets-list-item.cdk-drag-placeholder{opacity:0}.dashboard-widgets-list-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
|
|
1047
|
+
}], ctorParameters: () => [], propDecorators: { gapSize: [{
|
|
1048
|
+
type: Input
|
|
1049
|
+
}], widgetsDraggable: [{
|
|
1050
|
+
type: Input
|
|
1051
|
+
}], dragToggleVisible: [{
|
|
1052
|
+
type: Input
|
|
1053
|
+
}], numColumns: [{
|
|
1054
|
+
type: Input
|
|
1055
|
+
}], widgets: [{
|
|
1056
|
+
type: Input
|
|
1057
|
+
}], containers: [{
|
|
1058
|
+
type: ViewChildren,
|
|
1059
|
+
args: [DashboardWidgetContainerComponent]
|
|
1060
|
+
}], cdkDragDirectives: [{
|
|
1061
|
+
type: ViewChildren,
|
|
1062
|
+
args: [CdkDrag]
|
|
1063
|
+
}], _toggleBtnTpl: [{
|
|
1064
|
+
type: ViewChild,
|
|
1065
|
+
args: ['toggleBtnTpl', { static: true }]
|
|
1066
|
+
}], widgetsChange: [{
|
|
1067
|
+
type: Output
|
|
1068
|
+
}] } });
|
|
1069
|
+
|
|
1070
|
+
class DashboardComponent {
|
|
1071
|
+
widgets;
|
|
1072
|
+
widgetsDraggable = true;
|
|
1073
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DashboardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1074
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: DashboardComponent, isStandalone: true, selector: "seam-dashboard", inputs: { widgets: "widgets", widgetsDraggable: "widgetsDraggable" }, ngImport: i0, template: "<seam-dashboard-widgets [widgets]=\"widgets\" [widgetsDraggable]=\"widgetsDraggable\"></seam-dashboard-widgets>\n", styles: [""], dependencies: [{ kind: "component", type: DashboardWidgetsComponent, selector: "seam-dashboard-widgets", inputs: ["gapSize", "widgetsDraggable", "dragToggleVisible", "numColumns", "widgets"], outputs: ["widgetsChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1075
|
+
}
|
|
1076
|
+
__decorate([
|
|
1077
|
+
InputBoolean()
|
|
1078
|
+
], DashboardComponent.prototype, "widgetsDraggable", void 0);
|
|
1079
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: DashboardComponent, decorators: [{
|
|
1080
|
+
type: Component,
|
|
1081
|
+
args: [{ selector: 'seam-dashboard', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
1082
|
+
DashboardWidgetsComponent,
|
|
1083
|
+
], template: "<seam-dashboard-widgets [widgets]=\"widgets\" [widgetsDraggable]=\"widgetsDraggable\"></seam-dashboard-widgets>\n" }]
|
|
1084
|
+
}], propDecorators: { widgets: [{
|
|
1085
|
+
type: Input
|
|
1086
|
+
}], widgetsDraggable: [{
|
|
1087
|
+
type: Input
|
|
1088
|
+
}] } });
|
|
1089
|
+
|
|
1090
|
+
class TheSeamDashboardModule {
|
|
1091
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDashboardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
1092
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDashboardModule, imports: [
|
|
1093
|
+
// CommonModule,
|
|
1094
|
+
// PortalModule,
|
|
1095
|
+
// DragDropModule,
|
|
1096
|
+
// TheSeamButtonsModule,
|
|
1097
|
+
// TheSeamIconModule,
|
|
1098
|
+
// TheSeamSharedModule,
|
|
1099
|
+
DashboardComponent,
|
|
1100
|
+
DashboardWidgetsComponent,
|
|
1101
|
+
DashboardWidgetContainerComponent,
|
|
1102
|
+
DashboardWidgetTemplateContainerComponent,
|
|
1103
|
+
DashboardWidgetPortalOutletDirective], exports: [DashboardComponent,
|
|
1104
|
+
DashboardWidgetsComponent,
|
|
1105
|
+
DashboardWidgetPortalOutletDirective] });
|
|
1106
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDashboardModule, imports: [
|
|
1107
|
+
// CommonModule,
|
|
1108
|
+
// PortalModule,
|
|
1109
|
+
// DragDropModule,
|
|
1110
|
+
// TheSeamButtonsModule,
|
|
1111
|
+
// TheSeamIconModule,
|
|
1112
|
+
// TheSeamSharedModule,
|
|
1113
|
+
DashboardComponent,
|
|
1114
|
+
DashboardWidgetsComponent] });
|
|
1115
|
+
}
|
|
1116
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDashboardModule, decorators: [{
|
|
1117
|
+
type: NgModule,
|
|
1118
|
+
args: [{
|
|
1119
|
+
// declarations: [
|
|
1120
|
+
// // DashboardComponent,
|
|
1121
|
+
// // DashboardWidgetsComponent,
|
|
1122
|
+
// ],
|
|
1123
|
+
imports: [
|
|
1124
|
+
// CommonModule,
|
|
1125
|
+
// PortalModule,
|
|
1126
|
+
// DragDropModule,
|
|
1127
|
+
// TheSeamButtonsModule,
|
|
1128
|
+
// TheSeamIconModule,
|
|
1129
|
+
// TheSeamSharedModule,
|
|
1130
|
+
DashboardComponent,
|
|
1131
|
+
DashboardWidgetsComponent,
|
|
1132
|
+
DashboardWidgetContainerComponent,
|
|
1133
|
+
DashboardWidgetTemplateContainerComponent,
|
|
1134
|
+
DashboardWidgetPortalOutletDirective,
|
|
1135
|
+
],
|
|
1136
|
+
exports: [
|
|
1137
|
+
DashboardComponent,
|
|
1138
|
+
DashboardWidgetsComponent,
|
|
1139
|
+
DashboardWidgetPortalOutletDirective,
|
|
1140
|
+
]
|
|
1141
|
+
}]
|
|
1142
|
+
}] });
|
|
1143
|
+
|
|
1144
|
+
const THESEAM_SIDE_NAV_ACCESSOR = new InjectionToken('THESEAM_SIDE_NAV_ACCESSOR');
|
|
1145
|
+
const THESEAM_SIDE_NAV_CONFIG = new InjectionToken('THESEAM_SIDE_NAV_CONFIG');
|
|
1146
|
+
const DEFAULT_SIDE_NAV_CONFIG = {
|
|
1147
|
+
activeNavigatable: false
|
|
1148
|
+
};
|
|
1149
|
+
|
|
1150
|
+
const EXPANDED_STATE$1 = 'expanded';
|
|
1151
|
+
const COLLAPSED_STATE$1 = 'collapsed';
|
|
1152
|
+
class SideNavItemComponent {
|
|
1153
|
+
_sideNav;
|
|
1154
|
+
static ngAcceptInputType_hierLevel;
|
|
1155
|
+
static ngAcceptInputType_indentSize;
|
|
1156
|
+
static ngAcceptInputType_expanded;
|
|
1157
|
+
static ngAcceptInputType_compact;
|
|
1158
|
+
static ngAcceptInputType_active;
|
|
1159
|
+
_ngUnsubscribe = new Subject();
|
|
1160
|
+
faAngleLeft = faAngleLeft;
|
|
1161
|
+
_linkHistoryState = { seamReload: true, triggeredByNavBar: true };
|
|
1162
|
+
itemType;
|
|
1163
|
+
icon;
|
|
1164
|
+
hideEmptyIcon;
|
|
1165
|
+
label;
|
|
1166
|
+
active = false;
|
|
1167
|
+
activeNavigatable = false;
|
|
1168
|
+
set link(value) { this._link.next(value); }
|
|
1169
|
+
get link() { return this._link.value; }
|
|
1170
|
+
_link = new BehaviorSubject(undefined);
|
|
1171
|
+
link$ = this._link.asObservable();
|
|
1172
|
+
queryParams;
|
|
1173
|
+
children;
|
|
1174
|
+
hierLevel = 0;
|
|
1175
|
+
indentSize = 10;
|
|
1176
|
+
set expanded(value) { this._expanded.next(coerceBooleanProperty(value)); }
|
|
1177
|
+
get expanded() { return this._expanded.value; }
|
|
1178
|
+
_expanded = new BehaviorSubject(false);
|
|
1179
|
+
expanded$ = this._expanded.asObservable();
|
|
1180
|
+
set compact(value) { this._compact.next(coerceBooleanProperty(value)); }
|
|
1181
|
+
get compact() { return this._compact.value; }
|
|
1182
|
+
_compact = new BehaviorSubject(false);
|
|
1183
|
+
compact$ = this._compact.asObservable();
|
|
1184
|
+
isMobile;
|
|
1185
|
+
badgeText;
|
|
1186
|
+
badgeTheme = 'danger';
|
|
1187
|
+
/**
|
|
1188
|
+
* Content to provide to assistive technology, such as screen readers.
|
|
1189
|
+
*/
|
|
1190
|
+
badgeSrContent;
|
|
1191
|
+
get badgeTooltip() { return this._badgeTooltip; }
|
|
1192
|
+
set badgeTooltip(value) {
|
|
1193
|
+
if (value !== null && value !== undefined) {
|
|
1194
|
+
if (typeof value === 'string') {
|
|
1195
|
+
this._badgeTooltip = {
|
|
1196
|
+
tooltip: value,
|
|
1197
|
+
placement: 'auto',
|
|
1198
|
+
container: 'body',
|
|
1199
|
+
disabled: false
|
|
1200
|
+
};
|
|
1201
|
+
}
|
|
1202
|
+
else {
|
|
1203
|
+
this._badgeTooltip = {
|
|
1204
|
+
...value,
|
|
1205
|
+
placement: value.placement || 'auto',
|
|
1206
|
+
container: value.container || 'body',
|
|
1207
|
+
disabled: typeof value?.disabled === 'boolean'
|
|
1208
|
+
? value.disabled
|
|
1209
|
+
: typeof value.tooltip === 'string',
|
|
1210
|
+
};
|
|
1211
|
+
}
|
|
1212
|
+
}
|
|
1213
|
+
else {
|
|
1214
|
+
this._badgeTooltip = undefined;
|
|
1215
|
+
}
|
|
1216
|
+
}
|
|
1217
|
+
_badgeTooltip;
|
|
1218
|
+
menuItemTooltipConfig;
|
|
1219
|
+
menuItemTooltipDisabled;
|
|
1220
|
+
get _isActiveCssClass() { return this.active; }
|
|
1221
|
+
get _isClickableWhenActiveCssClass() { return this.activeNavigatable; }
|
|
1222
|
+
get _attrDataHierLevel() { return this.hierLevel; }
|
|
1223
|
+
childGroupAnimState$;
|
|
1224
|
+
constructor(_sideNav) {
|
|
1225
|
+
this._sideNav = _sideNav;
|
|
1226
|
+
this.childGroupAnimState$ = this.expanded$
|
|
1227
|
+
.pipe(map$1(expanded => expanded ? EXPANDED_STATE$1 : COLLAPSED_STATE$1));
|
|
1228
|
+
}
|
|
1229
|
+
ngOnDestroy() {
|
|
1230
|
+
this._ngUnsubscribe.next(undefined);
|
|
1231
|
+
this._ngUnsubscribe.complete();
|
|
1232
|
+
}
|
|
1233
|
+
get hasChildren() {
|
|
1234
|
+
return Array.isArray(this.children) && this.children.length > 0;
|
|
1235
|
+
}
|
|
1236
|
+
toggleChildren() {
|
|
1237
|
+
this.expanded = !this.expanded;
|
|
1238
|
+
}
|
|
1239
|
+
_linkClicked() {
|
|
1240
|
+
// Close nav when link is clicked while in overlay state
|
|
1241
|
+
if (this._sideNav.overlay) {
|
|
1242
|
+
this._sideNav.collapse();
|
|
1243
|
+
}
|
|
1244
|
+
}
|
|
1245
|
+
get showIconBlock() {
|
|
1246
|
+
return notNullOrUndefined(this.icon) || this.hideEmptyIcon !== true;
|
|
1247
|
+
}
|
|
1248
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: SideNavItemComponent, deps: [{ token: THESEAM_SIDE_NAV_ACCESSOR }], target: i0.ɵɵFactoryTarget.Component });
|
|
1249
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: SideNavItemComponent, isStandalone: true, selector: "seam-side-nav-item", inputs: { itemType: "itemType", icon: "icon", hideEmptyIcon: "hideEmptyIcon", label: "label", active: "active", activeNavigatable: "activeNavigatable", link: "link", queryParams: "queryParams", children: "children", hierLevel: "hierLevel", indentSize: "indentSize", expanded: "expanded", compact: "compact", isMobile: "isMobile", badgeText: "badgeText", badgeTheme: "badgeTheme", badgeSrContent: "badgeSrContent", badgeTooltip: "badgeTooltip", menuItemTooltipConfig: "menuItemTooltipConfig", menuItemTooltipDisabled: "menuItemTooltipDisabled" }, host: { properties: { "class.seam-side-nav-item--active": "this._isActiveCssClass", "class.active-clickable": "this._isClickableWhenActiveCssClass", "attr.data-hier-level": "this._attrDataHierLevel" } }, exportAs: ["seamSideNavItem"], ngImport: i0, template: "<div class=\"d-flex flex-row side-nav-item-wrapper\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasChildren\">\n <div class=\"side-nav--group side-nav--group--level-{{ hierLevel + 1 }}\"\n [@childGroupAnim]=\"childGroupAnimState$ | async\">\n <seam-side-nav-item *ngFor=\"let child of children\"\n [hierLevel]=\"compact ? 0 : (hierLevel + 1)\"\n [compact]=\"compact\"\n [isMobile]=\"isMobile\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\"\n [hideEmptyIcon]=\"hideEmptyIcon\"\n [indentSize]=\"indentSize\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled\"\n [activeNavigatable]=\"$any(child).activeNavigatable\">\n </seam-side-nav-item>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button class=\"side-nav-item btn side-nav-btn p-0 d-flex flex-row align-items-stretch rounded-0 text-decoration-none text-nowrap w-100\"\n cdkMonitorElementFocus\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n [seamTooltip]=\"label ?? null\"\n [tooltipClass]=\"menuItemTooltipConfig?.class\"\n [placement]=\"menuItemTooltipConfig?.placement\"\n [container]=\"menuItemTooltipConfig?.container\"\n [disableTooltip]=\"menuItemTooltipDisabled ?? false\"\n [class.active-clickable]=\"activeNavigatable\">\n <div class=\"nav-link d-flex flex-row w-100\" [class.nav-link__compact]=\"compact\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" side-nav-item-label style=\"margin-left: 11px;\">\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"hasChildren && !compact\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\">\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <div class=\"d-flex flex-row w-100\"\n [seamTooltip]=\"label ?? null\"\n [tooltipClass]=\"menuItemTooltipConfig?.class\"\n [placement]=\"menuItemTooltipConfig?.placement\"\n [container]=\"menuItemTooltipConfig?.container\"\n [disableTooltip]=\"menuItemTooltipDisabled ?? false\">\n <a *ngIf=\"link; else noLink\" class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n [state]=\"_linkHistoryState\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n (click)=\"_linkClicked()\"\n [class.active-clickable]=\"activeNavigatable\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [seamTooltip]=\"label ?? null\"\n [tooltipClass]=\"menuItemTooltipConfig?.class\"\n [placement]=\"menuItemTooltipConfig?.placement\"\n [container]=\"menuItemTooltipConfig?.container\"\n [disableTooltip]=\"menuItemTooltipDisabled ?? false\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n </a>\n </ng-template>\n\n <button *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\"\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n cdkMonitorElementFocus>\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n </div>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"side-nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"side-nav-item--title pt-1\" side-nav-item-label>{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div class=\"side-nav-item--badge\"\n [class.side-nav-item--badge-no-icon]=\"!icon\"\n [seamTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"isMobile || !badgeTooltip || !!$any(badgeTooltip)?.disabled\">\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n", styles: ["seam-side-nav-item{display:block;transition:.25s ease-in-out background-color}seam-side-nav-item.seam-side-nav-item--active{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .active,seam-side-nav-item.seam-side-nav-item--active:active,seam-side-nav-item.seam-side-nav-item--active .side-nav-item.active:hover{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item.seam-side-nav-item--active .nav-link{color:#fff}seam-side-nav-item.seam-side-nav-item--active .side-nav-btn{color:#fff}seam-side-nav-item .badge{vertical-align:middle}seam-side-nav-item:not(.side-nav-item--icon) .side-nav-item--badge{pointer-events:all;margin-left:5px;margin-right:3px}seam-side-nav-item .side-nav-item--icon{position:relative;width:24px;max-width:24px;min-width:24px;height:24px;max-height:24px;min-height:24px;text-align:center}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge{top:-4px;right:-4px;position:absolute}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge .badge:empty{display:block;width:8px;height:8px;padding:0}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge.side-nav-item--badge-no-icon{top:0;right:0}seam-side-nav-item .side-nav-item{min-height:45px;transition:.25s ease-in-out background-color}seam-side-nav-item .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item.active:not(.active-clickable){pointer-events:none;cursor:default}seam-side-nav-item .side-nav-item.active:not(.active-clickable) .side-nav-item--badge{pointer-events:none;cursor:default}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]){color:#ccc}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]):hover{background-color:transparent}seam-side-nav-item .nav-link{color:#fff;padding-right:2px}seam-side-nav-item .nav-link__compact{padding-right:0;padding-left:12px}seam-side-nav-item .nav-link:last-child{padding-right:8px}seam-side-nav-item .side-nav-btn{font-weight:400;color:#fff;text-decoration:none}seam-side-nav-item .side-nav-btn:hover{color:#fff;text-decoration:underline}seam-side-nav-item .side-nav-btn:focus,seam-side-nav-item .side-nav-btn.focus{text-decoration:underline;box-shadow:none}seam-side-nav-item .side-nav-btn:disabled,seam-side-nav-item .side-nav-btn.disabled{color:#ccc;pointer-events:none}seam-side-nav-item .side-nav-btn:disabled .side-nav-item--badge,seam-side-nav-item .side-nav-btn.disabled .side-nav-item--badge{pointer-events:none;cursor:default}seam-side-nav-item .cdk-keyboard-focused{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}seam-side-nav-item .side-nav-item--toggle-btn-container{transition:.25s ease-in-out background-color;padding:.5rem 1rem}seam-side-nav-item button.side-nav-item--toggle-btn-container:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item--toggle-btn .svg-inline--fa{transition:.1s ease-in-out transform}seam-side-nav-item .side-nav-item--toggle-btn.side-nav-item--toggle-btn-expanded .svg-inline--fa{transform:rotate(-90deg)}seam-side-nav-item .side-nav--group{will-change:height;overflow:hidden}seam-side-nav-item .side-nav--group--level-1{background-color:#3276b1}seam-side-nav-item .side-nav--group--level-2{background-color:#2e6ea5}seam-side-nav-item .side-nav--group--level-3{background-color:#2b6699}seam-side-nav-item .side-nav--group--level-4{background-color:#285e8d}seam-side-nav-item .side-nav--group--level-5{background-color:#245681}seam-side-nav-item .side-nav--group--level-6{background-color:#214e75}seam-side-nav-item .side-nav--group--level-7{background-color:#1e4669}seam-side-nav-item .side-nav--group--level-8{background-color:#1a3e5d}seam-side-nav-item .side-nav--group--level-9{background-color:#173651}seam-side-nav-item .side-nav-item--divider{display:block;border-top:1px solid rgb(41.8305785124,99.4462809917,149.1694214876);width:100%}seam-side-nav-item .side-nav-item--title{color:#fff;font-size:24px;padding-left:10px}seam-side-nav-item .sr-only{top:0;left:0}\n"], dependencies: [{ kind: "component", type: SideNavItemComponent, selector: "seam-side-nav-item", inputs: ["itemType", "icon", "hideEmptyIcon", "label", "active", "activeNavigatable", "link", "queryParams", "children", "hierLevel", "indentSize", "expanded", "compact", "isMobile", "badgeText", "badgeTheme", "badgeSrContent", "badgeTooltip", "menuItemTooltipConfig", "menuItemTooltipDisabled"], exportAs: ["seamSideNavItem"] }, { kind: "ngmodule", type: CommonModule }, { 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$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: TheSeamIconModule }, { kind: "component", type: i2.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i4.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "ngmodule", type: TheSeamTooltipModule }, { kind: "directive", type: i5.TheSeamTooltipDirective, selector: "[seamTooltip]", inputs: ["seamTooltip", "tooltipClass", "placement", "container", "disableTooltip", "showDelay", "hideDelay", "trigger"], exportAs: ["seamTooltip"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }], animations: [
|
|
1250
|
+
trigger('childGroupAnim', [
|
|
1251
|
+
state(EXPANDED_STATE$1, style({ height: '*' })),
|
|
1252
|
+
state(COLLAPSED_STATE$1, style({ height: 0, visibility: 'hidden' })),
|
|
1253
|
+
transition(`${EXPANDED_STATE$1} <=> ${COLLAPSED_STATE$1}`, animate('0.2s ease-in-out')),
|
|
1254
|
+
]),
|
|
1255
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
1256
|
+
}
|
|
1257
|
+
__decorate([
|
|
1258
|
+
InputBoolean()
|
|
1259
|
+
], SideNavItemComponent.prototype, "active", void 0);
|
|
1260
|
+
__decorate([
|
|
1261
|
+
InputBoolean()
|
|
1262
|
+
], SideNavItemComponent.prototype, "activeNavigatable", void 0);
|
|
1263
|
+
__decorate([
|
|
1264
|
+
InputNumber(0)
|
|
1265
|
+
], SideNavItemComponent.prototype, "hierLevel", void 0);
|
|
1266
|
+
__decorate([
|
|
1267
|
+
InputNumber(10)
|
|
1268
|
+
], SideNavItemComponent.prototype, "indentSize", void 0);
|
|
1269
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: SideNavItemComponent, decorators: [{
|
|
1270
|
+
type: Component,
|
|
1271
|
+
args: [{ selector: 'seam-side-nav-item', exportAs: 'seamSideNavItem', animations: [
|
|
1272
|
+
trigger('childGroupAnim', [
|
|
1273
|
+
state(EXPANDED_STATE$1, style({ height: '*' })),
|
|
1274
|
+
state(COLLAPSED_STATE$1, style({ height: 0, visibility: 'hidden' })),
|
|
1275
|
+
transition(`${EXPANDED_STATE$1} <=> ${COLLAPSED_STATE$1}`, animate('0.2s ease-in-out')),
|
|
1276
|
+
]),
|
|
1277
|
+
], imports: [
|
|
1278
|
+
CommonModule,
|
|
1279
|
+
RouterModule,
|
|
1280
|
+
TheSeamIconModule,
|
|
1281
|
+
A11yModule,
|
|
1282
|
+
TheSeamTooltipModule,
|
|
1283
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"d-flex flex-row side-nav-item-wrapper\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasChildren\">\n <div class=\"side-nav--group side-nav--group--level-{{ hierLevel + 1 }}\"\n [@childGroupAnim]=\"childGroupAnimState$ | async\">\n <seam-side-nav-item *ngFor=\"let child of children\"\n [hierLevel]=\"compact ? 0 : (hierLevel + 1)\"\n [compact]=\"compact\"\n [isMobile]=\"isMobile\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\"\n [hideEmptyIcon]=\"hideEmptyIcon\"\n [indentSize]=\"indentSize\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled\"\n [activeNavigatable]=\"$any(child).activeNavigatable\">\n </seam-side-nav-item>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button class=\"side-nav-item btn side-nav-btn p-0 d-flex flex-row align-items-stretch rounded-0 text-decoration-none text-nowrap w-100\"\n cdkMonitorElementFocus\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n [seamTooltip]=\"label ?? null\"\n [tooltipClass]=\"menuItemTooltipConfig?.class\"\n [placement]=\"menuItemTooltipConfig?.placement\"\n [container]=\"menuItemTooltipConfig?.container\"\n [disableTooltip]=\"menuItemTooltipDisabled ?? false\"\n [class.active-clickable]=\"activeNavigatable\">\n <div class=\"nav-link d-flex flex-row w-100\" [class.nav-link__compact]=\"compact\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" side-nav-item-label style=\"margin-left: 11px;\">\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"hasChildren && !compact\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\">\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <div class=\"d-flex flex-row w-100\"\n [seamTooltip]=\"label ?? null\"\n [tooltipClass]=\"menuItemTooltipConfig?.class\"\n [placement]=\"menuItemTooltipConfig?.placement\"\n [container]=\"menuItemTooltipConfig?.container\"\n [disableTooltip]=\"menuItemTooltipDisabled ?? false\">\n <a *ngIf=\"link; else noLink\" class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n [state]=\"_linkHistoryState\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n (click)=\"_linkClicked()\"\n [class.active-clickable]=\"activeNavigatable\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a class=\"side-nav-item nav-link d-flex flex-row text-nowrap w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [seamTooltip]=\"label ?? null\"\n [tooltipClass]=\"menuItemTooltipConfig?.class\"\n [placement]=\"menuItemTooltipConfig?.placement\"\n [container]=\"menuItemTooltipConfig?.container\"\n [disableTooltip]=\"menuItemTooltipDisabled ?? false\">\n <div [style.padding-left.px]=\"hierLevel * indentSize\"></div>\n <div class=\"side-nav-item--icon\">\n <seam-icon *ngIf=\"icon\" [icon]=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" style=\"margin-left: 11px;\" side-nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" side-nav-item-label>{{ label }}</span>\n </a>\n </ng-template>\n\n <button *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn side-nav-btn side-nav-item--toggle-btn-container rounded-0\"\n (click)=\"toggleChildren()\"\n [attr.aria-expanded]=\"expanded\"\n cdkMonitorElementFocus>\n <seam-icon\n class=\"side-nav-item--toggle-btn\"\n [class.side-nav-item--toggle-btn-expanded]=\"expanded\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n </div>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"side-nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"side-nav-item--title pt-1\" side-nav-item-label>{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div class=\"side-nav-item--badge\"\n [class.side-nav-item--badge-no-icon]=\"!icon\"\n [seamTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"isMobile || !badgeTooltip || !!$any(badgeTooltip)?.disabled\">\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n", styles: ["seam-side-nav-item{display:block;transition:.25s ease-in-out background-color}seam-side-nav-item.seam-side-nav-item--active{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .active,seam-side-nav-item.seam-side-nav-item--active:active,seam-side-nav-item.seam-side-nav-item--active .side-nav-item.active:hover{background-color:#2a6395}seam-side-nav-item.seam-side-nav-item--active .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item.seam-side-nav-item--active .nav-link{color:#fff}seam-side-nav-item.seam-side-nav-item--active .side-nav-btn{color:#fff}seam-side-nav-item .badge{vertical-align:middle}seam-side-nav-item:not(.side-nav-item--icon) .side-nav-item--badge{pointer-events:all;margin-left:5px;margin-right:3px}seam-side-nav-item .side-nav-item--icon{position:relative;width:24px;max-width:24px;min-width:24px;height:24px;max-height:24px;min-height:24px;text-align:center}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge{top:-4px;right:-4px;position:absolute}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge .badge:empty{display:block;width:8px;height:8px;padding:0}seam-side-nav-item .side-nav-item--icon .side-nav-item--badge.side-nav-item--badge-no-icon{top:0;right:0}seam-side-nav-item .side-nav-item{min-height:45px;transition:.25s ease-in-out background-color}seam-side-nav-item .side-nav-item:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item.active:not(.active-clickable){pointer-events:none;cursor:default}seam-side-nav-item .side-nav-item.active:not(.active-clickable) .side-nav-item--badge{pointer-events:none;cursor:default}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]){color:#ccc}seam-side-nav-item a.side-nav-item:not([href]):not([tabindex]):hover{background-color:transparent}seam-side-nav-item .nav-link{color:#fff;padding-right:2px}seam-side-nav-item .nav-link__compact{padding-right:0;padding-left:12px}seam-side-nav-item .nav-link:last-child{padding-right:8px}seam-side-nav-item .side-nav-btn{font-weight:400;color:#fff;text-decoration:none}seam-side-nav-item .side-nav-btn:hover{color:#fff;text-decoration:underline}seam-side-nav-item .side-nav-btn:focus,seam-side-nav-item .side-nav-btn.focus{text-decoration:underline;box-shadow:none}seam-side-nav-item .side-nav-btn:disabled,seam-side-nav-item .side-nav-btn.disabled{color:#ccc;pointer-events:none}seam-side-nav-item .side-nav-btn:disabled .side-nav-item--badge,seam-side-nav-item .side-nav-btn.disabled .side-nav-item--badge{pointer-events:none;cursor:default}seam-side-nav-item .cdk-keyboard-focused{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}seam-side-nav-item .side-nav-item--toggle-btn-container{transition:.25s ease-in-out background-color;padding:.5rem 1rem}seam-side-nav-item button.side-nav-item--toggle-btn-container:hover{background-color:#2f71a9}seam-side-nav-item .side-nav-item--toggle-btn .svg-inline--fa{transition:.1s ease-in-out transform}seam-side-nav-item .side-nav-item--toggle-btn.side-nav-item--toggle-btn-expanded .svg-inline--fa{transform:rotate(-90deg)}seam-side-nav-item .side-nav--group{will-change:height;overflow:hidden}seam-side-nav-item .side-nav--group--level-1{background-color:#3276b1}seam-side-nav-item .side-nav--group--level-2{background-color:#2e6ea5}seam-side-nav-item .side-nav--group--level-3{background-color:#2b6699}seam-side-nav-item .side-nav--group--level-4{background-color:#285e8d}seam-side-nav-item .side-nav--group--level-5{background-color:#245681}seam-side-nav-item .side-nav--group--level-6{background-color:#214e75}seam-side-nav-item .side-nav--group--level-7{background-color:#1e4669}seam-side-nav-item .side-nav--group--level-8{background-color:#1a3e5d}seam-side-nav-item .side-nav--group--level-9{background-color:#173651}seam-side-nav-item .side-nav-item--divider{display:block;border-top:1px solid rgb(41.8305785124,99.4462809917,149.1694214876);width:100%}seam-side-nav-item .side-nav-item--title{color:#fff;font-size:24px;padding-left:10px}seam-side-nav-item .sr-only{top:0;left:0}\n"] }]
|
|
1284
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
1285
|
+
type: Inject,
|
|
1286
|
+
args: [THESEAM_SIDE_NAV_ACCESSOR]
|
|
1287
|
+
}] }], propDecorators: { itemType: [{
|
|
1288
|
+
type: Input
|
|
1289
|
+
}], icon: [{
|
|
1290
|
+
type: Input
|
|
1291
|
+
}], hideEmptyIcon: [{
|
|
1292
|
+
type: Input
|
|
1293
|
+
}], label: [{
|
|
1294
|
+
type: Input
|
|
1295
|
+
}], active: [{
|
|
1296
|
+
type: Input
|
|
1297
|
+
}], activeNavigatable: [{
|
|
1298
|
+
type: Input
|
|
1299
|
+
}], link: [{
|
|
1300
|
+
type: Input
|
|
1301
|
+
}], queryParams: [{
|
|
1302
|
+
type: Input
|
|
1303
|
+
}], children: [{
|
|
1304
|
+
type: Input
|
|
1305
|
+
}], hierLevel: [{
|
|
1306
|
+
type: Input
|
|
1307
|
+
}], indentSize: [{
|
|
1308
|
+
type: Input
|
|
1309
|
+
}], expanded: [{
|
|
1310
|
+
type: Input
|
|
1311
|
+
}], compact: [{
|
|
1312
|
+
type: Input
|
|
1313
|
+
}], isMobile: [{
|
|
1314
|
+
type: Input
|
|
1315
|
+
}], badgeText: [{
|
|
1316
|
+
type: Input
|
|
1317
|
+
}], badgeTheme: [{
|
|
1318
|
+
type: Input
|
|
1319
|
+
}], badgeSrContent: [{
|
|
1320
|
+
type: Input
|
|
1321
|
+
}], badgeTooltip: [{
|
|
1322
|
+
type: Input
|
|
1323
|
+
}], menuItemTooltipConfig: [{
|
|
1324
|
+
type: Input
|
|
1325
|
+
}], menuItemTooltipDisabled: [{
|
|
1326
|
+
type: Input
|
|
1327
|
+
}], _isActiveCssClass: [{
|
|
1328
|
+
type: HostBinding,
|
|
1329
|
+
args: ['class.seam-side-nav-item--active']
|
|
1330
|
+
}], _isClickableWhenActiveCssClass: [{
|
|
1331
|
+
type: HostBinding,
|
|
1332
|
+
args: ['class.active-clickable']
|
|
1333
|
+
}], _attrDataHierLevel: [{
|
|
1334
|
+
type: HostBinding,
|
|
1335
|
+
args: ['attr.data-hier-level']
|
|
1336
|
+
}] } });
|
|
1337
|
+
|
|
1338
|
+
class SideNavToggleComponent {
|
|
1339
|
+
static ngAcceptInputType_expanded;
|
|
1340
|
+
expanded = false;
|
|
1341
|
+
toggleIcon;
|
|
1342
|
+
toggleTpl;
|
|
1343
|
+
toggleExpand = new EventEmitter();
|
|
1344
|
+
toggle() {
|
|
1345
|
+
this.toggleExpand.emit();
|
|
1346
|
+
}
|
|
1347
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: SideNavToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1348
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: SideNavToggleComponent, isStandalone: true, selector: "seam-side-nav-toggle", inputs: { expanded: "expanded", toggleIcon: "toggleIcon", toggleTpl: "toggleTpl" }, outputs: { toggleExpand: "toggleExpand" }, host: { properties: { "class.side-nav-toggle--compact": "!expanded" } }, ngImport: i0, template: "<div class=\"side-nav-toggle--content\">\n <ng-container *ngIf=\"expanded\">\n <ng-content></ng-content>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"toggleTpl; else iconBtn\">\n <button\n class=\"side-nav-toggle--btn mx-1\"\n (click)=\"toggle()\">\n <span class=\"sr-only\">Toggle sidebar</span>\n <ng-container *ngTemplateOutlet=\"toggleTpl\"></ng-container>\n </button>\n</ng-container>\n\n<ng-template #iconBtn>\n <button seamIconBtn [icon]=\"toggleIcon\"\n iconType=\"borderless-styled-square\"\n btnSize=\"sm\"\n class=\"side-nav-toggle--btn mx-1\"\n (click)=\"toggle()\">\n <span class=\"sr-only\">Toggle sidebar</span>\n </button>\n</ng-template>\n", styles: ["seam-side-nav-toggle{display:flex;flex-direction:row;flex-shrink:0;align-items:center;background:#357ebd;position:relative;height:45px;width:100%}seam-side-nav-toggle .side-nav-toggle--content{flex:1 1 0}seam-side-nav-toggle .side-nav-toggle--btn{color:#fff}seam-side-nav-toggle .side-nav-toggle--btn seam-icon{padding:5px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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: "ngmodule", type: TheSeamIconModule }, { kind: "component", type: i2.IconBtnComponent, selector: "button[seamIconBtn]", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "iconType", "btnTheme", "badgeTheme", "badgeText", "btnSize", "type", "role"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
1349
|
+
}
|
|
1350
|
+
__decorate([
|
|
1351
|
+
InputBoolean()
|
|
1352
|
+
], SideNavToggleComponent.prototype, "expanded", void 0);
|
|
1353
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: SideNavToggleComponent, decorators: [{
|
|
1354
|
+
type: Component,
|
|
1355
|
+
args: [{ selector: 'seam-side-nav-toggle', host: {
|
|
1356
|
+
'[class.side-nav-toggle--compact]': '!expanded'
|
|
1357
|
+
}, imports: [
|
|
1358
|
+
CommonModule,
|
|
1359
|
+
TheSeamIconModule,
|
|
1360
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"side-nav-toggle--content\">\n <ng-container *ngIf=\"expanded\">\n <ng-content></ng-content>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"toggleTpl; else iconBtn\">\n <button\n class=\"side-nav-toggle--btn mx-1\"\n (click)=\"toggle()\">\n <span class=\"sr-only\">Toggle sidebar</span>\n <ng-container *ngTemplateOutlet=\"toggleTpl\"></ng-container>\n </button>\n</ng-container>\n\n<ng-template #iconBtn>\n <button seamIconBtn [icon]=\"toggleIcon\"\n iconType=\"borderless-styled-square\"\n btnSize=\"sm\"\n class=\"side-nav-toggle--btn mx-1\"\n (click)=\"toggle()\">\n <span class=\"sr-only\">Toggle sidebar</span>\n </button>\n</ng-template>\n", styles: ["seam-side-nav-toggle{display:flex;flex-direction:row;flex-shrink:0;align-items:center;background:#357ebd;position:relative;height:45px;width:100%}seam-side-nav-toggle .side-nav-toggle--content{flex:1 1 0}seam-side-nav-toggle .side-nav-toggle--btn{color:#fff}seam-side-nav-toggle .side-nav-toggle--btn seam-icon{padding:5px}\n"] }]
|
|
1361
|
+
}], propDecorators: { expanded: [{
|
|
1362
|
+
type: Input
|
|
1363
|
+
}], toggleIcon: [{
|
|
1364
|
+
type: Input
|
|
1365
|
+
}], toggleTpl: [{
|
|
1366
|
+
type: Input
|
|
1367
|
+
}], toggleExpand: [{
|
|
1368
|
+
type: Output
|
|
1369
|
+
}] } });
|
|
1370
|
+
|
|
1371
|
+
function isNavItemType(item, type) {
|
|
1372
|
+
return item.itemType === type;
|
|
1373
|
+
}
|
|
1374
|
+
function isNavItemActive(item) {
|
|
1375
|
+
return item.__state?.active ?? false;
|
|
1376
|
+
}
|
|
1377
|
+
function isExpanded(item) {
|
|
1378
|
+
return item.__state?.expanded ?? false;
|
|
1379
|
+
}
|
|
1380
|
+
function hasChildren(item) {
|
|
1381
|
+
return canHaveChildren(item) && hasProperty(item, 'children') && item.children.length > 0;
|
|
1382
|
+
}
|
|
1383
|
+
function canHaveChildren(item) {
|
|
1384
|
+
return isNavItemType(item, 'basic') || isNavItemType(item, 'link');
|
|
1385
|
+
}
|
|
1386
|
+
function hasActiveChild(item) {
|
|
1387
|
+
if (!hasChildren(item)) {
|
|
1388
|
+
return false;
|
|
1389
|
+
}
|
|
1390
|
+
for (const child of item.children) {
|
|
1391
|
+
if (getItemStateProp(child, 'active')) {
|
|
1392
|
+
return true;
|
|
1393
|
+
}
|
|
1394
|
+
}
|
|
1395
|
+
return false;
|
|
1396
|
+
}
|
|
1397
|
+
function hasExpandedChild(item) {
|
|
1398
|
+
if (!hasChildren(item)) {
|
|
1399
|
+
return false;
|
|
1400
|
+
}
|
|
1401
|
+
for (const child of item.children) {
|
|
1402
|
+
if (getItemStateProp(child, 'expanded')) {
|
|
1403
|
+
return true;
|
|
1404
|
+
}
|
|
1405
|
+
}
|
|
1406
|
+
return false;
|
|
1407
|
+
}
|
|
1408
|
+
function canBeActive(item) {
|
|
1409
|
+
return isNavItemType(item, 'button') || isNavItemType(item, 'link');
|
|
1410
|
+
}
|
|
1411
|
+
function canExpand(item) {
|
|
1412
|
+
return canHaveChildren(item);
|
|
1413
|
+
}
|
|
1414
|
+
function findLinkItems(items) {
|
|
1415
|
+
const linkItems = [];
|
|
1416
|
+
const _fn = (_items) => {
|
|
1417
|
+
for (const item of _items) {
|
|
1418
|
+
if (isNavItemType(item, 'link')) {
|
|
1419
|
+
linkItems.push(item);
|
|
1420
|
+
}
|
|
1421
|
+
if (canHaveChildren(item) && hasProperty(item, 'children')) {
|
|
1422
|
+
_fn(item.children);
|
|
1423
|
+
}
|
|
1424
|
+
}
|
|
1425
|
+
};
|
|
1426
|
+
_fn(items);
|
|
1427
|
+
return linkItems;
|
|
1428
|
+
}
|
|
1429
|
+
function setItemStateProp(item, prop, value) {
|
|
1430
|
+
if (hasProperty(item, '__state')) {
|
|
1431
|
+
item.__state[prop] = value;
|
|
1432
|
+
}
|
|
1433
|
+
}
|
|
1434
|
+
function getItemStateProp(item, prop) {
|
|
1435
|
+
return setDefaultState(item).__state[prop];
|
|
1436
|
+
}
|
|
1437
|
+
function setDefaultState(item) {
|
|
1438
|
+
if (hasProperty(item, '__state')) {
|
|
1439
|
+
return item;
|
|
1440
|
+
}
|
|
1441
|
+
item.__state = {
|
|
1442
|
+
active: false,
|
|
1443
|
+
expanded: false
|
|
1444
|
+
};
|
|
1445
|
+
// TODO: See if there is a nice way to fix the typing for this.
|
|
1446
|
+
return item;
|
|
1447
|
+
}
|
|
1448
|
+
function applyItemConfig(item, config) {
|
|
1449
|
+
if (canBeActive(item)) {
|
|
1450
|
+
if (!hasProperty(item, 'activeNavigatable') && hasProperty(config, 'activeNavigatable')) {
|
|
1451
|
+
item.activeNavigatable = config.activeNavigatable;
|
|
1452
|
+
}
|
|
1453
|
+
}
|
|
1454
|
+
if (hasChildren(item)) {
|
|
1455
|
+
item.children = item.children.map(child => applyItemConfig(child, config));
|
|
1456
|
+
}
|
|
1457
|
+
return item;
|
|
1458
|
+
}
|
|
1459
|
+
|
|
1460
|
+
class TheSeamSideNavService {
|
|
1461
|
+
_router;
|
|
1462
|
+
_updatingCount = new BehaviorSubject(0);
|
|
1463
|
+
loading$;
|
|
1464
|
+
itemChanged = new Subject();
|
|
1465
|
+
constructor(_router) {
|
|
1466
|
+
this._router = _router;
|
|
1467
|
+
this.loading$ = this._updatingCount.pipe(map(count => count > 0), distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));
|
|
1468
|
+
}
|
|
1469
|
+
createItemsObservable(items) {
|
|
1470
|
+
return defer(() => {
|
|
1471
|
+
this.updateItemsStates(items);
|
|
1472
|
+
return new Observable((subscriber) => {
|
|
1473
|
+
const stateChangeSub = this.itemChanged.pipe(switchMap(() => this.loading$.pipe(filter(loading => !loading)))).subscribe(() => {
|
|
1474
|
+
subscriber.next(items);
|
|
1475
|
+
});
|
|
1476
|
+
try {
|
|
1477
|
+
this.updateItemsStates(items);
|
|
1478
|
+
}
|
|
1479
|
+
catch (err) {
|
|
1480
|
+
subscriber.error(err);
|
|
1481
|
+
}
|
|
1482
|
+
// const linkItems = findLinkItems(items)
|
|
1483
|
+
const routeChangeSub = this._router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe(() => {
|
|
1484
|
+
try {
|
|
1485
|
+
this.updateItemsStates(items);
|
|
1486
|
+
}
|
|
1487
|
+
catch (err) {
|
|
1488
|
+
subscriber.error(err);
|
|
1489
|
+
}
|
|
1490
|
+
});
|
|
1491
|
+
return () => {
|
|
1492
|
+
stateChangeSub.unsubscribe();
|
|
1493
|
+
routeChangeSub.unsubscribe();
|
|
1494
|
+
};
|
|
1495
|
+
}).pipe(startWith(items));
|
|
1496
|
+
});
|
|
1497
|
+
}
|
|
1498
|
+
_incUpdatingCount() {
|
|
1499
|
+
this._updatingCount.next(this._updatingCount.value + 1);
|
|
1500
|
+
}
|
|
1501
|
+
_decrUpdatingCount() {
|
|
1502
|
+
this._updatingCount.next(this._updatingCount.value - 1);
|
|
1503
|
+
}
|
|
1504
|
+
updateItemsStates(items) {
|
|
1505
|
+
this._incUpdatingCount();
|
|
1506
|
+
try {
|
|
1507
|
+
for (const item of items) {
|
|
1508
|
+
if (hasChildren(item)) {
|
|
1509
|
+
this.updateItemsStates(item.children);
|
|
1510
|
+
}
|
|
1511
|
+
this.updateItemState(item);
|
|
1512
|
+
}
|
|
1513
|
+
this._decrUpdatingCount();
|
|
1514
|
+
}
|
|
1515
|
+
catch (err) {
|
|
1516
|
+
this._decrUpdatingCount();
|
|
1517
|
+
throw err;
|
|
1518
|
+
}
|
|
1519
|
+
}
|
|
1520
|
+
updateItemState(item) {
|
|
1521
|
+
this._incUpdatingCount();
|
|
1522
|
+
try {
|
|
1523
|
+
setDefaultState(item);
|
|
1524
|
+
if (isNavItemType(item, 'link')) {
|
|
1525
|
+
const url = this._getUrl(item);
|
|
1526
|
+
if (notNullOrUndefined(url)) {
|
|
1527
|
+
const opts = this._getMatchOptions(item);
|
|
1528
|
+
this.setItemStateProp(item, 'active', this._router.isActive(url, opts));
|
|
1529
|
+
}
|
|
1530
|
+
}
|
|
1531
|
+
// TODO: Implement this in a more optimized way. Unless our apps start
|
|
1532
|
+
// having large side-navs constantly updating their state, this shouldn't
|
|
1533
|
+
// have much impact on performance.
|
|
1534
|
+
this._updateItemExpandedState(item);
|
|
1535
|
+
this._decrUpdatingCount();
|
|
1536
|
+
}
|
|
1537
|
+
catch (err) {
|
|
1538
|
+
this._decrUpdatingCount();
|
|
1539
|
+
throw err;
|
|
1540
|
+
}
|
|
1541
|
+
}
|
|
1542
|
+
_updateItemsExpandedState(items) {
|
|
1543
|
+
for (const item of items) {
|
|
1544
|
+
if (hasChildren(item)) {
|
|
1545
|
+
this._updateItemsExpandedState(item.children);
|
|
1546
|
+
}
|
|
1547
|
+
this._updateItemExpandedState(item);
|
|
1548
|
+
}
|
|
1549
|
+
}
|
|
1550
|
+
_updateItemExpandedState(item) {
|
|
1551
|
+
if (!canExpand(item)) {
|
|
1552
|
+
if (getItemStateProp(item, 'expanded')) {
|
|
1553
|
+
this.setItemStateProp(item, 'expanded', false);
|
|
1554
|
+
}
|
|
1555
|
+
return;
|
|
1556
|
+
}
|
|
1557
|
+
if (hasChildren(item)) {
|
|
1558
|
+
this._updateItemsExpandedState(item.children);
|
|
1559
|
+
}
|
|
1560
|
+
if (hasActiveChild(item) || hasExpandedChild(item)) {
|
|
1561
|
+
if (!getItemStateProp(item, 'expanded')) {
|
|
1562
|
+
this.setItemStateProp(item, 'expanded', true);
|
|
1563
|
+
}
|
|
1564
|
+
}
|
|
1565
|
+
else {
|
|
1566
|
+
if (getItemStateProp(item, 'expanded')) {
|
|
1567
|
+
this.setItemStateProp(item, 'expanded', false);
|
|
1568
|
+
}
|
|
1569
|
+
}
|
|
1570
|
+
}
|
|
1571
|
+
_getNavExtras(item) {
|
|
1572
|
+
const navigationExtras = {};
|
|
1573
|
+
if (hasProperty(item, 'queryParams')) {
|
|
1574
|
+
navigationExtras.queryParams = item.queryParams;
|
|
1575
|
+
}
|
|
1576
|
+
if (hasProperty(item, 'fragment')) {
|
|
1577
|
+
navigationExtras.fragment = item.fragment;
|
|
1578
|
+
}
|
|
1579
|
+
if (hasProperty(item, 'queryParamsHandling')) {
|
|
1580
|
+
navigationExtras.queryParamsHandling = item.queryParamsHandling;
|
|
1581
|
+
}
|
|
1582
|
+
if (hasProperty(item, 'preserveFragment')) {
|
|
1583
|
+
navigationExtras.preserveFragment = item.preserveFragment;
|
|
1584
|
+
}
|
|
1585
|
+
return navigationExtras;
|
|
1586
|
+
}
|
|
1587
|
+
_getUrl(item) {
|
|
1588
|
+
const link = item.link;
|
|
1589
|
+
if (typeof link === 'string') {
|
|
1590
|
+
return this._router.createUrlTree([link], this._getNavExtras(item)).toString();
|
|
1591
|
+
}
|
|
1592
|
+
else if (Array.isArray(link)) {
|
|
1593
|
+
return this._router.createUrlTree(link, this._getNavExtras(item)).toString();
|
|
1594
|
+
}
|
|
1595
|
+
return null;
|
|
1596
|
+
}
|
|
1597
|
+
_getMatchOptions(item) {
|
|
1598
|
+
const defaultMatchOpts = {
|
|
1599
|
+
paths: 'subset',
|
|
1600
|
+
queryParams: 'subset',
|
|
1601
|
+
fragment: 'ignored',
|
|
1602
|
+
matrixParams: 'ignored'
|
|
1603
|
+
};
|
|
1604
|
+
if (hasProperty(item, 'matchOptions')) {
|
|
1605
|
+
return {
|
|
1606
|
+
...defaultMatchOpts,
|
|
1607
|
+
...item.matchOptions
|
|
1608
|
+
};
|
|
1609
|
+
}
|
|
1610
|
+
return defaultMatchOpts;
|
|
1611
|
+
}
|
|
1612
|
+
setItemStateProp(item, prop, value) {
|
|
1613
|
+
const currentValue = getItemStateProp(item, prop);
|
|
1614
|
+
if (currentValue !== value) {
|
|
1615
|
+
setItemStateProp(item, prop, value);
|
|
1616
|
+
const changed = {
|
|
1617
|
+
item,
|
|
1618
|
+
prop,
|
|
1619
|
+
prevValue: currentValue,
|
|
1620
|
+
newValue: value
|
|
1621
|
+
};
|
|
1622
|
+
this.itemChanged.next(changed);
|
|
1623
|
+
}
|
|
1624
|
+
}
|
|
1625
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSideNavService, deps: [{ token: i1$2.Router }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1626
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSideNavService });
|
|
1627
|
+
}
|
|
1628
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSideNavService, decorators: [{
|
|
1629
|
+
type: Injectable
|
|
1630
|
+
}], ctorParameters: () => [{ type: i1$2.Router }] });
|
|
1631
|
+
|
|
1632
|
+
const EXPANDED_STATE = 'expanded';
|
|
1633
|
+
const COLLAPSED_STATE = 'collapsed';
|
|
1634
|
+
const EXPANDED_OVERLAY_STATE = 'expanded-overlay';
|
|
1635
|
+
const COLLAPSED_OVERLAY_STATE = 'collapsed-overlay';
|
|
1636
|
+
const EXPANDED_STATES = [EXPANDED_STATE, EXPANDED_OVERLAY_STATE];
|
|
1637
|
+
const COLLAPSED_STATES = [COLLAPSED_STATE, COLLAPSED_OVERLAY_STATE];
|
|
1638
|
+
const EXPAND_STATES = [...EXPANDED_STATES, ...COLLAPSED_STATES];
|
|
1639
|
+
function sideNavExpandStateChangeFn(fromState, toState) {
|
|
1640
|
+
// console.log({ fromState, toState })
|
|
1641
|
+
return fromState !== toState &&
|
|
1642
|
+
(
|
|
1643
|
+
// NOTE: The current way the side nav is being used it causes the
|
|
1644
|
+
// component to sometimes get placed in the wrong location initially. It
|
|
1645
|
+
// is fast enough to not be noticed without an initial animation usually,
|
|
1646
|
+
// so it is commented out below until the initial placement issue it
|
|
1647
|
+
// fixed.
|
|
1648
|
+
//
|
|
1649
|
+
// (
|
|
1650
|
+
// fromState === 'void' && EXPAND_STATES.indexOf(toState) !== -1
|
|
1651
|
+
// ||
|
|
1652
|
+
// toState === 'void' && EXPAND_STATES.indexOf(fromState) !== -1
|
|
1653
|
+
// )
|
|
1654
|
+
// ||
|
|
1655
|
+
((EXPANDED_STATES.indexOf(fromState) !== -1 && COLLAPSED_STATES.indexOf(toState) !== -1) ||
|
|
1656
|
+
(EXPANDED_STATES.indexOf(toState) !== -1 && COLLAPSED_STATES.indexOf(fromState) !== -1)));
|
|
1657
|
+
}
|
|
1658
|
+
class SideNavComponent {
|
|
1659
|
+
_viewContainerRef;
|
|
1660
|
+
_layout;
|
|
1661
|
+
_sideNav;
|
|
1662
|
+
_config;
|
|
1663
|
+
_baseLayoutRef;
|
|
1664
|
+
static ngAcceptInputType_hasHeaderToggle;
|
|
1665
|
+
_ngUnsubscribe = new Subject();
|
|
1666
|
+
faBars = faBars;
|
|
1667
|
+
// @HostBinding('@sideNavExpand') _sideNavExpand = EXPANDED_STATE
|
|
1668
|
+
// _sideNavExpand = EXPANDED_STATE
|
|
1669
|
+
// @HostBinding('@sideNavAnim') _sideNavExpand = EXPANDED_STATE
|
|
1670
|
+
_sideNavExpand = 'initial';
|
|
1671
|
+
hasHeaderToggle = true;
|
|
1672
|
+
toggleIcon = faBars;
|
|
1673
|
+
toggleTpl;
|
|
1674
|
+
get items() { return this._items.value; }
|
|
1675
|
+
set items(value) { this._items.next(value); }
|
|
1676
|
+
_items = new BehaviorSubject([]);
|
|
1677
|
+
items$;
|
|
1678
|
+
hideEmptyIcon;
|
|
1679
|
+
indentSize = 10;
|
|
1680
|
+
get expanded() { return this._expanded.value; }
|
|
1681
|
+
set expanded(value) {
|
|
1682
|
+
const expanded = coerceBooleanProperty(value);
|
|
1683
|
+
const emit = expanded !== this.expanded;
|
|
1684
|
+
this._expanded.next(expanded);
|
|
1685
|
+
if (emit) {
|
|
1686
|
+
this.toggleExpand.emit(coerceBooleanProperty(value));
|
|
1687
|
+
}
|
|
1688
|
+
}
|
|
1689
|
+
_expanded = new BehaviorSubject(true);
|
|
1690
|
+
expanded$ = this._expanded.asObservable();
|
|
1691
|
+
expandOrigin = 'left';
|
|
1692
|
+
expandHeight = '100%';
|
|
1693
|
+
expandWidth = 'calc(100vw - 50px)';
|
|
1694
|
+
get overlay() { return this._overlay.value; }
|
|
1695
|
+
set overlay(value) { this._overlay.next(coerceBooleanProperty(value)); }
|
|
1696
|
+
_overlay = new BehaviorSubject(false);
|
|
1697
|
+
overlay$ = this._overlay.asObservable();
|
|
1698
|
+
_menuItemTooltipConfig = {
|
|
1699
|
+
placement: 'right',
|
|
1700
|
+
container: 'body',
|
|
1701
|
+
behavior: 'always'
|
|
1702
|
+
};
|
|
1703
|
+
get menuItemTooltipConfig() { return this._menuItemTooltipConfig; }
|
|
1704
|
+
set menuItemTooltipConfig(value) {
|
|
1705
|
+
this._menuItemTooltipConfig = {
|
|
1706
|
+
class: value?.class,
|
|
1707
|
+
placement: value?.placement || this._menuItemTooltipConfig.placement,
|
|
1708
|
+
container: value?.container || this._menuItemTooltipConfig.container,
|
|
1709
|
+
behavior: value?.behavior || this._menuItemTooltipConfig.behavior
|
|
1710
|
+
};
|
|
1711
|
+
}
|
|
1712
|
+
menuItemTooltipDisabled$;
|
|
1713
|
+
toggleExpand = new EventEmitter();
|
|
1714
|
+
isMobile$;
|
|
1715
|
+
sideNavExpandedState$;
|
|
1716
|
+
_backdropHidden = new BehaviorSubject(true);
|
|
1717
|
+
_sideBarHeaderTpl;
|
|
1718
|
+
_sideBarHeaderPortal;
|
|
1719
|
+
_sideBarFooterTpl;
|
|
1720
|
+
_sideBarFooterPortal;
|
|
1721
|
+
constructor(_viewContainerRef, _layout, _sideNav, _config, _baseLayoutRef) {
|
|
1722
|
+
this._viewContainerRef = _viewContainerRef;
|
|
1723
|
+
this._layout = _layout;
|
|
1724
|
+
this._sideNav = _sideNav;
|
|
1725
|
+
this._config = _config;
|
|
1726
|
+
this._baseLayoutRef = _baseLayoutRef;
|
|
1727
|
+
const config = {
|
|
1728
|
+
...DEFAULT_SIDE_NAV_CONFIG,
|
|
1729
|
+
...(this._config || {}),
|
|
1730
|
+
};
|
|
1731
|
+
this.items$ = this._items.asObservable().pipe(map(items => (items && config) ? items.map(itm => applyItemConfig(itm, config)) : []), switchMap(items => items ? this._sideNav.createItemsObservable(items) : []), shareReplay({ bufferSize: 1, refCount: true }));
|
|
1732
|
+
this.isMobile$ = this._layout.isMobile$.pipe(tap(isMobile => isMobile ? this.collapse() : this.expand()));
|
|
1733
|
+
this.sideNavExpandedState$ = combineLatest([this.expanded$, this.overlay$]).pipe(map(([expanded, overlay]) => expanded
|
|
1734
|
+
? overlay ? EXPANDED_OVERLAY_STATE : EXPANDED_STATE
|
|
1735
|
+
: overlay ? COLLAPSED_OVERLAY_STATE : COLLAPSED_STATE), distinctUntilChanged());
|
|
1736
|
+
this.menuItemTooltipDisabled$ = combineLatest([this.expanded$, this.overlay$]).pipe(map(([expanded, overlay]) => {
|
|
1737
|
+
// never display tooltip on mobile, it breaks the layout
|
|
1738
|
+
if (overlay) {
|
|
1739
|
+
return true;
|
|
1740
|
+
}
|
|
1741
|
+
return this.menuItemTooltipConfig?.behavior === 'always' ? false
|
|
1742
|
+
: this.menuItemTooltipConfig?.behavior === 'never' ? true
|
|
1743
|
+
: this.menuItemTooltipConfig?.behavior === 'collapseOnly' ? expanded : true;
|
|
1744
|
+
}), distinctUntilChanged());
|
|
1745
|
+
}
|
|
1746
|
+
ngOnInit() {
|
|
1747
|
+
if (this._baseLayoutRef) {
|
|
1748
|
+
this._baseLayoutRef.registerNav(this);
|
|
1749
|
+
}
|
|
1750
|
+
this.isMobile$
|
|
1751
|
+
.pipe(takeUntil(this._ngUnsubscribe))
|
|
1752
|
+
.subscribe(b => this.overlay = b);
|
|
1753
|
+
this.sideNavExpandedState$
|
|
1754
|
+
.pipe(takeUntil(this._ngUnsubscribe))
|
|
1755
|
+
.subscribe(v => this._sideNavExpand = v);
|
|
1756
|
+
if (this._sideBarHeaderTpl) {
|
|
1757
|
+
this._sideBarHeaderPortal = new TemplatePortal(this._sideBarHeaderTpl, this._viewContainerRef);
|
|
1758
|
+
}
|
|
1759
|
+
if (this._sideBarFooterTpl) {
|
|
1760
|
+
this._sideBarFooterPortal = new TemplatePortal(this._sideBarFooterTpl, this._viewContainerRef);
|
|
1761
|
+
}
|
|
1762
|
+
}
|
|
1763
|
+
ngOnDestroy() {
|
|
1764
|
+
this._ngUnsubscribe.next(undefined);
|
|
1765
|
+
this._ngUnsubscribe.complete();
|
|
1766
|
+
if (this._baseLayoutRef) {
|
|
1767
|
+
this._baseLayoutRef.unregisterNav(this);
|
|
1768
|
+
}
|
|
1769
|
+
}
|
|
1770
|
+
expand() {
|
|
1771
|
+
this.expanded = true;
|
|
1772
|
+
}
|
|
1773
|
+
collapse() {
|
|
1774
|
+
this.expanded = false;
|
|
1775
|
+
}
|
|
1776
|
+
toggle() {
|
|
1777
|
+
this.expanded = !this.expanded;
|
|
1778
|
+
}
|
|
1779
|
+
animateStart() {
|
|
1780
|
+
if (this.expanded) {
|
|
1781
|
+
this._backdropHidden.next(false);
|
|
1782
|
+
}
|
|
1783
|
+
}
|
|
1784
|
+
animateEnd() {
|
|
1785
|
+
if (!this.expanded) {
|
|
1786
|
+
this._backdropHidden.next(true);
|
|
1787
|
+
}
|
|
1788
|
+
}
|
|
1789
|
+
get expandOriginTransform() {
|
|
1790
|
+
switch (this.expandOrigin) {
|
|
1791
|
+
case 'right':
|
|
1792
|
+
return this._sideNavExpand === EXPANDED_OVERLAY_STATE ? 'translateX(100vw) translateX(-100%)'
|
|
1793
|
+
: this._sideNavExpand === COLLAPSED_OVERLAY_STATE ? 'translateX(100vw)' : null;
|
|
1794
|
+
case 'top':
|
|
1795
|
+
return this._sideNavExpand === EXPANDED_OVERLAY_STATE ? 'translateY(0)'
|
|
1796
|
+
: this._sideNavExpand === COLLAPSED_OVERLAY_STATE ? 'translateY(-100%)' : null;
|
|
1797
|
+
case 'bottom':
|
|
1798
|
+
return this._sideNavExpand === EXPANDED_OVERLAY_STATE ? 'translateY(100vh) translateY(-100%)'
|
|
1799
|
+
: this._sideNavExpand === COLLAPSED_OVERLAY_STATE ? 'translateY(100vh)' : null;
|
|
1800
|
+
case 'left':
|
|
1801
|
+
default:
|
|
1802
|
+
return this._sideNavExpand === EXPANDED_OVERLAY_STATE ? 'translateX(0)'
|
|
1803
|
+
: this._sideNavExpand === COLLAPSED_OVERLAY_STATE ? 'translateX(-100%)' : null;
|
|
1804
|
+
}
|
|
1805
|
+
}
|
|
1806
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: SideNavComponent, deps: [{ token: i0.ViewContainerRef }, { token: i1$3.TheSeamLayoutService }, { token: TheSeamSideNavService }, { token: THESEAM_SIDE_NAV_CONFIG, optional: true }, { token: THESEAM_BASE_LAYOUT_REF, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
1807
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: SideNavComponent, isStandalone: true, selector: "seam-side-nav", inputs: { hasHeaderToggle: "hasHeaderToggle", toggleIcon: "toggleIcon", toggleTpl: "toggleTpl", items: "items", hideEmptyIcon: "hideEmptyIcon", indentSize: "indentSize", expanded: "expanded", expandOrigin: "expandOrigin", expandHeight: "expandHeight", expandWidth: "expandWidth", overlay: "overlay", menuItemTooltipConfig: "menuItemTooltipConfig" }, outputs: { toggleExpand: "toggleExpand" }, host: { properties: { "@sideNavAnim": "this._sideNavExpand" } }, providers: [
|
|
1808
|
+
TheSeamSideNavService,
|
|
1809
|
+
{
|
|
1810
|
+
provide: THESEAM_SIDE_NAV_ACCESSOR,
|
|
1811
|
+
useExisting: SideNavComponent
|
|
1812
|
+
},
|
|
1813
|
+
], queries: [{ propertyName: "_sideBarHeaderTpl", first: true, predicate: BaseLayoutSideBarHeaderDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "_sideBarFooterTpl", first: true, predicate: BaseLayoutSideBarFooterDirective, descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div class=\"side-nav-backdrop\" *ngIf=\"isMobile$ | async\"\n [@sideNavBackdrop]=\"_sideNavExpand\"\n [class.side-nav-backdrop-hidden]=\"_backdropHidden | async\"\n (click)=\"collapse()\"></div>\n\n<div\n class=\"side-nav-inner-wrapper\"\n [@sideNavExpand]=\"{\n value: _sideNavExpand,\n params: {\n origin: expandOriginTransform,\n height: expandHeight,\n width: expandWidth\n }\n }\"\n (@sideNavExpand.start)=\"animateStart()\"\n (@sideNavExpand.done)=\"animateEnd()\">\n <nav class=\"nav side-nav-content\">\n <seam-side-nav-toggle *ngIf=\"hasHeaderToggle\"\n [toggleIcon]=\"toggleIcon\"\n [toggleTpl]=\"toggleTpl\"\n [expanded]=\"expanded$ | async\"\n (toggleExpand)=\"toggle()\">\n <ng-template [cdkPortalOutlet]=\"_sideBarHeaderPortal\"></ng-template>\n </seam-side-nav-toggle>\n <div class=\"side-nav-items-container\" seamOverlayScrollbar>\n <div class=\"side-nav--group side-nav--group--level-0\">\n <seam-side-nav-item *ngFor=\"let item of items$ | async\"\n [compact]=\"!(expanded$ | async)\"\n [isMobile]=\"isMobile$ | async\"\n [itemType]=\"$any(item)?.itemType\"\n [icon]=\"$any(item)?.icon\"\n [label]=\"$any(item)?.label\"\n [link]=\"$any(item)?.link\"\n [badgeText]=\"$any(item)?.badge?.text\"\n [badgeTheme]=\"$any(item)?.badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(item)?.badge?.srContent\"\n [badgeTooltip]=\"$any(item)?.badge?.tooltip\"\n [queryParams]=\"$any(item)?.queryParams\"\n [children]=\"$any(item)?.children\"\n [active]=\"$any(item).__state?.active\"\n [expanded]=\"$any(item).__state?.expanded\"\n [hideEmptyIcon]=\"hideEmptyIcon\"\n [indentSize]=\"indentSize\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled$ | async\">\n [activeNavigatable]=\"$any(item).activeNavigatable\">\n </seam-side-nav-item>\n </div>\n </div>\n <ng-template [cdkPortalOutlet]=\"_sideBarFooterPortal\"></ng-template>\n </nav>\n</div>\n", styles: ["seam-side-nav,.seam-side-nav{display:block;height:100%;position:relative;z-index:2;overflow:hidden}seam-side-nav .side-nav-inner-wrapper,.seam-side-nav .side-nav-inner-wrapper{background:#357ebd;height:100%}seam-side-nav .side-nav-backdrop,.seam-side-nav .side-nav-backdrop{background:#343a4099;width:100vw;height:100vh}seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden,.seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden{display:none;width:0;height:0;padding:0;margin:0}seam-side-nav .side-nav-content,.seam-side-nav .side-nav-content{display:flex;flex-direction:column;height:100%;flex-wrap:nowrap}seam-side-nav .side-nav-items-container,.seam-side-nav .side-nav-items-container{display:flex;flex-direction:column;width:100%;flex:1 1 100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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: "ngmodule", type: A11yModule }, { kind: "directive", type: TheSeamOverlayScrollbarDirective, selector: "[seamOverlayScrollbar]", inputs: ["seamOverlayScrollbar", "overlayScrollbarEnabled"], exportAs: ["seamOverlayScrollbar"] }, { kind: "ngmodule", type: TheSeamLayoutModule }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: SideNavItemComponent, selector: "seam-side-nav-item", inputs: ["itemType", "icon", "hideEmptyIcon", "label", "active", "activeNavigatable", "link", "queryParams", "children", "hierLevel", "indentSize", "expanded", "compact", "isMobile", "badgeText", "badgeTheme", "badgeSrContent", "badgeTooltip", "menuItemTooltipConfig", "menuItemTooltipDisabled"], exportAs: ["seamSideNavItem"] }, { kind: "component", type: SideNavToggleComponent, selector: "seam-side-nav-toggle", inputs: ["expanded", "toggleIcon", "toggleTpl"], outputs: ["toggleExpand"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }], animations: [
|
|
1814
|
+
//
|
|
1815
|
+
// TODO: This animation code turned into a mess. Clean it up and make it
|
|
1816
|
+
// more smooth.
|
|
1817
|
+
//
|
|
1818
|
+
trigger('sideNavAnim', [
|
|
1819
|
+
transition(sideNavExpandStateChangeFn, [
|
|
1820
|
+
group([
|
|
1821
|
+
query('@sideNavBackdrop', animateChild(), { optional: true }),
|
|
1822
|
+
query('@sideNavExpand', animateChild(), { optional: true }),
|
|
1823
|
+
]),
|
|
1824
|
+
]),
|
|
1825
|
+
]),
|
|
1826
|
+
trigger('sideNavBackdrop', [
|
|
1827
|
+
state(EXPANDED_OVERLAY_STATE, style({ opacity: '1' })),
|
|
1828
|
+
state(COLLAPSED_OVERLAY_STATE, style({ opacity: '0' })),
|
|
1829
|
+
// transition((fromState, toState, element, params) => {
|
|
1830
|
+
// console.log('sideNavBackdrop v', fromState, toState, element, params)
|
|
1831
|
+
// return false
|
|
1832
|
+
// }, []),
|
|
1833
|
+
transition(sideNavExpandStateChangeFn, animate('0.2s ease-in-out')),
|
|
1834
|
+
]),
|
|
1835
|
+
trigger('sideNavExpand', [
|
|
1836
|
+
// TODO: Make width configurable for non-overlay state.
|
|
1837
|
+
state(EXPANDED_STATE, style({ width: '260px' })),
|
|
1838
|
+
state(COLLAPSED_STATE, style({ width: '50px', 'overflow-x': 'hidden' })),
|
|
1839
|
+
state(EXPANDED_OVERLAY_STATE, style({
|
|
1840
|
+
position: 'absolute',
|
|
1841
|
+
top: 0,
|
|
1842
|
+
bottom: 0,
|
|
1843
|
+
left: 0,
|
|
1844
|
+
height: '{{ height }}',
|
|
1845
|
+
width: '{{ width }}',
|
|
1846
|
+
transform: '{{ origin }}',
|
|
1847
|
+
zIndex: '9999',
|
|
1848
|
+
}), {
|
|
1849
|
+
params: {
|
|
1850
|
+
origin: 'translateX(100%)',
|
|
1851
|
+
height: '100%',
|
|
1852
|
+
width: 'calc(100vw - 50px)',
|
|
1853
|
+
}
|
|
1854
|
+
}),
|
|
1855
|
+
state(COLLAPSED_OVERLAY_STATE, style({
|
|
1856
|
+
position: 'absolute',
|
|
1857
|
+
top: 0,
|
|
1858
|
+
bottom: 0,
|
|
1859
|
+
left: 0,
|
|
1860
|
+
height: '{{ height }}',
|
|
1861
|
+
width: '{{ width }}',
|
|
1862
|
+
transform: '{{ origin }}',
|
|
1863
|
+
'overflow-x': 'hidden',
|
|
1864
|
+
zIndex: '9999',
|
|
1865
|
+
}), {
|
|
1866
|
+
params: {
|
|
1867
|
+
origin: 'translateX(0)',
|
|
1868
|
+
height: '100%',
|
|
1869
|
+
width: 'calc(100vw - 50px)',
|
|
1870
|
+
}
|
|
1871
|
+
}),
|
|
1872
|
+
// transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, animate('0.2s ease-in-out')),
|
|
1873
|
+
transition(sideNavExpandStateChangeFn, animate('0.2s ease-in-out')),
|
|
1874
|
+
// transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, [
|
|
1875
|
+
// // query(':leave', animateChild(), { optional: true }),
|
|
1876
|
+
// // query(':enter', animateChild(), { optional: true }),
|
|
1877
|
+
// group([
|
|
1878
|
+
// query(':leave', animateChild(), { optional: true }),
|
|
1879
|
+
// query(':enter', animateChild(), { optional: true }),
|
|
1880
|
+
// query('@compactAnim', animateChild(), { optional: true }),
|
|
1881
|
+
// animate('5.2s ease-in-out')
|
|
1882
|
+
// ])
|
|
1883
|
+
// ]),
|
|
1884
|
+
])
|
|
1885
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
1886
|
+
}
|
|
1887
|
+
__decorate([
|
|
1888
|
+
InputBoolean()
|
|
1889
|
+
], SideNavComponent.prototype, "hasHeaderToggle", void 0);
|
|
1890
|
+
__decorate([
|
|
1891
|
+
InputNumber(10)
|
|
1892
|
+
], SideNavComponent.prototype, "indentSize", void 0);
|
|
1893
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: SideNavComponent, decorators: [{
|
|
1894
|
+
type: Component,
|
|
1895
|
+
args: [{ selector: 'seam-side-nav', providers: [
|
|
1896
|
+
TheSeamSideNavService,
|
|
1897
|
+
{
|
|
1898
|
+
provide: THESEAM_SIDE_NAV_ACCESSOR,
|
|
1899
|
+
useExisting: SideNavComponent
|
|
1900
|
+
},
|
|
1901
|
+
], animations: [
|
|
1902
|
+
//
|
|
1903
|
+
// TODO: This animation code turned into a mess. Clean it up and make it
|
|
1904
|
+
// more smooth.
|
|
1905
|
+
//
|
|
1906
|
+
trigger('sideNavAnim', [
|
|
1907
|
+
transition(sideNavExpandStateChangeFn, [
|
|
1908
|
+
group([
|
|
1909
|
+
query('@sideNavBackdrop', animateChild(), { optional: true }),
|
|
1910
|
+
query('@sideNavExpand', animateChild(), { optional: true }),
|
|
1911
|
+
]),
|
|
1912
|
+
]),
|
|
1913
|
+
]),
|
|
1914
|
+
trigger('sideNavBackdrop', [
|
|
1915
|
+
state(EXPANDED_OVERLAY_STATE, style({ opacity: '1' })),
|
|
1916
|
+
state(COLLAPSED_OVERLAY_STATE, style({ opacity: '0' })),
|
|
1917
|
+
// transition((fromState, toState, element, params) => {
|
|
1918
|
+
// console.log('sideNavBackdrop v', fromState, toState, element, params)
|
|
1919
|
+
// return false
|
|
1920
|
+
// }, []),
|
|
1921
|
+
transition(sideNavExpandStateChangeFn, animate('0.2s ease-in-out')),
|
|
1922
|
+
]),
|
|
1923
|
+
trigger('sideNavExpand', [
|
|
1924
|
+
// TODO: Make width configurable for non-overlay state.
|
|
1925
|
+
state(EXPANDED_STATE, style({ width: '260px' })),
|
|
1926
|
+
state(COLLAPSED_STATE, style({ width: '50px', 'overflow-x': 'hidden' })),
|
|
1927
|
+
state(EXPANDED_OVERLAY_STATE, style({
|
|
1928
|
+
position: 'absolute',
|
|
1929
|
+
top: 0,
|
|
1930
|
+
bottom: 0,
|
|
1931
|
+
left: 0,
|
|
1932
|
+
height: '{{ height }}',
|
|
1933
|
+
width: '{{ width }}',
|
|
1934
|
+
transform: '{{ origin }}',
|
|
1935
|
+
zIndex: '9999',
|
|
1936
|
+
}), {
|
|
1937
|
+
params: {
|
|
1938
|
+
origin: 'translateX(100%)',
|
|
1939
|
+
height: '100%',
|
|
1940
|
+
width: 'calc(100vw - 50px)',
|
|
1941
|
+
}
|
|
1942
|
+
}),
|
|
1943
|
+
state(COLLAPSED_OVERLAY_STATE, style({
|
|
1944
|
+
position: 'absolute',
|
|
1945
|
+
top: 0,
|
|
1946
|
+
bottom: 0,
|
|
1947
|
+
left: 0,
|
|
1948
|
+
height: '{{ height }}',
|
|
1949
|
+
width: '{{ width }}',
|
|
1950
|
+
transform: '{{ origin }}',
|
|
1951
|
+
'overflow-x': 'hidden',
|
|
1952
|
+
zIndex: '9999',
|
|
1953
|
+
}), {
|
|
1954
|
+
params: {
|
|
1955
|
+
origin: 'translateX(0)',
|
|
1956
|
+
height: '100%',
|
|
1957
|
+
width: 'calc(100vw - 50px)',
|
|
1958
|
+
}
|
|
1959
|
+
}),
|
|
1960
|
+
// transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, animate('0.2s ease-in-out')),
|
|
1961
|
+
transition(sideNavExpandStateChangeFn, animate('0.2s ease-in-out')),
|
|
1962
|
+
// transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, [
|
|
1963
|
+
// // query(':leave', animateChild(), { optional: true }),
|
|
1964
|
+
// // query(':enter', animateChild(), { optional: true }),
|
|
1965
|
+
// group([
|
|
1966
|
+
// query(':leave', animateChild(), { optional: true }),
|
|
1967
|
+
// query(':enter', animateChild(), { optional: true }),
|
|
1968
|
+
// query('@compactAnim', animateChild(), { optional: true }),
|
|
1969
|
+
// animate('5.2s ease-in-out')
|
|
1970
|
+
// ])
|
|
1971
|
+
// ]),
|
|
1972
|
+
])
|
|
1973
|
+
], imports: [
|
|
1974
|
+
CommonModule,
|
|
1975
|
+
A11yModule,
|
|
1976
|
+
TheSeamOverlayScrollbarDirective,
|
|
1977
|
+
TheSeamLayoutModule,
|
|
1978
|
+
PortalModule,
|
|
1979
|
+
SideNavItemComponent,
|
|
1980
|
+
SideNavToggleComponent,
|
|
1981
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, template: "<div class=\"side-nav-backdrop\" *ngIf=\"isMobile$ | async\"\n [@sideNavBackdrop]=\"_sideNavExpand\"\n [class.side-nav-backdrop-hidden]=\"_backdropHidden | async\"\n (click)=\"collapse()\"></div>\n\n<div\n class=\"side-nav-inner-wrapper\"\n [@sideNavExpand]=\"{\n value: _sideNavExpand,\n params: {\n origin: expandOriginTransform,\n height: expandHeight,\n width: expandWidth\n }\n }\"\n (@sideNavExpand.start)=\"animateStart()\"\n (@sideNavExpand.done)=\"animateEnd()\">\n <nav class=\"nav side-nav-content\">\n <seam-side-nav-toggle *ngIf=\"hasHeaderToggle\"\n [toggleIcon]=\"toggleIcon\"\n [toggleTpl]=\"toggleTpl\"\n [expanded]=\"expanded$ | async\"\n (toggleExpand)=\"toggle()\">\n <ng-template [cdkPortalOutlet]=\"_sideBarHeaderPortal\"></ng-template>\n </seam-side-nav-toggle>\n <div class=\"side-nav-items-container\" seamOverlayScrollbar>\n <div class=\"side-nav--group side-nav--group--level-0\">\n <seam-side-nav-item *ngFor=\"let item of items$ | async\"\n [compact]=\"!(expanded$ | async)\"\n [isMobile]=\"isMobile$ | async\"\n [itemType]=\"$any(item)?.itemType\"\n [icon]=\"$any(item)?.icon\"\n [label]=\"$any(item)?.label\"\n [link]=\"$any(item)?.link\"\n [badgeText]=\"$any(item)?.badge?.text\"\n [badgeTheme]=\"$any(item)?.badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(item)?.badge?.srContent\"\n [badgeTooltip]=\"$any(item)?.badge?.tooltip\"\n [queryParams]=\"$any(item)?.queryParams\"\n [children]=\"$any(item)?.children\"\n [active]=\"$any(item).__state?.active\"\n [expanded]=\"$any(item).__state?.expanded\"\n [hideEmptyIcon]=\"hideEmptyIcon\"\n [indentSize]=\"indentSize\"\n [menuItemTooltipConfig]=\"menuItemTooltipConfig\"\n [menuItemTooltipDisabled]=\"menuItemTooltipDisabled$ | async\">\n [activeNavigatable]=\"$any(item).activeNavigatable\">\n </seam-side-nav-item>\n </div>\n </div>\n <ng-template [cdkPortalOutlet]=\"_sideBarFooterPortal\"></ng-template>\n </nav>\n</div>\n", styles: ["seam-side-nav,.seam-side-nav{display:block;height:100%;position:relative;z-index:2;overflow:hidden}seam-side-nav .side-nav-inner-wrapper,.seam-side-nav .side-nav-inner-wrapper{background:#357ebd;height:100%}seam-side-nav .side-nav-backdrop,.seam-side-nav .side-nav-backdrop{background:#343a4099;width:100vw;height:100vh}seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden,.seam-side-nav .side-nav-backdrop.side-nav-backdrop-hidden{display:none;width:0;height:0;padding:0;margin:0}seam-side-nav .side-nav-content,.seam-side-nav .side-nav-content{display:flex;flex-direction:column;height:100%;flex-wrap:nowrap}seam-side-nav .side-nav-items-container,.seam-side-nav .side-nav-items-container{display:flex;flex-direction:column;width:100%;flex:1 1 100%}\n"] }]
|
|
1982
|
+
}], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i1$3.TheSeamLayoutService }, { type: TheSeamSideNavService }, { type: undefined, decorators: [{
|
|
1983
|
+
type: Optional
|
|
1984
|
+
}, {
|
|
1985
|
+
type: Inject,
|
|
1986
|
+
args: [THESEAM_SIDE_NAV_CONFIG]
|
|
1987
|
+
}] }, { type: undefined, decorators: [{
|
|
1988
|
+
type: Optional
|
|
1989
|
+
}, {
|
|
1990
|
+
type: Inject,
|
|
1991
|
+
args: [THESEAM_BASE_LAYOUT_REF]
|
|
1992
|
+
}] }], propDecorators: { _sideNavExpand: [{
|
|
1993
|
+
type: HostBinding,
|
|
1994
|
+
args: ['@sideNavAnim']
|
|
1995
|
+
}], hasHeaderToggle: [{
|
|
1996
|
+
type: Input
|
|
1997
|
+
}], toggleIcon: [{
|
|
1998
|
+
type: Input
|
|
1999
|
+
}], toggleTpl: [{
|
|
2000
|
+
type: Input
|
|
2001
|
+
}], items: [{
|
|
2002
|
+
type: Input
|
|
2003
|
+
}], hideEmptyIcon: [{
|
|
2004
|
+
type: Input
|
|
2005
|
+
}], indentSize: [{
|
|
2006
|
+
type: Input
|
|
2007
|
+
}], expanded: [{
|
|
2008
|
+
type: Input
|
|
2009
|
+
}], expandOrigin: [{
|
|
2010
|
+
type: Input
|
|
2011
|
+
}], expandHeight: [{
|
|
2012
|
+
type: Input
|
|
2013
|
+
}], expandWidth: [{
|
|
2014
|
+
type: Input
|
|
2015
|
+
}], overlay: [{
|
|
2016
|
+
type: Input
|
|
2017
|
+
}], menuItemTooltipConfig: [{
|
|
2018
|
+
type: Input
|
|
2019
|
+
}], toggleExpand: [{
|
|
2020
|
+
type: Output
|
|
2021
|
+
}], _sideBarHeaderTpl: [{
|
|
2022
|
+
type: ContentChild,
|
|
2023
|
+
args: [BaseLayoutSideBarHeaderDirective, { static: true, read: TemplateRef }]
|
|
2024
|
+
}], _sideBarFooterTpl: [{
|
|
2025
|
+
type: ContentChild,
|
|
2026
|
+
args: [BaseLayoutSideBarFooterDirective, { static: true, read: TemplateRef }]
|
|
2027
|
+
}] } });
|
|
2028
|
+
|
|
2029
|
+
class TheSeamSideNavModule {
|
|
2030
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSideNavModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
2031
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSideNavModule, imports: [SideNavItemComponent,
|
|
2032
|
+
SideNavComponent,
|
|
2033
|
+
SideNavToggleComponent], exports: [SideNavItemComponent,
|
|
2034
|
+
SideNavComponent,
|
|
2035
|
+
SideNavToggleComponent] });
|
|
2036
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSideNavModule, imports: [SideNavItemComponent,
|
|
2037
|
+
SideNavComponent,
|
|
2038
|
+
SideNavToggleComponent] });
|
|
2039
|
+
}
|
|
2040
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSideNavModule, decorators: [{
|
|
2041
|
+
type: NgModule,
|
|
2042
|
+
args: [{
|
|
2043
|
+
imports: [
|
|
2044
|
+
SideNavItemComponent,
|
|
2045
|
+
SideNavComponent,
|
|
2046
|
+
SideNavToggleComponent,
|
|
2047
|
+
],
|
|
2048
|
+
exports: [
|
|
2049
|
+
SideNavItemComponent,
|
|
2050
|
+
SideNavComponent,
|
|
2051
|
+
SideNavToggleComponent,
|
|
2052
|
+
]
|
|
2053
|
+
}]
|
|
2054
|
+
}] });
|
|
2055
|
+
|
|
2056
|
+
class TopBarMenuButtonBase {
|
|
2057
|
+
}
|
|
2058
|
+
const _TopBarMenuButtonMixinBase = mixinDisabled(TopBarMenuButtonBase);
|
|
2059
|
+
class TopBarMenuButtonComponent extends _TopBarMenuButtonMixinBase {
|
|
2060
|
+
static ngAcceptInputType_compact;
|
|
2061
|
+
faAngleDown = faAngleDown;
|
|
2062
|
+
/** Custom template to show in desktop mode. No default. */
|
|
2063
|
+
detailTpl;
|
|
2064
|
+
/** Custom template to show in mobile mode. Defaults to icon. */
|
|
2065
|
+
compactDetailTpl;
|
|
2066
|
+
compact = false;
|
|
2067
|
+
/** Icon to display on mobile to activate profile dropdown. Defaults to faUserCircle. */
|
|
2068
|
+
profileIcon;
|
|
2069
|
+
get _hasCompactClass() { return this.compact; }
|
|
2070
|
+
get _hasPadding0Class() { return this.compact; }
|
|
2071
|
+
get _hasRoundedClass() { return this.compact; }
|
|
2072
|
+
get _hasBtnLinkClass() { return !this.compact; }
|
|
2073
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TopBarMenuButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
2074
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: TopBarMenuButtonComponent, isStandalone: true, selector: "button[seamTopBarMenuButton]", inputs: { disabled: "disabled", detailTpl: "detailTpl", compactDetailTpl: "compactDetailTpl", compact: "compact", profileIcon: "profileIcon" }, host: { attributes: { "attr.type": "button" }, properties: { "attr.aria-disabled": "disabled.toString()", "attr.disabled": "disabled || null", "class.top-bar-menu-button--compact": "this._hasCompactClass", "class.p-0": "this._hasPadding0Class", "class.rounded": "this._hasRoundedClass", "class.btn-link": "this._hasBtnLinkClass" }, classAttribute: "btn border text-decoration-none py-0 top-bar-menu-button" }, exportAs: ["seamButton"], usesInheritance: true, ngImport: i0, template: "<div class=\"d-flex flex-row\" *ngIf=\"!compact; else compactTpl\">\n <div class=\"text-left flex-grow-1 text-truncate\">\n <ng-template [ngTemplateOutlet]=\"$any(detailTpl)\"></ng-template>\n </div>\n <!-- Arrow Button -->\n <div class=\"pl-2 d-flex flex-column\">\n <div class=\"flex-grow-1\"></div>\n <seam-icon class=\"d-block\" [icon]=\"faAngleDown\"></seam-icon>\n <div class=\"flex-grow-1\"></div>\n </div>\n</div>\n<ng-template #compactTpl>\n <ng-container *ngIf=\"compactDetailTpl; else iconTpl\">\n <ng-template [ngTemplateOutlet]=\"$any(compactDetailTpl)\"></ng-template>\n </ng-container>\n <ng-template #iconTpl>\n <seam-icon [icon]=\"profileIcon\" iconType=\"borderless-styled-square\"></seam-icon>\n </ng-template>\n</ng-template>\n", styles: ["button[seamTopBarMenuButton]{min-width:200px;border-radius:0;border-top:0!important;border-bottom:0!important;border-right:0!important}button[seamTopBarMenuButton].top-bar-menu-button--compact{min-width:40px;border-left:0!important}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TheSeamIconModule }, { kind: "component", type: i2.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
2075
|
+
}
|
|
2076
|
+
__decorate([
|
|
2077
|
+
InputBoolean()
|
|
2078
|
+
], TopBarMenuButtonComponent.prototype, "compact", void 0);
|
|
2079
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TopBarMenuButtonComponent, decorators: [{
|
|
2080
|
+
type: Component,
|
|
2081
|
+
args: [{ selector: 'button[seamTopBarMenuButton]', encapsulation: ViewEncapsulation.None, exportAs: 'seamButton', inputs: ['disabled'], host: {
|
|
2082
|
+
'attr.type': 'button',
|
|
2083
|
+
'class': 'btn border text-decoration-none py-0 top-bar-menu-button',
|
|
2084
|
+
'[attr.aria-disabled]': 'disabled.toString()',
|
|
2085
|
+
'[attr.disabled]': 'disabled || null',
|
|
2086
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
2087
|
+
NgIf,
|
|
2088
|
+
NgTemplateOutlet,
|
|
2089
|
+
TheSeamIconModule,
|
|
2090
|
+
], template: "<div class=\"d-flex flex-row\" *ngIf=\"!compact; else compactTpl\">\n <div class=\"text-left flex-grow-1 text-truncate\">\n <ng-template [ngTemplateOutlet]=\"$any(detailTpl)\"></ng-template>\n </div>\n <!-- Arrow Button -->\n <div class=\"pl-2 d-flex flex-column\">\n <div class=\"flex-grow-1\"></div>\n <seam-icon class=\"d-block\" [icon]=\"faAngleDown\"></seam-icon>\n <div class=\"flex-grow-1\"></div>\n </div>\n</div>\n<ng-template #compactTpl>\n <ng-container *ngIf=\"compactDetailTpl; else iconTpl\">\n <ng-template [ngTemplateOutlet]=\"$any(compactDetailTpl)\"></ng-template>\n </ng-container>\n <ng-template #iconTpl>\n <seam-icon [icon]=\"profileIcon\" iconType=\"borderless-styled-square\"></seam-icon>\n </ng-template>\n</ng-template>\n", styles: ["button[seamTopBarMenuButton]{min-width:200px;border-radius:0;border-top:0!important;border-bottom:0!important;border-right:0!important}button[seamTopBarMenuButton].top-bar-menu-button--compact{min-width:40px;border-left:0!important}\n"] }]
|
|
2091
|
+
}], propDecorators: { detailTpl: [{
|
|
2092
|
+
type: Input
|
|
2093
|
+
}], compactDetailTpl: [{
|
|
2094
|
+
type: Input
|
|
2095
|
+
}], compact: [{
|
|
2096
|
+
type: Input
|
|
2097
|
+
}], profileIcon: [{
|
|
2098
|
+
type: Input
|
|
2099
|
+
}], _hasCompactClass: [{
|
|
2100
|
+
type: HostBinding,
|
|
2101
|
+
args: ['class.top-bar-menu-button--compact']
|
|
2102
|
+
}], _hasPadding0Class: [{
|
|
2103
|
+
type: HostBinding,
|
|
2104
|
+
args: ['class.p-0']
|
|
2105
|
+
}], _hasRoundedClass: [{
|
|
2106
|
+
type: HostBinding,
|
|
2107
|
+
args: ['class.rounded']
|
|
2108
|
+
}], _hasBtnLinkClass: [{
|
|
2109
|
+
type: HostBinding,
|
|
2110
|
+
args: ['class.btn-link']
|
|
2111
|
+
}] } });
|
|
2112
|
+
|
|
2113
|
+
class TopBarTitleComponent {
|
|
2114
|
+
titleText;
|
|
2115
|
+
subTitleText;
|
|
2116
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TopBarTitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2117
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: TopBarTitleComponent, isStandalone: true, selector: "seam-top-bar-title", inputs: { titleText: "titleText", subTitleText: "subTitleText" }, ngImport: i0, template: "<h2 class=\"mb-0\" [ngStyle]=\"{ 'font-size.px': 32 }\" [ngStyle.lt-md]=\"{ 'font-size.px': 26 }\" [ngStyle.lt-sm]=\"{ 'font-size.px': 20, 'line-height': 1 }\">\n {{ titleText }}\n <br fxHide.gt-sm>\n <small *ngIf=\"subTitleText\" class=\"text-muted\">{{ subTitleText }}</small>\n</h2>\n", styles: ["seam-top-bar-title{flex:1 1 auto;display:flex;flex-direction:row;align-items:center}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FlexLayoutModule }, { kind: "directive", type: i1$4.DefaultShowHideDirective, selector: " [fxShow], [fxShow.print], [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl], [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl], [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg], [fxHide], [fxHide.print], [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl], [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl], [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]", inputs: ["fxShow", "fxShow.print", "fxShow.xs", "fxShow.sm", "fxShow.md", "fxShow.lg", "fxShow.xl", "fxShow.lt-sm", "fxShow.lt-md", "fxShow.lt-lg", "fxShow.lt-xl", "fxShow.gt-xs", "fxShow.gt-sm", "fxShow.gt-md", "fxShow.gt-lg", "fxHide", "fxHide.print", "fxHide.xs", "fxHide.sm", "fxHide.md", "fxHide.lg", "fxHide.xl", "fxHide.lt-sm", "fxHide.lt-md", "fxHide.lt-lg", "fxHide.lt-xl", "fxHide.gt-xs", "fxHide.gt-sm", "fxHide.gt-md", "fxHide.gt-lg"] }, { kind: "directive", type: i1$4.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
2118
|
+
}
|
|
2119
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TopBarTitleComponent, decorators: [{
|
|
2120
|
+
type: Component,
|
|
2121
|
+
args: [{ selector: 'seam-top-bar-title', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
2122
|
+
NgIf,
|
|
2123
|
+
NgStyle,
|
|
2124
|
+
FlexLayoutModule,
|
|
2125
|
+
], template: "<h2 class=\"mb-0\" [ngStyle]=\"{ 'font-size.px': 32 }\" [ngStyle.lt-md]=\"{ 'font-size.px': 26 }\" [ngStyle.lt-sm]=\"{ 'font-size.px': 20, 'line-height': 1 }\">\n {{ titleText }}\n <br fxHide.gt-sm>\n <small *ngIf=\"subTitleText\" class=\"text-muted\">{{ subTitleText }}</small>\n</h2>\n", styles: ["seam-top-bar-title{flex:1 1 auto;display:flex;flex-direction:row;align-items:center}\n"] }]
|
|
2126
|
+
}], propDecorators: { titleText: [{
|
|
2127
|
+
type: Input
|
|
2128
|
+
}], subTitleText: [{
|
|
2129
|
+
type: Input
|
|
2130
|
+
}] } });
|
|
2131
|
+
|
|
2132
|
+
class TopBarCompactMenuBtnDetailDirective {
|
|
2133
|
+
template = inject((TemplateRef));
|
|
2134
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TopBarCompactMenuBtnDetailDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2135
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: TopBarCompactMenuBtnDetailDirective, isStandalone: true, selector: "[seamTopBarCompactMenuBtnDetail]", exportAs: ["seamTopBarCompactMenuBtnDetail"], ngImport: i0 });
|
|
2136
|
+
}
|
|
2137
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TopBarCompactMenuBtnDetailDirective, decorators: [{
|
|
2138
|
+
type: Directive,
|
|
2139
|
+
args: [{
|
|
2140
|
+
selector: '[seamTopBarCompactMenuBtnDetail]',
|
|
2141
|
+
exportAs: 'seamTopBarCompactMenuBtnDetail',
|
|
2142
|
+
}]
|
|
2143
|
+
}] });
|
|
2144
|
+
|
|
2145
|
+
class TopBarNavToggleBtnDetailDirective {
|
|
2146
|
+
template = inject((TemplateRef));
|
|
2147
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TopBarNavToggleBtnDetailDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2148
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: TopBarNavToggleBtnDetailDirective, isStandalone: true, selector: "[seamTopBarNavToggleBtnDetail]", exportAs: ["seamTopBarNavToggleBtnDetail"], ngImport: i0 });
|
|
2149
|
+
}
|
|
2150
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TopBarNavToggleBtnDetailDirective, decorators: [{
|
|
2151
|
+
type: Directive,
|
|
2152
|
+
args: [{
|
|
2153
|
+
selector: '[seamTopBarNavToggleBtnDetail]',
|
|
2154
|
+
exportAs: 'seamTopBarNavToggleBtnDetail',
|
|
2155
|
+
}]
|
|
2156
|
+
}] });
|
|
2157
|
+
|
|
2158
|
+
class TopBarItemDirective {
|
|
2159
|
+
template = inject((TemplateRef));
|
|
2160
|
+
position = 'right';
|
|
2161
|
+
set seamTopBarItem(value) {
|
|
2162
|
+
this.position = value;
|
|
2163
|
+
}
|
|
2164
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TopBarItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2165
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: TopBarItemDirective, isStandalone: true, selector: "[seamTopBarItem]", inputs: { seamTopBarItem: "seamTopBarItem" }, exportAs: ["seamTopBarItem"], ngImport: i0 });
|
|
2166
|
+
}
|
|
2167
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TopBarItemDirective, decorators: [{
|
|
2168
|
+
type: Directive,
|
|
2169
|
+
args: [{
|
|
2170
|
+
selector: '[seamTopBarItem]',
|
|
2171
|
+
exportAs: 'seamTopBarItem',
|
|
2172
|
+
}]
|
|
2173
|
+
}], propDecorators: { seamTopBarItem: [{
|
|
2174
|
+
type: Input
|
|
2175
|
+
}] } });
|
|
2176
|
+
|
|
2177
|
+
class TopBarMenuBtnDetailDirective {
|
|
2178
|
+
template = inject((TemplateRef));
|
|
2179
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TopBarMenuBtnDetailDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2180
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: TopBarMenuBtnDetailDirective, isStandalone: true, selector: "[seamTopBarMenuBtnDetail]", exportAs: ["seamTopBarMenuBtnDetail"], ngImport: i0 });
|
|
2181
|
+
}
|
|
2182
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TopBarMenuBtnDetailDirective, decorators: [{
|
|
2183
|
+
type: Directive,
|
|
2184
|
+
args: [{
|
|
2185
|
+
selector: '[seamTopBarMenuBtnDetail]',
|
|
2186
|
+
exportAs: 'seamTopBarMenuBtnDetail',
|
|
2187
|
+
}]
|
|
2188
|
+
}] });
|
|
2189
|
+
|
|
2190
|
+
class TopBarMenuDirective {
|
|
2191
|
+
menu = inject(MenuComponent, { self: true });
|
|
2192
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TopBarMenuDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2193
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: TopBarMenuDirective, isStandalone: true, selector: "seam-menu[seamTopBarMenu]", exportAs: ["seamTopBarMenu"], ngImport: i0 });
|
|
2194
|
+
}
|
|
2195
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TopBarMenuDirective, decorators: [{
|
|
2196
|
+
type: Directive,
|
|
2197
|
+
args: [{
|
|
2198
|
+
selector: 'seam-menu[seamTopBarMenu]',
|
|
2199
|
+
exportAs: 'seamTopBarMenu',
|
|
2200
|
+
}]
|
|
2201
|
+
}] });
|
|
2202
|
+
|
|
2203
|
+
/**
|
|
2204
|
+
* Top bar of an app.
|
|
2205
|
+
*
|
|
2206
|
+
* The top bar is fairly opinionated, so most parts are not intended to be
|
|
2207
|
+
* customized unless there is an input.
|
|
2208
|
+
*
|
|
2209
|
+
* > If you have to make a change and apply it externally with a css class or js
|
|
2210
|
+
* > make sure there is an issue to get the feature changed, so we don't have
|
|
2211
|
+
* > different modifications across our apps. Also, this will help make sure
|
|
2212
|
+
* > your change should have even been done.
|
|
2213
|
+
*/
|
|
2214
|
+
class TheSeamTopBarComponent {
|
|
2215
|
+
_layout;
|
|
2216
|
+
static ngAcceptInputType_hasTitle;
|
|
2217
|
+
/** @ignore */
|
|
2218
|
+
_ngUnsubscribe = new Subject();
|
|
2219
|
+
/** @ignore */
|
|
2220
|
+
faBars = faBars;
|
|
2221
|
+
/** @ignore */
|
|
2222
|
+
_topBarMenu;
|
|
2223
|
+
/** @ignore */
|
|
2224
|
+
_topBarItems;
|
|
2225
|
+
/** @ignore */
|
|
2226
|
+
_topBarMenuBtnDetailTpl;
|
|
2227
|
+
/** @ignore */
|
|
2228
|
+
_topBarCompactMenuBtnDetailTpl;
|
|
2229
|
+
/** @ignore */
|
|
2230
|
+
_topBarNavToggleBtnDetailTpl;
|
|
2231
|
+
/** Logo displayed on the top bar. */
|
|
2232
|
+
logo;
|
|
2233
|
+
/** Logo displayed on the top bar when a smaller logo is needed. */
|
|
2234
|
+
logoSm;
|
|
2235
|
+
/** External url to link to when `logo` is clicked. */
|
|
2236
|
+
logoHref;
|
|
2237
|
+
/** Link target used when `logoHref` is specified. Defaults to `"_blank"` */
|
|
2238
|
+
logoHrefTarget = '_blank';
|
|
2239
|
+
/** Route to link to when `logo` is clicked. Defaults to `/`. */
|
|
2240
|
+
logoRoute = '/';
|
|
2241
|
+
/** Determines if the title should be displayed. */
|
|
2242
|
+
hasTitle = false;
|
|
2243
|
+
/** Title text displayed when `hasTitle` is true. */
|
|
2244
|
+
titleText;
|
|
2245
|
+
/** Sub Title text displayed when `hasTitle` is true. The sub title will be less prominent. */
|
|
2246
|
+
subTitleText;
|
|
2247
|
+
/** Determines if the top bar button should be displayed. */
|
|
2248
|
+
hasTopBarMenuButton = true;
|
|
2249
|
+
/** Icon to display on mobile to activate profile dropdown. Defaults to faUserCircle. */
|
|
2250
|
+
profileIcon = faUserCircle;
|
|
2251
|
+
/** Icon to display for mobile nav toggle. Defaults to faBars. */
|
|
2252
|
+
toggleIcon = faBars;
|
|
2253
|
+
/** Display nav toggle on either left or right side of top bar. Defaults to left. */
|
|
2254
|
+
navToggleAlign = 'left';
|
|
2255
|
+
/** @ignore */
|
|
2256
|
+
_leftItems = new BehaviorSubject([]);
|
|
2257
|
+
/** Additional templates to display on left side of top bar */
|
|
2258
|
+
leftItems$ = this._leftItems.asObservable();
|
|
2259
|
+
/** @ignore */
|
|
2260
|
+
_centerItems = new BehaviorSubject([]);
|
|
2261
|
+
/** Additional templates to display in center of top bar */
|
|
2262
|
+
centerItems$ = this._centerItems.asObservable();
|
|
2263
|
+
/** @ignore */
|
|
2264
|
+
_rightItems = new BehaviorSubject([]);
|
|
2265
|
+
/** Additional templates to display on right side of top bar */
|
|
2266
|
+
rightItems$ = this._rightItems.asObservable();
|
|
2267
|
+
/** @ignore */
|
|
2268
|
+
isMobile$;
|
|
2269
|
+
constructor(_layout) {
|
|
2270
|
+
this._layout = _layout;
|
|
2271
|
+
this.isMobile$ = this._layout.isMobile$;
|
|
2272
|
+
}
|
|
2273
|
+
/** @ignore */
|
|
2274
|
+
ngOnDestroy() {
|
|
2275
|
+
this._ngUnsubscribe.next(undefined);
|
|
2276
|
+
this._ngUnsubscribe.complete();
|
|
2277
|
+
}
|
|
2278
|
+
/** @ignore */
|
|
2279
|
+
ngAfterContentInit() {
|
|
2280
|
+
if (this._topBarItems) {
|
|
2281
|
+
this._topBarItems.changes.pipe(startWith(undefined), map(() => {
|
|
2282
|
+
const items = this._topBarItems?.toArray() || [];
|
|
2283
|
+
const left = items.filter(i => i.position === 'left');
|
|
2284
|
+
const right = items.filter(i => i.position === 'right');
|
|
2285
|
+
const center = items.filter(i => i.position === 'center');
|
|
2286
|
+
this._leftItems.next(left);
|
|
2287
|
+
this._rightItems.next(right);
|
|
2288
|
+
this._centerItems.next(center);
|
|
2289
|
+
}), shareReplay({ bufferSize: 1, refCount: true }), takeUntil(this._ngUnsubscribe)).subscribe();
|
|
2290
|
+
}
|
|
2291
|
+
}
|
|
2292
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamTopBarComponent, deps: [{ token: i1$3.TheSeamLayoutService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2293
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: TheSeamTopBarComponent, isStandalone: true, selector: "seam-top-bar", inputs: { logo: "logo", logoSm: "logoSm", logoHref: "logoHref", logoHrefTarget: "logoHrefTarget", logoRoute: "logoRoute", hasTitle: "hasTitle", titleText: "titleText", subTitleText: "subTitleText", hasTopBarMenuButton: "hasTopBarMenuButton", profileIcon: "profileIcon", toggleIcon: "toggleIcon", navToggleAlign: "navToggleAlign" }, queries: [{ propertyName: "_topBarMenu", first: true, predicate: TopBarMenuDirective, descendants: true, static: true }, { propertyName: "_topBarMenuBtnDetailTpl", first: true, predicate: TopBarMenuBtnDetailDirective, descendants: true }, { propertyName: "_topBarCompactMenuBtnDetailTpl", first: true, predicate: TopBarCompactMenuBtnDetailDirective, descendants: true }, { propertyName: "_topBarNavToggleBtnDetailTpl", first: true, predicate: TopBarNavToggleBtnDetailDirective, descendants: true }, { propertyName: "_topBarItems", predicate: TopBarItemDirective }], exportAs: ["seamTopBar"], ngImport: i0, template: "<div class=\"top-bar--left d-flex\">\n <!-- Nav Toggle -->\n <ng-container *ngIf=\"navToggleAlign === 'left'\">\n <ng-container *ngTemplateOutlet=\"navToggle\"></ng-container>\n </ng-container>\n\n <!-- Logo -->\n <div class=\"top-bar--logo d-flex flex-column justify-content-center\" *ngIf=\"logoHref; else useLogoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\">\n <a [href]=\"logoHref\" [target]=\"logoHrefTarget\">\n <ng-container *ngTemplateOutlet=\"logoTpl\"></ng-container>\n </a>\n </div>\n\n <ng-template #useLogoRoute>\n <div class=\"top-bar--logo d-flex flex-column justify-content-center\" [routerLink]=\"logoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\">\n <ng-container *ngTemplateOutlet=\"logoTpl\"></ng-container>\n </div>\n </ng-template>\n\n <ng-template #logoTpl>\n <div>\n <img *ngIf=\"logo\" [src]=\"logo\" [src.lt-md]=\"logoSm ? logoSm : logo\" alt=\"Logo\">\n </div>\n </ng-template>\n\n <!-- Title -->\n <div class=\"d-flex flex-column\" *ngIf=\"hasTitle\">\n <seam-top-bar-title\n [titleText]=\"titleText\"\n [subTitleText]=\"subTitleText\"\n [class.ml-2]=\"isMobile$ | async\">\n </seam-top-bar-title>\n </div>\n\n <!-- Items -->\n <div class=\"top-bar-items top-bar-items--left mr-2\">\n <ng-container *ngFor=\"let item of leftItems$ | async\">\n <ng-template [ngTemplateOutlet]=\"item.template\"></ng-template>\n </ng-container>\n </div>\n</div>\n\n<div class=\"top-bar--center\">\n <!-- Items -->\n <div class=\"top-bar-items top-bar-items--center mr-2\">\n <ng-container *ngFor=\"let item of centerItems$ | async\">\n <ng-template [ngTemplateOutlet]=\"item.template\"></ng-template>\n </ng-container>\n </div>\n</div>\n\n<div class=\"top-bar--right d-flex\">\n <!-- Items -->\n <div class=\"top-bar-items top-bar-items--right mr-2\">\n <ng-container *ngFor=\"let item of rightItems$ | async\">\n <ng-template [ngTemplateOutlet]=\"item.template\"></ng-template>\n </ng-container>\n </div>\n\n <!-- Menu -->\n <button\n *ngIf=\"hasTopBarMenuButton\"\n seamTopBarMenuButton\n [seamMenuToggle]=\"_topBarMenu?.menu\"\n [detailTpl]=\"_topBarMenuBtnDetailTpl?.template\"\n [compactDetailTpl]=\"_topBarCompactMenuBtnDetailTpl?.template\"\n [compact]=\"isMobile$ | async\"\n [profileIcon]=\"profileIcon\">\n </button>\n\n <ng-container *ngIf=\"navToggleAlign === 'right'\">\n <ng-container *ngTemplateOutlet=\"navToggle\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #navToggle>\n <div class=\"d-flex flex-column justify-content-center pr-2\" *ngIf=\"isMobile$ | async\">\n <ng-container *ngIf=\"_topBarNavToggleBtnDetailTpl; else iconBtn\">\n <button seamButton seamBaseLayoutNavToggle>\n <ng-template [ngTemplateOutlet]=\"_topBarNavToggleBtnDetailTpl?.template || null\"></ng-template>\n </button>\n </ng-container>\n <ng-template #iconBtn>\n <button seamBaseLayoutNavToggle seamIconBtn [icon]=\"toggleIcon\" iconType=\"borderless-styled-square\"></button>\n </ng-template>\n </div>\n</ng-template>\n\n", styles: ["seam-top-bar{display:flex;flex:1 1 100%;flex-direction:row;background:#fff;margin:0;padding:8px;border-radius:0;box-shadow:none}.top-bar--logo{flex:0 0 auto;overflow:hidden;cursor:pointer}.top-bar--logo img{height:auto;max-height:60px;width:auto;max-width:200px}.top-bar--logo.top-bar--logo-mobile img{height:auto;max-height:40px;width:auto;max-width:150px}.top-bar--left{flex-grow:1}.top-bar-items{display:flex;align-items:center}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: TheSeamButtonsModule }, { kind: "component", type: i3.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }, { kind: "ngmodule", type: TheSeamIconModule }, { kind: "component", type: i2.IconBtnComponent, selector: "button[seamIconBtn]", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "iconType", "btnTheme", "badgeTheme", "badgeText", "btnSize", "type", "role"] }, { kind: "ngmodule", type: TheSeamMenuModule }, { kind: "directive", type: i3$1.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuToggle", "menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "ngmodule", type: TheSeamBaseLayoutModule }, { kind: "directive", type: TheSeamBaseLayoutNavToggleDirective, selector: "button[seamBaseLayoutNavToggle]", inputs: ["type", "aria-label"], exportAs: ["seamBaseLayoutNavToggle"] }, { kind: "ngmodule", type: TheSeamLayoutModule }, { kind: "directive", type: i1$4.DefaultImgSrcDirective, selector: " img[src.xs], img[src.sm], img[src.md], img[src.lg], img[src.xl], img[src.lt-sm], img[src.lt-md], img[src.lt-lg], img[src.lt-xl], img[src.gt-xs], img[src.gt-sm], img[src.gt-md], img[src.gt-lg]", inputs: ["src.xs", "src.sm", "src.md", "src.lg", "src.xl", "src.lt-sm", "src.lt-md", "src.lt-lg", "src.lt-xl", "src.gt-xs", "src.gt-sm", "src.gt-md", "src.gt-lg"] }, { kind: "component", type: TopBarTitleComponent, selector: "seam-top-bar-title", inputs: ["titleText", "subTitleText"] }, { kind: "component", type: TopBarMenuButtonComponent, selector: "button[seamTopBarMenuButton]", inputs: ["disabled", "detailTpl", "compactDetailTpl", "compact", "profileIcon"], exportAs: ["seamButton"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
2294
|
+
}
|
|
2295
|
+
__decorate([
|
|
2296
|
+
InputBoolean()
|
|
2297
|
+
], TheSeamTopBarComponent.prototype, "hasTitle", void 0);
|
|
2298
|
+
__decorate([
|
|
2299
|
+
InputBoolean()
|
|
2300
|
+
], TheSeamTopBarComponent.prototype, "hasTopBarMenuButton", void 0);
|
|
2301
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamTopBarComponent, decorators: [{
|
|
2302
|
+
type: Component,
|
|
2303
|
+
args: [{ selector: 'seam-top-bar', encapsulation: ViewEncapsulation.None, exportAs: 'seamTopBar', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
2304
|
+
NgIf,
|
|
2305
|
+
NgFor,
|
|
2306
|
+
NgTemplateOutlet,
|
|
2307
|
+
AsyncPipe,
|
|
2308
|
+
RouterModule,
|
|
2309
|
+
TheSeamButtonsModule,
|
|
2310
|
+
TheSeamIconModule,
|
|
2311
|
+
TheSeamMenuModule,
|
|
2312
|
+
TheSeamBaseLayoutModule,
|
|
2313
|
+
TheSeamLayoutModule,
|
|
2314
|
+
TopBarTitleComponent,
|
|
2315
|
+
TopBarMenuButtonComponent,
|
|
2316
|
+
// TheSeamBaseLayoutNavToggleDirective,
|
|
2317
|
+
], template: "<div class=\"top-bar--left d-flex\">\n <!-- Nav Toggle -->\n <ng-container *ngIf=\"navToggleAlign === 'left'\">\n <ng-container *ngTemplateOutlet=\"navToggle\"></ng-container>\n </ng-container>\n\n <!-- Logo -->\n <div class=\"top-bar--logo d-flex flex-column justify-content-center\" *ngIf=\"logoHref; else useLogoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\">\n <a [href]=\"logoHref\" [target]=\"logoHrefTarget\">\n <ng-container *ngTemplateOutlet=\"logoTpl\"></ng-container>\n </a>\n </div>\n\n <ng-template #useLogoRoute>\n <div class=\"top-bar--logo d-flex flex-column justify-content-center\" [routerLink]=\"logoRoute\"\n [class.top-bar--logo-mobile]=\"isMobile$ | async\">\n <ng-container *ngTemplateOutlet=\"logoTpl\"></ng-container>\n </div>\n </ng-template>\n\n <ng-template #logoTpl>\n <div>\n <img *ngIf=\"logo\" [src]=\"logo\" [src.lt-md]=\"logoSm ? logoSm : logo\" alt=\"Logo\">\n </div>\n </ng-template>\n\n <!-- Title -->\n <div class=\"d-flex flex-column\" *ngIf=\"hasTitle\">\n <seam-top-bar-title\n [titleText]=\"titleText\"\n [subTitleText]=\"subTitleText\"\n [class.ml-2]=\"isMobile$ | async\">\n </seam-top-bar-title>\n </div>\n\n <!-- Items -->\n <div class=\"top-bar-items top-bar-items--left mr-2\">\n <ng-container *ngFor=\"let item of leftItems$ | async\">\n <ng-template [ngTemplateOutlet]=\"item.template\"></ng-template>\n </ng-container>\n </div>\n</div>\n\n<div class=\"top-bar--center\">\n <!-- Items -->\n <div class=\"top-bar-items top-bar-items--center mr-2\">\n <ng-container *ngFor=\"let item of centerItems$ | async\">\n <ng-template [ngTemplateOutlet]=\"item.template\"></ng-template>\n </ng-container>\n </div>\n</div>\n\n<div class=\"top-bar--right d-flex\">\n <!-- Items -->\n <div class=\"top-bar-items top-bar-items--right mr-2\">\n <ng-container *ngFor=\"let item of rightItems$ | async\">\n <ng-template [ngTemplateOutlet]=\"item.template\"></ng-template>\n </ng-container>\n </div>\n\n <!-- Menu -->\n <button\n *ngIf=\"hasTopBarMenuButton\"\n seamTopBarMenuButton\n [seamMenuToggle]=\"_topBarMenu?.menu\"\n [detailTpl]=\"_topBarMenuBtnDetailTpl?.template\"\n [compactDetailTpl]=\"_topBarCompactMenuBtnDetailTpl?.template\"\n [compact]=\"isMobile$ | async\"\n [profileIcon]=\"profileIcon\">\n </button>\n\n <ng-container *ngIf=\"navToggleAlign === 'right'\">\n <ng-container *ngTemplateOutlet=\"navToggle\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #navToggle>\n <div class=\"d-flex flex-column justify-content-center pr-2\" *ngIf=\"isMobile$ | async\">\n <ng-container *ngIf=\"_topBarNavToggleBtnDetailTpl; else iconBtn\">\n <button seamButton seamBaseLayoutNavToggle>\n <ng-template [ngTemplateOutlet]=\"_topBarNavToggleBtnDetailTpl?.template || null\"></ng-template>\n </button>\n </ng-container>\n <ng-template #iconBtn>\n <button seamBaseLayoutNavToggle seamIconBtn [icon]=\"toggleIcon\" iconType=\"borderless-styled-square\"></button>\n </ng-template>\n </div>\n</ng-template>\n\n", styles: ["seam-top-bar{display:flex;flex:1 1 100%;flex-direction:row;background:#fff;margin:0;padding:8px;border-radius:0;box-shadow:none}.top-bar--logo{flex:0 0 auto;overflow:hidden;cursor:pointer}.top-bar--logo img{height:auto;max-height:60px;width:auto;max-width:200px}.top-bar--logo.top-bar--logo-mobile img{height:auto;max-height:40px;width:auto;max-width:150px}.top-bar--left{flex-grow:1}.top-bar-items{display:flex;align-items:center}\n"] }]
|
|
2318
|
+
}], ctorParameters: () => [{ type: i1$3.TheSeamLayoutService }], propDecorators: { _topBarMenu: [{
|
|
2319
|
+
type: ContentChild,
|
|
2320
|
+
args: [TopBarMenuDirective, { static: true }]
|
|
2321
|
+
}], _topBarItems: [{
|
|
2322
|
+
type: ContentChildren,
|
|
2323
|
+
args: [TopBarItemDirective]
|
|
2324
|
+
}], _topBarMenuBtnDetailTpl: [{
|
|
2325
|
+
type: ContentChild,
|
|
2326
|
+
args: [TopBarMenuBtnDetailDirective]
|
|
2327
|
+
}], _topBarCompactMenuBtnDetailTpl: [{
|
|
2328
|
+
type: ContentChild,
|
|
2329
|
+
args: [TopBarCompactMenuBtnDetailDirective]
|
|
2330
|
+
}], _topBarNavToggleBtnDetailTpl: [{
|
|
2331
|
+
type: ContentChild,
|
|
2332
|
+
args: [TopBarNavToggleBtnDetailDirective]
|
|
2333
|
+
}], logo: [{
|
|
2334
|
+
type: Input
|
|
2335
|
+
}], logoSm: [{
|
|
2336
|
+
type: Input
|
|
2337
|
+
}], logoHref: [{
|
|
2338
|
+
type: Input
|
|
2339
|
+
}], logoHrefTarget: [{
|
|
2340
|
+
type: Input
|
|
2341
|
+
}], logoRoute: [{
|
|
2342
|
+
type: Input
|
|
2343
|
+
}], hasTitle: [{
|
|
2344
|
+
type: Input
|
|
2345
|
+
}], titleText: [{
|
|
2346
|
+
type: Input
|
|
2347
|
+
}], subTitleText: [{
|
|
2348
|
+
type: Input
|
|
2349
|
+
}], hasTopBarMenuButton: [{
|
|
2350
|
+
type: Input
|
|
2351
|
+
}], profileIcon: [{
|
|
2352
|
+
type: Input
|
|
2353
|
+
}], toggleIcon: [{
|
|
2354
|
+
type: Input
|
|
2355
|
+
}], navToggleAlign: [{
|
|
2356
|
+
type: Input
|
|
2357
|
+
}] } });
|
|
2358
|
+
|
|
2359
|
+
class TheSeamTopBarModule {
|
|
2360
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamTopBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
2361
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.0", ngImport: i0, type: TheSeamTopBarModule, imports: [TheSeamTopBarComponent,
|
|
2362
|
+
TopBarTitleComponent,
|
|
2363
|
+
TopBarMenuButtonComponent,
|
|
2364
|
+
TopBarMenuDirective,
|
|
2365
|
+
TopBarItemDirective,
|
|
2366
|
+
TopBarMenuBtnDetailDirective,
|
|
2367
|
+
TopBarCompactMenuBtnDetailDirective,
|
|
2368
|
+
TopBarNavToggleBtnDetailDirective], exports: [TheSeamTopBarComponent,
|
|
2369
|
+
TopBarMenuButtonComponent,
|
|
2370
|
+
TopBarMenuDirective,
|
|
2371
|
+
TopBarItemDirective,
|
|
2372
|
+
TopBarMenuBtnDetailDirective,
|
|
2373
|
+
TopBarCompactMenuBtnDetailDirective,
|
|
2374
|
+
TopBarNavToggleBtnDetailDirective] });
|
|
2375
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamTopBarModule, imports: [TheSeamTopBarComponent,
|
|
2376
|
+
TopBarTitleComponent,
|
|
2377
|
+
TopBarMenuButtonComponent] });
|
|
2378
|
+
}
|
|
2379
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamTopBarModule, decorators: [{
|
|
2380
|
+
type: NgModule,
|
|
2381
|
+
args: [{
|
|
2382
|
+
imports: [
|
|
2383
|
+
TheSeamTopBarComponent,
|
|
2384
|
+
TopBarTitleComponent,
|
|
2385
|
+
TopBarMenuButtonComponent,
|
|
2386
|
+
TopBarMenuDirective,
|
|
2387
|
+
TopBarItemDirective,
|
|
2388
|
+
TopBarMenuBtnDetailDirective,
|
|
2389
|
+
TopBarCompactMenuBtnDetailDirective,
|
|
2390
|
+
TopBarNavToggleBtnDetailDirective,
|
|
2391
|
+
],
|
|
2392
|
+
exports: [
|
|
2393
|
+
TheSeamTopBarComponent,
|
|
2394
|
+
TopBarMenuButtonComponent,
|
|
2395
|
+
TopBarMenuDirective,
|
|
2396
|
+
TopBarItemDirective,
|
|
2397
|
+
TopBarMenuBtnDetailDirective,
|
|
2398
|
+
TopBarCompactMenuBtnDetailDirective,
|
|
2399
|
+
TopBarNavToggleBtnDetailDirective,
|
|
2400
|
+
],
|
|
2401
|
+
}]
|
|
2402
|
+
}] });
|
|
2403
|
+
|
|
2404
|
+
const fader = trigger('routeAnimations', [
|
|
2405
|
+
transition('* <=> *', [
|
|
2406
|
+
// Set a default style for enter and leave
|
|
2407
|
+
query(':enter, :leave', [
|
|
2408
|
+
style({
|
|
2409
|
+
position: 'absolute',
|
|
2410
|
+
left: 0,
|
|
2411
|
+
width: '100%',
|
|
2412
|
+
opacity: 0,
|
|
2413
|
+
transform: 'scale(0) translateY(100%)',
|
|
2414
|
+
}),
|
|
2415
|
+
], { optional: true }),
|
|
2416
|
+
// Animate the new page in
|
|
2417
|
+
query(':enter', [
|
|
2418
|
+
animate('600ms ease', style({ opacity: 1, transform: 'scale(1) translateY(0)' })),
|
|
2419
|
+
], { optional: true })
|
|
2420
|
+
]),
|
|
2421
|
+
]);
|
|
2422
|
+
// function slideTo(direction) {
|
|
2423
|
+
// return [
|
|
2424
|
+
// query(':enter, :leave', [
|
|
2425
|
+
// style({
|
|
2426
|
+
// position: 'absolute',
|
|
2427
|
+
// top: 0,
|
|
2428
|
+
// [direction]: 0,
|
|
2429
|
+
// width: '100%'
|
|
2430
|
+
// })
|
|
2431
|
+
// ], { optional: true }),
|
|
2432
|
+
// query(':enter', [
|
|
2433
|
+
// style({ [direction]: '-100%'})
|
|
2434
|
+
// ], { optional: true }),
|
|
2435
|
+
// group([
|
|
2436
|
+
// query(':leave', [
|
|
2437
|
+
// animate('1000ms ease', style({ [direction]: '100%'}))
|
|
2438
|
+
// ], { optional: true }),
|
|
2439
|
+
// query(':enter', [
|
|
2440
|
+
// animate('1000ms ease', style({ [direction]: '0%'}))
|
|
2441
|
+
// ], { optional: true })
|
|
2442
|
+
// ]),
|
|
2443
|
+
// // Normalize the page style... Might not be necessary
|
|
2444
|
+
// // Required only if you have child animations on the page
|
|
2445
|
+
// query(':leave', animateChild(), { optional: true }),
|
|
2446
|
+
// query(':enter', animateChild(), { optional: true }),
|
|
2447
|
+
// ]
|
|
2448
|
+
// }
|
|
2449
|
+
// TODO: Refactor the slider animation, because AOT or ng-packagr, I haven't
|
|
2450
|
+
// looked into what exactly is preventing it, doesn't allow the function call.
|
|
2451
|
+
// export const slider =
|
|
2452
|
+
// trigger('routeAnimations', [
|
|
2453
|
+
// transition('* => isLeft', slideTo('left') ),
|
|
2454
|
+
// transition('* => isRight', slideTo('right') ),
|
|
2455
|
+
// transition('isRight => *', slideTo('left') ),
|
|
2456
|
+
// transition('isLeft => *', slideTo('right') )
|
|
2457
|
+
// ])
|
|
2458
|
+
// export const contentLeave =
|
|
2459
|
+
// trigger('contentLeave', [
|
|
2460
|
+
// transition(':leave', [
|
|
2461
|
+
// ])
|
|
2462
|
+
// ])
|
|
2463
|
+
const slider = trigger('routeAnimations', [
|
|
2464
|
+
transition('* => isLeft', [
|
|
2465
|
+
query('.router-container :enter, .router-container :leave', [
|
|
2466
|
+
style({
|
|
2467
|
+
position: 'absolute',
|
|
2468
|
+
top: 0,
|
|
2469
|
+
left: 0,
|
|
2470
|
+
width: '100%'
|
|
2471
|
+
})
|
|
2472
|
+
], { optional: true }),
|
|
2473
|
+
query('.router-container :enter', [
|
|
2474
|
+
style({ left: '-100%' })
|
|
2475
|
+
], { optional: true }),
|
|
2476
|
+
query('.hierarchy-router-outlet--content', [
|
|
2477
|
+
style({ left: '0%', position: 'absolute' })
|
|
2478
|
+
], { optional: true }),
|
|
2479
|
+
group([
|
|
2480
|
+
query('.router-container :leave', [
|
|
2481
|
+
animate('1000ms ease', style({ left: '100%' }))
|
|
2482
|
+
], { optional: true }),
|
|
2483
|
+
query('.router-container :enter', [
|
|
2484
|
+
animate('1000ms ease', style({ left: '0%' }))
|
|
2485
|
+
], { optional: true }),
|
|
2486
|
+
query('.hierarchy-router-outlet--content', [
|
|
2487
|
+
animate('1000ms ease', style({ left: '-100%' }))
|
|
2488
|
+
], { optional: true }),
|
|
2489
|
+
]),
|
|
2490
|
+
// Normalize the page style... Might not be necessary
|
|
2491
|
+
// Required only if you have child animations on the page
|
|
2492
|
+
query('.router-container :leave', animateChild(), { optional: true }),
|
|
2493
|
+
query('.router-container :enter', animateChild(), { optional: true }),
|
|
2494
|
+
]),
|
|
2495
|
+
transition('* => isRight', [
|
|
2496
|
+
query('.router-container :enter, .router-container :leave', [
|
|
2497
|
+
style({
|
|
2498
|
+
position: 'absolute',
|
|
2499
|
+
top: 0,
|
|
2500
|
+
right: 0,
|
|
2501
|
+
width: '100%'
|
|
2502
|
+
})
|
|
2503
|
+
], { optional: true }),
|
|
2504
|
+
query('.router-container :enter', [
|
|
2505
|
+
style({ right: '-100%' })
|
|
2506
|
+
], { optional: true }),
|
|
2507
|
+
query('.hierarchy-router-outlet--content', [
|
|
2508
|
+
style({ left: '0%', position: 'absolute' })
|
|
2509
|
+
], { optional: true }),
|
|
2510
|
+
group([
|
|
2511
|
+
query('.router-container :leave', [
|
|
2512
|
+
animate('1000ms ease', style({ right: '100%' }))
|
|
2513
|
+
], { optional: true }),
|
|
2514
|
+
query('.router-container :enter', [
|
|
2515
|
+
animate('1000ms ease', style({ right: '0%' }))
|
|
2516
|
+
], { optional: true }),
|
|
2517
|
+
query('.hierarchy-router-outlet--content', [
|
|
2518
|
+
animate('1000ms ease', style({ left: '-100%' }))
|
|
2519
|
+
], { optional: true }),
|
|
2520
|
+
]),
|
|
2521
|
+
// Normalize the page style... Might not be necessary
|
|
2522
|
+
// Required only if you have child animations on the page
|
|
2523
|
+
query('.router-container :leave', animateChild(), { optional: true }),
|
|
2524
|
+
query('.router-container :enter', animateChild(), { optional: true }),
|
|
2525
|
+
]),
|
|
2526
|
+
transition('isRight => *', [
|
|
2527
|
+
query('.router-container :enter, .router-container :leave', [
|
|
2528
|
+
style({
|
|
2529
|
+
position: 'absolute',
|
|
2530
|
+
top: 0,
|
|
2531
|
+
left: 0,
|
|
2532
|
+
width: '100%'
|
|
2533
|
+
})
|
|
2534
|
+
], { optional: true }),
|
|
2535
|
+
query('.router-container :enter', [
|
|
2536
|
+
style({ left: '-100%' })
|
|
2537
|
+
], { optional: true }),
|
|
2538
|
+
query('.hierarchy-router-outlet--content', [
|
|
2539
|
+
style({ left: '0%', position: 'absolute' })
|
|
2540
|
+
], { optional: true }),
|
|
2541
|
+
group([
|
|
2542
|
+
query('.router-container :leave', [
|
|
2543
|
+
animate('1000ms ease', style({ left: '100%' }))
|
|
2544
|
+
], { optional: true }),
|
|
2545
|
+
query('.router-container :enter', [
|
|
2546
|
+
animate('1000ms ease', style({ left: '0%' }))
|
|
2547
|
+
], { optional: true }),
|
|
2548
|
+
query('.hierarchy-router-outlet--content', [
|
|
2549
|
+
animate('1000ms ease', style({ left: '-100%' }))
|
|
2550
|
+
], { optional: true }),
|
|
2551
|
+
]),
|
|
2552
|
+
// Normalize the page style... Might not be necessary
|
|
2553
|
+
// Required only if you have child animations on the page
|
|
2554
|
+
query('.router-container :leave', animateChild(), { optional: true }),
|
|
2555
|
+
query('.router-container :enter', animateChild(), { optional: true }),
|
|
2556
|
+
]),
|
|
2557
|
+
transition('isLeft => *', [
|
|
2558
|
+
query('.router-container :enter, .router-container :leave', [
|
|
2559
|
+
style({
|
|
2560
|
+
position: 'absolute',
|
|
2561
|
+
top: 0,
|
|
2562
|
+
right: 0,
|
|
2563
|
+
width: '100%'
|
|
2564
|
+
})
|
|
2565
|
+
], { optional: true }),
|
|
2566
|
+
query('.router-container :enter', [
|
|
2567
|
+
style({ right: '-100%' })
|
|
2568
|
+
], { optional: true }),
|
|
2569
|
+
group([
|
|
2570
|
+
query('.router-container :leave', [
|
|
2571
|
+
animate('1000ms ease', style({ right: '100%' }))
|
|
2572
|
+
], { optional: true }),
|
|
2573
|
+
query('.router-container :enter', [
|
|
2574
|
+
animate('1000ms ease', style({ right: '0%' }))
|
|
2575
|
+
], { optional: true })
|
|
2576
|
+
]),
|
|
2577
|
+
// Normalize the page style... Might not be necessary
|
|
2578
|
+
// Required only if you have child animations on the page
|
|
2579
|
+
query('.router-container :leave', animateChild(), { optional: true }),
|
|
2580
|
+
query('.router-container :enter', animateChild(), { optional: true }),
|
|
2581
|
+
])
|
|
2582
|
+
]);
|
|
2583
|
+
const transformer = trigger('routeAnimations', [
|
|
2584
|
+
transition('* => isLeft', transformTo({ x: -100, y: -100, rotate: -720 })),
|
|
2585
|
+
transition('* => isRight', transformTo({ x: 100, y: -100, rotate: 90 })),
|
|
2586
|
+
transition('isRight => *', transformTo({ x: -100, y: -100, rotate: 360 })),
|
|
2587
|
+
transition('isLeft => *', transformTo({ x: 100, y: -100, rotate: -360 }))
|
|
2588
|
+
]);
|
|
2589
|
+
function transformTo({ x = 100, y = 0, rotate = 0 }) {
|
|
2590
|
+
const optional = { optional: true };
|
|
2591
|
+
return [
|
|
2592
|
+
query(':enter, :leave', [
|
|
2593
|
+
style({
|
|
2594
|
+
position: 'absolute',
|
|
2595
|
+
top: 0,
|
|
2596
|
+
left: 0,
|
|
2597
|
+
width: '100%'
|
|
2598
|
+
})
|
|
2599
|
+
], optional),
|
|
2600
|
+
query(':enter', [
|
|
2601
|
+
style({ transform: `translate(${x}%, ${y}%) rotate(${rotate}deg)` })
|
|
2602
|
+
], { optional: true }),
|
|
2603
|
+
group([
|
|
2604
|
+
query(':leave', [
|
|
2605
|
+
animate('600ms ease-out', style({ transform: `translate(${x}%, ${y}%) rotate(${rotate}deg)` }))
|
|
2606
|
+
], optional),
|
|
2607
|
+
query(':enter', [
|
|
2608
|
+
animate('600ms ease-out', style({ transform: `translate(0, 0) rotate(0)` }))
|
|
2609
|
+
], { optional: true })
|
|
2610
|
+
]),
|
|
2611
|
+
];
|
|
2612
|
+
}
|
|
2613
|
+
const stepper = trigger('routeAnimations', [
|
|
2614
|
+
transition('* <=> *', [
|
|
2615
|
+
query(':enter, :leave', [
|
|
2616
|
+
style({
|
|
2617
|
+
position: 'absolute',
|
|
2618
|
+
left: 0,
|
|
2619
|
+
width: '100%',
|
|
2620
|
+
}),
|
|
2621
|
+
], { optional: true }),
|
|
2622
|
+
group([
|
|
2623
|
+
query(':enter', [
|
|
2624
|
+
animate('2000ms ease', keyframes([
|
|
2625
|
+
style({ transform: 'scale(0) translateX(100%)', offset: 0 }),
|
|
2626
|
+
style({ transform: 'scale(0.5) translateX(25%)', offset: 0.3 }),
|
|
2627
|
+
style({ transform: 'scale(1) translateX(0%)', offset: 1 }),
|
|
2628
|
+
])),
|
|
2629
|
+
], { optional: true }),
|
|
2630
|
+
query(':leave', [
|
|
2631
|
+
animate('2000ms ease', keyframes([
|
|
2632
|
+
style({ transform: 'scale(1)', offset: 0 }),
|
|
2633
|
+
style({ transform: 'scale(0.5) translateX(-25%) rotate(0)', offset: 0.35 }),
|
|
2634
|
+
style({ opacity: 0, transform: 'translateX(-50%) rotate(-180deg) scale(6)', offset: 1 }),
|
|
2635
|
+
])),
|
|
2636
|
+
], { optional: true })
|
|
2637
|
+
]),
|
|
2638
|
+
])
|
|
2639
|
+
]);
|
|
2640
|
+
const sideToSide = trigger('routeAnimations', [
|
|
2641
|
+
transition('* => *', [
|
|
2642
|
+
style({
|
|
2643
|
+
position: 'fixed',
|
|
2644
|
+
width: '100%',
|
|
2645
|
+
transform: 'translateX(-100%)'
|
|
2646
|
+
}),
|
|
2647
|
+
animate('1000ms ease', style({ transform: 'translateX(0%)' }))
|
|
2648
|
+
]),
|
|
2649
|
+
transition(':leave', [
|
|
2650
|
+
style({
|
|
2651
|
+
position: 'fixed',
|
|
2652
|
+
width: '100%',
|
|
2653
|
+
transform: 'translateX(0%)'
|
|
2654
|
+
}),
|
|
2655
|
+
animate('1000ms ease', style({ transform: 'translateX(-100%)' }))
|
|
2656
|
+
])
|
|
2657
|
+
]);
|
|
2658
|
+
|
|
2659
|
+
function routeChanges(router) {
|
|
2660
|
+
return router.events.pipe(filter(event => event instanceof NavigationStart || event instanceof NavigationEnd), distinctUntilChanged((x, y) => x.id === y.id), map(event => ({ url: event.url })));
|
|
2661
|
+
}
|
|
2662
|
+
//
|
|
2663
|
+
// TODO: Animation improvement: Try adding a full component animation that
|
|
2664
|
+
// queries the <ng-content> and <router-outlet> blocks. When the outlet
|
|
2665
|
+
// activates, set the animation state to a transition that moves both blocks
|
|
2666
|
+
// together.
|
|
2667
|
+
//
|
|
2668
|
+
let _uid = 0;
|
|
2669
|
+
class HierarchyRouterOutletComponent {
|
|
2670
|
+
_route;
|
|
2671
|
+
_router;
|
|
2672
|
+
_uid = _uid++;
|
|
2673
|
+
_ngUnsubscribe = new Subject();
|
|
2674
|
+
animState = 'isRight';
|
|
2675
|
+
// animState = ''
|
|
2676
|
+
outletActive = false;
|
|
2677
|
+
ngContentVisible = true;
|
|
2678
|
+
constructor(_route, _router) {
|
|
2679
|
+
this._route = _route;
|
|
2680
|
+
this._router = _router;
|
|
2681
|
+
this._router.events.pipe(filter(event => event instanceof NavigationEnd),
|
|
2682
|
+
// tap(v => console.log(`_hasChildren()[${this._uid}]`, this._hasChildren())),
|
|
2683
|
+
takeUntil(this._ngUnsubscribe))
|
|
2684
|
+
.subscribe();
|
|
2685
|
+
// routeChanges(this._router)
|
|
2686
|
+
// .pipe(
|
|
2687
|
+
// untilDestroyed(this),
|
|
2688
|
+
// tap(() => {
|
|
2689
|
+
// // if (this._hasChildren()) {
|
|
2690
|
+
// // this.animState = 'isLeft'
|
|
2691
|
+
// // } else {
|
|
2692
|
+
// // this.animState = 'isRight'
|
|
2693
|
+
// // }
|
|
2694
|
+
// })
|
|
2695
|
+
// )
|
|
2696
|
+
// .subscribe(v => console.log(`routeChanges[${this._uid}]`, v))
|
|
2697
|
+
}
|
|
2698
|
+
ngOnDestroy() {
|
|
2699
|
+
this._ngUnsubscribe.next(undefined);
|
|
2700
|
+
this._ngUnsubscribe.complete();
|
|
2701
|
+
}
|
|
2702
|
+
_hasChildren() {
|
|
2703
|
+
const count = this._route.pathFromRoot.length - 1;
|
|
2704
|
+
let countFull = 0;
|
|
2705
|
+
if (this._router.parseUrl(this._router.url).root.children.primary) {
|
|
2706
|
+
countFull = this._router.parseUrl(this._router.url).root.children.primary.segments.length;
|
|
2707
|
+
}
|
|
2708
|
+
// console.log(`_hasChildren[${this._uid}]`, { count, countFull })
|
|
2709
|
+
return countFull > count;
|
|
2710
|
+
}
|
|
2711
|
+
prepareRoute(outlet) {
|
|
2712
|
+
// console.log(`outlet[${this._uid}]`, outlet, this.animState, this._hasChildren(), this.outletActive)
|
|
2713
|
+
if (outlet.isActivated) {
|
|
2714
|
+
// console.log(outlet.isActivated)
|
|
2715
|
+
// console.log(outlet.component)
|
|
2716
|
+
// console.log(this.animState)
|
|
2717
|
+
return this.animState;
|
|
2718
|
+
}
|
|
2719
|
+
else {
|
|
2720
|
+
return undefined;
|
|
2721
|
+
}
|
|
2722
|
+
// console.log(`prepareRoute[${this._uid}]`, this.animState, this._hasChildren())
|
|
2723
|
+
// console.log('activatedRouteData', outlet && outlet.activatedRouteData)
|
|
2724
|
+
// if (outlet && outlet.isActivated) {
|
|
2725
|
+
// console.log('activatedRoute', outlet.activatedRoute && outlet.activatedRoute.snapshot.url)
|
|
2726
|
+
// }
|
|
2727
|
+
// return outlet && outlet.activatedRouteData && outlet.activatedRouteData['animation']
|
|
2728
|
+
// console.log('')
|
|
2729
|
+
// return this.animState
|
|
2730
|
+
}
|
|
2731
|
+
outletActivate(event) {
|
|
2732
|
+
// console.log(`outletActivate[${this._uid}]`, event)
|
|
2733
|
+
this.outletActive = true;
|
|
2734
|
+
}
|
|
2735
|
+
outletDeactivate(event) {
|
|
2736
|
+
// console.log(`outletDeactivate[${this._uid}]`, event)
|
|
2737
|
+
this.outletActive = false;
|
|
2738
|
+
}
|
|
2739
|
+
routeAnimationsStart(event) {
|
|
2740
|
+
// console.log('routeAnimationsStart', event)
|
|
2741
|
+
this.ngContentVisible = true;
|
|
2742
|
+
}
|
|
2743
|
+
routeAnimationsDone(event) {
|
|
2744
|
+
// console.log('routeAnimationsDone', event)
|
|
2745
|
+
this.ngContentVisible = !this.outletActive;
|
|
2746
|
+
}
|
|
2747
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: HierarchyRouterOutletComponent, deps: [{ token: i1$2.ActivatedRoute }, { token: i1$2.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
2748
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: HierarchyRouterOutletComponent, isStandalone: false, selector: "seam-hierarchy-router-outlet", ngImport: i0, template: "<div class=\"h-100\"\n [@routeAnimations]=\"prepareRoute(outlet)\"\n (@routeAnimations.start)=\"routeAnimationsStart($event)\"\n (@routeAnimations.done)=\"routeAnimationsDone($event)\">\n <div class=\"hierarchy-router-outlet--content h-100\" *ngIf=\"ngContentVisible\">\n <!-- {{ animState }} -->\n <div class=\"border border-info h-100\">\n <ng-content></ng-content>\n </div>\n </div>\n <div class=\"router-container\"\n [class.h-100]=\"!ngContentVisible\"\n >\n <!-- <div [@routeAnimations]=\"animState\"> -->\n <!-- <div class=\"hierarchy-router-outlet--route-content\"> -->\n <router-outlet #outlet=\"outlet\"\n (activate)=\"outletActivate($event)\"\n (deactivate)=\"outletDeactivate($event)\">\n </router-outlet>\n </div>\n</div>\n", styles: [":host{display:block;height:100%}:host ::ng-deep router-outlet+*{background-color:#fff;height:100%}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], animations: [
|
|
2749
|
+
// fader,
|
|
2750
|
+
slider,
|
|
2751
|
+
// transformer,
|
|
2752
|
+
// stepper,
|
|
2753
|
+
// sideToSide
|
|
2754
|
+
// contentLeave
|
|
2755
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2756
|
+
}
|
|
2757
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: HierarchyRouterOutletComponent, decorators: [{
|
|
2758
|
+
type: Component,
|
|
2759
|
+
args: [{ selector: 'seam-hierarchy-router-outlet', animations: [
|
|
2760
|
+
// fader,
|
|
2761
|
+
slider,
|
|
2762
|
+
// transformer,
|
|
2763
|
+
// stepper,
|
|
2764
|
+
// sideToSide
|
|
2765
|
+
// contentLeave
|
|
2766
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div class=\"h-100\"\n [@routeAnimations]=\"prepareRoute(outlet)\"\n (@routeAnimations.start)=\"routeAnimationsStart($event)\"\n (@routeAnimations.done)=\"routeAnimationsDone($event)\">\n <div class=\"hierarchy-router-outlet--content h-100\" *ngIf=\"ngContentVisible\">\n <!-- {{ animState }} -->\n <div class=\"border border-info h-100\">\n <ng-content></ng-content>\n </div>\n </div>\n <div class=\"router-container\"\n [class.h-100]=\"!ngContentVisible\"\n >\n <!-- <div [@routeAnimations]=\"animState\"> -->\n <!-- <div class=\"hierarchy-router-outlet--route-content\"> -->\n <router-outlet #outlet=\"outlet\"\n (activate)=\"outletActivate($event)\"\n (deactivate)=\"outletDeactivate($event)\">\n </router-outlet>\n </div>\n</div>\n", styles: [":host{display:block;height:100%}:host ::ng-deep router-outlet+*{background-color:#fff;height:100%}\n"] }]
|
|
2767
|
+
}], ctorParameters: () => [{ type: i1$2.ActivatedRoute }, { type: i1$2.Router }] });
|
|
2768
|
+
|
|
2769
|
+
class HierarchyLevelResolver {
|
|
2770
|
+
resolve(route, state) {
|
|
2771
|
+
// console.log('[HierarchyLevelResolver]', route)
|
|
2772
|
+
// console.log('[HierarchyLevelResolver]', state)
|
|
2773
|
+
return this._getMaxHierLevel(route);
|
|
2774
|
+
}
|
|
2775
|
+
_getMaxHierLevel(route) {
|
|
2776
|
+
let curr = route;
|
|
2777
|
+
while (curr.parent) {
|
|
2778
|
+
curr = curr.parent;
|
|
2779
|
+
if (curr.data['hierLevel']) {
|
|
2780
|
+
return curr.data['hierLevel'] + 1;
|
|
2781
|
+
}
|
|
2782
|
+
}
|
|
2783
|
+
return 0;
|
|
2784
|
+
}
|
|
2785
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: HierarchyLevelResolver, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2786
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: HierarchyLevelResolver, providedIn: 'root' });
|
|
2787
|
+
}
|
|
2788
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: HierarchyLevelResolver, decorators: [{
|
|
2789
|
+
type: Injectable,
|
|
2790
|
+
args: [{ providedIn: 'root' }]
|
|
2791
|
+
}] });
|
|
2792
|
+
|
|
2793
|
+
class TheSeamDynamicRouterModule {
|
|
2794
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDynamicRouterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
2795
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDynamicRouterModule, declarations: [HierarchyRouterOutletComponent], imports: [CommonModule,
|
|
2796
|
+
RouterModule], exports: [HierarchyRouterOutletComponent] });
|
|
2797
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDynamicRouterModule, imports: [CommonModule,
|
|
2798
|
+
RouterModule] });
|
|
2799
|
+
}
|
|
2800
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamDynamicRouterModule, decorators: [{
|
|
2801
|
+
type: NgModule,
|
|
2802
|
+
args: [{
|
|
2803
|
+
declarations: [
|
|
2804
|
+
HierarchyRouterOutletComponent
|
|
2805
|
+
],
|
|
2806
|
+
imports: [
|
|
2807
|
+
CommonModule,
|
|
2808
|
+
RouterModule
|
|
2809
|
+
],
|
|
2810
|
+
exports: [
|
|
2811
|
+
HierarchyRouterOutletComponent
|
|
2812
|
+
]
|
|
2813
|
+
}]
|
|
2814
|
+
}] });
|
|
2815
|
+
|
|
2816
|
+
class TheSeamSchemaFormCheckboxComponent {
|
|
2817
|
+
_jsf;
|
|
2818
|
+
formControl;
|
|
2819
|
+
controlName;
|
|
2820
|
+
controlValue;
|
|
2821
|
+
controlDisabled = false;
|
|
2822
|
+
boundControl = false;
|
|
2823
|
+
options;
|
|
2824
|
+
layoutNode;
|
|
2825
|
+
layoutIndex;
|
|
2826
|
+
dataIndex;
|
|
2827
|
+
trueValue = true;
|
|
2828
|
+
falseValue = false;
|
|
2829
|
+
constructor(_jsf) {
|
|
2830
|
+
this._jsf = _jsf;
|
|
2831
|
+
}
|
|
2832
|
+
ngOnInit() {
|
|
2833
|
+
this.options = this.layoutNode?.options || {};
|
|
2834
|
+
this._jsf.initializeControl(this);
|
|
2835
|
+
if (this.controlValue === null || this.controlValue === undefined) {
|
|
2836
|
+
this.controlValue = this.options?.title;
|
|
2837
|
+
}
|
|
2838
|
+
}
|
|
2839
|
+
updateValue(event) {
|
|
2840
|
+
event.preventDefault();
|
|
2841
|
+
this._jsf.updateValue(this, event.target.checked ? this.trueValue : this.falseValue);
|
|
2842
|
+
}
|
|
2843
|
+
get isChecked() {
|
|
2844
|
+
return this._jsf.getFormControlValue(this) === this.trueValue;
|
|
2845
|
+
}
|
|
2846
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSchemaFormCheckboxComponent, deps: [{ token: i1$5.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2847
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: TheSeamSchemaFormCheckboxComponent, isStandalone: true, selector: "seam-schema-form-checkbox", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<div class=\"mb-3\">\n <seam-form-field *ngIf=\"boundControl\">\n <seam-checkbox seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </seam-checkbox>\n </seam-form-field>\n\n <seam-form-field *ngIf=\"!boundControl\">\n <seam-checkbox seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [value]=\"controlValue\"\n (change)=\"updateValue($event)\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </seam-checkbox>\n </seam-form-field>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: JsonSchemaFormModule }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "component", type: i4$1.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "component", type: i4$1.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }, { kind: "component", type: TheSeamCheckboxComponent, selector: "seam-checkbox", inputs: ["tabIndex", "id", "aria-label", "aria-labelledby", "required", "checked", "disabled", "indeterminate", "name", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["seamCheckbox"] }] });
|
|
2848
|
+
}
|
|
2849
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSchemaFormCheckboxComponent, decorators: [{
|
|
2850
|
+
type: Component,
|
|
2851
|
+
args: [{ selector: 'seam-schema-form-checkbox', standalone: true, imports: [
|
|
2852
|
+
CommonModule,
|
|
2853
|
+
ReactiveFormsModule,
|
|
2854
|
+
JsonSchemaFormModule,
|
|
2855
|
+
TheSeamFormFieldModule,
|
|
2856
|
+
TheSeamCheckboxComponent,
|
|
2857
|
+
], template: "<div class=\"mb-3\">\n <seam-form-field *ngIf=\"boundControl\">\n <seam-checkbox seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </seam-checkbox>\n </seam-form-field>\n\n <seam-form-field *ngIf=\"!boundControl\">\n <seam-checkbox seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [value]=\"controlValue\"\n (change)=\"updateValue($event)\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </seam-checkbox>\n </seam-form-field>\n</div>\n" }]
|
|
2858
|
+
}], ctorParameters: () => [{ type: i1$5.JsonSchemaFormService }], propDecorators: { layoutNode: [{
|
|
2859
|
+
type: Input
|
|
2860
|
+
}], layoutIndex: [{
|
|
2861
|
+
type: Input
|
|
2862
|
+
}], dataIndex: [{
|
|
2863
|
+
type: Input
|
|
2864
|
+
}] } });
|
|
2865
|
+
|
|
2866
|
+
class TheSeamSchemaFormInputComponent {
|
|
2867
|
+
_jsf;
|
|
2868
|
+
formControl;
|
|
2869
|
+
controlName;
|
|
2870
|
+
controlValue;
|
|
2871
|
+
controlDisabled = false;
|
|
2872
|
+
boundControl = false;
|
|
2873
|
+
options;
|
|
2874
|
+
layoutNode;
|
|
2875
|
+
layoutIndex;
|
|
2876
|
+
dataIndex;
|
|
2877
|
+
autoCompleteList = [];
|
|
2878
|
+
constructor(_jsf) {
|
|
2879
|
+
this._jsf = _jsf;
|
|
2880
|
+
}
|
|
2881
|
+
ngOnInit() {
|
|
2882
|
+
this.options = this.layoutNode?.options || {};
|
|
2883
|
+
this._jsf.initializeControl(this);
|
|
2884
|
+
}
|
|
2885
|
+
updateValue(event) {
|
|
2886
|
+
this._jsf.updateValue(this, event.target.value);
|
|
2887
|
+
}
|
|
2888
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSchemaFormInputComponent, deps: [{ token: i1$5.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2889
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: TheSeamSchemaFormInputComponent, isStandalone: true, selector: "seam-schema-form-input", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<div [class]=\"options?.htmlClass || ''\">\n <seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type\">\n <datalist *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\">\n <option *ngFor=\"let word of options?.typeahead?.source\" [value]=\"word\">\n </datalist>\n </seam-form-field>\n\n <seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type\"\n [disabled]=\"controlDisabled\">\n <datalist *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\">\n <option *ngFor=\"let word of options?.typeahead?.source\" [value]=\"word\">\n </datalist>\n </seam-form-field>\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3$2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3$2.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: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: JsonSchemaFormModule }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "component", type: i4$1.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$1.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.FormFieldLabelTplDirective, selector: "[seamFormFieldLabelTpl]" }, { kind: "component", type: i4$1.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2890
|
+
}
|
|
2891
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSchemaFormInputComponent, decorators: [{
|
|
2892
|
+
type: Component,
|
|
2893
|
+
args: [{ selector: 'seam-schema-form-input', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
2894
|
+
CommonModule,
|
|
2895
|
+
ReactiveFormsModule,
|
|
2896
|
+
JsonSchemaFormModule,
|
|
2897
|
+
TheSeamFormFieldModule,
|
|
2898
|
+
], template: "<div [class]=\"options?.htmlClass || ''\">\n <seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type\">\n <datalist *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\">\n <option *ngFor=\"let word of options?.typeahead?.source\" [value]=\"word\">\n </datalist>\n </seam-form-field>\n\n <seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type\"\n [disabled]=\"controlDisabled\">\n <datalist *ngIf=\"options?.typeahead?.source\"\n [id]=\"'control' + layoutNode?._id + 'Autocomplete'\">\n <option *ngFor=\"let word of options?.typeahead?.source\" [value]=\"word\">\n </datalist>\n </seam-form-field>\n</div>\n", styles: [":host{display:block}\n"] }]
|
|
2899
|
+
}], ctorParameters: () => [{ type: i1$5.JsonSchemaFormService }], propDecorators: { layoutNode: [{
|
|
2900
|
+
type: Input
|
|
2901
|
+
}], layoutIndex: [{
|
|
2902
|
+
type: Input
|
|
2903
|
+
}], dataIndex: [{
|
|
2904
|
+
type: Input
|
|
2905
|
+
}] } });
|
|
2906
|
+
|
|
2907
|
+
class TheSeamSchemaFormNumberComponent {
|
|
2908
|
+
jsf;
|
|
2909
|
+
formControl;
|
|
2910
|
+
controlName;
|
|
2911
|
+
controlValue;
|
|
2912
|
+
controlDisabled = false;
|
|
2913
|
+
boundControl = false;
|
|
2914
|
+
options;
|
|
2915
|
+
layoutNode;
|
|
2916
|
+
layoutIndex;
|
|
2917
|
+
dataIndex;
|
|
2918
|
+
allowNegative = true;
|
|
2919
|
+
allowDecimal = true;
|
|
2920
|
+
allowExponents = false;
|
|
2921
|
+
lastValidNumber = '';
|
|
2922
|
+
constructor(jsf) {
|
|
2923
|
+
this.jsf = jsf;
|
|
2924
|
+
}
|
|
2925
|
+
ngOnInit() {
|
|
2926
|
+
this.options = this.layoutNode?.options || {};
|
|
2927
|
+
this.jsf.initializeControl(this);
|
|
2928
|
+
if (this.layoutNode?.dataType === 'integer') {
|
|
2929
|
+
this.allowDecimal = false;
|
|
2930
|
+
}
|
|
2931
|
+
}
|
|
2932
|
+
updateValue(event) {
|
|
2933
|
+
this.jsf.updateValue(this, event.target.value);
|
|
2934
|
+
}
|
|
2935
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSchemaFormNumberComponent, deps: [{ token: i1$5.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2936
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: TheSeamSchemaFormNumberComponent, isStandalone: true, selector: "seam-schema-form-number", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [attr.max]=\"options?.maximum\"\n [attr.min]=\"options?.minimum\"\n [attr.step]=\"options?.multipleOf || options?.step || 'any'\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type === 'range' ? 'range' : 'number'\">\n <span *ngIf=\"layoutNode?.type === 'range'\" [innerHTML]=\"controlValue\"></span>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [attr.max]=\"options?.maximum\"\n [attr.min]=\"options?.minimum\"\n [attr.step]=\"options?.multipleOf || options?.step || 'any'\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type === 'range' ? 'range' : 'number'\"\n [disabled]=\"controlDisabled\">\n <span *ngIf=\"layoutNode?.type === 'range'\" [innerHTML]=\"controlValue\"></span>\n</seam-form-field>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.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: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: JsonSchemaFormModule }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "component", type: i4$1.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$1.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.FormFieldLabelTplDirective, selector: "[seamFormFieldLabelTpl]" }, { kind: "component", type: i4$1.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2937
|
+
}
|
|
2938
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSchemaFormNumberComponent, decorators: [{
|
|
2939
|
+
type: Component,
|
|
2940
|
+
args: [{ selector: 'seam-schema-form-number', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
2941
|
+
CommonModule,
|
|
2942
|
+
ReactiveFormsModule,
|
|
2943
|
+
JsonSchemaFormModule,
|
|
2944
|
+
TheSeamFormFieldModule,
|
|
2945
|
+
], template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [attr.max]=\"options?.maximum\"\n [attr.min]=\"options?.minimum\"\n [attr.step]=\"options?.multipleOf || options?.step || 'any'\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type === 'range' ? 'range' : 'number'\">\n <span *ngIf=\"layoutNode?.type === 'range'\" [innerHTML]=\"controlValue\"></span>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <input seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [attr.max]=\"options?.maximum\"\n [attr.min]=\"options?.minimum\"\n [attr.step]=\"options?.multipleOf || options?.step || 'any'\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.list]=\"'control' + layoutNode?._id + 'Autocomplete'\"\n [attr.maxlength]=\"options?.maxLength\"\n [attr.minlength]=\"options?.minLength\"\n [attr.pattern]=\"options?.pattern\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [type]=\"layoutNode?.type === 'range' ? 'range' : 'number'\"\n [disabled]=\"controlDisabled\">\n <span *ngIf=\"layoutNode?.type === 'range'\" [innerHTML]=\"controlValue\"></span>\n</seam-form-field>\n", styles: [":host{display:block}\n"] }]
|
|
2946
|
+
}], ctorParameters: () => [{ type: i1$5.JsonSchemaFormService }], propDecorators: { layoutNode: [{
|
|
2947
|
+
type: Input
|
|
2948
|
+
}], layoutIndex: [{
|
|
2949
|
+
type: Input
|
|
2950
|
+
}], dataIndex: [{
|
|
2951
|
+
type: Input
|
|
2952
|
+
}] } });
|
|
2953
|
+
|
|
2954
|
+
class TheSeamSchemaFormSelectComponent {
|
|
2955
|
+
_jsf;
|
|
2956
|
+
formControl;
|
|
2957
|
+
controlName;
|
|
2958
|
+
controlValue;
|
|
2959
|
+
controlDisabled = false;
|
|
2960
|
+
boundControl = false;
|
|
2961
|
+
options;
|
|
2962
|
+
layoutNode;
|
|
2963
|
+
layoutIndex;
|
|
2964
|
+
dataIndex;
|
|
2965
|
+
selectList = [];
|
|
2966
|
+
isArray = isArray;
|
|
2967
|
+
constructor(_jsf) {
|
|
2968
|
+
this._jsf = _jsf;
|
|
2969
|
+
}
|
|
2970
|
+
ngOnInit() {
|
|
2971
|
+
this.options = this.layoutNode?.options || {};
|
|
2972
|
+
this.selectList = buildTitleMap(this.options.titleMap || this.options.enumNames, this.options.enum, !!this.options.required, !!this.options.flatList);
|
|
2973
|
+
this._jsf.initializeControl(this);
|
|
2974
|
+
}
|
|
2975
|
+
updateValue(event) {
|
|
2976
|
+
this._jsf.updateValue(this, event.value);
|
|
2977
|
+
}
|
|
2978
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSchemaFormSelectComponent, deps: [{ token: i1$5.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2979
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: TheSeamSchemaFormSelectComponent, isStandalone: true, selector: "seam-schema-form-select", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<div [class]=\"options?.htmlClass || ''\">\n <seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [required]=\"options?.required\"\n [items]=\"selectList\"\n bindLabel=\"name\"\n bindValue=\"value\"\n [clearable]=\"false\"\n appendTo=\"body\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? true : false\">\n <ng-template ng-label-tmp let-item=\"item\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n </ng-select>\n </seam-form-field>\n\n <seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [required]=\"options?.required\"\n [items]=\"selectList\"\n bindLabel=\"name\"\n bindValue=\"value\"\n [clearable]=\"false\"\n (change)=\"updateValue($event)\"\n appendTo=\"body\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? true : false\"\n [disabled]=\"controlDisabled\">\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n </ng-select>\n </seam-form-field>\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: JsonSchemaFormModule }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "component", type: i4$1.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$1.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.FormFieldLabelTplDirective, selector: "[seamFormFieldLabelTpl]" }, { kind: "component", type: i4$1.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }, { kind: "ngmodule", type: NgSelectModule }, { 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: "directive", type: i5$1.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i5$1.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2980
|
+
}
|
|
2981
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSchemaFormSelectComponent, decorators: [{
|
|
2982
|
+
type: Component,
|
|
2983
|
+
args: [{ selector: 'seam-schema-form-select', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
2984
|
+
CommonModule,
|
|
2985
|
+
ReactiveFormsModule,
|
|
2986
|
+
JsonSchemaFormModule,
|
|
2987
|
+
TheSeamFormFieldModule,
|
|
2988
|
+
NgSelectModule,
|
|
2989
|
+
], template: "<div [class]=\"options?.htmlClass || ''\">\n <seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [required]=\"options?.required\"\n [items]=\"selectList\"\n bindLabel=\"name\"\n bindValue=\"value\"\n [clearable]=\"false\"\n appendTo=\"body\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? true : false\">\n <ng-template ng-label-tmp let-item=\"item\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n </ng-select>\n </seam-form-field>\n\n <seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <ng-select seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [required]=\"options?.required\"\n [items]=\"selectList\"\n bindLabel=\"name\"\n bindValue=\"value\"\n [clearable]=\"false\"\n (change)=\"updateValue($event)\"\n appendTo=\"body\"\n\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.placeholder]=\"options?.placeholder\"\n [attr.required]=\"options?.required\"\n [readonly]=\"options?.readonly ? true : false\"\n [disabled]=\"controlDisabled\">\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\">\n <span [innerHTML]=\"item.name\"></span>\n </ng-template>\n </ng-select>\n </seam-form-field>\n</div>\n", styles: [":host{display:block}\n"] }]
|
|
2990
|
+
}], ctorParameters: () => [{ type: i1$5.JsonSchemaFormService }], propDecorators: { layoutNode: [{
|
|
2991
|
+
type: Input
|
|
2992
|
+
}], layoutIndex: [{
|
|
2993
|
+
type: Input
|
|
2994
|
+
}], dataIndex: [{
|
|
2995
|
+
type: Input
|
|
2996
|
+
}] } });
|
|
2997
|
+
|
|
2998
|
+
// NOTE: This component is a little hacky, because I am basically creating a
|
|
2999
|
+
// data widget that acts like a data and 'submit' widget at the same time.
|
|
3000
|
+
//
|
|
3001
|
+
// TODO: Try and think of a nicer way to implement this, but still make sense
|
|
3002
|
+
// from a schema definition. The library may need to me forked to actually
|
|
3003
|
+
// support this in the way I expect, but maybe there is another way.
|
|
3004
|
+
class TheSeamSchemaFormSubmitSplitComponent {
|
|
3005
|
+
_jsf;
|
|
3006
|
+
/** @ignore */
|
|
3007
|
+
_ngUnsubscribe = new Subject();
|
|
3008
|
+
formControl;
|
|
3009
|
+
controlName;
|
|
3010
|
+
controlValue;
|
|
3011
|
+
controlDisabled = false;
|
|
3012
|
+
boundControl = false;
|
|
3013
|
+
options;
|
|
3014
|
+
layoutNode;
|
|
3015
|
+
layoutIndex;
|
|
3016
|
+
dataIndex;
|
|
3017
|
+
_buttonLabel = '';
|
|
3018
|
+
_dropdownObj;
|
|
3019
|
+
_dropdownDisabled = false;
|
|
3020
|
+
_selectList = [];
|
|
3021
|
+
_selectedItem;
|
|
3022
|
+
constructor(_jsf) {
|
|
3023
|
+
this._jsf = _jsf;
|
|
3024
|
+
}
|
|
3025
|
+
/** @ignore */
|
|
3026
|
+
ngOnInit() {
|
|
3027
|
+
this.options = this.layoutNode?.options || {};
|
|
3028
|
+
this._jsf.initializeControl(this);
|
|
3029
|
+
// NOTE: This is commented out, because there is a bug with submit widgets
|
|
3030
|
+
// manually defined in layout. All nodes initialized from the provided
|
|
3031
|
+
// layout have their options populated from the defaults and 'disabled' is
|
|
3032
|
+
// on of the default properties, so the 'disableInvalidSubmit' condition
|
|
3033
|
+
// never gets reached.
|
|
3034
|
+
//
|
|
3035
|
+
// My initial idea for fixing would be to check if the disabled property
|
|
3036
|
+
// exists and is a boolean, or possibly anything defined that can coerce
|
|
3037
|
+
// into a boolean. I can't think of a reason disabled should be anything
|
|
3038
|
+
// else, so that may be an acceptable fix, but I don't want to enable that
|
|
3039
|
+
// yet.
|
|
3040
|
+
//
|
|
3041
|
+
// if (hasOwn(this.options, 'disabled')) {
|
|
3042
|
+
// console.log('[TheSeamSchemaFormSubmitSplitComponent] hasDisabled', this.options.disabled)
|
|
3043
|
+
// this.controlDisabled = this.options.disabled
|
|
3044
|
+
// } else
|
|
3045
|
+
if (this._jsf.formOptions.disableInvalidSubmit) {
|
|
3046
|
+
this.controlDisabled = !this._jsf.isValid;
|
|
3047
|
+
this._jsf.isValidChanges.subscribe(isValid => this.controlDisabled = !isValid);
|
|
3048
|
+
}
|
|
3049
|
+
if (this.controlValue === null || this.controlValue === undefined) {
|
|
3050
|
+
this.controlValue = this.options.title;
|
|
3051
|
+
}
|
|
3052
|
+
if (hasOwn(this.options, 'title')) {
|
|
3053
|
+
this._buttonLabel = this.options.title;
|
|
3054
|
+
}
|
|
3055
|
+
this._initDropdown();
|
|
3056
|
+
// console.log('this', this)
|
|
3057
|
+
}
|
|
3058
|
+
/** @ignore */
|
|
3059
|
+
ngOnDestroy() {
|
|
3060
|
+
this._ngUnsubscribe.next(undefined);
|
|
3061
|
+
this._ngUnsubscribe.complete();
|
|
3062
|
+
}
|
|
3063
|
+
updateValue(event) {
|
|
3064
|
+
if (typeof this.options?.onClick === 'function') {
|
|
3065
|
+
this.options.onClick(event);
|
|
3066
|
+
}
|
|
3067
|
+
else {
|
|
3068
|
+
this._jsf.updateValue(this, event.target.value);
|
|
3069
|
+
}
|
|
3070
|
+
}
|
|
3071
|
+
_initDropdown() {
|
|
3072
|
+
if (!hasOwn(this.layoutNode, 'items') || !(this.layoutNode?.items || []).length) {
|
|
3073
|
+
return;
|
|
3074
|
+
}
|
|
3075
|
+
if (isDevMode()) {
|
|
3076
|
+
if (this.layoutNode?.items && this.layoutNode?.items.length > 1) {
|
|
3077
|
+
// eslint-disable-next-line no-console
|
|
3078
|
+
console.warn(`TheSeamSchemaFormSubmitSplitComponent only supports one item.` +
|
|
3079
|
+
` items after index 0 will be ignored.`);
|
|
3080
|
+
}
|
|
3081
|
+
}
|
|
3082
|
+
const idx = 0;
|
|
3083
|
+
const item = (this.layoutNode?.items)[idx] || {};
|
|
3084
|
+
this._dropdownObj = {
|
|
3085
|
+
layoutNode: item,
|
|
3086
|
+
layoutIndex: (this.layoutIndex || []).concat(idx),
|
|
3087
|
+
dataIndex: this.layoutNode?.dataType === 'array' ? (this.dataIndex || []).concat(idx) : this.dataIndex,
|
|
3088
|
+
options: item.options || {}
|
|
3089
|
+
};
|
|
3090
|
+
this._jsf.initializeControl(this._dropdownObj);
|
|
3091
|
+
const items = buildTitleMap(this._dropdownObj.options.titleMap || this._dropdownObj.options.enumNames, this._dropdownObj.options.enum, !!this._dropdownObj.options.required, !!this._dropdownObj.options.flatList);
|
|
3092
|
+
this._selectList = items;
|
|
3093
|
+
// TODO: Should this be checking if the control is bound?
|
|
3094
|
+
const dropdownControl = this._getDropdownControl();
|
|
3095
|
+
if (!dropdownControl) {
|
|
3096
|
+
return;
|
|
3097
|
+
}
|
|
3098
|
+
observeControlValue(dropdownControl).pipe(takeUntil(this._ngUnsubscribe)).subscribe(value => {
|
|
3099
|
+
this._setSelectListCheckedProp(value);
|
|
3100
|
+
this._selectedItem = this._getSelectedItem();
|
|
3101
|
+
});
|
|
3102
|
+
observeControlStatus(dropdownControl).pipe(takeUntil(this._ngUnsubscribe)).subscribe(value => {
|
|
3103
|
+
this._dropdownDisabled = dropdownControl.disabled;
|
|
3104
|
+
});
|
|
3105
|
+
}
|
|
3106
|
+
_getDropdownControl() {
|
|
3107
|
+
return this._dropdownObj.formControl;
|
|
3108
|
+
}
|
|
3109
|
+
_setSelectListCheckedProp(value) {
|
|
3110
|
+
const items = this._selectList;
|
|
3111
|
+
for (const item of items) {
|
|
3112
|
+
if (item.value === value) {
|
|
3113
|
+
item.checked = true;
|
|
3114
|
+
}
|
|
3115
|
+
else if (item.checked) {
|
|
3116
|
+
item.checked = false;
|
|
3117
|
+
}
|
|
3118
|
+
}
|
|
3119
|
+
this._selectList = [...items];
|
|
3120
|
+
}
|
|
3121
|
+
_getSelectedItem() {
|
|
3122
|
+
return (this._selectList || []).find(x => x.checked === true);
|
|
3123
|
+
}
|
|
3124
|
+
_setDropdownValue(value) {
|
|
3125
|
+
const formControl = this._getDropdownControl();
|
|
3126
|
+
formControl?.setValue(value);
|
|
3127
|
+
}
|
|
3128
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSchemaFormSubmitSplitComponent, deps: [{ token: i1$5.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component });
|
|
3129
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: TheSeamSchemaFormSubmitSplitComponent, isStandalone: true, selector: "seam-schema-form-submit-split", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<div\n [class]=\"options?.htmlClass || ''\">\n <div [class.btn-group]=\"_dropdownObj\">\n <button seamButton theme=\"primary\" type=\"submit\"\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.readonly]=\"options?.readonly ? 'readonly' : null\"\n [attr.required]=\"options?.required\"\n [class]=\"'btn btn-primary ' + (options?.fieldHtmlClass || '')\"\n [disabled]=\"controlDisabled\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [value]=\"controlValue\"\n (click)=\"updateValue($event)\">\n {{ _buttonLabel }}\n <span *ngIf=\"_selectedItem\">\n [{{ _selectedItem.name }}]\n </span>\n </button>\n <ng-container *ngIf=\"_dropdownObj\">\n <button\n [seamMenuToggle]=\"menu\" seamButton theme=\"primary\"\n class=\"dropdown-toggle dropdown-toggle-split\"\n [disabled]=\"_dropdownDisabled\">\n <span class=\"sr-only\">Toggle Dropdown</span>\n </button>\n <seam-menu #menu>\n <ng-container *ngFor=\"let item of _selectList\">\n <button seamMenuItem\n [class.active]=\"item.checked\"\n (click)=\"_setDropdownValue(item.value)\">\n {{ item.name }}\n </button>\n </ng-container>\n </seam-menu>\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: JsonSchemaFormModule }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "ngmodule", type: TheSeamMenuModule }, { kind: "component", type: i3$1.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i3$1.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuToggle", "menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: i3$1.MenuItemComponent, selector: "[seamMenuItem]", inputs: ["disabled", "role", "icon", "iconClass", "sublevelIcon", "subLevelIconClass", "badgeText", "badgeTheme"], exportAs: ["seamMenuItem"] }, { kind: "ngmodule", type: TheSeamButtonsModule }, { kind: "component", type: i3.TheSeamButtonComponent, selector: "button[seamButton]", inputs: ["disabled", "theme", "size", "type"], exportAs: ["seamButton"] }] });
|
|
3130
|
+
}
|
|
3131
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSchemaFormSubmitSplitComponent, decorators: [{
|
|
3132
|
+
type: Component,
|
|
3133
|
+
args: [{ selector: 'seam-schema-form-submit-split', standalone: true, imports: [
|
|
3134
|
+
CommonModule,
|
|
3135
|
+
ReactiveFormsModule,
|
|
3136
|
+
JsonSchemaFormModule,
|
|
3137
|
+
TheSeamFormFieldModule,
|
|
3138
|
+
TheSeamMenuModule,
|
|
3139
|
+
TheSeamButtonsModule,
|
|
3140
|
+
], template: "<div\n [class]=\"options?.htmlClass || ''\">\n <div [class.btn-group]=\"_dropdownObj\">\n <button seamButton theme=\"primary\" type=\"submit\"\n [attr.aria-describedby]=\"'control' + layoutNode?._id + 'Status'\"\n [attr.readonly]=\"options?.readonly ? 'readonly' : null\"\n [attr.required]=\"options?.required\"\n [class]=\"'btn btn-primary ' + (options?.fieldHtmlClass || '')\"\n [disabled]=\"controlDisabled\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [value]=\"controlValue\"\n (click)=\"updateValue($event)\">\n {{ _buttonLabel }}\n <span *ngIf=\"_selectedItem\">\n [{{ _selectedItem.name }}]\n </span>\n </button>\n <ng-container *ngIf=\"_dropdownObj\">\n <button\n [seamMenuToggle]=\"menu\" seamButton theme=\"primary\"\n class=\"dropdown-toggle dropdown-toggle-split\"\n [disabled]=\"_dropdownDisabled\">\n <span class=\"sr-only\">Toggle Dropdown</span>\n </button>\n <seam-menu #menu>\n <ng-container *ngFor=\"let item of _selectList\">\n <button seamMenuItem\n [class.active]=\"item.checked\"\n (click)=\"_setDropdownValue(item.value)\">\n {{ item.name }}\n </button>\n </ng-container>\n </seam-menu>\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:block}\n"] }]
|
|
3141
|
+
}], ctorParameters: () => [{ type: i1$5.JsonSchemaFormService }], propDecorators: { layoutNode: [{
|
|
3142
|
+
type: Input
|
|
3143
|
+
}], layoutIndex: [{
|
|
3144
|
+
type: Input
|
|
3145
|
+
}], dataIndex: [{
|
|
3146
|
+
type: Input
|
|
3147
|
+
}] } });
|
|
3148
|
+
|
|
3149
|
+
class TheSeamSchemaFormDividerComponent {
|
|
3150
|
+
options;
|
|
3151
|
+
layoutNode;
|
|
3152
|
+
layoutIndex;
|
|
3153
|
+
dataIndex;
|
|
3154
|
+
ngOnInit() {
|
|
3155
|
+
this.options = this.layoutNode.options || {};
|
|
3156
|
+
}
|
|
3157
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSchemaFormDividerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3158
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: TheSeamSchemaFormDividerComponent, isStandalone: true, selector: "seam-schema-form-divider", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: `<hr [class]="options?.htmlClass" />`, isInline: true, styles: [":host{display:block}\n"] });
|
|
3159
|
+
}
|
|
3160
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSchemaFormDividerComponent, decorators: [{
|
|
3161
|
+
type: Component,
|
|
3162
|
+
args: [{ selector: 'seam-schema-form-divider', template: `<hr [class]="options?.htmlClass" />`, standalone: true, styles: [":host{display:block}\n"] }]
|
|
3163
|
+
}], propDecorators: { layoutNode: [{
|
|
3164
|
+
type: Input
|
|
3165
|
+
}], layoutIndex: [{
|
|
3166
|
+
type: Input
|
|
3167
|
+
}], dataIndex: [{
|
|
3168
|
+
type: Input
|
|
3169
|
+
}] } });
|
|
3170
|
+
|
|
3171
|
+
class TheSeamSchemaFormTelComponent {
|
|
3172
|
+
_jsf;
|
|
3173
|
+
formControl;
|
|
3174
|
+
controlName;
|
|
3175
|
+
controlValue;
|
|
3176
|
+
controlDisabled = false;
|
|
3177
|
+
boundControl = false;
|
|
3178
|
+
options;
|
|
3179
|
+
layoutNode;
|
|
3180
|
+
layoutIndex;
|
|
3181
|
+
dataIndex;
|
|
3182
|
+
autoCompleteList = [];
|
|
3183
|
+
constructor(_jsf) {
|
|
3184
|
+
this._jsf = _jsf;
|
|
3185
|
+
}
|
|
3186
|
+
ngOnInit() {
|
|
3187
|
+
this.options = this.layoutNode?.options || {};
|
|
3188
|
+
this._jsf.initializeControl(this);
|
|
3189
|
+
console.log(this.controlValue);
|
|
3190
|
+
console.log(this.formControl?.value);
|
|
3191
|
+
}
|
|
3192
|
+
updateValue(event) {
|
|
3193
|
+
this._jsf.updateValue(this, event.target.value);
|
|
3194
|
+
}
|
|
3195
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSchemaFormTelComponent, deps: [{ token: i1$5.JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component });
|
|
3196
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: TheSeamSchemaFormTelComponent, isStandalone: true, selector: "seam-schema-form-tel", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <seam-tel-input\n seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\">\n </seam-tel-input>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <seam-tel-input\n seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [disabled]=\"controlDisabled\">\n </seam-tel-input>\n</seam-form-field>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: JsonSchemaFormModule }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "component", type: i4$1.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$1.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.FormFieldLabelTplDirective, selector: "[seamFormFieldLabelTpl]" }, { kind: "component", type: i4$1.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }, { kind: "ngmodule", type: TheSeamTelInputModule }, { kind: "component", type: i5$2.TheSeamTelInputComponent, selector: "seam-tel-input", inputs: ["required", "disabled", "tabIndex", "name", "value"], outputs: ["change"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3197
|
+
}
|
|
3198
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSchemaFormTelComponent, decorators: [{
|
|
3199
|
+
type: Component,
|
|
3200
|
+
args: [{ selector: 'seam-schema-form-tel', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
3201
|
+
CommonModule,
|
|
3202
|
+
ReactiveFormsModule,
|
|
3203
|
+
JsonSchemaFormModule,
|
|
3204
|
+
TheSeamFormFieldModule,
|
|
3205
|
+
TheSeamTelInputModule,
|
|
3206
|
+
], template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <seam-tel-input\n seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [readonly]=\"options?.readonly ? 'readonly' : null\">\n </seam-tel-input>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <seam-tel-input\n seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [name]=\"controlName\"\n [required]=\"options?.required\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n [readonly]=\"options?.readonly ? 'readonly' : null\"\n [disabled]=\"controlDisabled\">\n </seam-tel-input>\n</seam-form-field>\n" }]
|
|
3207
|
+
}], ctorParameters: () => [{ type: i1$5.JsonSchemaFormService }], propDecorators: { layoutNode: [{
|
|
3208
|
+
type: Input
|
|
3209
|
+
}], layoutIndex: [{
|
|
3210
|
+
type: Input
|
|
3211
|
+
}], dataIndex: [{
|
|
3212
|
+
type: Input
|
|
3213
|
+
}] } });
|
|
3214
|
+
|
|
3215
|
+
class TheSeamSchemaFormTiledSelectComponent {
|
|
3216
|
+
_jsf = inject(JsonSchemaFormService);
|
|
3217
|
+
_platform = inject(Platform);
|
|
3218
|
+
formControl;
|
|
3219
|
+
controlName;
|
|
3220
|
+
controlValue;
|
|
3221
|
+
controlDisabled = false;
|
|
3222
|
+
boundControl = false;
|
|
3223
|
+
options;
|
|
3224
|
+
layoutNode;
|
|
3225
|
+
layoutIndex;
|
|
3226
|
+
dataIndex;
|
|
3227
|
+
tiles = [];
|
|
3228
|
+
layout = 'grid';
|
|
3229
|
+
multiple = false;
|
|
3230
|
+
selectionToggleable = true;
|
|
3231
|
+
tileBackdrop = false;
|
|
3232
|
+
showSelectedIcon = true;
|
|
3233
|
+
animationsDisabled = this._platform.IOS;
|
|
3234
|
+
ngOnInit() {
|
|
3235
|
+
this.options = this.layoutNode?.options || {};
|
|
3236
|
+
this._jsf.initializeControl(this);
|
|
3237
|
+
console.log(this.options);
|
|
3238
|
+
console.log(this.layoutNode);
|
|
3239
|
+
this.tiles = this.options.tiles || [];
|
|
3240
|
+
}
|
|
3241
|
+
updateValue(event) {
|
|
3242
|
+
this._jsf.updateValue(this, event.target.value);
|
|
3243
|
+
}
|
|
3244
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSchemaFormTiledSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3245
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: TheSeamSchemaFormTiledSelectComponent, isStandalone: true, selector: "seam-schema-form-tiled-select", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, ngImport: i0, template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <seam-tiled-select\n seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [attr.name]=\"controlName\"\n [required]=\"options?.required\"\n [attr.readonly]=\"options?.readonly ? 'readonly' : null\"\n [tiles]=\"tiles\"\n [layout]=\"layout\"\n [multiple]=\"multiple\"\n [selectionToggleable]=\"selectionToggleable\"\n [tileBackdrop]=\"tileBackdrop\"\n [showSelectedIcon]=\"showSelectedIcon\"\n [animationsDisabled]=\"animationsDisabled\">\n </seam-tiled-select>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <seam-tiled-select\n seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [attr.name]=\"controlName\"\n [attr.required]=\"options?.required\"\n [attr.readonly]=\"options?.readonly ? 'readonly' : null\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n [disabled]=\"controlDisabled\"\n [tiles]=\"tiles\"\n [layout]=\"layout\"\n [multiple]=\"multiple\"\n [selectionToggleable]=\"selectionToggleable\"\n [tileBackdrop]=\"tileBackdrop\"\n [showSelectedIcon]=\"showSelectedIcon\"\n [animationsDisabled]=\"animationsDisabled\">\n </seam-tiled-select>\n</seam-form-field>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: JsonSchemaFormModule }, { kind: "ngmodule", type: TheSeamFormFieldModule }, { kind: "component", type: i4$1.TheSeamFormFieldComponent, selector: "seam-form-field", inputs: ["inline", "label", "labelPosition", "labelClass", "maxErrors", "numPaddingErrors", "labelId", "helpText", "helpTextId"] }, { kind: "directive", type: i4$1.FormFieldLabelTplDirective, selector: "[seamFormFieldLabelTpl]" }, { kind: "component", type: i4$1.FormFieldRequiredIndicatorComponent, selector: "seam-form-field-required-indicator", inputs: ["required"] }, { kind: "ngmodule", type: TheSeamTiledSelectModule }, { kind: "component", type: i4$2.TheSeamTiledSelectComponent, selector: "seam-tiled-select", inputs: ["layout", "tiles", "value", "disabled", "multiple", "selectionToggleable", "tileBackdrop", "showSelectedIcon", "animationsDisabled"], outputs: ["change"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3246
|
+
}
|
|
3247
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSchemaFormTiledSelectComponent, decorators: [{
|
|
3248
|
+
type: Component,
|
|
3249
|
+
args: [{ selector: 'seam-schema-form-tiled-select', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
3250
|
+
CommonModule,
|
|
3251
|
+
ReactiveFormsModule,
|
|
3252
|
+
JsonSchemaFormModule,
|
|
3253
|
+
TheSeamFormFieldModule,
|
|
3254
|
+
TheSeamTiledSelectModule,
|
|
3255
|
+
], template: "<seam-form-field *ngIf=\"boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <seam-tiled-select\n seamInput\n [formControl]=\"$any(formControl)\"\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [attr.name]=\"controlName\"\n [required]=\"options?.required\"\n [attr.readonly]=\"options?.readonly ? 'readonly' : null\"\n [tiles]=\"tiles\"\n [layout]=\"layout\"\n [multiple]=\"multiple\"\n [selectionToggleable]=\"selectionToggleable\"\n [tileBackdrop]=\"tileBackdrop\"\n [showSelectedIcon]=\"showSelectedIcon\"\n [animationsDisabled]=\"animationsDisabled\">\n </seam-tiled-select>\n</seam-form-field>\n\n<seam-form-field *ngIf=\"!boundControl\">\n <ng-template seamFormFieldLabelTpl let-required=\"required\">\n <ng-container *ngIf=\"!options?.notitle\">\n {{ options?.title }}<seam-form-field-required-indicator class=\"pl-1\" [required]=\"options?.required\"></seam-form-field-required-indicator>\n </ng-container>\n </ng-template>\n <seam-tiled-select\n seamInput\n [ngClass]=\"options?.fieldHtmlClass\"\n [id]=\"'control' + layoutNode?._id\"\n [attr.name]=\"controlName\"\n [attr.required]=\"options?.required\"\n [attr.readonly]=\"options?.readonly ? 'readonly' : null\"\n [value]=\"controlValue\"\n (input)=\"updateValue($event)\"\n [disabled]=\"controlDisabled\"\n [tiles]=\"tiles\"\n [layout]=\"layout\"\n [multiple]=\"multiple\"\n [selectionToggleable]=\"selectionToggleable\"\n [tileBackdrop]=\"tileBackdrop\"\n [showSelectedIcon]=\"showSelectedIcon\"\n [animationsDisabled]=\"animationsDisabled\">\n </seam-tiled-select>\n</seam-form-field>\n" }]
|
|
3256
|
+
}], propDecorators: { layoutNode: [{
|
|
3257
|
+
type: Input
|
|
3258
|
+
}], layoutIndex: [{
|
|
3259
|
+
type: Input
|
|
3260
|
+
}], dataIndex: [{
|
|
3261
|
+
type: Input
|
|
3262
|
+
}] } });
|
|
3263
|
+
|
|
3264
|
+
class TheSeamSchemaFormFrameworkComponent {
|
|
3265
|
+
layoutNode;
|
|
3266
|
+
layoutIndex;
|
|
3267
|
+
dataIndex;
|
|
3268
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSchemaFormFrameworkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3269
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: TheSeamSchemaFormFrameworkComponent, isStandalone: true, selector: "seam-schema-form-framework", inputs: { layoutNode: "layoutNode", layoutIndex: "layoutIndex", dataIndex: "dataIndex" }, host: { properties: { "attr.data-name": "layoutNode?.node", "attr.data-data-pointer": "layoutNode?.dataPointer" } }, ngImport: i0, template: "<select-widget-widget\n [dataIndex]=\"$any(dataIndex)\"\n [layoutIndex]=\"$any(layoutIndex)\"\n [layoutNode]=\"layoutNode\">\n</select-widget-widget>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: JsonSchemaFormModule }, { kind: "component", type: i1$5.SelectWidgetComponent, selector: "select-widget-widget", inputs: ["layoutNode", "layoutIndex", "dataIndex"] }] });
|
|
3270
|
+
}
|
|
3271
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSchemaFormFrameworkComponent, decorators: [{
|
|
3272
|
+
type: Component,
|
|
3273
|
+
args: [{ selector: 'seam-schema-form-framework', host: {
|
|
3274
|
+
'[attr.data-name]': 'layoutNode?.node',
|
|
3275
|
+
'[attr.data-data-pointer]': 'layoutNode?.dataPointer',
|
|
3276
|
+
}, imports: [
|
|
3277
|
+
JsonSchemaFormModule,
|
|
3278
|
+
], template: "<select-widget-widget\n [dataIndex]=\"$any(dataIndex)\"\n [layoutIndex]=\"$any(layoutIndex)\"\n [layoutNode]=\"layoutNode\">\n</select-widget-widget>\n" }]
|
|
3279
|
+
}], propDecorators: { layoutNode: [{
|
|
3280
|
+
type: Input
|
|
3281
|
+
}], layoutIndex: [{
|
|
3282
|
+
type: Input
|
|
3283
|
+
}], dataIndex: [{
|
|
3284
|
+
type: Input
|
|
3285
|
+
}] } });
|
|
3286
|
+
|
|
3287
|
+
const THESEAM_SCHEMA_FRAMEWORK_OVERRIDES = new InjectionToken('THESEAM_SCHEMA_FRAMEWORK_OVERRIDES');
|
|
3288
|
+
function extendFramework(toExtend, extendFrameworkOrName) {
|
|
3289
|
+
// console.log('extendFramework', toExtend, extendFrameworkOrName)
|
|
3290
|
+
const _overrides = inject(Framework, { optional: true });
|
|
3291
|
+
const overrides = typeof extendFrameworkOrName === 'string'
|
|
3292
|
+
? (_overrides || []).filter(x => x.name === extendFrameworkOrName)
|
|
3293
|
+
: [extendFrameworkOrName];
|
|
3294
|
+
// console.log(_overrides, overrides)
|
|
3295
|
+
if (overrides) {
|
|
3296
|
+
for (const override of overrides) {
|
|
3297
|
+
// console.log('override', override)
|
|
3298
|
+
if (hasProperty(override, 'framework')) {
|
|
3299
|
+
toExtend.framework = override.framework;
|
|
3300
|
+
}
|
|
3301
|
+
if (hasProperty(override, 'widgets')) {
|
|
3302
|
+
toExtend.widgets = { ...toExtend.widgets, ...override.widgets };
|
|
3303
|
+
}
|
|
3304
|
+
if (hasProperty(override, 'stylesheets')) {
|
|
3305
|
+
toExtend.stylesheets = { ...toExtend.stylesheets, ...override.stylesheets };
|
|
3306
|
+
}
|
|
3307
|
+
if (hasProperty(override, 'scripts')) {
|
|
3308
|
+
toExtend.scripts = { ...toExtend.scripts, ...override.scripts };
|
|
3309
|
+
}
|
|
3310
|
+
}
|
|
3311
|
+
}
|
|
3312
|
+
}
|
|
3313
|
+
class TheSeamFramework extends Framework {
|
|
3314
|
+
name = 'seam-framework';
|
|
3315
|
+
framework = TheSeamSchemaFormFrameworkComponent;
|
|
3316
|
+
widgets = {
|
|
3317
|
+
'checkbox': TheSeamSchemaFormCheckboxComponent,
|
|
3318
|
+
// 'submit': TheSeamSchemaFormSubmitComponent,
|
|
3319
|
+
'submit': TheSeamSchemaFormSubmitSplitComponent,
|
|
3320
|
+
'text': TheSeamSchemaFormInputComponent,
|
|
3321
|
+
'number': TheSeamSchemaFormNumberComponent,
|
|
3322
|
+
'select': TheSeamSchemaFormSelectComponent,
|
|
3323
|
+
'divider': TheSeamSchemaFormDividerComponent,
|
|
3324
|
+
'tel': TheSeamSchemaFormTelComponent,
|
|
3325
|
+
'tiled-select': TheSeamSchemaFormTiledSelectComponent
|
|
3326
|
+
// 'date': // TODO: Implement
|
|
3327
|
+
// 'file': // TODO: Implement
|
|
3328
|
+
// 'image': // TODO: Implement
|
|
3329
|
+
// 'richtext': // TODO: Implement
|
|
3330
|
+
// 'tabs': // TODO: Implement
|
|
3331
|
+
// 'wizard': // TODO: Implement
|
|
3332
|
+
// 'card': // TODO: Implement
|
|
3333
|
+
// 'map': // TODO: Implement
|
|
3334
|
+
};
|
|
3335
|
+
constructor(_overrides) {
|
|
3336
|
+
super();
|
|
3337
|
+
// console.log('TheSeamFramework', _overrides, this)
|
|
3338
|
+
if (_overrides) {
|
|
3339
|
+
for (const override of _overrides) {
|
|
3340
|
+
// console.log('override', override)
|
|
3341
|
+
if (hasProperty(override, 'widgets')) {
|
|
3342
|
+
this.widgets = { ...this.widgets, ...override.widgets };
|
|
3343
|
+
}
|
|
3344
|
+
}
|
|
3345
|
+
}
|
|
3346
|
+
}
|
|
3347
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamFramework, deps: [{ token: THESEAM_SCHEMA_FRAMEWORK_OVERRIDES, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3348
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamFramework });
|
|
3349
|
+
}
|
|
3350
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamFramework, decorators: [{
|
|
3351
|
+
type: Injectable
|
|
3352
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
3353
|
+
type: Optional
|
|
3354
|
+
}, {
|
|
3355
|
+
type: Inject,
|
|
3356
|
+
args: [THESEAM_SCHEMA_FRAMEWORK_OVERRIDES]
|
|
3357
|
+
}] }] });
|
|
3358
|
+
|
|
3359
|
+
class TheSeamSchemaFormModule {
|
|
3360
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSchemaFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
3361
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSchemaFormModule, imports: [CommonModule,
|
|
3362
|
+
JsonSchemaFormModule,
|
|
3363
|
+
WidgetLibraryModule,
|
|
3364
|
+
TheSeamSchemaFormFrameworkComponent], exports: [TheSeamSchemaFormFrameworkComponent,
|
|
3365
|
+
JsonSchemaFormModule] });
|
|
3366
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSchemaFormModule, providers: [
|
|
3367
|
+
JsonSchemaFormService,
|
|
3368
|
+
FrameworkLibraryService,
|
|
3369
|
+
WidgetLibraryService,
|
|
3370
|
+
{ provide: Framework, useClass: TheSeamFramework, multi: true },
|
|
3371
|
+
], imports: [CommonModule,
|
|
3372
|
+
JsonSchemaFormModule,
|
|
3373
|
+
WidgetLibraryModule,
|
|
3374
|
+
TheSeamSchemaFormFrameworkComponent, JsonSchemaFormModule] });
|
|
3375
|
+
}
|
|
3376
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamSchemaFormModule, decorators: [{
|
|
3377
|
+
type: NgModule,
|
|
3378
|
+
args: [{
|
|
3379
|
+
imports: [
|
|
3380
|
+
CommonModule,
|
|
3381
|
+
JsonSchemaFormModule,
|
|
3382
|
+
WidgetLibraryModule,
|
|
3383
|
+
TheSeamSchemaFormFrameworkComponent
|
|
3384
|
+
],
|
|
3385
|
+
providers: [
|
|
3386
|
+
JsonSchemaFormService,
|
|
3387
|
+
FrameworkLibraryService,
|
|
3388
|
+
WidgetLibraryService,
|
|
3389
|
+
{ provide: Framework, useClass: TheSeamFramework, multi: true },
|
|
3390
|
+
],
|
|
3391
|
+
exports: [
|
|
3392
|
+
TheSeamSchemaFormFrameworkComponent,
|
|
3393
|
+
JsonSchemaFormModule,
|
|
3394
|
+
],
|
|
3395
|
+
}]
|
|
3396
|
+
}] });
|
|
3397
|
+
|
|
3398
|
+
function isHorizontalNavItemType(item, type) {
|
|
3399
|
+
return item.itemType === type;
|
|
3400
|
+
}
|
|
3401
|
+
function isHorizontalNavItemActive(item) {
|
|
3402
|
+
return item.__state?.active ?? false;
|
|
3403
|
+
}
|
|
3404
|
+
function isHorizontalNavItemExpanded(item) {
|
|
3405
|
+
return item.__state?.expanded ?? false;
|
|
3406
|
+
}
|
|
3407
|
+
function isHorizontalNavItemFocused(item) {
|
|
3408
|
+
return item.__state?.focused ?? false;
|
|
3409
|
+
}
|
|
3410
|
+
function horizontalNavItemHasChildren(item) {
|
|
3411
|
+
return horizontalNavItemCanHaveChildren(item) && hasProperty(item, 'children') && item.children.length > 0;
|
|
3412
|
+
}
|
|
3413
|
+
function horizontalNavItemCanHaveChildren(item) {
|
|
3414
|
+
return isHorizontalNavItemType(item, 'basic') || isHorizontalNavItemType(item, 'link');
|
|
3415
|
+
}
|
|
3416
|
+
function horizontalNavItemHasActiveChild(item) {
|
|
3417
|
+
if (!horizontalNavItemHasChildren(item)) {
|
|
3418
|
+
return false;
|
|
3419
|
+
}
|
|
3420
|
+
for (const child of item.children) {
|
|
3421
|
+
if (getHorizontalNavItemStateProp(child, 'active') || horizontalNavItemHasActiveChild(child)) {
|
|
3422
|
+
return true;
|
|
3423
|
+
}
|
|
3424
|
+
}
|
|
3425
|
+
return false;
|
|
3426
|
+
}
|
|
3427
|
+
function horizontalNavItemHasExpandedChild(item) {
|
|
3428
|
+
if (!horizontalNavItemHasChildren(item)) {
|
|
3429
|
+
return false;
|
|
3430
|
+
}
|
|
3431
|
+
for (const child of item.children) {
|
|
3432
|
+
if (getHorizontalNavItemStateProp(child, 'expanded')) {
|
|
3433
|
+
return true;
|
|
3434
|
+
}
|
|
3435
|
+
}
|
|
3436
|
+
return false;
|
|
3437
|
+
}
|
|
3438
|
+
function horizontalNavItemCanBeActive(item) {
|
|
3439
|
+
return isHorizontalNavItemType(item, 'basic') || isHorizontalNavItemType(item, 'link');
|
|
3440
|
+
}
|
|
3441
|
+
function horizontalNavItemCanExpand(item) {
|
|
3442
|
+
return horizontalNavItemCanHaveChildren(item);
|
|
3443
|
+
}
|
|
3444
|
+
function findHorizontalNavLinkItems(items) {
|
|
3445
|
+
const linkItems = [];
|
|
3446
|
+
const _fn = (_items) => {
|
|
3447
|
+
for (const item of _items) {
|
|
3448
|
+
if (isHorizontalNavItemType(item, 'link')) {
|
|
3449
|
+
linkItems.push(item);
|
|
3450
|
+
}
|
|
3451
|
+
if (horizontalNavItemCanHaveChildren(item) && hasProperty(item, 'children')) {
|
|
3452
|
+
_fn(item.children);
|
|
3453
|
+
}
|
|
3454
|
+
}
|
|
3455
|
+
};
|
|
3456
|
+
_fn(items);
|
|
3457
|
+
return linkItems;
|
|
3458
|
+
}
|
|
3459
|
+
function setHorizontalNavItemStateProp(item, prop, value) {
|
|
3460
|
+
if (hasProperty(item, '__state')) {
|
|
3461
|
+
item.__state[prop] = value;
|
|
3462
|
+
}
|
|
3463
|
+
}
|
|
3464
|
+
function getHorizontalNavItemStateProp(item, prop) {
|
|
3465
|
+
return setDefaultHorizontalNavItemState(item).__state[prop];
|
|
3466
|
+
}
|
|
3467
|
+
function setDefaultHorizontalNavItemState(item) {
|
|
3468
|
+
if (hasProperty(item, '__state')) {
|
|
3469
|
+
return item;
|
|
3470
|
+
}
|
|
3471
|
+
item.__state = {
|
|
3472
|
+
active: false,
|
|
3473
|
+
expanded: false,
|
|
3474
|
+
focused: false
|
|
3475
|
+
};
|
|
3476
|
+
// TODO: See if there is a nice way to fix the typing for this.
|
|
3477
|
+
return item;
|
|
3478
|
+
}
|
|
3479
|
+
function areSameHorizontalNavItem(item1, item2) {
|
|
3480
|
+
if (isNullOrUndefined(item1) || isNullOrUndefined(item2)) {
|
|
3481
|
+
return false;
|
|
3482
|
+
}
|
|
3483
|
+
if (item1.itemType !== item2.itemType) {
|
|
3484
|
+
return false;
|
|
3485
|
+
}
|
|
3486
|
+
if (isHorizontalNavItemType(item1, 'title') && isHorizontalNavItemType(item2, 'title')) {
|
|
3487
|
+
return item1.label === item2.label;
|
|
3488
|
+
}
|
|
3489
|
+
else if (isHorizontalNavItemType(item1, 'divider') && isHorizontalNavItemType(item2, 'divider')) {
|
|
3490
|
+
return item1.label === item2.label;
|
|
3491
|
+
}
|
|
3492
|
+
else if (isHorizontalNavItemType(item1, 'basic') && isHorizontalNavItemType(item2, 'basic')) {
|
|
3493
|
+
return item1.label === item2.label;
|
|
3494
|
+
}
|
|
3495
|
+
else if (isHorizontalNavItemType(item1, 'link') && isHorizontalNavItemType(item2, 'link')) {
|
|
3496
|
+
return item1.label === item2.label && item1.link === item2.link;
|
|
3497
|
+
}
|
|
3498
|
+
else if (isHorizontalNavItemType(item1, 'button') && isHorizontalNavItemType(item2, 'button')) {
|
|
3499
|
+
return item1.onClick === item2.onClick;
|
|
3500
|
+
}
|
|
3501
|
+
return false;
|
|
3502
|
+
}
|
|
3503
|
+
|
|
3504
|
+
class TheSeamNavService {
|
|
3505
|
+
_router = inject(Router);
|
|
3506
|
+
_updatingCount = new BehaviorSubject(0);
|
|
3507
|
+
loading$;
|
|
3508
|
+
itemChanged = new Subject();
|
|
3509
|
+
constructor() {
|
|
3510
|
+
this.loading$ = this._updatingCount.pipe(map(count => count > 0), distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));
|
|
3511
|
+
}
|
|
3512
|
+
createItemsObservable(items) {
|
|
3513
|
+
return defer(() => {
|
|
3514
|
+
this.updateItemsStates(items);
|
|
3515
|
+
this.updateRouterFocusedItem(items);
|
|
3516
|
+
return new Observable((subscriber) => {
|
|
3517
|
+
const stateChangeSub = this.itemChanged.pipe(switchMap(change => {
|
|
3518
|
+
if (change.prop === 'focused' && change.newValue) {
|
|
3519
|
+
this.updateFocusedItem(items, change.item);
|
|
3520
|
+
}
|
|
3521
|
+
return this.loading$.pipe(filter(loading => !loading));
|
|
3522
|
+
})).subscribe(() => {
|
|
3523
|
+
subscriber.next(items);
|
|
3524
|
+
});
|
|
3525
|
+
try {
|
|
3526
|
+
this.updateItemsStates(items);
|
|
3527
|
+
}
|
|
3528
|
+
catch (err) {
|
|
3529
|
+
subscriber.error(err);
|
|
3530
|
+
}
|
|
3531
|
+
const routeChangeSub = this._router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe(event => {
|
|
3532
|
+
try {
|
|
3533
|
+
this.updateItemsStates(items);
|
|
3534
|
+
this.updateRouterFocusedItem(items);
|
|
3535
|
+
}
|
|
3536
|
+
catch (err) {
|
|
3537
|
+
subscriber.error(err);
|
|
3538
|
+
}
|
|
3539
|
+
});
|
|
3540
|
+
return () => {
|
|
3541
|
+
stateChangeSub.unsubscribe();
|
|
3542
|
+
routeChangeSub.unsubscribe();
|
|
3543
|
+
};
|
|
3544
|
+
}).pipe(startWith(items));
|
|
3545
|
+
});
|
|
3546
|
+
}
|
|
3547
|
+
_incUpdatingCount() {
|
|
3548
|
+
this._updatingCount.next(this._updatingCount.value + 1);
|
|
3549
|
+
}
|
|
3550
|
+
_decrUpdatingCount() {
|
|
3551
|
+
this._updatingCount.next(this._updatingCount.value - 1);
|
|
3552
|
+
}
|
|
3553
|
+
updateItemsStates(items) {
|
|
3554
|
+
this._incUpdatingCount();
|
|
3555
|
+
try {
|
|
3556
|
+
for (const item of items) {
|
|
3557
|
+
if (horizontalNavItemHasChildren(item)) {
|
|
3558
|
+
this.updateItemsStates(item.children);
|
|
3559
|
+
}
|
|
3560
|
+
this.updateItemState(item);
|
|
3561
|
+
}
|
|
3562
|
+
this._decrUpdatingCount();
|
|
3563
|
+
}
|
|
3564
|
+
catch (err) {
|
|
3565
|
+
this._decrUpdatingCount();
|
|
3566
|
+
throw err;
|
|
3567
|
+
}
|
|
3568
|
+
}
|
|
3569
|
+
updateItemState(item) {
|
|
3570
|
+
this._incUpdatingCount();
|
|
3571
|
+
try {
|
|
3572
|
+
setDefaultHorizontalNavItemState(item);
|
|
3573
|
+
this.setItemStateProp(item, 'active', this.horizontalNavLinkActive(item));
|
|
3574
|
+
// TODO: Implement this in a more optimized way. Unless our apps start
|
|
3575
|
+
// having large navs constantly updating their state, this shouldn't
|
|
3576
|
+
// have much impact on performance.
|
|
3577
|
+
this._updateItemExpandedState(item);
|
|
3578
|
+
this._decrUpdatingCount();
|
|
3579
|
+
}
|
|
3580
|
+
catch (err) {
|
|
3581
|
+
this._decrUpdatingCount();
|
|
3582
|
+
throw err;
|
|
3583
|
+
}
|
|
3584
|
+
}
|
|
3585
|
+
horizontalNavLinkActive(item) {
|
|
3586
|
+
if (isHorizontalNavItemType(item, 'link')) {
|
|
3587
|
+
const url = this._getUrl(item);
|
|
3588
|
+
if (notNullOrUndefined(url)) {
|
|
3589
|
+
const opts = this._getMatchOptions(item);
|
|
3590
|
+
return this._router.isActive(url, opts);
|
|
3591
|
+
}
|
|
3592
|
+
}
|
|
3593
|
+
return false;
|
|
3594
|
+
}
|
|
3595
|
+
_updateItemsExpandedState(items) {
|
|
3596
|
+
for (const item of items) {
|
|
3597
|
+
if (horizontalNavItemHasChildren(item)) {
|
|
3598
|
+
this._updateItemsExpandedState(item.children);
|
|
3599
|
+
}
|
|
3600
|
+
this._updateItemExpandedState(item);
|
|
3601
|
+
}
|
|
3602
|
+
}
|
|
3603
|
+
_updateItemExpandedState(item) {
|
|
3604
|
+
if (!horizontalNavItemCanExpand(item)) {
|
|
3605
|
+
if (getHorizontalNavItemStateProp(item, 'expanded')) {
|
|
3606
|
+
this.setItemStateProp(item, 'expanded', false);
|
|
3607
|
+
}
|
|
3608
|
+
return;
|
|
3609
|
+
}
|
|
3610
|
+
if (horizontalNavItemHasChildren(item)) {
|
|
3611
|
+
this._updateItemsExpandedState(item.children);
|
|
3612
|
+
}
|
|
3613
|
+
if (horizontalNavItemHasActiveChild(item) || horizontalNavItemHasExpandedChild(item)) {
|
|
3614
|
+
if (!getHorizontalNavItemStateProp(item, 'expanded')) {
|
|
3615
|
+
this.setItemStateProp(item, 'expanded', true);
|
|
3616
|
+
}
|
|
3617
|
+
}
|
|
3618
|
+
else {
|
|
3619
|
+
if (getHorizontalNavItemStateProp(item, 'expanded')) {
|
|
3620
|
+
this.setItemStateProp(item, 'expanded', false);
|
|
3621
|
+
}
|
|
3622
|
+
}
|
|
3623
|
+
}
|
|
3624
|
+
updateRouterFocusedItem(items) {
|
|
3625
|
+
const focusedItem = items.find(i => isHorizontalNavItemActive(i)) || items.find(i => horizontalNavItemHasActiveChild(i));
|
|
3626
|
+
if (notNullOrUndefined(focusedItem)) {
|
|
3627
|
+
this.updateFocusedItem(items, focusedItem);
|
|
3628
|
+
}
|
|
3629
|
+
}
|
|
3630
|
+
updateFocusedItem(items, focusedItem) {
|
|
3631
|
+
for (const item of items) {
|
|
3632
|
+
if (areSameHorizontalNavItem(item, focusedItem)) {
|
|
3633
|
+
setHorizontalNavItemStateProp(item, 'focused', true);
|
|
3634
|
+
}
|
|
3635
|
+
else {
|
|
3636
|
+
setHorizontalNavItemStateProp(item, 'focused', false);
|
|
3637
|
+
}
|
|
3638
|
+
}
|
|
3639
|
+
}
|
|
3640
|
+
_getNavExtras(item) {
|
|
3641
|
+
const navigationExtras = {};
|
|
3642
|
+
if (hasProperty(item, 'queryParams')) {
|
|
3643
|
+
navigationExtras.queryParams = item.queryParams;
|
|
3644
|
+
}
|
|
3645
|
+
if (hasProperty(item, 'fragment')) {
|
|
3646
|
+
navigationExtras.fragment = item.fragment;
|
|
3647
|
+
}
|
|
3648
|
+
if (hasProperty(item, 'queryParamsHandling')) {
|
|
3649
|
+
navigationExtras.queryParamsHandling = item.queryParamsHandling;
|
|
3650
|
+
}
|
|
3651
|
+
if (hasProperty(item, 'preserveFragment')) {
|
|
3652
|
+
navigationExtras.preserveFragment = item.preserveFragment;
|
|
3653
|
+
}
|
|
3654
|
+
return navigationExtras;
|
|
3655
|
+
}
|
|
3656
|
+
_getUrl(item) {
|
|
3657
|
+
const link = item.link;
|
|
3658
|
+
if (typeof link === 'string') {
|
|
3659
|
+
return this._router.createUrlTree([link], this._getNavExtras(item)).toString();
|
|
3660
|
+
}
|
|
3661
|
+
else if (Array.isArray(link)) {
|
|
3662
|
+
return this._router.createUrlTree(link, this._getNavExtras(item)).toString();
|
|
3663
|
+
}
|
|
3664
|
+
return null;
|
|
3665
|
+
}
|
|
3666
|
+
_getMatchOptions(item) {
|
|
3667
|
+
const defaultMatchOpts = {
|
|
3668
|
+
paths: 'subset',
|
|
3669
|
+
queryParams: 'subset',
|
|
3670
|
+
fragment: 'ignored',
|
|
3671
|
+
matrixParams: 'ignored',
|
|
3672
|
+
};
|
|
3673
|
+
if (hasProperty(item, 'matchOptions')) {
|
|
3674
|
+
return {
|
|
3675
|
+
...defaultMatchOpts,
|
|
3676
|
+
...item.matchOptions,
|
|
3677
|
+
};
|
|
3678
|
+
}
|
|
3679
|
+
return defaultMatchOpts;
|
|
3680
|
+
}
|
|
3681
|
+
setItemStateProp(item, prop, value) {
|
|
3682
|
+
const currentValue = getHorizontalNavItemStateProp(item, prop);
|
|
3683
|
+
if (currentValue !== value) {
|
|
3684
|
+
setHorizontalNavItemStateProp(item, prop, value);
|
|
3685
|
+
const changed = {
|
|
3686
|
+
item,
|
|
3687
|
+
prop,
|
|
3688
|
+
prevValue: currentValue,
|
|
3689
|
+
newValue: value,
|
|
3690
|
+
};
|
|
3691
|
+
this.itemChanged.next(changed);
|
|
3692
|
+
}
|
|
3693
|
+
}
|
|
3694
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamNavService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3695
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamNavService });
|
|
3696
|
+
}
|
|
3697
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamNavService, decorators: [{
|
|
3698
|
+
type: Injectable
|
|
3699
|
+
}], ctorParameters: () => [] });
|
|
3700
|
+
|
|
3701
|
+
class NavItemComponent {
|
|
3702
|
+
static ngAcceptInputType_hierLevel;
|
|
3703
|
+
static ngAcceptInputType_indentSize;
|
|
3704
|
+
static ngAcceptInputType_expanded;
|
|
3705
|
+
static ngAcceptInputType_compact;
|
|
3706
|
+
static ngAcceptInputType_active;
|
|
3707
|
+
_nav = inject(TheSeamNavService);
|
|
3708
|
+
_ngUnsubscribe = new Subject();
|
|
3709
|
+
faAngleLeft = faAngleLeft;
|
|
3710
|
+
item;
|
|
3711
|
+
itemType;
|
|
3712
|
+
icon;
|
|
3713
|
+
hideEmptyIcon;
|
|
3714
|
+
label;
|
|
3715
|
+
active = false;
|
|
3716
|
+
set link(value) { this._link.next(value); }
|
|
3717
|
+
get link() { return this._link.value; }
|
|
3718
|
+
_link = new BehaviorSubject(undefined);
|
|
3719
|
+
link$ = this._link.asObservable();
|
|
3720
|
+
queryParams;
|
|
3721
|
+
children;
|
|
3722
|
+
hierLevel = 0;
|
|
3723
|
+
indentSize = 10;
|
|
3724
|
+
set expanded(value) {
|
|
3725
|
+
this._expanded.next(coerceBooleanProperty(value));
|
|
3726
|
+
}
|
|
3727
|
+
get expanded() { return this._expanded.value; }
|
|
3728
|
+
_expanded = new BehaviorSubject(false);
|
|
3729
|
+
expanded$ = this._expanded.asObservable();
|
|
3730
|
+
set compact(value) { this._compact.next(coerceBooleanProperty(value)); }
|
|
3731
|
+
get compact() { return this._compact.value; }
|
|
3732
|
+
_compact = new BehaviorSubject(false);
|
|
3733
|
+
compact$ = this._compact.asObservable();
|
|
3734
|
+
focused = false;
|
|
3735
|
+
badgeText;
|
|
3736
|
+
badgeTheme = 'danger';
|
|
3737
|
+
/**
|
|
3738
|
+
* Content to provide to assistive technology, such as screen readers.
|
|
3739
|
+
*/
|
|
3740
|
+
badgeSrContent;
|
|
3741
|
+
get badgeTooltip() { return this._badgeTooltip; }
|
|
3742
|
+
set badgeTooltip(value) {
|
|
3743
|
+
if (value !== null && value !== undefined) {
|
|
3744
|
+
if (typeof value === 'string') {
|
|
3745
|
+
this._badgeTooltip = {
|
|
3746
|
+
tooltip: value,
|
|
3747
|
+
placement: 'auto',
|
|
3748
|
+
disabled: false
|
|
3749
|
+
};
|
|
3750
|
+
}
|
|
3751
|
+
else {
|
|
3752
|
+
this._badgeTooltip = {
|
|
3753
|
+
...value,
|
|
3754
|
+
placement: value.placement || 'auto',
|
|
3755
|
+
disabled: typeof value?.disabled === 'boolean'
|
|
3756
|
+
? value.disabled
|
|
3757
|
+
: typeof value.tooltip !== 'string'
|
|
3758
|
+
};
|
|
3759
|
+
}
|
|
3760
|
+
}
|
|
3761
|
+
else {
|
|
3762
|
+
this._badgeTooltip = undefined;
|
|
3763
|
+
}
|
|
3764
|
+
}
|
|
3765
|
+
_badgeTooltip;
|
|
3766
|
+
childAction = 'menu';
|
|
3767
|
+
expandAction = 'toggle';
|
|
3768
|
+
navItemExpanded = new EventEmitter();
|
|
3769
|
+
get _isActiveCssClass() { return this.active; }
|
|
3770
|
+
get _isChildActiveCssClass() { return this.hasActiveChild; }
|
|
3771
|
+
get _isExpandedCssClass() { return this.expanded; }
|
|
3772
|
+
get _isFocusedCssClass() { return this.focused; }
|
|
3773
|
+
get _attrDataHierLevel() { return this.hierLevel; }
|
|
3774
|
+
_menu;
|
|
3775
|
+
_navItems;
|
|
3776
|
+
ngOnDestroy() {
|
|
3777
|
+
this._ngUnsubscribe.next();
|
|
3778
|
+
this._ngUnsubscribe.complete();
|
|
3779
|
+
}
|
|
3780
|
+
get hasChildren() {
|
|
3781
|
+
return Array.isArray(this.children) && this.children.length > 0;
|
|
3782
|
+
}
|
|
3783
|
+
get hasActiveChild() {
|
|
3784
|
+
if (notNullOrUndefined(this.item)) {
|
|
3785
|
+
return horizontalNavItemHasActiveChild(this.item);
|
|
3786
|
+
}
|
|
3787
|
+
return false;
|
|
3788
|
+
}
|
|
3789
|
+
get hasMenuToggle() {
|
|
3790
|
+
return this.hasChildren && this.childAction === 'menu';
|
|
3791
|
+
}
|
|
3792
|
+
get menuTpl() {
|
|
3793
|
+
return this.hasMenuToggle ? this._menu : undefined;
|
|
3794
|
+
}
|
|
3795
|
+
get hasExpandingChildren() {
|
|
3796
|
+
return this.hasChildren && this.childAction === 'expand';
|
|
3797
|
+
}
|
|
3798
|
+
_toggleChildren(event) {
|
|
3799
|
+
let ex = !this.expanded;
|
|
3800
|
+
if (this.expandAction === 'expandOnly') {
|
|
3801
|
+
ex = true;
|
|
3802
|
+
}
|
|
3803
|
+
this.expanded = ex;
|
|
3804
|
+
this.navItemExpanded.emit(this.expanded);
|
|
3805
|
+
if (this.item && this.expanded) {
|
|
3806
|
+
this._nav.setItemStateProp(this.item, 'focused', this.expanded);
|
|
3807
|
+
}
|
|
3808
|
+
// Prevents seam-menu from closing out when toggling child expand
|
|
3809
|
+
event.stopPropagation();
|
|
3810
|
+
}
|
|
3811
|
+
// Updates expanded state when user exits seam-menu
|
|
3812
|
+
_menuEvent(menuExpanded) {
|
|
3813
|
+
if (menuExpanded === false) {
|
|
3814
|
+
this.expanded = false;
|
|
3815
|
+
// TODO: figure out why closing seam-menu with expanded submenu messes up animation
|
|
3816
|
+
if (this._navItems && this._navItems.length) {
|
|
3817
|
+
this._navItems.forEach(navItem => {
|
|
3818
|
+
navItem.expanded = false;
|
|
3819
|
+
});
|
|
3820
|
+
}
|
|
3821
|
+
}
|
|
3822
|
+
}
|
|
3823
|
+
get showIconBlock() {
|
|
3824
|
+
return notNullOrUndefined(this.icon) || this.hideEmptyIcon !== true;
|
|
3825
|
+
}
|
|
3826
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NavItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3827
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: NavItemComponent, isStandalone: true, selector: "seam-nav-item", inputs: { item: "item", itemType: "itemType", icon: "icon", hideEmptyIcon: "hideEmptyIcon", label: "label", active: "active", link: "link", queryParams: "queryParams", children: "children", hierLevel: "hierLevel", indentSize: "indentSize", expanded: "expanded", compact: "compact", focused: "focused", badgeText: "badgeText", badgeTheme: "badgeTheme", badgeSrContent: "badgeSrContent", badgeTooltip: "badgeTooltip", childAction: "childAction", expandAction: "expandAction" }, outputs: { navItemExpanded: "navItemExpanded" }, host: { properties: { "class.seam-nav-item--active": "this._isActiveCssClass", "class.seam-nav-item--child-active": "this._isChildActiveCssClass", "class.seam-nav-item--expanded": "this._isExpandedCssClass", "class.seam-nav-item--focused": "this._isFocusedCssClass", "attr.data-hier-level": "this._attrDataHierLevel" } }, viewQueries: [{ propertyName: "_menu", first: true, predicate: MenuComponent, descendants: true }, { propertyName: "_navItems", predicate: NavItemComponent, descendants: true }], exportAs: ["seamNavItem"], ngImport: i0, template: "<div class=\"d-flex flex-row h-100\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasExpandingChildren\">\n <div class=\"nav--group nav--group--level-{{ hierLevel + 1 }}\"\n *ngIf=\"expanded$ | async\" @childGroupAnim>\n <ng-container *ngTemplateOutlet=\"navChildren\"></ng-container>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button class=\"nav-item btn nav-btn p-0 d-flex align-items-stretch flex-row text-decoration-none w-100\"\n cdkMonitorElementFocus\n (click)=\"_toggleChildren($event)\"\n [seamMenuToggle]=\"menuTpl\"\n (menuToggle)=\"_menuEvent($event)\"\n [attr.aria-expanded]=\"expanded$ | async\">\n <div class=\"nav-link d-flex flex-row align-items-center w-100\" [class.nav-link__compact]=\"compact\">\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"hasChildren && !compact\"\n class=\"btn nav-btn nav-item--toggle-btn-container d-flex align-items-center\">\n <seam-icon\n class=\"nav-item--toggle-btn\"\n [class.nav-item--toggle-btn-expanded]=\"expanded$ | async\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <a *ngIf=\"link; else noLink\" class=\"nav-item nav-link d-flex flex-row w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\">\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a class=\"nav-item nav-link d-flex flex-row w-100 align-items-center\" [class.nav-link__compact]=\"compact\">\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n </a>\n </ng-template>\n\n <button *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn nav-btn nav-item--toggle-btn-container\"\n (click)=\"_toggleChildren($event)\"\n [seamMenuToggle]=\"menuTpl\"\n (menuToggle)=\"_menuEvent($event)\"\n [attr.aria-expanded]=\"expanded$ | async\"\n cdkMonitorElementFocus>\n <seam-icon\n class=\"nav-item--toggle-btn\"\n [class.nav-item--toggle-btn-expanded]=\"expanded$ | async\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"nav-item--title pt-1\" nav-item-label>{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div class=\"nav-item--badge\"\n [class.nav-item--badge-no-icon]=\"!icon\"\n [seamTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"!badgeTooltip || !!$any(badgeTooltip)?.disabled\">\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n\n<seam-menu #menu *ngIf=\"hasMenuToggle\">\n <ng-container *ngTemplateOutlet=\"navChildren\"></ng-container>\n</seam-menu>\n\n<ng-template #navChildren>\n <seam-nav-item *ngFor=\"let child of children\"\n [item]=\"child\"\n [hierLevel]=\"compact ? 0 : (hierLevel + 1)\"\n [compact]=\"compact\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\"\n [focused]=\"$any(child).__state?.focused\"\n childAction=\"expand\"\n [hideEmptyIcon]=\"hideEmptyIcon\">\n </seam-nav-item>\n</ng-template>\n\n", styles: ["seam-nav-item{display:block;transition:.25s ease-in-out background-color;text-align:inherit;border-radius:0;overflow:hidden;background:transparent;margin:0}seam-nav-item.seam-nav-item--expanded{background-color:transparent}seam-nav-item.seam-nav-item--expanded .nav-link{color:#000}seam-nav-item.seam-nav-item--child-active{background-color:#dae0e5}seam-nav-item.seam-nav-item--child-active .nav-link{color:#000}seam-nav-item.seam-nav-item--active{background-color:#dae0e5}seam-nav-item.seam-nav-item--active .active,seam-nav-item.seam-nav-item--active:active,seam-nav-item.seam-nav-item--active .nav-item.active:hover{background-color:#dae0e5}seam-nav-item.seam-nav-item--active .nav-item:hover{background-color:#e9ecef}seam-nav-item.seam-nav-item--active .nav-link{color:#000}seam-nav-item .badge{vertical-align:middle}seam-nav-item:not(.nav-item--icon) .nav-item--badge{pointer-events:all;margin-left:5px;margin-right:3px}seam-nav-item .nav-item--icon{position:relative;width:24px;max-width:24px;min-width:24px;height:24px;max-height:24px;min-height:24px;text-align:center;margin-right:.5rem}seam-nav-item .nav-item--icon .nav-item--badge{top:-4px;right:-4px;position:absolute}seam-nav-item .nav-item--icon .nav-item--badge .badge:empty{display:block;width:8px;height:8px;padding:0}seam-nav-item .nav-item--icon .nav-item--badge.nav-item--badge-no-icon{top:0;right:0}seam-nav-item .nav-item{transition:.25s ease-in-out background-color}seam-nav-item .nav-item:hover{background-color:#e9ecef}seam-nav-item .nav-item.active{pointer-events:none;cursor:default}seam-nav-item a.nav-item:not([href]):not([tabindex]){color:#000}seam-nav-item a.nav-item:not([href]):not([tabindex]):hover{background-color:transparent}seam-nav-item .nav-link{color:#000}seam-nav-item .nav-btn{font-weight:400;color:#000;text-decoration:none;border-radius:0;border:0 solid #dee2e6}seam-nav-item .nav-btn:hover{color:#000;text-decoration:underline}seam-nav-item .nav-btn:focus,seam-nav-item .nav-btn.focus{text-decoration:underline;box-shadow:none}seam-nav-item .nav-btn:disabled,seam-nav-item .nav-btn.disabled{color:#000;pointer-events:none}seam-nav-item .cdk-keyboard-focused{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}seam-nav-item .nav-item--toggle-btn-container{transition:.25s ease-in-out background-color;padding:0 .5rem}seam-nav-item button.nav-item--toggle-btn-container:hover{background-color:#e9ecef}seam-nav-item .nav-item--toggle-btn .svg-inline--fa{transition:.1s ease-in-out transform;transform:none}seam-nav-item .nav-item--toggle-btn.nav-item--toggle-btn-expanded .svg-inline--fa{transform:rotate(-90deg)}seam-nav-item .nav--group{will-change:height;overflow:hidden}seam-nav-item .nav--group--level-1{background-color:#eff1f4}seam-nav-item .nav--group--level-2{background-color:#e6eaed}seam-nav-item .nav--group--level-3{background-color:#dde2e7}seam-nav-item .nav--group--level-4{background-color:#d4dae1}seam-nav-item .nav--group--level-5{background-color:#cbd3da}seam-nav-item .nav--group--level-6{background-color:#c2cbd4}seam-nav-item .nav--group--level-7{background-color:#bac3cd}seam-nav-item .nav--group--level-8{background-color:#b1bcc7}seam-nav-item .nav--group--level-9{background-color:#a8b4c1}seam-nav-item .nav-item--divider{display:block;border-top:1px solid rgb(218.25,223.5,228.75);width:100%}seam-nav-item .nav-item--title{color:#000;font-size:24px;padding-left:10px}seam-nav-item .sr-only{top:0;left:0}\n"], dependencies: [{ kind: "component", type: NavItemComponent, selector: "seam-nav-item", inputs: ["item", "itemType", "icon", "hideEmptyIcon", "label", "active", "link", "queryParams", "children", "hierLevel", "indentSize", "expanded", "compact", "focused", "badgeText", "badgeTheme", "badgeSrContent", "badgeTooltip", "childAction", "expandAction"], outputs: ["navItemExpanded"], exportAs: ["seamNavItem"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i4.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "ngmodule", type: TheSeamMenuModule }, { kind: "component", type: i3$1.MenuComponent, selector: "seam-menu", inputs: ["menuClass", "baseWidth", "animationType"], outputs: ["closed"], exportAs: ["seamMenu"] }, { kind: "directive", type: i3$1.MenuToggleDirective, selector: "[seamMenuToggle]", inputs: ["seamMenuToggle", "positions", "seamMenuTogglePositionsOffsetY"], outputs: ["menuToggle", "menuOpened", "menuClosed"], exportAs: ["seamMenuToggle"] }, { kind: "component", type: i2.IconComponent, selector: "seam-icon", inputs: ["grayscaleOnDisable", "disabled", "iconClass", "icon", "size", "showDefaultOnError", "defaultIcon", "iconType"] }, { kind: "ngmodule", type: TheSeamIconModule }, { kind: "ngmodule", type: TheSeamTooltipModule }, { kind: "directive", type: i5.TheSeamTooltipDirective, selector: "[seamTooltip]", inputs: ["seamTooltip", "tooltipClass", "placement", "container", "disableTooltip", "showDelay", "hideDelay", "trigger"], exportAs: ["seamTooltip"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], animations: [
|
|
3828
|
+
trigger('childGroupAnim', [
|
|
3829
|
+
transition(':enter', [
|
|
3830
|
+
style({ height: 0 }),
|
|
3831
|
+
animate('0.2s ease-in-out', style({ height: '*' })),
|
|
3832
|
+
]),
|
|
3833
|
+
transition(':leave', [
|
|
3834
|
+
style({ height: '*' }),
|
|
3835
|
+
animate('0.2s ease-in-out', style({ height: 0 })),
|
|
3836
|
+
]),
|
|
3837
|
+
]),
|
|
3838
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
3839
|
+
}
|
|
3840
|
+
__decorate([
|
|
3841
|
+
InputBoolean()
|
|
3842
|
+
], NavItemComponent.prototype, "active", void 0);
|
|
3843
|
+
__decorate([
|
|
3844
|
+
InputNumber(0)
|
|
3845
|
+
], NavItemComponent.prototype, "hierLevel", void 0);
|
|
3846
|
+
__decorate([
|
|
3847
|
+
InputNumber(10)
|
|
3848
|
+
], NavItemComponent.prototype, "indentSize", void 0);
|
|
3849
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: NavItemComponent, decorators: [{
|
|
3850
|
+
type: Component,
|
|
3851
|
+
args: [{ selector: 'seam-nav-item', exportAs: 'seamNavItem', animations: [
|
|
3852
|
+
trigger('childGroupAnim', [
|
|
3853
|
+
transition(':enter', [
|
|
3854
|
+
style({ height: 0 }),
|
|
3855
|
+
animate('0.2s ease-in-out', style({ height: '*' })),
|
|
3856
|
+
]),
|
|
3857
|
+
transition(':leave', [
|
|
3858
|
+
style({ height: '*' }),
|
|
3859
|
+
animate('0.2s ease-in-out', style({ height: 0 })),
|
|
3860
|
+
]),
|
|
3861
|
+
]),
|
|
3862
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
3863
|
+
NgIf,
|
|
3864
|
+
NgFor,
|
|
3865
|
+
NgTemplateOutlet,
|
|
3866
|
+
AsyncPipe,
|
|
3867
|
+
RouterModule,
|
|
3868
|
+
A11yModule,
|
|
3869
|
+
TheSeamMenuModule,
|
|
3870
|
+
TheSeamIconModule,
|
|
3871
|
+
TheSeamTooltipModule,
|
|
3872
|
+
], template: "<div class=\"d-flex flex-row h-100\">\n <ng-container *ngIf=\"itemType === 'basic'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeBasic\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'link'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeLink\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'divider'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeDivider\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"itemType === 'title'\">\n <ng-template [ngTemplateOutlet]=\"itemTypeTitle\"></ng-template>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"hasExpandingChildren\">\n <div class=\"nav--group nav--group--level-{{ hierLevel + 1 }}\"\n *ngIf=\"expanded$ | async\" @childGroupAnim>\n <ng-container *ngTemplateOutlet=\"navChildren\"></ng-container>\n </div>\n</ng-container>\n\n<ng-template #itemTypeBasic>\n <button class=\"nav-item btn nav-btn p-0 d-flex align-items-stretch flex-row text-decoration-none w-100\"\n cdkMonitorElementFocus\n (click)=\"_toggleChildren($event)\"\n [seamMenuToggle]=\"menuTpl\"\n (menuToggle)=\"_menuEvent($event)\"\n [attr.aria-expanded]=\"expanded$ | async\">\n <div class=\"nav-link d-flex flex-row align-items-center w-100\" [class.nav-link__compact]=\"compact\">\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n\n <div *ngIf=\"hasChildren && !compact\"\n class=\"btn nav-btn nav-item--toggle-btn-container d-flex align-items-center\">\n <seam-icon\n class=\"nav-item--toggle-btn\"\n [class.nav-item--toggle-btn-expanded]=\"expanded$ | async\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n </div>\n </button>\n</ng-template>\n\n<ng-template #itemTypeLink>\n <a *ngIf=\"link; else noLink\" class=\"nav-item nav-link d-flex flex-row w-100 align-items-center\"\n [class.nav-link__compact]=\"compact\"\n [routerLink]=\"link\"\n [queryParams]=\"queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\">\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n <ng-container *ngIf=\"compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n <ng-container *ngIf=\"!compact\">\n <ng-template [ngTemplateOutlet]=\"itemBadge\"></ng-template>\n </ng-container>\n </a>\n\n <ng-template #noLink>\n <a class=\"nav-item nav-link d-flex flex-row w-100 align-items-center\" [class.nav-link__compact]=\"compact\">\n <div class=\"nav-item--icon\" *ngIf=\"showIconBlock\">\n <seam-icon [icon]=\"icon\" *ngIf=\"icon\"></seam-icon>\n </div>\n <span *ngIf=\"!compact\" nav-item-label>\n {{ label }}\n </span>\n <span *ngIf=\"compact\" class=\"sr-only\" nav-item-label>{{ label }}</span>\n </a>\n </ng-template>\n\n <button *ngIf=\"hasChildren && !compact\"\n type=\"button\"\n class=\"btn nav-btn nav-item--toggle-btn-container\"\n (click)=\"_toggleChildren($event)\"\n [seamMenuToggle]=\"menuTpl\"\n (menuToggle)=\"_menuEvent($event)\"\n [attr.aria-expanded]=\"expanded$ | async\"\n cdkMonitorElementFocus>\n <seam-icon\n class=\"nav-item--toggle-btn\"\n [class.nav-item--toggle-btn-expanded]=\"expanded$ | async\"\n [icon]=\"faAngleLeft\"\n type>\n </seam-icon>\n <span class=\"sr-only\">Group Toggle</span>\n </button>\n</ng-template>\n\n<ng-template #itemTypeDivider>\n <div class=\"px-2 w-100\">\n <hr class=\"nav-item--divider\" />\n </div>\n</ng-template>\n\n<ng-template #itemTypeTitle>\n <ng-container *ngIf=\"!compact\">\n <span class=\"nav-item--title pt-1\" nav-item-label>{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #itemBadge>\n <ng-container *ngIf=\"badgeText\">\n <div class=\"badge-spacer flex-grow-1\" *ngIf=\"!compact\"></div>\n <div class=\"nav-item--badge\"\n [class.nav-item--badge-no-icon]=\"!icon\"\n [seamTooltip]=\"$any(badgeTooltip)?.tooltip\"\n [tooltipClass]=\"$any(badgeTooltip)?.class\"\n [placement]=\"$any(badgeTooltip)?.placement\"\n [container]=\"$any(badgeTooltip)?.container\"\n [disableTooltip]=\"!badgeTooltip || !!$any(badgeTooltip)?.disabled\">\n <span class=\"badge badge-pill badge-{{ badgeTheme }}\">\n <ng-container *ngIf=\"!compact || !icon\">\n {{ badgeText }}\n </ng-container>\n <span *ngIf=\"badgeSrContent\">{{ badgeSrContent }}</span>\n </span>\n </div>\n </ng-container>\n</ng-template>\n\n<seam-menu #menu *ngIf=\"hasMenuToggle\">\n <ng-container *ngTemplateOutlet=\"navChildren\"></ng-container>\n</seam-menu>\n\n<ng-template #navChildren>\n <seam-nav-item *ngFor=\"let child of children\"\n [item]=\"child\"\n [hierLevel]=\"compact ? 0 : (hierLevel + 1)\"\n [compact]=\"compact\"\n [itemType]=\"$any(child).itemType\"\n [icon]=\"$any(child).icon\"\n [label]=\"$any(child).label\"\n [link]=\"$any(child).link\"\n [badgeText]=\"$any(child).badge?.text\"\n [badgeTheme]=\"$any(child).badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(child).badge?.srContent\"\n [badgeTooltip]=\"$any(child)?.badge?.tooltip\"\n [queryParams]=\"$any(child).queryParams\"\n routerLinkActive=\"active\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [children]=\"$any(child)?.children\"\n [active]=\"$any(child).__state?.active\"\n [expanded]=\"$any(child).__state?.expanded\"\n [focused]=\"$any(child).__state?.focused\"\n childAction=\"expand\"\n [hideEmptyIcon]=\"hideEmptyIcon\">\n </seam-nav-item>\n</ng-template>\n\n", styles: ["seam-nav-item{display:block;transition:.25s ease-in-out background-color;text-align:inherit;border-radius:0;overflow:hidden;background:transparent;margin:0}seam-nav-item.seam-nav-item--expanded{background-color:transparent}seam-nav-item.seam-nav-item--expanded .nav-link{color:#000}seam-nav-item.seam-nav-item--child-active{background-color:#dae0e5}seam-nav-item.seam-nav-item--child-active .nav-link{color:#000}seam-nav-item.seam-nav-item--active{background-color:#dae0e5}seam-nav-item.seam-nav-item--active .active,seam-nav-item.seam-nav-item--active:active,seam-nav-item.seam-nav-item--active .nav-item.active:hover{background-color:#dae0e5}seam-nav-item.seam-nav-item--active .nav-item:hover{background-color:#e9ecef}seam-nav-item.seam-nav-item--active .nav-link{color:#000}seam-nav-item .badge{vertical-align:middle}seam-nav-item:not(.nav-item--icon) .nav-item--badge{pointer-events:all;margin-left:5px;margin-right:3px}seam-nav-item .nav-item--icon{position:relative;width:24px;max-width:24px;min-width:24px;height:24px;max-height:24px;min-height:24px;text-align:center;margin-right:.5rem}seam-nav-item .nav-item--icon .nav-item--badge{top:-4px;right:-4px;position:absolute}seam-nav-item .nav-item--icon .nav-item--badge .badge:empty{display:block;width:8px;height:8px;padding:0}seam-nav-item .nav-item--icon .nav-item--badge.nav-item--badge-no-icon{top:0;right:0}seam-nav-item .nav-item{transition:.25s ease-in-out background-color}seam-nav-item .nav-item:hover{background-color:#e9ecef}seam-nav-item .nav-item.active{pointer-events:none;cursor:default}seam-nav-item a.nav-item:not([href]):not([tabindex]){color:#000}seam-nav-item a.nav-item:not([href]):not([tabindex]):hover{background-color:transparent}seam-nav-item .nav-link{color:#000}seam-nav-item .nav-btn{font-weight:400;color:#000;text-decoration:none;border-radius:0;border:0 solid #dee2e6}seam-nav-item .nav-btn:hover{color:#000;text-decoration:underline}seam-nav-item .nav-btn:focus,seam-nav-item .nav-btn.focus{text-decoration:underline;box-shadow:none}seam-nav-item .nav-btn:disabled,seam-nav-item .nav-btn.disabled{color:#000;pointer-events:none}seam-nav-item .cdk-keyboard-focused{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}seam-nav-item .nav-item--toggle-btn-container{transition:.25s ease-in-out background-color;padding:0 .5rem}seam-nav-item button.nav-item--toggle-btn-container:hover{background-color:#e9ecef}seam-nav-item .nav-item--toggle-btn .svg-inline--fa{transition:.1s ease-in-out transform;transform:none}seam-nav-item .nav-item--toggle-btn.nav-item--toggle-btn-expanded .svg-inline--fa{transform:rotate(-90deg)}seam-nav-item .nav--group{will-change:height;overflow:hidden}seam-nav-item .nav--group--level-1{background-color:#eff1f4}seam-nav-item .nav--group--level-2{background-color:#e6eaed}seam-nav-item .nav--group--level-3{background-color:#dde2e7}seam-nav-item .nav--group--level-4{background-color:#d4dae1}seam-nav-item .nav--group--level-5{background-color:#cbd3da}seam-nav-item .nav--group--level-6{background-color:#c2cbd4}seam-nav-item .nav--group--level-7{background-color:#bac3cd}seam-nav-item .nav--group--level-8{background-color:#b1bcc7}seam-nav-item .nav--group--level-9{background-color:#a8b4c1}seam-nav-item .nav-item--divider{display:block;border-top:1px solid rgb(218.25,223.5,228.75);width:100%}seam-nav-item .nav-item--title{color:#000;font-size:24px;padding-left:10px}seam-nav-item .sr-only{top:0;left:0}\n"] }]
|
|
3873
|
+
}], propDecorators: { item: [{
|
|
3874
|
+
type: Input
|
|
3875
|
+
}], itemType: [{
|
|
3876
|
+
type: Input
|
|
3877
|
+
}], icon: [{
|
|
3878
|
+
type: Input
|
|
3879
|
+
}], hideEmptyIcon: [{
|
|
3880
|
+
type: Input
|
|
3881
|
+
}], label: [{
|
|
3882
|
+
type: Input
|
|
3883
|
+
}], active: [{
|
|
3884
|
+
type: Input
|
|
3885
|
+
}], link: [{
|
|
3886
|
+
type: Input
|
|
3887
|
+
}], queryParams: [{
|
|
3888
|
+
type: Input
|
|
3889
|
+
}], children: [{
|
|
3890
|
+
type: Input
|
|
3891
|
+
}], hierLevel: [{
|
|
3892
|
+
type: Input
|
|
3893
|
+
}], indentSize: [{
|
|
3894
|
+
type: Input
|
|
3895
|
+
}], expanded: [{
|
|
3896
|
+
type: Input
|
|
3897
|
+
}], compact: [{
|
|
3898
|
+
type: Input
|
|
3899
|
+
}], focused: [{
|
|
3900
|
+
type: Input
|
|
3901
|
+
}], badgeText: [{
|
|
3902
|
+
type: Input
|
|
3903
|
+
}], badgeTheme: [{
|
|
3904
|
+
type: Input
|
|
3905
|
+
}], badgeSrContent: [{
|
|
3906
|
+
type: Input
|
|
3907
|
+
}], badgeTooltip: [{
|
|
3908
|
+
type: Input
|
|
3909
|
+
}], childAction: [{
|
|
3910
|
+
type: Input
|
|
3911
|
+
}], expandAction: [{
|
|
3912
|
+
type: Input
|
|
3913
|
+
}], navItemExpanded: [{
|
|
3914
|
+
type: Output
|
|
3915
|
+
}], _isActiveCssClass: [{
|
|
3916
|
+
type: HostBinding,
|
|
3917
|
+
args: ['class.seam-nav-item--active']
|
|
3918
|
+
}], _isChildActiveCssClass: [{
|
|
3919
|
+
type: HostBinding,
|
|
3920
|
+
args: ['class.seam-nav-item--child-active']
|
|
3921
|
+
}], _isExpandedCssClass: [{
|
|
3922
|
+
type: HostBinding,
|
|
3923
|
+
args: ['class.seam-nav-item--expanded']
|
|
3924
|
+
}], _isFocusedCssClass: [{
|
|
3925
|
+
type: HostBinding,
|
|
3926
|
+
args: ['class.seam-nav-item--focused']
|
|
3927
|
+
}], _attrDataHierLevel: [{
|
|
3928
|
+
type: HostBinding,
|
|
3929
|
+
args: ['attr.data-hier-level']
|
|
3930
|
+
}], _menu: [{
|
|
3931
|
+
type: ViewChild,
|
|
3932
|
+
args: [MenuComponent]
|
|
3933
|
+
}], _navItems: [{
|
|
3934
|
+
type: ViewChildren,
|
|
3935
|
+
args: [NavItemComponent]
|
|
3936
|
+
}] } });
|
|
3937
|
+
|
|
3938
|
+
class HorizontalNavComponent {
|
|
3939
|
+
static ngAcceptInputType_hasHeaderToggle;
|
|
3940
|
+
_nav = inject(TheSeamNavService);
|
|
3941
|
+
_ngUnsubscribe = new Subject();
|
|
3942
|
+
get items() { return this._items.value; }
|
|
3943
|
+
set items(value) {
|
|
3944
|
+
this._items.next(value);
|
|
3945
|
+
}
|
|
3946
|
+
_items = new BehaviorSubject([]);
|
|
3947
|
+
items$;
|
|
3948
|
+
hideEmptyIcon = true;
|
|
3949
|
+
hierLevel = 0;
|
|
3950
|
+
childAction = 'menu';
|
|
3951
|
+
expandAction = 'toggle';
|
|
3952
|
+
navItemExpanded = new EventEmitter();
|
|
3953
|
+
constructor() {
|
|
3954
|
+
this.items$ = this._items.asObservable().pipe(switchMap(items => items ? this._nav.createItemsObservable(items) : []), shareReplay({ bufferSize: 1, refCount: true }));
|
|
3955
|
+
}
|
|
3956
|
+
ngOnDestroy() {
|
|
3957
|
+
this._ngUnsubscribe.next();
|
|
3958
|
+
this._ngUnsubscribe.complete();
|
|
3959
|
+
}
|
|
3960
|
+
_navItemExpanded(item, expanded) {
|
|
3961
|
+
this.navItemExpanded.emit({ navItem: item, expanded });
|
|
3962
|
+
}
|
|
3963
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: HorizontalNavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3964
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: HorizontalNavComponent, isStandalone: true, selector: "seam-horizontal-nav", inputs: { items: "items", hideEmptyIcon: "hideEmptyIcon", hierLevel: "hierLevel", childAction: "childAction", expandAction: "expandAction" }, outputs: { navItemExpanded: "navItemExpanded" }, providers: [
|
|
3965
|
+
TheSeamNavService,
|
|
3966
|
+
], ngImport: i0, template: "<div class=\"nav-inner-wrapper\" class=\"nav-inner-wrapper-{{hierLevel}}\">\n <div class=\"nav-items-row\">\n <seam-nav-item *ngFor=\"let item of items$ | async\"\n class=\"flex-shrink-0\"\n [item]=\"item\"\n [itemType]=\"$any(item)?.itemType\"\n [icon]=\"$any(item)?.icon\"\n [label]=\"$any(item)?.label\"\n [link]=\"$any(item)?.link\"\n [badgeText]=\"$any(item)?.badge?.text\"\n [badgeTheme]=\"$any(item)?.badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(item)?.badge?.srContent\"\n [badgeTooltip]=\"$any(item)?.badge?.tooltip\"\n [queryParams]=\"$any(item)?.queryParams\"\n [children]=\"$any(item)?.children\"\n [active]=\"$any(item).__state?.active\"\n [expanded]=\"$any(item).__state?.expanded\"\n [focused]=\"$any(item).__state?.focused\"\n [hierLevel]=\"hierLevel\"\n [childAction]=\"childAction\"\n [expandAction]=\"expandAction\"\n (navItemExpanded)=\"_navItemExpanded(item, $event)\"\n [hideEmptyIcon]=\"hideEmptyIcon\">\n </seam-nav-item>\n </div>\n</div>\n", styles: ["seam-horizontal-nav,.seam-horizontal-nav{display:block;height:100%;position:relative;z-index:2}seam-horizontal-nav .nav-inner-wrapper,.seam-horizontal-nav .nav-inner-wrapper{background:none;height:100%}seam-horizontal-nav .nav-backdrop,.seam-horizontal-nav .nav-backdrop{background:#343a4099;width:100vw;height:100vh}seam-horizontal-nav .nav-backdrop.nav-backdrop-hidden,.seam-horizontal-nav .nav-backdrop.nav-backdrop-hidden{display:none;width:0;height:0;padding:0;margin:0}seam-horizontal-nav .nav-content,.seam-horizontal-nav .nav-content{display:flex;flex-direction:column;height:100%;flex-wrap:nowrap}seam-horizontal-nav .nav-items-container,.seam-horizontal-nav .nav-items-container{display:flex;flex-direction:column;width:100%;flex:1 1 100%}seam-horizontal-nav .nav-items-row,.seam-horizontal-nav .nav-items-row{height:100%;display:flex;padding:.25rem .5rem}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: NavItemComponent, selector: "seam-nav-item", inputs: ["item", "itemType", "icon", "hideEmptyIcon", "label", "active", "link", "queryParams", "children", "hierLevel", "indentSize", "expanded", "compact", "focused", "badgeText", "badgeTheme", "badgeSrContent", "badgeTooltip", "childAction", "expandAction"], outputs: ["navItemExpanded"], exportAs: ["seamNavItem"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
3967
|
+
}
|
|
3968
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: HorizontalNavComponent, decorators: [{
|
|
3969
|
+
type: Component,
|
|
3970
|
+
args: [{ selector: 'seam-horizontal-nav', providers: [
|
|
3971
|
+
TheSeamNavService,
|
|
3972
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
|
|
3973
|
+
NgFor,
|
|
3974
|
+
AsyncPipe,
|
|
3975
|
+
NavItemComponent,
|
|
3976
|
+
], template: "<div class=\"nav-inner-wrapper\" class=\"nav-inner-wrapper-{{hierLevel}}\">\n <div class=\"nav-items-row\">\n <seam-nav-item *ngFor=\"let item of items$ | async\"\n class=\"flex-shrink-0\"\n [item]=\"item\"\n [itemType]=\"$any(item)?.itemType\"\n [icon]=\"$any(item)?.icon\"\n [label]=\"$any(item)?.label\"\n [link]=\"$any(item)?.link\"\n [badgeText]=\"$any(item)?.badge?.text\"\n [badgeTheme]=\"$any(item)?.badge?.theme || 'danger'\"\n [badgeSrContent]=\"$any(item)?.badge?.srContent\"\n [badgeTooltip]=\"$any(item)?.badge?.tooltip\"\n [queryParams]=\"$any(item)?.queryParams\"\n [children]=\"$any(item)?.children\"\n [active]=\"$any(item).__state?.active\"\n [expanded]=\"$any(item).__state?.expanded\"\n [focused]=\"$any(item).__state?.focused\"\n [hierLevel]=\"hierLevel\"\n [childAction]=\"childAction\"\n [expandAction]=\"expandAction\"\n (navItemExpanded)=\"_navItemExpanded(item, $event)\"\n [hideEmptyIcon]=\"hideEmptyIcon\">\n </seam-nav-item>\n </div>\n</div>\n", styles: ["seam-horizontal-nav,.seam-horizontal-nav{display:block;height:100%;position:relative;z-index:2}seam-horizontal-nav .nav-inner-wrapper,.seam-horizontal-nav .nav-inner-wrapper{background:none;height:100%}seam-horizontal-nav .nav-backdrop,.seam-horizontal-nav .nav-backdrop{background:#343a4099;width:100vw;height:100vh}seam-horizontal-nav .nav-backdrop.nav-backdrop-hidden,.seam-horizontal-nav .nav-backdrop.nav-backdrop-hidden{display:none;width:0;height:0;padding:0;margin:0}seam-horizontal-nav .nav-content,.seam-horizontal-nav .nav-content{display:flex;flex-direction:column;height:100%;flex-wrap:nowrap}seam-horizontal-nav .nav-items-container,.seam-horizontal-nav .nav-items-container{display:flex;flex-direction:column;width:100%;flex:1 1 100%}seam-horizontal-nav .nav-items-row,.seam-horizontal-nav .nav-items-row{height:100%;display:flex;padding:.25rem .5rem}\n"] }]
|
|
3977
|
+
}], ctorParameters: () => [], propDecorators: { items: [{
|
|
3978
|
+
type: Input
|
|
3979
|
+
}], hideEmptyIcon: [{
|
|
3980
|
+
type: Input
|
|
3981
|
+
}], hierLevel: [{
|
|
3982
|
+
type: Input
|
|
3983
|
+
}], childAction: [{
|
|
3984
|
+
type: Input
|
|
3985
|
+
}], expandAction: [{
|
|
3986
|
+
type: Input
|
|
3987
|
+
}], navItemExpanded: [{
|
|
3988
|
+
type: Output
|
|
3989
|
+
}] } });
|
|
3990
|
+
|
|
3991
|
+
class TheSeamNavModule {
|
|
3992
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamNavModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
3993
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.0", ngImport: i0, type: TheSeamNavModule, imports: [NavItemComponent,
|
|
3994
|
+
HorizontalNavComponent], exports: [NavItemComponent,
|
|
3995
|
+
HorizontalNavComponent] });
|
|
3996
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamNavModule, imports: [NavItemComponent,
|
|
3997
|
+
HorizontalNavComponent] });
|
|
3998
|
+
}
|
|
3999
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamNavModule, decorators: [{
|
|
4000
|
+
type: NgModule,
|
|
4001
|
+
args: [{
|
|
4002
|
+
imports: [
|
|
4003
|
+
NavItemComponent,
|
|
4004
|
+
HorizontalNavComponent,
|
|
4005
|
+
],
|
|
4006
|
+
exports: [
|
|
4007
|
+
NavItemComponent,
|
|
4008
|
+
HorizontalNavComponent,
|
|
4009
|
+
],
|
|
4010
|
+
}]
|
|
4011
|
+
}] });
|
|
4012
|
+
|
|
4013
|
+
/**
|
|
4014
|
+
* Generated bundle index. Do not edit.
|
|
4015
|
+
*/
|
|
4016
|
+
|
|
4017
|
+
export { BaseLayoutContentDirective, BaseLayoutContentFooterDirective, BaseLayoutContentHeaderDirective, BaseLayoutSideBarDirective, BaseLayoutSideBarFooterDirective, BaseLayoutSideBarHeaderDirective, BaseLayoutTopBarDirective, DEFAULT_SIDE_NAV_CONFIG, DashboardComponent, DashboardWidgetContainerComponent, DashboardWidgetPortalOutletDirective, DashboardWidgetTemplateContainerComponent, DashboardWidgetsComponent, DashboardWidgetsPreferencesService, DashboardWidgetsService, HierarchyLevelResolver, HierarchyRouterOutletComponent, HorizontalNavComponent, NavItemComponent, SideNavComponent, SideNavItemComponent, SideNavToggleComponent, THESEAM_BASE_LAYOUT_REF, THESEAM_DASHBOARD_WIDGETS_PREFERENCES_ACCESSOR, THESEAM_SCHEMA_FRAMEWORK_OVERRIDES, THESEAM_SIDE_NAV_ACCESSOR, THESEAM_SIDE_NAV_CONFIG, THE_SEAM_BASE_LAYOUT, TheSeamBaseLayoutComponent, TheSeamBaseLayoutModule, TheSeamBaseLayoutNavToggleDirective, TheSeamDashboardModule, TheSeamDynamicRouterModule, TheSeamFramework, TheSeamNavModule, TheSeamSchemaFormFrameworkComponent, TheSeamSchemaFormModule, TheSeamSideNavModule, TheSeamTopBarComponent, TheSeamTopBarModule, TopBarCompactMenuBtnDetailDirective, TopBarItemDirective, TopBarMenuBtnDetailDirective, TopBarMenuButtonComponent, TopBarMenuDirective, TopBarNavToggleBtnDetailDirective, TopBarTitleComponent, applyItemConfig, areSameHorizontalNavItem, canBeActive, canExpand, canHaveChildren, extendFramework, fader, findHorizontalNavLinkItems, findLinkItems, getHorizontalNavItemStateProp, getItemStateProp, hasActiveChild, hasChildren, hasExpandedChild, horizontalNavItemCanBeActive, horizontalNavItemCanExpand, horizontalNavItemCanHaveChildren, horizontalNavItemHasActiveChild, horizontalNavItemHasChildren, horizontalNavItemHasExpandedChild, isExpanded, isHorizontalNavItemActive, isHorizontalNavItemExpanded, isHorizontalNavItemFocused, isHorizontalNavItemType, isNavItemActive, isNavItemType, routeChanges, setDefaultHorizontalNavItemState, setDefaultState, setHorizontalNavItemStateProp, setItemStateProp, sideNavExpandStateChangeFn, sideToSide, slider, stepper, transformer };
|
|
4018
|
+
//# sourceMappingURL=theseam-ui-common-framework.mjs.map
|