@clr/angular 17.12.1 → 18.0.0-beta.1
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/README.md +1 -5
- package/fesm2022/clr-angular-accordion.mjs +355 -0
- package/fesm2022/clr-angular-accordion.mjs.map +1 -0
- package/fesm2022/clr-angular-button.mjs +713 -0
- package/fesm2022/clr-angular-button.mjs.map +1 -0
- package/fesm2022/clr-angular-collapsible-panel.mjs +201 -0
- package/fesm2022/clr-angular-collapsible-panel.mjs.map +1 -0
- package/fesm2022/clr-angular-data-datagrid.mjs +7601 -0
- package/fesm2022/clr-angular-data-datagrid.mjs.map +1 -0
- package/fesm2022/clr-angular-data-stack-view.mjs +442 -0
- package/fesm2022/clr-angular-data-stack-view.mjs.map +1 -0
- package/fesm2022/clr-angular-data-tree-view.mjs +1106 -0
- package/fesm2022/clr-angular-data-tree-view.mjs.map +1 -0
- package/fesm2022/clr-angular-data.mjs +9145 -0
- package/fesm2022/clr-angular-data.mjs.map +1 -0
- package/fesm2022/clr-angular-emphasis-alert.mjs +624 -0
- package/fesm2022/clr-angular-emphasis-alert.mjs.map +1 -0
- package/fesm2022/clr-angular-emphasis-badge.mjs +69 -0
- package/fesm2022/clr-angular-emphasis-badge.mjs.map +1 -0
- package/fesm2022/clr-angular-emphasis-common.mjs +25 -0
- package/fesm2022/clr-angular-emphasis-common.mjs.map +1 -0
- package/fesm2022/clr-angular-emphasis-label.mjs +105 -0
- package/fesm2022/clr-angular-emphasis-label.mjs.map +1 -0
- package/fesm2022/clr-angular-emphasis.mjs +807 -0
- package/fesm2022/clr-angular-emphasis.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-checkbox.mjs +301 -0
- package/fesm2022/clr-angular-forms-checkbox.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-combobox.mjs +1445 -0
- package/fesm2022/clr-angular-forms-combobox.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-common.mjs +1235 -0
- package/fesm2022/clr-angular-forms-common.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-datalist.mjs +275 -0
- package/fesm2022/clr-angular-forms-datalist.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-datepicker.mjs +3230 -0
- package/fesm2022/clr-angular-forms-datepicker.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-file-input.mjs +810 -0
- package/fesm2022/clr-angular-forms-file-input.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-input.mjs +167 -0
- package/fesm2022/clr-angular-forms-input.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-number-input.mjs +249 -0
- package/fesm2022/clr-angular-forms-number-input.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-password.mjs +245 -0
- package/fesm2022/clr-angular-forms-password.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-radio.mjs +262 -0
- package/fesm2022/clr-angular-forms-radio.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-range.mjs +199 -0
- package/fesm2022/clr-angular-forms-range.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-select.mjs +166 -0
- package/fesm2022/clr-angular-forms-select.mjs.map +1 -0
- package/fesm2022/clr-angular-forms-textarea.mjs +149 -0
- package/fesm2022/clr-angular-forms-textarea.mjs.map +1 -0
- package/fesm2022/clr-angular-forms.mjs +8592 -0
- package/fesm2022/clr-angular-forms.mjs.map +1 -0
- package/fesm2022/clr-angular-icon.mjs +7387 -0
- package/fesm2022/clr-angular-icon.mjs.map +1 -0
- package/fesm2022/clr-angular-layout-breadcrumbs.mjs +120 -0
- package/fesm2022/clr-angular-layout-breadcrumbs.mjs.map +1 -0
- package/fesm2022/clr-angular-layout-main-container.mjs +100 -0
- package/fesm2022/clr-angular-layout-main-container.mjs.map +1 -0
- package/fesm2022/clr-angular-layout-nav.mjs +580 -0
- package/fesm2022/clr-angular-layout-nav.mjs.map +1 -0
- package/fesm2022/clr-angular-layout-tabs.mjs +807 -0
- package/fesm2022/clr-angular-layout-tabs.mjs.map +1 -0
- package/fesm2022/clr-angular-layout-vertical-nav.mjs +507 -0
- package/fesm2022/clr-angular-layout-vertical-nav.mjs.map +1 -0
- package/fesm2022/clr-angular-layout.mjs +2086 -0
- package/fesm2022/clr-angular-layout.mjs.map +1 -0
- package/fesm2022/clr-angular-modal.mjs +618 -0
- package/fesm2022/clr-angular-modal.mjs.map +1 -0
- package/fesm2022/clr-angular-popover-common.mjs +1027 -0
- package/fesm2022/clr-angular-popover-common.mjs.map +1 -0
- package/fesm2022/clr-angular-popover-dropdown.mjs +489 -0
- package/fesm2022/clr-angular-popover-dropdown.mjs.map +1 -0
- package/fesm2022/clr-angular-popover-signpost.mjs +478 -0
- package/fesm2022/clr-angular-popover-signpost.mjs.map +1 -0
- package/fesm2022/clr-angular-popover-tooltip.mjs +293 -0
- package/fesm2022/clr-angular-popover-tooltip.mjs.map +1 -0
- package/fesm2022/clr-angular-popover.mjs +2271 -0
- package/fesm2022/clr-angular-popover.mjs.map +1 -0
- package/fesm2022/clr-angular-progress-progress-bars.mjs +217 -0
- package/fesm2022/clr-angular-progress-progress-bars.mjs.map +1 -0
- package/fesm2022/clr-angular-progress-spinner.mjs +132 -0
- package/fesm2022/clr-angular-progress-spinner.mjs.map +1 -0
- package/fesm2022/clr-angular-stepper.mjs +688 -0
- package/fesm2022/clr-angular-stepper.mjs.map +1 -0
- package/fesm2022/clr-angular-timeline.mjs +316 -0
- package/fesm2022/clr-angular-timeline.mjs.map +1 -0
- package/fesm2022/clr-angular-utils-conditional.mjs +351 -0
- package/fesm2022/clr-angular-utils-conditional.mjs.map +1 -0
- package/fesm2022/clr-angular-utils-loading.mjs +107 -0
- package/fesm2022/clr-angular-utils-loading.mjs.map +1 -0
- package/fesm2022/clr-angular-utils.mjs +2544 -0
- package/fesm2022/clr-angular-utils.mjs.map +1 -0
- package/fesm2022/clr-angular-wizard.mjs +2863 -0
- package/fesm2022/clr-angular-wizard.mjs.map +1 -0
- package/fesm2022/clr-angular.mjs +38771 -0
- package/fesm2022/clr-angular.mjs.map +1 -0
- package/package.json +197 -18
- package/popover/common/README.md +110 -0
- package/types/clr-angular-accordion.d.ts +100 -0
- package/types/clr-angular-button.d.ts +169 -0
- package/types/clr-angular-collapsible-panel.d.ts +73 -0
- package/types/clr-angular-data-datagrid.d.ts +1850 -0
- package/types/clr-angular-data-stack-view.d.ts +87 -0
- package/types/clr-angular-data-tree-view.d.ts +220 -0
- package/types/clr-angular-data.d.ts +2147 -0
- package/types/clr-angular-emphasis-alert.d.ts +175 -0
- package/types/clr-angular-emphasis-badge.d.ts +25 -0
- package/types/clr-angular-emphasis-common.d.ts +6 -0
- package/types/clr-angular-emphasis-label.d.ts +29 -0
- package/types/clr-angular-emphasis.d.ts +231 -0
- package/types/clr-angular-forms-checkbox.d.ts +69 -0
- package/types/clr-angular-forms-combobox.d.ts +300 -0
- package/types/clr-angular-forms-common.d.ts +336 -0
- package/types/clr-angular-forms-datalist.d.ts +59 -0
- package/types/clr-angular-forms-datepicker.d.ts +951 -0
- package/types/clr-angular-forms-file-input.d.ts +190 -0
- package/types/clr-angular-forms-input.d.ts +29 -0
- package/types/clr-angular-forms-number-input.d.ts +43 -0
- package/types/clr-angular-forms-password.d.ts +52 -0
- package/types/clr-angular-forms-radio.d.ts +50 -0
- package/types/clr-angular-forms-range.d.ts +37 -0
- package/types/clr-angular-forms-select.d.ts +36 -0
- package/types/clr-angular-forms-textarea.d.ts +29 -0
- package/types/clr-angular-forms.d.ts +2072 -0
- package/types/clr-angular-icon.d.ts +1498 -0
- package/types/clr-angular-layout-breadcrumbs.d.ts +45 -0
- package/types/clr-angular-layout-main-container.d.ts +28 -0
- package/types/clr-angular-layout-nav.d.ts +138 -0
- package/types/clr-angular-layout-tabs.d.ts +158 -0
- package/types/clr-angular-layout-vertical-nav.d.ts +128 -0
- package/types/clr-angular-layout.d.ts +476 -0
- package/types/clr-angular-modal.d.ts +160 -0
- package/types/clr-angular-popover-common.d.ts +230 -0
- package/types/clr-angular-popover-dropdown.d.ts +122 -0
- package/types/clr-angular-popover-signpost.d.ts +149 -0
- package/types/clr-angular-popover-tooltip.d.ts +83 -0
- package/types/clr-angular-popover.d.ts +568 -0
- package/{progress/progress-bars/progress-bar.d.ts → types/clr-angular-progress-progress-bars.d.ts} +15 -3
- package/{progress/spinner/spinner.d.ts → types/clr-angular-progress-spinner.d.ts} +15 -3
- package/types/clr-angular-stepper.d.ts +179 -0
- package/types/clr-angular-timeline.d.ts +86 -0
- package/types/clr-angular-utils-conditional.d.ts +132 -0
- package/types/clr-angular-utils-loading.d.ts +38 -0
- package/types/clr-angular-utils.d.ts +1075 -0
- package/types/clr-angular-wizard.d.ts +1451 -0
- package/types/clr-angular.d.ts +10257 -0
- package/accordion/accordion-content.d.ts +0 -5
- package/accordion/accordion-description.d.ts +0 -5
- package/accordion/accordion-panel.d.ts +0 -45
- package/accordion/accordion-title.d.ts +0 -5
- package/accordion/accordion.d.ts +0 -20
- package/accordion/accordion.module.d.ts +0 -16
- package/accordion/chocolate/accordion-oompa-loompa.d.ts +0 -12
- package/accordion/chocolate/accordion-willy-wonka.d.ts +0 -6
- package/accordion/enums/accordion-status.enum.d.ts +0 -5
- package/accordion/enums/accordion-strategy.enum.d.ts +0 -4
- package/accordion/index.d.ts +0 -10
- package/accordion/models/accordion.model.d.ts +0 -27
- package/accordion/providers/accordion.service.d.ts +0 -17
- package/accordion/stepper/chocolate/stepper-oompa-loompa.d.ts +0 -12
- package/accordion/stepper/chocolate/stepper-willy-wonka.d.ts +0 -6
- package/accordion/stepper/index.d.ts +0 -4
- package/accordion/stepper/models/stepper.model.d.ts +0 -29
- package/accordion/stepper/providers/stepper.service.d.ts +0 -23
- package/accordion/stepper/step-button.d.ts +0 -21
- package/accordion/stepper/stepper-panel.d.ts +0 -28
- package/accordion/stepper/stepper.d.ts +0 -26
- package/accordion/stepper/stepper.module.d.ts +0 -14
- package/accordion/utils/animation.d.ts +0 -2
- package/button/button-group/button-group.d.ts +0 -60
- package/button/button-group/button-group.module.d.ts +0 -13
- package/button/button-group/button.d.ts +0 -40
- package/button/button-group/index.d.ts +0 -3
- package/button/button-loading/index.d.ts +0 -2
- package/button/button-loading/loading-button.d.ts +0 -17
- package/button/button-loading/loading-button.module.d.ts +0 -10
- package/button/button.module.d.ts +0 -9
- package/button/index.d.ts +0 -3
- package/button/providers/button-group-focus-handler.service.d.ts +0 -32
- package/button/providers/button-group-focus.enum.d.ts +0 -4
- package/button/providers/button-in-group.service.d.ts +0 -10
- package/clr-angular.module.d.ts +0 -25
- package/data/data.module.d.ts +0 -9
- package/data/datagrid/built-in/comparators/datagrid-property-comparator.d.ts +0 -7
- package/data/datagrid/built-in/filters/datagrid-numeric-filter-impl.d.ts +0 -37
- package/data/datagrid/built-in/filters/datagrid-numeric-filter.d.ts +0 -58
- package/data/datagrid/built-in/filters/datagrid-property-numeric-filter.d.ts +0 -8
- package/data/datagrid/built-in/filters/datagrid-property-string-filter.d.ts +0 -8
- package/data/datagrid/built-in/filters/datagrid-string-filter-impl.d.ts +0 -39
- package/data/datagrid/built-in/filters/datagrid-string-filter.d.ts +0 -60
- package/data/datagrid/built-in/nested-property.d.ts +0 -10
- package/data/datagrid/chocolate/actionable-oompa-loompa.d.ts +0 -12
- package/data/datagrid/chocolate/datagrid-willy-wonka.d.ts +0 -6
- package/data/datagrid/chocolate/expandable-oompa-loompa.d.ts +0 -12
- package/data/datagrid/datagrid-action-bar.d.ts +0 -5
- package/data/datagrid/datagrid-action-overflow.d.ts +0 -28
- package/data/datagrid/datagrid-cell.d.ts +0 -21
- package/data/datagrid/datagrid-column-separator.d.ts +0 -36
- package/data/datagrid/datagrid-column-toggle-button.d.ts +0 -16
- package/data/datagrid/datagrid-column-toggle-trackby.d.ts +0 -6
- package/data/datagrid/datagrid-column-toggle.d.ts +0 -30
- package/data/datagrid/datagrid-column.d.ts +0 -92
- package/data/datagrid/datagrid-detail-body.d.ts +0 -5
- package/data/datagrid/datagrid-detail-header.d.ts +0 -14
- package/data/datagrid/datagrid-detail-registerer.d.ts +0 -9
- package/data/datagrid/datagrid-detail.d.ts +0 -17
- package/data/datagrid/datagrid-filter.d.ts +0 -40
- package/data/datagrid/datagrid-footer.d.ts +0 -17
- package/data/datagrid/datagrid-hideable-column.d.ts +0 -41
- package/data/datagrid/datagrid-if-detail.d.ts +0 -28
- package/data/datagrid/datagrid-if-expanded.service.d.ts +0 -18
- package/data/datagrid/datagrid-items.d.ts +0 -28
- package/data/datagrid/datagrid-page-size.d.ts +0 -13
- package/data/datagrid/datagrid-pagination.d.ts +0 -73
- package/data/datagrid/datagrid-placeholder.d.ts +0 -12
- package/data/datagrid/datagrid-row-detail.d.ts +0 -34
- package/data/datagrid/datagrid-row.d.ts +0 -109
- package/data/datagrid/datagrid-selection-cell.directive.d.ts +0 -9
- package/data/datagrid/datagrid-single-selection.directive.d.ts +0 -21
- package/data/datagrid/datagrid-virtual-scroll.directive.d.ts +0 -80
- package/data/datagrid/datagrid.d.ts +0 -149
- package/data/datagrid/datagrid.module.d.ts +0 -60
- package/data/datagrid/enums/column-changes.enum.d.ts +0 -6
- package/data/datagrid/enums/display-mode.enum.d.ts +0 -4
- package/data/datagrid/enums/render-step.enum.d.ts +0 -7
- package/data/datagrid/enums/selection-type.d.ts +0 -5
- package/data/datagrid/enums/sort-order.enum.d.ts +0 -12
- package/data/datagrid/index.d.ts +0 -50
- package/data/datagrid/interfaces/column-state.interface.d.ts +0 -14
- package/data/datagrid/interfaces/comparator.interface.d.ts +0 -3
- package/data/datagrid/interfaces/filter.interface.d.ts +0 -8
- package/data/datagrid/interfaces/key-nav-grid-strategy.interface.d.ts +0 -11
- package/data/datagrid/interfaces/numeric-filter.interface.d.ts +0 -3
- package/data/datagrid/interfaces/state.interface.d.ts +0 -14
- package/data/datagrid/interfaces/string-filter.interface.d.ts +0 -3
- package/data/datagrid/interfaces/virtual-scroll-data-range.interface.d.ts +0 -5
- package/data/datagrid/providers/column-resizer.service.d.ts +0 -22
- package/data/datagrid/providers/column-state.provider.d.ts +0 -9
- package/data/datagrid/providers/columns.service.d.ts +0 -18
- package/data/datagrid/providers/custom-filter.d.ts +0 -2
- package/data/datagrid/providers/detail.service.d.ts +0 -28
- package/data/datagrid/providers/display-mode.service.d.ts +0 -14
- package/data/datagrid/providers/filters.d.ts +0 -44
- package/data/datagrid/providers/global-expandable-rows.d.ts +0 -16
- package/data/datagrid/providers/items.d.ts +0 -84
- package/data/datagrid/providers/page.d.ts +0 -62
- package/data/datagrid/providers/row-action-service.d.ts +0 -12
- package/data/datagrid/providers/selection.d.ts +0 -105
- package/data/datagrid/providers/sort.d.ts +0 -44
- package/data/datagrid/providers/state-debouncer.provider.d.ts +0 -14
- package/data/datagrid/providers/state.provider.d.ts +0 -24
- package/data/datagrid/providers/table-size.service.d.ts +0 -17
- package/data/datagrid/render/cell-renderer.d.ts +0 -18
- package/data/datagrid/render/constants.d.ts +0 -4
- package/data/datagrid/render/header-renderer.d.ts +0 -34
- package/data/datagrid/render/main-renderer.d.ts +0 -71
- package/data/datagrid/render/noop-dom-adapter.d.ts +0 -13
- package/data/datagrid/render/render-organizer.d.ts +0 -12
- package/data/datagrid/render/row-detail-renderer.d.ts +0 -11
- package/data/datagrid/render/row-renderer.d.ts +0 -17
- package/data/datagrid/utils/datagrid-filter-registrar.d.ts +0 -18
- package/data/datagrid/utils/key-navigation-grid.controller.d.ts +0 -32
- package/data/datagrid/utils/key-navigation-strategies/default.d.ts +0 -15
- package/data/datagrid/utils/key-navigation-strategies/expanded-columns-row.d.ts +0 -12
- package/data/datagrid/utils/key-navigation-strategies/expanded-row.d.ts +0 -12
- package/data/datagrid/utils/key-navigation-utils.d.ts +0 -24
- package/data/datagrid/wrapped-cell.d.ts +0 -10
- package/data/datagrid/wrapped-column.d.ts +0 -10
- package/data/datagrid/wrapped-row.d.ts +0 -10
- package/data/index.d.ts +0 -4
- package/data/stack-view/index.d.ts +0 -6
- package/data/stack-view/stack-block.d.ts +0 -37
- package/data/stack-view/stack-content-input.d.ts +0 -6
- package/data/stack-view/stack-header.d.ts +0 -8
- package/data/stack-view/stack-view-custom-tags.d.ts +0 -15
- package/data/stack-view/stack-view.d.ts +0 -5
- package/data/stack-view/stack-view.module.d.ts +0 -18
- package/data/tree-view/index.d.ts +0 -6
- package/data/tree-view/models/async-array.d.ts +0 -3
- package/data/tree-view/models/declarative-tree-node.model.d.ts +0 -9
- package/data/tree-view/models/recursive-tree-node.model.d.ts +0 -18
- package/data/tree-view/models/selected-state.enum.d.ts +0 -5
- package/data/tree-view/models/tree-node.model.d.ts +0 -23
- package/data/tree-view/recursive-children.d.ts +0 -22
- package/data/tree-view/recursive-for-of.d.ts +0 -22
- package/data/tree-view/tree-features.service.d.ts +0 -22
- package/data/tree-view/tree-focus-manager.service.d.ts +0 -32
- package/data/tree-view/tree-node-link.d.ts +0 -10
- package/data/tree-view/tree-node.d.ts +0 -59
- package/data/tree-view/tree-view.module.d.ts +0 -17
- package/data/tree-view/tree.d.ts +0 -22
- package/emphasis/alert/alert-item.d.ts +0 -8
- package/emphasis/alert/alert-text.d.ts +0 -9
- package/emphasis/alert/alert.d.ts +0 -40
- package/emphasis/alert/alert.module.d.ts +0 -18
- package/emphasis/alert/alerts-pager.d.ts +0 -31
- package/emphasis/alert/alerts.d.ts +0 -32
- package/emphasis/alert/index.d.ts +0 -6
- package/emphasis/alert/providers/icon-and-types.service.d.ts +0 -18
- package/emphasis/alert/providers/multi-alert.service.d.ts +0 -28
- package/emphasis/alert/utils/alert-info-object.d.ts +0 -5
- package/emphasis/alert/utils/alert-types.d.ts +0 -1
- package/emphasis/emphasis.module.d.ts +0 -7
- package/emphasis/index.d.ts +0 -2
- package/esm2020/accordion/accordion-content.mjs +0 -21
- package/esm2020/accordion/accordion-description.mjs +0 -22
- package/esm2020/accordion/accordion-panel.mjs +0 -141
- package/esm2020/accordion/accordion-title.mjs +0 -22
- package/esm2020/accordion/accordion.mjs +0 -62
- package/esm2020/accordion/accordion.module.mjs +0 -56
- package/esm2020/accordion/chocolate/accordion-oompa-loompa.mjs +0 -34
- package/esm2020/accordion/chocolate/accordion-willy-wonka.mjs +0 -20
- package/esm2020/accordion/enums/accordion-status.enum.mjs +0 -13
- package/esm2020/accordion/enums/accordion-strategy.enum.mjs +0 -12
- package/esm2020/accordion/index.mjs +0 -17
- package/esm2020/accordion/models/accordion.model.mjs +0 -61
- package/esm2020/accordion/providers/accordion.service.mjs +0 -48
- package/esm2020/accordion/stepper/chocolate/stepper-oompa-loompa.mjs +0 -34
- package/esm2020/accordion/stepper/chocolate/stepper-willy-wonka.mjs +0 -20
- package/esm2020/accordion/stepper/index.mjs +0 -11
- package/esm2020/accordion/stepper/models/stepper.model.mjs +0 -146
- package/esm2020/accordion/stepper/providers/stepper.service.mjs +0 -75
- package/esm2020/accordion/stepper/step-button.mjs +0 -62
- package/esm2020/accordion/stepper/stepper-panel.mjs +0 -96
- package/esm2020/accordion/stepper/stepper.mjs +0 -105
- package/esm2020/accordion/stepper/stepper.module.mjs +0 -31
- package/esm2020/accordion/utils/animation.mjs +0 -31
- package/esm2020/button/button-group/button-group.mjs +0 -164
- package/esm2020/button/button-group/button-group.module.mjs +0 -28
- package/esm2020/button/button-group/button.mjs +0 -175
- package/esm2020/button/button-group/index.mjs +0 -10
- package/esm2020/button/button-loading/index.mjs +0 -9
- package/esm2020/button/button-loading/loading-button.mjs +0 -164
- package/esm2020/button/button-loading/loading-button.module.mjs +0 -25
- package/esm2020/button/button.module.mjs +0 -26
- package/esm2020/button/index.mjs +0 -10
- package/esm2020/button/providers/button-group-focus-handler.service.mjs +0 -97
- package/esm2020/button/providers/button-group-focus.enum.mjs +0 -12
- package/esm2020/button/providers/button-in-group.service.mjs +0 -26
- package/esm2020/clr-angular.mjs +0 -5
- package/esm2020/clr-angular.module.mjs +0 -93
- package/esm2020/data/data.module.mjs +0 -23
- package/esm2020/data/datagrid/built-in/comparators/datagrid-property-comparator.mjs +0 -46
- package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter-impl.mjs +0 -93
- package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter.mjs +0 -259
- package/esm2020/data/datagrid/built-in/filters/datagrid-property-numeric-filter.mjs +0 -28
- package/esm2020/data/datagrid/built-in/filters/datagrid-property-string-filter.mjs +0 -27
- package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter-impl.mjs +0 -82
- package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter.mjs +0 -185
- package/esm2020/data/datagrid/built-in/nested-property.mjs +0 -38
- package/esm2020/data/datagrid/chocolate/actionable-oompa-loompa.mjs +0 -34
- package/esm2020/data/datagrid/chocolate/datagrid-willy-wonka.mjs +0 -20
- package/esm2020/data/datagrid/chocolate/expandable-oompa-loompa.mjs +0 -34
- package/esm2020/data/datagrid/datagrid-action-bar.mjs +0 -21
- package/esm2020/data/datagrid/datagrid-action-overflow.mjs +0 -166
- package/esm2020/data/datagrid/datagrid-cell.mjs +0 -40
- package/esm2020/data/datagrid/datagrid-column-separator.mjs +0 -171
- package/esm2020/data/datagrid/datagrid-column-toggle-button.mjs +0 -65
- package/esm2020/data/datagrid/datagrid-column-toggle-trackby.mjs +0 -8
- package/esm2020/data/datagrid/datagrid-column-toggle.mjs +0 -204
- package/esm2020/data/datagrid/datagrid-column.mjs +0 -420
- package/esm2020/data/datagrid/datagrid-detail-body.mjs +0 -31
- package/esm2020/data/datagrid/datagrid-detail-header.mjs +0 -67
- package/esm2020/data/datagrid/datagrid-detail-registerer.mjs +0 -37
- package/esm2020/data/datagrid/datagrid-detail.mjs +0 -98
- package/esm2020/data/datagrid/datagrid-filter.mjs +0 -186
- package/esm2020/data/datagrid/datagrid-footer.mjs +0 -78
- package/esm2020/data/datagrid/datagrid-hideable-column.mjs +0 -106
- package/esm2020/data/datagrid/datagrid-if-detail.mjs +0 -96
- package/esm2020/data/datagrid/datagrid-if-expanded.service.mjs +0 -55
- package/esm2020/data/datagrid/datagrid-items.mjs +0 -72
- package/esm2020/data/datagrid/datagrid-page-size.mjs +0 -63
- package/esm2020/data/datagrid/datagrid-pagination.mjs +0 -388
- package/esm2020/data/datagrid/datagrid-placeholder.mjs +0 -42
- package/esm2020/data/datagrid/datagrid-row-detail.mjs +0 -116
- package/esm2020/data/datagrid/datagrid-row.mjs +0 -372
- package/esm2020/data/datagrid/datagrid-selection-cell.directive.mjs +0 -37
- package/esm2020/data/datagrid/datagrid-single-selection.directive.mjs +0 -74
- package/esm2020/data/datagrid/datagrid-virtual-scroll.directive.mjs +0 -340
- package/esm2020/data/datagrid/datagrid.mjs +0 -556
- package/esm2020/data/datagrid/datagrid.module.mjs +0 -238
- package/esm2020/data/datagrid/enums/column-changes.enum.mjs +0 -16
- package/esm2020/data/datagrid/enums/display-mode.enum.mjs +0 -12
- package/esm2020/data/datagrid/enums/render-step.enum.mjs +0 -15
- package/esm2020/data/datagrid/enums/selection-type.mjs +0 -13
- package/esm2020/data/datagrid/enums/sort-order.enum.mjs +0 -20
- package/esm2020/data/datagrid/index.mjs +0 -56
- package/esm2020/data/datagrid/interfaces/column-state.interface.mjs +0 -8
- package/esm2020/data/datagrid/interfaces/comparator.interface.mjs +0 -8
- package/esm2020/data/datagrid/interfaces/filter.interface.mjs +0 -8
- package/esm2020/data/datagrid/interfaces/key-nav-grid-strategy.interface.mjs +0 -8
- package/esm2020/data/datagrid/interfaces/numeric-filter.interface.mjs +0 -8
- package/esm2020/data/datagrid/interfaces/state.interface.mjs +0 -8
- package/esm2020/data/datagrid/interfaces/string-filter.interface.mjs +0 -8
- package/esm2020/data/datagrid/interfaces/virtual-scroll-data-range.interface.mjs +0 -8
- package/esm2020/data/datagrid/providers/column-resizer.service.mjs +0 -58
- package/esm2020/data/datagrid/providers/column-state.provider.mjs +0 -19
- package/esm2020/data/datagrid/providers/columns.service.mjs +0 -63
- package/esm2020/data/datagrid/providers/custom-filter.mjs +0 -9
- package/esm2020/data/datagrid/providers/detail.service.mjs +0 -76
- package/esm2020/data/datagrid/providers/display-mode.service.mjs +0 -36
- package/esm2020/data/datagrid/providers/filters.mjs +0 -112
- package/esm2020/data/datagrid/providers/global-expandable-rows.mjs +0 -34
- package/esm2020/data/datagrid/providers/items.mjs +0 -177
- package/esm2020/data/datagrid/providers/page.mjs +0 -156
- package/esm2020/data/datagrid/providers/row-action-service.mjs +0 -31
- package/esm2020/data/datagrid/providers/selection.mjs +0 -365
- package/esm2020/data/datagrid/providers/sort.mjs +0 -86
- package/esm2020/data/datagrid/providers/state-debouncer.provider.mjs +0 -43
- package/esm2020/data/datagrid/providers/state.provider.mjs +0 -75
- package/esm2020/data/datagrid/providers/table-size.service.mjs +0 -45
- package/esm2020/data/datagrid/render/cell-renderer.mjs +0 -59
- package/esm2020/data/datagrid/render/constants.mjs +0 -13
- package/esm2020/data/datagrid/render/header-renderer.mjs +0 -117
- package/esm2020/data/datagrid/render/main-renderer.mjs +0 -285
- package/esm2020/data/datagrid/render/noop-dom-adapter.mjs +0 -48
- package/esm2020/data/datagrid/render/render-organizer.mjs +0 -39
- package/esm2020/data/datagrid/render/row-detail-renderer.mjs +0 -31
- package/esm2020/data/datagrid/render/row-renderer.mjs +0 -62
- package/esm2020/data/datagrid/utils/datagrid-filter-registrar.mjs +0 -43
- package/esm2020/data/datagrid/utils/key-navigation-grid.controller.mjs +0 -155
- package/esm2020/data/datagrid/utils/key-navigation-strategies/default.mjs +0 -132
- package/esm2020/data/datagrid/utils/key-navigation-strategies/expanded-columns-row.mjs +0 -129
- package/esm2020/data/datagrid/utils/key-navigation-strategies/expanded-row.mjs +0 -165
- package/esm2020/data/datagrid/utils/key-navigation-utils.mjs +0 -121
- package/esm2020/data/datagrid/wrapped-cell.mjs +0 -37
- package/esm2020/data/datagrid/wrapped-column.mjs +0 -38
- package/esm2020/data/datagrid/wrapped-row.mjs +0 -38
- package/esm2020/data/index.mjs +0 -11
- package/esm2020/data/stack-view/index.mjs +0 -13
- package/esm2020/data/stack-view/stack-block.mjs +0 -236
- package/esm2020/data/stack-view/stack-content-input.mjs +0 -27
- package/esm2020/data/stack-view/stack-header.mjs +0 -37
- package/esm2020/data/stack-view/stack-view-custom-tags.mjs +0 -57
- package/esm2020/data/stack-view/stack-view.mjs +0 -23
- package/esm2020/data/stack-view/stack-view.module.mjs +0 -53
- package/esm2020/data/tree-view/index.mjs +0 -13
- package/esm2020/data/tree-view/models/async-array.mjs +0 -11
- package/esm2020/data/tree-view/models/declarative-tree-node.model.mjs +0 -37
- package/esm2020/data/tree-view/models/recursive-tree-node.model.mjs +0 -77
- package/esm2020/data/tree-view/models/selected-state.enum.mjs +0 -17
- package/esm2020/data/tree-view/models/tree-node.model.mjs +0 -116
- package/esm2020/data/tree-view/recursive-children.mjs +0 -88
- package/esm2020/data/tree-view/recursive-for-of.mjs +0 -57
- package/esm2020/data/tree-view/tree-features.service.mjs +0 -38
- package/esm2020/data/tree-view/tree-focus-manager.service.mjs +0 -190
- package/esm2020/data/tree-view/tree-node-link.mjs +0 -30
- package/esm2020/data/tree-view/tree-node.mjs +0 -348
- package/esm2020/data/tree-view/tree-view.module.mjs +0 -35
- package/esm2020/data/tree-view/tree.mjs +0 -102
- package/esm2020/emphasis/alert/alert-item.mjs +0 -52
- package/esm2020/emphasis/alert/alert-text.mjs +0 -23
- package/esm2020/emphasis/alert/alert.mjs +0 -142
- package/esm2020/emphasis/alert/alert.module.mjs +0 -36
- package/esm2020/emphasis/alert/alerts-pager.mjs +0 -87
- package/esm2020/emphasis/alert/alerts.mjs +0 -102
- package/esm2020/emphasis/alert/index.mjs +0 -13
- package/esm2020/emphasis/alert/providers/icon-and-types.service.mjs +0 -90
- package/esm2020/emphasis/alert/providers/multi-alert.service.mjs +0 -97
- package/esm2020/emphasis/alert/utils/alert-info-object.mjs +0 -8
- package/esm2020/emphasis/alert/utils/alert-types.mjs +0 -9
- package/esm2020/emphasis/emphasis.module.mjs +0 -21
- package/esm2020/emphasis/index.mjs +0 -9
- package/esm2020/forms/checkbox/checkbox-container.mjs +0 -136
- package/esm2020/forms/checkbox/checkbox-wrapper.mjs +0 -70
- package/esm2020/forms/checkbox/checkbox.mjs +0 -53
- package/esm2020/forms/checkbox/checkbox.module.mjs +0 -33
- package/esm2020/forms/checkbox/index.mjs +0 -11
- package/esm2020/forms/combobox/combobox-container.mjs +0 -106
- package/esm2020/forms/combobox/combobox.mjs +0 -360
- package/esm2020/forms/combobox/combobox.module.mjs +0 -97
- package/esm2020/forms/combobox/index.mjs +0 -15
- package/esm2020/forms/combobox/model/combobox.model.mjs +0 -9
- package/esm2020/forms/combobox/model/multi-select-combobox.model.mjs +0 -82
- package/esm2020/forms/combobox/model/pseudo-focus.model.mjs +0 -24
- package/esm2020/forms/combobox/model/single-select-combobox.model.mjs +0 -39
- package/esm2020/forms/combobox/option-group.mjs +0 -42
- package/esm2020/forms/combobox/option-items.directive.mjs +0 -110
- package/esm2020/forms/combobox/option-selected.directive.mjs +0 -25
- package/esm2020/forms/combobox/option.mjs +0 -103
- package/esm2020/forms/combobox/options.mjs +0 -156
- package/esm2020/forms/combobox/providers/combobox-container.service.mjs +0 -19
- package/esm2020/forms/combobox/providers/combobox-focus-handler.service.mjs +0 -222
- package/esm2020/forms/combobox/providers/option-selection.service.mjs +0 -85
- package/esm2020/forms/common/abstract-container.mjs +0 -135
- package/esm2020/forms/common/abstract-control.mjs +0 -51
- package/esm2020/forms/common/common.module.mjs +0 -78
- package/esm2020/forms/common/control-container.mjs +0 -84
- package/esm2020/forms/common/control.mjs +0 -31
- package/esm2020/forms/common/error.mjs +0 -38
- package/esm2020/forms/common/form.mjs +0 -54
- package/esm2020/forms/common/helper.mjs +0 -37
- package/esm2020/forms/common/if-control-state/abstract-if-state.mjs +0 -46
- package/esm2020/forms/common/if-control-state/if-control-state.service.mjs +0 -57
- package/esm2020/forms/common/if-control-state/if-error.mjs +0 -75
- package/esm2020/forms/common/if-control-state/if-success.mjs +0 -48
- package/esm2020/forms/common/index.mjs +0 -21
- package/esm2020/forms/common/label.mjs +0 -102
- package/esm2020/forms/common/layout.mjs +0 -32
- package/esm2020/forms/common/providers/container-id.service.mjs +0 -39
- package/esm2020/forms/common/providers/control-class.service.mjs +0 -53
- package/esm2020/forms/common/providers/control-id.service.mjs +0 -32
- package/esm2020/forms/common/providers/focus.service.mjs +0 -26
- package/esm2020/forms/common/providers/layout.service.mjs +0 -58
- package/esm2020/forms/common/providers/mark-control.service.mjs +0 -26
- package/esm2020/forms/common/providers/ng-control.service.mjs +0 -53
- package/esm2020/forms/common/success.mjs +0 -38
- package/esm2020/forms/common/wrapped-control.mjs +0 -191
- package/esm2020/forms/datalist/datalist-container.mjs +0 -121
- package/esm2020/forms/datalist/datalist-input.mjs +0 -63
- package/esm2020/forms/datalist/datalist.mjs +0 -49
- package/esm2020/forms/datalist/datalist.module.mjs +0 -32
- package/esm2020/forms/datalist/index.mjs +0 -11
- package/esm2020/forms/datalist/providers/datalist-id.service.mjs +0 -32
- package/esm2020/forms/datepicker/calendar.mjs +0 -175
- package/esm2020/forms/datepicker/date-container.mjs +0 -365
- package/esm2020/forms/datepicker/date-end-input.mjs +0 -60
- package/esm2020/forms/datepicker/date-input.mjs +0 -294
- package/esm2020/forms/datepicker/date-input.validator.mjs +0 -100
- package/esm2020/forms/datepicker/date-single-input.mjs +0 -63
- package/esm2020/forms/datepicker/date-start-input.mjs +0 -61
- package/esm2020/forms/datepicker/datepicker-action-buttons.mjs +0 -59
- package/esm2020/forms/datepicker/datepicker-view-manager.mjs +0 -74
- package/esm2020/forms/datepicker/datepicker.module.mjs +0 -111
- package/esm2020/forms/datepicker/day.mjs +0 -145
- package/esm2020/forms/datepicker/daypicker.mjs +0 -81
- package/esm2020/forms/datepicker/index.mjs +0 -21
- package/esm2020/forms/datepicker/interfaces/date-range.interface.mjs +0 -8
- package/esm2020/forms/datepicker/interfaces/day-of-week.interface.mjs +0 -8
- package/esm2020/forms/datepicker/model/calendar-view.model.mjs +0 -182
- package/esm2020/forms/datepicker/model/calendar.model.mjs +0 -79
- package/esm2020/forms/datepicker/model/day-view.model.mjs +0 -25
- package/esm2020/forms/datepicker/model/day.model.mjs +0 -72
- package/esm2020/forms/datepicker/model/year-range.model.mjs +0 -61
- package/esm2020/forms/datepicker/monthpicker.mjs +0 -325
- package/esm2020/forms/datepicker/providers/date-form-control.service.mjs +0 -37
- package/esm2020/forms/datepicker/providers/date-io.service.mjs +0 -195
- package/esm2020/forms/datepicker/providers/date-navigation.service.mjs +0 -195
- package/esm2020/forms/datepicker/providers/datepicker-enabled.service.mjs +0 -47
- package/esm2020/forms/datepicker/providers/datepicker-focus.service.mjs +0 -48
- package/esm2020/forms/datepicker/providers/locale-helper.service.mjs +0 -102
- package/esm2020/forms/datepicker/providers/view-manager.service.mjs +0 -42
- package/esm2020/forms/datepicker/utils/constants.mjs +0 -38
- package/esm2020/forms/datepicker/utils/date-utils.mjs +0 -50
- package/esm2020/forms/datepicker/yearpicker.mjs +0 -304
- package/esm2020/forms/file-input/file-input-container.mjs +0 -245
- package/esm2020/forms/file-input/file-input-validator-errors.mjs +0 -8
- package/esm2020/forms/file-input/file-input-validator.mjs +0 -64
- package/esm2020/forms/file-input/file-input-value-accessor.mjs +0 -53
- package/esm2020/forms/file-input/file-input.helpers.mjs +0 -22
- package/esm2020/forms/file-input/file-input.mjs +0 -77
- package/esm2020/forms/file-input/file-input.module.mjs +0 -74
- package/esm2020/forms/file-input/file-list.mjs +0 -160
- package/esm2020/forms/file-input/file-messages-template.mjs +0 -26
- package/esm2020/forms/file-input/file-messages.mjs +0 -61
- package/esm2020/forms/file-input/index.mjs +0 -16
- package/esm2020/forms/forms.module.mjs +0 -73
- package/esm2020/forms/index.mjs +0 -21
- package/esm2020/forms/input/index.mjs +0 -10
- package/esm2020/forms/input/input-container.mjs +0 -92
- package/esm2020/forms/input/input.mjs +0 -40
- package/esm2020/forms/input/input.module.mjs +0 -33
- package/esm2020/forms/number-input/index.mjs +0 -10
- package/esm2020/forms/number-input/number-input-container.mjs +0 -148
- package/esm2020/forms/number-input/number-input.mjs +0 -79
- package/esm2020/forms/number-input/number-input.module.mjs +0 -32
- package/esm2020/forms/password/index.mjs +0 -10
- package/esm2020/forms/password/password-container.mjs +0 -180
- package/esm2020/forms/password/password.mjs +0 -64
- package/esm2020/forms/password/password.module.mjs +0 -32
- package/esm2020/forms/radio/index.mjs +0 -11
- package/esm2020/forms/radio/radio-container.mjs +0 -150
- package/esm2020/forms/radio/radio-wrapper.mjs +0 -44
- package/esm2020/forms/radio/radio.mjs +0 -29
- package/esm2020/forms/radio/radio.module.mjs +0 -33
- package/esm2020/forms/range/index.mjs +0 -10
- package/esm2020/forms/range/range-container.mjs +0 -137
- package/esm2020/forms/range/range.mjs +0 -30
- package/esm2020/forms/range/range.module.mjs +0 -32
- package/esm2020/forms/select/index.mjs +0 -10
- package/esm2020/forms/select/select-container.mjs +0 -114
- package/esm2020/forms/select/select.mjs +0 -31
- package/esm2020/forms/select/select.module.mjs +0 -32
- package/esm2020/forms/textarea/index.mjs +0 -10
- package/esm2020/forms/textarea/textarea-container.mjs +0 -84
- package/esm2020/forms/textarea/textarea.mjs +0 -31
- package/esm2020/forms/textarea/textarea.module.mjs +0 -32
- package/esm2020/icon/icon.mjs +0 -29
- package/esm2020/icon/icon.module.mjs +0 -25
- package/esm2020/icon/index.mjs +0 -9
- package/esm2020/index.mjs +0 -23
- package/esm2020/layout/breadcrumbs/breadcrumb-item.mjs +0 -24
- package/esm2020/layout/breadcrumbs/breadcrumbs.constants.mjs +0 -8
- package/esm2020/layout/breadcrumbs/breadcrumbs.mjs +0 -46
- package/esm2020/layout/breadcrumbs/breadcrumbs.module.mjs +0 -28
- package/esm2020/layout/breadcrumbs/index.mjs +0 -11
- package/esm2020/layout/breadcrumbs/model/breadcrumbs.model.mjs +0 -8
- package/esm2020/layout/index.mjs +0 -13
- package/esm2020/layout/layout.module.mjs +0 -25
- package/esm2020/layout/main-container/index.mjs +0 -9
- package/esm2020/layout/main-container/main-container.mjs +0 -62
- package/esm2020/layout/main-container/main-container.module.mjs +0 -26
- package/esm2020/layout/nav/aria-current-link.mjs +0 -32
- package/esm2020/layout/nav/chocolate/index.mjs +0 -9
- package/esm2020/layout/nav/chocolate/main-container-willy-wonka.mjs +0 -20
- package/esm2020/layout/nav/chocolate/nav-detection-oompa-loompa.mjs +0 -36
- package/esm2020/layout/nav/header.mjs +0 -154
- package/esm2020/layout/nav/index.mjs +0 -12
- package/esm2020/layout/nav/nav-level.mjs +0 -197
- package/esm2020/layout/nav/navigation.module.mjs +0 -45
- package/esm2020/layout/nav/providers/responsive-navigation.service.mjs +0 -61
- package/esm2020/layout/nav/responsive-nav-codes.mjs +0 -21
- package/esm2020/layout/nav/responsive-nav-control-message.mjs +0 -19
- package/esm2020/layout/tabs/chocolate/active-oompa-loompa.mjs +0 -39
- package/esm2020/layout/tabs/chocolate/tabs-willy-wonka.mjs +0 -20
- package/esm2020/layout/tabs/enums/tabs-layout.enum.mjs +0 -12
- package/esm2020/layout/tabs/index.mjs +0 -17
- package/esm2020/layout/tabs/providers/tabs.service.mjs +0 -46
- package/esm2020/layout/tabs/tab-action.directive.mjs +0 -22
- package/esm2020/layout/tabs/tab-content.mjs +0 -87
- package/esm2020/layout/tabs/tab-link.directive.mjs +0 -105
- package/esm2020/layout/tabs/tab-overflow-content.mjs +0 -23
- package/esm2020/layout/tabs/tab.mjs +0 -47
- package/esm2020/layout/tabs/tabs-actions.mjs +0 -39
- package/esm2020/layout/tabs/tabs-id.provider.mjs +0 -17
- package/esm2020/layout/tabs/tabs.mjs +0 -327
- package/esm2020/layout/tabs/tabs.module.mjs +0 -67
- package/esm2020/layout/vertical-nav/index.mjs +0 -13
- package/esm2020/layout/vertical-nav/providers/vertical-nav-group-registration.service.mjs +0 -25
- package/esm2020/layout/vertical-nav/providers/vertical-nav-group.service.mjs +0 -26
- package/esm2020/layout/vertical-nav/providers/vertical-nav-icon.service.mjs +0 -28
- package/esm2020/layout/vertical-nav/providers/vertical-nav.service.mjs +0 -55
- package/esm2020/layout/vertical-nav/vertical-nav-group-children.mjs +0 -20
- package/esm2020/layout/vertical-nav/vertical-nav-group.mjs +0 -162
- package/esm2020/layout/vertical-nav/vertical-nav-icon.mjs +0 -28
- package/esm2020/layout/vertical-nav/vertical-nav-link.mjs +0 -57
- package/esm2020/layout/vertical-nav/vertical-nav.mjs +0 -85
- package/esm2020/layout/vertical-nav/vertical-nav.module.mjs +0 -50
- package/esm2020/modal/index.mjs +0 -14
- package/esm2020/modal/modal-body.mjs +0 -65
- package/esm2020/modal/modal-configuration.service.mjs +0 -21
- package/esm2020/modal/modal-host.component.mjs +0 -29
- package/esm2020/modal/modal-stack.service.mjs +0 -53
- package/esm2020/modal/modal.mjs +0 -185
- package/esm2020/modal/modal.module.mjs +0 -33
- package/esm2020/modal/side-panel.mjs +0 -227
- package/esm2020/modal/side-panel.module.mjs +0 -28
- package/esm2020/popover/common/abstract-popover.mjs +0 -138
- package/esm2020/popover/common/popover-host-anchor.token.mjs +0 -9
- package/esm2020/popover/common/popover-options.interface.mjs +0 -8
- package/esm2020/popover/common/popover.mjs +0 -267
- package/esm2020/popover/dropdown/dropdown-item.mjs +0 -105
- package/esm2020/popover/dropdown/dropdown-menu.mjs +0 -115
- package/esm2020/popover/dropdown/dropdown-trigger.mjs +0 -51
- package/esm2020/popover/dropdown/dropdown.mjs +0 -53
- package/esm2020/popover/dropdown/dropdown.module.mjs +0 -30
- package/esm2020/popover/dropdown/index.mjs +0 -13
- package/esm2020/popover/dropdown/menu-positions.mjs +0 -17
- package/esm2020/popover/dropdown/providers/dropdown-focus-handler.service.mjs +0 -186
- package/esm2020/popover/dropdown/providers/dropdown.service.mjs +0 -34
- package/esm2020/popover/index.mjs +0 -11
- package/esm2020/popover/popover.module.mjs +0 -23
- package/esm2020/popover/signpost/index.mjs +0 -12
- package/esm2020/popover/signpost/providers/signpost-focus-manager.service.mjs +0 -24
- package/esm2020/popover/signpost/providers/signpost-id.service.mjs +0 -26
- package/esm2020/popover/signpost/signpost-content.mjs +0 -179
- package/esm2020/popover/signpost/signpost-positions.mjs +0 -23
- package/esm2020/popover/signpost/signpost-title.mjs +0 -21
- package/esm2020/popover/signpost/signpost-trigger.mjs +0 -90
- package/esm2020/popover/signpost/signpost.mjs +0 -94
- package/esm2020/popover/signpost/signpost.module.mjs +0 -46
- package/esm2020/popover/tooltip/index.mjs +0 -11
- package/esm2020/popover/tooltip/providers/tooltip-id.service.mjs +0 -26
- package/esm2020/popover/tooltip/providers/tooltip-mouse.service.mjs +0 -44
- package/esm2020/popover/tooltip/tooltip-content.mjs +0 -135
- package/esm2020/popover/tooltip/tooltip-trigger.mjs +0 -62
- package/esm2020/popover/tooltip/tooltip.mjs +0 -29
- package/esm2020/popover/tooltip/tooltip.module.mjs +0 -29
- package/esm2020/progress/progress-bars/index.mjs +0 -9
- package/esm2020/progress/progress-bars/progress-bar.mjs +0 -177
- package/esm2020/progress/progress-bars/progress-bar.module.mjs +0 -25
- package/esm2020/progress/spinner/index.mjs +0 -9
- package/esm2020/progress/spinner/spinner.mjs +0 -95
- package/esm2020/progress/spinner/spinner.module.mjs +0 -25
- package/esm2020/timeline/enums/timeline-layout.enum.mjs +0 -12
- package/esm2020/timeline/enums/timeline-step-state.enum.mjs +0 -15
- package/esm2020/timeline/index.mjs +0 -15
- package/esm2020/timeline/interface/icon-attribute.interface.mjs +0 -8
- package/esm2020/timeline/providers/timeline-icon-attribute.service.mjs +0 -55
- package/esm2020/timeline/timeline-step-description.mjs +0 -21
- package/esm2020/timeline/timeline-step-header.mjs +0 -21
- package/esm2020/timeline/timeline-step-title.mjs +0 -31
- package/esm2020/timeline/timeline-step.mjs +0 -97
- package/esm2020/timeline/timeline.mjs +0 -36
- package/esm2020/timeline/timeline.module.mjs +0 -49
- package/esm2020/utils/animations/collapse/collapse.mjs +0 -17
- package/esm2020/utils/animations/collapse/index.mjs +0 -8
- package/esm2020/utils/animations/constants.mjs +0 -14
- package/esm2020/utils/animations/expandable-animation/base-expandable-animation.mjs +0 -46
- package/esm2020/utils/animations/expandable-animation/expandable-animation.directive.mjs +0 -56
- package/esm2020/utils/animations/expandable-animation/expandable-animation.mjs +0 -49
- package/esm2020/utils/animations/expandable-animation/expandable-animation.module.mjs +0 -26
- package/esm2020/utils/animations/expandable-animation/index.mjs +0 -12
- package/esm2020/utils/animations/fade/fade.mjs +0 -15
- package/esm2020/utils/animations/fade/index.mjs +0 -8
- package/esm2020/utils/animations/fade-slide/fade-slide.mjs +0 -31
- package/esm2020/utils/animations/fade-slide/index.mjs +0 -8
- package/esm2020/utils/animations/index.mjs +0 -12
- package/esm2020/utils/animations/slide/index.mjs +0 -8
- package/esm2020/utils/animations/slide/slide.mjs +0 -31
- package/esm2020/utils/assert/assert.helpers.mjs +0 -10
- package/esm2020/utils/breakpoints/breakpoints.mjs +0 -24
- package/esm2020/utils/cdk/cdk-drag.module.mjs +0 -58
- package/esm2020/utils/cdk/cdk-trap-focus.module.mjs +0 -53
- package/esm2020/utils/chocolate/oompa-loompa.mjs +0 -33
- package/esm2020/utils/chocolate/willy-wonka.mjs +0 -37
- package/esm2020/utils/component/is-boolean-attribute-set.mjs +0 -19
- package/esm2020/utils/conditional/conditional.module.mjs +0 -27
- package/esm2020/utils/conditional/if-active.directive.mjs +0 -98
- package/esm2020/utils/conditional/if-active.service.mjs +0 -71
- package/esm2020/utils/conditional/if-expanded.directive.mjs +0 -96
- package/esm2020/utils/conditional/if-expanded.service.mjs +0 -60
- package/esm2020/utils/conditional/if-open.directive.mjs +0 -81
- package/esm2020/utils/conditional/index.mjs +0 -11
- package/esm2020/utils/destroy/destroy.service.mjs +0 -45
- package/esm2020/utils/destroy/index.mjs +0 -8
- package/esm2020/utils/dom-adapter/dom-adapter.mjs +0 -62
- package/esm2020/utils/enums/keys.enum.mjs +0 -33
- package/esm2020/utils/focus/arrow-key-direction.enum.mjs +0 -14
- package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.mjs +0 -90
- package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.module.mjs +0 -27
- package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.provider.mjs +0 -15
- package/esm2020/utils/focus/focus-on-view-init/index.mjs +0 -10
- package/esm2020/utils/focus/focus-trap/index.mjs +0 -8
- package/esm2020/utils/focus/focus-trap/standalone-cdk-trap-focus.directive.mjs +0 -35
- package/esm2020/utils/focus/focus.service.mjs +0 -95
- package/esm2020/utils/focus/focusable-item/basic-focusable-item.service.mjs +0 -55
- package/esm2020/utils/focus/focusable-item/custom-focusable-item-provider.mjs +0 -17
- package/esm2020/utils/focus/focusable-item/focusable-item.mjs +0 -9
- package/esm2020/utils/focus/focusable-item/linkers.mjs +0 -35
- package/esm2020/utils/focus/key-focus/enums/focus-direction.enum.mjs +0 -13
- package/esm2020/utils/focus/key-focus/index.mjs +0 -9
- package/esm2020/utils/focus/key-focus/interfaces.mjs +0 -8
- package/esm2020/utils/focus/key-focus/key-focus-item.mjs +0 -35
- package/esm2020/utils/focus/key-focus/key-focus.mjs +0 -199
- package/esm2020/utils/focus/key-focus/key-focus.module.mjs +0 -27
- package/esm2020/utils/focus/key-focus/roving-tabindex.mjs +0 -103
- package/esm2020/utils/focus/key-focus/util.mjs +0 -45
- package/esm2020/utils/focus/wrap-observable.mjs +0 -20
- package/esm2020/utils/forms/validation.mjs +0 -21
- package/esm2020/utils/host-wrapping/empty-anchor.mjs +0 -19
- package/esm2020/utils/host-wrapping/host-wrapper.mjs +0 -42
- package/esm2020/utils/host-wrapping/host-wrapping.module.mjs +0 -25
- package/esm2020/utils/i18n/common-strings.default.mjs +0 -137
- package/esm2020/utils/i18n/common-strings.interface.mjs +0 -8
- package/esm2020/utils/i18n/common-strings.service.mjs +0 -48
- package/esm2020/utils/i18n/index.mjs +0 -10
- package/esm2020/utils/id-generator/id-generator.service.mjs +0 -11
- package/esm2020/utils/index.mjs +0 -15
- package/esm2020/utils/loading/index.mjs +0 -10
- package/esm2020/utils/loading/loading-listener.mjs +0 -13
- package/esm2020/utils/loading/loading.mjs +0 -58
- package/esm2020/utils/loading/loading.module.mjs +0 -25
- package/esm2020/utils/outside-click/index.mjs +0 -10
- package/esm2020/utils/outside-click/outside-click.mjs +0 -49
- package/esm2020/utils/outside-click/outside-click.module.mjs +0 -25
- package/esm2020/utils/popover/enums/alignment.enum.mjs +0 -13
- package/esm2020/utils/popover/enums/axis.enum.mjs +0 -12
- package/esm2020/utils/popover/enums/positions.enum.mjs +0 -60
- package/esm2020/utils/popover/enums/side.enum.mjs +0 -12
- package/esm2020/utils/popover/enums/viewport-violation.enum.mjs +0 -14
- package/esm2020/utils/popover/index.mjs +0 -21
- package/esm2020/utils/popover/interfaces/popover-content-offset.interface.mjs +0 -8
- package/esm2020/utils/popover/interfaces/popover-position.interface.mjs +0 -8
- package/esm2020/utils/popover/interfaces/visibility-coords.interface.mjs +0 -8
- package/esm2020/utils/popover/popover-anchor.mjs +0 -26
- package/esm2020/utils/popover/popover-close-button.mjs +0 -52
- package/esm2020/utils/popover/popover-content.mjs +0 -161
- package/esm2020/utils/popover/popover-host.directive.mjs +0 -37
- package/esm2020/utils/popover/popover-open-close-button.mjs +0 -43
- package/esm2020/utils/popover/popover.module.mjs +0 -26
- package/esm2020/utils/popover/position-operators.mjs +0 -180
- package/esm2020/utils/popover/providers/popover-events.service.mjs +0 -142
- package/esm2020/utils/popover/providers/popover-position.service.mjs +0 -230
- package/esm2020/utils/popover/providers/popover-toggle.service.mjs +0 -75
- package/esm2020/utils/popover/stop-escape-propagation.directive.mjs +0 -43
- package/esm2020/utils/scrolling/scrolling-service.mjs +0 -31
- package/esm2020/utils/template-ref/index.mjs +0 -10
- package/esm2020/utils/template-ref/template-ref-container.mjs +0 -30
- package/esm2020/utils/template-ref/template-ref.module.mjs +0 -25
- package/esm2020/wizard/heading-level.mjs +0 -8
- package/esm2020/wizard/index.mjs +0 -20
- package/esm2020/wizard/providers/button-hub.service.mjs +0 -64
- package/esm2020/wizard/providers/header-actions.service.mjs +0 -36
- package/esm2020/wizard/providers/page-collection.service.mjs +0 -360
- package/esm2020/wizard/providers/wizard-navigation.service.mjs +0 -575
- package/esm2020/wizard/wizard-button.mjs +0 -188
- package/esm2020/wizard/wizard-header-action.mjs +0 -77
- package/esm2020/wizard/wizard-page-buttons.mjs +0 -22
- package/esm2020/wizard/wizard-page-header-actions.mjs +0 -22
- package/esm2020/wizard/wizard-page-navtitle.mjs +0 -22
- package/esm2020/wizard/wizard-page-title.mjs +0 -25
- package/esm2020/wizard/wizard-page.mjs +0 -652
- package/esm2020/wizard/wizard-stepnav-item.mjs +0 -204
- package/esm2020/wizard/wizard-stepnav.mjs +0 -55
- package/esm2020/wizard/wizard-title.mjs +0 -22
- package/esm2020/wizard/wizard.mjs +0 -525
- package/esm2020/wizard/wizard.module.mjs +0 -73
- package/fesm2015/clr-angular.mjs +0 -31490
- package/fesm2015/clr-angular.mjs.map +0 -1
- package/fesm2020/clr-angular.mjs +0 -31306
- package/fesm2020/clr-angular.mjs.map +0 -1
- package/forms/checkbox/checkbox-container.d.ts +0 -25
- package/forms/checkbox/checkbox-wrapper.d.ts +0 -22
- package/forms/checkbox/checkbox.d.ts +0 -20
- package/forms/checkbox/checkbox.module.d.ts +0 -14
- package/forms/checkbox/index.d.ts +0 -4
- package/forms/combobox/combobox-container.d.ts +0 -18
- package/forms/combobox/combobox.d.ts +0 -87
- package/forms/combobox/combobox.module.d.ts +0 -22
- package/forms/combobox/index.d.ts +0 -8
- package/forms/combobox/model/combobox.model.d.ts +0 -9
- package/forms/combobox/model/multi-select-combobox.model.d.ts +0 -12
- package/forms/combobox/model/pseudo-focus.model.d.ts +0 -7
- package/forms/combobox/model/single-select-combobox.model.d.ts +0 -10
- package/forms/combobox/option-group.d.ts +0 -9
- package/forms/combobox/option-items.directive.d.ts +0 -28
- package/forms/combobox/option-selected.directive.d.ts +0 -13
- package/forms/combobox/option.d.ts +0 -25
- package/forms/combobox/options.d.ts +0 -36
- package/forms/combobox/providers/combobox-container.service.d.ts +0 -7
- package/forms/combobox/providers/combobox-focus-handler.service.d.ts +0 -48
- package/forms/combobox/providers/option-selection.service.d.ts +0 -24
- package/forms/common/abstract-container.d.ts +0 -47
- package/forms/common/abstract-control.d.ts +0 -18
- package/forms/common/common.module.d.ts +0 -19
- package/forms/common/control-container.d.ts +0 -6
- package/forms/common/control.d.ts +0 -11
- package/forms/common/error.d.ts +0 -12
- package/forms/common/form.d.ts +0 -16
- package/forms/common/helper.d.ts +0 -12
- package/forms/common/if-control-state/abstract-if-state.d.ts +0 -18
- package/forms/common/if-control-state/if-control-state.service.d.ts +0 -17
- package/forms/common/if-control-state/if-error.d.ts +0 -19
- package/forms/common/if-control-state/if-success.d.ts +0 -16
- package/forms/common/index.d.ts +0 -14
- package/forms/common/label.d.ts +0 -32
- package/forms/common/layout.d.ts +0 -11
- package/forms/common/providers/container-id.service.d.ts +0 -18
- package/forms/common/providers/control-class.service.d.ts +0 -13
- package/forms/common/providers/control-id.service.d.ts +0 -11
- package/forms/common/providers/focus.service.d.ts +0 -9
- package/forms/common/providers/layout.service.d.ts +0 -23
- package/forms/common/providers/mark-control.service.d.ts +0 -9
- package/forms/common/providers/ng-control.service.d.ts +0 -27
- package/forms/common/success.d.ts +0 -12
- package/forms/common/wrapped-control.d.ts +0 -46
- package/forms/datalist/datalist-container.d.ts +0 -14
- package/forms/datalist/datalist-input.d.ts +0 -18
- package/forms/datalist/datalist.d.ts +0 -14
- package/forms/datalist/datalist.module.d.ts +0 -13
- package/forms/datalist/index.d.ts +0 -4
- package/forms/datalist/providers/datalist-id.service.d.ts +0 -11
- package/forms/datepicker/calendar.d.ts +0 -65
- package/forms/datepicker/date-container.d.ts +0 -72
- package/forms/datepicker/date-end-input.d.ts +0 -15
- package/forms/datepicker/date-input.d.ts +0 -67
- package/forms/datepicker/date-input.validator.d.ts +0 -27
- package/forms/datepicker/date-single-input.d.ts +0 -15
- package/forms/datepicker/date-start-input.d.ts +0 -15
- package/forms/datepicker/datepicker-action-buttons.d.ts +0 -16
- package/forms/datepicker/datepicker-view-manager.d.ts +0 -30
- package/forms/datepicker/datepicker.module.d.ts +0 -29
- package/forms/datepicker/day.d.ts +0 -40
- package/forms/datepicker/daypicker.d.ts +0 -44
- package/forms/datepicker/index.d.ts +0 -14
- package/forms/datepicker/interfaces/date-range.interface.d.ts +0 -13
- package/forms/datepicker/interfaces/day-of-week.interface.d.ts +0 -4
- package/forms/datepicker/model/calendar-view.model.d.ts +0 -74
- package/forms/datepicker/model/calendar.model.d.ts +0 -35
- package/forms/datepicker/model/day-view.model.d.ts +0 -16
- package/forms/datepicker/model/day.model.d.ts +0 -30
- package/forms/datepicker/model/year-range.model.d.ts +0 -34
- package/forms/datepicker/monthpicker.d.ts +0 -87
- package/forms/datepicker/providers/date-form-control.service.d.ts +0 -14
- package/forms/datepicker/providers/date-io.service.d.ts +0 -39
- package/forms/datepicker/providers/date-navigation.service.d.ts +0 -94
- package/forms/datepicker/providers/datepicker-enabled.service.d.ts +0 -15
- package/forms/datepicker/providers/datepicker-focus.service.d.ts +0 -16
- package/forms/datepicker/providers/locale-helper.service.d.ts +0 -46
- package/forms/datepicker/providers/view-manager.service.d.ts +0 -17
- package/forms/datepicker/utils/constants.d.ts +0 -24
- package/forms/datepicker/utils/date-utils.d.ts +0 -16
- package/forms/datepicker/yearpicker.d.ts +0 -78
- package/forms/file-input/file-input-container.d.ts +0 -27
- package/forms/file-input/file-input-validator-errors.d.ts +0 -52
- package/forms/file-input/file-input-validator.d.ts +0 -12
- package/forms/file-input/file-input-value-accessor.d.ts +0 -15
- package/forms/file-input/file-input.d.ts +0 -23
- package/forms/file-input/file-input.helpers.d.ts +0 -3
- package/forms/file-input/file-input.module.d.ts +0 -17
- package/forms/file-input/file-list.d.ts +0 -18
- package/forms/file-input/file-messages-template.d.ts +0 -19
- package/forms/file-input/file-messages.d.ts +0 -17
- package/forms/file-input/index.d.ts +0 -9
- package/forms/forms.module.d.ts +0 -20
- package/forms/index.d.ts +0 -14
- package/forms/input/index.d.ts +0 -3
- package/forms/input/input-container.d.ts +0 -6
- package/forms/input/input.d.ts +0 -11
- package/forms/input/input.module.d.ts +0 -13
- package/forms/number-input/index.d.ts +0 -3
- package/forms/number-input/number-input-container.d.ts +0 -17
- package/forms/number-input/number-input.d.ts +0 -22
- package/forms/number-input/number-input.module.d.ts +0 -13
- package/forms/password/index.d.ts +0 -3
- package/forms/password/password-container.d.ts +0 -32
- package/forms/password/password.d.ts +0 -16
- package/forms/password/password.module.d.ts +0 -13
- package/forms/radio/index.d.ts +0 -4
- package/forms/radio/radio-container.d.ts +0 -28
- package/forms/radio/radio-wrapper.d.ts +0 -9
- package/forms/radio/radio.d.ts +0 -10
- package/forms/radio/radio.module.d.ts +0 -14
- package/forms/range/index.d.ts +0 -3
- package/forms/range/range-container.d.ts +0 -22
- package/forms/range/range.d.ts +0 -10
- package/forms/range/range.module.d.ts +0 -13
- package/forms/select/index.d.ts +0 -3
- package/forms/select/select-container.d.ts +0 -20
- package/forms/select/select.d.ts +0 -11
- package/forms/select/select.module.d.ts +0 -13
- package/forms/textarea/index.d.ts +0 -3
- package/forms/textarea/textarea-container.d.ts +0 -6
- package/forms/textarea/textarea.d.ts +0 -11
- package/forms/textarea/textarea.module.d.ts +0 -13
- package/icon/icon.d.ts +0 -9
- package/icon/icon.module.d.ts +0 -10
- package/icon/index.d.ts +0 -2
- package/index.d.ts +0 -16
- package/layout/breadcrumbs/breadcrumb-item.d.ts +0 -5
- package/layout/breadcrumbs/breadcrumbs.constants.d.ts +0 -1
- package/layout/breadcrumbs/breadcrumbs.d.ts +0 -17
- package/layout/breadcrumbs/breadcrumbs.module.d.ts +0 -12
- package/layout/breadcrumbs/index.d.ts +0 -4
- package/layout/breadcrumbs/model/breadcrumbs.model.d.ts +0 -9
- package/layout/index.d.ts +0 -6
- package/layout/layout.module.d.ts +0 -11
- package/layout/main-container/index.d.ts +0 -2
- package/layout/main-container/main-container.d.ts +0 -17
- package/layout/main-container/main-container.module.d.ts +0 -11
- package/layout/nav/aria-current-link.d.ts +0 -13
- package/layout/nav/chocolate/index.d.ts +0 -2
- package/layout/nav/chocolate/main-container-willy-wonka.d.ts +0 -6
- package/layout/nav/chocolate/nav-detection-oompa-loompa.d.ts +0 -12
- package/layout/nav/header.d.ts +0 -31
- package/layout/nav/index.d.ts +0 -5
- package/layout/nav/nav-level.d.ts +0 -35
- package/layout/nav/navigation.module.d.ts +0 -16
- package/layout/nav/providers/responsive-navigation.service.d.ts +0 -18
- package/layout/nav/responsive-nav-codes.d.ts +0 -14
- package/layout/nav/responsive-nav-control-message.d.ts +0 -7
- package/layout/tabs/chocolate/active-oompa-loompa.d.ts +0 -13
- package/layout/tabs/chocolate/tabs-willy-wonka.d.ts +0 -6
- package/layout/tabs/enums/tabs-layout.enum.d.ts +0 -4
- package/layout/tabs/index.d.ts +0 -11
- package/layout/tabs/providers/tabs.service.d.ts +0 -16
- package/layout/tabs/tab-action.directive.d.ts +0 -5
- package/layout/tabs/tab-content.d.ts +0 -18
- package/layout/tabs/tab-link.directive.d.ts +0 -25
- package/layout/tabs/tab-overflow-content.d.ts +0 -5
- package/layout/tabs/tab.d.ts +0 -17
- package/layout/tabs/tabs-actions.d.ts +0 -7
- package/layout/tabs/tabs-id.provider.d.ts +0 -7
- package/layout/tabs/tabs.d.ts +0 -50
- package/layout/tabs/tabs.module.d.ts +0 -23
- package/layout/vertical-nav/index.d.ts +0 -6
- package/layout/vertical-nav/providers/vertical-nav-group-registration.service.d.ts +0 -8
- package/layout/vertical-nav/providers/vertical-nav-group.service.d.ts +0 -9
- package/layout/vertical-nav/providers/vertical-nav-icon.service.d.ts +0 -9
- package/layout/vertical-nav/providers/vertical-nav.service.d.ts +0 -17
- package/layout/vertical-nav/vertical-nav-group-children.d.ts +0 -5
- package/layout/vertical-nav/vertical-nav-group.d.ts +0 -32
- package/layout/vertical-nav/vertical-nav-icon.d.ts +0 -10
- package/layout/vertical-nav/vertical-nav-link.d.ts +0 -10
- package/layout/vertical-nav/vertical-nav.d.ts +0 -28
- package/layout/vertical-nav/vertical-nav.module.d.ts +0 -18
- package/modal/index.d.ts +0 -7
- package/modal/modal-body.d.ts +0 -22
- package/modal/modal-configuration.service.d.ts +0 -7
- package/modal/modal-host.component.d.ts +0 -5
- package/modal/modal-stack.service.d.ts +0 -15
- package/modal/modal.d.ts +0 -43
- package/modal/modal.module.d.ts +0 -15
- package/modal/side-panel.d.ts +0 -53
- package/modal/side-panel.module.d.ts +0 -13
- package/popover/common/abstract-popover.d.ts +0 -35
- package/popover/common/popover-host-anchor.token.d.ts +0 -2
- package/popover/common/popover-options.interface.d.ts +0 -7
- package/popover/common/popover.d.ts +0 -30
- package/popover/dropdown/dropdown-item.d.ts +0 -27
- package/popover/dropdown/dropdown-menu.d.ts +0 -15
- package/popover/dropdown/dropdown-trigger.d.ts +0 -16
- package/popover/dropdown/dropdown.d.ts +0 -17
- package/popover/dropdown/dropdown.module.d.ts +0 -15
- package/popover/dropdown/index.d.ts +0 -6
- package/popover/dropdown/menu-positions.d.ts +0 -1
- package/popover/dropdown/providers/dropdown-focus-handler.service.d.ts +0 -49
- package/popover/dropdown/providers/dropdown.service.d.ts +0 -16
- package/popover/index.d.ts +0 -4
- package/popover/popover.module.d.ts +0 -9
- package/popover/signpost/index.d.ts +0 -5
- package/popover/signpost/providers/signpost-focus-manager.service.d.ts +0 -8
- package/popover/signpost/providers/signpost-id.service.d.ts +0 -9
- package/popover/signpost/signpost-content.d.ts +0 -57
- package/popover/signpost/signpost-positions.d.ts +0 -10
- package/popover/signpost/signpost-title.d.ts +0 -5
- package/popover/signpost/signpost-trigger.d.ts +0 -29
- package/popover/signpost/signpost.d.ts +0 -27
- package/popover/signpost/signpost.module.d.ts +0 -17
- package/popover/tooltip/index.d.ts +0 -4
- package/popover/tooltip/providers/tooltip-id.service.d.ts +0 -9
- package/popover/tooltip/providers/tooltip-mouse.service.d.ts +0 -15
- package/popover/tooltip/tooltip-content.d.ts +0 -25
- package/popover/tooltip/tooltip-trigger.d.ts +0 -18
- package/popover/tooltip/tooltip.d.ts +0 -6
- package/popover/tooltip/tooltip.module.d.ts +0 -14
- package/progress/progress-bars/index.d.ts +0 -2
- package/progress/progress-bars/progress-bar.module.d.ts +0 -10
- package/progress/spinner/index.d.ts +0 -2
- package/progress/spinner/spinner.module.d.ts +0 -10
- package/src/utils/popover/README.md +0 -139
- package/timeline/enums/timeline-layout.enum.d.ts +0 -4
- package/timeline/enums/timeline-step-state.enum.d.ts +0 -7
- package/timeline/index.d.ts +0 -8
- package/timeline/interface/icon-attribute.interface.d.ts +0 -6
- package/timeline/providers/timeline-icon-attribute.service.d.ts +0 -12
- package/timeline/timeline-step-description.d.ts +0 -5
- package/timeline/timeline-step-header.d.ts +0 -5
- package/timeline/timeline-step-title.d.ts +0 -15
- package/timeline/timeline-step.d.ts +0 -19
- package/timeline/timeline.d.ts +0 -8
- package/timeline/timeline.module.d.ts +0 -15
- package/utils/animations/collapse/collapse.d.ts +0 -2
- package/utils/animations/collapse/index.d.ts +0 -1
- package/utils/animations/constants.d.ts +0 -2
- package/utils/animations/expandable-animation/base-expandable-animation.d.ts +0 -16
- package/utils/animations/expandable-animation/expandable-animation.d.ts +0 -16
- package/utils/animations/expandable-animation/expandable-animation.directive.d.ts +0 -16
- package/utils/animations/expandable-animation/expandable-animation.module.d.ts +0 -9
- package/utils/animations/expandable-animation/index.d.ts +0 -4
- package/utils/animations/fade/fade.d.ts +0 -2
- package/utils/animations/fade/index.d.ts +0 -1
- package/utils/animations/fade-slide/fade-slide.d.ts +0 -2
- package/utils/animations/fade-slide/index.d.ts +0 -1
- package/utils/animations/index.d.ts +0 -5
- package/utils/animations/slide/index.d.ts +0 -1
- package/utils/animations/slide/slide.d.ts +0 -2
- package/utils/assert/assert.helpers.d.ts +0 -1
- package/utils/breakpoints/breakpoints.d.ts +0 -15
- package/utils/cdk/cdk-drag.module.d.ts +0 -25
- package/utils/cdk/cdk-trap-focus.module.d.ts +0 -24
- package/utils/chocolate/oompa-loompa.d.ts +0 -13
- package/utils/chocolate/willy-wonka.d.ts +0 -11
- package/utils/component/is-boolean-attribute-set.d.ts +0 -1
- package/utils/conditional/conditional.module.d.ts +0 -12
- package/utils/conditional/if-active.directive.d.ts +0 -38
- package/utils/conditional/if-active.service.d.ts +0 -45
- package/utils/conditional/if-expanded.directive.d.ts +0 -24
- package/utils/conditional/if-expanded.service.d.ts +0 -20
- package/utils/conditional/if-open.directive.d.ts +0 -36
- package/utils/conditional/index.d.ts +0 -4
- package/utils/destroy/destroy.service.d.ts +0 -32
- package/utils/destroy/index.d.ts +0 -1
- package/utils/dom-adapter/dom-adapter.d.ts +0 -12
- package/utils/enums/keys.enum.d.ts +0 -24
- package/utils/focus/arrow-key-direction.enum.d.ts +0 -6
- package/utils/focus/focus-on-view-init/focus-on-view-init.d.ts +0 -19
- package/utils/focus/focus-on-view-init/focus-on-view-init.module.d.ts +0 -10
- package/utils/focus/focus-on-view-init/focus-on-view-init.provider.d.ts +0 -6
- package/utils/focus/focus-on-view-init/index.d.ts +0 -3
- package/utils/focus/focus-trap/index.d.ts +0 -1
- package/utils/focus/focus-trap/standalone-cdk-trap-focus.directive.d.ts +0 -13
- package/utils/focus/focus.service.d.ts +0 -26
- package/utils/focus/focusable-item/basic-focusable-item.service.d.ts +0 -20
- package/utils/focus/focusable-item/custom-focusable-item-provider.d.ts +0 -6
- package/utils/focus/focusable-item/focusable-item.d.ts +0 -12
- package/utils/focus/focusable-item/linkers.d.ts +0 -13
- package/utils/focus/key-focus/enums/focus-direction.enum.d.ts +0 -5
- package/utils/focus/key-focus/index.d.ts +0 -2
- package/utils/focus/key-focus/interfaces.d.ts +0 -5
- package/utils/focus/key-focus/key-focus-item.d.ts +0 -11
- package/utils/focus/key-focus/key-focus.d.ts +0 -44
- package/utils/focus/key-focus/key-focus.module.d.ts +0 -10
- package/utils/focus/key-focus/roving-tabindex.d.ts +0 -19
- package/utils/focus/key-focus/util.d.ts +0 -3
- package/utils/focus/wrap-observable.d.ts +0 -2
- package/utils/forms/validation.d.ts +0 -2
- package/utils/host-wrapping/empty-anchor.d.ts +0 -5
- package/utils/host-wrapping/host-wrapper.d.ts +0 -11
- package/utils/host-wrapping/host-wrapping.module.d.ts +0 -10
- package/utils/i18n/common-strings.default.d.ts +0 -2
- package/utils/i18n/common-strings.interface.d.ts +0 -309
- package/utils/i18n/common-strings.service.d.ts +0 -21
- package/utils/i18n/index.d.ts +0 -3
- package/utils/id-generator/id-generator.service.d.ts +0 -1
- package/utils/index.d.ts +0 -8
- package/utils/loading/index.d.ts +0 -3
- package/utils/loading/loading-listener.d.ts +0 -8
- package/utils/loading/loading.d.ts +0 -20
- package/utils/loading/loading.module.d.ts +0 -10
- package/utils/outside-click/index.d.ts +0 -3
- package/utils/outside-click/outside-click.d.ts +0 -11
- package/utils/outside-click/outside-click.module.d.ts +0 -8
- package/utils/popover/enums/alignment.enum.d.ts +0 -5
- package/utils/popover/enums/axis.enum.d.ts +0 -4
- package/utils/popover/enums/positions.enum.d.ts +0 -23
- package/utils/popover/enums/side.enum.d.ts +0 -4
- package/utils/popover/enums/viewport-violation.enum.d.ts +0 -6
- package/utils/popover/index.d.ts +0 -14
- package/utils/popover/interfaces/popover-content-offset.interface.d.ts +0 -4
- package/utils/popover/interfaces/popover-position.interface.d.ts +0 -16
- package/utils/popover/interfaces/visibility-coords.interface.d.ts +0 -6
- package/utils/popover/popover-anchor.d.ts +0 -8
- package/utils/popover/popover-close-button.d.ts +0 -17
- package/utils/popover/popover-content.d.ts +0 -42
- package/utils/popover/popover-host.directive.d.ts +0 -6
- package/utils/popover/popover-open-close-button.d.ts +0 -13
- package/utils/popover/popover.module.d.ts +0 -10
- package/utils/popover/position-operators.d.ts +0 -10
- package/utils/popover/providers/popover-events.service.d.ts +0 -34
- package/utils/popover/providers/popover-position.service.d.ts +0 -24
- package/utils/popover/providers/popover-toggle.service.d.ts +0 -28
- package/utils/popover/stop-escape-propagation.directive.d.ts +0 -14
- package/utils/scrolling/scrolling-service.d.ts +0 -9
- package/utils/template-ref/index.d.ts +0 -3
- package/utils/template-ref/template-ref-container.d.ts +0 -7
- package/utils/template-ref/template-ref.module.d.ts +0 -8
- package/wizard/heading-level.d.ts +0 -1
- package/wizard/index.d.ts +0 -13
- package/wizard/providers/button-hub.service.d.ts +0 -20
- package/wizard/providers/header-actions.service.d.ts +0 -15
- package/wizard/providers/page-collection.service.d.ts +0 -196
- package/wizard/providers/wizard-navigation.service.d.ts +0 -366
- package/wizard/wizard-button.d.ts +0 -28
- package/wizard/wizard-header-action.d.ts +0 -12
- package/wizard/wizard-page-buttons.d.ts +0 -8
- package/wizard/wizard-page-header-actions.d.ts +0 -8
- package/wizard/wizard-page-navtitle.d.ts +0 -8
- package/wizard/wizard-page-title.d.ts +0 -10
- package/wizard/wizard-page.d.ts +0 -494
- package/wizard/wizard-stepnav-item.d.ts +0 -42
- package/wizard/wizard-stepnav.d.ts +0 -9
- package/wizard/wizard-title.d.ts +0 -7
- package/wizard/wizard.d.ts +0 -256
- package/wizard/wizard.module.d.ts +0 -22
|
@@ -0,0 +1,2271 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { PLATFORM_ID, SkipSelf, Optional, Inject, Injectable, Input, Component, HostBinding, ContentChildren, HostListener, Directive, NgModule, ElementRef, InjectionToken, EventEmitter, Output, DOCUMENT, ContentChild, ViewChild } from '@angular/core';
|
|
3
|
+
import * as i2 from '@clr/angular/popover/common';
|
|
4
|
+
import { ClrPopoverHostDirective as ClrPopoverHostDirective$1, ClrPopoverType as ClrPopoverType$1, ClrPopoverPosition as ClrPopoverPosition$1, DROPDOWN_POSITIONS as DROPDOWN_POSITIONS$1, POPOVER_HOST_ANCHOR as POPOVER_HOST_ANCHOR$1, ClrPopoverContent as ClrPopoverContent$1, ClrIfOpen as ClrIfOpen$1, SIGNPOST_POSITIONS as SIGNPOST_POSITIONS$1, ÇlrClrPopoverModuleNext as _lrClrPopoverModuleNext, TOOLTIP_POSITIONS as TOOLTIP_POSITIONS$1 } from '@clr/angular/popover/common';
|
|
5
|
+
import * as i1 from '@clr/angular/utils';
|
|
6
|
+
import { uniqueIdFactory, ArrowKeyDirection, Linkers, wrapObservable, customFocusableItemProvider, FOCUS_SERVICE_PROVIDER, FocusableItem, BASIC_FOCUSABLE_ITEM_PROVIDER, preventArrowKeyScroll, ClrPosition, normalizeKey, Keys, ClrFocusOnViewInitModule } from '@clr/angular/utils';
|
|
7
|
+
import { isPlatformBrowser, CommonModule } from '@angular/common';
|
|
8
|
+
import { ReplaySubject, of, Subject, merge, fromEvent } from 'rxjs';
|
|
9
|
+
import { map, filter } from 'rxjs/operators';
|
|
10
|
+
import * as i3 from '@clr/angular/icon';
|
|
11
|
+
import { ClrIcon, ClarityIcons, windowCloseIcon, infoCircleIcon } from '@clr/angular/icon';
|
|
12
|
+
import { hasModifierKey } from '@angular/cdk/keycodes';
|
|
13
|
+
import * as i1$1 from '@angular/cdk/overlay';
|
|
14
|
+
import { OverlayConfig } from '@angular/cdk/overlay';
|
|
15
|
+
import { DomPortal } from '@angular/cdk/portal';
|
|
16
|
+
import { ClrDropdownModule as ClrDropdownModule$1 } from '@clr/angular/popover/dropdown';
|
|
17
|
+
import { ClrSignpostModule as ClrSignpostModule$1 } from '@clr/angular/popover/signpost';
|
|
18
|
+
import { ClrTooltipModule as ClrTooltipModule$1 } from '@clr/angular/popover/tooltip';
|
|
19
|
+
|
|
20
|
+
/*
|
|
21
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
22
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
23
|
+
* This software is released under MIT license.
|
|
24
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
25
|
+
*/
|
|
26
|
+
class DropdownFocusHandler {
|
|
27
|
+
constructor(renderer, parent, popoverService, focusService, platformId) {
|
|
28
|
+
this.renderer = renderer;
|
|
29
|
+
this.parent = parent;
|
|
30
|
+
this.popoverService = popoverService;
|
|
31
|
+
this.focusService = focusService;
|
|
32
|
+
this.platformId = platformId;
|
|
33
|
+
this.id = uniqueIdFactory();
|
|
34
|
+
this._unlistenFuncs = [];
|
|
35
|
+
this.resetChildren();
|
|
36
|
+
this.moveToFirstItemWhenOpen();
|
|
37
|
+
}
|
|
38
|
+
get trigger() {
|
|
39
|
+
return this._trigger;
|
|
40
|
+
}
|
|
41
|
+
set trigger(el) {
|
|
42
|
+
this._trigger = el;
|
|
43
|
+
if (this.parent) {
|
|
44
|
+
this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.arrowright', event => this.popoverService.toggleWithEvent(event)));
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.arrowup', event => this.popoverService.toggleWithEvent(event)));
|
|
48
|
+
this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.arrowdown', event => this.popoverService.toggleWithEvent(event)));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
get container() {
|
|
52
|
+
return this._container;
|
|
53
|
+
}
|
|
54
|
+
set container(el) {
|
|
55
|
+
this._container = el;
|
|
56
|
+
// whether root container or not, tab key should always toggle (i.e. close) the container
|
|
57
|
+
this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.tab', event => this.popoverService.toggleWithEvent(event)), this.renderer.listen(el, 'keydown.shift.tab', event => this.popoverService.toggleWithEvent(event)));
|
|
58
|
+
// All containers are registered to the focus service.
|
|
59
|
+
this.focusService.registerContainer(el);
|
|
60
|
+
if (this.parent) {
|
|
61
|
+
// if it's a nested container, pressing escape has the same effect as pressing left key, which closes the current
|
|
62
|
+
// popup and moves up to its parent. Here, we stop propagation so that the parent container
|
|
63
|
+
// doesn't receive the escape keydown
|
|
64
|
+
this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.escape', event => {
|
|
65
|
+
this.focusService.move(ArrowKeyDirection.LEFT);
|
|
66
|
+
event.stopPropagation();
|
|
67
|
+
}));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
ngOnDestroy() {
|
|
71
|
+
this._unlistenFuncs.forEach((unlisten) => unlisten());
|
|
72
|
+
this.focusService.detachListeners(this.container);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* If the dropdown was opened by clicking on the trigger, we automatically move to the first item
|
|
76
|
+
*/
|
|
77
|
+
moveToFirstItemWhenOpen() {
|
|
78
|
+
const subscription = this.popoverService.openChange.subscribe(open => {
|
|
79
|
+
if (open && this.popoverService.openEvent) {
|
|
80
|
+
// Even if we properly waited for ngAfterViewInit, the container still wouldn't be attached to the DOM.
|
|
81
|
+
// So setTimeout is the only way to wait for the container to be ready to move focus to first item.
|
|
82
|
+
setTimeout(() => {
|
|
83
|
+
this.focusService.moveTo(this);
|
|
84
|
+
if (this.parent) {
|
|
85
|
+
this.focusService.move(ArrowKeyDirection.RIGHT);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
this.focusService.move(ArrowKeyDirection.DOWN);
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
this._unlistenFuncs.push(() => subscription.unsubscribe());
|
|
94
|
+
}
|
|
95
|
+
focus() {
|
|
96
|
+
if (this.trigger && isPlatformBrowser(this.platformId)) {
|
|
97
|
+
this.trigger.focus();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
blur() {
|
|
101
|
+
if (this.trigger && isPlatformBrowser(this.platformId)) {
|
|
102
|
+
this.trigger.blur();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
activate() {
|
|
106
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
107
|
+
this.trigger.click();
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
resetChildren() {
|
|
111
|
+
this.children = new ReplaySubject(1);
|
|
112
|
+
if (this.parent) {
|
|
113
|
+
this.right = this.openAndGetChildren().pipe(map(all => all[0]));
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
this.down = this.openAndGetChildren().pipe(map(all => all[0]));
|
|
117
|
+
this.up = this.openAndGetChildren().pipe(map(all => all[all.length - 1]));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
addChildren(children) {
|
|
121
|
+
Linkers.linkVertical(children);
|
|
122
|
+
if (this.parent) {
|
|
123
|
+
Linkers.linkParent(children, this.closeAndGetThis(), ArrowKeyDirection.LEFT);
|
|
124
|
+
}
|
|
125
|
+
this.children.next(children);
|
|
126
|
+
}
|
|
127
|
+
openAndGetChildren() {
|
|
128
|
+
return wrapObservable(this.children, () => (this.popoverService.open = true));
|
|
129
|
+
}
|
|
130
|
+
closeAndGetThis() {
|
|
131
|
+
return wrapObservable(of(this), () => (this.popoverService.open = false));
|
|
132
|
+
}
|
|
133
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: DropdownFocusHandler, deps: [{ token: i0.Renderer2 }, { token: DropdownFocusHandler, optional: true, skipSelf: true }, { token: i2.ClrPopoverService }, { token: i1.FocusService }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
134
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: DropdownFocusHandler }); }
|
|
135
|
+
}
|
|
136
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: DropdownFocusHandler, decorators: [{
|
|
137
|
+
type: Injectable
|
|
138
|
+
}], ctorParameters: () => [{ type: i0.Renderer2 }, { type: DropdownFocusHandler, decorators: [{
|
|
139
|
+
type: SkipSelf
|
|
140
|
+
}, {
|
|
141
|
+
type: Optional
|
|
142
|
+
}] }, { type: i2.ClrPopoverService }, { type: i1.FocusService }, { type: undefined, decorators: [{
|
|
143
|
+
type: Inject,
|
|
144
|
+
args: [PLATFORM_ID]
|
|
145
|
+
}] }] });
|
|
146
|
+
const DROPDOWN_FOCUS_HANDLER_PROVIDER = customFocusableItemProvider(DropdownFocusHandler);
|
|
147
|
+
|
|
148
|
+
/*
|
|
149
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
150
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
151
|
+
* This software is released under MIT license.
|
|
152
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
153
|
+
*/
|
|
154
|
+
class RootDropdownService {
|
|
155
|
+
constructor() {
|
|
156
|
+
this._changes = new Subject();
|
|
157
|
+
}
|
|
158
|
+
get changes() {
|
|
159
|
+
return this._changes.asObservable();
|
|
160
|
+
}
|
|
161
|
+
closeMenus() {
|
|
162
|
+
this._changes.next(false);
|
|
163
|
+
}
|
|
164
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: RootDropdownService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
165
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: RootDropdownService }); }
|
|
166
|
+
}
|
|
167
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: RootDropdownService, decorators: [{
|
|
168
|
+
type: Injectable
|
|
169
|
+
}] });
|
|
170
|
+
function clrRootDropdownFactory(existing) {
|
|
171
|
+
return existing || new RootDropdownService();
|
|
172
|
+
}
|
|
173
|
+
const ROOT_DROPDOWN_PROVIDER = {
|
|
174
|
+
provide: RootDropdownService,
|
|
175
|
+
useFactory: clrRootDropdownFactory,
|
|
176
|
+
deps: [[new Optional(), new SkipSelf(), RootDropdownService]],
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
/*
|
|
180
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
181
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
182
|
+
* This software is released under MIT license.
|
|
183
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
184
|
+
*/
|
|
185
|
+
class ClrDropdown {
|
|
186
|
+
constructor(parent, popoverService, focusHandler, cdr, dropdownService) {
|
|
187
|
+
this.parent = parent;
|
|
188
|
+
this.popoverService = popoverService;
|
|
189
|
+
this.focusHandler = focusHandler;
|
|
190
|
+
this.isMenuClosable = true;
|
|
191
|
+
this.subscriptions = [];
|
|
192
|
+
this.subscriptions.push(dropdownService.changes.subscribe(value => (popoverService.open = value)));
|
|
193
|
+
this.subscriptions.push(popoverService.openChange.subscribe(() => cdr.markForCheck()));
|
|
194
|
+
}
|
|
195
|
+
ngOnDestroy() {
|
|
196
|
+
this.subscriptions.forEach(sub => sub.unsubscribe());
|
|
197
|
+
}
|
|
198
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDropdown, deps: [{ token: ClrDropdown, optional: true, skipSelf: true }, { token: i2.ClrPopoverService }, { token: DropdownFocusHandler }, { token: i0.ChangeDetectorRef }, { token: RootDropdownService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
199
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrDropdown, isStandalone: false, selector: "clr-dropdown", inputs: { isMenuClosable: ["clrCloseMenuOnItemClick", "isMenuClosable"] }, host: { properties: { "class.dropdown": "true", "class.open": "popoverService.open" } }, providers: [ROOT_DROPDOWN_PROVIDER, FOCUS_SERVICE_PROVIDER, DROPDOWN_FOCUS_HANDLER_PROVIDER], hostDirectives: [{ directive: i2.ClrPopoverHostDirective }], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
|
|
200
|
+
}
|
|
201
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDropdown, decorators: [{
|
|
202
|
+
type: Component,
|
|
203
|
+
args: [{
|
|
204
|
+
selector: 'clr-dropdown',
|
|
205
|
+
template: `<ng-content></ng-content>`,
|
|
206
|
+
host: {
|
|
207
|
+
'[class.dropdown]': 'true',
|
|
208
|
+
'[class.open]': 'popoverService.open',
|
|
209
|
+
},
|
|
210
|
+
providers: [ROOT_DROPDOWN_PROVIDER, FOCUS_SERVICE_PROVIDER, DROPDOWN_FOCUS_HANDLER_PROVIDER],
|
|
211
|
+
hostDirectives: [ClrPopoverHostDirective$1],
|
|
212
|
+
standalone: false,
|
|
213
|
+
}]
|
|
214
|
+
}], ctorParameters: () => [{ type: ClrDropdown, decorators: [{
|
|
215
|
+
type: SkipSelf
|
|
216
|
+
}, {
|
|
217
|
+
type: Optional
|
|
218
|
+
}] }, { type: i2.ClrPopoverService }, { type: DropdownFocusHandler }, { type: i0.ChangeDetectorRef }, { type: RootDropdownService }], propDecorators: { isMenuClosable: [{
|
|
219
|
+
type: Input,
|
|
220
|
+
args: ['clrCloseMenuOnItemClick']
|
|
221
|
+
}] } });
|
|
222
|
+
|
|
223
|
+
/*
|
|
224
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
225
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
226
|
+
* This software is released under MIT license.
|
|
227
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
228
|
+
*/
|
|
229
|
+
class ClrDropdownMenu {
|
|
230
|
+
constructor(parentHost, nested, focusHandler, elementRef, popoverService, popoverContent) {
|
|
231
|
+
this.focusHandler = focusHandler;
|
|
232
|
+
this.elementRef = elementRef;
|
|
233
|
+
this.popoverService = popoverService;
|
|
234
|
+
this.popoverContent = popoverContent;
|
|
235
|
+
if (!parentHost) {
|
|
236
|
+
throw new Error('clr-dropdown-menu should only be used inside of a clr-dropdown');
|
|
237
|
+
}
|
|
238
|
+
popoverContent.scrollToClose = true;
|
|
239
|
+
popoverContent.contentType = ClrPopoverType$1.DROPDOWN;
|
|
240
|
+
popoverContent.contentAt = nested ? ClrPopoverPosition$1.RIGHT_TOP : ClrPopoverPosition$1.BOTTOM_LEFT;
|
|
241
|
+
popoverService.panelClass.push('clr-dropdown-container');
|
|
242
|
+
}
|
|
243
|
+
/*
|
|
244
|
+
* Fallback to hide when *clrIfOpen is not being used
|
|
245
|
+
*/
|
|
246
|
+
get isOffScreen() {
|
|
247
|
+
return !this.popoverService.open;
|
|
248
|
+
}
|
|
249
|
+
set position(position) {
|
|
250
|
+
if (!position) {
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
const posIndex = DROPDOWN_POSITIONS$1.indexOf(position);
|
|
254
|
+
if (posIndex === -1) {
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
// set the popover values based on menu position
|
|
258
|
+
this.popoverContent.contentAt = DROPDOWN_POSITIONS$1[posIndex];
|
|
259
|
+
}
|
|
260
|
+
ngAfterContentInit() {
|
|
261
|
+
this.focusHandler.container = this.elementRef.nativeElement;
|
|
262
|
+
this.items.changes.subscribe(() => this.focusHandler.addChildren(this.items.toArray()));
|
|
263
|
+
// I saw this on GitHub as a solution to avoid code duplication because of missed QueryList changes
|
|
264
|
+
this.items.notifyOnChanges();
|
|
265
|
+
}
|
|
266
|
+
ngOnDestroy() {
|
|
267
|
+
this.focusHandler.resetChildren();
|
|
268
|
+
}
|
|
269
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDropdownMenu, deps: [{ token: POPOVER_HOST_ANCHOR$1, optional: true }, { token: ClrDropdownMenu, optional: true, skipSelf: true }, { token: DropdownFocusHandler }, { token: i0.ElementRef }, { token: i2.ClrPopoverService }, { token: i2.ClrPopoverContent }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
270
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrDropdownMenu, isStandalone: false, selector: "clr-dropdown-menu", inputs: { position: ["clrPosition", "position"] }, host: { properties: { "class.dropdown-menu": "true", "attr.role": "\"menu\"", "class.is-off-screen": "this.isOffScreen" } }, queries: [{ propertyName: "items", predicate: FocusableItem }], hostDirectives: [{ directive: i2.ClrPopoverContent }], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
|
|
271
|
+
}
|
|
272
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDropdownMenu, decorators: [{
|
|
273
|
+
type: Component,
|
|
274
|
+
args: [{
|
|
275
|
+
selector: 'clr-dropdown-menu',
|
|
276
|
+
template: `<ng-content></ng-content>`,
|
|
277
|
+
host: {
|
|
278
|
+
'[class.dropdown-menu]': 'true',
|
|
279
|
+
'[attr.role]': '"menu"',
|
|
280
|
+
},
|
|
281
|
+
standalone: false,
|
|
282
|
+
hostDirectives: [ClrPopoverContent$1],
|
|
283
|
+
}]
|
|
284
|
+
}], ctorParameters: () => [{ type: i0.ElementRef, decorators: [{
|
|
285
|
+
type: Optional
|
|
286
|
+
}, {
|
|
287
|
+
type: Inject,
|
|
288
|
+
args: [POPOVER_HOST_ANCHOR$1]
|
|
289
|
+
}] }, { type: ClrDropdownMenu, decorators: [{
|
|
290
|
+
type: Optional
|
|
291
|
+
}, {
|
|
292
|
+
type: SkipSelf
|
|
293
|
+
}] }, { type: DropdownFocusHandler }, { type: i0.ElementRef }, { type: i2.ClrPopoverService }, { type: i2.ClrPopoverContent }], propDecorators: { items: [{
|
|
294
|
+
type: ContentChildren,
|
|
295
|
+
args: [FocusableItem]
|
|
296
|
+
}], isOffScreen: [{
|
|
297
|
+
type: HostBinding,
|
|
298
|
+
args: ['class.is-off-screen']
|
|
299
|
+
}], position: [{
|
|
300
|
+
type: Input,
|
|
301
|
+
args: ['clrPosition']
|
|
302
|
+
}] } });
|
|
303
|
+
|
|
304
|
+
/*
|
|
305
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
306
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
307
|
+
* This software is released under MIT license.
|
|
308
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
309
|
+
*/
|
|
310
|
+
class ClrDropdownTrigger {
|
|
311
|
+
constructor(dropdown, popoverService, el, focusHandler) {
|
|
312
|
+
this.popoverService = popoverService;
|
|
313
|
+
this.isRootLevelToggle = true;
|
|
314
|
+
// if the containing dropdown has a parent, then this is not the root level one
|
|
315
|
+
if (dropdown.parent) {
|
|
316
|
+
this.isRootLevelToggle = false;
|
|
317
|
+
}
|
|
318
|
+
focusHandler.trigger = el.nativeElement;
|
|
319
|
+
popoverService.anchorElementRef = el;
|
|
320
|
+
}
|
|
321
|
+
get active() {
|
|
322
|
+
return this.popoverService.open;
|
|
323
|
+
}
|
|
324
|
+
onDropdownTriggerClick(event) {
|
|
325
|
+
this.popoverService.toggleWithEvent(event);
|
|
326
|
+
}
|
|
327
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDropdownTrigger, deps: [{ token: ClrDropdown }, { token: i2.ClrPopoverService }, { token: i0.ElementRef }, { token: DropdownFocusHandler }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
328
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrDropdownTrigger, isStandalone: false, selector: "[clrDropdownTrigger],[clrDropdownToggle]", host: { listeners: { "click": "onDropdownTriggerClick($event)" }, properties: { "class.dropdown-toggle": "isRootLevelToggle", "class.dropdown-item": "!isRootLevelToggle", "class.expandable": "!isRootLevelToggle", "class.active": "active", "attr.aria-haspopup": "\"menu\"", "attr.aria-expanded": "active" } }, ngImport: i0 }); }
|
|
329
|
+
}
|
|
330
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDropdownTrigger, decorators: [{
|
|
331
|
+
type: Directive,
|
|
332
|
+
args: [{
|
|
333
|
+
// We support both selectors for legacy reasons
|
|
334
|
+
selector: '[clrDropdownTrigger],[clrDropdownToggle]',
|
|
335
|
+
host: {
|
|
336
|
+
'[class.dropdown-toggle]': 'isRootLevelToggle',
|
|
337
|
+
'[class.dropdown-item]': '!isRootLevelToggle',
|
|
338
|
+
'[class.expandable]': '!isRootLevelToggle',
|
|
339
|
+
'[class.active]': 'active',
|
|
340
|
+
'[attr.aria-haspopup]': '"menu"',
|
|
341
|
+
'[attr.aria-expanded]': 'active',
|
|
342
|
+
},
|
|
343
|
+
standalone: false,
|
|
344
|
+
}]
|
|
345
|
+
}], ctorParameters: () => [{ type: ClrDropdown }, { type: i2.ClrPopoverService }, { type: i0.ElementRef }, { type: DropdownFocusHandler }], propDecorators: { onDropdownTriggerClick: [{
|
|
346
|
+
type: HostListener,
|
|
347
|
+
args: ['click', ['$event']]
|
|
348
|
+
}] } });
|
|
349
|
+
|
|
350
|
+
/*
|
|
351
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
352
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
353
|
+
* This software is released under MIT license.
|
|
354
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
355
|
+
*/
|
|
356
|
+
class ClrDropdownItem {
|
|
357
|
+
constructor(dropdown, _dropdownService, focusableItem, el, renderer) {
|
|
358
|
+
this.dropdown = dropdown;
|
|
359
|
+
this._dropdownService = _dropdownService;
|
|
360
|
+
this.focusableItem = focusableItem;
|
|
361
|
+
this.el = el;
|
|
362
|
+
this.renderer = renderer;
|
|
363
|
+
}
|
|
364
|
+
get disabled() {
|
|
365
|
+
return this.focusableItem.disabled;
|
|
366
|
+
}
|
|
367
|
+
set disabled(value) {
|
|
368
|
+
// Empty string attribute evaluates to false but should disable the item, so we need to add a special case for it.
|
|
369
|
+
this.focusableItem.disabled = !!value || value === '';
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Let you overwrite the focusable auto increment id.
|
|
373
|
+
*/
|
|
374
|
+
get dropdownItemId() {
|
|
375
|
+
return this.focusableItem.id;
|
|
376
|
+
}
|
|
377
|
+
set dropdownItemId(value) {
|
|
378
|
+
this.focusableItem.id = value;
|
|
379
|
+
}
|
|
380
|
+
onDropdownItemClick() {
|
|
381
|
+
// Move focus back to the root dropdown trigger.
|
|
382
|
+
// This is done BEFORE the dropdown is closed so that focus gets moved properly if a modal is opened.
|
|
383
|
+
if (this.dropdown.isMenuClosable && !this.disabled && this.dropdown.popoverService.open) {
|
|
384
|
+
const rootDropdown = this.findRootDropdown();
|
|
385
|
+
rootDropdown.focusHandler.focus();
|
|
386
|
+
}
|
|
387
|
+
// Ensure that the dropdown is closed after custom dropdown item click event handlers have run.
|
|
388
|
+
setTimeout(() => {
|
|
389
|
+
if (this.dropdown.isMenuClosable && !this.disabled) {
|
|
390
|
+
this._dropdownService.closeMenus();
|
|
391
|
+
}
|
|
392
|
+
});
|
|
393
|
+
}
|
|
394
|
+
onSpaceKeydown($event) {
|
|
395
|
+
this.stopImmediatePropagationIfDisabled($event);
|
|
396
|
+
}
|
|
397
|
+
onEnterKeydown($event) {
|
|
398
|
+
this.stopImmediatePropagationIfDisabled($event);
|
|
399
|
+
}
|
|
400
|
+
stopImmediatePropagationIfDisabled($event) {
|
|
401
|
+
if (this.disabled) {
|
|
402
|
+
$event.preventDefault(); // prevent click event
|
|
403
|
+
$event.stopImmediatePropagation();
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
findRootDropdown() {
|
|
407
|
+
let rootDropdown = this.dropdown;
|
|
408
|
+
while (rootDropdown.parent) {
|
|
409
|
+
rootDropdown = rootDropdown.parent;
|
|
410
|
+
}
|
|
411
|
+
return rootDropdown;
|
|
412
|
+
}
|
|
413
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDropdownItem, deps: [{ token: ClrDropdown }, { token: RootDropdownService }, { token: i1.FocusableItem }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
414
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrDropdownItem, isStandalone: false, selector: "[clrDropdownItem]", inputs: { disabled: ["clrDisabled", "disabled"], dropdownItemId: ["id", "dropdownItemId"] }, host: { listeners: { "click": "onDropdownItemClick()", "keydown.space": "onSpaceKeydown($event)", "keydown.enter": "onEnterKeydown($event)" }, properties: { "class.disabled": "disabled", "class.dropdown-item": "true", "attr.role": "\"menuitem\"", "attr.aria-disabled": "disabled", "attr.id": "dropdownItemId" } }, providers: [BASIC_FOCUSABLE_ITEM_PROVIDER], ngImport: i0 }); }
|
|
415
|
+
}
|
|
416
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDropdownItem, decorators: [{
|
|
417
|
+
type: Directive,
|
|
418
|
+
args: [{
|
|
419
|
+
selector: '[clrDropdownItem]',
|
|
420
|
+
host: {
|
|
421
|
+
'[class.disabled]': 'disabled',
|
|
422
|
+
'[class.dropdown-item]': 'true',
|
|
423
|
+
'[attr.role]': '"menuitem"',
|
|
424
|
+
'[attr.aria-disabled]': 'disabled',
|
|
425
|
+
'[attr.id]': 'dropdownItemId',
|
|
426
|
+
},
|
|
427
|
+
providers: [BASIC_FOCUSABLE_ITEM_PROVIDER],
|
|
428
|
+
standalone: false,
|
|
429
|
+
}]
|
|
430
|
+
}], ctorParameters: () => [{ type: ClrDropdown }, { type: RootDropdownService }, { type: i1.FocusableItem }, { type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { disabled: [{
|
|
431
|
+
type: Input,
|
|
432
|
+
args: ['clrDisabled']
|
|
433
|
+
}], dropdownItemId: [{
|
|
434
|
+
type: Input,
|
|
435
|
+
args: ['id']
|
|
436
|
+
}], onDropdownItemClick: [{
|
|
437
|
+
type: HostListener,
|
|
438
|
+
args: ['click']
|
|
439
|
+
}], onSpaceKeydown: [{
|
|
440
|
+
type: HostListener,
|
|
441
|
+
args: ['keydown.space', ['$event']]
|
|
442
|
+
}], onEnterKeydown: [{
|
|
443
|
+
type: HostListener,
|
|
444
|
+
args: ['keydown.enter', ['$event']]
|
|
445
|
+
}] } });
|
|
446
|
+
|
|
447
|
+
/*
|
|
448
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
449
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
450
|
+
* This software is released under MIT license.
|
|
451
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
452
|
+
*/
|
|
453
|
+
const CLR_MENU_POSITIONS = [
|
|
454
|
+
'bottom-left',
|
|
455
|
+
'bottom-right',
|
|
456
|
+
'left-bottom',
|
|
457
|
+
'left-top',
|
|
458
|
+
'right-bottom',
|
|
459
|
+
'right-top',
|
|
460
|
+
'top-left',
|
|
461
|
+
'top-right',
|
|
462
|
+
];
|
|
463
|
+
|
|
464
|
+
/*
|
|
465
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
466
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
467
|
+
* This software is released under MIT license.
|
|
468
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
469
|
+
*/
|
|
470
|
+
const CLR_DROPDOWN_DIRECTIVES = [ClrDropdown, ClrDropdownMenu, ClrDropdownTrigger, ClrDropdownItem];
|
|
471
|
+
class ClrDropdownModule {
|
|
472
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
473
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrDropdownModule, declarations: [ClrDropdown, ClrDropdownMenu, ClrDropdownTrigger, ClrDropdownItem], imports: [CommonModule, ClrIcon, ClrIfOpen$1], exports: [ClrDropdown, ClrDropdownMenu, ClrDropdownTrigger, ClrDropdownItem, ClrIfOpen$1, ClrIcon] }); }
|
|
474
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDropdownModule, imports: [CommonModule, ClrIcon] }); }
|
|
475
|
+
}
|
|
476
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDropdownModule, decorators: [{
|
|
477
|
+
type: NgModule,
|
|
478
|
+
args: [{
|
|
479
|
+
imports: [CommonModule, ClrIcon, ClrIfOpen$1],
|
|
480
|
+
declarations: [CLR_DROPDOWN_DIRECTIVES],
|
|
481
|
+
exports: [CLR_DROPDOWN_DIRECTIVES, ClrIfOpen$1, ClrIcon],
|
|
482
|
+
}]
|
|
483
|
+
}] });
|
|
484
|
+
|
|
485
|
+
/*
|
|
486
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
487
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
488
|
+
* This software is released under MIT license.
|
|
489
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
490
|
+
*/
|
|
491
|
+
|
|
492
|
+
/*
|
|
493
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
494
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
495
|
+
* This software is released under MIT license.
|
|
496
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
497
|
+
*/
|
|
498
|
+
// Popovers might need to ignore click events on an element
|
|
499
|
+
// (eg: popover opens on focus on an input field. Clicks should be ignored in this case)
|
|
500
|
+
class ClrPopoverService {
|
|
501
|
+
constructor() {
|
|
502
|
+
this.panelClass = [];
|
|
503
|
+
this._open = false;
|
|
504
|
+
this._openChange = new Subject();
|
|
505
|
+
this._openEventChange = new Subject();
|
|
506
|
+
this._positionChange = new Subject();
|
|
507
|
+
this._resetPositions = new Subject();
|
|
508
|
+
this._updatePosition = new Subject();
|
|
509
|
+
this._popoverVisible = new Subject();
|
|
510
|
+
}
|
|
511
|
+
get openChange() {
|
|
512
|
+
return this._openChange.asObservable();
|
|
513
|
+
}
|
|
514
|
+
get popoverVisible() {
|
|
515
|
+
return this._popoverVisible.asObservable();
|
|
516
|
+
}
|
|
517
|
+
get openEvent() {
|
|
518
|
+
return this._openEvent;
|
|
519
|
+
}
|
|
520
|
+
set openEvent(event) {
|
|
521
|
+
this._openEvent = event;
|
|
522
|
+
this._openEventChange.next(event);
|
|
523
|
+
}
|
|
524
|
+
get open() {
|
|
525
|
+
return this._open;
|
|
526
|
+
}
|
|
527
|
+
set open(value) {
|
|
528
|
+
value = !!value;
|
|
529
|
+
if (this._open !== value) {
|
|
530
|
+
this._open = value;
|
|
531
|
+
this._openChange.next(value);
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
get resetPositionsChange() {
|
|
535
|
+
return this._resetPositions.asObservable();
|
|
536
|
+
}
|
|
537
|
+
positionChange(position) {
|
|
538
|
+
this._positionChange.next(position);
|
|
539
|
+
}
|
|
540
|
+
updatePositionChange() {
|
|
541
|
+
return this._updatePosition.asObservable();
|
|
542
|
+
}
|
|
543
|
+
getPositionChange() {
|
|
544
|
+
return this._positionChange.asObservable();
|
|
545
|
+
}
|
|
546
|
+
getEventChange() {
|
|
547
|
+
return this._openEventChange.asObservable();
|
|
548
|
+
}
|
|
549
|
+
/**
|
|
550
|
+
* Sometimes, we need to remember the event that triggered the toggling to avoid loops.
|
|
551
|
+
* This is for instance the case of components that open on a click, but close on a click outside.
|
|
552
|
+
*/
|
|
553
|
+
toggleWithEvent(event) {
|
|
554
|
+
preventArrowKeyScroll(event);
|
|
555
|
+
this.openEvent = event;
|
|
556
|
+
this.open = !this.open;
|
|
557
|
+
}
|
|
558
|
+
popoverVisibleEmit(visible) {
|
|
559
|
+
this._popoverVisible.next(visible);
|
|
560
|
+
}
|
|
561
|
+
resetPositions() {
|
|
562
|
+
this._resetPositions.next();
|
|
563
|
+
}
|
|
564
|
+
updatePosition() {
|
|
565
|
+
this._updatePosition.next();
|
|
566
|
+
}
|
|
567
|
+
focusCloseButton() {
|
|
568
|
+
this.closeButtonRef.nativeElement?.focus();
|
|
569
|
+
}
|
|
570
|
+
focusAnchor() {
|
|
571
|
+
this.anchorElementRef?.nativeElement?.focus({ preventScroll: true });
|
|
572
|
+
}
|
|
573
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
574
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverService }); }
|
|
575
|
+
}
|
|
576
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverService, decorators: [{
|
|
577
|
+
type: Injectable
|
|
578
|
+
}] });
|
|
579
|
+
|
|
580
|
+
/*
|
|
581
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
582
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
583
|
+
* This software is released under MIT license.
|
|
584
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
585
|
+
*/
|
|
586
|
+
var ClrPopoverType;
|
|
587
|
+
(function (ClrPopoverType) {
|
|
588
|
+
ClrPopoverType[ClrPopoverType["SIGNPOST"] = 0] = "SIGNPOST";
|
|
589
|
+
ClrPopoverType[ClrPopoverType["TOOLTIP"] = 1] = "TOOLTIP";
|
|
590
|
+
ClrPopoverType[ClrPopoverType["DROPDOWN"] = 2] = "DROPDOWN";
|
|
591
|
+
ClrPopoverType[ClrPopoverType["DEFAULT"] = 3] = "DEFAULT";
|
|
592
|
+
})(ClrPopoverType || (ClrPopoverType = {}));
|
|
593
|
+
var ClrPopoverPosition;
|
|
594
|
+
(function (ClrPopoverPosition) {
|
|
595
|
+
ClrPopoverPosition["TOP_RIGHT"] = "top-right";
|
|
596
|
+
ClrPopoverPosition["TOP_MIDDLE"] = "top-middle";
|
|
597
|
+
ClrPopoverPosition["TOP_LEFT"] = "top-left";
|
|
598
|
+
ClrPopoverPosition["RIGHT"] = "right";
|
|
599
|
+
ClrPopoverPosition["RIGHT_TOP"] = "right-top";
|
|
600
|
+
ClrPopoverPosition["RIGHT_MIDDLE"] = "right-middle";
|
|
601
|
+
ClrPopoverPosition["RIGHT_BOTTOM"] = "right-bottom";
|
|
602
|
+
ClrPopoverPosition["LEFT"] = "left";
|
|
603
|
+
ClrPopoverPosition["LEFT_TOP"] = "left-top";
|
|
604
|
+
ClrPopoverPosition["LEFT_MIDDLE"] = "left-middle";
|
|
605
|
+
ClrPopoverPosition["LEFT_BOTTOM"] = "left-bottom";
|
|
606
|
+
ClrPopoverPosition["BOTTOM_RIGHT"] = "bottom-right";
|
|
607
|
+
ClrPopoverPosition["BOTTOM_MIDDLE"] = "bottom-middle";
|
|
608
|
+
ClrPopoverPosition["BOTTOM_LEFT"] = "bottom-left";
|
|
609
|
+
})(ClrPopoverPosition || (ClrPopoverPosition = {}));
|
|
610
|
+
const TOOLTIP_POSITIONS = [
|
|
611
|
+
ClrPopoverPosition.RIGHT, // default. must be at index 0
|
|
612
|
+
ClrPopoverPosition.LEFT,
|
|
613
|
+
ClrPopoverPosition.BOTTOM_RIGHT,
|
|
614
|
+
ClrPopoverPosition.BOTTOM_LEFT,
|
|
615
|
+
ClrPopoverPosition.TOP_RIGHT,
|
|
616
|
+
ClrPopoverPosition.TOP_LEFT,
|
|
617
|
+
];
|
|
618
|
+
const DROPDOWN_POSITIONS = [
|
|
619
|
+
ClrPopoverPosition.BOTTOM_LEFT, // default. must be at index 0
|
|
620
|
+
ClrPopoverPosition.BOTTOM_RIGHT,
|
|
621
|
+
ClrPopoverPosition.TOP_LEFT,
|
|
622
|
+
ClrPopoverPosition.TOP_RIGHT,
|
|
623
|
+
ClrPopoverPosition.RIGHT_TOP,
|
|
624
|
+
ClrPopoverPosition.RIGHT_BOTTOM,
|
|
625
|
+
ClrPopoverPosition.LEFT_TOP,
|
|
626
|
+
ClrPopoverPosition.LEFT_BOTTOM,
|
|
627
|
+
];
|
|
628
|
+
const SIGNPOST_POSITIONS = [
|
|
629
|
+
ClrPopoverPosition.RIGHT_MIDDLE, // default. must be at index 0
|
|
630
|
+
ClrPopoverPosition.RIGHT_TOP,
|
|
631
|
+
ClrPopoverPosition.RIGHT_BOTTOM,
|
|
632
|
+
ClrPopoverPosition.TOP_RIGHT,
|
|
633
|
+
ClrPopoverPosition.TOP_LEFT,
|
|
634
|
+
ClrPopoverPosition.TOP_MIDDLE,
|
|
635
|
+
ClrPopoverPosition.BOTTOM_RIGHT,
|
|
636
|
+
ClrPopoverPosition.BOTTOM_MIDDLE,
|
|
637
|
+
ClrPopoverPosition.BOTTOM_LEFT,
|
|
638
|
+
ClrPopoverPosition.LEFT_BOTTOM,
|
|
639
|
+
ClrPopoverPosition.LEFT_MIDDLE,
|
|
640
|
+
ClrPopoverPosition.LEFT_TOP,
|
|
641
|
+
];
|
|
642
|
+
function getPositionsArray(type) {
|
|
643
|
+
switch (type) {
|
|
644
|
+
case ClrPopoverType.TOOLTIP:
|
|
645
|
+
return TOOLTIP_POSITIONS;
|
|
646
|
+
case ClrPopoverType.DROPDOWN:
|
|
647
|
+
return DROPDOWN_POSITIONS;
|
|
648
|
+
case ClrPopoverType.SIGNPOST:
|
|
649
|
+
case ClrPopoverType.DEFAULT:
|
|
650
|
+
default:
|
|
651
|
+
return SIGNPOST_POSITIONS;
|
|
652
|
+
}
|
|
653
|
+
}
|
|
654
|
+
function getConnectedPositions(type) {
|
|
655
|
+
const result = [];
|
|
656
|
+
getPositionsArray(type).forEach(position => {
|
|
657
|
+
result.push(mapPopoverKeyToPosition(position, type));
|
|
658
|
+
});
|
|
659
|
+
return result;
|
|
660
|
+
}
|
|
661
|
+
const POPOVER_OFFSETS = {
|
|
662
|
+
[ClrPopoverType.SIGNPOST]: 16,
|
|
663
|
+
[ClrPopoverType.TOOLTIP]: 21,
|
|
664
|
+
[ClrPopoverType.DROPDOWN]: 2,
|
|
665
|
+
[ClrPopoverType.DEFAULT]: 0,
|
|
666
|
+
};
|
|
667
|
+
function getOffset(key, type) {
|
|
668
|
+
const offset = POPOVER_OFFSETS[type] || 0;
|
|
669
|
+
switch (key) {
|
|
670
|
+
// TOP
|
|
671
|
+
case ClrPopoverPosition.TOP_LEFT:
|
|
672
|
+
case ClrPopoverPosition.TOP_MIDDLE:
|
|
673
|
+
case ClrPopoverPosition.TOP_RIGHT:
|
|
674
|
+
return {
|
|
675
|
+
offsetY: -offset,
|
|
676
|
+
offsetX: 0,
|
|
677
|
+
};
|
|
678
|
+
// LEFT
|
|
679
|
+
case ClrPopoverPosition.LEFT_TOP:
|
|
680
|
+
case ClrPopoverPosition.LEFT_MIDDLE:
|
|
681
|
+
case ClrPopoverPosition.LEFT:
|
|
682
|
+
case ClrPopoverPosition.LEFT_BOTTOM:
|
|
683
|
+
return {
|
|
684
|
+
offsetY: 0,
|
|
685
|
+
offsetX: -offset,
|
|
686
|
+
};
|
|
687
|
+
// RIGHT
|
|
688
|
+
case ClrPopoverPosition.RIGHT_TOP:
|
|
689
|
+
case ClrPopoverPosition.RIGHT_MIDDLE:
|
|
690
|
+
case ClrPopoverPosition.RIGHT:
|
|
691
|
+
case ClrPopoverPosition.RIGHT_BOTTOM:
|
|
692
|
+
return {
|
|
693
|
+
offsetY: 0,
|
|
694
|
+
offsetX: offset,
|
|
695
|
+
};
|
|
696
|
+
// BOTTOM and DEFAULT
|
|
697
|
+
case ClrPopoverPosition.BOTTOM_RIGHT:
|
|
698
|
+
case ClrPopoverPosition.BOTTOM_MIDDLE:
|
|
699
|
+
case ClrPopoverPosition.BOTTOM_LEFT:
|
|
700
|
+
default:
|
|
701
|
+
return {
|
|
702
|
+
offsetY: offset,
|
|
703
|
+
offsetX: 0,
|
|
704
|
+
};
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
const STANDARD_ANCHORS = {
|
|
708
|
+
// TOP
|
|
709
|
+
[ClrPopoverPosition.TOP_RIGHT]: { anchor: ClrPosition.TOP_CENTER, content: ClrPosition.BOTTOM_LEFT },
|
|
710
|
+
[ClrPopoverPosition.TOP_MIDDLE]: { anchor: ClrPosition.TOP_CENTER, content: ClrPosition.BOTTOM_CENTER },
|
|
711
|
+
[ClrPopoverPosition.TOP_LEFT]: { anchor: ClrPosition.TOP_CENTER, content: ClrPosition.BOTTOM_RIGHT },
|
|
712
|
+
// LEFT
|
|
713
|
+
[ClrPopoverPosition.LEFT]: { anchor: ClrPosition.LEFT_CENTER, content: ClrPosition.RIGHT_TOP },
|
|
714
|
+
[ClrPopoverPosition.LEFT_TOP]: { anchor: ClrPosition.LEFT_CENTER, content: ClrPosition.RIGHT_BOTTOM },
|
|
715
|
+
[ClrPopoverPosition.LEFT_MIDDLE]: { anchor: ClrPosition.LEFT_CENTER, content: ClrPosition.RIGHT_CENTER },
|
|
716
|
+
[ClrPopoverPosition.LEFT_BOTTOM]: { anchor: ClrPosition.LEFT_CENTER, content: ClrPosition.RIGHT_TOP },
|
|
717
|
+
// RIGHT
|
|
718
|
+
[ClrPopoverPosition.RIGHT]: { anchor: ClrPosition.RIGHT_CENTER, content: ClrPosition.LEFT_TOP },
|
|
719
|
+
[ClrPopoverPosition.RIGHT_TOP]: { anchor: ClrPosition.RIGHT_CENTER, content: ClrPosition.LEFT_BOTTOM },
|
|
720
|
+
[ClrPopoverPosition.RIGHT_MIDDLE]: { anchor: ClrPosition.RIGHT_CENTER, content: ClrPosition.LEFT_CENTER },
|
|
721
|
+
[ClrPopoverPosition.RIGHT_BOTTOM]: { anchor: ClrPosition.RIGHT_CENTER, content: ClrPosition.LEFT_TOP },
|
|
722
|
+
// BOTTOM
|
|
723
|
+
[ClrPopoverPosition.BOTTOM_RIGHT]: { anchor: ClrPosition.BOTTOM_CENTER, content: ClrPosition.TOP_LEFT },
|
|
724
|
+
[ClrPopoverPosition.BOTTOM_MIDDLE]: { anchor: ClrPosition.BOTTOM_CENTER, content: ClrPosition.TOP_CENTER },
|
|
725
|
+
[ClrPopoverPosition.BOTTOM_LEFT]: { anchor: ClrPosition.BOTTOM_CENTER, content: ClrPosition.TOP_RIGHT },
|
|
726
|
+
};
|
|
727
|
+
const DROPDOWN_ANCHORS = {
|
|
728
|
+
// TOP
|
|
729
|
+
[ClrPopoverPosition.TOP_RIGHT]: { anchor: ClrPosition.TOP_RIGHT, content: ClrPosition.BOTTOM_RIGHT },
|
|
730
|
+
[ClrPopoverPosition.TOP_LEFT]: { anchor: ClrPosition.TOP_LEFT, content: ClrPosition.BOTTOM_LEFT },
|
|
731
|
+
// LEFT
|
|
732
|
+
[ClrPopoverPosition.LEFT_TOP]: { anchor: ClrPosition.LEFT_TOP, content: ClrPosition.TOP_RIGHT },
|
|
733
|
+
[ClrPopoverPosition.LEFT_BOTTOM]: { anchor: ClrPosition.LEFT_BOTTOM, content: ClrPosition.BOTTOM_RIGHT },
|
|
734
|
+
// RIGHT
|
|
735
|
+
[ClrPopoverPosition.RIGHT_TOP]: { anchor: ClrPosition.RIGHT_TOP, content: ClrPosition.LEFT_TOP },
|
|
736
|
+
[ClrPopoverPosition.RIGHT_BOTTOM]: { anchor: ClrPosition.RIGHT_BOTTOM, content: ClrPosition.LEFT_BOTTOM },
|
|
737
|
+
// BOTTOM
|
|
738
|
+
[ClrPopoverPosition.BOTTOM_RIGHT]: { anchor: ClrPosition.BOTTOM_LEFT, content: ClrPosition.TOP_RIGHT },
|
|
739
|
+
[ClrPopoverPosition.BOTTOM_LEFT]: { anchor: ClrPosition.BOTTOM_RIGHT, content: ClrPosition.TOP_LEFT },
|
|
740
|
+
};
|
|
741
|
+
function mapPopoverKeyToPosition(key, type) {
|
|
742
|
+
let offset = getOffset(key, type);
|
|
743
|
+
const defaultPosition = { anchor: ClrPosition.BOTTOM_LEFT, content: ClrPosition.TOP_LEFT };
|
|
744
|
+
const { anchor, content } = (type === ClrPopoverType.DROPDOWN ? DROPDOWN_ANCHORS[key] : STANDARD_ANCHORS[key]) ?? defaultPosition;
|
|
745
|
+
return {
|
|
746
|
+
...getAnchorPosition(anchor),
|
|
747
|
+
...getContentPosition(content),
|
|
748
|
+
...offset,
|
|
749
|
+
panelClass: key,
|
|
750
|
+
};
|
|
751
|
+
}
|
|
752
|
+
function getAnchorPosition(key) {
|
|
753
|
+
switch (key) {
|
|
754
|
+
// TOP Positions
|
|
755
|
+
case ClrPosition.TOP_LEFT:
|
|
756
|
+
return {
|
|
757
|
+
originX: 'start',
|
|
758
|
+
originY: 'top',
|
|
759
|
+
};
|
|
760
|
+
case ClrPosition.TOP_CENTER:
|
|
761
|
+
return {
|
|
762
|
+
originX: 'center',
|
|
763
|
+
originY: 'top',
|
|
764
|
+
};
|
|
765
|
+
case ClrPosition.TOP_RIGHT:
|
|
766
|
+
return {
|
|
767
|
+
originX: 'end',
|
|
768
|
+
originY: 'top',
|
|
769
|
+
};
|
|
770
|
+
// LEFT Positions
|
|
771
|
+
case ClrPosition.LEFT_TOP:
|
|
772
|
+
return {
|
|
773
|
+
originX: 'start',
|
|
774
|
+
originY: 'top',
|
|
775
|
+
};
|
|
776
|
+
case ClrPosition.LEFT_CENTER:
|
|
777
|
+
return {
|
|
778
|
+
originX: 'start',
|
|
779
|
+
originY: 'center',
|
|
780
|
+
};
|
|
781
|
+
case ClrPosition.LEFT_BOTTOM:
|
|
782
|
+
return {
|
|
783
|
+
originX: 'start',
|
|
784
|
+
originY: 'bottom',
|
|
785
|
+
};
|
|
786
|
+
// RIGHT Positions
|
|
787
|
+
case ClrPosition.RIGHT_TOP:
|
|
788
|
+
return {
|
|
789
|
+
originX: 'end',
|
|
790
|
+
originY: 'top',
|
|
791
|
+
};
|
|
792
|
+
case ClrPosition.RIGHT_CENTER:
|
|
793
|
+
return {
|
|
794
|
+
originX: 'end',
|
|
795
|
+
originY: 'center',
|
|
796
|
+
};
|
|
797
|
+
case ClrPosition.RIGHT_BOTTOM:
|
|
798
|
+
return {
|
|
799
|
+
originX: 'end',
|
|
800
|
+
originY: 'bottom',
|
|
801
|
+
};
|
|
802
|
+
// BOTTOM positions and default
|
|
803
|
+
case ClrPosition.BOTTOM_LEFT:
|
|
804
|
+
return {
|
|
805
|
+
originX: 'end',
|
|
806
|
+
originY: 'bottom',
|
|
807
|
+
};
|
|
808
|
+
case ClrPosition.BOTTOM_CENTER:
|
|
809
|
+
return {
|
|
810
|
+
originX: 'center',
|
|
811
|
+
originY: 'bottom',
|
|
812
|
+
};
|
|
813
|
+
case ClrPosition.BOTTOM_RIGHT:
|
|
814
|
+
default:
|
|
815
|
+
return {
|
|
816
|
+
originX: 'start',
|
|
817
|
+
originY: 'bottom',
|
|
818
|
+
};
|
|
819
|
+
}
|
|
820
|
+
}
|
|
821
|
+
function getContentPosition(key) {
|
|
822
|
+
switch (key) {
|
|
823
|
+
// TOP Positions
|
|
824
|
+
case ClrPosition.TOP_LEFT:
|
|
825
|
+
return {
|
|
826
|
+
overlayX: 'start',
|
|
827
|
+
overlayY: 'top',
|
|
828
|
+
};
|
|
829
|
+
case ClrPosition.TOP_CENTER:
|
|
830
|
+
return {
|
|
831
|
+
overlayX: 'center',
|
|
832
|
+
overlayY: 'top',
|
|
833
|
+
};
|
|
834
|
+
case ClrPosition.TOP_RIGHT:
|
|
835
|
+
return {
|
|
836
|
+
overlayX: 'end',
|
|
837
|
+
overlayY: 'top',
|
|
838
|
+
};
|
|
839
|
+
// LEFT Positions
|
|
840
|
+
case ClrPosition.LEFT_TOP:
|
|
841
|
+
return {
|
|
842
|
+
overlayX: 'start',
|
|
843
|
+
overlayY: 'top',
|
|
844
|
+
};
|
|
845
|
+
case ClrPosition.LEFT_CENTER:
|
|
846
|
+
return {
|
|
847
|
+
overlayX: 'start',
|
|
848
|
+
overlayY: 'center',
|
|
849
|
+
};
|
|
850
|
+
case ClrPosition.LEFT_BOTTOM:
|
|
851
|
+
return {
|
|
852
|
+
overlayX: 'start',
|
|
853
|
+
overlayY: 'bottom',
|
|
854
|
+
};
|
|
855
|
+
// RIGHT Positions
|
|
856
|
+
case ClrPosition.RIGHT_TOP:
|
|
857
|
+
return {
|
|
858
|
+
overlayX: 'end',
|
|
859
|
+
overlayY: 'top',
|
|
860
|
+
};
|
|
861
|
+
case ClrPosition.RIGHT_CENTER:
|
|
862
|
+
return {
|
|
863
|
+
overlayX: 'end',
|
|
864
|
+
overlayY: 'center',
|
|
865
|
+
};
|
|
866
|
+
case ClrPosition.RIGHT_BOTTOM:
|
|
867
|
+
return {
|
|
868
|
+
overlayX: 'end',
|
|
869
|
+
overlayY: 'bottom',
|
|
870
|
+
};
|
|
871
|
+
// BOTTOM positions and default
|
|
872
|
+
case ClrPosition.BOTTOM_LEFT:
|
|
873
|
+
return {
|
|
874
|
+
overlayX: 'start',
|
|
875
|
+
overlayY: 'bottom',
|
|
876
|
+
};
|
|
877
|
+
case ClrPosition.BOTTOM_CENTER:
|
|
878
|
+
return {
|
|
879
|
+
overlayX: 'center',
|
|
880
|
+
overlayY: 'bottom',
|
|
881
|
+
};
|
|
882
|
+
case ClrPosition.BOTTOM_RIGHT:
|
|
883
|
+
default:
|
|
884
|
+
return {
|
|
885
|
+
overlayX: 'end',
|
|
886
|
+
overlayY: 'bottom',
|
|
887
|
+
};
|
|
888
|
+
}
|
|
889
|
+
}
|
|
890
|
+
|
|
891
|
+
/*
|
|
892
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
893
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
894
|
+
* This software is released under MIT license.
|
|
895
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
896
|
+
*/
|
|
897
|
+
/** @dynamic */
|
|
898
|
+
class ClrPopoverContent {
|
|
899
|
+
constructor(element, container, template, overlayContainer, parent, overlay, popoverService, zone, platformId) {
|
|
900
|
+
this.container = container;
|
|
901
|
+
this.template = template;
|
|
902
|
+
this.parent = parent;
|
|
903
|
+
this.overlay = overlay;
|
|
904
|
+
this.popoverService = popoverService;
|
|
905
|
+
this.zone = zone;
|
|
906
|
+
this.platformId = platformId;
|
|
907
|
+
this._outsideClickClose = true;
|
|
908
|
+
this._scrollToClose = false;
|
|
909
|
+
this.popoverType = ClrPopoverType.DEFAULT;
|
|
910
|
+
this._availablePositions = [];
|
|
911
|
+
this._position = ClrPopoverPosition.BOTTOM_LEFT;
|
|
912
|
+
this.scrollableParents = [];
|
|
913
|
+
this.subscriptions = [];
|
|
914
|
+
this.preferredPositionIsSet = false;
|
|
915
|
+
this.availablePositionsAreSet = false;
|
|
916
|
+
this._preferredPosition = {
|
|
917
|
+
originX: 'start',
|
|
918
|
+
originY: 'top',
|
|
919
|
+
overlayX: 'end',
|
|
920
|
+
overlayY: 'top',
|
|
921
|
+
panelClass: ClrPopoverPosition.LEFT_TOP,
|
|
922
|
+
};
|
|
923
|
+
popoverService.panelClass.push('clr-popover-content');
|
|
924
|
+
overlayContainer.getContainerElement().classList.add('clr-overlay-container');
|
|
925
|
+
if (!template) {
|
|
926
|
+
this.elementRef = element;
|
|
927
|
+
}
|
|
928
|
+
}
|
|
929
|
+
set open(value) {
|
|
930
|
+
this.popoverService.open = !!value;
|
|
931
|
+
}
|
|
932
|
+
get contentAt() {
|
|
933
|
+
return this.preferredPositionIsSet ? this._preferredPosition : this._position;
|
|
934
|
+
}
|
|
935
|
+
set contentAt(position) {
|
|
936
|
+
if (typeof position === 'string') {
|
|
937
|
+
if (!position || Object.values(ClrPopoverPosition).indexOf(position) === -1) {
|
|
938
|
+
return;
|
|
939
|
+
}
|
|
940
|
+
// set the popover values based on menu position
|
|
941
|
+
this._position = position;
|
|
942
|
+
this.popoverService.positionChange(this._position);
|
|
943
|
+
}
|
|
944
|
+
else {
|
|
945
|
+
this.preferredPositionIsSet = true;
|
|
946
|
+
this._preferredPosition = position;
|
|
947
|
+
}
|
|
948
|
+
}
|
|
949
|
+
set availablePositions(positions) {
|
|
950
|
+
this.availablePositionsAreSet = true;
|
|
951
|
+
this._availablePositions = positions;
|
|
952
|
+
}
|
|
953
|
+
set contentType(type) {
|
|
954
|
+
this.popoverType = type;
|
|
955
|
+
if (!this.availablePositionsAreSet) {
|
|
956
|
+
this._availablePositions = getConnectedPositions(type);
|
|
957
|
+
}
|
|
958
|
+
}
|
|
959
|
+
get outsideClickClose() {
|
|
960
|
+
return this._outsideClickClose;
|
|
961
|
+
}
|
|
962
|
+
set outsideClickClose(clickToClose) {
|
|
963
|
+
this._outsideClickClose = !!clickToClose;
|
|
964
|
+
}
|
|
965
|
+
get scrollToClose() {
|
|
966
|
+
return this._scrollToClose;
|
|
967
|
+
}
|
|
968
|
+
set scrollToClose(scrollToClose) {
|
|
969
|
+
this._scrollToClose = !!scrollToClose;
|
|
970
|
+
}
|
|
971
|
+
get positionStrategy() {
|
|
972
|
+
return this.overlay
|
|
973
|
+
.position()
|
|
974
|
+
.flexibleConnectedTo(this.popoverService.anchorElementRef)
|
|
975
|
+
.setOrigin(this.popoverService.anchorElementRef)
|
|
976
|
+
.withPush(true)
|
|
977
|
+
.withPositions([this.preferredPosition, ...this._availablePositions])
|
|
978
|
+
.withFlexibleDimensions(true);
|
|
979
|
+
}
|
|
980
|
+
get preferredPosition() {
|
|
981
|
+
if (this.preferredPositionIsSet) {
|
|
982
|
+
return this._preferredPosition;
|
|
983
|
+
}
|
|
984
|
+
// Default position is "bottom-left"
|
|
985
|
+
return mapPopoverKeyToPosition(this._position, this.popoverType);
|
|
986
|
+
}
|
|
987
|
+
ngAfterViewInit() {
|
|
988
|
+
if (this.popoverService.open) {
|
|
989
|
+
this.showOverlay();
|
|
990
|
+
}
|
|
991
|
+
this.openCloseSubscription = this.popoverService.openChange.subscribe(change => {
|
|
992
|
+
if (change) {
|
|
993
|
+
this.showOverlay();
|
|
994
|
+
}
|
|
995
|
+
else {
|
|
996
|
+
this.closePopover();
|
|
997
|
+
}
|
|
998
|
+
});
|
|
999
|
+
}
|
|
1000
|
+
ngOnDestroy() {
|
|
1001
|
+
this.removeOverlay();
|
|
1002
|
+
this.openCloseSubscription?.unsubscribe();
|
|
1003
|
+
}
|
|
1004
|
+
_createOverlayRef() {
|
|
1005
|
+
this.overlayRef = this.overlay.create(new OverlayConfig({
|
|
1006
|
+
// This is where we can pass externally facing inputs into the angular overlay API, and essentially proxy behaviors our users want directly to the CDK if they have them.
|
|
1007
|
+
positionStrategy: this.positionStrategy,
|
|
1008
|
+
// the scrolling behaviour is controlled by this popover content directive
|
|
1009
|
+
scrollStrategy: this.overlay.scrollStrategies.noop(),
|
|
1010
|
+
panelClass: this.popoverService.panelClass,
|
|
1011
|
+
hasBackdrop: false,
|
|
1012
|
+
}));
|
|
1013
|
+
this.subscriptions.push(merge(this.popoverService.resetPositionsChange, this.popoverService.getPositionChange()).subscribe(() => {
|
|
1014
|
+
this.resetPosition();
|
|
1015
|
+
}), this.popoverService.updatePositionChange().subscribe(() => {
|
|
1016
|
+
this.overlayRef?.updatePosition();
|
|
1017
|
+
}), this.overlayRef.keydownEvents().subscribe(event => {
|
|
1018
|
+
if (event && event.key && normalizeKey(event.key) === Keys.Escape && !hasModifierKey(event)) {
|
|
1019
|
+
event.preventDefault();
|
|
1020
|
+
this.closePopover();
|
|
1021
|
+
}
|
|
1022
|
+
}), this.overlayRef.outsidePointerEvents().subscribe(event => {
|
|
1023
|
+
// web components (cds-icon) register as outside pointer events, so if the event target is inside the content panel return early
|
|
1024
|
+
if (this.elementRef && this.elementRef.nativeElement.contains(event.target)) {
|
|
1025
|
+
return;
|
|
1026
|
+
}
|
|
1027
|
+
// Check if the same element that opened the popover is the same element triggering the outside pointer events (toggle button)
|
|
1028
|
+
const isToggleButton = this.popoverService.openEvent &&
|
|
1029
|
+
(this.popoverService.openEvent.target.contains(event.target) ||
|
|
1030
|
+
this.popoverService.openEvent.target.parentElement.contains(event.target) ||
|
|
1031
|
+
this.popoverService.openEvent.target === event.target);
|
|
1032
|
+
if (isToggleButton) {
|
|
1033
|
+
event.stopPropagation();
|
|
1034
|
+
}
|
|
1035
|
+
if (this._outsideClickClose || isToggleButton) {
|
|
1036
|
+
this.closePopover();
|
|
1037
|
+
}
|
|
1038
|
+
}));
|
|
1039
|
+
}
|
|
1040
|
+
resetPosition() {
|
|
1041
|
+
if (this.overlayRef) {
|
|
1042
|
+
this.overlayRef.updatePositionStrategy(this.positionStrategy);
|
|
1043
|
+
this.overlayRef.updatePosition();
|
|
1044
|
+
}
|
|
1045
|
+
}
|
|
1046
|
+
closePopover() {
|
|
1047
|
+
if (!this.overlayRef) {
|
|
1048
|
+
return;
|
|
1049
|
+
}
|
|
1050
|
+
this.removeOverlay();
|
|
1051
|
+
this.popoverService.open = false;
|
|
1052
|
+
const shouldFocusTrigger = this.popoverType !== ClrPopoverType.TOOLTIP &&
|
|
1053
|
+
(document.activeElement === document.body ||
|
|
1054
|
+
document.activeElement === this.popoverService.anchorElementRef?.nativeElement);
|
|
1055
|
+
if (shouldFocusTrigger) {
|
|
1056
|
+
this.popoverService.focusAnchor();
|
|
1057
|
+
}
|
|
1058
|
+
}
|
|
1059
|
+
showOverlay() {
|
|
1060
|
+
if (!this.overlayRef) {
|
|
1061
|
+
this._createOverlayRef();
|
|
1062
|
+
}
|
|
1063
|
+
if (!this.view && this.template) {
|
|
1064
|
+
this.view = this.container.createEmbeddedView(this.template);
|
|
1065
|
+
if (!this.elementRef) {
|
|
1066
|
+
const [rootNode] = this.view.rootNodes;
|
|
1067
|
+
this.elementRef = new ElementRef(rootNode); // So we know where/what to set close focus on
|
|
1068
|
+
}
|
|
1069
|
+
}
|
|
1070
|
+
if (!this.domPortal) {
|
|
1071
|
+
this.domPortal = new DomPortal(this.elementRef);
|
|
1072
|
+
this.overlayRef.attach(this.domPortal);
|
|
1073
|
+
}
|
|
1074
|
+
this.popoverService?.anchorElementRef?.nativeElement.scrollIntoView({
|
|
1075
|
+
behavior: 'instant',
|
|
1076
|
+
block: 'nearest',
|
|
1077
|
+
inline: 'nearest',
|
|
1078
|
+
});
|
|
1079
|
+
this.setupIntersectionObserver();
|
|
1080
|
+
setTimeout(() => {
|
|
1081
|
+
// Get Scrollable Parents
|
|
1082
|
+
this.listenToMouseEvents();
|
|
1083
|
+
this.popoverService.popoverVisibleEmit(true);
|
|
1084
|
+
if (this.elementRef?.nativeElement?.focus) {
|
|
1085
|
+
this.elementRef.nativeElement.focus();
|
|
1086
|
+
}
|
|
1087
|
+
});
|
|
1088
|
+
}
|
|
1089
|
+
removeOverlay() {
|
|
1090
|
+
this.subscriptions.forEach(s => s.unsubscribe());
|
|
1091
|
+
this.subscriptions = [];
|
|
1092
|
+
if (this.overlayRef?.hasAttached()) {
|
|
1093
|
+
this.overlayRef.detach();
|
|
1094
|
+
this.overlayRef.dispose();
|
|
1095
|
+
}
|
|
1096
|
+
if (this.domPortal?.isAttached) {
|
|
1097
|
+
this.domPortal.detach();
|
|
1098
|
+
}
|
|
1099
|
+
if (this.view) {
|
|
1100
|
+
this.view.destroy();
|
|
1101
|
+
}
|
|
1102
|
+
this.overlayRef = null;
|
|
1103
|
+
this.domPortal = null;
|
|
1104
|
+
if (this.template) {
|
|
1105
|
+
this.elementRef = null;
|
|
1106
|
+
}
|
|
1107
|
+
this.view = null;
|
|
1108
|
+
this.intersectionObserver?.disconnect();
|
|
1109
|
+
this.intersectionObserver = null;
|
|
1110
|
+
this.popoverService.popoverVisibleEmit(false);
|
|
1111
|
+
}
|
|
1112
|
+
getScrollableParents(node) {
|
|
1113
|
+
let parent = node;
|
|
1114
|
+
const overflowScrollKeys = ['auto', 'scroll', 'clip'];
|
|
1115
|
+
const scrollableParents = [window.document];
|
|
1116
|
+
while (parent && !(parent instanceof HTMLHtmlElement)) {
|
|
1117
|
+
if (parent instanceof ShadowRoot) {
|
|
1118
|
+
parent = parent.host;
|
|
1119
|
+
}
|
|
1120
|
+
const { overflowY, overflowX } = window.getComputedStyle(parent);
|
|
1121
|
+
if (overflowScrollKeys.includes(overflowY) || overflowScrollKeys.includes(overflowX)) {
|
|
1122
|
+
scrollableParents.push(parent);
|
|
1123
|
+
}
|
|
1124
|
+
parent = parent.parentNode;
|
|
1125
|
+
}
|
|
1126
|
+
return scrollableParents;
|
|
1127
|
+
}
|
|
1128
|
+
/**
|
|
1129
|
+
* Uses IntersectionObserver to detect when the anchor leaves the screen.
|
|
1130
|
+
* This handles the "Close on Scroll" logic much cheaper than getBoundingClientRect.
|
|
1131
|
+
*/
|
|
1132
|
+
setupIntersectionObserver() {
|
|
1133
|
+
if (!this.popoverService.anchorElementRef || this.intersectionObserver) {
|
|
1134
|
+
return;
|
|
1135
|
+
}
|
|
1136
|
+
this.intersectionObserver = new IntersectionObserver(entries => {
|
|
1137
|
+
entries.forEach(entry => {
|
|
1138
|
+
// If the anchor is no longer visible (scrolled out of view)
|
|
1139
|
+
if (!entry.isIntersecting && this.popoverService.open) {
|
|
1140
|
+
this.zone.run(() => this.closePopover());
|
|
1141
|
+
}
|
|
1142
|
+
});
|
|
1143
|
+
}, { root: null, threshold: 0.8 });
|
|
1144
|
+
this.intersectionObserver.observe(this.popoverService.anchorElementRef.nativeElement);
|
|
1145
|
+
}
|
|
1146
|
+
//Align the popover on scrolling
|
|
1147
|
+
listenToMouseEvents() {
|
|
1148
|
+
if (!isPlatformBrowser(this.platformId)) {
|
|
1149
|
+
return;
|
|
1150
|
+
}
|
|
1151
|
+
const anchor = this.getRootPopover(this)?.popoverService?.anchorElementRef?.nativeElement;
|
|
1152
|
+
const scrollableParents = this.getScrollableParents(anchor);
|
|
1153
|
+
this.zone.runOutsideAngular(() => {
|
|
1154
|
+
this.subscriptions.push(merge(...scrollableParents.map(parent => fromEvent(parent, 'scroll', { passive: true }))).subscribe(() => {
|
|
1155
|
+
if (this._scrollToClose) {
|
|
1156
|
+
this.zone.run(() => this.closePopover());
|
|
1157
|
+
return;
|
|
1158
|
+
}
|
|
1159
|
+
this.overlayRef?.updatePosition();
|
|
1160
|
+
}));
|
|
1161
|
+
});
|
|
1162
|
+
}
|
|
1163
|
+
getRootPopover(popover) {
|
|
1164
|
+
if (popover && popover.parent) {
|
|
1165
|
+
return this.getRootPopover(popover.parent);
|
|
1166
|
+
}
|
|
1167
|
+
return popover;
|
|
1168
|
+
}
|
|
1169
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverContent, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i0.TemplateRef, optional: true }, { token: i1$1.OverlayContainer }, { token: ClrPopoverContent, optional: true, skipSelf: true }, { token: i1$1.Overlay }, { token: ClrPopoverService }, { token: i0.NgZone }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1170
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrPopoverContent, isStandalone: true, selector: "[clrPopoverContent]", inputs: { open: ["clrPopoverContent", "open"], contentAt: ["clrPopoverContentAt", "contentAt"], availablePositions: ["clrPopoverContentAvailablePositions", "availablePositions"], contentType: ["clrPopoverContentType", "contentType"], outsideClickClose: ["clrPopoverContentOutsideClickToClose", "outsideClickClose"], scrollToClose: ["clrPopoverContentScrollToClose", "scrollToClose"] }, ngImport: i0 }); }
|
|
1171
|
+
}
|
|
1172
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverContent, decorators: [{
|
|
1173
|
+
type: Directive,
|
|
1174
|
+
args: [{
|
|
1175
|
+
selector: '[clrPopoverContent]',
|
|
1176
|
+
}]
|
|
1177
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i0.TemplateRef, decorators: [{
|
|
1178
|
+
type: Optional
|
|
1179
|
+
}] }, { type: i1$1.OverlayContainer }, { type: ClrPopoverContent, decorators: [{
|
|
1180
|
+
type: Optional
|
|
1181
|
+
}, {
|
|
1182
|
+
type: SkipSelf
|
|
1183
|
+
}] }, { type: i1$1.Overlay }, { type: ClrPopoverService, decorators: [{
|
|
1184
|
+
type: Inject,
|
|
1185
|
+
args: [ClrPopoverService]
|
|
1186
|
+
}] }, { type: i0.NgZone }, { type: undefined, decorators: [{
|
|
1187
|
+
type: Inject,
|
|
1188
|
+
args: [PLATFORM_ID]
|
|
1189
|
+
}] }], propDecorators: { open: [{
|
|
1190
|
+
type: Input,
|
|
1191
|
+
args: ['clrPopoverContent']
|
|
1192
|
+
}], contentAt: [{
|
|
1193
|
+
type: Input,
|
|
1194
|
+
args: ['clrPopoverContentAt']
|
|
1195
|
+
}], availablePositions: [{
|
|
1196
|
+
type: Input,
|
|
1197
|
+
args: ['clrPopoverContentAvailablePositions']
|
|
1198
|
+
}], contentType: [{
|
|
1199
|
+
type: Input,
|
|
1200
|
+
args: ['clrPopoverContentType']
|
|
1201
|
+
}], outsideClickClose: [{
|
|
1202
|
+
type: Input,
|
|
1203
|
+
args: ['clrPopoverContentOutsideClickToClose']
|
|
1204
|
+
}], scrollToClose: [{
|
|
1205
|
+
type: Input,
|
|
1206
|
+
args: ['clrPopoverContentScrollToClose']
|
|
1207
|
+
}] } });
|
|
1208
|
+
|
|
1209
|
+
/*
|
|
1210
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1211
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1212
|
+
* This software is released under MIT license.
|
|
1213
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1214
|
+
*/
|
|
1215
|
+
class ClrPopoverAnchor {
|
|
1216
|
+
constructor(popoverService, element) {
|
|
1217
|
+
popoverService.anchorElementRef = element;
|
|
1218
|
+
}
|
|
1219
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverAnchor, deps: [{ token: ClrPopoverService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1220
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrPopoverAnchor, isStandalone: false, selector: "[clrPopoverAnchor]", host: { properties: { "class.clr-anchor": "true" } }, ngImport: i0 }); }
|
|
1221
|
+
}
|
|
1222
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverAnchor, decorators: [{
|
|
1223
|
+
type: Directive,
|
|
1224
|
+
args: [{
|
|
1225
|
+
selector: '[clrPopoverAnchor]',
|
|
1226
|
+
host: {
|
|
1227
|
+
'[class.clr-anchor]': 'true',
|
|
1228
|
+
},
|
|
1229
|
+
standalone: false,
|
|
1230
|
+
}]
|
|
1231
|
+
}], ctorParameters: () => [{ type: ClrPopoverService }, { type: i0.ElementRef }] });
|
|
1232
|
+
|
|
1233
|
+
/*
|
|
1234
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1235
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1236
|
+
* This software is released under MIT license.
|
|
1237
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1238
|
+
*/
|
|
1239
|
+
const POPOVER_HOST_ANCHOR = new InjectionToken('POPOVER_HOST_ANCHOR');
|
|
1240
|
+
|
|
1241
|
+
/*
|
|
1242
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1243
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1244
|
+
* This software is released under MIT license.
|
|
1245
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1246
|
+
*/
|
|
1247
|
+
class ClrStopEscapePropagationDirective {
|
|
1248
|
+
constructor(popoverService) {
|
|
1249
|
+
this.popoverService = popoverService;
|
|
1250
|
+
this.lastOpenChange = null;
|
|
1251
|
+
}
|
|
1252
|
+
ngOnInit() {
|
|
1253
|
+
this.subscription = this.popoverService.openChange.subscribe(open => {
|
|
1254
|
+
this.lastOpenChange = open;
|
|
1255
|
+
});
|
|
1256
|
+
}
|
|
1257
|
+
ngOnDestroy() {
|
|
1258
|
+
this.subscription?.unsubscribe();
|
|
1259
|
+
}
|
|
1260
|
+
onEscapeKey(event) {
|
|
1261
|
+
if (this.lastOpenChange !== null) {
|
|
1262
|
+
if (this.lastOpenChange === false) {
|
|
1263
|
+
event.stopPropagation();
|
|
1264
|
+
}
|
|
1265
|
+
this.lastOpenChange = null;
|
|
1266
|
+
}
|
|
1267
|
+
}
|
|
1268
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrStopEscapePropagationDirective, deps: [{ token: ClrPopoverService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1269
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrStopEscapePropagationDirective, isStandalone: true, host: { listeners: { "keyup.escape": "onEscapeKey($event)" } }, ngImport: i0 }); }
|
|
1270
|
+
}
|
|
1271
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrStopEscapePropagationDirective, decorators: [{
|
|
1272
|
+
type: Directive,
|
|
1273
|
+
args: [{
|
|
1274
|
+
standalone: true,
|
|
1275
|
+
}]
|
|
1276
|
+
}], ctorParameters: () => [{ type: ClrPopoverService }], propDecorators: { onEscapeKey: [{
|
|
1277
|
+
type: HostListener,
|
|
1278
|
+
args: ['keyup.escape', ['$event']]
|
|
1279
|
+
}] } });
|
|
1280
|
+
|
|
1281
|
+
/*
|
|
1282
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1283
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1284
|
+
* This software is released under MIT license.
|
|
1285
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1286
|
+
*/
|
|
1287
|
+
class ClrPopoverHostDirective {
|
|
1288
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverHostDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1289
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrPopoverHostDirective, isStandalone: true, providers: [ClrPopoverService, { provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef }], hostDirectives: [{ directive: ClrStopEscapePropagationDirective }], ngImport: i0 }); }
|
|
1290
|
+
}
|
|
1291
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverHostDirective, decorators: [{
|
|
1292
|
+
type: Directive,
|
|
1293
|
+
args: [{
|
|
1294
|
+
standalone: true,
|
|
1295
|
+
providers: [ClrPopoverService, { provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef }],
|
|
1296
|
+
hostDirectives: [ClrStopEscapePropagationDirective],
|
|
1297
|
+
}]
|
|
1298
|
+
}] });
|
|
1299
|
+
|
|
1300
|
+
/*
|
|
1301
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1302
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1303
|
+
* This software is released under MIT license.
|
|
1304
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1305
|
+
*/
|
|
1306
|
+
/**********
|
|
1307
|
+
*
|
|
1308
|
+
* @class ClrIfOpen
|
|
1309
|
+
*
|
|
1310
|
+
* @description
|
|
1311
|
+
* A structural directive that controls whether or not the associated TemplateRef is instantiated or not.
|
|
1312
|
+
* It makes use of a Component instance level service: ClrPopoverService to maintain state between itself and the component
|
|
1313
|
+
* using it in the component template.
|
|
1314
|
+
*
|
|
1315
|
+
*/
|
|
1316
|
+
class ClrIfOpen {
|
|
1317
|
+
constructor(popoverService, template, container) {
|
|
1318
|
+
this.popoverService = popoverService;
|
|
1319
|
+
this.template = template;
|
|
1320
|
+
this.container = container;
|
|
1321
|
+
/**********
|
|
1322
|
+
* @property openChange
|
|
1323
|
+
*
|
|
1324
|
+
* @description
|
|
1325
|
+
* An event emitter that emits when the open property is set to allow for 2way binding when the directive is
|
|
1326
|
+
* used with de-structured / de-sugared syntax.
|
|
1327
|
+
*/
|
|
1328
|
+
this.openChange = new EventEmitter(false);
|
|
1329
|
+
this.subscriptions = [];
|
|
1330
|
+
this.subscriptions.push(popoverService.openChange.subscribe(change => {
|
|
1331
|
+
// OPEN before overlay is built
|
|
1332
|
+
if (change) {
|
|
1333
|
+
container.createEmbeddedView(template);
|
|
1334
|
+
this.openChange.emit(change);
|
|
1335
|
+
}
|
|
1336
|
+
}), popoverService.popoverVisible.subscribe(change => {
|
|
1337
|
+
// CLOSE after overlay is destroyed
|
|
1338
|
+
if (!change) {
|
|
1339
|
+
container.clear();
|
|
1340
|
+
this.openChange.emit(change);
|
|
1341
|
+
}
|
|
1342
|
+
}));
|
|
1343
|
+
}
|
|
1344
|
+
/**
|
|
1345
|
+
* @description
|
|
1346
|
+
* A property that gets/sets ClrPopoverService.open with value.
|
|
1347
|
+
*/
|
|
1348
|
+
get open() {
|
|
1349
|
+
return this.popoverService.open;
|
|
1350
|
+
}
|
|
1351
|
+
set open(value) {
|
|
1352
|
+
this.popoverService.open = value;
|
|
1353
|
+
}
|
|
1354
|
+
ngOnDestroy() {
|
|
1355
|
+
this.subscriptions.forEach(sub => sub.unsubscribe());
|
|
1356
|
+
}
|
|
1357
|
+
/**
|
|
1358
|
+
* @description
|
|
1359
|
+
* Function that takes a boolean value and either created an embedded view for the associated ViewContainerRef or,
|
|
1360
|
+
* Clears all views from the ViewContainerRef
|
|
1361
|
+
*
|
|
1362
|
+
* @param value
|
|
1363
|
+
*/
|
|
1364
|
+
updateView(value) {
|
|
1365
|
+
if (value) {
|
|
1366
|
+
this.container.createEmbeddedView(this.template);
|
|
1367
|
+
}
|
|
1368
|
+
else {
|
|
1369
|
+
this.container.clear();
|
|
1370
|
+
}
|
|
1371
|
+
}
|
|
1372
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrIfOpen, deps: [{ token: ClrPopoverService }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1373
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrIfOpen, isStandalone: true, selector: "[clrIfOpen]", inputs: { open: ["clrIfOpen", "open"] }, outputs: { openChange: "clrIfOpenChange" }, ngImport: i0 }); }
|
|
1374
|
+
}
|
|
1375
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrIfOpen, decorators: [{
|
|
1376
|
+
type: Directive,
|
|
1377
|
+
args: [{
|
|
1378
|
+
selector: '[clrIfOpen]',
|
|
1379
|
+
}]
|
|
1380
|
+
}], ctorParameters: () => [{ type: ClrPopoverService }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }], propDecorators: { openChange: [{
|
|
1381
|
+
type: Output,
|
|
1382
|
+
args: ['clrIfOpenChange']
|
|
1383
|
+
}], open: [{
|
|
1384
|
+
type: Input,
|
|
1385
|
+
args: ['clrIfOpen']
|
|
1386
|
+
}] } });
|
|
1387
|
+
|
|
1388
|
+
/*
|
|
1389
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1390
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1391
|
+
* This software is released under MIT license.
|
|
1392
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1393
|
+
*/
|
|
1394
|
+
class ClrPopoverCloseButton {
|
|
1395
|
+
constructor(elementRef, popoverService) {
|
|
1396
|
+
this.elementRef = elementRef;
|
|
1397
|
+
this.popoverService = popoverService;
|
|
1398
|
+
this.closeChange = new EventEmitter();
|
|
1399
|
+
this.subscriptions = [];
|
|
1400
|
+
this.subscriptions.push(popoverService.openChange.pipe(filter(value => !value)).subscribe(() => {
|
|
1401
|
+
this.closeChange.next();
|
|
1402
|
+
}));
|
|
1403
|
+
}
|
|
1404
|
+
handleClick(event) {
|
|
1405
|
+
this.popoverService.toggleWithEvent(event);
|
|
1406
|
+
this.popoverService.focusAnchor();
|
|
1407
|
+
}
|
|
1408
|
+
ngAfterViewInit() {
|
|
1409
|
+
this.popoverService.closeButtonRef = this.elementRef;
|
|
1410
|
+
}
|
|
1411
|
+
ngOnDestroy() {
|
|
1412
|
+
this.subscriptions.forEach(sub => sub.unsubscribe());
|
|
1413
|
+
}
|
|
1414
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverCloseButton, deps: [{ token: i0.ElementRef }, { token: ClrPopoverService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1415
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrPopoverCloseButton, isStandalone: false, selector: "[clrPopoverCloseButton]", outputs: { closeChange: "clrPopoverOnCloseChange" }, host: { listeners: { "click": "handleClick($event)" }, properties: { "class.clr-smart-close-button": "true" } }, ngImport: i0 }); }
|
|
1416
|
+
}
|
|
1417
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverCloseButton, decorators: [{
|
|
1418
|
+
type: Directive,
|
|
1419
|
+
args: [{
|
|
1420
|
+
selector: '[clrPopoverCloseButton]',
|
|
1421
|
+
host: {
|
|
1422
|
+
'[class.clr-smart-close-button]': 'true',
|
|
1423
|
+
},
|
|
1424
|
+
standalone: false,
|
|
1425
|
+
}]
|
|
1426
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: ClrPopoverService }], propDecorators: { closeChange: [{
|
|
1427
|
+
type: Output,
|
|
1428
|
+
args: ['clrPopoverOnCloseChange']
|
|
1429
|
+
}], handleClick: [{
|
|
1430
|
+
type: HostListener,
|
|
1431
|
+
args: ['click', ['$event']]
|
|
1432
|
+
}] } });
|
|
1433
|
+
|
|
1434
|
+
/*
|
|
1435
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1436
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1437
|
+
* This software is released under MIT license.
|
|
1438
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1439
|
+
*/
|
|
1440
|
+
class ClrPopoverOpenCloseButton {
|
|
1441
|
+
constructor(popoverService) {
|
|
1442
|
+
this.popoverService = popoverService;
|
|
1443
|
+
this.openCloseChange = new EventEmitter();
|
|
1444
|
+
this.subscriptions = [];
|
|
1445
|
+
this.subscriptions.push(popoverService.openChange.subscribe(change => {
|
|
1446
|
+
this.openCloseChange.next(change);
|
|
1447
|
+
}));
|
|
1448
|
+
}
|
|
1449
|
+
handleClick(event) {
|
|
1450
|
+
this.popoverService.toggleWithEvent(event);
|
|
1451
|
+
}
|
|
1452
|
+
ngOnDestroy() {
|
|
1453
|
+
this.subscriptions.forEach(sub => sub.unsubscribe());
|
|
1454
|
+
}
|
|
1455
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverOpenCloseButton, deps: [{ token: ClrPopoverService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1456
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrPopoverOpenCloseButton, isStandalone: false, selector: "[clrPopoverOpenCloseButton]", outputs: { openCloseChange: "clrPopoverOpenCloseChange" }, host: { listeners: { "click": "handleClick($event)" }, properties: { "class.clr-smart-open-close": "true" } }, ngImport: i0 }); }
|
|
1457
|
+
}
|
|
1458
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverOpenCloseButton, decorators: [{
|
|
1459
|
+
type: Directive,
|
|
1460
|
+
args: [{
|
|
1461
|
+
selector: '[clrPopoverOpenCloseButton]',
|
|
1462
|
+
host: {
|
|
1463
|
+
'[class.clr-smart-open-close]': 'true',
|
|
1464
|
+
},
|
|
1465
|
+
standalone: false,
|
|
1466
|
+
}]
|
|
1467
|
+
}], ctorParameters: () => [{ type: ClrPopoverService }], propDecorators: { openCloseChange: [{
|
|
1468
|
+
type: Output,
|
|
1469
|
+
args: ['clrPopoverOpenCloseChange']
|
|
1470
|
+
}], handleClick: [{
|
|
1471
|
+
type: HostListener,
|
|
1472
|
+
args: ['click', ['$event']]
|
|
1473
|
+
}] } });
|
|
1474
|
+
|
|
1475
|
+
/*
|
|
1476
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1477
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1478
|
+
* This software is released under MIT license.
|
|
1479
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1480
|
+
*/
|
|
1481
|
+
class ClrPopoverModuleNext {
|
|
1482
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverModuleNext, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1483
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverModuleNext, declarations: [ClrPopoverAnchor, ClrPopoverCloseButton, ClrPopoverOpenCloseButton], imports: [ClrPopoverContent, ClrIfOpen], exports: [ClrPopoverAnchor, ClrPopoverCloseButton, ClrPopoverOpenCloseButton, ClrPopoverContent, ClrIfOpen] }); }
|
|
1484
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverModuleNext }); }
|
|
1485
|
+
}
|
|
1486
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverModuleNext, decorators: [{
|
|
1487
|
+
type: NgModule,
|
|
1488
|
+
args: [{
|
|
1489
|
+
imports: [ClrPopoverContent, ClrIfOpen],
|
|
1490
|
+
declarations: [ClrPopoverAnchor, ClrPopoverCloseButton, ClrPopoverOpenCloseButton],
|
|
1491
|
+
exports: [ClrPopoverAnchor, ClrPopoverCloseButton, ClrPopoverOpenCloseButton, ClrPopoverContent, ClrIfOpen],
|
|
1492
|
+
}]
|
|
1493
|
+
}] });
|
|
1494
|
+
|
|
1495
|
+
/*
|
|
1496
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1497
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1498
|
+
* This software is released under MIT license.
|
|
1499
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1500
|
+
*/
|
|
1501
|
+
|
|
1502
|
+
/*
|
|
1503
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1504
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1505
|
+
* This software is released under MIT license.
|
|
1506
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1507
|
+
*/
|
|
1508
|
+
class ClrPopoverModule {
|
|
1509
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1510
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverModule, exports: [ClrDropdownModule$1, ClrSignpostModule$1, ClrTooltipModule$1] }); }
|
|
1511
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverModule, imports: [ClrDropdownModule$1, ClrSignpostModule$1, ClrTooltipModule$1] }); }
|
|
1512
|
+
}
|
|
1513
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverModule, decorators: [{
|
|
1514
|
+
type: NgModule,
|
|
1515
|
+
args: [{
|
|
1516
|
+
exports: [ClrDropdownModule$1, ClrSignpostModule$1, ClrTooltipModule$1],
|
|
1517
|
+
}]
|
|
1518
|
+
}] });
|
|
1519
|
+
|
|
1520
|
+
/*
|
|
1521
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1522
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1523
|
+
* This software is released under MIT license.
|
|
1524
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1525
|
+
*/
|
|
1526
|
+
class SignpostFocusManager {
|
|
1527
|
+
set triggerEl(value) {
|
|
1528
|
+
this._triggerEl = value;
|
|
1529
|
+
}
|
|
1530
|
+
focusTrigger() {
|
|
1531
|
+
if (this._triggerEl) {
|
|
1532
|
+
this._triggerEl.focus();
|
|
1533
|
+
}
|
|
1534
|
+
}
|
|
1535
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: SignpostFocusManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1536
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: SignpostFocusManager }); }
|
|
1537
|
+
}
|
|
1538
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: SignpostFocusManager, decorators: [{
|
|
1539
|
+
type: Injectable
|
|
1540
|
+
}] });
|
|
1541
|
+
|
|
1542
|
+
/*
|
|
1543
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1544
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1545
|
+
* This software is released under MIT license.
|
|
1546
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1547
|
+
*/
|
|
1548
|
+
class SignpostIdService {
|
|
1549
|
+
constructor() {
|
|
1550
|
+
this._id = new Subject();
|
|
1551
|
+
}
|
|
1552
|
+
get id() {
|
|
1553
|
+
return this._id.asObservable();
|
|
1554
|
+
}
|
|
1555
|
+
setId(id) {
|
|
1556
|
+
this._id.next(id);
|
|
1557
|
+
}
|
|
1558
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: SignpostIdService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1559
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: SignpostIdService }); }
|
|
1560
|
+
}
|
|
1561
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: SignpostIdService, decorators: [{
|
|
1562
|
+
type: Injectable
|
|
1563
|
+
}] });
|
|
1564
|
+
|
|
1565
|
+
/*
|
|
1566
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1567
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1568
|
+
* This software is released under MIT license.
|
|
1569
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1570
|
+
*/
|
|
1571
|
+
/*********
|
|
1572
|
+
*
|
|
1573
|
+
* @description
|
|
1574
|
+
* A Directive added to the ClrSignpost Trigger button that will call the ClrSignpost.toggle() function to hide/show the
|
|
1575
|
+
* ClrSignpostContent.
|
|
1576
|
+
*
|
|
1577
|
+
*/
|
|
1578
|
+
class ClrSignpostTrigger {
|
|
1579
|
+
constructor(popoverService, el, signpostIdService, signpostFocusManager, document, platformId) {
|
|
1580
|
+
this.popoverService = popoverService;
|
|
1581
|
+
this.el = el;
|
|
1582
|
+
this.signpostIdService = signpostIdService;
|
|
1583
|
+
this.signpostFocusManager = signpostFocusManager;
|
|
1584
|
+
this.platformId = platformId;
|
|
1585
|
+
this.ariaExpanded = false;
|
|
1586
|
+
this.subscriptions = [];
|
|
1587
|
+
this.document = document;
|
|
1588
|
+
}
|
|
1589
|
+
ngOnInit() {
|
|
1590
|
+
this.popoverService.anchorElementRef = this.el;
|
|
1591
|
+
this.signpostFocusManager.triggerEl = this.el.nativeElement;
|
|
1592
|
+
this.subscriptions.push(this.popoverService.openChange.subscribe((isOpen) => {
|
|
1593
|
+
this.ariaExpanded = isOpen;
|
|
1594
|
+
const prevIsOpen = this.isOpen;
|
|
1595
|
+
this.isOpen = isOpen;
|
|
1596
|
+
// openChange fires false on initialization because signpost starts as closed by default
|
|
1597
|
+
// but we shouldn't focus on that initial false value
|
|
1598
|
+
// we should focus back only if it's closed after being opened
|
|
1599
|
+
if (!this.isOpen && prevIsOpen) {
|
|
1600
|
+
this.focusOnClose();
|
|
1601
|
+
}
|
|
1602
|
+
}), this.signpostIdService.id.subscribe(idChange => (this.ariaControl = idChange)));
|
|
1603
|
+
}
|
|
1604
|
+
ngOnDestroy() {
|
|
1605
|
+
this.subscriptions.forEach((sub) => sub.unsubscribe());
|
|
1606
|
+
}
|
|
1607
|
+
/**********
|
|
1608
|
+
*
|
|
1609
|
+
* @description
|
|
1610
|
+
* click handler for the ClrSignpost trigger button used to hide/show ClrSignpostContent.
|
|
1611
|
+
*/
|
|
1612
|
+
onSignpostTriggerClick(event) {
|
|
1613
|
+
this.popoverService.toggleWithEvent(event);
|
|
1614
|
+
}
|
|
1615
|
+
focusOnClose() {
|
|
1616
|
+
if (!isPlatformBrowser(this.platformId)) {
|
|
1617
|
+
return;
|
|
1618
|
+
}
|
|
1619
|
+
// we have to set the focus back on the trigger only if the focus is reset back to the body element
|
|
1620
|
+
// if the focus is on another element, we are not allowed to move that focus back to this trigger again.
|
|
1621
|
+
if (!this.isOpen && this.document.activeElement === this.document.body) {
|
|
1622
|
+
this.signpostFocusManager.focusTrigger();
|
|
1623
|
+
}
|
|
1624
|
+
}
|
|
1625
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrSignpostTrigger, deps: [{ token: i2.ClrPopoverService }, { token: i0.ElementRef }, { token: SignpostIdService }, { token: SignpostFocusManager }, { token: DOCUMENT }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1626
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrSignpostTrigger, isStandalone: false, selector: "[clrSignpostTrigger]", host: { listeners: { "click": "onSignpostTriggerClick($event)" }, properties: { "attr.aria-expanded": "ariaExpanded", "attr.aria-controls": "ariaControl", "class.active": "isOpen" }, classAttribute: "signpost-trigger" }, ngImport: i0 }); }
|
|
1627
|
+
}
|
|
1628
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrSignpostTrigger, decorators: [{
|
|
1629
|
+
type: Directive,
|
|
1630
|
+
args: [{
|
|
1631
|
+
selector: '[clrSignpostTrigger]',
|
|
1632
|
+
host: {
|
|
1633
|
+
class: 'signpost-trigger',
|
|
1634
|
+
'[attr.aria-expanded]': 'ariaExpanded',
|
|
1635
|
+
'[attr.aria-controls]': 'ariaControl',
|
|
1636
|
+
'[class.active]': 'isOpen',
|
|
1637
|
+
},
|
|
1638
|
+
standalone: false,
|
|
1639
|
+
}]
|
|
1640
|
+
}], ctorParameters: () => [{ type: i2.ClrPopoverService }, { type: i0.ElementRef }, { type: SignpostIdService }, { type: SignpostFocusManager }, { type: undefined, decorators: [{
|
|
1641
|
+
type: Inject,
|
|
1642
|
+
args: [DOCUMENT]
|
|
1643
|
+
}] }, { type: undefined, decorators: [{
|
|
1644
|
+
type: Inject,
|
|
1645
|
+
args: [PLATFORM_ID]
|
|
1646
|
+
}] }], propDecorators: { onSignpostTriggerClick: [{
|
|
1647
|
+
type: HostListener,
|
|
1648
|
+
args: ['click', ['$event']]
|
|
1649
|
+
}] } });
|
|
1650
|
+
|
|
1651
|
+
/*
|
|
1652
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1653
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1654
|
+
* This software is released under MIT license.
|
|
1655
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1656
|
+
*/
|
|
1657
|
+
/*********
|
|
1658
|
+
*
|
|
1659
|
+
* @class ClrSignpost
|
|
1660
|
+
*
|
|
1661
|
+
* @description
|
|
1662
|
+
* Class used to configure and control the state of a ClrSignpost and its associated ClrSignpostContent.
|
|
1663
|
+
* It supports the clrPosition with a 'right-middle' default.
|
|
1664
|
+
*
|
|
1665
|
+
*/
|
|
1666
|
+
class ClrSignpost {
|
|
1667
|
+
constructor(commonStrings) {
|
|
1668
|
+
this.commonStrings = commonStrings;
|
|
1669
|
+
/**********
|
|
1670
|
+
* @property useCustomTrigger
|
|
1671
|
+
*
|
|
1672
|
+
* @description
|
|
1673
|
+
* Flag used to determine if we need to use the default trigger or a user supplied trigger element.
|
|
1674
|
+
*
|
|
1675
|
+
*/
|
|
1676
|
+
this.useCustomTrigger = false;
|
|
1677
|
+
}
|
|
1678
|
+
/**********
|
|
1679
|
+
* @property signPostTrigger
|
|
1680
|
+
*
|
|
1681
|
+
* @description
|
|
1682
|
+
* Uses ContentChild to check for a user supplied element with the ClrSignpostTrigger on it.
|
|
1683
|
+
*
|
|
1684
|
+
*/
|
|
1685
|
+
set customTrigger(trigger) {
|
|
1686
|
+
this.useCustomTrigger = !!trigger;
|
|
1687
|
+
}
|
|
1688
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrSignpost, deps: [{ token: i1.ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1689
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrSignpost, isStandalone: false, selector: "clr-signpost", inputs: { signpostTriggerAriaLabel: ["clrSignpostTriggerAriaLabel", "signpostTriggerAriaLabel"] }, host: { properties: { "class.signpost": "true" } }, providers: [SignpostFocusManager, SignpostIdService], queries: [{ propertyName: "customTrigger", first: true, predicate: ClrSignpostTrigger, descendants: true }], hostDirectives: [{ directive: i2.ClrPopoverHostDirective }], ngImport: i0, template: `
|
|
1690
|
+
@if (!useCustomTrigger) {
|
|
1691
|
+
<button
|
|
1692
|
+
type="button"
|
|
1693
|
+
class="signpost-action btn btn-sm btn-icon btn-link"
|
|
1694
|
+
clrSignpostTrigger
|
|
1695
|
+
[attr.aria-label]="signpostTriggerAriaLabel || commonStrings.keys.signpostToggle"
|
|
1696
|
+
>
|
|
1697
|
+
<cds-icon shape="info-circle" [attr.title]="commonStrings.keys.info"></cds-icon>
|
|
1698
|
+
</button>
|
|
1699
|
+
}
|
|
1700
|
+
|
|
1701
|
+
<ng-content></ng-content>
|
|
1702
|
+
`, isInline: true, dependencies: [{ kind: "component", type: i3.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "directive", type: ClrSignpostTrigger, selector: "[clrSignpostTrigger]" }] }); }
|
|
1703
|
+
}
|
|
1704
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrSignpost, decorators: [{
|
|
1705
|
+
type: Component,
|
|
1706
|
+
args: [{
|
|
1707
|
+
selector: 'clr-signpost',
|
|
1708
|
+
template: `
|
|
1709
|
+
@if (!useCustomTrigger) {
|
|
1710
|
+
<button
|
|
1711
|
+
type="button"
|
|
1712
|
+
class="signpost-action btn btn-sm btn-icon btn-link"
|
|
1713
|
+
clrSignpostTrigger
|
|
1714
|
+
[attr.aria-label]="signpostTriggerAriaLabel || commonStrings.keys.signpostToggle"
|
|
1715
|
+
>
|
|
1716
|
+
<cds-icon shape="info-circle" [attr.title]="commonStrings.keys.info"></cds-icon>
|
|
1717
|
+
</button>
|
|
1718
|
+
}
|
|
1719
|
+
|
|
1720
|
+
<ng-content></ng-content>
|
|
1721
|
+
`,
|
|
1722
|
+
host: { '[class.signpost]': 'true' },
|
|
1723
|
+
providers: [SignpostFocusManager, SignpostIdService],
|
|
1724
|
+
hostDirectives: [ClrPopoverHostDirective$1],
|
|
1725
|
+
standalone: false,
|
|
1726
|
+
}]
|
|
1727
|
+
}], ctorParameters: () => [{ type: i1.ClrCommonStringsService }], propDecorators: { signpostTriggerAriaLabel: [{
|
|
1728
|
+
type: Input,
|
|
1729
|
+
args: ['clrSignpostTriggerAriaLabel']
|
|
1730
|
+
}], customTrigger: [{
|
|
1731
|
+
type: ContentChild,
|
|
1732
|
+
args: [ClrSignpostTrigger]
|
|
1733
|
+
}] } });
|
|
1734
|
+
|
|
1735
|
+
/*
|
|
1736
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1737
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1738
|
+
* This software is released under MIT license.
|
|
1739
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1740
|
+
*/
|
|
1741
|
+
class ClrSignpostContent {
|
|
1742
|
+
constructor(parentHost, element, commonStrings, signpostIdService, signpostFocusManager, platformId, document, popoverService, popoverContent) {
|
|
1743
|
+
this.element = element;
|
|
1744
|
+
this.commonStrings = commonStrings;
|
|
1745
|
+
this.signpostFocusManager = signpostFocusManager;
|
|
1746
|
+
this.platformId = platformId;
|
|
1747
|
+
this.document = document;
|
|
1748
|
+
this.popoverService = popoverService;
|
|
1749
|
+
this.popoverContent = popoverContent;
|
|
1750
|
+
this.signpostContentId = uniqueIdFactory();
|
|
1751
|
+
this._position = ClrPopoverPosition$1.RIGHT_MIDDLE;
|
|
1752
|
+
if (!parentHost) {
|
|
1753
|
+
throw new Error('clr-signpost-content should only be used inside of a clr-signpost');
|
|
1754
|
+
}
|
|
1755
|
+
// Defaults
|
|
1756
|
+
signpostIdService.setId(this.signpostContentId);
|
|
1757
|
+
popoverService.panelClass.push('clr-signpost-container');
|
|
1758
|
+
popoverContent.contentType = ClrPopoverType$1.SIGNPOST;
|
|
1759
|
+
}
|
|
1760
|
+
/*********
|
|
1761
|
+
*
|
|
1762
|
+
* @description
|
|
1763
|
+
* A setter for the position of the ClrSignpostContent popover. This is a combination of the following:
|
|
1764
|
+
* - anchorPoint - where on the trigger to anchor the ClrSignpostContent
|
|
1765
|
+
* - popoverPoint - where on the ClrSignpostContent container to align with the anchorPoint
|
|
1766
|
+
* - offsetY - where on the Y axis to align the ClrSignpostContent so it meets specs
|
|
1767
|
+
* - offsetX - where on the X axis to align the ClrSignpostContent so it meets specs
|
|
1768
|
+
* There are 12 possible positions to place a ClrSignpostContent container:
|
|
1769
|
+
* - top-left
|
|
1770
|
+
* - top-middle
|
|
1771
|
+
* - top-right
|
|
1772
|
+
* - right-top
|
|
1773
|
+
* - right-middle
|
|
1774
|
+
* - right-bottom
|
|
1775
|
+
* - bottom-right
|
|
1776
|
+
* - bottom-middle
|
|
1777
|
+
* - bottom-left
|
|
1778
|
+
* - left-bottom
|
|
1779
|
+
* - left-middle
|
|
1780
|
+
* - left-top
|
|
1781
|
+
*
|
|
1782
|
+
* I think of it as follows for 'top-left' -> CONTAINER_SIDE-SIDE_POSITION. In this case CONTAINER_SIDE is 'top'
|
|
1783
|
+
* meaning the top of the trigger icon (above the icon that hides/shows) the ClrSignpostContent. And, SIDE_POSITION
|
|
1784
|
+
* is 'left' meaning two things: 1) the ClrSignpostContent container extends to the left and 2) the 'arrow/pointer'
|
|
1785
|
+
* linking the SignpostContent to the trigger points down at the horizontal center of the trigger icon.
|
|
1786
|
+
*
|
|
1787
|
+
* @param newPosition
|
|
1788
|
+
*/
|
|
1789
|
+
get position() {
|
|
1790
|
+
return this._position;
|
|
1791
|
+
}
|
|
1792
|
+
set position(position) {
|
|
1793
|
+
const posIndex = SIGNPOST_POSITIONS$1.indexOf(position);
|
|
1794
|
+
this._position = position && posIndex > -1 ? SIGNPOST_POSITIONS$1[posIndex] : ClrPopoverPosition$1.RIGHT_MIDDLE;
|
|
1795
|
+
this.popoverContent.contentAt = this._position;
|
|
1796
|
+
}
|
|
1797
|
+
/*
|
|
1798
|
+
* Fallback to hide when *clrIfOpen is not being used
|
|
1799
|
+
*/
|
|
1800
|
+
get isOffScreen() {
|
|
1801
|
+
return !this.popoverService.open;
|
|
1802
|
+
}
|
|
1803
|
+
/**********
|
|
1804
|
+
*
|
|
1805
|
+
* @description
|
|
1806
|
+
* Close function that uses the signpost instance to toggle the state of the content popover.
|
|
1807
|
+
*
|
|
1808
|
+
*/
|
|
1809
|
+
close() {
|
|
1810
|
+
this.popoverService.open = false;
|
|
1811
|
+
}
|
|
1812
|
+
ngAfterViewInit() {
|
|
1813
|
+
this.popoverService.closeButtonRef = this.closeButton;
|
|
1814
|
+
this.closeButton.nativeElement.focus();
|
|
1815
|
+
}
|
|
1816
|
+
onKeyDown(event) {
|
|
1817
|
+
if (event.key === 'Tab') {
|
|
1818
|
+
const focusableElements = this.getFocusableElements(this.element.nativeElement);
|
|
1819
|
+
// take the first element when SHIFT+TAB or last when only TAB
|
|
1820
|
+
const focusableElementIndex = event.shiftKey ? 0 : focusableElements.length - 1;
|
|
1821
|
+
if (document.activeElement === focusableElements[focusableElementIndex]) {
|
|
1822
|
+
event.preventDefault();
|
|
1823
|
+
this.popoverService.open = false;
|
|
1824
|
+
}
|
|
1825
|
+
}
|
|
1826
|
+
}
|
|
1827
|
+
ngOnDestroy() {
|
|
1828
|
+
if (isPlatformBrowser(this.platformId) && this.element.nativeElement.contains(this.document.activeElement)) {
|
|
1829
|
+
this.signpostFocusManager.focusTrigger();
|
|
1830
|
+
}
|
|
1831
|
+
}
|
|
1832
|
+
getFocusableElements(element) {
|
|
1833
|
+
return Array.from(element.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'));
|
|
1834
|
+
}
|
|
1835
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrSignpostContent, deps: [{ token: POPOVER_HOST_ANCHOR$1, optional: true }, { token: i0.ElementRef }, { token: i1.ClrCommonStringsService }, { token: SignpostIdService }, { token: SignpostFocusManager }, { token: PLATFORM_ID }, { token: DOCUMENT }, { token: i2.ClrPopoverService }, { token: i2.ClrPopoverContent }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1836
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrSignpostContent, isStandalone: false, selector: "clr-signpost-content", inputs: { signpostCloseAriaLabel: ["clrSignpostCloseAriaLabel", "signpostCloseAriaLabel"], position: ["clrPosition", "position"] }, host: { attributes: { "role": "dialog" }, listeners: { "keydown": "onKeyDown($event)" }, properties: { "class.signpost-content": "true", "id": "signpostContentId", "class.is-off-screen": "this.isOffScreen" } }, viewQueries: [{ propertyName: "closeButton", first: true, predicate: ["closeButton"], descendants: true, read: ElementRef }], hostDirectives: [{ directive: i2.ClrPopoverContent }], ngImport: i0, template: `
|
|
1837
|
+
<div class="signpost-wrap">
|
|
1838
|
+
<div class="popover-pointer"></div>
|
|
1839
|
+
<div class="signpost-content-header">
|
|
1840
|
+
<ng-content select="clr-signpost-title"></ng-content>
|
|
1841
|
+
<button
|
|
1842
|
+
#closeButton
|
|
1843
|
+
type="button"
|
|
1844
|
+
[attr.aria-label]="signpostCloseAriaLabel || commonStrings.keys.signpostClose"
|
|
1845
|
+
class="signpost-action close"
|
|
1846
|
+
(click)="close()"
|
|
1847
|
+
[attr.aria-controls]="signpostContentId"
|
|
1848
|
+
>
|
|
1849
|
+
<cds-icon shape="window-close" [attr.title]="commonStrings.keys.close"></cds-icon>
|
|
1850
|
+
</button>
|
|
1851
|
+
</div>
|
|
1852
|
+
<div class="signpost-content-body" tabindex="0">
|
|
1853
|
+
<ng-content></ng-content>
|
|
1854
|
+
</div>
|
|
1855
|
+
</div>
|
|
1856
|
+
`, isInline: true, dependencies: [{ kind: "component", type: i3.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }] }); }
|
|
1857
|
+
}
|
|
1858
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrSignpostContent, decorators: [{
|
|
1859
|
+
type: Component,
|
|
1860
|
+
args: [{
|
|
1861
|
+
selector: 'clr-signpost-content',
|
|
1862
|
+
template: `
|
|
1863
|
+
<div class="signpost-wrap">
|
|
1864
|
+
<div class="popover-pointer"></div>
|
|
1865
|
+
<div class="signpost-content-header">
|
|
1866
|
+
<ng-content select="clr-signpost-title"></ng-content>
|
|
1867
|
+
<button
|
|
1868
|
+
#closeButton
|
|
1869
|
+
type="button"
|
|
1870
|
+
[attr.aria-label]="signpostCloseAriaLabel || commonStrings.keys.signpostClose"
|
|
1871
|
+
class="signpost-action close"
|
|
1872
|
+
(click)="close()"
|
|
1873
|
+
[attr.aria-controls]="signpostContentId"
|
|
1874
|
+
>
|
|
1875
|
+
<cds-icon shape="window-close" [attr.title]="commonStrings.keys.close"></cds-icon>
|
|
1876
|
+
</button>
|
|
1877
|
+
</div>
|
|
1878
|
+
<div class="signpost-content-body" tabindex="0">
|
|
1879
|
+
<ng-content></ng-content>
|
|
1880
|
+
</div>
|
|
1881
|
+
</div>
|
|
1882
|
+
`,
|
|
1883
|
+
host: {
|
|
1884
|
+
'[class.signpost-content]': 'true',
|
|
1885
|
+
'[id]': 'signpostContentId',
|
|
1886
|
+
role: 'dialog',
|
|
1887
|
+
},
|
|
1888
|
+
standalone: false,
|
|
1889
|
+
hostDirectives: [ClrPopoverContent$1],
|
|
1890
|
+
}]
|
|
1891
|
+
}], ctorParameters: () => [{ type: i0.ElementRef, decorators: [{
|
|
1892
|
+
type: Optional
|
|
1893
|
+
}, {
|
|
1894
|
+
type: Inject,
|
|
1895
|
+
args: [POPOVER_HOST_ANCHOR$1]
|
|
1896
|
+
}] }, { type: i0.ElementRef }, { type: i1.ClrCommonStringsService }, { type: SignpostIdService }, { type: SignpostFocusManager }, { type: undefined, decorators: [{
|
|
1897
|
+
type: Inject,
|
|
1898
|
+
args: [PLATFORM_ID]
|
|
1899
|
+
}] }, { type: Document, decorators: [{
|
|
1900
|
+
type: Inject,
|
|
1901
|
+
args: [DOCUMENT]
|
|
1902
|
+
}] }, { type: i2.ClrPopoverService }, { type: i2.ClrPopoverContent }], propDecorators: { signpostCloseAriaLabel: [{
|
|
1903
|
+
type: Input,
|
|
1904
|
+
args: ['clrSignpostCloseAriaLabel']
|
|
1905
|
+
}], closeButton: [{
|
|
1906
|
+
type: ViewChild,
|
|
1907
|
+
args: ['closeButton', { read: ElementRef }]
|
|
1908
|
+
}], position: [{
|
|
1909
|
+
type: Input,
|
|
1910
|
+
args: ['clrPosition']
|
|
1911
|
+
}], isOffScreen: [{
|
|
1912
|
+
type: HostBinding,
|
|
1913
|
+
args: ['class.is-off-screen']
|
|
1914
|
+
}], onKeyDown: [{
|
|
1915
|
+
type: HostListener,
|
|
1916
|
+
args: ['keydown', ['$event']]
|
|
1917
|
+
}] } });
|
|
1918
|
+
|
|
1919
|
+
/*
|
|
1920
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1921
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1922
|
+
* This software is released under MIT license.
|
|
1923
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1924
|
+
*/
|
|
1925
|
+
class ClrSignpostTitle {
|
|
1926
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrSignpostTitle, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1927
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrSignpostTitle, isStandalone: false, selector: "clr-signpost-title", host: { properties: { "class.signpost-title": "true" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
|
|
1928
|
+
}
|
|
1929
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrSignpostTitle, decorators: [{
|
|
1930
|
+
type: Component,
|
|
1931
|
+
args: [{
|
|
1932
|
+
selector: 'clr-signpost-title',
|
|
1933
|
+
template: `<ng-content></ng-content>`,
|
|
1934
|
+
host: { '[class.signpost-title]': 'true' },
|
|
1935
|
+
standalone: false,
|
|
1936
|
+
}]
|
|
1937
|
+
}] });
|
|
1938
|
+
|
|
1939
|
+
/*
|
|
1940
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1941
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1942
|
+
* This software is released under MIT license.
|
|
1943
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1944
|
+
*/
|
|
1945
|
+
const CLR_SIGNPOST_DIRECTIVES = [
|
|
1946
|
+
ClrSignpost,
|
|
1947
|
+
ClrSignpostContent,
|
|
1948
|
+
ClrSignpostTrigger,
|
|
1949
|
+
ClrSignpostTitle,
|
|
1950
|
+
];
|
|
1951
|
+
class ClrSignpostModule {
|
|
1952
|
+
constructor() {
|
|
1953
|
+
ClarityIcons.addIcons(windowCloseIcon, infoCircleIcon);
|
|
1954
|
+
}
|
|
1955
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrSignpostModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1956
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrSignpostModule, declarations: [ClrSignpost,
|
|
1957
|
+
ClrSignpostContent,
|
|
1958
|
+
ClrSignpostTrigger,
|
|
1959
|
+
ClrSignpostTitle], imports: [CommonModule, ClrIcon, ClrFocusOnViewInitModule, _lrClrPopoverModuleNext, ClrIfOpen$1], exports: [ClrSignpost,
|
|
1960
|
+
ClrSignpostContent,
|
|
1961
|
+
ClrSignpostTrigger,
|
|
1962
|
+
ClrSignpostTitle, ClrIfOpen$1] }); }
|
|
1963
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrSignpostModule, imports: [CommonModule, ClrIcon, ClrFocusOnViewInitModule, _lrClrPopoverModuleNext] }); }
|
|
1964
|
+
}
|
|
1965
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrSignpostModule, decorators: [{
|
|
1966
|
+
type: NgModule,
|
|
1967
|
+
args: [{
|
|
1968
|
+
imports: [CommonModule, ClrIcon, ClrFocusOnViewInitModule, _lrClrPopoverModuleNext, ClrIfOpen$1],
|
|
1969
|
+
declarations: [CLR_SIGNPOST_DIRECTIVES],
|
|
1970
|
+
exports: [CLR_SIGNPOST_DIRECTIVES, ClrIfOpen$1],
|
|
1971
|
+
}]
|
|
1972
|
+
}], ctorParameters: () => [] });
|
|
1973
|
+
|
|
1974
|
+
/*
|
|
1975
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1976
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1977
|
+
* This software is released under MIT license.
|
|
1978
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1979
|
+
*/
|
|
1980
|
+
|
|
1981
|
+
/*
|
|
1982
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1983
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1984
|
+
* This software is released under MIT license.
|
|
1985
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1986
|
+
*/
|
|
1987
|
+
class TooltipIdService {
|
|
1988
|
+
constructor() {
|
|
1989
|
+
this._id = new Subject();
|
|
1990
|
+
}
|
|
1991
|
+
get id() {
|
|
1992
|
+
return this._id.asObservable();
|
|
1993
|
+
}
|
|
1994
|
+
updateId(id) {
|
|
1995
|
+
this._id.next(id);
|
|
1996
|
+
}
|
|
1997
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TooltipIdService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1998
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TooltipIdService }); }
|
|
1999
|
+
}
|
|
2000
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TooltipIdService, decorators: [{
|
|
2001
|
+
type: Injectable
|
|
2002
|
+
}] });
|
|
2003
|
+
|
|
2004
|
+
/*
|
|
2005
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
2006
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
2007
|
+
* This software is released under MIT license.
|
|
2008
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
2009
|
+
*/
|
|
2010
|
+
class TooltipMouseService {
|
|
2011
|
+
constructor(popoverService) {
|
|
2012
|
+
this.popoverService = popoverService;
|
|
2013
|
+
this.mouseOutDelay = 100;
|
|
2014
|
+
}
|
|
2015
|
+
onMouseEnterTrigger() {
|
|
2016
|
+
this.mouseOverTrigger = true;
|
|
2017
|
+
this.popoverService.open = true;
|
|
2018
|
+
}
|
|
2019
|
+
onMouseLeaveTrigger() {
|
|
2020
|
+
this.mouseOverTrigger = false;
|
|
2021
|
+
this.hideIfMouseOut();
|
|
2022
|
+
}
|
|
2023
|
+
onMouseEnterContent() {
|
|
2024
|
+
this.mouseOverContent = true;
|
|
2025
|
+
}
|
|
2026
|
+
onMouseLeaveContent() {
|
|
2027
|
+
this.mouseOverContent = false;
|
|
2028
|
+
this.hideIfMouseOut();
|
|
2029
|
+
}
|
|
2030
|
+
hideIfMouseOut() {
|
|
2031
|
+
// A zero timeout is used so that the code has a chance to update
|
|
2032
|
+
// the `mouseOverContent` property after the user moves the mouse from the trigger to the content.
|
|
2033
|
+
setTimeout(() => {
|
|
2034
|
+
if (!this.mouseOverTrigger && !this.mouseOverContent) {
|
|
2035
|
+
this.popoverService.open = false;
|
|
2036
|
+
}
|
|
2037
|
+
}, this.mouseOutDelay);
|
|
2038
|
+
}
|
|
2039
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TooltipMouseService, deps: [{ token: i2.ClrPopoverService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2040
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TooltipMouseService }); }
|
|
2041
|
+
}
|
|
2042
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TooltipMouseService, decorators: [{
|
|
2043
|
+
type: Injectable
|
|
2044
|
+
}], ctorParameters: () => [{ type: i2.ClrPopoverService }] });
|
|
2045
|
+
|
|
2046
|
+
/*
|
|
2047
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
2048
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
2049
|
+
* This software is released under MIT license.
|
|
2050
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
2051
|
+
*/
|
|
2052
|
+
class ClrTooltip {
|
|
2053
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrTooltip, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2054
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrTooltip, isStandalone: false, selector: "clr-tooltip", host: { properties: { "class.clr-tooltip-container": "true" } }, providers: [TooltipIdService, TooltipMouseService], hostDirectives: [{ directive: i2.ClrPopoverHostDirective }], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
|
|
2055
|
+
}
|
|
2056
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrTooltip, decorators: [{
|
|
2057
|
+
type: Component,
|
|
2058
|
+
args: [{
|
|
2059
|
+
selector: 'clr-tooltip',
|
|
2060
|
+
template: `<ng-content></ng-content>`,
|
|
2061
|
+
host: {
|
|
2062
|
+
'[class.clr-tooltip-container]': 'true',
|
|
2063
|
+
},
|
|
2064
|
+
providers: [TooltipIdService, TooltipMouseService],
|
|
2065
|
+
hostDirectives: [ClrPopoverHostDirective$1],
|
|
2066
|
+
standalone: false,
|
|
2067
|
+
}]
|
|
2068
|
+
}] });
|
|
2069
|
+
|
|
2070
|
+
/*
|
|
2071
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
2072
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
2073
|
+
* This software is released under MIT license.
|
|
2074
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
2075
|
+
*/
|
|
2076
|
+
class ClrTooltipTrigger {
|
|
2077
|
+
constructor(popoverService, tooltipIdService, tooltipMouseService, element) {
|
|
2078
|
+
this.popoverService = popoverService;
|
|
2079
|
+
this.tooltipMouseService = tooltipMouseService;
|
|
2080
|
+
this.subs = [];
|
|
2081
|
+
// The aria-described by comes from the id of content. It
|
|
2082
|
+
this.subs.push(tooltipIdService.id.subscribe(tooltipId => (this.ariaDescribedBy = tooltipId)));
|
|
2083
|
+
popoverService.anchorElementRef = element;
|
|
2084
|
+
}
|
|
2085
|
+
ngOnDestroy() {
|
|
2086
|
+
this.subs.forEach(sub => sub.unsubscribe());
|
|
2087
|
+
}
|
|
2088
|
+
showTooltip() {
|
|
2089
|
+
this.popoverService.open = true;
|
|
2090
|
+
}
|
|
2091
|
+
hideTooltip() {
|
|
2092
|
+
this.popoverService.open = false;
|
|
2093
|
+
}
|
|
2094
|
+
onMouseEnter() {
|
|
2095
|
+
this.tooltipMouseService.onMouseEnterTrigger();
|
|
2096
|
+
}
|
|
2097
|
+
onMouseLeave() {
|
|
2098
|
+
this.tooltipMouseService.onMouseLeaveTrigger();
|
|
2099
|
+
}
|
|
2100
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrTooltipTrigger, deps: [{ token: i2.ClrPopoverService }, { token: TooltipIdService }, { token: TooltipMouseService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2101
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrTooltipTrigger, isStandalone: false, selector: "[clrTooltipTrigger]", host: { attributes: { "tabindex": "0" }, listeners: { "focus": "showTooltip()", "blur": "hideTooltip()", "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()" }, properties: { "class.tooltip-trigger": "true", "attr.aria-describedby": "ariaDescribedBy", "attr.role": "\"button\"" } }, ngImport: i0 }); }
|
|
2102
|
+
}
|
|
2103
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrTooltipTrigger, decorators: [{
|
|
2104
|
+
type: Directive,
|
|
2105
|
+
args: [{
|
|
2106
|
+
selector: '[clrTooltipTrigger]',
|
|
2107
|
+
host: {
|
|
2108
|
+
tabindex: '0',
|
|
2109
|
+
'[class.tooltip-trigger]': 'true',
|
|
2110
|
+
'[attr.aria-describedby]': 'ariaDescribedBy',
|
|
2111
|
+
'[attr.role]': '"button"',
|
|
2112
|
+
},
|
|
2113
|
+
standalone: false,
|
|
2114
|
+
}]
|
|
2115
|
+
}], ctorParameters: () => [{ type: i2.ClrPopoverService }, { type: TooltipIdService }, { type: TooltipMouseService }, { type: i0.ElementRef }], propDecorators: { showTooltip: [{
|
|
2116
|
+
type: HostListener,
|
|
2117
|
+
args: ['focus']
|
|
2118
|
+
}], hideTooltip: [{
|
|
2119
|
+
type: HostListener,
|
|
2120
|
+
args: ['blur']
|
|
2121
|
+
}], onMouseEnter: [{
|
|
2122
|
+
type: HostListener,
|
|
2123
|
+
args: ['mouseenter']
|
|
2124
|
+
}], onMouseLeave: [{
|
|
2125
|
+
type: HostListener,
|
|
2126
|
+
args: ['mouseleave']
|
|
2127
|
+
}] } });
|
|
2128
|
+
|
|
2129
|
+
/*
|
|
2130
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
2131
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
2132
|
+
* This software is released under MIT license.
|
|
2133
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
2134
|
+
*/
|
|
2135
|
+
const SIZES = ['xs', 'sm', 'md', 'lg'];
|
|
2136
|
+
const defaultPosition = ClrPopoverPosition$1.RIGHT;
|
|
2137
|
+
const defaultSize = 'sm';
|
|
2138
|
+
class ClrTooltipContent {
|
|
2139
|
+
constructor(parentHost, tooltipIdService, el, renderer, popoverService, tooltipMouseService, popoverContent) {
|
|
2140
|
+
this.tooltipIdService = tooltipIdService;
|
|
2141
|
+
this.el = el;
|
|
2142
|
+
this.renderer = renderer;
|
|
2143
|
+
this.tooltipMouseService = tooltipMouseService;
|
|
2144
|
+
this.popoverContent = popoverContent;
|
|
2145
|
+
popoverService.panelClass.push('clr-tooltip-container');
|
|
2146
|
+
popoverContent.contentType = ClrPopoverType$1.TOOLTIP;
|
|
2147
|
+
popoverContent.scrollToClose = true;
|
|
2148
|
+
if (!parentHost) {
|
|
2149
|
+
throw new Error('clr-tooltip-content should only be used inside of a clr-tooltip');
|
|
2150
|
+
}
|
|
2151
|
+
// Set the default id in case consumer does not supply a custom id.
|
|
2152
|
+
this.id = uniqueIdFactory();
|
|
2153
|
+
}
|
|
2154
|
+
get id() {
|
|
2155
|
+
return this._id;
|
|
2156
|
+
}
|
|
2157
|
+
set id(value) {
|
|
2158
|
+
const id = value || '';
|
|
2159
|
+
this._id = id;
|
|
2160
|
+
this.tooltipIdService.updateId(id);
|
|
2161
|
+
}
|
|
2162
|
+
get position() {
|
|
2163
|
+
return this._position;
|
|
2164
|
+
}
|
|
2165
|
+
set position(value) {
|
|
2166
|
+
const posIndex = TOOLTIP_POSITIONS$1.indexOf(value);
|
|
2167
|
+
this._position = value && posIndex > -1 ? TOOLTIP_POSITIONS$1[posIndex] : defaultPosition;
|
|
2168
|
+
this.popoverContent.contentAt = this._position;
|
|
2169
|
+
}
|
|
2170
|
+
get size() {
|
|
2171
|
+
return this._size;
|
|
2172
|
+
}
|
|
2173
|
+
set size(value) {
|
|
2174
|
+
const oldSize = this._size;
|
|
2175
|
+
const newSize = SIZES.includes(value) ? value : defaultSize;
|
|
2176
|
+
this._size = newSize;
|
|
2177
|
+
this.updateCssClass({ oldClass: `tooltip-${oldSize}`, newClass: `tooltip-${newSize}` });
|
|
2178
|
+
}
|
|
2179
|
+
ngOnInit() {
|
|
2180
|
+
this.size = this.size || defaultSize;
|
|
2181
|
+
this.position = this.position || defaultPosition;
|
|
2182
|
+
}
|
|
2183
|
+
onMouseEnter() {
|
|
2184
|
+
this.tooltipMouseService.onMouseEnterContent();
|
|
2185
|
+
}
|
|
2186
|
+
onMouseLeave() {
|
|
2187
|
+
this.tooltipMouseService.onMouseLeaveContent();
|
|
2188
|
+
}
|
|
2189
|
+
updateCssClass({ oldClass, newClass }) {
|
|
2190
|
+
this.renderer.removeClass(this.el.nativeElement, oldClass);
|
|
2191
|
+
this.renderer.addClass(this.el.nativeElement, newClass);
|
|
2192
|
+
}
|
|
2193
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrTooltipContent, deps: [{ token: POPOVER_HOST_ANCHOR$1, optional: true }, { token: TooltipIdService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i2.ClrPopoverService }, { token: TooltipMouseService }, { token: i2.ClrPopoverContent }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2194
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrTooltipContent, isStandalone: false, selector: "clr-tooltip-content", inputs: { id: "id", position: ["clrPosition", "position"], size: ["clrSize", "size"] }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()" }, properties: { "class.tooltip-content": "true", "style.opacity": "1", "attr.role": "\"tooltip\"", "id": "id" } }, hostDirectives: [{ directive: i2.ClrPopoverContent }], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
|
|
2195
|
+
}
|
|
2196
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrTooltipContent, decorators: [{
|
|
2197
|
+
type: Component,
|
|
2198
|
+
args: [{
|
|
2199
|
+
selector: 'clr-tooltip-content',
|
|
2200
|
+
template: `<ng-content></ng-content>`,
|
|
2201
|
+
host: {
|
|
2202
|
+
'[class.tooltip-content]': 'true',
|
|
2203
|
+
'[style.opacity]': '1',
|
|
2204
|
+
'[attr.role]': '"tooltip"',
|
|
2205
|
+
'[id]': 'id',
|
|
2206
|
+
},
|
|
2207
|
+
standalone: false,
|
|
2208
|
+
hostDirectives: [ClrPopoverContent$1],
|
|
2209
|
+
}]
|
|
2210
|
+
}], ctorParameters: () => [{ type: i0.ElementRef, decorators: [{
|
|
2211
|
+
type: Optional
|
|
2212
|
+
}, {
|
|
2213
|
+
type: Inject,
|
|
2214
|
+
args: [POPOVER_HOST_ANCHOR$1]
|
|
2215
|
+
}] }, { type: TooltipIdService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i2.ClrPopoverService }, { type: TooltipMouseService }, { type: i2.ClrPopoverContent }], propDecorators: { id: [{
|
|
2216
|
+
type: Input
|
|
2217
|
+
}], position: [{
|
|
2218
|
+
type: Input,
|
|
2219
|
+
args: ['clrPosition']
|
|
2220
|
+
}], size: [{
|
|
2221
|
+
type: Input,
|
|
2222
|
+
args: ['clrSize']
|
|
2223
|
+
}], onMouseEnter: [{
|
|
2224
|
+
type: HostListener,
|
|
2225
|
+
args: ['mouseenter']
|
|
2226
|
+
}], onMouseLeave: [{
|
|
2227
|
+
type: HostListener,
|
|
2228
|
+
args: ['mouseleave']
|
|
2229
|
+
}] } });
|
|
2230
|
+
|
|
2231
|
+
/*
|
|
2232
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
2233
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
2234
|
+
* This software is released under MIT license.
|
|
2235
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
2236
|
+
*/
|
|
2237
|
+
const CLR_TOOLTIP_DIRECTIVES = [ClrTooltip, ClrTooltipTrigger, ClrTooltipContent];
|
|
2238
|
+
class ClrTooltipModule {
|
|
2239
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrTooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2240
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrTooltipModule, declarations: [ClrTooltip, ClrTooltipTrigger, ClrTooltipContent], imports: [CommonModule, ClrIcon, _lrClrPopoverModuleNext], exports: [ClrTooltip, ClrTooltipTrigger, ClrTooltipContent, ClrIfOpen$1, ClrIcon] }); }
|
|
2241
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrTooltipModule, imports: [CommonModule, ClrIcon, _lrClrPopoverModuleNext] }); }
|
|
2242
|
+
}
|
|
2243
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrTooltipModule, decorators: [{
|
|
2244
|
+
type: NgModule,
|
|
2245
|
+
args: [{
|
|
2246
|
+
imports: [CommonModule, ClrIcon, _lrClrPopoverModuleNext],
|
|
2247
|
+
declarations: [CLR_TOOLTIP_DIRECTIVES],
|
|
2248
|
+
exports: [CLR_TOOLTIP_DIRECTIVES, ClrIfOpen$1, ClrIcon],
|
|
2249
|
+
}]
|
|
2250
|
+
}] });
|
|
2251
|
+
|
|
2252
|
+
/*
|
|
2253
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
2254
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
2255
|
+
* This software is released under MIT license.
|
|
2256
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
2257
|
+
*/
|
|
2258
|
+
|
|
2259
|
+
/*
|
|
2260
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
2261
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
2262
|
+
* This software is released under MIT license.
|
|
2263
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
2264
|
+
*/
|
|
2265
|
+
|
|
2266
|
+
/**
|
|
2267
|
+
* Generated bundle index. Do not edit.
|
|
2268
|
+
*/
|
|
2269
|
+
|
|
2270
|
+
export { CLR_DROPDOWN_DIRECTIVES, CLR_MENU_POSITIONS, CLR_SIGNPOST_DIRECTIVES, CLR_TOOLTIP_DIRECTIVES, ClrDropdown, ClrDropdownItem, ClrDropdownMenu, ClrDropdownModule, ClrDropdownTrigger, ClrIfOpen, ClrPopoverAnchor, ClrPopoverContent, ClrPopoverHostDirective, ClrPopoverModule, ClrPopoverPosition, ClrPopoverService, ClrPopoverType, ClrSignpost, ClrSignpostContent, ClrSignpostModule, ClrSignpostTitle, ClrSignpostTrigger, ClrStopEscapePropagationDirective, ClrTooltip, ClrTooltipContent, ClrTooltipModule, ClrTooltipTrigger, DROPDOWN_POSITIONS, POPOVER_HOST_ANCHOR, SIGNPOST_POSITIONS, TOOLTIP_POSITIONS, getAnchorPosition, getConnectedPositions, getContentPosition, getPositionsArray, mapPopoverKeyToPosition, ClrPopoverCloseButton as ÇlrClrPopoverCloseButton, ClrPopoverModuleNext as ÇlrClrPopoverModuleNext, ClrPopoverOpenCloseButton as ÇlrClrPopoverOpenCloseButton };
|
|
2271
|
+
//# sourceMappingURL=clr-angular-popover.mjs.map
|