@clr/angular 12.0.11 → 13.0.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/accordion/accordion-content.d.ts +3 -0
- package/accordion/accordion-description.d.ts +3 -0
- package/accordion/accordion-panel.d.ts +3 -0
- package/accordion/accordion-title.d.ts +3 -0
- package/accordion/accordion.d.ts +3 -0
- package/accordion/accordion.module.d.ts +13 -0
- package/accordion/chocolate/accordion-oompa-loompa.d.ts +3 -0
- package/accordion/chocolate/accordion-willy-wonka.d.ts +3 -0
- package/accordion/providers/accordion.service.d.ts +3 -0
- package/accordion/stepper/chocolate/stepper-oompa-loompa.d.ts +3 -0
- package/accordion/stepper/chocolate/stepper-willy-wonka.d.ts +3 -0
- package/accordion/stepper/providers/stepper.service.d.ts +3 -0
- package/accordion/stepper/step-button.d.ts +3 -0
- package/accordion/stepper/stepper-panel.d.ts +3 -0
- package/accordion/stepper/stepper.d.ts +3 -0
- package/accordion/stepper/stepper.module.d.ts +12 -0
- package/button/button-group/button-group.d.ts +3 -0
- package/button/button-group/button-group.module.d.ts +9 -0
- package/button/button-group/button.d.ts +3 -0
- package/button/button-loading/loading-button.d.ts +3 -0
- package/button/button-loading/loading-button.module.d.ts +6 -0
- package/button/button.module.d.ts +6 -0
- package/button/providers/button-in-group.service.d.ts +3 -0
- package/clr-angular.d.ts +1 -105
- package/clr-angular.module.d.ts +23 -0
- package/data/data.module.d.ts +7 -0
- package/data/datagrid/built-in/filters/datagrid-numeric-filter.d.ts +3 -0
- package/data/datagrid/built-in/filters/datagrid-string-filter.d.ts +3 -0
- package/data/datagrid/chocolate/actionable-oompa-loompa.d.ts +3 -0
- package/data/datagrid/chocolate/datagrid-willy-wonka.d.ts +3 -0
- package/data/datagrid/chocolate/expandable-oompa-loompa.d.ts +3 -0
- package/data/datagrid/datagrid-action-bar.d.ts +3 -0
- package/data/datagrid/datagrid-action-overflow.d.ts +3 -0
- package/data/datagrid/datagrid-cell.d.ts +3 -0
- package/data/datagrid/datagrid-column-separator.d.ts +3 -0
- package/data/datagrid/datagrid-column-toggle-button.d.ts +3 -0
- package/data/datagrid/datagrid-column-toggle-title.d.ts +3 -0
- package/data/datagrid/datagrid-column-toggle.d.ts +3 -0
- package/data/datagrid/datagrid-column.d.ts +3 -0
- package/data/datagrid/datagrid-detail-body.d.ts +3 -0
- package/data/datagrid/datagrid-detail-header.d.ts +3 -0
- package/data/datagrid/datagrid-detail-registerer.d.ts +3 -0
- package/data/datagrid/datagrid-detail.d.ts +3 -0
- package/data/datagrid/datagrid-filter.d.ts +3 -0
- package/data/datagrid/datagrid-footer.d.ts +3 -0
- package/data/datagrid/datagrid-hideable-column.d.ts +3 -0
- package/data/datagrid/datagrid-if-detail.d.ts +3 -0
- package/data/datagrid/datagrid-if-expanded.service.d.ts +3 -0
- package/data/datagrid/datagrid-items-trackby.d.ts +3 -0
- package/data/datagrid/datagrid-items.d.ts +3 -0
- package/data/datagrid/datagrid-page-size.d.ts +3 -0
- package/data/datagrid/datagrid-pagination.d.ts +3 -0
- package/data/datagrid/datagrid-placeholder.d.ts +3 -0
- package/data/datagrid/datagrid-row-detail.d.ts +3 -0
- package/data/datagrid/datagrid-row.d.ts +3 -0
- package/data/datagrid/datagrid.d.ts +3 -0
- package/data/datagrid/datagrid.module.d.ts +53 -0
- package/data/datagrid/providers/column-resizer.service.d.ts +3 -0
- package/data/datagrid/providers/columns.service.d.ts +3 -0
- package/data/datagrid/providers/detail.service.d.ts +3 -0
- package/data/datagrid/providers/display-mode.service.d.ts +3 -0
- package/data/datagrid/providers/filters.d.ts +3 -0
- package/data/datagrid/providers/global-expandable-rows.d.ts +3 -0
- package/data/datagrid/providers/items.d.ts +3 -0
- package/data/datagrid/providers/page.d.ts +3 -0
- package/data/datagrid/providers/row-action-service.d.ts +3 -0
- package/data/datagrid/providers/selection.d.ts +3 -0
- package/data/datagrid/providers/sort.d.ts +3 -0
- package/data/datagrid/providers/state-debouncer.provider.d.ts +3 -0
- package/data/datagrid/providers/state.provider.d.ts +3 -0
- package/data/datagrid/providers/table-size.service.d.ts +3 -0
- package/data/datagrid/render/cell-renderer.d.ts +3 -0
- package/data/datagrid/render/header-renderer.d.ts +3 -0
- package/data/datagrid/render/main-renderer.d.ts +3 -0
- package/data/datagrid/render/noop-dom-adapter.d.ts +4 -1
- package/data/datagrid/render/render-organizer.d.ts +3 -0
- package/data/datagrid/render/row-renderer.d.ts +3 -0
- package/data/datagrid/utils/datagrid-filter-registrar.d.ts +3 -0
- package/data/datagrid/wrapped-cell.d.ts +3 -0
- package/data/datagrid/wrapped-column.d.ts +3 -0
- package/data/datagrid/wrapped-row.d.ts +3 -0
- package/data/stack-view/stack-block.d.ts +3 -0
- package/data/stack-view/stack-content-input.d.ts +3 -0
- package/data/stack-view/stack-header.d.ts +3 -0
- package/data/stack-view/stack-input.d.ts +3 -6
- package/data/stack-view/stack-select.d.ts +3 -5
- package/data/stack-view/stack-view-custom-tags.d.ts +3 -0
- package/data/stack-view/stack-view.d.ts +3 -0
- package/data/stack-view/stack-view.module.d.ts +15 -0
- package/data/tree-view/recursive-children.d.ts +3 -0
- package/data/tree-view/recursive-for-of.d.ts +3 -0
- package/data/tree-view/tree-features.service.d.ts +3 -0
- package/data/tree-view/tree-focus-manager.service.d.ts +3 -0
- package/data/tree-view/tree-node-link.d.ts +3 -0
- package/data/tree-view/tree-node.d.ts +3 -0
- package/data/tree-view/tree-view.module.d.ts +12 -0
- package/data/tree-view/tree.d.ts +3 -0
- package/emphasis/alert/alert-item.d.ts +3 -0
- package/emphasis/alert/alert-text.d.ts +3 -0
- package/emphasis/alert/alert.d.ts +4 -0
- package/emphasis/alert/alert.module.d.ts +12 -0
- package/emphasis/alert/alerts-pager.d.ts +3 -0
- package/emphasis/alert/alerts.d.ts +3 -0
- package/emphasis/alert/providers/icon-and-types.service.d.ts +3 -0
- package/emphasis/alert/providers/multi-alert.service.d.ts +5 -1
- package/emphasis/emphasis.module.d.ts +5 -0
- package/esm2020/accordion/accordion-content.mjs +20 -0
- package/esm2020/accordion/accordion-description.mjs +21 -0
- package/esm2020/accordion/accordion-panel.mjs +108 -0
- package/esm2020/accordion/accordion-title.mjs +21 -0
- package/esm2020/accordion/accordion.mjs +61 -0
- package/esm2020/accordion/accordion.module.mjs +55 -0
- package/esm2020/accordion/chocolate/accordion-oompa-loompa.mjs +31 -0
- package/esm2020/accordion/chocolate/accordion-willy-wonka.mjs +17 -0
- package/{esm2015/accordion/enums/accordion-status.enum.js → esm2020/accordion/enums/accordion-status.enum.mjs} +0 -0
- package/{esm2015/accordion/enums/accordion-strategy.enum.js → esm2020/accordion/enums/accordion-strategy.enum.mjs} +0 -0
- package/{esm2015/accordion/index.js → esm2020/accordion/index.mjs} +0 -0
- package/{esm2015/accordion/models/accordion.model.js → esm2020/accordion/models/accordion.model.mjs} +0 -0
- package/esm2020/accordion/providers/accordion.service.mjs +47 -0
- package/esm2020/accordion/stepper/chocolate/stepper-oompa-loompa.mjs +31 -0
- package/esm2020/accordion/stepper/chocolate/stepper-willy-wonka.mjs +17 -0
- package/{esm2015/accordion/stepper/index.js → esm2020/accordion/stepper/index.mjs} +0 -0
- package/{esm2015/accordion/stepper/models/stepper.model.js → esm2020/accordion/stepper/models/stepper.model.mjs} +0 -0
- package/esm2020/accordion/stepper/providers/stepper.service.mjs +55 -0
- package/esm2020/accordion/stepper/step-button.mjs +51 -0
- package/esm2020/accordion/stepper/stepper-panel.mjs +89 -0
- package/esm2020/accordion/stepper/stepper.mjs +93 -0
- package/esm2020/accordion/stepper/stepper.module.mjs +30 -0
- package/{esm2015/accordion/utils/animation.js → esm2020/accordion/utils/animation.mjs} +0 -0
- package/esm2020/button/button-group/button-group.mjs +140 -0
- package/esm2020/button/button-group/button-group.module.mjs +27 -0
- package/{esm2015/button/button-group/button.js → esm2020/button/button-group/button.mjs} +57 -24
- package/{esm2015/button/button-group/index.js → esm2020/button/button-group/index.mjs} +0 -0
- package/{esm2015/button/button-loading/index.js → esm2020/button/button-loading/index.mjs} +0 -0
- package/esm2020/button/button-loading/loading-button.mjs +153 -0
- package/esm2020/button/button-loading/loading-button.module.mjs +24 -0
- package/esm2020/button/button.module.mjs +25 -0
- package/{esm2015/button/index.js → esm2020/button/index.mjs} +0 -0
- package/esm2020/button/providers/button-in-group.service.mjs +25 -0
- package/esm2020/clr-angular.mjs +5 -0
- package/esm2020/clr-angular.module.mjs +96 -0
- package/esm2020/data/data.module.mjs +20 -0
- package/{esm2015/data/datagrid/built-in/comparators/datagrid-property-comparator.js → esm2020/data/datagrid/built-in/comparators/datagrid-property-comparator.mjs} +0 -0
- package/{esm2015/data/datagrid/built-in/filters/datagrid-numeric-filter-impl.js → esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter-impl.mjs} +0 -0
- package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter.mjs +200 -0
- package/{esm2015/data/datagrid/built-in/filters/datagrid-property-numeric-filter.js → esm2020/data/datagrid/built-in/filters/datagrid-property-numeric-filter.mjs} +0 -0
- package/{esm2015/data/datagrid/built-in/filters/datagrid-property-string-filter.js → esm2020/data/datagrid/built-in/filters/datagrid-property-string-filter.mjs} +0 -0
- package/{esm2015/data/datagrid/built-in/filters/datagrid-string-filter-impl.js → esm2020/data/datagrid/built-in/filters/datagrid-string-filter-impl.mjs} +0 -0
- package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter.mjs +131 -0
- package/{esm2015/data/datagrid/built-in/nested-property.js → esm2020/data/datagrid/built-in/nested-property.mjs} +0 -0
- package/esm2020/data/datagrid/chocolate/actionable-oompa-loompa.mjs +31 -0
- package/esm2020/data/datagrid/chocolate/datagrid-willy-wonka.mjs +17 -0
- package/esm2020/data/datagrid/chocolate/expandable-oompa-loompa.mjs +31 -0
- package/esm2020/data/datagrid/datagrid-action-bar.mjs +20 -0
- package/esm2020/data/datagrid/datagrid-action-overflow.mjs +161 -0
- package/esm2020/data/datagrid/datagrid-cell.mjs +39 -0
- package/esm2020/data/datagrid/datagrid-column-separator.mjs +172 -0
- package/esm2020/data/datagrid/datagrid-column-toggle-button.mjs +63 -0
- package/esm2020/data/datagrid/datagrid-column-toggle-title.mjs +20 -0
- package/esm2020/data/datagrid/datagrid-column-toggle.mjs +229 -0
- package/esm2020/data/datagrid/datagrid-column.mjs +430 -0
- package/esm2020/data/datagrid/datagrid-detail-body.mjs +30 -0
- package/esm2020/data/datagrid/datagrid-detail-header.mjs +61 -0
- package/esm2020/data/datagrid/datagrid-detail-registerer.mjs +34 -0
- package/esm2020/data/datagrid/datagrid-detail.mjs +70 -0
- package/esm2020/data/datagrid/datagrid-filter.mjs +182 -0
- package/esm2020/data/datagrid/datagrid-footer.mjs +79 -0
- package/esm2020/data/datagrid/datagrid-hideable-column.mjs +104 -0
- package/esm2020/data/datagrid/datagrid-if-detail.mjs +63 -0
- package/esm2020/data/datagrid/datagrid-if-expanded.service.mjs +54 -0
- package/esm2020/data/datagrid/datagrid-items-trackby.mjs +32 -0
- package/esm2020/data/datagrid/datagrid-items.mjs +63 -0
- package/esm2020/data/datagrid/datagrid-page-size.mjs +47 -0
- package/esm2020/data/datagrid/datagrid-pagination.mjs +362 -0
- package/esm2020/data/datagrid/datagrid-placeholder.mjs +41 -0
- package/esm2020/data/datagrid/datagrid-row-detail.mjs +90 -0
- package/esm2020/data/datagrid/datagrid-row.mjs +241 -0
- package/esm2020/data/datagrid/datagrid.mjs +349 -0
- package/esm2020/data/datagrid/datagrid.module.mjs +237 -0
- package/esm2020/data/datagrid/enums/column-changes.enum.mjs +14 -0
- package/{esm2015/data/datagrid/enums/display-mode.enum.js → esm2020/data/datagrid/enums/display-mode.enum.mjs} +0 -0
- package/{esm2015/data/datagrid/enums/render-step.enum.js → esm2020/data/datagrid/enums/render-step.enum.mjs} +0 -0
- package/{esm2015/data/datagrid/enums/selection-type.js → esm2020/data/datagrid/enums/selection-type.mjs} +0 -0
- package/{esm2015/data/datagrid/enums/sort-order.enum.js → esm2020/data/datagrid/enums/sort-order.enum.mjs} +0 -0
- package/{esm2015/data/datagrid/index.js → esm2020/data/datagrid/index.mjs} +0 -0
- package/{esm2015/data/datagrid/interfaces/column-state.interface.js → esm2020/data/datagrid/interfaces/column-state.interface.mjs} +0 -0
- package/{esm2015/data/datagrid/interfaces/comparator.interface.js → esm2020/data/datagrid/interfaces/comparator.interface.mjs} +0 -0
- package/{esm2015/data/datagrid/interfaces/filter.interface.js → esm2020/data/datagrid/interfaces/filter.interface.mjs} +0 -0
- package/{esm2015/data/datagrid/interfaces/numeric-filter.interface.js → esm2020/data/datagrid/interfaces/numeric-filter.interface.mjs} +0 -0
- package/{esm2015/data/datagrid/interfaces/state.interface.js → esm2020/data/datagrid/interfaces/state.interface.mjs} +0 -0
- package/{esm2015/data/datagrid/interfaces/string-filter.interface.js → esm2020/data/datagrid/interfaces/string-filter.interface.mjs} +0 -0
- package/esm2020/data/datagrid/providers/column-resizer.service.mjs +57 -0
- package/{esm2015/data/datagrid/providers/column-state.provider.js → esm2020/data/datagrid/providers/column-state.provider.mjs} +0 -0
- package/esm2020/data/datagrid/providers/columns.service.mjs +53 -0
- package/{esm2015/data/datagrid/providers/custom-filter.js → esm2020/data/datagrid/providers/custom-filter.mjs} +0 -0
- package/esm2020/data/datagrid/providers/detail.service.mjs +61 -0
- package/esm2020/data/datagrid/providers/display-mode.service.mjs +35 -0
- package/esm2020/data/datagrid/providers/filters.mjs +111 -0
- package/esm2020/data/datagrid/providers/global-expandable-rows.mjs +33 -0
- package/esm2020/data/datagrid/providers/items.mjs +173 -0
- package/esm2020/data/datagrid/providers/page.mjs +155 -0
- package/esm2020/data/datagrid/providers/row-action-service.mjs +30 -0
- package/esm2020/data/datagrid/providers/selection.mjs +374 -0
- package/esm2020/data/datagrid/providers/sort.mjs +85 -0
- package/esm2020/data/datagrid/providers/state-debouncer.provider.mjs +42 -0
- package/esm2020/data/datagrid/providers/state.provider.mjs +74 -0
- package/esm2020/data/datagrid/providers/table-size.service.mjs +44 -0
- package/esm2020/data/datagrid/render/cell-renderer.mjs +81 -0
- package/{esm2015/data/datagrid/render/constants.js → esm2020/data/datagrid/render/constants.mjs} +0 -0
- package/esm2020/data/datagrid/render/header-renderer.mjs +132 -0
- package/esm2020/data/datagrid/render/main-renderer.mjs +198 -0
- package/esm2020/data/datagrid/render/noop-dom-adapter.mjs +54 -0
- package/esm2020/data/datagrid/render/render-organizer.mjs +38 -0
- package/esm2020/data/datagrid/render/row-renderer.mjs +58 -0
- package/esm2020/data/datagrid/utils/datagrid-filter-registrar.mjs +42 -0
- package/esm2020/data/datagrid/wrapped-cell.mjs +39 -0
- package/esm2020/data/datagrid/wrapped-column.mjs +40 -0
- package/esm2020/data/datagrid/wrapped-row.mjs +40 -0
- package/{esm2015/data/index.js → esm2020/data/index.mjs} +0 -0
- package/{esm2015/data/stack-view/index.js → esm2020/data/stack-view/index.mjs} +0 -0
- package/esm2020/data/stack-view/stack-block.mjs +214 -0
- package/esm2020/data/stack-view/stack-content-input.mjs +29 -0
- package/{esm2015/data/stack-view/stack-control.js → esm2020/data/stack-view/stack-control.mjs} +0 -0
- package/esm2020/data/stack-view/stack-header.mjs +68 -0
- package/{esm2015/data/stack-view/stack-input.js → esm2020/data/stack-view/stack-input.mjs} +20 -14
- package/esm2020/data/stack-view/stack-select.mjs +48 -0
- package/esm2020/data/stack-view/stack-view-custom-tags.mjs +16 -0
- package/esm2020/data/stack-view/stack-view.mjs +57 -0
- package/esm2020/data/stack-view/stack-view.module.mjs +69 -0
- package/{esm2015/data/tree-view/index.js → esm2020/data/tree-view/index.mjs} +0 -0
- package/{esm2015/data/tree-view/models/async-array.js → esm2020/data/tree-view/models/async-array.mjs} +0 -0
- package/{esm2015/data/tree-view/models/declarative-tree-node.model.js → esm2020/data/tree-view/models/declarative-tree-node.model.mjs} +0 -0
- package/{esm2015/data/tree-view/models/recursive-tree-node.model.js → esm2020/data/tree-view/models/recursive-tree-node.model.mjs} +0 -0
- package/{esm2015/data/tree-view/models/selected-state.enum.js → esm2020/data/tree-view/models/selected-state.enum.mjs} +0 -0
- package/{esm2015/data/tree-view/models/tree-node.model.js → esm2020/data/tree-view/models/tree-node.model.mjs} +0 -0
- package/esm2020/data/tree-view/recursive-children.mjs +81 -0
- package/esm2020/data/tree-view/recursive-for-of.mjs +54 -0
- package/esm2020/data/tree-view/tree-features.service.mjs +37 -0
- package/esm2020/data/tree-view/tree-focus-manager.service.mjs +121 -0
- package/esm2020/data/tree-view/tree-node-link.mjs +26 -0
- package/esm2020/data/tree-view/tree-node.mjs +279 -0
- package/esm2020/data/tree-view/tree-view.module.mjs +34 -0
- package/esm2020/data/tree-view/tree.mjs +91 -0
- package/esm2020/emphasis/alert/alert-item.mjs +43 -0
- package/esm2020/emphasis/alert/alert-text.mjs +22 -0
- package/esm2020/emphasis/alert/alert.mjs +119 -0
- package/esm2020/emphasis/alert/alert.module.mjs +34 -0
- package/esm2020/emphasis/alert/alerts-pager.mjs +72 -0
- package/esm2020/emphasis/alert/alerts.mjs +100 -0
- package/{esm2015/emphasis/alert/index.js → esm2020/emphasis/alert/index.mjs} +0 -0
- package/esm2020/emphasis/alert/providers/icon-and-types.service.mjs +74 -0
- package/esm2020/emphasis/alert/providers/multi-alert.service.mjs +96 -0
- package/{esm2015/emphasis/alert/utils/alert-info-object.js → esm2020/emphasis/alert/utils/alert-info-object.mjs} +0 -0
- package/{esm2015/emphasis/alert/utils/alert-types.js → esm2020/emphasis/alert/utils/alert-types.mjs} +0 -0
- package/esm2020/emphasis/emphasis.module.mjs +18 -0
- package/{esm2015/emphasis/index.js → esm2020/emphasis/index.mjs} +0 -0
- package/esm2020/forms/checkbox/checkbox-container.mjs +127 -0
- package/esm2020/forms/checkbox/checkbox-wrapper.mjs +68 -0
- package/esm2020/forms/checkbox/checkbox.mjs +43 -0
- package/esm2020/forms/checkbox/checkbox.module.mjs +33 -0
- package/{esm2015/forms/checkbox/index.js → esm2020/forms/checkbox/index.mjs} +0 -0
- package/esm2020/forms/combobox/combobox-container.mjs +109 -0
- package/esm2020/forms/combobox/combobox.mjs +363 -0
- package/esm2020/forms/combobox/combobox.module.mjs +81 -0
- package/{esm2015/forms/combobox/index.js → esm2020/forms/combobox/index.mjs} +0 -0
- package/{esm2015/forms/combobox/model/combobox.model.js → esm2020/forms/combobox/model/combobox.model.mjs} +0 -0
- package/{esm2015/forms/combobox/model/multi-select-combobox.model.js → esm2020/forms/combobox/model/multi-select-combobox.model.mjs} +0 -0
- package/{esm2015/forms/combobox/model/pseudo-focus.model.js → esm2020/forms/combobox/model/pseudo-focus.model.mjs} +0 -0
- package/{esm2015/forms/combobox/model/single-select-combobox.model.js → esm2020/forms/combobox/model/single-select-combobox.model.mjs} +0 -0
- package/esm2020/forms/combobox/option-items.directive.mjs +97 -0
- package/esm2020/forms/combobox/option-selected.directive.mjs +22 -0
- package/esm2020/forms/combobox/option.mjs +102 -0
- package/esm2020/forms/combobox/options.mjs +152 -0
- package/esm2020/forms/combobox/providers/combobox-container.service.mjs +18 -0
- package/esm2020/forms/combobox/providers/combobox-focus-handler.service.mjs +215 -0
- package/esm2020/forms/combobox/providers/option-selection.service.mjs +81 -0
- package/esm2020/forms/common/abstract-container.mjs +119 -0
- package/esm2020/forms/common/abstract-control.mjs +50 -0
- package/esm2020/forms/common/common.module.mjs +78 -0
- package/esm2020/forms/common/control-container.mjs +83 -0
- package/esm2020/forms/common/control.mjs +27 -0
- package/esm2020/forms/common/error.mjs +36 -0
- package/esm2020/forms/common/form.mjs +53 -0
- package/esm2020/forms/common/helper.mjs +36 -0
- package/esm2020/forms/common/if-control-state/abstract-if-state.mjs +44 -0
- package/esm2020/forms/common/if-control-state/if-control-state.service.mjs +56 -0
- package/esm2020/forms/common/if-control-state/if-error.mjs +68 -0
- package/esm2020/forms/common/if-control-state/if-success.mjs +45 -0
- package/{esm2015/forms/common/index.js → esm2020/forms/common/index.mjs} +0 -0
- package/esm2020/forms/common/label.mjs +67 -0
- package/esm2020/forms/common/layout.mjs +31 -0
- package/esm2020/forms/common/providers/container-id.service.mjs +33 -0
- package/esm2020/forms/common/providers/control-class.service.mjs +52 -0
- package/esm2020/forms/common/providers/control-id.service.mjs +31 -0
- package/esm2020/forms/common/providers/focus.service.mjs +25 -0
- package/esm2020/forms/common/providers/layout.service.mjs +57 -0
- package/esm2020/forms/common/providers/mark-control.service.mjs +25 -0
- package/esm2020/forms/common/providers/ng-control.service.mjs +33 -0
- package/esm2020/forms/common/success.mjs +36 -0
- package/esm2020/forms/common/wrapped-control.mjs +156 -0
- package/esm2020/forms/datalist/datalist-container.mjs +122 -0
- package/esm2020/forms/datalist/datalist-input.mjs +62 -0
- package/esm2020/forms/datalist/datalist.mjs +48 -0
- package/esm2020/forms/datalist/datalist.module.mjs +31 -0
- package/{esm2015/forms/datalist/index.js → esm2020/forms/datalist/index.mjs} +0 -0
- package/esm2020/forms/datalist/providers/datalist-id.service.mjs +31 -0
- package/esm2020/forms/datepicker/calendar.mjs +118 -0
- package/esm2020/forms/datepicker/date-container.mjs +249 -0
- package/esm2020/forms/datepicker/date-input.mjs +290 -0
- package/esm2020/forms/datepicker/datepicker-view-manager.mjs +46 -0
- package/esm2020/forms/datepicker/datepicker.module.mjs +87 -0
- package/esm2020/forms/datepicker/day.mjs +86 -0
- package/esm2020/forms/datepicker/daypicker.mjs +80 -0
- package/{esm2015/forms/datepicker/index.js → esm2020/forms/datepicker/index.mjs} +0 -0
- package/{esm2015/forms/datepicker/interfaces/date-range.interface.js → esm2020/forms/datepicker/interfaces/date-range.interface.mjs} +0 -0
- package/{esm2015/forms/datepicker/interfaces/day-of-week.interface.js → esm2020/forms/datepicker/interfaces/day-of-week.interface.mjs} +0 -0
- package/{esm2015/forms/datepicker/model/calendar-view.model.js → esm2020/forms/datepicker/model/calendar-view.model.mjs} +0 -0
- package/{esm2015/forms/datepicker/model/calendar.model.js → esm2020/forms/datepicker/model/calendar.model.mjs} +0 -0
- package/{esm2015/forms/datepicker/model/day-view.model.js → esm2020/forms/datepicker/model/day-view.model.mjs} +0 -0
- package/{esm2015/forms/datepicker/model/day.model.js → esm2020/forms/datepicker/model/day.model.mjs} +0 -0
- package/{esm2015/forms/datepicker/model/year-range.model.js → esm2020/forms/datepicker/model/year-range.model.mjs} +0 -0
- package/esm2020/forms/datepicker/monthpicker.mjs +125 -0
- package/esm2020/forms/datepicker/providers/date-form-control.service.mjs +36 -0
- package/esm2020/forms/datepicker/providers/date-io.service.mjs +176 -0
- package/esm2020/forms/datepicker/providers/date-navigation.service.mjs +130 -0
- package/esm2020/forms/datepicker/providers/datepicker-enabled.service.mjs +46 -0
- package/esm2020/forms/datepicker/providers/datepicker-focus.service.mjs +47 -0
- package/esm2020/forms/datepicker/providers/locale-helper.service.mjs +101 -0
- package/esm2020/forms/datepicker/providers/view-manager.service.mjs +41 -0
- package/{esm2015/forms/datepicker/utils/constants.js → esm2020/forms/datepicker/utils/constants.mjs} +0 -0
- package/{esm2015/forms/datepicker/utils/date-utils.js → esm2020/forms/datepicker/utils/date-utils.mjs} +0 -0
- package/esm2020/forms/datepicker/yearpicker.mjs +231 -0
- package/esm2020/forms/forms.module.mjs +64 -0
- package/{esm2015/forms/index.js → esm2020/forms/index.mjs} +0 -0
- package/{esm2015/forms/input/index.js → esm2020/forms/input/index.mjs} +0 -0
- package/{esm2015/forms/input/input-container.js → esm2020/forms/input/input-container.mjs} +44 -13
- package/esm2020/forms/input/input.mjs +27 -0
- package/esm2020/forms/input/input.module.mjs +33 -0
- package/{esm2015/forms/password/index.js → esm2020/forms/password/index.mjs} +0 -0
- package/esm2020/forms/password/password-container.mjs +175 -0
- package/esm2020/forms/password/password.mjs +61 -0
- package/esm2020/forms/password/password.module.mjs +32 -0
- package/{esm2015/forms/radio/index.js → esm2020/forms/radio/index.mjs} +0 -0
- package/esm2020/forms/radio/radio-container.mjs +127 -0
- package/esm2020/forms/radio/radio-wrapper.mjs +49 -0
- package/esm2020/forms/radio/radio.mjs +26 -0
- package/esm2020/forms/radio/radio.module.mjs +33 -0
- package/{esm2015/forms/range/index.js → esm2020/forms/range/index.mjs} +0 -0
- package/esm2020/forms/range/range-container.mjs +124 -0
- package/esm2020/forms/range/range.mjs +26 -0
- package/esm2020/forms/range/range.module.mjs +32 -0
- package/{esm2015/forms/select/index.js → esm2020/forms/select/index.mjs} +0 -0
- package/esm2020/forms/select/select-container.mjs +113 -0
- package/esm2020/forms/select/select.mjs +27 -0
- package/esm2020/forms/select/select.module.mjs +32 -0
- package/{esm2015/forms/textarea/index.js → esm2020/forms/textarea/index.mjs} +0 -0
- package/esm2020/forms/textarea/textarea-container.mjs +83 -0
- package/esm2020/forms/textarea/textarea.mjs +27 -0
- package/esm2020/forms/textarea/textarea.module.mjs +32 -0
- package/esm2020/icon/icon.mjs +24 -0
- package/esm2020/icon/icon.module.mjs +20 -0
- package/{esm2015/icon/index.js → esm2020/icon/index.mjs} +0 -0
- package/{esm2015/index.js → esm2020/index.mjs} +0 -0
- package/{esm2015/layout/index.js → esm2020/layout/index.mjs} +0 -0
- package/esm2020/layout/layout.module.mjs +21 -0
- package/{esm2015/layout/main-container/index.js → esm2020/layout/main-container/index.mjs} +0 -0
- package/esm2020/layout/main-container/main-container.mjs +58 -0
- package/esm2020/layout/main-container/main-container.module.mjs +25 -0
- package/{esm2015/layout/nav/chocolate/index.js → esm2020/layout/nav/chocolate/index.mjs} +0 -0
- package/esm2020/layout/nav/chocolate/main-container-willy-wonka.mjs +17 -0
- package/esm2020/layout/nav/chocolate/nav-detection-oompa-loompa.mjs +33 -0
- package/esm2020/layout/nav/header.mjs +120 -0
- package/{esm2015/layout/nav/index.js → esm2020/layout/nav/index.mjs} +0 -0
- package/esm2020/layout/nav/nav-level.mjs +81 -0
- package/esm2020/layout/nav/navigation.module.mjs +40 -0
- package/{esm2015/layout/nav/providers/responsive-navigation.service.js → esm2020/layout/nav/providers/responsive-navigation.service.mjs} +7 -6
- package/{esm2015/layout/nav/responsive-nav-codes.js → esm2020/layout/nav/responsive-nav-codes.mjs} +0 -0
- package/{esm2015/layout/nav/responsive-nav-control-message.js → esm2020/layout/nav/responsive-nav-control-message.mjs} +0 -0
- package/esm2020/layout/tabs/chocolate/active-oompa-loompa.mjs +36 -0
- package/esm2020/layout/tabs/chocolate/tabs-willy-wonka.mjs +17 -0
- package/{esm2015/layout/tabs/enums/tabs-layout.enum.js → esm2020/layout/tabs/enums/tabs-layout.enum.mjs} +0 -0
- package/{esm2015/layout/tabs/index.js → esm2020/layout/tabs/index.mjs} +0 -0
- package/esm2020/layout/tabs/providers/tabs.service.mjs +45 -0
- package/esm2020/layout/tabs/tab-content.mjs +96 -0
- package/esm2020/layout/tabs/tab-link.directive.mjs +115 -0
- package/esm2020/layout/tabs/tab-overflow-content.mjs +22 -0
- package/esm2020/layout/tabs/tab.mjs +47 -0
- package/{esm2015/layout/tabs/tabs-id.provider.js → esm2020/layout/tabs/tabs-id.provider.mjs} +0 -0
- package/esm2020/layout/tabs/tabs.mjs +312 -0
- package/esm2020/layout/tabs/tabs.module.mjs +58 -0
- package/{esm2015/layout/vertical-nav/index.js → esm2020/layout/vertical-nav/index.mjs} +0 -0
- package/esm2020/layout/vertical-nav/providers/vertical-nav-group-registration.service.mjs +24 -0
- package/esm2020/layout/vertical-nav/providers/vertical-nav-group.service.mjs +25 -0
- package/esm2020/layout/vertical-nav/providers/vertical-nav-icon.service.mjs +27 -0
- package/esm2020/layout/vertical-nav/providers/vertical-nav.service.mjs +54 -0
- package/esm2020/layout/vertical-nav/vertical-nav-group-children.mjs +19 -0
- package/esm2020/layout/vertical-nav/vertical-nav-group.mjs +162 -0
- package/esm2020/layout/vertical-nav/vertical-nav-icon.mjs +24 -0
- package/esm2020/layout/vertical-nav/vertical-nav-link.mjs +44 -0
- package/esm2020/layout/vertical-nav/vertical-nav.mjs +79 -0
- package/esm2020/layout/vertical-nav/vertical-nav.module.mjs +49 -0
- package/{esm2015/modal/index.js → esm2020/modal/index.mjs} +0 -0
- package/esm2020/modal/modal-body.mjs +59 -0
- package/esm2020/modal/modal.mjs +145 -0
- package/esm2020/modal/modal.module.mjs +32 -0
- package/esm2020/popover/common/abstract-popover.mjs +123 -0
- package/{esm2015/popover/common/popover-host-anchor.token.js → esm2020/popover/common/popover-host-anchor.token.mjs} +0 -0
- package/{esm2015/popover/common/popover-options.interface.js → esm2020/popover/common/popover-options.interface.mjs} +0 -0
- package/{esm2015/popover/common/popover.js → esm2020/popover/common/popover.mjs} +0 -0
- package/esm2020/popover/dropdown/dropdown-item.mjs +88 -0
- package/esm2020/popover/dropdown/dropdown-menu.mjs +114 -0
- package/esm2020/popover/dropdown/dropdown-trigger.mjs +48 -0
- package/esm2020/popover/dropdown/dropdown.mjs +62 -0
- package/esm2020/popover/dropdown/dropdown.module.mjs +29 -0
- package/{esm2015/popover/dropdown/index.js → esm2020/popover/dropdown/index.mjs} +0 -0
- package/{esm2015/popover/dropdown/menu-positions.js → esm2020/popover/dropdown/menu-positions.mjs} +0 -0
- package/esm2020/popover/dropdown/providers/dropdown-focus-handler.service.mjs +186 -0
- package/esm2020/popover/dropdown/providers/dropdown.service.mjs +33 -0
- package/{esm2015/popover/index.js → esm2020/popover/index.mjs} +0 -0
- package/esm2020/popover/popover.module.mjs +20 -0
- package/{esm2015/popover/signpost/index.js → esm2020/popover/signpost/index.mjs} +0 -0
- package/esm2020/popover/signpost/providers/signpost-focus-manager.service.mjs +23 -0
- package/esm2020/popover/signpost/providers/signpost-id.service.mjs +26 -0
- package/esm2020/popover/signpost/signpost-content.mjs +177 -0
- package/{esm2015/popover/signpost/signpost-positions.js → esm2020/popover/signpost/signpost-positions.mjs} +0 -0
- package/esm2020/popover/signpost/signpost-trigger.mjs +96 -0
- package/esm2020/popover/signpost/signpost.mjs +89 -0
- package/esm2020/popover/signpost/signpost.module.mjs +33 -0
- package/{esm2015/popover/tooltip/index.js → esm2020/popover/tooltip/index.mjs} +0 -0
- package/esm2020/popover/tooltip/providers/tooltip-id.service.mjs +25 -0
- package/esm2020/popover/tooltip/tooltip-content.mjs +132 -0
- package/esm2020/popover/tooltip/tooltip-trigger.mjs +54 -0
- package/esm2020/popover/tooltip/tooltip.mjs +41 -0
- package/esm2020/popover/tooltip/tooltip.module.mjs +28 -0
- package/{esm2015/progress/progress-bars/index.js → esm2020/progress/progress-bars/index.mjs} +0 -0
- package/{esm2015/progress/progress-bars/progress-bar.js → esm2020/progress/progress-bars/progress-bar.mjs} +75 -30
- package/esm2020/progress/progress-bars/progress-bar.module.mjs +24 -0
- package/{esm2015/progress/spinner/index.js → esm2020/progress/spinner/index.mjs} +0 -0
- package/esm2020/progress/spinner/spinner.mjs +83 -0
- package/esm2020/progress/spinner/spinner.module.mjs +24 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/{esm2015/timeline/enums/timeline-layout.enum.js → esm2020/timeline/enums/timeline-layout.enum.mjs} +0 -0
- package/{esm2015/timeline/enums/timeline-step-state.enum.js → esm2020/timeline/enums/timeline-step-state.enum.mjs} +0 -0
- package/{esm2015/timeline/index.js → esm2020/timeline/index.mjs} +0 -0
- package/{esm2015/timeline/interface/icon-attribute.interface.js → esm2020/timeline/interface/icon-attribute.interface.mjs} +0 -0
- package/esm2020/timeline/providers/timeline-icon-attribute.service.mjs +54 -0
- package/esm2020/timeline/timeline-step-description.mjs +20 -0
- package/esm2020/timeline/timeline-step-header.mjs +20 -0
- package/esm2020/timeline/timeline-step-title.mjs +30 -0
- package/esm2020/timeline/timeline-step.mjs +101 -0
- package/esm2020/timeline/timeline.mjs +35 -0
- package/esm2020/timeline/timeline.module.mjs +48 -0
- package/esm2020/utils/a11y/aria-live.service.mjs +163 -0
- package/{esm2015/utils/a11y/index.js → esm2020/utils/a11y/index.mjs} +0 -0
- package/{esm2015/utils/animations/collapse/collapse.js → esm2020/utils/animations/collapse/collapse.mjs} +0 -0
- package/{esm2015/utils/animations/collapse/index.js → esm2020/utils/animations/collapse/index.mjs} +0 -0
- package/{esm2015/utils/animations/constants.js → esm2020/utils/animations/constants.mjs} +0 -0
- package/esm2020/utils/animations/expandable-animation/expandable-animation.mjs +70 -0
- package/esm2020/utils/animations/expandable-animation/expandable-animation.module.mjs +24 -0
- package/{esm2015/utils/animations/expandable-animation/index.js → esm2020/utils/animations/expandable-animation/index.mjs} +0 -0
- package/{esm2015/utils/animations/fade/fade.js → esm2020/utils/animations/fade/fade.mjs} +0 -0
- package/{esm2015/utils/animations/fade/index.js → esm2020/utils/animations/fade/index.mjs} +0 -0
- package/{esm2015/utils/animations/fade-slide/fade-slide.js → esm2020/utils/animations/fade-slide/fade-slide.mjs} +0 -0
- package/{esm2015/utils/animations/fade-slide/index.js → esm2020/utils/animations/fade-slide/index.mjs} +0 -0
- package/{esm2015/utils/animations/index.js → esm2020/utils/animations/index.mjs} +0 -0
- package/{esm2015/utils/animations/slide/index.js → esm2020/utils/animations/slide/index.mjs} +0 -0
- package/{esm2015/utils/animations/slide/slide.js → esm2020/utils/animations/slide/slide.mjs} +0 -0
- package/esm2020/utils/aria/aria.service.mjs +16 -0
- package/{esm2015/utils/breakpoints/breakpoints.js → esm2020/utils/breakpoints/breakpoints.mjs} +0 -0
- package/esm2020/utils/chocolate/oompa-loompa.mjs +32 -0
- package/esm2020/utils/chocolate/willy-wonka.mjs +36 -0
- package/{esm2015/utils/component/is-boolean-attribute-set.js → esm2020/utils/component/is-boolean-attribute-set.mjs} +0 -0
- package/esm2020/utils/conditional/conditional.module.mjs +22 -0
- package/esm2020/utils/conditional/if-active.directive.mjs +104 -0
- package/esm2020/utils/conditional/if-active.service.mjs +77 -0
- package/esm2020/utils/conditional/if-expanded.directive.mjs +92 -0
- package/esm2020/utils/conditional/if-expanded.service.mjs +58 -0
- package/esm2020/utils/conditional/if-open.directive.mjs +87 -0
- package/{esm2015/utils/conditional/index.js → esm2020/utils/conditional/index.mjs} +0 -0
- package/esm2020/utils/dom-adapter/dom-adapter.mjs +52 -0
- package/esm2020/utils/drag-and-drop/drag-and-drop.module.mjs +43 -0
- package/{esm2015/utils/drag-and-drop/drag-event.js → esm2020/utils/drag-and-drop/drag-event.mjs} +0 -0
- package/esm2020/utils/drag-and-drop/drag-handle.mjs +32 -0
- package/esm2020/utils/drag-and-drop/draggable/draggable.mjs +135 -0
- package/esm2020/utils/drag-and-drop/draggable-ghost.mjs +124 -0
- package/esm2020/utils/drag-and-drop/droppable/droppable.mjs +222 -0
- package/esm2020/utils/drag-and-drop/if-dragged.mjs +45 -0
- package/{esm2015/utils/drag-and-drop/index.js → esm2020/utils/drag-and-drop/index.mjs} +0 -0
- package/{esm2015/utils/drag-and-drop/interfaces/drag-event.interface.js → esm2020/utils/drag-and-drop/interfaces/drag-event.interface.mjs} +0 -0
- package/{esm2015/utils/drag-and-drop/interfaces/drop-tolerance.interface.js → esm2020/utils/drag-and-drop/interfaces/drop-tolerance.interface.mjs} +0 -0
- package/{esm2015/utils/drag-and-drop/providers/drag-and-drop-event-bus.service.js → esm2020/utils/drag-and-drop/providers/drag-and-drop-event-bus.service.mjs} +7 -5
- package/esm2020/utils/drag-and-drop/providers/drag-event-listener.service.mjs +179 -0
- package/esm2020/utils/drag-and-drop/providers/drag-handle-registrar.service.mjs +60 -0
- package/esm2020/utils/drag-and-drop/providers/draggable-snapshot.service.mjs +38 -0
- package/esm2020/utils/drag-and-drop/providers/global-drag-mode.service.mjs +26 -0
- package/{esm2015/utils/enums/key-codes.enum.js → esm2020/utils/enums/key-codes.enum.mjs} +0 -0
- package/{esm2015/utils/focus/arrow-key-direction.enum.js → esm2020/utils/focus/arrow-key-direction.enum.mjs} +0 -0
- package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.mjs +84 -0
- package/esm2020/utils/focus/focus-on-view-init/focus-on-view-init.module.mjs +26 -0
- package/{esm2015/utils/focus/focus-on-view-init/focus-on-view-init.provider.js → esm2020/utils/focus/focus-on-view-init/focus-on-view-init.provider.mjs} +0 -0
- package/{esm2015/utils/focus/focus-on-view-init/index.js → esm2020/utils/focus/focus-on-view-init/index.mjs} +0 -0
- package/esm2020/utils/focus/focus.service.mjs +94 -0
- package/esm2020/utils/focus/focusable-item/basic-focusable-item.service.mjs +58 -0
- package/{esm2015/utils/focus/focusable-item/custom-focusable-item-provider.js → esm2020/utils/focus/focusable-item/custom-focusable-item-provider.mjs} +0 -0
- package/{esm2015/utils/focus/focusable-item/focusable-item.js → esm2020/utils/focus/focusable-item/focusable-item.mjs} +0 -0
- package/{esm2015/utils/focus/focusable-item/linkers.js → esm2020/utils/focus/focusable-item/linkers.mjs} +0 -0
- package/{esm2015/utils/focus/key-focus/enums/focus-direction.enum.js → esm2020/utils/focus/key-focus/enums/focus-direction.enum.mjs} +0 -0
- package/{esm2015/utils/focus/key-focus/interfaces.js → esm2020/utils/focus/key-focus/interfaces.mjs} +0 -0
- package/esm2020/utils/focus/key-focus/key-focus-item.mjs +34 -0
- package/esm2020/utils/focus/key-focus/key-focus.mjs +194 -0
- package/esm2020/utils/focus/key-focus/key-focus.module.mjs +26 -0
- package/esm2020/utils/focus/key-focus/roving-tabindex.mjs +102 -0
- package/{esm2015/utils/focus/key-focus/util.js → esm2020/utils/focus/key-focus/util.mjs} +0 -0
- package/{esm2015/utils/focus/wrap-observable.js → esm2020/utils/focus/wrap-observable.mjs} +0 -0
- package/{esm2015/utils/focus-trap/focus-trap-config.interface.js → esm2020/utils/focus-trap/focus-trap-config.interface.mjs} +0 -0
- package/esm2020/utils/focus-trap/focus-trap-tracker.service.mjs +32 -0
- package/esm2020/utils/focus-trap/focus-trap.directive.mjs +156 -0
- package/esm2020/utils/focus-trap/focus-trap.module.mjs +24 -0
- package/{esm2015/utils/focus-trap/index.js → esm2020/utils/focus-trap/index.mjs} +0 -0
- package/{esm2015/utils/forms/validation.js → esm2020/utils/forms/validation.mjs} +0 -0
- package/{esm2015/utils/host-wrapping/dynamic-wrapper.js → esm2020/utils/host-wrapping/dynamic-wrapper.mjs} +0 -0
- package/esm2020/utils/host-wrapping/empty-anchor.mjs +18 -0
- package/{esm2015/utils/host-wrapping/host-wrapper.js → esm2020/utils/host-wrapping/host-wrapper.mjs} +0 -0
- package/esm2020/utils/host-wrapping/host-wrapping.module.mjs +21 -0
- package/{esm2015/utils/i18n/common-strings.default.js → esm2020/utils/i18n/common-strings.default.mjs} +6 -3
- package/{esm2015/utils/i18n/common-strings.interface.js → esm2020/utils/i18n/common-strings.interface.mjs} +1 -1
- package/esm2020/utils/i18n/common-strings.service.mjs +47 -0
- package/{esm2015/utils/i18n/index.js → esm2020/utils/i18n/index.mjs} +0 -0
- package/{esm2015/utils/id-generator/id-generator.service.js → esm2020/utils/id-generator/id-generator.service.mjs} +0 -0
- package/{esm2015/utils/index.js → esm2020/utils/index.mjs} +0 -0
- package/{esm2015/utils/key-codes/key-codes.js → esm2020/utils/key-codes/key-codes.mjs} +0 -0
- package/{esm2015/utils/loading/index.js → esm2020/utils/loading/index.mjs} +0 -0
- package/{esm2015/utils/loading/loading-listener.js → esm2020/utils/loading/loading-listener.mjs} +0 -0
- package/esm2020/utils/loading/loading.mjs +55 -0
- package/esm2020/utils/loading/loading.module.mjs +20 -0
- package/{esm2015/utils/outside-click/index.js → esm2020/utils/outside-click/index.mjs} +0 -0
- package/esm2020/utils/outside-click/outside-click.mjs +46 -0
- package/esm2020/utils/outside-click/outside-click.module.mjs +20 -0
- package/{esm2015/utils/popover/enums/alignment.enum.js → esm2020/utils/popover/enums/alignment.enum.mjs} +0 -0
- package/{esm2015/utils/popover/enums/axis.enum.js → esm2020/utils/popover/enums/axis.enum.mjs} +0 -0
- package/{esm2015/utils/popover/enums/positions.enum.js → esm2020/utils/popover/enums/positions.enum.mjs} +0 -0
- package/{esm2015/utils/popover/enums/side.enum.js → esm2020/utils/popover/enums/side.enum.mjs} +0 -0
- package/{esm2015/utils/popover/enums/viewport-violation.enum.js → esm2020/utils/popover/enums/viewport-violation.enum.mjs} +0 -0
- package/{esm2015/utils/popover/index.js → esm2020/utils/popover/index.mjs} +0 -0
- package/{esm2015/utils/popover/interfaces/popover-content-offset.interface.js → esm2020/utils/popover/interfaces/popover-content-offset.interface.mjs} +0 -0
- package/{esm2015/utils/popover/interfaces/popover-position.interface.js → esm2020/utils/popover/interfaces/popover-position.interface.mjs} +0 -0
- package/{esm2015/utils/popover/interfaces/visibility-coords.interface.js → esm2020/utils/popover/interfaces/visibility-coords.interface.mjs} +0 -0
- package/esm2020/utils/popover/popover-anchor.mjs +26 -0
- package/esm2020/utils/popover/popover-close-button.mjs +52 -0
- package/esm2020/utils/popover/popover-content.mjs +150 -0
- package/esm2020/utils/popover/popover-open-close-button.mjs +43 -0
- package/esm2020/utils/popover/popover.module.mjs +26 -0
- package/esm2020/utils/popover/position-operators.mjs +180 -0
- package/esm2020/utils/popover/providers/popover-events.service.mjs +160 -0
- package/esm2020/utils/popover/providers/popover-position.service.mjs +215 -0
- package/esm2020/utils/popover/providers/popover-toggle.service.mjs +70 -0
- package/esm2020/utils/scrolling/scrolling-service.mjs +30 -0
- package/{esm2015/utils/template-ref/index.js → esm2020/utils/template-ref/index.mjs} +0 -0
- package/esm2020/utils/template-ref/template-ref-container.mjs +29 -0
- package/esm2020/utils/template-ref/template-ref.module.mjs +25 -0
- package/{esm2015/wizard/index.js → esm2020/wizard/index.mjs} +0 -0
- package/esm2020/wizard/providers/button-hub.service.mjs +63 -0
- package/esm2020/wizard/providers/header-actions.service.mjs +37 -0
- package/esm2020/wizard/providers/page-collection.service.mjs +361 -0
- package/esm2020/wizard/providers/wizard-navigation.service.mjs +574 -0
- package/esm2020/wizard/wizard-button.mjs +187 -0
- package/esm2020/wizard/wizard-custom-tags.mjs +16 -0
- package/esm2020/wizard/wizard-header-action.mjs +76 -0
- package/esm2020/wizard/wizard-page-buttons.mjs +19 -0
- package/esm2020/wizard/wizard-page-header-actions.mjs +19 -0
- package/esm2020/wizard/wizard-page-navtitle.mjs +19 -0
- package/esm2020/wizard/wizard-page-title.mjs +19 -0
- package/{esm2015/wizard/wizard-page.js → esm2020/wizard/wizard-page.mjs} +90 -47
- package/esm2020/wizard/wizard-stepnav-item.mjs +128 -0
- package/esm2020/wizard/wizard-stepnav.mjs +48 -0
- package/esm2020/wizard/wizard.mjs +475 -0
- package/esm2020/wizard/wizard.module.mjs +72 -0
- package/fesm2015/clr-angular.mjs +26654 -0
- package/fesm2015/clr-angular.mjs.map +1 -0
- package/{fesm2015/clr-angular.js → fesm2020/clr-angular.mjs} +9876 -7404
- package/fesm2020/clr-angular.mjs.map +1 -0
- package/forms/checkbox/checkbox-container.d.ts +3 -0
- package/forms/checkbox/checkbox-wrapper.d.ts +3 -0
- package/forms/checkbox/checkbox.d.ts +3 -0
- package/forms/checkbox/checkbox.module.d.ts +11 -5
- package/forms/combobox/combobox-container.d.ts +3 -0
- package/forms/combobox/combobox.d.ts +3 -5
- package/forms/combobox/combobox.module.d.ts +18 -5
- package/forms/combobox/option-items.directive.d.ts +3 -0
- package/forms/combobox/option-selected.directive.d.ts +3 -0
- package/forms/combobox/option.d.ts +3 -0
- package/forms/combobox/options.d.ts +3 -0
- package/forms/combobox/providers/combobox-container.service.d.ts +3 -0
- package/forms/combobox/providers/combobox-focus-handler.service.d.ts +4 -1
- package/forms/combobox/providers/option-selection.service.d.ts +3 -0
- package/forms/common/abstract-container.d.ts +3 -0
- package/forms/common/abstract-control.d.ts +3 -5
- package/forms/common/common.module.d.ts +16 -5
- package/forms/common/control-container.d.ts +3 -5
- package/forms/common/control.d.ts +3 -0
- package/forms/common/error.d.ts +3 -5
- package/forms/common/form.d.ts +3 -0
- package/forms/common/helper.d.ts +3 -5
- package/forms/common/if-control-state/abstract-if-state.d.ts +3 -0
- package/forms/common/if-control-state/if-control-state.service.d.ts +3 -0
- package/forms/common/if-control-state/if-error.d.ts +3 -0
- package/forms/common/if-control-state/if-success.d.ts +3 -0
- package/forms/common/label.d.ts +3 -0
- package/forms/common/layout.d.ts +3 -0
- package/forms/common/providers/container-id.service.d.ts +3 -0
- package/forms/common/providers/control-class.service.d.ts +3 -0
- package/forms/common/providers/control-id.service.d.ts +3 -0
- package/forms/common/providers/focus.service.d.ts +3 -0
- package/forms/common/providers/layout.service.d.ts +3 -0
- package/forms/common/providers/mark-control.service.d.ts +3 -0
- package/forms/common/providers/ng-control.service.d.ts +3 -0
- package/forms/common/success.d.ts +3 -5
- package/forms/common/wrapped-control.d.ts +3 -0
- package/forms/datalist/datalist-container.d.ts +3 -5
- package/forms/datalist/datalist-input.d.ts +3 -0
- package/forms/datalist/datalist.d.ts +3 -0
- package/forms/datalist/datalist.module.d.ts +10 -0
- package/forms/datalist/providers/datalist-id.service.d.ts +3 -0
- package/forms/datepicker/calendar.d.ts +3 -0
- package/forms/datepicker/date-container.d.ts +3 -0
- package/forms/datepicker/date-input.d.ts +3 -0
- package/forms/datepicker/datepicker-view-manager.d.ts +3 -0
- package/forms/datepicker/datepicker.module.d.ts +19 -0
- package/forms/datepicker/day.d.ts +3 -0
- package/forms/datepicker/daypicker.d.ts +3 -0
- package/forms/datepicker/monthpicker.d.ts +3 -0
- package/forms/datepicker/providers/date-form-control.service.d.ts +3 -0
- package/forms/datepicker/providers/date-io.service.d.ts +3 -0
- package/forms/datepicker/providers/date-navigation.service.d.ts +3 -0
- package/forms/datepicker/providers/datepicker-enabled.service.d.ts +3 -0
- package/forms/datepicker/providers/datepicker-focus.service.d.ts +3 -0
- package/forms/datepicker/providers/locale-helper.service.d.ts +3 -0
- package/forms/datepicker/providers/view-manager.service.d.ts +3 -0
- package/forms/datepicker/yearpicker.d.ts +3 -0
- package/forms/forms.module.d.ts +16 -0
- package/forms/input/input-container.d.ts +3 -5
- package/forms/input/input.d.ts +3 -0
- package/forms/input/input.module.d.ts +10 -5
- package/forms/password/password-container.d.ts +3 -0
- package/forms/password/password.d.ts +3 -0
- package/forms/password/password.module.d.ts +10 -5
- package/forms/radio/radio-container.d.ts +3 -0
- package/forms/radio/radio-wrapper.d.ts +3 -0
- package/forms/radio/radio.d.ts +3 -0
- package/forms/radio/radio.module.d.ts +11 -5
- package/forms/range/range-container.d.ts +3 -0
- package/forms/range/range.d.ts +3 -0
- package/forms/range/range.module.d.ts +10 -5
- package/forms/select/select-container.d.ts +3 -5
- package/forms/select/select.d.ts +3 -0
- package/forms/select/select.module.d.ts +10 -5
- package/forms/textarea/textarea-container.d.ts +3 -5
- package/forms/textarea/textarea.d.ts +3 -0
- package/forms/textarea/textarea.module.d.ts +10 -5
- package/icon/icon.d.ts +5 -0
- package/icon/icon.module.d.ts +6 -0
- package/layout/layout.module.d.ts +8 -0
- package/layout/main-container/main-container.d.ts +3 -0
- package/layout/main-container/main-container.module.d.ts +7 -0
- package/layout/nav/chocolate/main-container-willy-wonka.d.ts +3 -0
- package/layout/nav/chocolate/nav-detection-oompa-loompa.d.ts +3 -0
- package/layout/nav/header.d.ts +3 -0
- package/layout/nav/nav-level.d.ts +3 -0
- package/layout/nav/navigation.module.d.ts +11 -0
- package/layout/nav/providers/responsive-navigation.service.d.ts +3 -0
- package/layout/tabs/chocolate/active-oompa-loompa.d.ts +3 -0
- package/layout/tabs/chocolate/tabs-willy-wonka.d.ts +3 -0
- package/layout/tabs/providers/tabs.service.d.ts +3 -0
- package/layout/tabs/tab-content.d.ts +3 -0
- package/layout/tabs/tab-link.directive.d.ts +3 -0
- package/layout/tabs/tab-overflow-content.d.ts +3 -0
- package/layout/tabs/tab.d.ts +3 -0
- package/layout/tabs/tabs.d.ts +3 -0
- package/layout/tabs/tabs.module.d.ts +16 -0
- package/layout/vertical-nav/providers/vertical-nav-group-registration.service.d.ts +3 -0
- package/layout/vertical-nav/providers/vertical-nav-group.service.d.ts +3 -0
- package/layout/vertical-nav/providers/vertical-nav-icon.service.d.ts +3 -0
- package/layout/vertical-nav/providers/vertical-nav.service.d.ts +3 -0
- package/layout/vertical-nav/vertical-nav-group-children.d.ts +3 -0
- package/layout/vertical-nav/vertical-nav-group.d.ts +3 -0
- package/layout/vertical-nav/vertical-nav-icon.d.ts +3 -0
- package/layout/vertical-nav/vertical-nav-link.d.ts +3 -0
- package/layout/vertical-nav/vertical-nav.d.ts +3 -0
- package/layout/vertical-nav/vertical-nav.module.d.ts +13 -0
- package/modal/modal-body.d.ts +3 -0
- package/modal/modal.d.ts +3 -0
- package/modal/modal.module.d.ts +10 -0
- package/package.json +24 -12
- package/popover/common/abstract-popover.d.ts +4 -6
- package/popover/dropdown/dropdown-item.d.ts +3 -0
- package/popover/dropdown/dropdown-menu.d.ts +3 -0
- package/popover/dropdown/dropdown-trigger.d.ts +3 -0
- package/popover/dropdown/dropdown.d.ts +3 -0
- package/popover/dropdown/dropdown.module.d.ts +11 -0
- package/popover/dropdown/providers/dropdown-focus-handler.service.d.ts +3 -0
- package/popover/dropdown/providers/dropdown.service.d.ts +3 -0
- package/popover/popover.module.d.ts +7 -0
- package/popover/signpost/providers/signpost-focus-manager.service.d.ts +3 -0
- package/popover/signpost/providers/signpost-id.service.d.ts +3 -0
- package/popover/signpost/signpost-content.d.ts +3 -0
- package/popover/signpost/signpost-trigger.d.ts +3 -0
- package/popover/signpost/signpost.d.ts +3 -0
- package/popover/signpost/signpost.module.d.ts +11 -0
- package/popover/tooltip/providers/tooltip-id.service.d.ts +3 -0
- package/popover/tooltip/tooltip-content.d.ts +3 -0
- package/popover/tooltip/tooltip-trigger.d.ts +3 -0
- package/popover/tooltip/tooltip.d.ts +3 -0
- package/popover/tooltip/tooltip.module.d.ts +10 -0
- package/progress/progress-bars/progress-bar.d.ts +3 -0
- package/progress/progress-bars/progress-bar.module.d.ts +6 -0
- package/progress/spinner/spinner.d.ts +3 -0
- package/progress/spinner/spinner.module.d.ts +6 -0
- package/schematics/add/index.js +9 -9
- package/schematics/add/index.js.map +1 -1
- package/schematics/add/index.spec.js +13 -13
- package/schematics/add/index.spec.js.map +1 -1
- package/schematics/add/schema.json +1 -1
- package/schematics/migration-collection.json +5 -0
- package/schematics/update/update-13.0.0.js +37 -0
- package/schematics/update/update-13.0.0.js.map +1 -0
- package/schematics/update/update-13.0.0.spec.js +71 -0
- package/schematics/update/update-13.0.0.spec.js.map +1 -0
- package/schematics/update/update-3.0.0.js +1 -1
- package/schematics/update/update-3.0.0.js.map +1 -1
- package/schematics/update/update-5.0.0.js +1 -1
- package/schematics/update/update-5.0.0.js.map +1 -1
- package/schematics/update/update-5.0.0.spec.js +4 -4
- package/schematics/update/update-5.0.0.spec.js.map +1 -1
- package/schematics/utility/add-module-import-to-module.js +2 -2
- package/schematics/utility/add-module-import-to-module.js.map +1 -1
- package/schematics/utility/find-app-module.js +2 -2
- package/schematics/utility/find-app-module.js.map +1 -1
- package/schematics/utility/update-json-file.js +1 -1
- package/schematics/utility/update-json-file.js.map +1 -1
- package/src/utils/popover/README.md +139 -0
- package/timeline/providers/timeline-icon-attribute.service.d.ts +3 -0
- package/timeline/timeline-step-description.d.ts +3 -0
- package/timeline/timeline-step-header.d.ts +3 -0
- package/timeline/timeline-step-title.d.ts +3 -0
- package/timeline/timeline-step.d.ts +3 -0
- package/timeline/timeline.d.ts +3 -0
- package/timeline/timeline.module.d.ts +12 -0
- package/utils/a11y/aria-live.service.d.ts +3 -0
- package/utils/animations/expandable-animation/expandable-animation.d.ts +3 -0
- package/utils/animations/expandable-animation/expandable-animation.module.d.ts +6 -0
- package/utils/aria/aria.service.d.ts +3 -0
- package/utils/chocolate/oompa-loompa.d.ts +3 -0
- package/utils/chocolate/willy-wonka.d.ts +3 -0
- package/utils/conditional/conditional.module.d.ts +8 -0
- package/utils/conditional/if-active.directive.d.ts +3 -0
- package/utils/conditional/if-active.service.d.ts +3 -0
- package/utils/conditional/if-expanded.directive.d.ts +3 -0
- package/utils/conditional/if-expanded.service.d.ts +3 -0
- package/utils/conditional/if-open.directive.d.ts +3 -0
- package/utils/dom-adapter/dom-adapter.d.ts +4 -1
- package/utils/drag-and-drop/drag-and-drop.module.d.ts +10 -0
- package/utils/drag-and-drop/drag-handle.d.ts +3 -0
- package/utils/drag-and-drop/draggable/draggable.d.ts +3 -0
- package/utils/drag-and-drop/draggable-ghost.d.ts +3 -0
- package/utils/drag-and-drop/droppable/droppable.d.ts +3 -0
- package/utils/drag-and-drop/if-dragged.d.ts +3 -0
- package/utils/drag-and-drop/providers/drag-and-drop-event-bus.service.d.ts +3 -0
- package/utils/drag-and-drop/providers/drag-event-listener.service.d.ts +3 -0
- package/utils/drag-and-drop/providers/drag-handle-registrar.service.d.ts +3 -0
- package/utils/drag-and-drop/providers/draggable-snapshot.service.d.ts +3 -0
- package/utils/drag-and-drop/providers/global-drag-mode.service.d.ts +3 -0
- package/utils/focus/focus-on-view-init/focus-on-view-init.d.ts +3 -0
- package/utils/focus/focus-on-view-init/focus-on-view-init.module.d.ts +6 -0
- package/utils/focus/focus.service.d.ts +3 -0
- package/utils/focus/focusable-item/basic-focusable-item.service.d.ts +3 -0
- package/utils/focus/key-focus/key-focus-item.d.ts +3 -0
- package/utils/focus/key-focus/key-focus.d.ts +3 -0
- package/utils/focus/key-focus/key-focus.module.d.ts +8 -0
- package/utils/focus/key-focus/roving-tabindex.d.ts +3 -0
- package/utils/focus-trap/focus-trap-tracker.service.d.ts +3 -0
- package/utils/focus-trap/focus-trap.directive.d.ts +3 -0
- package/utils/focus-trap/focus-trap.module.d.ts +6 -0
- package/utils/host-wrapping/empty-anchor.d.ts +3 -5
- package/utils/host-wrapping/host-wrapping.module.d.ts +5 -5
- package/utils/i18n/common-strings.interface.d.ts +8 -0
- package/utils/i18n/common-strings.service.d.ts +3 -0
- package/utils/loading/loading.d.ts +3 -0
- package/utils/loading/loading.module.d.ts +6 -0
- package/utils/outside-click/outside-click.d.ts +3 -0
- package/utils/outside-click/outside-click.module.d.ts +6 -0
- package/utils/popover/popover-anchor.d.ts +3 -0
- package/utils/popover/popover-close-button.d.ts +3 -0
- package/utils/popover/popover-content.d.ts +3 -0
- package/utils/popover/popover-open-close-button.d.ts +3 -0
- package/utils/popover/popover.module.d.ts +8 -0
- package/utils/popover/providers/popover-events.service.d.ts +3 -0
- package/utils/popover/providers/popover-position.service.d.ts +3 -0
- package/utils/popover/providers/popover-toggle.service.d.ts +3 -0
- package/utils/scrolling/scrolling-service.d.ts +3 -0
- package/utils/template-ref/template-ref-container.d.ts +3 -0
- package/utils/template-ref/template-ref.module.d.ts +6 -0
- package/wizard/providers/button-hub.service.d.ts +3 -0
- package/wizard/providers/header-actions.service.d.ts +3 -0
- package/wizard/providers/page-collection.service.d.ts +3 -0
- package/wizard/providers/wizard-navigation.service.d.ts +3 -0
- package/wizard/wizard-button.d.ts +3 -0
- package/wizard/wizard-custom-tags.d.ts +3 -0
- package/wizard/wizard-header-action.d.ts +3 -0
- package/wizard/wizard-page-buttons.d.ts +3 -0
- package/wizard/wizard-page-header-actions.d.ts +3 -0
- package/wizard/wizard-page-navtitle.d.ts +3 -0
- package/wizard/wizard-page-title.d.ts +3 -0
- package/wizard/wizard-page.d.ts +3 -0
- package/wizard/wizard-stepnav-item.d.ts +6 -1
- package/wizard/wizard-stepnav.d.ts +3 -0
- package/wizard/wizard.d.ts +3 -0
- package/wizard/wizard.module.d.ts +18 -0
- package/bundles/clr-angular.umd.js +0 -26123
- package/bundles/clr-angular.umd.js.map +0 -1
- package/clr-angular.metadata.json +0 -1
- package/esm2015/accordion/accordion-content.js +0 -16
- package/esm2015/accordion/accordion-description.js +0 -17
- package/esm2015/accordion/accordion-panel.js +0 -105
- package/esm2015/accordion/accordion-title.js +0 -17
- package/esm2015/accordion/accordion.js +0 -57
- package/esm2015/accordion/accordion.module.js +0 -39
- package/esm2015/accordion/chocolate/accordion-oompa-loompa.js +0 -30
- package/esm2015/accordion/chocolate/accordion-willy-wonka.js +0 -13
- package/esm2015/accordion/providers/accordion.service.js +0 -44
- package/esm2015/accordion/stepper/chocolate/stepper-oompa-loompa.js +0 -30
- package/esm2015/accordion/stepper/chocolate/stepper-willy-wonka.js +0 -13
- package/esm2015/accordion/stepper/providers/stepper.service.js +0 -52
- package/esm2015/accordion/stepper/step-button.js +0 -47
- package/esm2015/accordion/stepper/stepper-panel.js +0 -88
- package/esm2015/accordion/stepper/stepper.js +0 -87
- package/esm2015/accordion/stepper/stepper.module.js +0 -25
- package/esm2015/button/button-group/button-group.js +0 -129
- package/esm2015/button/button-group/button-group.module.js +0 -22
- package/esm2015/button/button-loading/loading-button.js +0 -109
- package/esm2015/button/button-loading/loading-button.module.js +0 -19
- package/esm2015/button/button.module.js +0 -21
- package/esm2015/button/providers/button-in-group.service.js +0 -22
- package/esm2015/clr-angular.js +0 -108
- package/esm2015/clr-angular.module.js +0 -55
- package/esm2015/data/data.module.js +0 -15
- package/esm2015/data/datagrid/built-in/filters/datagrid-numeric-filter.js +0 -169
- package/esm2015/data/datagrid/built-in/filters/datagrid-string-filter.js +0 -111
- package/esm2015/data/datagrid/chocolate/actionable-oompa-loompa.js +0 -30
- package/esm2015/data/datagrid/chocolate/datagrid-willy-wonka.js +0 -13
- package/esm2015/data/datagrid/chocolate/expandable-oompa-loompa.js +0 -30
- package/esm2015/data/datagrid/datagrid-action-bar.js +0 -16
- package/esm2015/data/datagrid/datagrid-action-overflow.js +0 -123
- package/esm2015/data/datagrid/datagrid-cell.js +0 -38
- package/esm2015/data/datagrid/datagrid-column-separator.js +0 -151
- package/esm2015/data/datagrid/datagrid-column-toggle-button.js +0 -53
- package/esm2015/data/datagrid/datagrid-column-toggle-title.js +0 -16
- package/esm2015/data/datagrid/datagrid-column-toggle.js +0 -149
- package/esm2015/data/datagrid/datagrid-column.js +0 -374
- package/esm2015/data/datagrid/datagrid-detail-body.js +0 -22
- package/esm2015/data/datagrid/datagrid-detail-header.js +0 -45
- package/esm2015/data/datagrid/datagrid-detail-registerer.js +0 -31
- package/esm2015/data/datagrid/datagrid-detail.js +0 -52
- package/esm2015/data/datagrid/datagrid-filter.js +0 -131
- package/esm2015/data/datagrid/datagrid-footer.js +0 -58
- package/esm2015/data/datagrid/datagrid-hideable-column.js +0 -97
- package/esm2015/data/datagrid/datagrid-if-detail.js +0 -62
- package/esm2015/data/datagrid/datagrid-if-expanded.service.js +0 -52
- package/esm2015/data/datagrid/datagrid-items-trackby.js +0 -29
- package/esm2015/data/datagrid/datagrid-items.js +0 -63
- package/esm2015/data/datagrid/datagrid-page-size.js +0 -37
- package/esm2015/data/datagrid/datagrid-pagination.js +0 -258
- package/esm2015/data/datagrid/datagrid-placeholder.js +0 -34
- package/esm2015/data/datagrid/datagrid-row-detail.js +0 -81
- package/esm2015/data/datagrid/datagrid-row.js +0 -218
- package/esm2015/data/datagrid/datagrid.js +0 -295
- package/esm2015/data/datagrid/datagrid.module.js +0 -127
- package/esm2015/data/datagrid/enums/column-changes.enum.js +0 -16
- package/esm2015/data/datagrid/providers/column-resizer.service.js +0 -59
- package/esm2015/data/datagrid/providers/columns.service.js +0 -50
- package/esm2015/data/datagrid/providers/detail.service.js +0 -58
- package/esm2015/data/datagrid/providers/display-mode.service.js +0 -35
- package/esm2015/data/datagrid/providers/filters.js +0 -112
- package/esm2015/data/datagrid/providers/global-expandable-rows.js +0 -33
- package/esm2015/data/datagrid/providers/items.js +0 -175
- package/esm2015/data/datagrid/providers/page.js +0 -155
- package/esm2015/data/datagrid/providers/row-action-service.js +0 -27
- package/esm2015/data/datagrid/providers/selection.js +0 -376
- package/esm2015/data/datagrid/providers/sort.js +0 -85
- package/esm2015/data/datagrid/providers/state-debouncer.provider.js +0 -39
- package/esm2015/data/datagrid/providers/state.provider.js +0 -77
- package/esm2015/data/datagrid/providers/table-size.service.js +0 -41
- package/esm2015/data/datagrid/render/cell-renderer.js +0 -82
- package/esm2015/data/datagrid/render/header-renderer.js +0 -133
- package/esm2015/data/datagrid/render/main-renderer.js +0 -199
- package/esm2015/data/datagrid/render/noop-dom-adapter.js +0 -51
- package/esm2015/data/datagrid/render/render-organizer.js +0 -35
- package/esm2015/data/datagrid/render/row-renderer.js +0 -57
- package/esm2015/data/datagrid/utils/datagrid-filter-registrar.js +0 -41
- package/esm2015/data/datagrid/wrapped-cell.js +0 -31
- package/esm2015/data/datagrid/wrapped-column.js +0 -32
- package/esm2015/data/datagrid/wrapped-row.js +0 -32
- package/esm2015/data/stack-view/stack-block.js +0 -146
- package/esm2015/data/stack-view/stack-content-input.js +0 -25
- package/esm2015/data/stack-view/stack-header.js +0 -45
- package/esm2015/data/stack-view/stack-select.js +0 -38
- package/esm2015/data/stack-view/stack-view-custom-tags.js +0 -12
- package/esm2015/data/stack-view/stack-view.js +0 -50
- package/esm2015/data/stack-view/stack-view.module.js +0 -47
- package/esm2015/data/tree-view/recursive-children.js +0 -70
- package/esm2015/data/tree-view/recursive-for-of.js +0 -53
- package/esm2015/data/tree-view/tree-features.service.js +0 -34
- package/esm2015/data/tree-view/tree-focus-manager.service.js +0 -118
- package/esm2015/data/tree-view/tree-node-link.js +0 -25
- package/esm2015/data/tree-view/tree-node.js +0 -252
- package/esm2015/data/tree-view/tree-view.module.js +0 -30
- package/esm2015/data/tree-view/tree.js +0 -78
- package/esm2015/emphasis/alert/alert-item.js +0 -32
- package/esm2015/emphasis/alert/alert-text.js +0 -18
- package/esm2015/emphasis/alert/alert.js +0 -96
- package/esm2015/emphasis/alert/alert.module.js +0 -30
- package/esm2015/emphasis/alert/alerts-pager.js +0 -69
- package/esm2015/emphasis/alert/alerts.js +0 -94
- package/esm2015/emphasis/alert/providers/icon-and-types.service.js +0 -74
- package/esm2015/emphasis/alert/providers/multi-alert.service.js +0 -76
- package/esm2015/emphasis/emphasis.module.js +0 -13
- package/esm2015/forms/checkbox/checkbox-container.js +0 -95
- package/esm2015/forms/checkbox/checkbox-wrapper.js +0 -57
- package/esm2015/forms/checkbox/checkbox.js +0 -40
- package/esm2015/forms/checkbox/checkbox.module.js +0 -29
- package/esm2015/forms/combobox/combobox-container.js +0 -79
- package/esm2015/forms/combobox/combobox.js +0 -329
- package/esm2015/forms/combobox/combobox.module.js +0 -53
- package/esm2015/forms/combobox/option-items.directive.js +0 -96
- package/esm2015/forms/combobox/option-selected.directive.js +0 -21
- package/esm2015/forms/combobox/option.js +0 -91
- package/esm2015/forms/combobox/options.js +0 -125
- package/esm2015/forms/combobox/providers/combobox-container.service.js +0 -15
- package/esm2015/forms/combobox/providers/combobox-focus-handler.service.js +0 -213
- package/esm2015/forms/combobox/providers/option-selection.service.js +0 -78
- package/esm2015/forms/common/abstract-container.js +0 -113
- package/esm2015/forms/common/abstract-control.js +0 -47
- package/esm2015/forms/common/common.module.js +0 -56
- package/esm2015/forms/common/control-container.js +0 -51
- package/esm2015/forms/common/control.js +0 -26
- package/esm2015/forms/common/error.js +0 -32
- package/esm2015/forms/common/form.js +0 -47
- package/esm2015/forms/common/helper.js +0 -32
- package/esm2015/forms/common/if-control-state/abstract-if-state.js +0 -41
- package/esm2015/forms/common/if-control-state/if-control-state.service.js +0 -56
- package/esm2015/forms/common/if-control-state/if-error.js +0 -65
- package/esm2015/forms/common/if-control-state/if-success.js +0 -42
- package/esm2015/forms/common/label.js +0 -61
- package/esm2015/forms/common/layout.js +0 -30
- package/esm2015/forms/common/providers/container-id.service.js +0 -30
- package/esm2015/forms/common/providers/control-class.service.js +0 -50
- package/esm2015/forms/common/providers/control-id.service.js +0 -28
- package/esm2015/forms/common/providers/focus.service.js +0 -22
- package/esm2015/forms/common/providers/layout.service.js +0 -54
- package/esm2015/forms/common/providers/mark-control.service.js +0 -22
- package/esm2015/forms/common/providers/ng-control.service.js +0 -30
- package/esm2015/forms/common/success.js +0 -32
- package/esm2015/forms/common/wrapped-control.js +0 -158
- package/esm2015/forms/datalist/datalist-container.js +0 -79
- package/esm2015/forms/datalist/datalist-input.js +0 -59
- package/esm2015/forms/datalist/datalist.js +0 -46
- package/esm2015/forms/datalist/datalist.module.js +0 -27
- package/esm2015/forms/datalist/providers/datalist-id.service.js +0 -28
- package/esm2015/forms/datepicker/calendar.js +0 -119
- package/esm2015/forms/datepicker/date-container.js +0 -179
- package/esm2015/forms/datepicker/date-input.js +0 -256
- package/esm2015/forms/datepicker/datepicker-view-manager.js +0 -46
- package/esm2015/forms/datepicker/datepicker.module.js +0 -55
- package/esm2015/forms/datepicker/day.js +0 -72
- package/esm2015/forms/datepicker/daypicker.js +0 -84
- package/esm2015/forms/datepicker/monthpicker.js +0 -116
- package/esm2015/forms/datepicker/providers/date-form-control.service.js +0 -33
- package/esm2015/forms/datepicker/providers/date-io.service.js +0 -176
- package/esm2015/forms/datepicker/providers/date-navigation.service.js +0 -127
- package/esm2015/forms/datepicker/providers/datepicker-enabled.service.js +0 -43
- package/esm2015/forms/datepicker/providers/datepicker-focus.service.js +0 -45
- package/esm2015/forms/datepicker/providers/locale-helper.service.js +0 -98
- package/esm2015/forms/datepicker/providers/view-manager.service.js +0 -38
- package/esm2015/forms/datepicker/yearpicker.js +0 -193
- package/esm2015/forms/forms.module.js +0 -39
- package/esm2015/forms/input/input.js +0 -26
- package/esm2015/forms/input/input.module.js +0 -29
- package/esm2015/forms/password/password-container.js +0 -120
- package/esm2015/forms/password/password.js +0 -53
- package/esm2015/forms/password/password.module.js +0 -28
- package/esm2015/forms/radio/radio-container.js +0 -95
- package/esm2015/forms/radio/radio-wrapper.js +0 -39
- package/esm2015/forms/radio/radio.js +0 -25
- package/esm2015/forms/radio/radio.module.js +0 -29
- package/esm2015/forms/range/range-container.js +0 -93
- package/esm2015/forms/range/range.js +0 -25
- package/esm2015/forms/range/range.module.js +0 -28
- package/esm2015/forms/select/select-container.js +0 -82
- package/esm2015/forms/select/select.js +0 -26
- package/esm2015/forms/select/select.module.js +0 -28
- package/esm2015/forms/textarea/textarea-container.js +0 -51
- package/esm2015/forms/textarea/textarea.js +0 -26
- package/esm2015/forms/textarea/textarea.module.js +0 -28
- package/esm2015/icon/icon.js +0 -17
- package/esm2015/icon/icon.module.js +0 -15
- package/esm2015/layout/layout.module.js +0 -16
- package/esm2015/layout/main-container/main-container.js +0 -58
- package/esm2015/layout/main-container/main-container.module.js +0 -20
- package/esm2015/layout/nav/chocolate/main-container-willy-wonka.js +0 -13
- package/esm2015/layout/nav/chocolate/nav-detection-oompa-loompa.js +0 -32
- package/esm2015/layout/nav/header.js +0 -94
- package/esm2015/layout/nav/nav-level.js +0 -79
- package/esm2015/layout/nav/navigation.module.js +0 -29
- package/esm2015/layout/tabs/chocolate/active-oompa-loompa.js +0 -32
- package/esm2015/layout/tabs/chocolate/tabs-willy-wonka.js +0 -13
- package/esm2015/layout/tabs/providers/tabs.service.js +0 -42
- package/esm2015/layout/tabs/tab-content.js +0 -77
- package/esm2015/layout/tabs/tab-link.directive.js +0 -93
- package/esm2015/layout/tabs/tab-overflow-content.js +0 -18
- package/esm2015/layout/tabs/tab.js +0 -42
- package/esm2015/layout/tabs/tabs.js +0 -235
- package/esm2015/layout/tabs/tabs.module.js +0 -42
- package/esm2015/layout/vertical-nav/providers/vertical-nav-group-registration.service.js +0 -21
- package/esm2015/layout/vertical-nav/providers/vertical-nav-group.service.js +0 -22
- package/esm2015/layout/vertical-nav/providers/vertical-nav-icon.service.js +0 -24
- package/esm2015/layout/vertical-nav/providers/vertical-nav.service.js +0 -51
- package/esm2015/layout/vertical-nav/vertical-nav-group-children.js +0 -15
- package/esm2015/layout/vertical-nav/vertical-nav-group.js +0 -158
- package/esm2015/layout/vertical-nav/vertical-nav-icon.js +0 -23
- package/esm2015/layout/vertical-nav/vertical-nav-link.js +0 -36
- package/esm2015/layout/vertical-nav/vertical-nav.js +0 -77
- package/esm2015/layout/vertical-nav/vertical-nav.module.js +0 -37
- package/esm2015/modal/modal-body.js +0 -60
- package/esm2015/modal/modal.js +0 -111
- package/esm2015/modal/modal.module.js +0 -28
- package/esm2015/popover/common/abstract-popover.js +0 -142
- package/esm2015/popover/dropdown/dropdown-item.js +0 -87
- package/esm2015/popover/dropdown/dropdown-menu.js +0 -105
- package/esm2015/popover/dropdown/dropdown-trigger.js +0 -50
- package/esm2015/popover/dropdown/dropdown.js +0 -52
- package/esm2015/popover/dropdown/dropdown.module.js +0 -24
- package/esm2015/popover/dropdown/providers/dropdown-focus-handler.service.js +0 -181
- package/esm2015/popover/dropdown/providers/dropdown.service.js +0 -30
- package/esm2015/popover/popover.module.js +0 -15
- package/esm2015/popover/signpost/providers/signpost-focus-manager.service.js +0 -20
- package/esm2015/popover/signpost/providers/signpost-id.service.js +0 -23
- package/esm2015/popover/signpost/signpost-content.js +0 -150
- package/esm2015/popover/signpost/signpost-trigger.js +0 -95
- package/esm2015/popover/signpost/signpost.js +0 -72
- package/esm2015/popover/signpost/signpost.module.js +0 -29
- package/esm2015/popover/tooltip/providers/tooltip-id.service.js +0 -22
- package/esm2015/popover/tooltip/tooltip-content.js +0 -123
- package/esm2015/popover/tooltip/tooltip-trigger.js +0 -46
- package/esm2015/popover/tooltip/tooltip.js +0 -30
- package/esm2015/popover/tooltip/tooltip.module.js +0 -23
- package/esm2015/progress/progress-bars/progress-bar.module.js +0 -19
- package/esm2015/progress/spinner/spinner.js +0 -63
- package/esm2015/progress/spinner/spinner.module.js +0 -19
- package/esm2015/timeline/providers/timeline-icon-attribute.service.js +0 -54
- package/esm2015/timeline/timeline-step-description.js +0 -16
- package/esm2015/timeline/timeline-step-header.js +0 -16
- package/esm2015/timeline/timeline-step-title.js +0 -26
- package/esm2015/timeline/timeline-step.js +0 -73
- package/esm2015/timeline/timeline.js +0 -29
- package/esm2015/timeline/timeline.module.js +0 -36
- package/esm2015/utils/a11y/aria-live.service.js +0 -161
- package/esm2015/utils/animations/expandable-animation/expandable-animation.js +0 -57
- package/esm2015/utils/animations/expandable-animation/expandable-animation.module.js +0 -18
- package/esm2015/utils/aria/aria.service.js +0 -13
- package/esm2015/utils/chocolate/oompa-loompa.js +0 -33
- package/esm2015/utils/chocolate/willy-wonka.js +0 -33
- package/esm2015/utils/conditional/conditional.module.js +0 -17
- package/esm2015/utils/conditional/if-active.directive.js +0 -100
- package/esm2015/utils/conditional/if-active.service.js +0 -74
- package/esm2015/utils/conditional/if-expanded.directive.js +0 -91
- package/esm2015/utils/conditional/if-expanded.service.js +0 -55
- package/esm2015/utils/conditional/if-open.directive.js +0 -86
- package/esm2015/utils/dom-adapter/dom-adapter.js +0 -49
- package/esm2015/utils/drag-and-drop/drag-and-drop.module.js +0 -30
- package/esm2015/utils/drag-and-drop/drag-handle.js +0 -30
- package/esm2015/utils/drag-and-drop/draggable/draggable.js +0 -119
- package/esm2015/utils/drag-and-drop/draggable-ghost.js +0 -116
- package/esm2015/utils/drag-and-drop/droppable/droppable.js +0 -209
- package/esm2015/utils/drag-and-drop/if-dragged.js +0 -40
- package/esm2015/utils/drag-and-drop/providers/drag-event-listener.service.js +0 -181
- package/esm2015/utils/drag-and-drop/providers/drag-handle-registrar.service.js +0 -61
- package/esm2015/utils/drag-and-drop/providers/draggable-snapshot.service.js +0 -38
- package/esm2015/utils/drag-and-drop/providers/global-drag-mode.service.js +0 -26
- package/esm2015/utils/focus/focus-on-view-init/focus-on-view-init.js +0 -76
- package/esm2015/utils/focus/focus-on-view-init/focus-on-view-init.module.js +0 -21
- package/esm2015/utils/focus/focus.service.js +0 -94
- package/esm2015/utils/focus/focusable-item/basic-focusable-item.service.js +0 -55
- package/esm2015/utils/focus/key-focus/key-focus-item.js +0 -31
- package/esm2015/utils/focus/key-focus/key-focus.js +0 -181
- package/esm2015/utils/focus/key-focus/key-focus.module.js +0 -21
- package/esm2015/utils/focus/key-focus/roving-tabindex.js +0 -100
- package/esm2015/utils/focus-trap/focus-trap-tracker.service.js +0 -30
- package/esm2015/utils/focus-trap/focus-trap.directive.js +0 -154
- package/esm2015/utils/focus-trap/focus-trap.module.js +0 -19
- package/esm2015/utils/host-wrapping/empty-anchor.js +0 -14
- package/esm2015/utils/host-wrapping/host-wrapping.module.js +0 -16
- package/esm2015/utils/i18n/common-strings.service.js +0 -45
- package/esm2015/utils/loading/loading.js +0 -52
- package/esm2015/utils/loading/loading.module.js +0 -15
- package/esm2015/utils/outside-click/outside-click.js +0 -45
- package/esm2015/utils/outside-click/outside-click.module.js +0 -14
- package/esm2015/utils/popover/popover-anchor.js +0 -26
- package/esm2015/utils/popover/popover-close-button.js +0 -51
- package/esm2015/utils/popover/popover-content.js +0 -146
- package/esm2015/utils/popover/popover-open-close-button.js +0 -40
- package/esm2015/utils/popover/popover.module.js +0 -21
- package/esm2015/utils/popover/position-operators.js +0 -171
- package/esm2015/utils/popover/providers/popover-events.service.js +0 -159
- package/esm2015/utils/popover/providers/popover-position.service.js +0 -213
- package/esm2015/utils/popover/providers/popover-toggle.service.js +0 -67
- package/esm2015/utils/scrolling/scrolling-service.js +0 -27
- package/esm2015/utils/template-ref/template-ref-container.js +0 -21
- package/esm2015/utils/template-ref/template-ref.module.js +0 -19
- package/esm2015/wizard/providers/button-hub.service.js +0 -60
- package/esm2015/wizard/providers/header-actions.service.js +0 -37
- package/esm2015/wizard/providers/page-collection.service.js +0 -358
- package/esm2015/wizard/providers/wizard-navigation.service.js +0 -575
- package/esm2015/wizard/wizard-button.js +0 -163
- package/esm2015/wizard/wizard-custom-tags.js +0 -12
- package/esm2015/wizard/wizard-header-action.js +0 -55
- package/esm2015/wizard/wizard-page-buttons.js +0 -18
- package/esm2015/wizard/wizard-page-header-actions.js +0 -18
- package/esm2015/wizard/wizard-page-navtitle.js +0 -18
- package/esm2015/wizard/wizard-page-title.js +0 -18
- package/esm2015/wizard/wizard-stepnav-item.js +0 -100
- package/esm2015/wizard/wizard-stepnav.js +0 -34
- package/esm2015/wizard/wizard.js +0 -438
- package/esm2015/wizard/wizard.module.js +0 -48
- package/fesm2015/clr-angular.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clr-angular.mjs","sources":["../../../projects/angular/src/icon/icon.ts","../../../projects/angular/src/icon/icon.module.ts","../../../projects/angular/src/utils/popover/enums/viewport-violation.enum.ts","../../../projects/angular/src/utils/popover/enums/alignment.enum.ts","../../../projects/angular/src/utils/popover/position-operators.ts","../../../projects/angular/src/utils/popover/enums/axis.enum.ts","../../../projects/angular/src/utils/enums/key-codes.enum.ts","../../../projects/angular/src/utils/focus/key-focus/util.ts","../../../projects/angular/src/utils/popover/providers/popover-toggle.service.ts","../../../projects/angular/src/utils/popover/providers/popover-events.service.ts","../../../projects/angular/src/utils/popover/providers/popover-position.service.ts","../../../projects/angular/src/utils/popover/popover-content.ts","../../../projects/angular/src/utils/popover/popover-open-close-button.ts","../../../projects/angular/src/utils/popover/popover-close-button.ts","../../../projects/angular/src/utils/popover/popover-anchor.ts","../../../projects/angular/src/utils/popover/popover.module.ts","../../../projects/angular/src/utils/loading/loading-listener.ts","../../../projects/angular/src/utils/loading/loading.ts","../../../projects/angular/src/button/providers/button-in-group.service.ts","../../../projects/angular/src/button/button-group/button.ts","../../../projects/angular/src/utils/id-generator/id-generator.service.ts","../../../projects/angular/src/utils/popover/enums/side.enum.ts","../../../projects/angular/src/utils/popover/enums/positions.enum.ts","../../../projects/angular/src/utils/i18n/common-strings.default.ts","../../../projects/angular/src/utils/i18n/common-strings.service.ts","../../../projects/angular/src/button/button-group/button-group.ts","../../../projects/angular/src/button/button-group/button-group.html","../../../projects/angular/src/button/button-group/button-group.module.ts","../../../projects/angular/src/button/button-loading/loading-button.ts","../../../projects/angular/src/button/button-loading/loading-button.module.ts","../../../projects/angular/src/button/button.module.ts","../../../projects/angular/src/utils/host-wrapping/empty-anchor.ts","../../../projects/angular/src/utils/host-wrapping/host-wrapping.module.ts","../../../projects/angular/src/utils/host-wrapping/host-wrapper.ts","../../../projects/angular/src/forms/common/providers/control-id.service.ts","../../../projects/angular/src/forms/common/providers/ng-control.service.ts","../../../projects/angular/src/forms/common/if-control-state/if-control-state.service.ts","../../../projects/angular/src/forms/common/providers/layout.service.ts","../../../projects/angular/src/forms/common/providers/control-class.service.ts","../../../projects/angular/src/forms/common/providers/mark-control.service.ts","../../../projects/angular/src/forms/common/providers/container-id.service.ts","../../../projects/angular/src/forms/common/abstract-control.ts","../../../projects/angular/src/forms/common/wrapped-control.ts","../../../projects/angular/src/forms/common/label.ts","../../../projects/angular/src/forms/common/success.ts","../../../projects/angular/src/forms/common/error.ts","../../../projects/angular/src/forms/common/helper.ts","../../../projects/angular/src/forms/common/abstract-container.ts","../../../projects/angular/src/forms/common/control-container.ts","../../../projects/angular/src/forms/common/control.ts","../../../projects/angular/src/forms/common/form.ts","../../../projects/angular/src/forms/common/if-control-state/abstract-if-state.ts","../../../projects/angular/src/forms/common/if-control-state/if-error.ts","../../../projects/angular/src/forms/common/if-control-state/if-success.ts","../../../projects/angular/src/forms/common/layout.ts","../../../projects/angular/src/forms/common/common.module.ts","../../../projects/angular/src/forms/checkbox/checkbox-wrapper.ts","../../../projects/angular/src/forms/checkbox/checkbox.ts","../../../projects/angular/src/forms/checkbox/checkbox-container.ts","../../../projects/angular/src/forms/checkbox/checkbox.module.ts","../../../projects/angular/src/utils/conditional/if-active.service.ts","../../../projects/angular/src/utils/conditional/if-active.directive.ts","../../../projects/angular/src/utils/conditional/if-open.directive.ts","../../../projects/angular/src/utils/conditional/if-expanded.service.ts","../../../projects/angular/src/utils/conditional/if-expanded.directive.ts","../../../projects/angular/src/utils/conditional/conditional.module.ts","../../../projects/angular/src/utils/focus-trap/focus-trap-tracker.service.ts","../../../projects/angular/src/utils/focus-trap/focus-trap.directive.ts","../../../projects/angular/src/utils/focus-trap/focus-trap.module.ts","../../../projects/angular/src/utils/key-codes/key-codes.ts","../../../projects/angular/src/forms/datepicker/utils/constants.ts","../../../projects/angular/src/forms/datepicker/utils/date-utils.ts","../../../projects/angular/src/forms/datepicker/model/day-view.model.ts","../../../projects/angular/src/forms/datepicker/model/day.model.ts","../../../projects/angular/src/forms/datepicker/model/calendar-view.model.ts","../../../projects/angular/src/forms/datepicker/providers/locale-helper.service.ts","../../../projects/angular/src/forms/datepicker/model/calendar.model.ts","../../../projects/angular/src/forms/datepicker/providers/date-navigation.service.ts","../../../projects/angular/src/forms/datepicker/providers/datepicker-focus.service.ts","../../../projects/angular/src/forms/datepicker/providers/date-io.service.ts","../../../projects/angular/src/forms/datepicker/providers/date-form-control.service.ts","../../../projects/angular/src/forms/datepicker/day.ts","../../../projects/angular/src/forms/datepicker/calendar.ts","../../../projects/angular/src/forms/datepicker/calendar.html","../../../projects/angular/src/forms/common/providers/focus.service.ts","../../../projects/angular/src/utils/breakpoints/breakpoints.ts","../../../projects/angular/src/forms/datepicker/providers/datepicker-enabled.service.ts","../../../projects/angular/src/forms/datepicker/providers/view-manager.service.ts","../../../projects/angular/src/forms/datepicker/monthpicker.ts","../../../projects/angular/src/forms/datepicker/model/year-range.model.ts","../../../projects/angular/src/forms/datepicker/yearpicker.ts","../../../projects/angular/src/forms/datepicker/daypicker.ts","../../../projects/angular/src/forms/datepicker/daypicker.html","../../../projects/angular/src/forms/datepicker/datepicker-view-manager.ts","../../../projects/angular/src/forms/datepicker/datepicker-view-manager.html","../../../projects/angular/src/forms/datepicker/date-container.ts","../../../projects/angular/src/utils/component/is-boolean-attribute-set.ts","../../../projects/angular/src/forms/datepicker/date-input.ts","../../../projects/angular/src/forms/datepicker/datepicker.module.ts","../../../projects/angular/src/forms/input/input-container.ts","../../../projects/angular/src/forms/input/input.ts","../../../projects/angular/src/forms/input/input.module.ts","../../../projects/angular/src/forms/password/password-container.ts","../../../projects/angular/src/forms/password/password.ts","../../../projects/angular/src/forms/password/password.module.ts","../../../projects/angular/src/forms/radio/radio-wrapper.ts","../../../projects/angular/src/forms/radio/radio.ts","../../../projects/angular/src/forms/radio/radio-container.ts","../../../projects/angular/src/forms/radio/radio.module.ts","../../../projects/angular/src/forms/select/select-container.ts","../../../projects/angular/src/forms/select/select.ts","../../../projects/angular/src/forms/select/select.module.ts","../../../projects/angular/src/forms/textarea/textarea-container.ts","../../../projects/angular/src/forms/textarea/textarea.ts","../../../projects/angular/src/forms/textarea/textarea.module.ts","../../../projects/angular/src/forms/range/range-container.ts","../../../projects/angular/src/forms/range/range.ts","../../../projects/angular/src/forms/range/range.module.ts","../../../projects/angular/src/forms/datalist/providers/datalist-id.service.ts","../../../projects/angular/src/forms/datalist/datalist-container.ts","../../../projects/angular/src/forms/datalist/datalist-input.ts","../../../projects/angular/src/forms/datalist/datalist.ts","../../../projects/angular/src/forms/datalist/datalist.module.ts","../../../projects/angular/src/utils/focus/focusable-item/focusable-item.ts","../../../projects/angular/src/utils/focus/focusable-item/custom-focusable-item-provider.ts","../../../projects/angular/src/utils/focus/arrow-key-direction.enum.ts","../../../projects/angular/src/forms/combobox/model/single-select-combobox.model.ts","../../../projects/angular/src/forms/combobox/model/pseudo-focus.model.ts","../../../projects/angular/src/forms/combobox/model/multi-select-combobox.model.ts","../../../projects/angular/src/forms/combobox/providers/option-selection.service.ts","../../../projects/angular/src/forms/combobox/providers/combobox-focus-handler.service.ts","../../../projects/angular/src/forms/combobox/option.ts","../../../projects/angular/src/popover/common/popover-host-anchor.token.ts","../../../projects/angular/src/utils/aria/aria.service.ts","../../../projects/angular/src/progress/spinner/spinner.ts","../../../projects/angular/src/forms/combobox/options.ts","../../../projects/angular/src/forms/combobox/providers/combobox-container.service.ts","../../../projects/angular/src/forms/combobox/combobox-container.ts","../../../projects/angular/src/forms/combobox/option-selected.directive.ts","../../../projects/angular/src/utils/focus/focus.service.ts","../../../projects/angular/src/utils/focus/key-focus/enums/focus-direction.enum.ts","../../../projects/angular/src/utils/focus/key-focus/key-focus-item.ts","../../../projects/angular/src/utils/focus/key-focus/key-focus.ts","../../../projects/angular/src/utils/focus/key-focus/roving-tabindex.ts","../../../projects/angular/src/forms/combobox/combobox.ts","../../../projects/angular/src/forms/combobox/combobox.html","../../../projects/angular/src/forms/combobox/option-items.directive.ts","../../../projects/angular/src/progress/spinner/spinner.module.ts","../../../projects/angular/src/utils/focus/key-focus/key-focus.module.ts","../../../projects/angular/src/forms/combobox/combobox.module.ts","../../../projects/angular/src/forms/forms.module.ts","../../../projects/angular/src/utils/loading/loading.module.ts","../../../projects/angular/src/utils/outside-click/outside-click.ts","../../../projects/angular/src/utils/outside-click/index.ts","../../../projects/angular/src/utils/outside-click/outside-click.module.ts","../../../projects/angular/src/utils/dom-adapter/dom-adapter.ts","../../../projects/angular/src/utils/drag-and-drop/drag-event.ts","../../../projects/angular/src/utils/drag-and-drop/interfaces/drag-event.interface.ts","../../../projects/angular/src/utils/drag-and-drop/providers/drag-and-drop-event-bus.service.ts","../../../projects/angular/src/utils/drag-and-drop/providers/drag-event-listener.service.ts","../../../projects/angular/src/utils/drag-and-drop/providers/draggable-snapshot.service.ts","../../../projects/angular/src/utils/drag-and-drop/draggable-ghost.ts","../../../projects/angular/src/utils/drag-and-drop/if-dragged.ts","../../../projects/angular/src/utils/drag-and-drop/providers/drag-handle-registrar.service.ts","../../../projects/angular/src/utils/drag-and-drop/providers/global-drag-mode.service.ts","../../../projects/angular/src/utils/drag-and-drop/draggable/draggable.ts","../../../projects/angular/src/utils/drag-and-drop/droppable/droppable.ts","../../../projects/angular/src/utils/drag-and-drop/drag-handle.ts","../../../projects/angular/src/utils/drag-and-drop/drag-and-drop.module.ts","../../../projects/angular/src/utils/animations/expandable-animation/expandable-animation.ts","../../../projects/angular/src/utils/animations/expandable-animation/index.ts","../../../projects/angular/src/utils/animations/expandable-animation/expandable-animation.module.ts","../../../projects/angular/src/utils/focus/focus-on-view-init/focus-on-view-init.provider.ts","../../../projects/angular/src/utils/focus/focus-on-view-init/focus-on-view-init.ts","../../../projects/angular/src/utils/focus/focus-on-view-init/focus-on-view-init.module.ts","../../../projects/angular/src/data/datagrid/providers/custom-filter.ts","../../../projects/angular/src/data/datagrid/providers/state-debouncer.provider.ts","../../../projects/angular/src/data/datagrid/providers/page.ts","../../../projects/angular/src/data/datagrid/providers/filters.ts","../../../projects/angular/src/data/datagrid/utils/datagrid-filter-registrar.ts","../../../projects/angular/src/data/datagrid/datagrid-filter.ts","../../../projects/angular/src/data/datagrid/built-in/nested-property.ts","../../../projects/angular/src/data/datagrid/built-in/filters/datagrid-property-string-filter.ts","../../../projects/angular/src/data/datagrid/built-in/filters/datagrid-string-filter-impl.ts","../../../projects/angular/src/data/datagrid/built-in/filters/datagrid-string-filter.ts","../../../projects/angular/src/data/datagrid/built-in/filters/datagrid-property-numeric-filter.ts","../../../projects/angular/src/data/datagrid/built-in/filters/datagrid-numeric-filter-impl.ts","../../../projects/angular/src/data/datagrid/built-in/filters/datagrid-numeric-filter.ts","../../../projects/angular/src/utils/chocolate/willy-wonka.ts","../../../projects/angular/src/utils/chocolate/oompa-loompa.ts","../../../projects/angular/src/data/datagrid/chocolate/datagrid-willy-wonka.ts","../../../projects/angular/src/data/datagrid/providers/row-action-service.ts","../../../projects/angular/src/data/datagrid/chocolate/actionable-oompa-loompa.ts","../../../projects/angular/src/data/datagrid/providers/detail.service.ts","../../../projects/angular/src/data/datagrid/providers/global-expandable-rows.ts","../../../projects/angular/src/data/datagrid/chocolate/expandable-oompa-loompa.ts","../../../projects/angular/src/data/datagrid/built-in/comparators/datagrid-property-comparator.ts","../../../projects/angular/src/data/datagrid/enums/sort-order.enum.ts","../../../projects/angular/src/data/datagrid/wrapped-column.ts","../../../projects/angular/src/data/datagrid/providers/sort.ts","../../../projects/angular/src/data/datagrid/enums/render-step.enum.ts","../../../projects/angular/src/data/datagrid/render/render-organizer.ts","../../../projects/angular/src/data/datagrid/providers/column-resizer.service.ts","../../../projects/angular/src/data/datagrid/providers/table-size.service.ts","../../../projects/angular/src/data/datagrid/datagrid-column-separator.ts","../../../projects/angular/src/data/datagrid/datagrid-column.ts","../../../projects/angular/src/data/datagrid/providers/items.ts","../../../projects/angular/src/data/datagrid/datagrid-items.ts","../../../projects/angular/src/data/datagrid/datagrid-placeholder.ts","../../../projects/angular/src/popover/signpost/providers/signpost-id.service.ts","../../../projects/angular/src/popover/signpost/providers/signpost-focus-manager.service.ts","../../../projects/angular/src/popover/signpost/signpost-trigger.ts","../../../projects/angular/src/popover/signpost/signpost.ts","../../../projects/angular/src/data/datagrid/wrapped-cell.ts","../../../projects/angular/src/data/datagrid/datagrid-cell.ts","../../../projects/angular/src/data/datagrid/enums/display-mode.enum.ts","../../../projects/angular/src/data/datagrid/wrapped-row.ts","../../../projects/angular/src/data/datagrid/enums/selection-type.ts","../../../projects/angular/src/data/datagrid/datagrid-if-expanded.service.ts","../../../projects/angular/src/data/datagrid/providers/selection.ts","../../../projects/angular/src/data/datagrid/providers/display-mode.service.ts","../../../projects/angular/src/data/datagrid/datagrid-row.ts","../../../projects/angular/src/data/datagrid/datagrid-row.html","../../../projects/angular/src/data/datagrid/providers/state.provider.ts","../../../projects/angular/src/data/datagrid/enums/column-changes.enum.ts","../../../projects/angular/src/data/datagrid/providers/columns.service.ts","../../../projects/angular/src/data/datagrid/datagrid.ts","../../../projects/angular/src/data/datagrid/datagrid.html","../../../projects/angular/src/data/datagrid/datagrid-action-bar.ts","../../../projects/angular/src/data/datagrid/datagrid-action-overflow.ts","../../../projects/angular/src/data/datagrid/datagrid-column-toggle-title.ts","../../../projects/angular/src/data/datagrid/datagrid-column-toggle-button.ts","../../../projects/angular/src/data/datagrid/datagrid-items-trackby.ts","../../../projects/angular/src/data/datagrid/datagrid-column-toggle.ts","../../../projects/angular/src/data/datagrid/datagrid-detail-registerer.ts","../../../projects/angular/src/data/datagrid/datagrid-detail-header.ts","../../../projects/angular/src/data/datagrid/datagrid-detail.ts","../../../projects/angular/src/data/datagrid/datagrid-if-detail.ts","../../../projects/angular/src/data/datagrid/datagrid-detail-body.ts","../../../projects/angular/src/data/datagrid/datagrid-footer.ts","../../../projects/angular/src/data/datagrid/providers/column-state.provider.ts","../../../projects/angular/src/data/datagrid/datagrid-hideable-column.ts","../../../projects/angular/src/data/datagrid/datagrid-page-size.ts","../../../projects/angular/src/data/datagrid/datagrid-pagination.ts","../../../projects/angular/src/data/datagrid/datagrid-row-detail.ts","../../../projects/angular/src/data/datagrid/render/constants.ts","../../../projects/angular/src/data/datagrid/render/cell-renderer.ts","../../../projects/angular/src/data/datagrid/render/header-renderer.ts","../../../projects/angular/src/data/datagrid/render/noop-dom-adapter.ts","../../../projects/angular/src/data/datagrid/render/row-renderer.ts","../../../projects/angular/src/data/datagrid/render/main-renderer.ts","../../../projects/angular/src/data/datagrid/datagrid.module.ts","../../../projects/angular/src/data/stack-view/stack-block.ts","../../../projects/angular/src/data/stack-view/stack-view.ts","../../../projects/angular/src/data/stack-view/stack-header.ts","../../../projects/angular/src/data/stack-view/stack-control.ts","../../../projects/angular/src/data/stack-view/stack-input.ts","../../../projects/angular/src/data/stack-view/stack-select.ts","../../../projects/angular/src/data/stack-view/stack-view-custom-tags.ts","../../../projects/angular/src/data/stack-view/stack-content-input.ts","../../../projects/angular/src/data/stack-view/stack-view.module.ts","../../../projects/angular/src/data/tree-view/models/selected-state.enum.ts","../../../projects/angular/src/data/tree-view/models/tree-node.model.ts","../../../projects/angular/src/data/tree-view/models/declarative-tree-node.model.ts","../../../projects/angular/src/data/tree-view/tree-features.service.ts","../../../projects/angular/src/data/tree-view/tree-node-link.ts","../../../projects/angular/src/data/tree-view/tree-focus-manager.service.ts","../../../projects/angular/src/data/tree-view/recursive-children.ts","../../../projects/angular/src/data/tree-view/tree-node.ts","../../../projects/angular/src/data/tree-view/tree-node.html","../../../projects/angular/src/data/tree-view/tree.ts","../../../projects/angular/src/data/tree-view/models/async-array.ts","../../../projects/angular/src/data/tree-view/models/recursive-tree-node.model.ts","../../../projects/angular/src/data/tree-view/recursive-for-of.ts","../../../projects/angular/src/data/tree-view/tree-view.module.ts","../../../projects/angular/src/data/data.module.ts","../../../projects/angular/src/utils/focus/focusable-item/linkers.ts","../../../projects/angular/src/utils/focus/wrap-observable.ts","../../../projects/angular/src/popover/dropdown/providers/dropdown-focus-handler.service.ts","../../../projects/angular/src/popover/dropdown/providers/dropdown.service.ts","../../../projects/angular/src/popover/dropdown/dropdown.ts","../../../projects/angular/src/utils/focus/focusable-item/basic-focusable-item.service.ts","../../../projects/angular/src/popover/dropdown/dropdown-item.ts","../../../projects/angular/src/popover/common/popover.ts","../../../projects/angular/src/popover/common/abstract-popover.ts","../../../projects/angular/src/popover/dropdown/dropdown-menu.ts","../../../projects/angular/src/popover/dropdown/dropdown-trigger.ts","../../../projects/angular/src/popover/dropdown/dropdown.module.ts","../../../projects/angular/src/emphasis/alert/utils/alert-types.ts","../../../projects/angular/src/emphasis/alert/providers/icon-and-types.service.ts","../../../projects/angular/src/emphasis/alert/providers/multi-alert.service.ts","../../../projects/angular/src/emphasis/alert/alert.ts","../../../projects/angular/src/emphasis/alert/alert.html","../../../projects/angular/src/emphasis/alert/alert-item.ts","../../../projects/angular/src/emphasis/alert/alerts-pager.ts","../../../projects/angular/src/emphasis/alert/alerts-pager.html","../../../projects/angular/src/emphasis/alert/alerts.ts","../../../projects/angular/src/emphasis/alert/alerts.html","../../../projects/angular/src/emphasis/alert/alert-text.ts","../../../projects/angular/src/emphasis/alert/alert.module.ts","../../../projects/angular/src/emphasis/emphasis.module.ts","../../../projects/angular/src/layout/nav/responsive-nav-codes.ts","../../../projects/angular/src/layout/nav/responsive-nav-control-message.ts","../../../projects/angular/src/layout/nav/providers/responsive-navigation.service.ts","../../../projects/angular/src/layout/main-container/main-container.ts","../../../projects/angular/src/layout/main-container/main-container.module.ts","../../../projects/angular/src/layout/nav/chocolate/main-container-willy-wonka.ts","../../../projects/angular/src/layout/nav/chocolate/nav-detection-oompa-loompa.ts","../../../projects/angular/src/layout/nav/header.ts","../../../projects/angular/src/layout/nav/nav-level.ts","../../../projects/angular/src/layout/nav/navigation.module.ts","../../../projects/angular/src/utils/template-ref/template-ref-container.ts","../../../projects/angular/src/utils/template-ref/index.ts","../../../projects/angular/src/utils/template-ref/template-ref.module.ts","../../../projects/angular/src/layout/tabs/chocolate/tabs-willy-wonka.ts","../../../projects/angular/src/layout/tabs/chocolate/active-oompa-loompa.ts","../../../projects/angular/src/layout/tabs/enums/tabs-layout.enum.ts","../../../projects/angular/src/layout/tabs/providers/tabs.service.ts","../../../projects/angular/src/layout/tabs/tab-content.ts","../../../projects/angular/src/layout/tabs/tabs-id.provider.ts","../../../projects/angular/src/layout/tabs/tab-link.directive.ts","../../../projects/angular/src/layout/tabs/tab.ts","../../../projects/angular/src/layout/tabs/tab-overflow-content.ts","../../../projects/angular/src/layout/tabs/tabs.ts","../../../projects/angular/src/layout/tabs/tabs.module.ts","../../../projects/angular/src/layout/vertical-nav/providers/vertical-nav-group-registration.service.ts","../../../projects/angular/src/layout/vertical-nav/providers/vertical-nav-icon.service.ts","../../../projects/angular/src/layout/vertical-nav/providers/vertical-nav.service.ts","../../../projects/angular/src/layout/vertical-nav/vertical-nav.ts","../../../projects/angular/src/layout/vertical-nav/vertical-nav.html","../../../projects/angular/src/layout/vertical-nav/providers/vertical-nav-group.service.ts","../../../projects/angular/src/layout/vertical-nav/vertical-nav-group.ts","../../../projects/angular/src/layout/vertical-nav/vertical-nav-group.html","../../../projects/angular/src/layout/vertical-nav/vertical-nav-group-children.ts","../../../projects/angular/src/layout/vertical-nav/vertical-nav-icon.ts","../../../projects/angular/src/layout/vertical-nav/vertical-nav-link.ts","../../../projects/angular/src/layout/vertical-nav/vertical-nav.module.ts","../../../projects/angular/src/layout/layout.module.ts","../../../projects/angular/src/utils/scrolling/scrolling-service.ts","../../../projects/angular/src/modal/modal.ts","../../../projects/angular/src/modal/modal.html","../../../projects/angular/src/modal/modal-body.ts","../../../projects/angular/src/modal/modal.module.ts","../../../projects/angular/src/popover/signpost/signpost-positions.ts","../../../projects/angular/src/popover/signpost/signpost-content.ts","../../../projects/angular/src/popover/signpost/signpost.module.ts","../../../projects/angular/src/popover/tooltip/providers/tooltip-id.service.ts","../../../projects/angular/src/popover/tooltip/tooltip.ts","../../../projects/angular/src/popover/tooltip/tooltip-content.ts","../../../projects/angular/src/popover/tooltip/tooltip-trigger.ts","../../../projects/angular/src/popover/tooltip/tooltip.module.ts","../../../projects/angular/src/popover/popover.module.ts","../../../projects/angular/src/wizard/providers/button-hub.service.ts","../../../projects/angular/src/wizard/providers/page-collection.service.ts","../../../projects/angular/src/wizard/providers/wizard-navigation.service.ts","../../../projects/angular/src/wizard/providers/header-actions.service.ts","../../../projects/angular/src/wizard/wizard-header-action.ts","../../../projects/angular/src/wizard/wizard-page-buttons.ts","../../../projects/angular/src/wizard/wizard-page-header-actions.ts","../../../projects/angular/src/wizard/wizard-page-navtitle.ts","../../../projects/angular/src/wizard/wizard-page-title.ts","../../../projects/angular/src/wizard/wizard-page.ts","../../../projects/angular/src/utils/animations/constants.ts","../../../projects/angular/src/utils/animations/collapse/collapse.ts","../../../projects/angular/src/utils/animations/collapse/index.ts","../../../projects/angular/src/utils/animations/fade/fade.ts","../../../projects/angular/src/utils/animations/fade/index.ts","../../../projects/angular/src/utils/animations/fade-slide/fade-slide.ts","../../../projects/angular/src/utils/animations/fade-slide/index.ts","../../../projects/angular/src/utils/animations/slide/slide.ts","../../../projects/angular/src/utils/animations/slide/index.ts","../../../projects/angular/src/utils/animations/index.ts","../../../projects/angular/src/utils/loading/index.ts","../../../projects/angular/src/utils/conditional/index.ts","../../../projects/angular/src/utils/i18n/index.ts","../../../projects/angular/src/utils/a11y/aria-live.service.ts","../../../projects/angular/src/utils/a11y/index.ts","../../../projects/angular/src/utils/drag-and-drop/index.ts","../../../projects/angular/src/utils/popover/interfaces/popover-position.interface.ts","../../../projects/angular/src/utils/popover/index.ts","../../../projects/angular/src/utils/focus/focus-on-view-init/index.ts","../../../projects/angular/src/utils/focus-trap/index.ts","../../../projects/angular/src/utils/index.ts","../../../projects/angular/src/wizard/wizard-stepnav-item.ts","../../../projects/angular/src/wizard/wizard-stepnav.ts","../../../projects/angular/src/wizard/wizard.ts","../../../projects/angular/src/wizard/wizard.html","../../../projects/angular/src/wizard/wizard-button.ts","../../../projects/angular/src/wizard/wizard-custom-tags.ts","../../../projects/angular/src/wizard/wizard.module.ts","../../../projects/angular/src/accordion/enums/accordion-status.enum.ts","../../../projects/angular/src/accordion/utils/animation.ts","../../../projects/angular/src/accordion/accordion-description.ts","../../../projects/angular/src/accordion/enums/accordion-strategy.enum.ts","../../../projects/angular/src/accordion/models/accordion.model.ts","../../../projects/angular/src/accordion/providers/accordion.service.ts","../../../projects/angular/src/accordion/accordion-panel.ts","../../../projects/angular/src/accordion/accordion-panel.html","../../../projects/angular/src/accordion/accordion-title.ts","../../../projects/angular/src/accordion/accordion.ts","../../../projects/angular/src/accordion/accordion-content.ts","../../../projects/angular/src/accordion/chocolate/accordion-willy-wonka.ts","../../../projects/angular/src/accordion/chocolate/accordion-oompa-loompa.ts","../../../projects/angular/src/accordion/accordion.module.ts","../../../projects/angular/src/utils/forms/validation.ts","../../../projects/angular/src/accordion/stepper/models/stepper.model.ts","../../../projects/angular/src/accordion/stepper/providers/stepper.service.ts","../../../projects/angular/src/accordion/stepper/stepper-panel.ts","../../../projects/angular/src/accordion/stepper/step-button.ts","../../../projects/angular/src/accordion/stepper/stepper.ts","../../../projects/angular/src/accordion/stepper/chocolate/stepper-willy-wonka.ts","../../../projects/angular/src/accordion/stepper/chocolate/stepper-oompa-loompa.ts","../../../projects/angular/src/accordion/stepper/stepper.module.ts","../../../projects/angular/src/progress/progress-bars/progress-bar.ts","../../../projects/angular/src/progress/progress-bars/progress-bar.module.ts","../../../projects/angular/src/timeline/enums/timeline-layout.enum.ts","../../../projects/angular/src/timeline/enums/timeline-step-state.enum.ts","../../../projects/angular/src/timeline/providers/timeline-icon-attribute.service.ts","../../../projects/angular/src/timeline/timeline.ts","../../../projects/angular/src/timeline/timeline-step-title.ts","../../../projects/angular/src/timeline/timeline-step.ts","../../../projects/angular/src/timeline/timeline-step-description.ts","../../../projects/angular/src/timeline/timeline-step-header.ts","../../../projects/angular/src/timeline/timeline.module.ts","../../../projects/angular/src/clr-angular.module.ts","../../../projects/angular/src/button/button-group/index.ts","../../../projects/angular/src/button/button-loading/index.ts","../../../projects/angular/src/button/index.ts","../../../projects/angular/src/data/datagrid/index.ts","../../../projects/angular/src/data/tree-view/index.ts","../../../projects/angular/src/data/stack-view/index.ts","../../../projects/angular/src/data/index.ts","../../../projects/angular/src/emphasis/alert/index.ts","../../../projects/angular/src/emphasis/index.ts","../../../projects/angular/src/forms/common/index.ts","../../../projects/angular/src/forms/checkbox/index.ts","../../../projects/angular/src/forms/combobox/index.ts","../../../projects/angular/src/forms/datalist/index.ts","../../../projects/angular/src/forms/datepicker/index.ts","../../../projects/angular/src/forms/input/index.ts","../../../projects/angular/src/forms/password/index.ts","../../../projects/angular/src/forms/radio/index.ts","../../../projects/angular/src/forms/select/index.ts","../../../projects/angular/src/forms/textarea/index.ts","../../../projects/angular/src/forms/range/index.ts","../../../projects/angular/src/forms/index.ts","../../../projects/angular/src/icon/index.ts","../../../projects/angular/src/layout/main-container/index.ts","../../../projects/angular/src/layout/nav/chocolate/index.ts","../../../projects/angular/src/layout/nav/index.ts","../../../projects/angular/src/layout/tabs/index.ts","../../../projects/angular/src/layout/vertical-nav/index.ts","../../../projects/angular/src/layout/index.ts","../../../projects/angular/src/modal/index.ts","../../../projects/angular/src/popover/dropdown/menu-positions.ts","../../../projects/angular/src/popover/dropdown/index.ts","../../../projects/angular/src/popover/signpost/index.ts","../../../projects/angular/src/popover/tooltip/index.ts","../../../projects/angular/src/popover/index.ts","../../../projects/angular/src/wizard/index.ts","../../../projects/angular/src/accordion/index.ts","../../../projects/angular/src/accordion/stepper/index.ts","../../../projects/angular/src/progress/spinner/index.ts","../../../projects/angular/src/progress/progress-bars/index.ts","../../../projects/angular/src/timeline/index.ts","../../../projects/angular/src/index.ts","../../../projects/angular/src/public-api.ts","../../../projects/angular/src/clr-angular.ts"],"sourcesContent":["/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Directive } from '@angular/core';\n\n@Directive({ selector: 'clr-icon' })\nexport class ClrIconCustomTag {\n // No behavior\n // The only purpose is to \"declare\" the tag in Angular\n}\n\n@Directive({ selector: 'cds-icon' })\nexport class CdsIconCustomTag {\n // No behavior\n // The only purpose is to \"declare\" the tag in Angular\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { CdsIconCustomTag, ClrIconCustomTag } from './icon';\n\nexport const CLR_ICON_DIRECTIVES: Type<any>[] = [ClrIconCustomTag, CdsIconCustomTag];\n\n@NgModule({ imports: [CommonModule], declarations: [CLR_ICON_DIRECTIVES], exports: [CLR_ICON_DIRECTIVES] })\nexport class ClrIconModule {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n *\n */\n\nexport enum ClrViewportViolation {\n BOTTOM = 0,\n LEFT = 1,\n RIGHT = 2,\n TOP = 3,\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n *\n */\n\nexport enum ClrAlignment {\n START = 0,\n CENTER = 0.5,\n END = 1,\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n *\n */\n\nimport { ClrPopoverPosition } from './interfaces/popover-position.interface';\nimport { ClrPopoverContentOffset } from './interfaces/popover-content-offset.interface';\nimport { ClrViewportViolation } from './enums/viewport-violation.enum';\nimport { ClrVisibilityCoords } from './interfaces/visibility-coords.interface';\nimport { ClrAlignment } from './enums/alignment.enum';\n\n// Put the forward arg here but it is only needed when nudging content or anchors.\nexport type ClrTransform = (position: ClrPopoverPosition, back?: boolean) => ClrPopoverPosition;\n\nexport const flipSides: ClrTransform = position => {\n return {\n ...position,\n side: -1 * position.side,\n };\n};\n\n// This could be used in more advanced positioning algorithms.\n// flipAxisFlipSideAndNudgeContent(flipAxis, flipSide, nudge, nudgeForward?): ClrTransform {...}\n// I would like to keep it for now.\nexport const flipAxis: ClrTransform = position => {\n return {\n ...position,\n axis: position.axis === 0 ? 1 : 0,\n };\n};\n\nexport const nudgeContent: ClrTransform = (position, forward) => {\n const nextAlignment = position.content + (forward ? 0.5 : -0.5);\n if (nextAlignment < 0 || nextAlignment > 1) {\n return position;\n } else {\n return {\n ...position,\n content: nextAlignment,\n };\n }\n};\n\nexport function flipSidesAndNudgeContent(flip: ClrTransform, nudge: ClrTransform, nudgeBack?: boolean): ClrTransform {\n return (position: ClrPopoverPosition): ClrPopoverPosition => nudge(flip(position), nudgeBack);\n}\n\nexport function align(position: ClrPopoverPosition, anchor: ClientRect, content: ClientRect): ClrPopoverContentOffset {\n let xDiff = anchor.left;\n let yDiff = anchor.top;\n\n // When ClrAxis is VERTICAL BEFORE = left, AFTER = right\n // When ClrAxis is HORIZONTAL BEFORE is top, AFTER is bottom\n switch (position.axis + position.side) {\n case -1: {\n // ClrAxis.VERTICAL + ClrSide.BEFORE\n xDiff += alignHorizontal(position, anchor, content);\n yDiff -= content.height; // pull content up to the top of the anchor\n break;\n }\n case 1: {\n // ClrAxis.VERTICAL + ClrSide.AFTER\n xDiff += alignHorizontal(position, anchor, content);\n yDiff += anchor.height; // push the content down to below the anchor\n break;\n }\n case 0: {\n // ClrAxis.HORIZONTAL + ClrSide.BEFORE\n xDiff -= content.width; // pull the content left of the anchor\n yDiff += alignVertical(position, anchor, content);\n break;\n }\n case 2: {\n // ClrAxis.HORIZONTAL + ClrSide.AFTER\n xDiff += anchor.width; // push the content right of of the anchor\n yDiff += alignVertical(position, anchor, content);\n break;\n }\n default: {\n break;\n }\n }\n return { xOffset: xDiff, yOffset: yDiff };\n}\n\nfunction alignHorizontal(position: ClrPopoverPosition, anchor: ClientRect, content: ClientRect): number {\n let horizontalOffset = 0;\n // horizontal offset for the anchor position\n switch (position.anchor /*calculate for the anchor alignment*/) {\n case ClrAlignment.START: {\n // nothing to calculate here\n break;\n }\n case ClrAlignment.CENTER: {\n horizontalOffset += anchor.width / 2; // push content over 1/2 anchor width\n break;\n }\n case ClrAlignment.END: {\n horizontalOffset += anchor.width; // push content over width of the anchor\n break;\n }\n default: {\n break;\n }\n }\n\n // horizontal offsets for anchor alignment\n switch (\n position.content // calculate for the content alignment\n ) {\n case ClrAlignment.START: {\n // Nothing to calculate here\n break;\n }\n case ClrAlignment.CENTER: {\n horizontalOffset -= content.width / 2; // pull content left by a value of 1/2 content width\n break;\n }\n case ClrAlignment.END: {\n // subtract the width of currentContent from horizontalOffset to pull it back\n horizontalOffset -= content.width;\n break;\n }\n default: {\n break;\n }\n }\n\n return horizontalOffset;\n}\n\nfunction alignVertical(position: ClrPopoverPosition, anchor: ClientRect, content: ClientRect): number {\n // y axis offsets for anchor alignment\n let verticalOffset = 0;\n\n // Calculate y offset for anchor position\n switch (position.anchor) {\n case ClrAlignment.START: {\n // nothing to calculate here\n break;\n }\n case ClrAlignment.CENTER: {\n verticalOffset += anchor.height / 2; // push content down to the middle of the anchor rect\n break;\n }\n case ClrAlignment.END: {\n verticalOffset += anchor.height; // push content down to the bottom of the anchor\n break;\n }\n default: {\n break;\n }\n }\n\n // Calculate y offsets for content alignment\n switch (position.content) {\n case ClrAlignment.START: {\n // aligned to the top of the content rect\n break;\n }\n case ClrAlignment.CENTER: {\n verticalOffset -= content.height / 2; // pull content back up to the middle of the content rect\n break;\n }\n case ClrAlignment.END: {\n verticalOffset -= content.height; // pull content back up to the bottom of the content rect\n break;\n }\n default: {\n break;\n }\n }\n return verticalOffset;\n}\n\nexport function testVisibility(offset: ClrPopoverContentOffset, content: ClientRect): ClrViewportViolation[] {\n const violations: ClrViewportViolation[] = [];\n const mockCoords: ClrVisibilityCoords = {\n bottom: offset.yOffset + content.height,\n left: offset.xOffset,\n right: offset.xOffset + content.width,\n top: offset.yOffset,\n };\n\n if (!(mockCoords.top >= 0)) {\n violations.push(ClrViewportViolation.TOP);\n }\n if (!(mockCoords.left >= 0)) {\n violations.push(ClrViewportViolation.LEFT);\n }\n if (!(mockCoords.bottom <= (window.innerHeight || document.documentElement.clientHeight))) {\n violations.push(ClrViewportViolation.BOTTOM);\n }\n if (!(mockCoords.right <= (window.innerWidth || document.documentElement.clientWidth))) {\n violations.push(ClrViewportViolation.RIGHT);\n }\n\n return violations;\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n *\n */\n\nexport enum ClrAxis {\n VERTICAL,\n HORIZONTAL,\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum KeyCodes {\n ArrowLeft = 'ArrowLeft',\n ArrowUp = 'ArrowUp',\n ArrowRight = 'ArrowRight',\n ArrowDown = 'ArrowDown',\n Backspace = 'Backspace',\n Tab = 'Tab',\n Enter = 'Enter',\n Escape = 'Escape',\n Space = 'Space',\n Home = 'Home',\n End = 'End',\n}\n\nexport enum IEKeyCodes {\n ArrowUp = 'Up',\n ArrowDown = 'Down',\n ArrowRight = 'Right',\n ArrowLeft = 'Left',\n Space = 'Spacebar',\n Escape = 'Esc',\n Home = 'Home',\n End = 'End',\n Enter = 'Enter',\n Tab = 'Tab',\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { KeyCodes, IEKeyCodes } from './../../enums/key-codes.enum';\n\nexport function keyValidator(key: string) {\n if (key === KeyCodes.ArrowUp || key === IEKeyCodes.ArrowUp) {\n return KeyCodes.ArrowUp;\n } else if (key === KeyCodes.ArrowDown || key === IEKeyCodes.ArrowDown) {\n return KeyCodes.ArrowDown;\n } else if (key === KeyCodes.ArrowRight || key === IEKeyCodes.ArrowRight) {\n return KeyCodes.ArrowRight;\n } else if (key === KeyCodes.ArrowLeft || key === IEKeyCodes.ArrowLeft) {\n return KeyCodes.ArrowLeft;\n } else if (key === KeyCodes.Space || key === IEKeyCodes.Space) {\n return KeyCodes.Space;\n } else if (key === KeyCodes.Escape || key === IEKeyCodes.Escape) {\n return KeyCodes.Escape;\n } else {\n return key;\n }\n}\n\nexport function preventArrowKeyScroll(event: KeyboardEvent) {\n const validKey = keyValidator(event.key);\n\n if (\n validKey === KeyCodes.ArrowUp ||\n validKey === KeyCodes.ArrowDown ||\n validKey === KeyCodes.ArrowLeft ||\n validKey === KeyCodes.ArrowRight\n ) {\n // prevent element container scroll\n // MDN references this is really the only way to prevent native browser interactions\n // https://developer.mozilla.org/en-US/docs/Web/Accessibility/Keyboard-navigable_JavaScript_widgets\n event.preventDefault();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n *\n */\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { preventArrowKeyScroll } from '../../focus/key-focus/util';\n\n@Injectable()\nexport class ClrPopoverToggleService {\n /**\n * Popovers might need to ignore click events on an element\n * (eg: popover opens on focus on an input field. Clicks should be ignored in this case)\n */\n private _open = false;\n private _openChange: Subject<boolean> = new Subject<boolean>();\n private _openEvent: Event;\n private _openEventChange: Subject<Event> = new Subject<Event>();\n\n public get openChange(): Observable<boolean> {\n return this._openChange.asObservable();\n }\n\n public set openEvent(event: Event) {\n this._openEvent = event;\n this._openEventChange.next(event);\n }\n\n public get openEvent(): Event {\n return this._openEvent;\n }\n\n public getEventChange(): Observable<Event> {\n return this._openEventChange.asObservable();\n }\n\n public set open(value: boolean) {\n value = !!value;\n if (this._open !== value) {\n this._open = value;\n this._openChange.next(value);\n }\n }\n\n public get open(): boolean {\n return this._open;\n }\n\n // For compatibility with legacy IfOpenService based implementations\n get originalEvent(): Event {\n return this._openEvent;\n }\n\n /**\n * Sometimes, we need to remember the event that triggered the toggling to avoid loops.\n * This is for instance the case of components that open on a click, but close on a click outside.\n */\n public toggleWithEvent(event: any) {\n preventArrowKeyScroll(event);\n\n this.openEvent = event;\n this.open = !this.open;\n }\n\n private _popoverAligned: Subject<HTMLElement> = new Subject();\n\n public get popoverAligned(): Observable<HTMLElement> {\n return this._popoverAligned.asObservable();\n }\n\n public popoverAlignedEmit(popoverNode: HTMLElement) {\n this._popoverAligned.next(popoverNode);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n *\n */\n\nimport { ElementRef, Injectable, Renderer2, Inject, OnDestroy } from '@angular/core';\nimport { ClrPopoverToggleService } from './popover-toggle.service';\nimport { Observable, fromEvent, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { DOCUMENT } from '@angular/common';\n\n// https://github.com/angular/angular/issues/20351#issuecomment-344009887\n/** @dynamic */\n@Injectable()\nexport class ClrPopoverEventsService implements OnDestroy {\n public outsideClickClose = true;\n public scrollToClose = true;\n private documentClickListener: () => void;\n public ignoredEvent: any;\n private subscriptions: Subscription[] = [];\n\n constructor(\n private renderer: Renderer2,\n private smartOpenService: ClrPopoverToggleService,\n @Inject(DOCUMENT) private document: HTMLDocument\n ) {\n this.subscriptions.push(\n smartOpenService.openChange.subscribe(open => {\n if (open) {\n this.addEscapeListener();\n this.addClickListener();\n this.addScrollListener();\n } else {\n this.removeAllEventListeners();\n }\n }),\n smartOpenService.getEventChange().subscribe(event => {\n // Remember the event that was used to open the content\n this.ignoredEvent = event;\n })\n );\n }\n\n private scrollSubscription: Subscription;\n public addScrollListener() {\n if (this.scrollToClose) {\n this.documentScroller = fromEvent(this.document, 'scroll', { capture: true });\n this.scrollSubscription = this.documentScroller\n .pipe(filter(this.testForSmartPopoverContentContainer))\n .subscribe(() => {\n this.smartOpenService.open = false;\n this.setAnchorFocus();\n });\n } else {\n // I think this is where dynamic re-positioning will be added\n // Instead of testing like we do in the close pipe below\n // we need to switch positioning to use an observable and then\n // debounce the scroll events to recalculate content position in a performant way\n // For now, ignore scrolling events.\n return;\n }\n }\n\n public removeScrollListener() {\n if (this.documentScroller) {\n this.scrollSubscription.unsubscribe();\n delete this.documentScroller;\n }\n }\n\n private testForSmartPopoverContentContainer(event: Event): boolean {\n // Filter for the documentScroller observable event targets\n let target = event.target as HTMLElement;\n\n // Walk up the DOM tree until we get to the element that is a direct child of the body.\n while (target.classList && target.parentElement.localName !== 'body') {\n target = target.parentElement;\n }\n\n // Target is the child element of body where the scroll events originated.\n // Return false and prevent the popover content container from closing for any scroll events inside a popover\n // content container.\n if (target.classList) {\n // check scroll events to see if they are happening in popover content or elsewhere\n return target.classList.contains('clr-popover-content') ? false : true;\n } else {\n // prevents it from closing right after first opening\n return false;\n }\n }\n\n public addClickListener() {\n if (this.outsideClickClose) {\n this.documentClickListener = this.renderer.listen(this.document, 'click', (event: MouseEvent) => {\n if (event === this.ignoredEvent) {\n // Here we ignore the opening click event (w/o this content opens and immediately closes.\n delete this.ignoredEvent;\n } else {\n this.smartOpenService.open = false;\n // Rather than a complex change to the focus trap I put focus on the element that was clicked\n const clickedElement = event.target as HTMLElement;\n clickedElement.focus();\n }\n });\n }\n }\n\n public removeClickListener() {\n if (this.outsideClickClose) {\n delete this.ignoredEvent;\n if (this.documentClickListener) {\n this.documentClickListener();\n delete this.documentClickListener;\n }\n }\n }\n\n private escapeListener: () => void;\n public addEscapeListener() {\n this.escapeListener = this.renderer.listen(this.document, 'keydown.escape', () => {\n this.smartOpenService.open = false;\n this.setAnchorFocus();\n });\n }\n\n public removeEscapeListener() {\n if (this.escapeListener) {\n this.escapeListener();\n delete this.escapeListener;\n }\n }\n\n private _anchorButtonRef: ElementRef;\n public set anchorButtonRef(ref: ElementRef) {\n this._anchorButtonRef = ref;\n }\n public get anchorButtonRef(): ElementRef {\n return this._anchorButtonRef;\n }\n\n private _closeButtonRef: ElementRef;\n public set closeButtonRef(ref: ElementRef) {\n this._closeButtonRef = ref;\n }\n public get closeButtonRef(): ElementRef {\n return this._closeButtonRef;\n }\n\n public setCloseFocus(): void {\n this._closeButtonRef.nativeElement.focus();\n }\n\n public setAnchorFocus(): void {\n this.anchorButtonRef.nativeElement.focus();\n }\n\n private _contentRef: ElementRef;\n public set contentRef(host: ElementRef) {\n this._contentRef = host;\n }\n public get contentRef(): ElementRef {\n return this._contentRef;\n }\n\n private documentScroller: Observable<Event>;\n\n private removeAllEventListeners() {\n this.removeScrollListener();\n this.removeClickListener();\n this.removeEscapeListener();\n }\n ngOnDestroy(): void {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.removeAllEventListeners();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n *\n */\nimport { isPlatformBrowser } from '@angular/common';\nimport { Injectable, PLATFORM_ID, Inject } from '@angular/core';\n\nimport { ClrPopoverEventsService } from './popover-events.service';\nimport { ClrPopoverPosition } from '../interfaces/popover-position.interface';\nimport { ClrPopoverContentOffset } from '../interfaces/popover-content-offset.interface';\nimport { ClrViewportViolation } from '../enums/viewport-violation.enum';\nimport { align, flipSidesAndNudgeContent, flipSides, nudgeContent, testVisibility } from '../position-operators';\nimport { ClrAxis } from '../enums/axis.enum';\nimport { Subject, Observable } from 'rxjs';\n\n@Injectable()\nexport class ClrPopoverPositionService {\n private currentAnchorCoords: ClientRect;\n private currentContentCoords: ClientRect;\n private contentOffsets: ClrPopoverContentOffset;\n private _position: ClrPopoverPosition;\n\n private _shouldRealign: Subject<void> = new Subject();\n shouldRealign: Observable<void> = this._shouldRealign.asObservable();\n\n realign() {\n this._shouldRealign.next();\n }\n\n set position(position: ClrPopoverPosition) {\n this._position = position;\n }\n get position(): ClrPopoverPosition {\n return this._position;\n }\n\n constructor(private eventService: ClrPopoverEventsService, @Inject(PLATFORM_ID) public platformId: any) {}\n\n public alignContent(content: HTMLElement): ClrPopoverContentOffset {\n if (!isPlatformBrowser(this.platformId)) {\n // Only position when in a browser.\n // Default to the browser origin and prevent getBoundingClientRect from running.\n return {\n xOffset: 0,\n yOffset: 0,\n };\n }\n\n this.currentAnchorCoords = this.eventService.anchorButtonRef.nativeElement.getBoundingClientRect();\n this.currentContentCoords = content.getBoundingClientRect();\n this.contentOffsets = align(this.position, this.currentAnchorCoords, this.currentContentCoords);\n\n const visibilityViolations: ClrViewportViolation[] = testVisibility(this.contentOffsets, this.currentContentCoords);\n /**\n * Calculate the sum of viewport errors. This calculation is used below with the provided Axis in the given\n * ClrPopoverPosition. Its worth putting the ClrViewportViolation enum values here:\n *\n * BOTTOM = 0,\n * LEFT = 1,\n * RIGHT = 2,\n * TOP = 3,\n *\n * So, this.visibilityViolations.length tells us how many sides of the viewport that the popover content was\n * clipped on. We can only help when the content has an issue on one or two sides.\n * errorSum is calculated to determine _how_ to change the position. Looking at both the axis and the number\n * of violations I can use the errorSum to determine how to transform the position (on the fly) and adjust\n * where it can be improved.\n *\n * Note, more than 3 viewport violations and there isn't anything we can do to help. Also when there are two\n * violations, we can't help if the violations are TOP+BOTTOM || LEFT+RIGHT => There is no transformation we\n * can make to the postion that will help.\n *\n * Some examples:\n * There is only one error and Primary axis is VERTICAL\n * - this.handleVerticalAxisOneViolation has a switch that will use the error sum to apply the correct\n * transform to the postion based on the reduction of visibilityViolations.\n *\n * There are two errors and Primary axis is HORIZONTAL\n * - handleHorizontalAxisTwoViolations has a switch that uses the error sum to apply both transforms needed to\n * improve the content position based on the reduction of visibilityViolations.\n */\n\n const errorSum = visibilityViolations.reduce((count, current) => {\n return count + current;\n }, 0);\n\n if (visibilityViolations.length === 1 && this.position.axis === ClrAxis.VERTICAL) {\n // When primary axis is VERTICAL and there is one viewport violation\n this.handleVerticalAxisOneViolation(errorSum);\n } else if (visibilityViolations.length === 1 && this.position.axis === ClrAxis.HORIZONTAL) {\n // When primary axis is HORIZONTAL and there is one viewport violation\n this.handleHorizontalAxisOneViolation(errorSum);\n } else if (visibilityViolations.length === 2 && this.position.axis === ClrAxis.VERTICAL) {\n // When primary axis is VERTICAL and there are two viewport violations\n this.handleVerticalAxisTwoViolations(errorSum);\n } else if (visibilityViolations.length === 2 && this.position.axis === ClrAxis.HORIZONTAL) {\n // When primary axis is HORIZONTAL and there are two viewport violations\n this.handleHorizontalAxisTwoViolations(errorSum);\n }\n return this.contentOffsets;\n }\n\n private handleVerticalAxisOneViolation(errorSum: number): void {\n switch (errorSum) {\n case 0:\n case 3: {\n // BOTTOM(0) or TOP(3) are primary violations and we can just flip sides\n this.contentOffsets = align(flipSides(this.position), this.currentAnchorCoords, this.currentContentCoords);\n break;\n }\n case 1: {\n // LEFT(1) is secondary and needs to nudge content right\n this.contentOffsets = align(nudgeContent(this.position), this.currentAnchorCoords, this.currentContentCoords);\n break;\n }\n case 2: {\n // RIGHT(2) is secondary and needs to nudge content left\n this.contentOffsets = align(\n nudgeContent(this.position, true),\n this.currentAnchorCoords,\n this.currentContentCoords\n );\n break;\n }\n default: {\n break;\n }\n }\n }\n\n private handleVerticalAxisTwoViolations(errorSum: number): void {\n switch (errorSum) {\n // We know there are two violations. We can use the errorSum to determine which combination of sides were\n // violated and handle appropriately.\n case 5: {\n // TOP(3)+RIGHT(2) is case 5. We need to flip sides and nudge the content to the left\n const flipAndNudgeLeft = flipSidesAndNudgeContent(flipSides, nudgeContent, true);\n this.contentOffsets = align(\n flipAndNudgeLeft(this.position),\n this.currentAnchorCoords,\n this.currentContentCoords\n );\n break;\n }\n case 4: {\n //TOP(3)+LEFT(1) is case 4, we need to flip sides and nudge content to the right\n const flipAndNudgeRight = flipSidesAndNudgeContent(flipSides, nudgeContent, false);\n this.contentOffsets = align(\n flipAndNudgeRight(this.position),\n this.currentAnchorCoords,\n this.currentContentCoords\n );\n break;\n }\n case 3: {\n // TOP(3)+BOTTOM(0) || left(1)+RIGHT(2) is case 3. There is nothing we can do position wise to improve the\n // placement for this content.\n break;\n }\n case 2: {\n // BOTTOM(0)+RIGHT(2) is case 2. We need to flip sides and nudge the content to the left\n const flipAndNudgeLeft = flipSidesAndNudgeContent(flipSides, nudgeContent, true);\n this.contentOffsets = align(\n flipAndNudgeLeft(this.position),\n this.currentAnchorCoords,\n this.currentContentCoords\n );\n break;\n }\n case 1: {\n // BOTTOM(0)+LEFT(1) is case 1. We need to flip sides and nudge to the right\n const flipAndNudgeRight = flipSidesAndNudgeContent(flipSides, nudgeContent, false);\n this.contentOffsets = align(\n flipAndNudgeRight(this.position),\n this.currentAnchorCoords,\n this.currentContentCoords\n );\n break;\n }\n default: {\n break;\n }\n }\n }\n\n private handleHorizontalAxisOneViolation(errorSum: number): void {\n switch (errorSum) {\n case 1:\n case 2: {\n // LEFT(1) and RIGHT(2) are primary violations so we can flip sides\n this.contentOffsets = align(flipSides(this.position), this.currentAnchorCoords, this.currentContentCoords);\n break;\n }\n case 0: {\n // BOTTOM(0) is a secondary violation and we need to nudge content up\n this.contentOffsets = align(\n nudgeContent(this.position, true),\n this.currentAnchorCoords,\n this.currentContentCoords\n );\n break;\n }\n case 3: {\n // TOP(3) is a secondary violation and we need to nudge content down\n this.contentOffsets = align(nudgeContent(this.position), this.currentAnchorCoords, this.currentContentCoords);\n break;\n }\n default: {\n break;\n }\n }\n }\n\n private handleHorizontalAxisTwoViolations(errorSum: number): void {\n switch (errorSum) {\n case 5:\n case 4: {\n // TOP(3)+LEFT(1) is case 4.\n // TOP(3)+RIGHT(2) is case 5.\n // In both of these cases we need to flip sides and nudge content down\n const flipAndNudgeDown = flipSidesAndNudgeContent(flipSides, nudgeContent, false);\n this.contentOffsets = align(\n flipAndNudgeDown(this.position),\n this.currentAnchorCoords,\n this.currentContentCoords\n );\n break;\n }\n case 3: {\n // TOP(3)+BOTTOM(0) || left(1)+RIGHT(2) is case 3. There is nothing we can do position wise to improve the\n // placement for this content.\n break;\n }\n case 2:\n case 1: {\n // BOTTOM(0)+RIGHT(2) is case 2.\n // BOTTOM(0)+LEFT(1) is case 1.\n // In both cases we need to flip sides and nudge content up\n const flipAndNudgeUp = flipSidesAndNudgeContent(flipSides, nudgeContent, true);\n this.contentOffsets = align(flipAndNudgeUp(this.position), this.currentAnchorCoords, this.currentContentCoords);\n break;\n }\n default: {\n break;\n }\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n *\n */\nimport {\n Directive,\n EmbeddedViewRef,\n Inject,\n Input,\n OnDestroy,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n AfterContentChecked,\n EventEmitter,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { Subscription } from 'rxjs';\n\nimport { ClrPopoverToggleService } from './providers/popover-toggle.service';\nimport { ClrPopoverEventsService } from './providers/popover-events.service';\nimport { ClrPopoverPositionService } from './providers/popover-position.service';\nimport { ClrPopoverPosition } from './interfaces/popover-position.interface';\nimport { debounceTime } from 'rxjs/operators';\n\n// https://github.com/angular/angular/issues/20351#issuecomment-344009887\n/** @dynamic */\n@Directive({ selector: '[clrPopoverContent]' })\nexport class ClrPopoverContent implements AfterContentChecked, OnDestroy {\n private view: EmbeddedViewRef<void>;\n private subscriptions: Subscription[] = [];\n\n @Input('clrPopoverContent')\n public set open(value: boolean) {\n this.smartOpenService.open = !!value;\n }\n\n @Input('clrPopoverContentAt')\n set contentAt(position: ClrPopoverPosition) {\n this.smartPositionService.position = position;\n }\n\n @Input('clrPopoverContentOutsideClickToClose')\n set outsideClickClose(clickToClose: boolean) {\n this.smartEventsService.outsideClickClose = !!clickToClose;\n }\n\n @Input('clrPopoverContentScrollToClose')\n set scrollToClose(scrollToClose: boolean) {\n this.smartEventsService.scrollToClose = !!scrollToClose;\n }\n\n constructor(\n @Inject(DOCUMENT) private document: HTMLDocument,\n private container: ViewContainerRef,\n private template: TemplateRef<any>,\n private renderer: Renderer2,\n private smartPositionService: ClrPopoverPositionService,\n private smartEventsService: ClrPopoverEventsService,\n private smartOpenService: ClrPopoverToggleService\n ) {}\n\n ngAfterViewInit() {\n this.subscriptions.push(\n this.smartOpenService.openChange.subscribe(change => {\n if (change) {\n this.addContent();\n } else {\n this.removeContent();\n }\n }),\n this.smartPositionService.shouldRealign.subscribe(() => {\n this.shouldRealign = true;\n // Avoid flickering on initialization, caused by the asynchronous nature of the\n // check-collector pattern.\n if (this.view) {\n this.renderer.setStyle(this.view.rootNodes[0], 'opacity', '0');\n }\n }),\n // Here we collect subsequent synchronously received content-check events and only take action\n // at the end of the cycle. See below for details on the check-collector pattern.\n this.checkCollector.pipe(debounceTime(0)).subscribe(() => {\n this.alignContent();\n this.shouldRealign = false;\n if (this.view) {\n this.renderer.setStyle(this.view.rootNodes[0], 'opacity', '1');\n }\n })\n );\n }\n\n ngOnDestroy() {\n this.removeContent();\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n private removeContent(): void {\n if (!this.view) {\n return;\n }\n this.view.rootNodes.forEach(node => this.renderer.removeChild(this.document.body, node));\n this.container.clear();\n delete this.view;\n }\n\n /**\n * TODO(matt): investigate why DebugElement retains a reference to the nodes and causes a memory leak.\n * A note about the use of appendChild/removeChild\n * The DebugElement is keeping a reference to the detached node and its unclear why.\n * This does warrant further investigation. But, since it doesn't happen in production mode\n * it is a low priority issue for now.\n */\n private addContent() {\n // Create the view container\n this.view = this.container.createEmbeddedView(this.template);\n this.smartEventsService.contentRef = this.view.rootNodes[0]; // So we know where/what to set close focus on\n this.renderer.addClass(this.view.rootNodes[0], 'clr-popover-content');\n // Reset to the begining of the document to be available for sizing/positioning calculations.\n // If we add new content to the bottom it triggers changes in the layout that may lead to false anchor\n // coordinates values.\n this.renderer.setStyle(this.view.rootNodes[0], 'top', '0px');\n this.renderer.setStyle(this.view.rootNodes[0], 'left', '0px');\n // We need to hide it during the calculation phase, while it's not yet finally positioned.\n this.renderer.setStyle(this.view.rootNodes[0], 'opacity', '0');\n this.renderer.listen(this.view.rootNodes[0], 'click', event => {\n this.smartOpenService.openEvent = event;\n });\n this.view.rootNodes.forEach(node => {\n this.renderer.appendChild(this.document.body, node);\n });\n // Mark for realingment on the next content-check cycle.\n this.shouldRealign = true;\n }\n\n private shouldRealign = false;\n\n // Check-collector pattern:\n // In order to get accurate content height/width values, we cannot calculate alignment offsets until\n // after the projected content has stabilized.\n // As multiple check events may happen in the same rendering cycle, we need to collect all events\n // and only act after the content is really stable. Or we may get wrong intermediate positioning values.\n // We will channel subsequent content check events through this observable.\n private checkCollector: EventEmitter<void> = new EventEmitter();\n\n ngAfterContentChecked(): void {\n if (this.smartOpenService.open && this.view && this.shouldRealign) {\n // Channel content-check event through the check-collector\n this.checkCollector.emit();\n }\n }\n\n private alignContent() {\n if (!this.view) {\n return;\n }\n const positionCoords = this.smartPositionService.alignContent(this.view.rootNodes[0]);\n this.renderer.setStyle(this.view.rootNodes[0], 'top', `${positionCoords.yOffset}px`);\n this.renderer.setStyle(this.view.rootNodes[0], 'left', `${positionCoords.xOffset}px`);\n this.smartOpenService.popoverAlignedEmit(this.view.rootNodes[0]);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n *\n */\n\nimport { Directive, EventEmitter, HostListener, OnDestroy, Output } from '@angular/core';\nimport { ClrPopoverToggleService } from './providers/popover-toggle.service';\nimport { Subscription } from 'rxjs';\n\n@Directive({\n selector: '[clrPopoverOpenCloseButton]',\n host: {\n '[class.clr-smart-open-close]': 'true',\n },\n})\nexport class ClrPopoverOpenCloseButton implements OnDestroy {\n private subscriptions: Subscription[] = [];\n\n constructor(private smartOpenService: ClrPopoverToggleService) {\n this.subscriptions.push(\n this.smartOpenService.openChange.subscribe(change => {\n this.openCloseChange.next(change);\n })\n );\n }\n\n @Output('clrPopoverOpenCloseChange') openCloseChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n @HostListener('click', ['$event'])\n handleClick(event: MouseEvent) {\n this.smartOpenService.toggleWithEvent(event);\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n *\n */\n\nimport { Directive, ElementRef, EventEmitter, Output, HostListener, OnDestroy, AfterViewInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ClrPopoverEventsService } from './providers/popover-events.service';\nimport { ClrPopoverToggleService } from './providers/popover-toggle.service';\nimport { filter } from 'rxjs/operators';\n\n@Directive({\n selector: '[clrPopoverCloseButton]',\n host: {\n '[class.clr-smart-close-button]': 'true',\n },\n})\nexport class ClrPopoverCloseButton implements OnDestroy, AfterViewInit {\n private subscriptions: Subscription[] = [];\n\n constructor(\n private elementRef: ElementRef,\n private smartEventsService: ClrPopoverEventsService,\n private smartOpenService: ClrPopoverToggleService\n ) {\n this.subscriptions.push(\n smartOpenService.openChange.pipe(filter(value => !value)).subscribe(() => {\n this.closeChange.next();\n })\n );\n }\n\n @Output('clrPopoverOnCloseChange') closeChange: EventEmitter<void> = new EventEmitter<void>();\n\n @HostListener('click', ['$event'])\n handleClick(event: MouseEvent) {\n this.smartOpenService.toggleWithEvent(event);\n this.smartEventsService.setAnchorFocus();\n }\n\n ngAfterViewInit() {\n this.smartEventsService.closeButtonRef = this.elementRef;\n this.smartEventsService.setCloseFocus();\n }\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n *\n */\n\nimport { Directive, ElementRef } from '@angular/core';\nimport { ClrPopoverEventsService } from './providers/popover-events.service';\n\n@Directive({\n selector: '[clrPopoverAnchor]',\n host: {\n '[class.clr-anchor]': 'true',\n },\n})\nexport class ClrPopoverAnchor {\n constructor(smartEventService: ClrPopoverEventsService, element: ElementRef) {\n smartEventService.anchorButtonRef = element;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n *\n */\n\nimport { NgModule } from '@angular/core';\nimport { ClrPopoverContent } from './popover-content';\nimport { ClrPopoverOpenCloseButton } from './popover-open-close-button';\nimport { ClrPopoverCloseButton } from './popover-close-button';\nimport { ClrPopoverAnchor } from './popover-anchor';\n\n@NgModule({\n imports: [],\n declarations: [ClrPopoverAnchor, ClrPopoverCloseButton, ClrPopoverOpenCloseButton, ClrPopoverContent],\n exports: [ClrPopoverAnchor, ClrPopoverCloseButton, ClrPopoverOpenCloseButton, ClrPopoverContent],\n})\nexport class ClrPopoverModuleNext {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ClrLoadingState } from './loading';\n\n/**\n * This is an abstract class because we need it to still be a valid token for dependency injection after transpiling.\n * This does not mean you should extend it, simply implementing it is fine.\n */\nexport abstract class LoadingListener {\n abstract loadingStateChange(state: ClrLoadingState | string): void;\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Directive, Input, OnDestroy, Optional } from '@angular/core';\n\nimport { LoadingListener } from './loading-listener';\n\nexport enum ClrLoadingState {\n DEFAULT,\n LOADING,\n SUCCESS,\n ERROR,\n}\n\n@Directive({ selector: '[clrLoading]' })\nexport class ClrLoading implements OnDestroy {\n public static ngAcceptInputType_loadingState: boolean | ClrLoadingState | null | string;\n\n // We find the first parent that handles something loading\n constructor(@Optional() private listener: LoadingListener) {}\n\n private _loadingState: ClrLoadingState | string = ClrLoadingState.DEFAULT;\n\n public get loadingState() {\n return this._loadingState;\n }\n\n @Input('clrLoading')\n public set loadingState(value: boolean | string | ClrLoadingState) {\n if (value === true) {\n value = ClrLoadingState.LOADING;\n } else if (!value) {\n value = ClrLoadingState.DEFAULT;\n }\n\n if (value === this._loadingState) {\n return;\n }\n\n this._loadingState = value;\n if (this.listener) {\n this.listener.loadingStateChange(value);\n }\n }\n\n ngOnDestroy() {\n this.loadingState = ClrLoadingState.DEFAULT;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\nimport { ClrButton } from '../button-group/button';\n\n@Injectable()\nexport class ButtonInGroupService {\n private _changes: Subject<ClrButton> = new Subject<ClrButton>();\n\n get changes(): Observable<ClrButton> {\n return this._changes.asObservable();\n }\n\n updateButtonGroup(button: ClrButton): void {\n this._changes.next(button);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, EventEmitter, Input, Optional, Output, SkipSelf, TemplateRef, ViewChild } from '@angular/core';\n\nimport { ClrLoadingState } from '../../utils/loading/loading';\nimport { LoadingListener } from '../../utils/loading/loading-listener';\nimport { ButtonInGroupService } from '../providers/button-in-group.service';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\n\n@Component({\n selector: 'clr-button',\n template: `\n <ng-template #buttonProjectedRef>\n <button\n [class]=\"classNames\"\n (click)=\"emitClick($event)\"\n [attr.type]=\"type\"\n [attr.name]=\"name\"\n [attr.disabled]=\"disabled\"\n [attr.id]=\"id\"\n >\n <span class=\"spinner spinner-inline\" *ngIf=\"loading\"></span>\n <ng-content></ng-content>\n </button>\n </ng-template>\n `,\n providers: [{ provide: LoadingListener, useExisting: ClrButton }],\n})\nexport class ClrButton implements LoadingListener {\n private _enableService = false;\n\n @ViewChild('buttonProjectedRef', { static: true })\n templateRef: TemplateRef<ClrButton>;\n\n constructor(\n @SkipSelf()\n @Optional()\n public buttonInGroupService: ButtonInGroupService,\n private toggleService: ClrPopoverToggleService\n ) {}\n\n private _inMenu = false;\n\n get inMenu(): boolean {\n return this._inMenu;\n }\n\n @Input('clrInMenu')\n set inMenu(value: boolean) {\n value = !!value;\n if (this._inMenu !== value) {\n this._inMenu = value;\n // We check if the service flag is enabled\n // and if the service exists because the service is optional\n if (this._enableService && this.buttonInGroupService) {\n this.buttonInGroupService.updateButtonGroup(this);\n }\n }\n }\n\n private _classNames = 'btn';\n\n get classNames(): string {\n return this._classNames;\n }\n\n @Input('class')\n set classNames(value: string) {\n if (typeof value === 'string') {\n const classNames: string[] = value.split(' ');\n if (classNames.indexOf('btn') === -1) {\n classNames.push('btn');\n }\n this._classNames = classNames.join(' ');\n }\n }\n\n private _name: string = null;\n\n get name(): string {\n return this._name;\n }\n\n @Input('name')\n set name(value: string) {\n if (typeof value === 'string') {\n this._name = value;\n }\n }\n\n private _type: string = null;\n\n get type(): string {\n return this._type;\n }\n\n @Input('type')\n set type(value: string) {\n if (typeof value === 'string') {\n this._type = value;\n }\n }\n\n private _id: string = null;\n\n get id(): string {\n return this._id;\n }\n\n @Input('id')\n set id(value: string) {\n if (typeof value === 'string') {\n this._id = value;\n }\n }\n\n private _disabled: any = null;\n\n get disabled(): any {\n return this._disabled;\n }\n\n @Input('disabled')\n set disabled(value: any) {\n if (value !== null && value !== false) {\n this._disabled = '';\n } else {\n this._disabled = null;\n }\n }\n\n public loading: boolean;\n\n loadingStateChange(state: ClrLoadingState): void {\n this.loading = state === ClrLoadingState.LOADING;\n }\n\n @Output('click') _click: EventEmitter<boolean> = new EventEmitter<boolean>(false);\n\n emitClick($event: Event): void {\n if (this.inMenu) {\n this.toggleService.toggleWithEvent($event);\n }\n this._click.emit(true);\n }\n\n ngAfterViewInit() {\n this._enableService = true;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { InjectionToken } from '@angular/core';\n\nlet NB_INSTANCES = 0;\n\nexport const UNIQUE_ID = new InjectionToken<string>('UNIQUE_ID');\n\nexport function uniqueIdFactory() {\n return 'clr-id-' + NB_INSTANCES++;\n}\n\nexport const UNIQUE_ID_PROVIDER = {\n provide: UNIQUE_ID,\n useFactory: uniqueIdFactory,\n};\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n *\n */\n\nexport enum ClrSide {\n BEFORE = -1,\n AFTER = 1,\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n *\n */\n\nimport { ClrAxis } from './axis.enum';\nimport { ClrSide } from './side.enum';\nimport { ClrAlignment } from './alignment.enum';\n\ninterface ClrPopoverPositionsInterface {\n axis: ClrAxis;\n side: ClrSide;\n anchor: ClrAlignment;\n content: ClrAlignment;\n}\n\nexport interface ClrPopoverPositions {\n [key: string]: any;\n}\n\nexport class ClrPopoverPositions {\n static 'top-right': ClrPopoverPositionsInterface = {\n axis: ClrAxis.VERTICAL,\n side: ClrSide.BEFORE,\n anchor: ClrAlignment.END,\n content: ClrAlignment.END,\n };\n\n static 'top-left': ClrPopoverPositionsInterface = {\n axis: ClrAxis.VERTICAL,\n side: ClrSide.BEFORE,\n anchor: ClrAlignment.START,\n content: ClrAlignment.START,\n };\n\n static 'bottom-right': ClrPopoverPositionsInterface = {\n axis: ClrAxis.VERTICAL,\n side: ClrSide.AFTER,\n anchor: ClrAlignment.END,\n content: ClrAlignment.END,\n };\n\n static 'bottom-left': ClrPopoverPositionsInterface = {\n axis: ClrAxis.VERTICAL,\n side: ClrSide.AFTER,\n anchor: ClrAlignment.START,\n content: ClrAlignment.START,\n };\n\n static 'right-top': ClrPopoverPositionsInterface = {\n axis: ClrAxis.HORIZONTAL,\n side: ClrSide.AFTER,\n anchor: ClrAlignment.CENTER,\n content: ClrAlignment.END,\n };\n\n static 'right-bottom': ClrPopoverPositionsInterface = {\n axis: ClrAxis.HORIZONTAL,\n side: ClrSide.AFTER,\n anchor: ClrAlignment.START,\n content: ClrAlignment.START,\n };\n\n static 'left-top': ClrPopoverPositionsInterface = {\n axis: ClrAxis.HORIZONTAL,\n side: ClrSide.BEFORE,\n anchor: ClrAlignment.CENTER,\n content: ClrAlignment.END,\n };\n\n static 'left-bottom': ClrPopoverPositionsInterface = {\n axis: ClrAxis.HORIZONTAL,\n side: ClrSide.BEFORE,\n anchor: ClrAlignment.START,\n content: ClrAlignment.START,\n };\n}\n","/*\n * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ClrCommonStrings } from './common-strings.interface';\n\nexport const commonStringsDefault: ClrCommonStrings = {\n open: 'Open',\n close: 'Close',\n show: 'Show',\n hide: 'Hide',\n expand: 'Expand',\n collapse: 'Collapse',\n more: 'More',\n select: 'Select',\n selectAll: 'Select All',\n previous: 'Previous',\n next: 'Next',\n current: 'Jump to current',\n info: 'Info',\n success: 'Success',\n warning: 'Warning',\n danger: 'Error',\n rowActions: 'Available actions',\n pickColumns: 'Show or hide columns',\n showColumns: 'Show Columns',\n sortColumn: 'Sort Column',\n firstPage: 'First Page',\n lastPage: 'Last Page',\n nextPage: 'Next Page',\n previousPage: 'Previous Page',\n currentPage: 'Current Page',\n totalPages: 'Total Pages',\n filterItems: 'Filter items',\n minValue: 'Min value',\n maxValue: 'Max value',\n modalContentStart: 'Beginning of Modal Content',\n modalContentEnd: 'End of Modal Content',\n showColumnsMenuDescription: 'Show or hide columns menu',\n allColumnsSelected: 'All columns selected',\n signpostToggle: 'Signpost Toggle',\n signpostClose: 'Signpost Close',\n loading: 'Loading',\n // Datagrid\n detailPaneStart: 'Start of row details',\n detailPaneEnd: 'End of row details',\n singleSelectionAriaLabel: 'Single selection header',\n singleActionableAriaLabel: 'Single actionable header',\n detailExpandableAriaLabel: 'Toggle more row content',\n datagridFilterAriaLabel: 'Filter dialog',\n datagridFilterDialogAriaLabel: 'Toggle column filter',\n columnSeparatorAriaLabel: 'Column resize handle',\n columnSeparatorDescription: 'Use left or right key to resize the column',\n // Alert\n alertCloseButtonAriaLabel: 'Close alert',\n // Date Picker\n datepickerToggle: 'Toggle datepicker',\n datepickerPreviousMonth: 'Previous month',\n datepickerCurrentMonth: 'Current month',\n datepickerNextMonth: 'Next month',\n datepickerPreviousDecade: 'Previous decade',\n datepickerNextDecade: 'Next decade',\n datepickerCurrentDecade: 'Current decade',\n datepickerSelectMonthText: 'Select month, the current month is {CALENDAR_MONTH}',\n datepickerSelectYearText: 'Select year, the current year is {CALENDAR_YEAR}',\n // Stack View\n stackViewChanged: 'Value changed.',\n //Vertical Nav\n verticalNavGroupToggle: 'Toggle vertical navigation group',\n verticalNavToggle: 'Toggle vertical navigation',\n // Timeline steps\n timelineStepNotStarted: 'Not started',\n timelineStepCurrent: 'Current',\n timelineStepSuccess: 'Completed',\n timelineStepError: 'Error',\n timelineStepProcessing: 'In progress',\n // Combobox\n comboboxDelete: 'Delete selected option',\n comboboxSearching: 'Searching for matches for \"{INPUT}\"',\n comboboxSelection: 'Selection',\n comboboxSelected: 'Selected',\n comboboxNoResults: 'No results',\n comboboxOpen: 'Show options',\n // Datagrid expandable rows\n dategridExpandableBeginningOf: 'Beginning of',\n dategridExpandableEndOf: 'End of',\n dategridExpandableRowContent: 'Expandable row content',\n dategridExpandableRowsHelperText: `Screen reader table commands may not work for viewing expanded content, please use your screen reader's browse mode to read the content exposed by this button`,\n // Wizard\n wizardStepSuccess: 'Completed',\n wizardStepError: 'Error',\n};\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\n\nimport { commonStringsDefault } from './../../utils/i18n/common-strings.default';\nimport { ClrCommonStrings } from './../../utils/i18n/common-strings.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ClrCommonStringsService {\n private _strings = commonStringsDefault;\n\n /**\n * Allows you to pass in new overrides for localization\n */\n localize(overrides: Partial<ClrCommonStrings>) {\n this._strings = { ...this._strings, ...overrides };\n }\n\n /**\n * Access to all of the keys as strings\n */\n get keys(): Readonly<ClrCommonStrings> {\n return this._strings;\n }\n\n /**\n * Parse a string with a set of tokens to replace\n */\n parse(source: string, tokens: { [key: string]: string } = {}) {\n const names = Object.keys(tokens);\n let output = source;\n if (names.length) {\n names.forEach(name => {\n output = output.replace(`{${name}}`, tokens[name]);\n });\n }\n return output;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, Inject, ContentChildren, Input, QueryList } from '@angular/core';\n\nimport { ButtonInGroupService } from '../providers/button-in-group.service';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { UNIQUE_ID, UNIQUE_ID_PROVIDER } from '../../utils/id-generator/id-generator.service';\nimport { ClrPopoverPosition } from '../../utils/popover/interfaces/popover-position.interface';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { ClrPopoverEventsService } from '../../utils/popover/providers/popover-events.service';\nimport { ClrPopoverPositionService } from '../../utils/popover/providers/popover-position.service';\nimport { ClrPopoverPositions } from '../../utils/popover/enums/positions.enum';\n\nimport { ClrButton } from './button';\n\n@Component({\n selector: 'clr-button-group',\n templateUrl: 'button-group.html',\n providers: [\n ButtonInGroupService,\n UNIQUE_ID_PROVIDER,\n ClrPopoverToggleService,\n ClrPopoverEventsService,\n ClrPopoverPositionService,\n ],\n host: { '[class.btn-group]': 'true' },\n})\nexport class ClrButtonGroup {\n @ContentChildren(ClrButton) buttons: QueryList<ClrButton>;\n\n constructor(\n public buttonGroupNewService: ButtonInGroupService,\n private toggleService: ClrPopoverToggleService,\n @Inject(UNIQUE_ID) public popoverId: string,\n public commonStrings: ClrCommonStringsService\n ) {}\n\n public popoverPosition: ClrPopoverPosition = ClrPopoverPositions['bottom-left'];\n\n public get open() {\n return this.toggleService.open;\n }\n\n inlineButtons: ClrButton[] = [];\n menuButtons: ClrButton[] = [];\n\n /**\n * 1. Initializes the initial Button Group View\n * 2. Subscribes to changes on the ContentChildren\n * in case the user content projection changes\n */\n ngAfterContentInit() {\n this.initializeButtons();\n this.buttonGroupNewService.changes.subscribe(button => this.rearrangeButton(button));\n this.buttons.changes.subscribe(() => {\n this.initializeButtons();\n });\n }\n\n /**\n * Moves the button into the other ViewContainer\n * when an update is received.\n *\n * @param button\n */\n rearrangeButton(button: ClrButton): void {\n let fromView: ClrButton[];\n let toView: ClrButton[];\n if (button.inMenu) {\n fromView = this.inlineButtons;\n toView = this.menuButtons;\n } else {\n fromView = this.menuButtons;\n toView = this.inlineButtons;\n }\n const index: number = fromView.indexOf(button);\n if (index > -1) {\n fromView.splice(index, 1);\n const moveIndex = this.getMoveIndex(button);\n if (moveIndex <= toView.length) {\n toView.splice(moveIndex, 0, button);\n }\n }\n }\n\n /**\n * Author: Eudes\n *\n * Finds the order of a button w.r.t other buttons\n *\n * @param buttonToMove\n * @returns\n */\n getMoveIndex(buttonToMove: ClrButton): number {\n const tempArr: ClrButton[] = this.buttons.filter(button => button.inMenu === buttonToMove.inMenu);\n return tempArr.indexOf(buttonToMove);\n }\n\n initializeButtons(): void {\n const tempInlineButtons: ClrButton[] = [];\n const tempInMenuButtons: ClrButton[] = [];\n this.buttons.forEach(button => {\n if (button.inMenu) {\n tempInMenuButtons.push(button);\n } else {\n tempInlineButtons.push(button);\n }\n });\n this.inlineButtons = tempInlineButtons;\n this.menuButtons = tempInMenuButtons;\n }\n\n /**\n * Overflow Menu\n *\n */\n\n // Indicates the position of the overflow menu\n private _menuPosition: string;\n\n get menuPosition(): string {\n return this._menuPosition;\n }\n\n @Input('clrMenuPosition')\n set menuPosition(pos: string) {\n if (pos && (ClrPopoverPositions as Record<string, any>)[pos]) {\n this._menuPosition = pos;\n } else {\n this._menuPosition = 'bottom-left';\n }\n\n this.popoverPosition = (ClrPopoverPositions as Record<string, any>)[this._menuPosition];\n }\n}\n","<!--\n ~ Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<ng-container *ngFor=\"let inlineButton of inlineButtons\">\n <ng-template [ngTemplateOutlet]=\"inlineButton.templateRef\"></ng-template>\n</ng-container>\n<ng-container *ngIf=\"menuButtons.length > 0\">\n <div class=\"btn-group-overflow open\" [ngClass]=\"menuPosition\" #anchor>\n <button\n class=\"btn dropdown-toggle\"\n clrPopoverAnchor\n clrPopoverOpenCloseButton\n [attr.aria-controls]=\"popoverId\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-label]=\"commonStrings.keys.rowActions\"\n >\n <cds-icon shape=\"ellipsis-horizontal\" [attr.title]=\"commonStrings.keys.more\"></cds-icon>\n </button>\n <div\n role=\"menu\"\n class=\"dropdown-menu clr-button-group-menu\"\n [id]=\"popoverId\"\n [attr.id]=\"popoverId\"\n [attr.aria-hidden]=\"!open\"\n *clrPopoverContent=\"open at popoverPosition; outsideClickToClose: true; scrollToClose: true\"\n >\n <ng-template [ngTemplateOutlet]=\"ref\"></ng-template>\n </div>\n </div>\n</ng-container>\n<ng-template #ref>\n <ng-container *ngFor=\"let menuButton of menuButtons\">\n <ng-template [ngTemplateOutlet]=\"menuButton.templateRef\"></ng-template>\n </ng-container>\n</ng-template>\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrPopoverModuleNext } from '../../utils/popover/popover.module';\n\nimport { ClrButton } from './button';\nimport { ClrButtonGroup } from './button-group';\n\nexport const CLR_BUTTON_GROUP_DIRECTIVES: Type<any>[] = [ClrButton, ClrButtonGroup];\n\n@NgModule({\n imports: [CommonModule, ClrIconModule, ClrPopoverModuleNext],\n declarations: [CLR_BUTTON_GROUP_DIRECTIVES],\n exports: [CLR_BUTTON_GROUP_DIRECTIVES],\n})\nexport class ClrButtonGroupModule {}\n","/*\n * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { animate, keyframes, style, transition, trigger } from '@angular/animations';\nimport { Component, ElementRef, EventEmitter, Input, Output, Renderer2 } from '@angular/core';\nimport { ClrLoadingState } from '../../utils/loading/loading';\nimport { LoadingListener } from '../../utils/loading/loading-listener';\n\n// minimum width to fit loading spinner\nconst MIN_BUTTON_WIDTH = 42;\n\n@Component({\n selector: 'button[clrLoading]',\n template: `\n <ng-container [ngSwitch]=\"state\">\n <span *ngSwitchCase=\"buttonState.LOADING\">\n <span @spinner class=\"spinner spinner-inline\"></span>\n </span>\n <span *ngSwitchCase=\"buttonState.SUCCESS\">\n <span\n @validated\n (@validated.done)=\"this.loadingStateChange(this.buttonState.DEFAULT)\"\n class=\"spinner spinner-inline spinner-check\"\n ></span>\n </span>\n <span *ngSwitchCase=\"buttonState.DEFAULT\" @defaultButton>\n <ng-content></ng-content>\n </span>\n </ng-container>\n `,\n providers: [{ provide: LoadingListener, useExisting: ClrLoadingButton }],\n animations: [\n trigger('defaultButton', [\n transition(':enter', [style({ opacity: 0 }), animate('200ms 100ms ease-in', style({ opacity: 1 }))]),\n // TODO: see if we can get leave animation to work before spinner's enter animation\n transition(':leave', [style({ opacity: 0 })]),\n ]),\n trigger('spinner', [\n transition(':enter', [style({ opacity: 0 }), animate('200ms 100ms ease-in', style({ opacity: 1 }))]),\n transition(':leave', [style({ opacity: 1 }), animate('100ms ease-out', style({ opacity: 0 }))]),\n ]),\n trigger('validated', [\n transition(':enter', [\n animate(\n '600ms',\n keyframes([\n style({ transform: 'scale(0,0)', offset: 0 }),\n style({ opacity: 1, offset: 0.2 }),\n style({ transform: 'scale(1.2,1.2)', offset: 0.4 }),\n style({ transform: 'scale(.9,.9)', offset: 0.6 }),\n style({ transform: 'scale(1,1)', offset: 1 }),\n ])\n ),\n ]),\n transition(':leave', [style({ opacity: 1 }), animate('100ms ease-out', style({ opacity: 0 }))]),\n ]),\n ],\n host: { '[attr.disabled]': \"disabled? '' : null\" },\n})\nexport class ClrLoadingButton implements LoadingListener {\n public buttonState = ClrLoadingState;\n public state: ClrLoadingState = ClrLoadingState.DEFAULT;\n\n @Input('disabled') public disabled: boolean;\n\n @Output('clrLoadingChange')\n public clrLoadingChange: EventEmitter<ClrLoadingState> = new EventEmitter<ClrLoadingState>(false);\n\n constructor(public el: ElementRef, private renderer: Renderer2) {}\n\n loadingStateChange(state: ClrLoadingState): void {\n if (state === this.state) {\n return;\n }\n this.state = state;\n\n switch (state) {\n case ClrLoadingState.DEFAULT:\n this.renderer.removeStyle(this.el.nativeElement, 'width');\n this.renderer.removeStyle(this.el.nativeElement, 'transform'); // for chromium render bug see issue https://github.com/vmware/clarity/issues/2700\n if (!this.disabled) {\n this.renderer.removeAttribute(this.el.nativeElement, 'disabled');\n }\n break;\n case ClrLoadingState.LOADING:\n this.setExplicitButtonWidth();\n this.renderer.setStyle(this.el.nativeElement, 'transform', 'translatez(0)'); // for chromium render bug see issue https://github.com/vmware/clarity/issues/2700\n this.renderer.setAttribute(this.el.nativeElement, 'disabled', '');\n break;\n case ClrLoadingState.SUCCESS:\n this.setExplicitButtonWidth();\n break;\n case ClrLoadingState.ERROR:\n this.loadingStateChange(ClrLoadingState.DEFAULT);\n break;\n default:\n break;\n }\n this.clrLoadingChange.emit(state);\n }\n\n private setExplicitButtonWidth() {\n if (this.el.nativeElement && this.el.nativeElement.getBoundingClientRect) {\n const boundingClientRect = this.el.nativeElement.getBoundingClientRect();\n const width = Math.max(MIN_BUTTON_WIDTH, boundingClientRect.width);\n this.renderer.setStyle(this.el.nativeElement, 'width', `${width}px`);\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrLoadingButton } from './loading-button';\n\nexport const CLR_LOADING_BUTTON_DIRECTIVES: Type<any>[] = [ClrLoadingButton];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [CLR_LOADING_BUTTON_DIRECTIVES],\n exports: [CLR_LOADING_BUTTON_DIRECTIVES],\n})\nexport class ClrLoadingButtonModule {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { NgModule } from '@angular/core';\nimport { ClarityIcons, ellipsisHorizontalIcon } from '@cds/core/icon';\n\nimport { ClrButtonGroupModule } from './button-group/button-group.module';\nimport { ClrLoadingButtonModule } from './button-loading/loading-button.module';\n\n@NgModule({\n exports: [ClrLoadingButtonModule, ClrButtonGroupModule],\n})\nexport class ClrButtonModule {\n constructor() {\n ClarityIcons.addIcons(ellipsisHorizontalIcon);\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\n@Component({\n template: '',\n})\nexport class EmptyAnchor {}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { EmptyAnchor } from './empty-anchor';\n\n/**\n * Internal module, please do not export!\n */\n@NgModule({ declarations: [EmptyAnchor], exports: [EmptyAnchor], entryComponents: [EmptyAnchor] })\nexport class ClrHostWrappingModule {}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n ComponentFactory,\n ComponentFactoryResolver,\n ElementRef,\n InjectionToken,\n Injector,\n Type,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { DynamicWrapper } from './dynamic-wrapper';\nimport { EmptyAnchor } from './empty-anchor';\n\n/**\n * HostWrapper must be called in OnInit to ensure that the Views are ready. If its called in a constructor the view is\n * still undefined.\n * TODO - make sure these comment annotations do not break ng-packgr.\n */\nexport class HostWrapper<W extends DynamicWrapper> implements Injector {\n constructor(containerType: Type<W>, vcr: ViewContainerRef, index = 0) {\n this.injector = vcr.injector;\n // If the host is already wrapped, we don't do anything\n if (!this.injector.get(containerType, null)) {\n const cfr = this.injector.get(ComponentFactoryResolver);\n const el = this.injector.get(ElementRef);\n\n // We need a new anchor, since we're projecting the current one.\n vcr.createComponent(cfr.resolveComponentFactory(EmptyAnchor));\n const factory: ComponentFactory<W> = cfr.resolveComponentFactory(containerType);\n // Craft the element array based on what slot to use. Angular only uses the index to determine\n // which ng-content to project into, so if you have more than one ng-content you'll need to set\n // the index in the constructor appropriately\n const element = [];\n element[index] = [el.nativeElement];\n // We're assuming only one projection slot, but in more complex cases we might want to provide\n // a different array of projected elements.\n const containerRef = vcr.createComponent(factory, undefined, undefined, element);\n // We can now remove the useless anchor\n vcr.remove(0);\n\n // We note that the container was dynamically created\n containerRef.instance._dynamic = true;\n\n // We keep the wrapper's injector to access the dependencies that weren't available before.\n this.injector = containerRef.injector;\n }\n }\n\n private injector: Injector;\n\n get<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T): T {\n return this.injector.get(token, notFoundValue);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { Observable } from 'rxjs';\n\nlet counter = 0;\n\n@Injectable()\nexport class ControlIdService {\n private _id = 'clr-form-control-' + ++counter;\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value;\n this._idChange.next(value);\n }\n\n private _idChange: BehaviorSubject<string> = new BehaviorSubject(this._id);\n public get idChange(): Observable<string> {\n return this._idChange.asObservable();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Observable, Subject } from 'rxjs';\n\nexport interface Helpers {\n show?: boolean;\n showInvalid?: boolean;\n showValid?: boolean;\n showHelper?: boolean;\n}\n\n@Injectable()\nexport class NgControlService {\n // Observable to subscribe to the control, since its not available immediately for projected content\n private _controlChanges: Subject<NgControl> = new Subject<NgControl>();\n get controlChanges(): Observable<NgControl> {\n return this._controlChanges.asObservable();\n }\n\n setControl(control: NgControl) {\n this._controlChanges.next(control);\n }\n\n private _helpers: Subject<Helpers> = new Subject();\n\n get helpersChange(): Observable<Helpers> {\n return this._helpers.asObservable();\n }\n\n setHelpers(state: Helpers) {\n this._helpers.next(state);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Observable, BehaviorSubject, Subscription } from 'rxjs';\nimport { NgControlService } from '../providers/ng-control.service';\n\nexport enum CONTROL_STATE {\n NONE = 'NONE',\n VALID = 'VALID',\n INVALID = 'INVALID',\n}\n\n@Injectable()\nexport class IfControlStateService implements OnDestroy {\n private subscriptions: Subscription[] = [];\n private control: NgControl;\n\n // Implement our own status changes observable, since Angular controls don't\n private _statusChanges: BehaviorSubject<CONTROL_STATE> = new BehaviorSubject(CONTROL_STATE.NONE);\n get statusChanges(): Observable<CONTROL_STATE> {\n return this._statusChanges.asObservable();\n }\n\n constructor(private ngControlService: NgControlService) {\n // Wait for the control to be available\n this.subscriptions.push(\n this.ngControlService.controlChanges.subscribe(control => {\n if (control) {\n this.control = control;\n // Subscribe to the status change events, only after touched\n // and emit the control\n this.subscriptions.push(\n this.control.statusChanges.subscribe(() => {\n this.triggerStatusChange();\n })\n );\n }\n })\n );\n }\n\n triggerStatusChange() {\n /* Check if control is defined and run the code only then */\n if (this.control) {\n // These status values are mutually exclusive, so a control\n // cannot be both valid AND invalid or invalid AND disabled.\n const status = CONTROL_STATE[this.control.status];\n this._statusChanges.next(\n this.control.touched && ['VALID', 'INVALID'].includes(status) ? status : CONTROL_STATE.NONE\n );\n }\n }\n\n // Clean up subscriptions\n ngOnDestroy() {\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\n\nexport enum ClrFormLayout {\n VERTICAL = 'vertical',\n HORIZONTAL = 'horizontal',\n COMPACT = 'compact',\n}\n\n@Injectable()\nexport class LayoutService {\n readonly minLabelSize = 1;\n readonly maxLabelSize = 12;\n layout: ClrFormLayout | string = ClrFormLayout.HORIZONTAL;\n\n // This is basically a replacement for Object.values(), which IE11 and Node <9 don't support :(\n // String enums cannot be reverse-mapped, meaning ClrFormLayout['COMPACT'] does not return 'compact' so\n // this exists to deal with this little caveat to get the list of the values as an array.\n private layoutValues: string[] = Object.keys(ClrFormLayout).map(key => (ClrFormLayout as Record<string, any>)[key]);\n private _labelSize = 2;\n\n set labelSize(size: number) {\n if (this.labelSizeIsValid(size)) {\n this._labelSize = size;\n }\n }\n\n get labelSize(): number {\n return this._labelSize;\n }\n\n isVertical(): boolean {\n return this.layout === ClrFormLayout.VERTICAL;\n }\n\n isHorizontal(): boolean {\n return this.layout === ClrFormLayout.HORIZONTAL;\n }\n\n isCompact(): boolean {\n return this.layout === ClrFormLayout.COMPACT;\n }\n\n get layoutClass(): string {\n return `clr-form-${this.layout}`;\n }\n\n isValid(layout: string): boolean {\n return this.layoutValues.indexOf(layout) > -1;\n }\n\n labelSizeIsValid(labelSize: number): boolean {\n return Number.isInteger(labelSize) && labelSize >= this.minLabelSize && labelSize <= this.maxLabelSize;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable, Optional, Renderer2 } from '@angular/core';\nimport { LayoutService } from './layout.service';\nimport { CONTROL_STATE } from '../if-control-state/if-control-state.service';\n\nconst CLASS_ERROR = 'clr-error';\nconst CLASS_SUCCESS = 'clr-success';\n\n@Injectable()\nexport class ControlClassService {\n className = '';\n\n constructor(@Optional() private layoutService: LayoutService) {}\n\n controlClass(state: CONTROL_STATE = CONTROL_STATE.NONE, grid = false, additional = '') {\n const controlClasses = [this.className, additional];\n\n switch (state) {\n case CONTROL_STATE.VALID:\n controlClasses.push(CLASS_SUCCESS);\n break;\n case CONTROL_STATE.INVALID:\n controlClasses.push(CLASS_ERROR);\n break;\n }\n\n if (grid && this.layoutService && this.className.indexOf('clr-col') === -1) {\n controlClasses.push(`clr-col-md-${this.layoutService.maxLabelSize - this.layoutService.labelSize} clr-col-12`);\n }\n return controlClasses.join(' ').trim();\n }\n\n // We want to remove the column classes from the input up to the container\n initControlClass(renderer: Renderer2, element: HTMLElement) {\n if (element && element.className) {\n this.className = element.className;\n const klasses = element.className.split(' ');\n klasses.forEach(klass => {\n if (klass.startsWith('clr-col')) {\n renderer.removeClass(element, klass);\n }\n });\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Subject, Observable } from 'rxjs';\n\n@Injectable()\nexport class MarkControlService {\n private _touched: Subject<void> = new Subject();\n\n get touchedChange(): Observable<void> {\n return this._touched.asObservable();\n }\n\n markAsTouched() {\n this._touched.next();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nlet counter = 0;\n\n/**\n * @TODO No idea why I need to use provideIn .. without I'm getting error that\n * ContainerIdService is not defined - But this must be optional service!?\n *\n * There is something wrong - will come back to investigate it when I have more time\n *\n */\n@Injectable()\nexport class ContainerIdService {\n private _id = `clr-form-container-${++counter}`;\n get id(): string {\n return this._id;\n }\n\n set id(value: string) {\n this._id = value;\n this._idChange.next(value);\n }\n\n private _idChange: BehaviorSubject<string> = new BehaviorSubject(this._id);\n public get idChange(): Observable<string> {\n return this._idChange.asObservable();\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, Optional } from '@angular/core';\nimport { ControlIdService } from './providers/control-id.service';\nimport { ContainerIdService } from './providers/container-id.service';\n\nexport const CONTROL_SUFFIX: { [key: string]: string | null } = {\n HELPER: 'helper',\n ERROR: 'error',\n SUCCESS: 'success',\n NONE: null,\n};\n\n@Directive()\nexport abstract class ClrAbstractControl {\n /**\n * Hold the suffix for the ID\n */\n public controlIdSuffix = 'abstract';\n\n constructor(\n @Optional() protected controlIdService: ControlIdService,\n @Optional() protected containerIdService: ContainerIdService\n ) {}\n\n public get id(): string {\n /**\n * The order of witch the id will be pick is:\n * - Container ID (Wrapper arround multiple Controls like, Checkbox, Radio, ...)\n * - Control ID (Single Control wrapper like Input, Textarea, Password, ...)\n * - None\n */\n if (this.containerIdService) {\n return `${this.containerIdService.id}-${this.controlIdSuffix}`;\n }\n\n if (this.controlIdService) {\n return `${this.controlIdService.id}-${this.controlIdSuffix}`;\n }\n\n return null;\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport {\n HostBinding,\n InjectionToken,\n HostListener,\n Injector,\n Input,\n OnInit,\n Type,\n ViewContainerRef,\n Renderer2,\n ElementRef,\n OnDestroy,\n Directive,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { HostWrapper } from '../../utils/host-wrapping/host-wrapper';\nimport { DynamicWrapper } from '../../utils/host-wrapping/dynamic-wrapper';\n\nimport { ControlIdService } from './providers/control-id.service';\nimport { Helpers, NgControlService } from './providers/ng-control.service';\nimport { NgControl } from '@angular/forms';\nimport { ControlClassService } from './providers/control-class.service';\nimport { MarkControlService } from './providers/mark-control.service';\nimport { IfControlStateService } from './if-control-state/if-control-state.service';\nimport { ContainerIdService } from './providers/container-id.service';\nimport { CONTROL_SUFFIX } from './abstract-control';\n\n@Directive()\nexport class WrappedFormControl<W extends DynamicWrapper> implements OnInit, OnDestroy {\n protected ngControlService: NgControlService;\n private ifControlStateService: IfControlStateService;\n private controlClassService: ControlClassService;\n private markControlService: MarkControlService;\n private containerIdService: ContainerIdService;\n protected renderer: Renderer2;\n protected el: ElementRef<any>;\n\n protected subscriptions: Subscription[] = [];\n protected index = 0;\n protected controlIdService: ControlIdService;\n\n _id: string;\n\n // I lost way too much time trying to make this work without injecting the ViewContainerRef and the Injector,\n // I'm giving up. So we have to inject these two manually for now.\n constructor(\n protected vcr: ViewContainerRef,\n protected wrapperType: Type<W>,\n injector: Injector,\n private ngControl: NgControl,\n renderer: Renderer2,\n el: ElementRef\n ) {\n this.renderer = renderer;\n this.el = el;\n try {\n this.ngControlService = injector.get(NgControlService);\n this.ifControlStateService = injector.get(IfControlStateService);\n this.controlClassService = injector.get(ControlClassService);\n this.markControlService = injector.get(MarkControlService);\n } catch (e) {\n // Swallow errors\n }\n\n if (this.controlClassService) {\n this.controlClassService.initControlClass(renderer, el.nativeElement);\n }\n if (this.markControlService) {\n this.subscriptions.push(\n this.markControlService.touchedChange.subscribe(() => {\n this.markAsTouched();\n })\n );\n }\n\n if (this.ngControlService) {\n this.subscriptions.push(\n this.ngControlService.helpersChange.subscribe((state: Helpers) => {\n this.setAriaDescribedBy(state);\n })\n );\n }\n }\n\n @HostBinding()\n @Input()\n get id() {\n return this._id;\n }\n set id(value: string) {\n this._id = value;\n if (this.controlIdService) {\n this.controlIdService.id = value;\n }\n }\n\n @HostListener('blur')\n triggerValidation() {\n if (this.ifControlStateService) {\n /**\n * For some reason the <input type=\"number\" /> on blur ngControl doesn't set the control to 'touched'\n * This one is a workaround to provide the control to be 'touched' on blur and fix #4480.\n */\n if (this.ngControl && !this.ngControl.touched) {\n this.markAsTouched();\n }\n this.ifControlStateService.triggerStatusChange();\n }\n }\n\n private markAsTouched(): void {\n this.ngControl.control.markAsTouched();\n this.ngControl.control.updateValueAndValidity();\n }\n\n private _containerInjector: Injector;\n\n // @TODO This method has a try/catch due to an unknown issue that came when building the clrToggle feature\n // We need to figure out why this fails for the ClrToggle scenario but works for Date picker...\n // To see the error, remove the try/catch here and run the ClrToggle suite to see issues getting the container\n // injector in time, and this ONLY HAPPENS in tests and not in dev/prod mode.\n protected getProviderFromContainer<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T): T {\n try {\n return this._containerInjector.get(token, notFoundValue);\n } catch (e) {\n return notFoundValue;\n }\n }\n\n ngOnInit() {\n this._containerInjector = new HostWrapper(this.wrapperType, this.vcr, this.index);\n this.controlIdService = this._containerInjector.get(ControlIdService);\n\n try {\n this.containerIdService = this._containerInjector.get(ContainerIdService);\n } catch (_injectorError) {\n /**\n * We suppress error, not all containers will provide `ContainerIdService` so\n * there could be exception that is not provided.\n */\n }\n\n if (this._id) {\n this.controlIdService.id = this._id;\n } else {\n this._id = this.controlIdService.id;\n }\n\n if (this.ngControlService) {\n this.ngControlService.setControl(this.ngControl);\n }\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n private setAriaDescribedBy(helpers: Helpers) {\n if (helpers.show) {\n const ariaDescribedBy = this.getAriaDescribedById(helpers);\n if (ariaDescribedBy !== null) {\n this.renderer.setAttribute(this.el.nativeElement, 'aria-describedby', ariaDescribedBy);\n return;\n }\n }\n\n this.renderer.removeAttribute(this.el.nativeElement, 'aria-describedby');\n }\n\n private getAriaDescribedById(helpers: Helpers): string | null {\n let suffix = CONTROL_SUFFIX.HELPER;\n\n if (helpers.showInvalid) {\n suffix = CONTROL_SUFFIX.ERROR;\n } else if (helpers.showValid) {\n suffix = CONTROL_SUFFIX.SUCCESS;\n }\n\n if (this.containerIdService) {\n return this.containerIdService.id.concat('-', suffix);\n }\n\n if (this.controlIdService) {\n return this.controlIdService.id.concat('-', suffix);\n }\n\n /**\n * If ContainerIdService or ControlIdService are missing don't try to guess\n * Don't set anything.\n */\n return null;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Directive, ElementRef, HostBinding, Input, OnDestroy, OnInit, Optional, Renderer2 } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ControlIdService } from './providers/control-id.service';\nimport { LayoutService } from './providers/layout.service';\nimport { NgControlService } from './providers/ng-control.service';\n\n@Directive({ selector: 'label' })\nexport class ClrLabel implements OnInit, OnDestroy {\n constructor(\n @Optional() private controlIdService: ControlIdService,\n @Optional() private layoutService: LayoutService,\n @Optional() private ngControlService: NgControlService,\n private renderer: Renderer2,\n private el: ElementRef\n ) {}\n\n @HostBinding('attr.for')\n @Input('for')\n forAttr: string;\n\n private subscriptions: Subscription[] = [];\n private enableGrid = true;\n\n get labelText(): string {\n return this.el.nativeElement && this.el.nativeElement.textContent;\n }\n\n ngOnInit() {\n // Only add the clr-control-label if it is inside a control container\n if (this.controlIdService || this.ngControlService) {\n this.renderer.addClass(this.el.nativeElement, 'clr-control-label');\n }\n // Only set the grid column classes if we are in the right context and if they aren't already set\n if (\n this.enableGrid &&\n this.layoutService &&\n !this.layoutService.isVertical() &&\n this.el.nativeElement &&\n this.el.nativeElement.className.indexOf('clr-col') < 0\n ) {\n this.renderer.addClass(this.el.nativeElement, 'clr-col-12');\n this.renderer.addClass(this.el.nativeElement, `clr-col-md-${this.layoutService.labelSize}`);\n }\n if (this.controlIdService && !this.forAttr) {\n this.subscriptions.push(this.controlIdService.idChange.subscribe(id => (this.forAttr = id)));\n }\n }\n\n disableGrid() {\n this.enableGrid = false;\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, Optional } from '@angular/core';\nimport { ClrAbstractControl, CONTROL_SUFFIX } from './abstract-control';\nimport { ContainerIdService } from './providers/container-id.service';\nimport { ControlIdService } from './providers/control-id.service';\n\n@Component({\n selector: 'clr-control-success',\n template: ` <ng-content></ng-content> `,\n host: {\n '[class.clr-subtext]': 'true',\n '[attr.id]': 'id',\n },\n})\nexport class ClrControlSuccess extends ClrAbstractControl {\n controlIdSuffix = CONTROL_SUFFIX.SUCCESS;\n\n constructor(\n @Optional() protected controlIdService: ControlIdService,\n @Optional() protected containerIdService: ContainerIdService\n ) {\n super(controlIdService, containerIdService);\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, Optional } from '@angular/core';\nimport { ClrAbstractControl, CONTROL_SUFFIX } from './abstract-control';\nimport { ContainerIdService } from './providers/container-id.service';\nimport { ControlIdService } from './providers/control-id.service';\n\n@Component({\n selector: 'clr-control-error',\n template: ` <ng-content></ng-content> `,\n host: {\n '[class.clr-subtext]': 'true',\n '[attr.id]': 'id',\n },\n})\nexport class ClrControlError extends ClrAbstractControl {\n controlIdSuffix = CONTROL_SUFFIX.ERROR;\n\n constructor(\n @Optional() protected controlIdService: ControlIdService,\n @Optional() protected containerIdService: ContainerIdService\n ) {\n super(controlIdService, containerIdService);\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, Optional } from '@angular/core';\nimport { ClrAbstractControl, CONTROL_SUFFIX } from './abstract-control';\nimport { ContainerIdService } from './providers/container-id.service';\nimport { ControlIdService } from './providers/control-id.service';\n\n@Component({\n selector: 'clr-control-helper',\n template: ` <ng-content></ng-content> `,\n host: {\n '[class.clr-subtext]': 'true',\n '[attr.id]': 'id',\n },\n})\nexport class ClrControlHelper extends ClrAbstractControl {\n controlIdSuffix = CONTROL_SUFFIX.HELPER;\n\n constructor(\n @Optional() protected controlIdService: ControlIdService,\n @Optional() protected containerIdService: ContainerIdService\n ) {\n super(controlIdService, containerIdService);\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterContentInit, ContentChild, Directive, OnDestroy, Optional } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\nimport { NgControlService } from './providers/ng-control.service';\nimport { LayoutService } from './providers/layout.service';\nimport { DynamicWrapper } from '../../utils/host-wrapping/dynamic-wrapper';\nimport { ClrLabel } from './label';\nimport { ControlClassService } from './providers/control-class.service';\nimport { Subscription } from 'rxjs';\nimport { IfControlStateService, CONTROL_STATE } from './if-control-state/if-control-state.service';\nimport { ClrControlSuccess } from './success';\nimport { ClrControlError } from './error';\nimport { ClrControlHelper } from './helper';\n\n@Directive()\nexport abstract class ClrAbstractContainer implements DynamicWrapper, OnDestroy, AfterContentInit {\n protected subscriptions: Subscription[] = [];\n _dynamic = false;\n @ContentChild(ClrLabel, { static: false })\n label: ClrLabel;\n control: NgControl;\n private state: CONTROL_STATE;\n\n /**\n * Find Success, Error and Helper control components.\n */\n @ContentChild(ClrControlSuccess) controlSuccessComponent: ClrControlSuccess;\n @ContentChild(ClrControlError) controlErrorComponent: ClrControlError;\n @ContentChild(ClrControlHelper) controlHelperComponent: ClrControlHelper;\n\n /**\n * @NOTE\n * Helper control is a bit different than the others, it must be visible most of the time:\n * - Helper must NOT be visible when CONTROL_STATE is not NONE and Success or Error components are \\\n * defined.\n *\n * For example user implement only Error control then if CONTROL_STATE is VALID then helper\n * control must be visible.\n */\n get showHelper(): boolean {\n // without existence of helper component there is no need of additional checks.\n if (!!this.controlHelperComponent === false) {\n return false;\n }\n\n return (\n /* Helper Component exist and the state of the form is NONE (not touched) */\n (!!this.controlHelperComponent && this.state === CONTROL_STATE.NONE) ||\n /* or there is no success component but the state of the form is VALID - show helper information */\n (!!this.controlSuccessComponent === false && this.state === CONTROL_STATE.VALID) ||\n /* or there is no error component but the state of the form is INVALID - show helper information */\n (!!this.controlErrorComponent === false && this.state === CONTROL_STATE.INVALID)\n );\n }\n\n get showValid(): boolean {\n return this.state === CONTROL_STATE.VALID && !!this.controlSuccessComponent;\n }\n\n get showInvalid(): boolean {\n return this.state === CONTROL_STATE.INVALID && !!this.controlErrorComponent;\n }\n\n constructor(\n protected ifControlStateService: IfControlStateService,\n @Optional() protected layoutService: LayoutService,\n protected controlClassService: ControlClassService,\n protected ngControlService: NgControlService\n ) {\n this.subscriptions.push(\n this.ifControlStateService.statusChanges.subscribe((state: CONTROL_STATE) => {\n this.state = state;\n this.updateHelpers();\n })\n );\n\n this.subscriptions.push(\n this.ngControlService.controlChanges.subscribe(control => {\n this.control = control;\n })\n );\n }\n\n ngAfterContentInit() {\n /**\n * We gonna set the helper control state, after all or most of the components\n * are ready - also this will trigger some initial flows into wrappers and controls,\n * like locating IDs and setting attributes.\n */\n this.updateHelpers();\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n\n controlClass() {\n /**\n * Decide what subtext to display:\n * - container is valid but no success component is implemented - use helper class\n * - container is valid and success component is implemented - use success class\n */\n if (!this.controlSuccessComponent && this.state === CONTROL_STATE.VALID) {\n return this.controlClassService.controlClass(CONTROL_STATE.NONE, this.addGrid());\n }\n /**\n * Pass form control state and return string of classes to be applied to the container.\n */\n return this.controlClassService.controlClass(this.state, this.addGrid());\n }\n\n addGrid() {\n return this.layoutService && !this.layoutService.isVertical();\n }\n\n private updateHelpers() {\n if (this.ngControlService) {\n this.ngControlService.setHelpers({\n show: this.showInvalid || this.showHelper || this.showValid,\n showInvalid: this.showInvalid,\n showHelper: this.showHelper,\n showValid: this.showValid,\n });\n }\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\nimport { ClrAbstractContainer } from '../common/abstract-container';\nimport { NgControlService } from './providers/ng-control.service';\nimport { ControlIdService } from './providers/control-id.service';\nimport { ControlClassService } from './providers/control-class.service';\nimport { IfControlStateService } from './if-control-state/if-control-state.service';\n\n@Component({\n selector: 'clr-control-container',\n template: `\n <ng-content select=\"label\"></ng-content>\n <label *ngIf=\"!label && addGrid()\"></label>\n <div class=\"clr-control-container\" [ngClass]=\"controlClass()\">\n <div class=\"clr-input-wrapper\">\n <ng-content></ng-content>\n <cds-icon\n *ngIf=\"showInvalid\"\n class=\"clr-validate-icon\"\n status=\"danger\"\n shape=\"exclamation-circle\"\n aria-hidden=\"true\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"showValid\"\n class=\"clr-validate-icon\"\n shape=\"check-circle\"\n status=\"success\"\n aria-hidden=\"true\"\n ></cds-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"showHelper\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showInvalid\"></ng-content>\n <ng-content select=\"clr-control-success\" *ngIf=\"showValid\"></ng-content>\n </div>\n `,\n host: {\n '[class.clr-form-control]': 'true',\n '[class.clr-form-control-disabled]': 'control?.disabled',\n '[class.clr-row]': 'addGrid()',\n },\n providers: [IfControlStateService, NgControlService, ControlIdService, ControlClassService],\n})\nexport class ClrControlContainer extends ClrAbstractContainer {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Directive, ElementRef, Injector, Optional, Renderer2, Self, ViewContainerRef } from '@angular/core';\nimport { WrappedFormControl } from './wrapped-control';\nimport { ClrControlContainer } from './control-container';\nimport { NgControl } from '@angular/forms';\n\n@Directive({ selector: '[clrControl]', host: { '[class.clr-input]': 'true' } })\nexport class ClrControl extends WrappedFormControl<ClrControlContainer> {\n protected index = 1;\n\n constructor(\n vcr: ViewContainerRef,\n injector: Injector,\n @Self()\n @Optional()\n control: NgControl,\n renderer: Renderer2,\n el: ElementRef\n ) {\n super(vcr, ClrControlContainer, injector, control, renderer, el);\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ContentChildren, Directive, HostListener, QueryList, Input } from '@angular/core';\nimport { LayoutService } from './providers/layout.service';\nimport { MarkControlService } from './providers/mark-control.service';\nimport { ClrLabel } from './label';\n\n@Directive({\n selector: '[clrForm]',\n providers: [LayoutService, MarkControlService],\n host: {\n '[class.clr-form]': 'true',\n '[class.clr-form-horizontal]': 'layoutService.isHorizontal()',\n '[class.clr-form-compact]': 'layoutService.isCompact()',\n },\n})\nexport class ClrForm {\n @Input('clrLabelSize')\n set labelSize(size: number | string) {\n const sizeNumber = parseInt(size as string, 10) || 2;\n this.layoutService.labelSize = sizeNumber;\n }\n\n constructor(public layoutService: LayoutService, private markControlService: MarkControlService) {}\n\n // Trying to avoid adding an input and keep this backwards compatible at the same time\n markAsTouched() {\n this.markControlService.markAsTouched();\n }\n\n @ContentChildren(ClrLabel, { descendants: true })\n labels: QueryList<ClrLabel>;\n\n @HostListener('submit')\n onFormSubmit() {\n this.markAsTouched();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Directive, Optional } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { NgControlService } from '../providers/ng-control.service';\nimport { NgControl } from '@angular/forms';\nimport { IfControlStateService, CONTROL_STATE } from './if-control-state.service';\n\n@Directive()\nexport abstract class AbstractIfState {\n protected subscriptions: Subscription[] = [];\n protected displayedContent = false;\n protected control: NgControl;\n\n constructor(\n @Optional() protected ifControlStateService: IfControlStateService,\n @Optional() protected ngControlService: NgControlService\n ) {\n if (ngControlService) {\n this.subscriptions.push(\n this.ngControlService.controlChanges.subscribe(control => {\n this.control = control;\n })\n );\n }\n\n if (ifControlStateService) {\n this.subscriptions.push(\n this.ifControlStateService.statusChanges.subscribe((state: CONTROL_STATE) => {\n this.handleState(state);\n })\n );\n }\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n protected handleState(state: CONTROL_STATE): void {\n /* overwrite in implementation to handle status change */\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Directive, EmbeddedViewRef, Input, Optional, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { NgControlService } from '../providers/ng-control.service';\nimport { IfControlStateService, CONTROL_STATE } from './if-control-state.service';\nimport { AbstractIfState } from './abstract-if-state';\n\n@Directive({ selector: '[clrIfError]' })\nexport class ClrIfError extends AbstractIfState {\n @Input('clrIfError') error: string;\n\n private embeddedViewRef: EmbeddedViewRef<any>;\n\n constructor(\n @Optional() ifControlStateService: IfControlStateService,\n @Optional() ngControlService: NgControlService,\n private template: TemplateRef<any>,\n private container: ViewContainerRef\n ) {\n super(ifControlStateService, ngControlService);\n\n if (!this.ifControlStateService) {\n throw new Error('clrIfError can only be used within a form control container element like clr-input-container');\n }\n }\n /**\n * @param state CONTROL_STATE\n */\n protected handleState(state: CONTROL_STATE) {\n if (this.error && this.control) {\n this.displayError(this.control.hasError(this.error));\n } else {\n this.displayError(CONTROL_STATE.INVALID === state);\n }\n }\n\n private displayError(invalid: boolean) {\n /* if no container do nothing */\n if (!this.container) {\n return;\n }\n if (invalid) {\n if (this.displayedContent === false) {\n this.embeddedViewRef = this.container.createEmbeddedView(this.template, {\n error: this.control.getError(this.error),\n });\n this.displayedContent = true;\n } else if (this.embeddedViewRef && this.embeddedViewRef.context) {\n // if view is already rendered, update the error object to keep it in sync\n this.embeddedViewRef.context.error = this.control.getError(this.error);\n }\n } else {\n this.container.clear();\n this.displayedContent = false;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Directive, Optional, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { NgControlService } from '../providers/ng-control.service';\nimport { IfControlStateService, CONTROL_STATE } from './if-control-state.service';\nimport { AbstractIfState } from './abstract-if-state';\n\n@Directive({ selector: '[clrIfSuccess]' })\nexport class ClrIfSuccess extends AbstractIfState {\n constructor(\n @Optional() ifControlStateService: IfControlStateService,\n @Optional() ngControlService: NgControlService,\n private template: TemplateRef<any>,\n private container: ViewContainerRef\n ) {\n super(ifControlStateService, ngControlService);\n\n if (!ifControlStateService) {\n throw new Error('ClrIfSuccess can only be used within a form control container element like clr-input-container');\n }\n }\n\n /**\n * @param state CONTROL_STATE\n */\n protected handleState(state: CONTROL_STATE) {\n const isValid = CONTROL_STATE.VALID === state;\n\n if (isValid && !this.displayedContent) {\n this.container.createEmbeddedView(this.template);\n } else if (!isValid && this.container) {\n this.container.clear();\n }\n this.displayedContent = isValid;\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, Input, OnInit } from '@angular/core';\nimport { ClrFormLayout, LayoutService } from './providers/layout.service';\n\n@Directive({\n selector: '[clrForm][clrLayout]',\n})\nexport class ClrLayout implements OnInit {\n @Input('clrLayout') layout: ClrFormLayout | string;\n\n constructor(public layoutService: LayoutService) {}\n\n ngOnInit() {\n // Only set the layout if it is a valid option\n if (this.layout && this.layoutService.isValid(this.layout)) {\n this.layoutService.layout = this.layout;\n }\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { checkCircleIcon, ClarityIcons, exclamationCircleIcon } from '@cds/core/icon';\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrControl } from './control';\nimport { ClrControlContainer } from './control-container';\nimport { ClrControlError } from './error';\nimport { ClrForm } from './form';\nimport { ClrControlHelper } from './helper';\nimport { ClrIfError } from './if-control-state/if-error';\nimport { ClrIfSuccess } from './if-control-state/if-success';\nimport { ClrLabel } from './label';\nimport { ClrLayout } from './layout';\nimport { ClrControlSuccess } from './success';\n\n@NgModule({\n imports: [CommonModule, ClrIconModule],\n declarations: [\n ClrLabel,\n ClrControlError,\n ClrControlSuccess,\n ClrControlHelper,\n ClrIfError,\n ClrIfSuccess,\n ClrForm,\n ClrLayout,\n ClrControlContainer,\n ClrControl,\n ],\n exports: [\n ClrLabel,\n ClrControlError,\n ClrControlSuccess,\n ClrControlHelper,\n ClrIfError,\n ClrIfSuccess,\n ClrForm,\n ClrLayout,\n ClrControlContainer,\n ClrControl,\n ],\n entryComponents: [ClrControlContainer],\n})\nexport class ClrCommonFormsModule {\n constructor() {\n ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon);\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, OnInit, ContentChild, Inject, InjectionToken, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { DynamicWrapper } from '../../utils/host-wrapping/dynamic-wrapper';\nimport { ControlIdService } from '../common/providers/control-id.service';\nimport { ClrLabel } from '../common/label';\n\nexport const IS_TOGGLE = new InjectionToken<BehaviorSubject<boolean>>('IS_TOGGLE');\nexport function isToggleFactory() {\n return new BehaviorSubject<boolean>(false);\n}\nexport const IS_TOGGLE_PROVIDER = { provide: IS_TOGGLE, useFactory: isToggleFactory };\n\n@Component({\n selector: 'clr-checkbox-wrapper,clr-toggle-wrapper',\n template: `\n <ng-content select=\"[clrCheckbox],[clrToggle]\"></ng-content>\n <ng-content select=\"label\"></ng-content>\n <label *ngIf=\"!label\"></label>\n `,\n host: {\n '[class.clr-checkbox-wrapper]': '!toggle',\n '[class.clr-toggle-wrapper]': 'toggle',\n },\n providers: [ControlIdService, IS_TOGGLE_PROVIDER],\n})\nexport class ClrCheckboxWrapper implements DynamicWrapper, OnInit, OnDestroy {\n // We need both _dynamic for HostWrapper and ContentChild(ClrLabel) in cases where\n // the user puts a radio inside a wrapper without a label, host wrapping doesn't apply\n // but we'd still need to insert a label\n _dynamic = false;\n @ContentChild(ClrLabel, { static: true })\n label: ClrLabel;\n toggle = false;\n private subscriptions: Subscription[] = [];\n\n constructor(@Inject(IS_TOGGLE) toggleService: BehaviorSubject<boolean>) {\n this.subscriptions.push(\n toggleService.subscribe(state => {\n this.toggle = state;\n })\n );\n }\n\n ngOnInit() {\n if (this.label) {\n this.label.disableGrid();\n }\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, Renderer2, ElementRef, Injector, Self, Optional, ViewContainerRef, Attribute } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { ClrCheckboxWrapper, IS_TOGGLE } from './checkbox-wrapper';\nimport { WrappedFormControl } from '../common/wrapped-control';\n\n/**\n * This implements both the clrCheckbox and clrToggle functionality, since they are both just checkboxes with different\n * visual styling. The challenge is that the container needs to know which selector was used, which the @Attribute\n * decorator gets for us to determine if the toggle is used, and emits a value to the wrapper container to tell it\n * there is a toggle switch instead.\n */\n@Directive({ selector: '[clrCheckbox],[clrToggle]' })\nexport class ClrCheckbox extends WrappedFormControl<ClrCheckboxWrapper> {\n constructor(\n vcr: ViewContainerRef,\n injector: Injector,\n @Self()\n @Optional()\n control: NgControl,\n renderer: Renderer2,\n el: ElementRef,\n @Attribute('clrToggle') private toggle: string\n ) {\n super(vcr, ClrCheckboxWrapper, injector, control, renderer, el);\n }\n\n ngOnInit() {\n super.ngOnInit();\n\n const toggleService = this.getProviderFromContainer<BehaviorSubject<boolean>>(IS_TOGGLE, null);\n\n if (toggleService && this.toggle !== null) {\n toggleService.next(true);\n }\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterContentInit, Component, ContentChildren, Input, Optional, QueryList } from '@angular/core';\n\nimport { ControlClassService } from '../common/providers/control-class.service';\nimport { NgControlService } from '../common/providers/ng-control.service';\nimport { ClrAbstractContainer } from '../common/abstract-container';\nimport { LayoutService } from '../common/providers/layout.service';\nimport { IfControlStateService } from '../common/if-control-state/if-control-state.service';\nimport { ContainerIdService } from '../common/providers/container-id.service';\nimport { ClrCheckbox } from './checkbox';\n\n@Component({\n selector: 'clr-checkbox-container,clr-toggle-container',\n template: `\n <ng-content select=\"label\"></ng-content>\n <label *ngIf=\"!label && addGrid()\"></label>\n <div class=\"clr-control-container\" [class.clr-control-inline]=\"clrInline\" [ngClass]=\"controlClass()\">\n <ng-content select=\"clr-checkbox-wrapper,clr-toggle-wrapper\"></ng-content>\n <div class=\"clr-subtext-wrapper\">\n <ng-content select=\"clr-control-helper\" *ngIf=\"showHelper\"></ng-content>\n <cds-icon\n *ngIf=\"showInvalid\"\n class=\"clr-validate-icon\"\n status=\"danger\"\n shape=\"exclamation-circle\"\n aria-hidden=\"true\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"showValid\"\n class=\"clr-validate-icon\"\n status=\"success\"\n shape=\"check-circle\"\n aria-hidden=\"true\"\n ></cds-icon>\n <ng-content select=\"clr-control-error\" *ngIf=\"showInvalid\"></ng-content>\n <ng-content select=\"clr-control-success\" *ngIf=\"showValid\"></ng-content>\n </div>\n </div>\n `,\n host: {\n '[class.clr-form-control]': 'true',\n '[class.clr-form-control-disabled]': 'control?.disabled',\n '[class.clr-row]': 'addGrid()',\n '[attr.role]': 'role',\n },\n providers: [IfControlStateService, NgControlService, ControlClassService, ContainerIdService],\n})\nexport class ClrCheckboxContainer extends ClrAbstractContainer implements AfterContentInit {\n private inline = false;\n public role: string;\n\n @ContentChildren(ClrCheckbox, { descendants: true }) checkboxes: QueryList<ClrCheckbox>;\n\n constructor(\n @Optional() protected layoutService: LayoutService,\n protected controlClassService: ControlClassService,\n protected ngControlService: NgControlService,\n protected ifControlStateService: IfControlStateService\n ) {\n super(ifControlStateService, layoutService, controlClassService, ngControlService);\n }\n\n /*\n * Here we want to support the following cases\n * clrInline - true by presence\n * clrInline=\"true|false\" - unless it is explicitly false, strings are considered true\n * [clrInline]=\"true|false\" - expect a boolean\n */\n @Input()\n set clrInline(value: boolean | string) {\n if (typeof value === 'string') {\n this.inline = value === 'false' ? false : true;\n } else {\n this.inline = !!value;\n }\n }\n get clrInline() {\n return this.inline;\n }\n\n ngAfterContentInit() {\n this.setAriaRoles();\n }\n\n private setAriaRoles() {\n this.role = this.checkboxes.length ? 'group' : null;\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { checkCircleIcon, ClarityIcons, exclamationCircleIcon } from '@cds/core/icon';\nimport { ClrIconModule } from '../../icon/icon.module';\n\nimport { ClrHostWrappingModule } from '../../utils/host-wrapping/host-wrapping.module';\nimport { ClrCommonFormsModule } from '../common/common.module';\n\nimport { ClrCheckbox } from './checkbox';\nimport { ClrCheckboxContainer } from './checkbox-container';\nimport { ClrCheckboxWrapper } from './checkbox-wrapper';\n\n@NgModule({\n imports: [CommonModule, ClrIconModule, ClrCommonFormsModule, ClrHostWrappingModule],\n declarations: [ClrCheckbox, ClrCheckboxContainer, ClrCheckboxWrapper],\n exports: [ClrCommonFormsModule, ClrCheckbox, ClrCheckboxContainer, ClrCheckboxWrapper],\n entryComponents: [ClrCheckboxWrapper],\n})\nexport class ClrCheckboxModule {\n constructor() {\n ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Injectable, InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\nlet activeCounter = 0;\n\nexport const IF_ACTIVE_ID = new InjectionToken<number>('IF_ACTIVE_ID');\n\nexport function tokenFactory() {\n return ++activeCounter;\n}\n\nexport const IF_ACTIVE_ID_PROVIDER = {\n provide: IF_ACTIVE_ID,\n useFactory: tokenFactory,\n};\n\n@Injectable()\n\n/*********\n * @class IfActiveService\n *\n * @description\n * An injectable service used by IfActive structural directives and the components that implement IfActive in their\n * templates. It holds the value of the current state and provides an Observable that both the directive and the\n * implementing component can subscribe to in order to take action on current value changes.\n *\n */\nexport class IfActiveService {\n /********\n * @property _currentChange\n *\n * @description\n * A RXJS Subject that updates and provides subscriptions to for the current current state of a component template\n * implemting the IfActive structural directive.\n *\n */\n private _currentChange: Subject<number> = new Subject<number>();\n\n /*********\n * @property _current\n *\n * @description\n * A property holding the current value for current/closed state of an IfActive structural directive.\n */\n private _current: number;\n\n /*********\n *\n * @description\n * A getter function that provides an observable for the _current Subject.\n *\n */\n public get currentChange(): Observable<number> {\n return this._currentChange.asObservable();\n }\n\n /*********\n *\n * @description\n * A setter function that updates the current state of _current for this instance of IfActive structural directive.\n * And, broadcasts the new value to all subscribers.\n *\n * @param value\n */\n public set current(value: number) {\n if (this._current !== value) {\n this._current = value;\n this._currentChange.next(value);\n }\n }\n\n /*********\n *\n * @description\n * A getter that returns the current value of this IfActive instance.\n * @returns\n */\n public get current(): number {\n return this._current;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport {\n Directive,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Output,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { IF_ACTIVE_ID, IfActiveService } from './if-active.service';\n\n@Directive({ selector: '[clrIfActive]' })\n\n/**********\n *\n * @class ClrIfActive\n *\n * @description\n * A structural directive that controls whether or not the associated TemplateRef is instantiated or not.\n * It makes use of a Component instance level service: IfActiveService to maintain state between itself and\n * the component using it in the component template.\n *\n */\nexport class ClrIfActive implements OnDestroy {\n private subscription: Subscription;\n private wasActive = false;\n\n constructor(\n private ifActiveService: IfActiveService,\n @Inject(IF_ACTIVE_ID) private id: number,\n private template: TemplateRef<any>,\n private container: ViewContainerRef\n ) {\n this.checkAndUpdateView(ifActiveService.current);\n\n this.subscription = this.ifActiveService.currentChange.subscribe(newCurrentId => {\n this.checkAndUpdateView(newCurrentId);\n });\n }\n\n private checkAndUpdateView(currentId: number) {\n const isNowActive = currentId === this.id;\n // only emit if the new active state is changed since last time.\n if (isNowActive !== this.wasActive) {\n this.updateView(isNowActive);\n this.activeChange.emit(isNowActive);\n this.wasActive = isNowActive;\n }\n }\n\n /*********\n *\n * @description\n * A setter that updates IfActiveService.active with value.\n *\n * @param value\n */\n @Input('clrIfActive')\n public set active(value: boolean | string) {\n if (value) {\n this.ifActiveService.current = this.id;\n }\n }\n\n /********\n *\n * @description\n * A getter that returns the current IfActiveService.active value.\n */\n public get active() {\n return this.ifActiveService.current === this.id;\n }\n\n /**********\n * @property activeChange\n *\n * @description\n * An event emitter that emits when the active property is set to allow for 2way binding when the directive is\n * used with de-structured / de-sugared syntax.\n *\n */\n @Output('clrIfActiveChange') activeChange: EventEmitter<boolean> = new EventEmitter<boolean>(false);\n\n /*********\n *\n * @description\n * Function that takes a any value and either created an embedded view for the associated ViewContainerRef or,\n * Clears all views from the ViewContainerRef\n * @param value\n */\n public updateView(value: boolean) {\n if (value) {\n this.container.createEmbeddedView(this.template);\n } else {\n this.container.clear();\n }\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Directive, EventEmitter, Input, OnDestroy, Output, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrPopoverToggleService } from '../popover/providers/popover-toggle.service';\n\n@Directive({ selector: '[clrIfOpen]' })\n\n/**********\n *\n * @class ClrIfOpen\n *\n * @description\n * A structural directive that controls whether or not the associated TemplateRef is instantiated or not.\n * It makes use of a Component instance level service: ClrPopoverToggleService to maintain state between itself and the component\n * using it in the component template.\n *\n */\nexport class ClrIfOpen implements OnDestroy {\n public static ngAcceptInputType_open: boolean | '';\n\n private subscription: Subscription;\n\n /*********\n *\n * @description\n * A setter that updates ClrPopoverToggleService.open with value.\n *\n * @param value\n */\n @Input('clrIfOpen')\n public set open(value: boolean | string) {\n this.toggleService.open = value as boolean;\n }\n\n /********\n *\n * @description\n * A getter that returns the current ClrPopoverToggleService.open value.\n *\n */\n public get open() {\n return this.toggleService.open;\n }\n\n /**********\n * @property openChange\n *\n * @description\n * An event emitter that emits when the open property is set to allow for 2way binding when the directive is\n * used with de-structured / de-sugared syntax.\n */\n @Output('clrIfOpenChange') openChange: EventEmitter<boolean> = new EventEmitter<boolean>(false);\n\n constructor(\n private toggleService: ClrPopoverToggleService,\n private template: TemplateRef<any>,\n private container: ViewContainerRef\n ) {\n this.subscription = this.toggleService.openChange.subscribe(change => {\n this.updateView(change);\n this.openChange.emit(change);\n });\n }\n\n /*********\n *\n * @description\n * Function that takes a boolean value and either created an embedded view for the associated ViewContainerRef or,\n * Clears all views from the ViewContainerRef\n * @param value\n */\n public updateView(value: boolean) {\n if (value) {\n this.container.createEmbeddedView(this.template);\n } else {\n this.container.clear();\n }\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { LoadingListener } from '../loading/loading-listener';\nimport { ClrLoadingState } from '../loading/loading';\n\n@Injectable()\nexport class IfExpandService implements LoadingListener {\n public expandable = 0;\n\n protected _loading = false;\n get loading(): boolean {\n return this._loading;\n }\n\n set loading(value: boolean) {\n value = !!value;\n if (value !== this._loading) {\n this._loading = value;\n }\n }\n\n protected _expanded = false;\n get expanded(): boolean {\n return this._expanded;\n }\n\n set expanded(value: boolean) {\n value = !!value;\n if (value !== this._expanded) {\n this._expanded = value;\n this._expandChange.next(value);\n }\n }\n\n public toggle() {\n this.expanded = !this._expanded;\n }\n\n protected _expandChange: Subject<boolean> = new Subject<boolean>();\n public get expandChange(): Observable<boolean> {\n return this._expandChange.asObservable();\n }\n\n loadingStateChange(state: ClrLoadingState): void {\n switch (state) {\n case ClrLoadingState.LOADING:\n this.loading = true;\n break;\n default:\n this.loading = false;\n break;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { IfExpandService } from './if-expanded.service';\n\n@Directive({ selector: '[clrIfExpanded]' })\nexport class ClrIfExpanded implements OnInit, OnDestroy {\n private _expanded = false;\n\n get expanded(): boolean | string {\n return this._expanded;\n }\n\n @Input('clrIfExpanded')\n set expanded(value: boolean | string) {\n if (typeof value === 'boolean') {\n this.expand.expanded = value;\n this._expanded = value;\n }\n }\n\n @Output('clrIfExpandedChange') expandedChange: EventEmitter<boolean> = new EventEmitter<boolean>(true);\n\n constructor(\n @Optional() private template: TemplateRef<any>,\n private container: ViewContainerRef,\n private el: ElementRef,\n private renderer: Renderer2,\n private expand: IfExpandService\n ) {\n this._subscriptions.push(\n expand.expandChange.subscribe(() => {\n this.updateView();\n this.expandedChange.emit(this.expand.expanded);\n })\n );\n }\n\n /**\n * Subscriptions to all the services and queries changes\n */\n private _subscriptions: Subscription[] = [];\n\n private updateView() {\n if (this.expand.expanded && this.container.length !== 0) {\n return;\n }\n if (this.template) {\n if (this.expand.expanded) {\n // Should we pass a context? I don't see anything useful to pass right now,\n // but we can come back to it in the future as a solution for additional features.\n this.container.createEmbeddedView(this.template);\n } else {\n // TODO: Move when we move the animation logic to Datagrid Row Expand\n // We clear before the animation is over. Not ideal, but doing better would involve a much heavier\n // process for very little gain. Once Angular animations are dynamic enough, we should be able to\n // get the optimal behavior.\n this.container.clear();\n }\n } else {\n try {\n // If we don't have a template ref, we fallback to a crude display: none for now.\n if (this.expand.expanded) {\n this.renderer.setStyle(this.el.nativeElement, 'display', null);\n } else {\n this.renderer.setStyle(this.el.nativeElement, 'display', 'none');\n }\n } catch (e) {\n // We catch the case where clrIfExpanded was put on a non-DOM element, and we just do nothing\n }\n }\n }\n\n ngOnInit() {\n this.expand.expandable++;\n this.updateView();\n }\n\n ngOnDestroy() {\n this.expand.expandable--;\n this._subscriptions.forEach((sub: Subscription) => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrIfActive } from './if-active.directive';\nimport { ClrIfOpen } from './if-open.directive';\nimport { ClrIfExpanded } from './if-expanded.directive';\n\nexport const CONDITIONAL_DIRECTIVES: Type<any>[] = [ClrIfActive, ClrIfOpen, ClrIfExpanded];\n\n@NgModule({ imports: [CommonModule], declarations: [CONDITIONAL_DIRECTIVES], exports: [CONDITIONAL_DIRECTIVES] })\nexport class ClrConditionalModule {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Injectable } from '@angular/core';\nimport { FocusTrapDirective } from './focus-trap.directive';\n\n@Injectable({ providedIn: 'root' })\nexport class FocusTrapTracker {\n private _previousFocusTraps: FocusTrapDirective[] = [];\n private _current: FocusTrapDirective;\n\n get current(): FocusTrapDirective {\n return this._current;\n }\n\n set current(value: FocusTrapDirective) {\n this._previousFocusTraps.push(this._current);\n this._current = value;\n }\n\n get nbFocusTrappers(): number {\n return this._previousFocusTraps.length;\n }\n\n activatePreviousTrapper() {\n this._current = this._previousFocusTraps.pop();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n Directive,\n ElementRef,\n HostListener,\n Inject,\n Injector,\n Input,\n OnDestroy,\n PLATFORM_ID,\n Renderer2,\n OnInit,\n} from '@angular/core';\nimport { FocusTrapTracker } from './focus-trap-tracker.service';\nimport { FocusTrapConfig } from './focus-trap-config.interface';\n\nexport const FOCUSABLES =\n '[href]:not([tabindex=\"-1\"]), button:not([disabled]):not([tabindex=\"-1\"]), input:not([disabled]):not([tabindex=\"-1\"]), select:not([disabled]):not([tabindex=\"-1\"]), textarea:not([disabled]):not([tabindex=\"-1\"]), [contenteditable=\"true\"]:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"]) ';\n\n@Directive({ selector: '[clrFocusTrap]' })\nexport class FocusTrapDirective implements OnInit, AfterViewInit, OnDestroy {\n private previousActiveElement: any;\n private localFocusEscaped = false;\n private document: Document;\n private parentElement: Element;\n\n private topReboundEl: any;\n private bottomReboundEl: any;\n\n private firstFocusableEl: HTMLElement;\n private lastFocusableEl: HTMLElement;\n\n constructor(\n private el: ElementRef,\n private injector: Injector,\n private focusTrapsTracker: FocusTrapTracker,\n private renderer: Renderer2,\n @Inject(PLATFORM_ID) private platformId: any\n ) {\n this.document = this.injector.get(DOCUMENT);\n this.focusTrapsTracker.current = this;\n }\n\n private _config: FocusTrapConfig = {\n strict: true,\n };\n @Input('clrFocusTrap')\n set config(config: FocusTrapConfig | string) {\n this._config = Object.assign(this._config, config === '' ? {} : config);\n }\n\n @HostListener('document:focusin', ['$event'])\n onFocusIn(event: any) {\n const nativeElement: HTMLElement = this.el.nativeElement;\n if (\n this.focusTrapsTracker.current !== this ||\n !isPlatformBrowser(this.platformId) ||\n this.localFocusEscaped ||\n nativeElement.contains(event.target)\n ) {\n return;\n }\n if (event.target === this.topReboundEl && nativeElement.contains(event.relatedTarget)) {\n this.focusLastFocusable();\n // if it fails to focus element inside the trap, focus the trap element.\n this.focusTrapElIfOutside();\n } else if (event.target === this.bottomReboundEl && nativeElement.contains(event.relatedTarget)) {\n this.focusFirstFocusable();\n // if it fails to focus element inside the trap, focus the trap element.\n this.focusTrapElIfOutside();\n } else {\n this._config.strict ? this.el.nativeElement.focus() : (this.localFocusEscaped = true);\n }\n }\n\n private createFocusableOffScreenEl(): any {\n // Not using Renderer2's createElement method because that leads to DOM leakage.\n // https://github.com/angular/angular/issues/26954\n const offScreenSpan = this.document.createElement('span');\n this.renderer.setAttribute(offScreenSpan, 'tabindex', '0');\n this.renderer.addClass(offScreenSpan, 'offscreen-focus-rebounder');\n\n return offScreenSpan;\n }\n\n private addReboundEls() {\n if (isPlatformBrowser(this.platformId)) {\n this.topReboundEl = this.createFocusableOffScreenEl();\n this.bottomReboundEl = this.createFocusableOffScreenEl();\n const hostElement = this.el.nativeElement;\n // Add reboundBeforeTrapEl right outside of host element\n this.renderer.insertBefore(hostElement.parentElement, this.topReboundEl, hostElement);\n // Add reboundAfterTrapEl right after host element\n if (hostElement.nextSibling) {\n this.renderer.insertBefore(hostElement.parentNode, this.bottomReboundEl, hostElement.nextSibling);\n } else {\n this.renderer.appendChild(hostElement.parentNode, this.bottomReboundEl);\n }\n }\n }\n\n private removeReboundEls() {\n if (isPlatformBrowser(this.platformId) && this.topReboundEl && this.bottomReboundEl) {\n this.parentElement.removeChild(this.topReboundEl);\n this.parentElement.removeChild(this.bottomReboundEl);\n // These are here to to make sure that\n // we completely delete all traces of the removed DOM objects.\n delete this.topReboundEl;\n delete this.bottomReboundEl;\n }\n }\n\n public setPreviousFocus(): void {\n if (this.previousActiveElement && this.previousActiveElement.focus) {\n this.previousActiveElement.focus();\n }\n }\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.renderer.setAttribute(this.el.nativeElement, 'tabindex', '-1');\n this.el.nativeElement.focus();\n }\n }\n\n ngAfterViewInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.previousActiveElement = this.document.activeElement as HTMLElement;\n this.parentElement = this.el.nativeElement.parentElement;\n }\n\n this.addReboundEls();\n }\n\n private get potentiallyFocusableEls(): HTMLElement[] {\n return [...this.el.nativeElement.querySelectorAll(FOCUSABLES)];\n }\n\n private focusFirstFocusable() {\n for (let i = 0; i < this.potentiallyFocusableEls.length; i++) {\n this.firstFocusableEl = this.focusElement(this.potentiallyFocusableEls[i]);\n if (this.firstFocusableEl) {\n break;\n }\n }\n }\n\n private focusLastFocusable() {\n for (let i = this.potentiallyFocusableEls.length - 1; i >= 0; i--) {\n this.lastFocusableEl = this.focusElement(this.potentiallyFocusableEls[i]);\n if (this.lastFocusableEl) {\n break;\n }\n }\n }\n\n private focusTrapElIfOutside() {\n if (!this.el.nativeElement.contains(document.activeElement)) {\n this.el.nativeElement.focus();\n }\n }\n\n private focusElement(el: HTMLElement): HTMLElement {\n if (el && el.focus) {\n el.focus();\n if (document.activeElement === el) {\n return el;\n }\n }\n return null;\n }\n\n ngOnDestroy() {\n this.removeReboundEls();\n this.setPreviousFocus();\n this.focusTrapsTracker.activatePreviousTrapper();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FocusTrapDirective } from './focus-trap.directive';\n\nexport const FOCUS_TRAP_DIRECTIVES: Type<any>[] = [FocusTrapDirective];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [FOCUS_TRAP_DIRECTIVES],\n exports: [FOCUS_TRAP_DIRECTIVES],\n})\nexport class ClrFocusTrapModule {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport const UP_ARROW = 38;\nexport const DOWN_ARROW = 40;\nexport const RIGHT_ARROW = 39;\nexport const LEFT_ARROW = 37;\nexport const ENTER = 13;\nexport const SPACE = 32;\nexport const SHIFT = 16;\nexport const TAB = 9;\nexport const ESC = 27;\nexport const BACKSPACE = 8;\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n/**\n * This is the en-001 short locale date format. Setting as default.\n */\nexport const DEFAULT_LOCALE_FORMAT = 'dd/MM/y';\n\n// https://en.wikipedia.org/wiki/Date_format_by_country\nexport const LITTLE_ENDIAN_REGEX = /d+.+m+.+y+/i;\nexport const MIDDLE_ENDIAN_REGEX = /m+.+d+.+y+/i;\n// No need for BIG_ENDIAN_REGEX because anything that doesn't satisfy the above 2\n// is automatically BIG_ENDIAN\n\nexport const DELIMITER_REGEX = /d+|m+|y+/i;\n\nexport const USER_INPUT_REGEX = /\\d+/g;\n\nexport const MOBILE_USERAGENT_REGEX = /Mobi/i;\n\nexport const RTL_REGEX = /\\u200f/g;\n\nexport const YEAR = 'YYYY';\nexport const MONTH = 'MM';\nexport const DATE = 'DD';\n\nexport type FormatType = 'LITTLE_ENDIAN' | 'MIDDLE_ENDIAN' | 'BIG_ENDIAN';\n\nexport type InputDateDisplayFormat = {\n readonly name: FormatType;\n readonly format: [string, string, string];\n};\n\nexport const LITTLE_ENDIAN: InputDateDisplayFormat = {\n name: 'LITTLE_ENDIAN',\n format: [DATE, MONTH, YEAR],\n};\n\nexport const MIDDLE_ENDIAN: InputDateDisplayFormat = {\n name: 'MIDDLE_ENDIAN',\n format: [MONTH, DATE, YEAR],\n};\n\nexport const BIG_ENDIAN: InputDateDisplayFormat = {\n name: 'BIG_ENDIAN',\n format: [YEAR, MONTH, DATE],\n};\n\nexport const NO_OF_DAYS_IN_A_WEEK = 7;\nexport const NO_OF_ROWS_IN_CALENDAR_VIEW = 6;\nexport const TOTAL_DAYS_IN_DAYS_VIEW: number = NO_OF_DAYS_IN_A_WEEK * NO_OF_ROWS_IN_CALENDAR_VIEW;\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { WeekDay } from '@angular/common';\n\n/**\n * Returns the number of days in a month.\n */\nexport function getNumberOfDaysInTheMonth(year: number, month: number): number {\n // If we go to the next month, but use a day of 0, it returns the last day from the previous month\n return new Date(year, month + 1, 0).getDate();\n}\n\n/**\n * Returns the day for the corresponding date where 0 represents Sunday.\n */\nexport function getDay(year: number, month: number, date: number): WeekDay {\n return new Date(year, month, date).getDay();\n}\n\n/**\n * Takes in a year and if it is a 2 digit year, returns the corresponding 4 digit year.\n * Window of 80 years before and 20 years after the present year.\n * Credit: https://github.com/globalizejs/globalize/blob/e1b31cd6a4f1cff75b185b68b7a32220aac5196f/src/date/parse.js\n */\nexport function parseToFourDigitYear(year: number): number {\n if (year > 9999 || (year > 100 && year < 999) || year < 10) {\n return -1;\n }\n if (year > 999) {\n return year;\n }\n const currYear: number = new Date().getFullYear();\n const century: number = Math.floor(currYear / 100) * 100;\n let result: number = year + century;\n if (result > currYear + 20) {\n result = result - 100;\n }\n return result;\n}\n\nexport function datesAreEqual(date1: Date, date2: Date) {\n if (date1 instanceof Date && date2 instanceof Date) {\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n } else {\n return false;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { DayModel } from './day.model';\n\nexport class DayViewModel {\n constructor(\n public dayModel: DayModel,\n public isTodaysDate: boolean = false,\n public isExcluded: boolean = false,\n public isDisabled: boolean = false,\n public isSelected: boolean = false,\n public isFocusable: boolean = false\n ) {}\n\n /**\n * Gets the tab index based on the isFocusable flag.\n */\n get tabIndex(): number {\n return this.isFocusable ? 0 : -1;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport class DayModel {\n constructor(public readonly year: number, public readonly month: number, public readonly date: number) {}\n\n /**\n * Checks if the passed CalendarDate is equal to itself.\n */\n isEqual(day: DayModel) {\n if (day) {\n return this.year === day.year && this.month === day.month && this.date === day.date;\n }\n return false;\n }\n\n toDate(): Date {\n return new Date(this.year, this.month, this.date);\n }\n\n /**\n * Returns a new DayModel which is incremented based on the value passed.\n */\n incrementBy(value: number): DayModel {\n // Creating new Javascript Date object to increment because\n // it will automatically take care of switching to next or previous\n // months & years without we having to worry about it.\n const date: Date = new Date(this.year, this.month, this.date + value);\n return new DayModel(date.getFullYear(), date.getMonth(), date.getDate());\n }\n\n /**\n * Clones the current day model.\n */\n clone(): DayModel {\n return new DayModel(this.year, this.month, this.date);\n }\n\n toComparisonString(): string {\n return `${this.year}${this.pad(this.month)}${this.pad(this.date)}`;\n }\n\n private pad(num: number): string {\n return num < 10 ? `0${num}` : `${num}`;\n }\n\n public toDateString(): string {\n return this.toDate().toLocaleDateString();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { NO_OF_DAYS_IN_A_WEEK, NO_OF_ROWS_IN_CALENDAR_VIEW, TOTAL_DAYS_IN_DAYS_VIEW } from '../utils/constants';\nimport { getDay } from '../utils/date-utils';\n\nimport { CalendarModel } from './calendar.model';\nimport { DayViewModel } from './day-view.model';\nimport { DayModel } from './day.model';\nimport { DateRange } from '../interfaces/date-range.interface';\n\nexport class CalendarViewModel {\n constructor(\n public calendar: CalendarModel,\n private selectedDay: DayModel,\n private focusableDay: DayModel,\n private today: DayModel,\n public firstDayOfWeek: number,\n private excludedDates: DateRange\n ) {\n this.initializeCalendarView();\n }\n\n private currMonthDayViews: DayViewModel[] = [];\n\n private _calendarView: DayViewModel[][];\n\n /**\n * DayViewModel matrix. Size 6x7\n */\n get calendarView(): DayViewModel[][] {\n return this._calendarView;\n }\n\n /**\n * Generates a 6x7 matrix of DayViewModel based on the Calendar.\n * The 6x7 matrix is structured according to the first day of the week.\n * 6 rows to accommodate months which might have dates spanning over 6 weeks.\n * 7 columns because there are 7 days in a week :P :D\n */\n private initializeCalendarView(): void {\n // Generate prev and next month calendar models.\n const prevMonthCalendar: CalendarModel = this.calendar.previousMonth();\n const nextMonthCalendar: CalendarModel = this.calendar.nextMonth();\n\n // Get no of days from prev and next months.\n const daysFromPrevMonthInCalView: number = this.numDaysFromPrevMonthInCalView(\n this.calendar.year,\n this.calendar.month\n );\n const daysFromNextMonthInCalView: number =\n TOTAL_DAYS_IN_DAYS_VIEW - (this.calendar.days.length + daysFromPrevMonthInCalView);\n\n // Generate prev, curr and next day view models\n let prevMonthDayViews: DayViewModel[] = [];\n let nextMonthDayViews: DayViewModel[] = [];\n\n if (daysFromPrevMonthInCalView > 0) {\n prevMonthDayViews = this.generateDayViewModels(\n prevMonthCalendar.days.slice(-1 * daysFromPrevMonthInCalView),\n true,\n false\n );\n }\n\n this.currMonthDayViews = this.generateDayViewModels(this.calendar.days, false, true);\n\n if (daysFromNextMonthInCalView > 0) {\n nextMonthDayViews = this.generateDayViewModels(\n nextMonthCalendar.days.slice(0, daysFromNextMonthInCalView),\n true,\n false\n );\n }\n\n // Generate calendar view and initialize flags\n this._calendarView = this.generateCalendarView(prevMonthDayViews, this.currMonthDayViews, nextMonthDayViews);\n this.initializeSelectedDay();\n this.initializeFocusableDay();\n }\n\n private isDateExcluded(date: DayModel) {\n const { minDate, maxDate }: DateRange = this.excludedDates;\n const from = minDate.toComparisonString();\n const to = maxDate.toComparisonString();\n const today = date.toComparisonString();\n\n return !(today >= from && today <= to);\n }\n\n /**\n * Generates a DayViewModel array based on the DayModel passed\n */\n private generateDayViewModels(days: DayModel[], isExcluded: boolean, isCurrentCalendar: boolean): DayViewModel[] {\n const dayViews: DayViewModel[] = days.map(day => {\n return new DayViewModel(day, false, isExcluded, this.isDateExcluded(day), false, false);\n });\n if (isCurrentCalendar && this.calendar.isDayInCalendar(this.today)) {\n dayViews[this.today.date - 1].isTodaysDate = true;\n }\n return dayViews;\n }\n\n /**\n * Gets the first day of the current month to figure out how many dates of previous month\n * are needed to complete the Calendar View based on the first day of the week.\n * eg: Assuming locale en-US, the first day of the week is Sunday,\n * if first day of the current month lands on Wednesday, then\n * (this.getDay function would return 3 since\n * first day of the week is 0), we need the 3 days from the previous month.\n */\n private numDaysFromPrevMonthInCalView(currentYear: number, currentMonth: number): number {\n const firstDayOfCurrMonth: number = getDay(currentYear, currentMonth, 1);\n\n if (firstDayOfCurrMonth >= this.firstDayOfWeek) {\n return firstDayOfCurrMonth - this.firstDayOfWeek;\n } else {\n return NO_OF_DAYS_IN_A_WEEK + firstDayOfCurrMonth - this.firstDayOfWeek;\n }\n }\n\n /**\n * Checks if the Day passed is in the CalendarView.\n */\n private isDayInCalendarView(day: DayModel): boolean {\n if (!this.calendar.isDayInCalendar(day)) {\n return false;\n }\n return true;\n }\n\n /**\n * Using the DayViewModels from the previous, current and next month, this function\n * generates the CalendarView.\n */\n private generateCalendarView(prev: DayViewModel[], curr: DayViewModel[], next: DayViewModel[]): DayViewModel[][] {\n const combinationArr: DayViewModel[] = [...prev, ...curr, ...next];\n\n const calendarView: DayViewModel[][] = [];\n for (let i = 0; i < NO_OF_ROWS_IN_CALENDAR_VIEW; i++) {\n calendarView[i] = combinationArr.slice(i * NO_OF_DAYS_IN_A_WEEK, (i + 1) * NO_OF_DAYS_IN_A_WEEK);\n }\n return calendarView;\n }\n\n /**\n * Initialize the selected day if the day is in the calendar.\n */\n private initializeSelectedDay(): void {\n if (this.selectedDay && this.isDayInCalendarView(this.selectedDay)) {\n this.currMonthDayViews[this.selectedDay.date - 1].isSelected = true;\n }\n }\n\n /**\n * Initializes the focusable day if the day is in the calendar. If focusable day is not set, then\n * we check for the selected day. If selected day is not set then check if today is in the current\n * calendar. If not then just set the 15th of the current calendar month.\n */\n private initializeFocusableDay(): void {\n if (this.focusableDay && this.isDayInCalendarView(this.focusableDay)) {\n this.setFocusableFlag(this.focusableDay, true);\n } else if (this.selectedDay && this.isDayInCalendarView(this.selectedDay)) {\n this.setFocusableFlag(this.selectedDay, true);\n this.focusableDay = this.selectedDay.clone();\n } else if (this.isDayInCalendarView(this.today)) {\n this.setFocusableFlag(this.today, true);\n this.focusableDay = this.today.clone();\n } else {\n this.focusableDay = new DayModel(this.calendar.year, this.calendar.month, 15);\n this.setFocusableFlag(this.focusableDay, true);\n }\n }\n\n private setFocusableFlag(day: DayModel, flag: boolean): void {\n if (day) {\n this.currMonthDayViews[day.date - 1].isFocusable = flag;\n }\n }\n\n /**\n * Updates the focusable day in the calendar.\n */\n updateFocusableDay(day: DayModel): void {\n this.setFocusableFlag(this.focusableDay, false);\n this.setFocusableFlag(day, true);\n this.focusableDay = day;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n FormatWidth,\n FormStyle,\n getLocaleDateFormat,\n getLocaleDayNames,\n getLocaleFirstDayOfWeek,\n getLocaleMonthNames,\n TranslationWidth,\n} from '@angular/common';\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { ClrDayOfWeek } from '../interfaces/day-of-week.interface';\n\n/**\n * This service extracts the Angular CLDR data needed by the datepicker.\n */\n@Injectable()\nexport class LocaleHelperService {\n constructor(@Inject(LOCALE_ID) public locale: string) {\n this.initializeLocaleData();\n }\n\n private _firstDayOfWeek = 0;\n private _localeDays: ReadonlyArray<ClrDayOfWeek>;\n private _localeMonthsAbbreviated: ReadonlyArray<string>;\n private _localeMonthsWide: ReadonlyArray<string>;\n private _localeDateFormat: string;\n\n get firstDayOfWeek(): number {\n return this._firstDayOfWeek;\n }\n\n get localeDays(): ReadonlyArray<ClrDayOfWeek> {\n return this._localeDays;\n }\n\n // leave for backward compatibility\n get localeDaysNarrow(): ReadonlyArray<string> {\n return this._localeDays.map(day => day.narrow);\n }\n\n get localeMonthsAbbreviated(): ReadonlyArray<string> {\n return this._localeMonthsAbbreviated;\n }\n\n get localeMonthsWide(): ReadonlyArray<string> {\n return this._localeMonthsWide;\n }\n\n get localeDateFormat(): string {\n return this._localeDateFormat;\n }\n\n /**\n * Initializes the locale data.\n */\n private initializeLocaleData(): void {\n // Order in which these functions is called is very important.\n this.initializeFirstDayOfWeek();\n this.initializeLocaleDateFormat();\n this.initializeLocaleMonthsAbbreviated();\n this.initializeLocaleMonthsWide();\n this.initializeLocaleDays();\n }\n\n /**\n * Initialize day names based on the locale.\n * eg: [{day: Sunday, narrow: S}, {day: Monday, narrow: M}...] for en-US.\n */\n private initializeLocaleDays(): void {\n // Get locale day names starting with Sunday\n const tempArr = [];\n const tempWideArr: string[] = getLocaleDayNames(this.locale, FormStyle.Standalone, TranslationWidth.Wide).slice();\n const tempNarrowArr: string[] = getLocaleDayNames(\n this.locale,\n FormStyle.Standalone,\n TranslationWidth.Narrow\n ).slice();\n // Get first day of the week based on the locale\n const firstDayOfWeek: number = this.firstDayOfWeek;\n for (let i = 0; i < 7; i++) {\n tempArr.push({ day: tempWideArr[i], narrow: tempNarrowArr[i] });\n }\n // Rearrange the tempArr to start with the first day of the week based on the locale.\n if (firstDayOfWeek > 0) {\n const prevDays: { day: string; narrow: string }[] = tempArr.splice(0, firstDayOfWeek);\n tempArr.push(...prevDays);\n }\n this._localeDays = tempArr;\n }\n\n /**\n * Initializes the array of month names in the TranslationWidth.Abbreviated format.\n * e.g. `[Jan, Feb, ...]` for en-US\n */\n private initializeLocaleMonthsAbbreviated(): void {\n this._localeMonthsAbbreviated = getLocaleMonthNames(\n this.locale,\n FormStyle.Standalone,\n TranslationWidth.Abbreviated\n ).slice();\n }\n\n /**\n * Initializes the array of month names in the TranslationWidth.Wide format.\n * e.g. `[January, February, ...]` for en-US\n */\n private initializeLocaleMonthsWide(): void {\n this._localeMonthsWide = getLocaleMonthNames(this.locale, FormStyle.Standalone, TranslationWidth.Wide).slice();\n }\n\n /**\n * Initializes the first day of the week based on the locale.\n */\n private initializeFirstDayOfWeek(): void {\n this._firstDayOfWeek = getLocaleFirstDayOfWeek(this.locale);\n }\n\n private initializeLocaleDateFormat(): void {\n this._localeDateFormat = getLocaleDateFormat(this.locale, FormatWidth.Short);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { getNumberOfDaysInTheMonth } from '../utils/date-utils';\n\nimport { DayModel } from './day.model';\n\nexport class CalendarModel {\n constructor(public readonly year: number, public readonly month: number) {\n this.initializeDaysInCalendar();\n }\n\n days: DayModel[];\n\n /**\n * Populates the days array with the DayModels in the current Calendar.\n */\n private initializeDaysInCalendar(): void {\n const noOfDaysInCalendar: number = getNumberOfDaysInTheMonth(this.year, this.month);\n this.days = Array(noOfDaysInCalendar)\n .fill(null)\n .map((_date, index) => {\n return new DayModel(this.year, this.month, index + 1);\n });\n }\n\n /**\n * Checks if the calendar passed is equal to the current calendar.\n */\n isEqual(calendar: CalendarModel) {\n if (calendar) {\n return this.year === calendar.year && this.month === calendar.month;\n }\n return false;\n }\n\n /**\n * Checks if a DayModel is in the Calendar\n */\n isDayInCalendar(day: DayModel): boolean {\n if (day) {\n return this.year === day.year && this.month === day.month;\n }\n return false;\n }\n\n /**\n * Returns CalendarModel of the previous month.\n */\n previousMonth(): CalendarModel {\n if (this.month === 0) {\n return new CalendarModel(this.year - 1, 11);\n } else {\n return new CalendarModel(this.year, this.month - 1);\n }\n }\n\n /**\n * Returns CalendarModel of the next month.\n */\n nextMonth(): CalendarModel {\n if (this.month === 11) {\n return new CalendarModel(this.year + 1, 0);\n } else {\n return new CalendarModel(this.year, this.month + 1);\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\nimport { CalendarModel } from '../model/calendar.model';\nimport { DayModel } from '../model/day.model';\n\n/**\n * This service is responsible for:\n * 1. Initializing the displayed calendar.\n * 2. Moving the calendar to the next, previous or current months\n * 3. Managing the focused and selected day models.\n */\n@Injectable()\nexport class DateNavigationService {\n private _displayedCalendar: CalendarModel;\n\n get displayedCalendar(): CalendarModel {\n return this._displayedCalendar;\n }\n\n // not a setter because i want this to remain private\n private setDisplayedCalendar(value: CalendarModel) {\n if (!this._displayedCalendar.isEqual(value)) {\n this._displayedCalendar = value;\n this._displayedCalendarChange.next();\n }\n }\n\n /**\n * Variable to store today's date.\n */\n private _todaysFullDate: Date = new Date();\n private _today: DayModel;\n\n private initializeTodaysDate(): void {\n this._todaysFullDate = new Date();\n this._today = new DayModel(\n this._todaysFullDate.getFullYear(),\n this._todaysFullDate.getMonth(),\n this._todaysFullDate.getDate()\n );\n }\n\n get today(): DayModel {\n return this._today;\n }\n\n public selectedDay: DayModel;\n\n private _selectedDayChange: Subject<DayModel> = new Subject<DayModel>();\n\n get selectedDayChange(): Observable<DayModel> {\n return this._selectedDayChange.asObservable();\n }\n\n /**\n * Notifies that the selected day has changed so that the date can be emitted to the user.\n * Note: Only to be called from day.ts\n */\n notifySelectedDayChanged(dayModel: DayModel) {\n this.selectedDay = dayModel;\n this._selectedDayChange.next(dayModel);\n }\n\n public focusedDay: DayModel;\n\n /**\n * Initializes the calendar based on the selected day.\n */\n initializeCalendar(): void {\n this.focusedDay = null; // Can be removed later on the store focus\n this.initializeTodaysDate();\n if (this.selectedDay) {\n this._displayedCalendar = new CalendarModel(this.selectedDay.year, this.selectedDay.month);\n } else {\n this._displayedCalendar = new CalendarModel(this.today.year, this.today.month);\n }\n }\n\n changeMonth(month: number): void {\n this.setDisplayedCalendar(new CalendarModel(this._displayedCalendar.year, month));\n }\n\n changeYear(year: number): void {\n this.setDisplayedCalendar(new CalendarModel(year, this._displayedCalendar.month));\n }\n\n /**\n * Moves the displayed calendar to the next month.\n */\n moveToNextMonth(): void {\n this.setDisplayedCalendar(this._displayedCalendar.nextMonth());\n }\n\n /**\n * Moves the displayed calendar to the previous month.\n */\n moveToPreviousMonth(): void {\n this.setDisplayedCalendar(this._displayedCalendar.previousMonth());\n }\n\n /**\n * Moves the displayed calendar to the current month and year.\n */\n moveToCurrentMonth(): void {\n if (!this.displayedCalendar.isDayInCalendar(this.today)) {\n this.setDisplayedCalendar(new CalendarModel(this.today.year, this.today.month));\n }\n this._focusOnCalendarChange.next();\n }\n\n incrementFocusDay(value: number): void {\n this.focusedDay = this.focusedDay.incrementBy(value);\n if (this._displayedCalendar.isDayInCalendar(this.focusedDay)) {\n this._focusedDayChange.next(this.focusedDay);\n } else {\n this.setDisplayedCalendar(new CalendarModel(this.focusedDay.year, this.focusedDay.month));\n }\n this._focusOnCalendarChange.next();\n }\n\n private _displayedCalendarChange: Subject<void> = new Subject<void>();\n\n /**\n * This observable lets the subscriber know that the displayed calendar has changed.\n */\n get displayedCalendarChange(): Observable<void> {\n return this._displayedCalendarChange.asObservable();\n }\n\n private _focusOnCalendarChange: Subject<void> = new Subject<void>();\n\n /**\n * This observable lets the subscriber know that the focus should be applied on the calendar.\n */\n get focusOnCalendarChange(): Observable<void> {\n return this._focusOnCalendarChange.asObservable();\n }\n\n private _focusedDayChange: Subject<DayModel> = new Subject<DayModel>();\n\n /**\n * This observable lets the subscriber know that the focused day in the displayed calendar has changed.\n */\n get focusedDayChange(): Observable<DayModel> {\n return this._focusedDayChange.asObservable();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport { ElementRef, Inject, Injectable, NgZone, PLATFORM_ID } from '@angular/core';\nimport { first, filter } from 'rxjs/operators';\n\n/**\n * This service focuses the day that is focusable in the calendar.\n */\n@Injectable()\nexport class DatepickerFocusService {\n constructor(private _ngZone: NgZone, @Inject(PLATFORM_ID) private platformId: any) {}\n\n focusCell(elRef: ElementRef): void {\n this._ngZone.runOutsideAngular(() => {\n this.ngZoneIsStableInBrowser().subscribe(() => {\n const focusEl = elRef.nativeElement.querySelector('[tabindex=\"0\"]');\n if (focusEl) {\n focusEl.focus();\n }\n });\n });\n }\n\n focusInput(element: HTMLInputElement): void {\n this._ngZone.runOutsideAngular(() => this.ngZoneIsStableInBrowser().subscribe(() => element.focus()));\n }\n\n elementIsFocused(element: HTMLInputElement) {\n return isPlatformBrowser(this.platformId) && document.activeElement === element;\n }\n\n private ngZoneIsStableInBrowser() {\n // Credit: Material: https://github.com/angular/material2/blob/master/src/lib/datepicker/calendar.ts\n return this._ngZone.onStable.asObservable().pipe(\n first(),\n filter(() => isPlatformBrowser(this.platformId))\n );\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\n\nimport {\n BIG_ENDIAN,\n DEFAULT_LOCALE_FORMAT,\n DELIMITER_REGEX,\n InputDateDisplayFormat,\n LITTLE_ENDIAN,\n LITTLE_ENDIAN_REGEX,\n MIDDLE_ENDIAN,\n MIDDLE_ENDIAN_REGEX,\n RTL_REGEX,\n USER_INPUT_REGEX,\n} from '../utils/constants';\nimport { getNumberOfDaysInTheMonth, parseToFourDigitYear } from '../utils/date-utils';\n\nimport { LocaleHelperService } from './locale-helper.service';\nimport { DateRange } from '../interfaces/date-range.interface';\nimport { DayModel } from '../model/day.model';\n\n@Injectable()\nexport class DateIOService {\n public disabledDates: DateRange = {\n // This is the default range. It approximates the beginning of time to the end of time.\n // Unless a minDate or maxDate is set with the native HTML5 api the range is all dates\n // TODO: turn this into an Array of min/max ranges that allow configuration of multiple ranges.\n minDate: new DayModel(0, 0, 1),\n maxDate: new DayModel(9999, 11, 31),\n };\n public cldrLocaleDateFormat: string = DEFAULT_LOCALE_FORMAT;\n private localeDisplayFormat: InputDateDisplayFormat = LITTLE_ENDIAN;\n private delimiters: [string, string] = ['/', '/'];\n\n constructor(private _localeHelperService: LocaleHelperService) {\n this.cldrLocaleDateFormat = this._localeHelperService.localeDateFormat;\n this.initializeLocaleDisplayFormat();\n }\n\n public setMinDate(date: string): void {\n // NOTE: I'm expecting consumers to pass one of four things here:\n // A proper date string(2019-11-11), null, undefined or empty string ('')\n if (!date) {\n // attribute binding was removed, reset back to the beginning of time\n this.disabledDates.minDate = new DayModel(0, 0, 1);\n } else {\n const [year, month, day] = date.split('-').map(n => parseInt(n, 10));\n this.disabledDates.minDate = new DayModel(year, month - 1, day);\n }\n }\n\n public setMaxDate(date: string): void {\n // NOTE: I'm expecting consumers to pass one of four things here:\n // A proper date string(2019-11-11), null, undefined or empty string ('')\n if (!date) {\n // attribute binding was removed, reset forward to the end of time\n this.disabledDates.maxDate = new DayModel(9999, 11, 31);\n } else {\n const [year, month, day] = date.split('-').map(n => parseInt(n, 10));\n this.disabledDates.maxDate = new DayModel(year, month - 1, day);\n }\n }\n\n private initializeLocaleDisplayFormat(): void {\n const format: string = this.cldrLocaleDateFormat.toLocaleLowerCase();\n if (LITTLE_ENDIAN_REGEX.test(format)) {\n this.localeDisplayFormat = LITTLE_ENDIAN;\n } else if (MIDDLE_ENDIAN_REGEX.test(format)) {\n this.localeDisplayFormat = MIDDLE_ENDIAN;\n } else {\n // everything else is set to BIG-ENDIAN FORMAT\n this.localeDisplayFormat = BIG_ENDIAN;\n }\n this.extractDelimiters();\n }\n\n private extractDelimiters(): void {\n if (this.cldrLocaleDateFormat) {\n // Sanitize Date Format. Remove RTL characters.\n // FIXME: When we support RTL, remove this and handle it correctly.\n const localeFormat: string = this.cldrLocaleDateFormat.replace(RTL_REGEX, '');\n const delimiters: string[] = localeFormat.split(DELIMITER_REGEX);\n\n // NOTE: The split from the CLDR date format should always result\n // in an arary with 4 elements. The 1st and the 2nd values are the delimiters\n // we will use in order.\n // Eg: \"dd/MM/y\".split(/d+|m+|y+/i) results in [\"\", \"/\", \"/\", \"\"]\n if (delimiters && delimiters.length === 4) {\n this.delimiters = [delimiters[1], delimiters[2]];\n } else {\n console.error('Unexpected date format received. Delimiters extracted: ', delimiters);\n }\n }\n }\n\n toLocaleDisplayFormatString(date: Date): string {\n if (date) {\n if (isNaN(date.getTime())) {\n return '';\n }\n const dateNo: number = date.getDate();\n const monthNo: number = date.getMonth() + 1;\n const dateStr: string = dateNo > 9 ? dateNo.toString() : '0' + dateNo;\n const monthStr: string = monthNo > 9 ? monthNo.toString() : '0' + monthNo;\n if (this.localeDisplayFormat === LITTLE_ENDIAN) {\n return dateStr + this.delimiters[0] + monthStr + this.delimiters[1] + date.getFullYear();\n } else if (this.localeDisplayFormat === MIDDLE_ENDIAN) {\n return monthStr + this.delimiters[0] + dateStr + this.delimiters[1] + date.getFullYear();\n } else {\n return date.getFullYear() + this.delimiters[0] + monthStr + this.delimiters[1] + dateStr;\n }\n }\n return '';\n }\n\n get placeholderText(): string {\n const format: [string, string, string] = this.localeDisplayFormat.format;\n return format[0] + this.delimiters[0] + format[1] + this.delimiters[1] + format[2];\n }\n\n /**\n * Checks if the month entered by the user is valid or not.\n * Note: Month is 0 based.\n */\n private isValidMonth(month: number): boolean {\n return month > -1 && month < 12;\n }\n\n /**\n * Checks if the date is valid depending on the year and month provided.\n */\n private isValidDate(year: number, month: number, date: number): boolean {\n return date > 0 && date <= getNumberOfDaysInTheMonth(year, month);\n }\n\n /**\n * Validates the parameters provided and returns the date.\n * If the parameters are not\n * valid then return null.\n * NOTE: (Month here is 1 based since the user has provided that as an input)\n */\n private validateAndGetDate(year: string, month: string, date: string): Date {\n // I don't know whats wrong with the TS compiler. It throws an error if I write\n // the below if statement. The error is:\n // Operator '!==' cannot be applied to types '2' and '4'\n // More info here: https://github.com/Microsoft/TypeScript/issues/12794#issuecomment-270342936\n /*\n if (year.length !== 2 || year.length !== 4) {\n return null;\n }\n */\n\n // Instead I have to write the logic like this x-(\n const y: number = +year;\n const m: number = +month - 1; // month is 0 based\n const d: number = +date;\n if (!this.isValidMonth(m) || !this.isValidDate(y, m, d)) {\n return null;\n }\n const result: number = parseToFourDigitYear(y);\n return result !== -1 ? new Date(result, m, d) : null;\n }\n\n getDateValueFromDateString(date: string): Date {\n if (!date) {\n return null;\n }\n const dateParts: string[] = date.match(USER_INPUT_REGEX);\n if (!dateParts || dateParts.length !== 3) {\n return null;\n }\n const [firstPart, secondPart, thirdPart] = dateParts;\n if (this.localeDisplayFormat === LITTLE_ENDIAN) {\n // secondPart is month && firstPart is date\n return this.validateAndGetDate(thirdPart, secondPart, firstPart);\n } else if (this.localeDisplayFormat === MIDDLE_ENDIAN) {\n // firstPart is month && secondPart is date\n return this.validateAndGetDate(thirdPart, firstPart, secondPart);\n } else {\n // secondPart is month && thirdPart is date\n return this.validateAndGetDate(firstPart, secondPart, thirdPart);\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable()\nexport class DateFormControlService {\n private _touchedChange: Subject<void> = new Subject<void>();\n public disabled: boolean;\n\n get touchedChange(): Observable<void> {\n return this._touchedChange.asObservable();\n }\n\n private _dirtyChange: Subject<void> = new Subject<void>();\n\n get dirtyChange(): Observable<void> {\n return this._dirtyChange.asObservable();\n }\n\n markAsTouched(): void {\n this._touchedChange.next();\n }\n\n markAsDirty(): void {\n this._dirtyChange.next();\n }\n\n // friendly wrapper\n setDisabled(state: boolean) {\n this.disabled = state;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, Input } from '@angular/core';\n\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\n\nimport { DayViewModel } from './model/day-view.model';\nimport { DayModel } from './model/day.model';\nimport { DateFormControlService } from './providers/date-form-control.service';\nimport { DateNavigationService } from './providers/date-navigation.service';\n\n@Component({\n selector: 'clr-day',\n template: `\n <button\n class=\"day-btn\"\n type=\"button\"\n [class.is-today]=\"dayView.isTodaysDate\"\n [class.is-excluded]=\"dayView.isExcluded\"\n [class.is-disabled]=\"dayView.isDisabled\"\n [class.is-selected]=\"dayView.isSelected\"\n [attr.tabindex]=\"dayView.tabIndex\"\n (click)=\"selectDay()\"\n (focus)=\"onDayViewFocus()\"\n [attr.aria-label]=\"dayString\"\n >\n {{ dayView.dayModel.date }}\n </button>\n `,\n host: { '[class.day]': 'true' },\n})\nexport class ClrDay {\n private _dayView: DayViewModel;\n public dayString: string;\n\n constructor(\n private _dateNavigationService: DateNavigationService,\n private _toggleService: ClrPopoverToggleService,\n private dateFormControlService: DateFormControlService\n ) {}\n\n /**\n * DayViewModel input which is used to build the Day View.\n */\n\n @Input('clrDayView')\n public set dayView(day: DayViewModel) {\n this._dayView = day;\n this.dayString = this._dayView.dayModel.toDateString();\n }\n\n public get dayView(): DayViewModel {\n return this._dayView;\n }\n\n /**\n * Updates the focusedDay in the DateNavigationService when the ClrDay is focused.\n */\n onDayViewFocus() {\n this._dateNavigationService.focusedDay = this.dayView.dayModel;\n }\n\n /**\n * Updates the selectedDay when the ClrDay is selected and closes the datepicker popover.\n */\n selectDay(): void {\n const day: DayModel = this.dayView.dayModel;\n this._dateNavigationService.notifySelectedDayChanged(day);\n this.dateFormControlService.markAsDirty();\n this._toggleService.open = false;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component, ElementRef, HostListener, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, UP_ARROW } from '../../utils/key-codes/key-codes';\n\nimport { CalendarViewModel } from './model/calendar-view.model';\nimport { CalendarModel } from './model/calendar.model';\nimport { DayModel } from './model/day.model';\nimport { DateNavigationService } from './providers/date-navigation.service';\nimport { DatepickerFocusService } from './providers/datepicker-focus.service';\nimport { LocaleHelperService } from './providers/locale-helper.service';\nimport { NO_OF_DAYS_IN_A_WEEK } from './utils/constants';\nimport { ClrDayOfWeek } from './interfaces/day-of-week.interface';\nimport { DateIOService } from './providers/date-io.service';\n\n@Component({ selector: 'clr-calendar', templateUrl: './calendar.html' })\nexport class ClrCalendar implements OnDestroy {\n private _subs: Subscription[] = [];\n constructor(\n private _localeHelperService: LocaleHelperService,\n private _dateNavigationService: DateNavigationService,\n private _datepickerFocusService: DatepickerFocusService,\n private _dateIOService: DateIOService,\n private _elRef: ElementRef\n ) {\n this.generateCalendarView();\n this.initializeSubscriptions();\n }\n\n /**\n * Calendar View Model to generate the Calendar.\n */\n calendarViewModel: CalendarViewModel;\n\n /**\n * Gets the locale days according to the TranslationWidth.Narrow format.\n */\n get localeDays(): ReadonlyArray<ClrDayOfWeek> {\n return this._localeHelperService.localeDays;\n }\n\n get calendar(): CalendarModel {\n return this._dateNavigationService.displayedCalendar;\n }\n\n get selectedDay(): DayModel {\n return this._dateNavigationService.selectedDay;\n }\n\n get focusedDay(): DayModel {\n return this._dateNavigationService.focusedDay;\n }\n\n get today(): DayModel {\n return this._dateNavigationService.today;\n }\n\n /**\n * Initialize subscriptions to:\n * 1. update the calendar view model.\n * 2. update the focusable day in the calendar view model.\n * 3. focus on the focusable day in the calendar.\n */\n private initializeSubscriptions(): void {\n this._subs.push(\n this._dateNavigationService.displayedCalendarChange.subscribe(() => {\n this.generateCalendarView();\n })\n );\n\n this._subs.push(\n this._dateNavigationService.focusedDayChange.subscribe((focusedDay: DayModel) => {\n this.calendarViewModel.updateFocusableDay(focusedDay);\n })\n );\n\n this._subs.push(\n this._dateNavigationService.focusOnCalendarChange.subscribe(() => {\n this._datepickerFocusService.focusCell(this._elRef);\n })\n );\n }\n\n /**\n * Generates the Calendar View based on the calendar retrieved from the DateNavigationService.\n */\n private generateCalendarView(): void {\n this.calendarViewModel = new CalendarViewModel(\n this.calendar,\n this.selectedDay,\n this.focusedDay,\n this.today,\n this._localeHelperService.firstDayOfWeek,\n this._dateIOService.disabledDates\n );\n }\n\n /**\n * Delegates Keyboard arrow navigation to the DateNavigationService.\n */\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n if (event && this.focusedDay) {\n switch (event.keyCode) {\n case UP_ARROW:\n event.preventDefault();\n this._dateNavigationService.incrementFocusDay(-1 * NO_OF_DAYS_IN_A_WEEK);\n break;\n case DOWN_ARROW:\n event.preventDefault();\n this._dateNavigationService.incrementFocusDay(NO_OF_DAYS_IN_A_WEEK);\n break;\n case LEFT_ARROW:\n event.preventDefault();\n this._dateNavigationService.incrementFocusDay(-1);\n break;\n case RIGHT_ARROW:\n event.preventDefault();\n this._dateNavigationService.incrementFocusDay(1);\n break;\n default:\n break; // No default case. ESLint x-(\n }\n }\n }\n\n /**\n * Focuses on the focusable day when the Calendar View is initialized.\n */\n ngAfterViewInit() {\n this._datepickerFocusService.focusCell(this._elRef);\n }\n\n /**\n * Unsubscribe from subscriptions.\n */\n ngOnDestroy(): void {\n this._subs.forEach((sub: Subscription) => sub.unsubscribe());\n }\n}\n","<table class=\"calendar-table\">\n <tr class=\"calendar-row weekdays\">\n <td *ngFor=\"let day of localeDays\" class=\"calendar-cell weekday\" role=\"heading\" [attr.aria-label]=\"day.day\">\n {{day.narrow}}\n </td>\n </tr>\n <tr class=\"calendar-row\" *ngFor=\"let row of calendarViewModel.calendarView\">\n <td *ngFor=\"let dayView of row\" class=\"calendar-cell\">\n <clr-day [clrDayView]=\"dayView\"></clr-day>\n </td>\n </tr>\n</table>\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable()\nexport class FocusService {\n private _focused: BehaviorSubject<boolean> = new BehaviorSubject(false as boolean);\n get focusChange(): Observable<boolean> {\n return this._focused.asObservable();\n }\n set focused(state: boolean) {\n this._focused.next(state);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n// iPad mini screen width\n// http://stephen.io/mediaqueries/#iPadMini\nexport const DATEPICKER_ENABLE_BREAKPOINT = 768;\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\n\nimport { DATEPICKER_ENABLE_BREAKPOINT } from '../../../utils/breakpoints/breakpoints';\nimport { MOBILE_USERAGENT_REGEX } from '../utils/constants';\n\n@Injectable()\nexport class DatepickerEnabledService {\n constructor(@Inject(DOCUMENT) private _document: any) {\n if (this._document) {\n this._isUserAgentMobile = MOBILE_USERAGENT_REGEX.test(_document.defaultView.navigator.userAgent);\n this._innerWidth = _document.defaultView.innerWidth;\n }\n }\n\n private _isUserAgentMobile = false;\n private _innerWidth: number;\n\n /**\n * Returns if the calendar should be active or not.\n * If the user agent is mobile and the screen width is less than DATEPICKER_ACTIVE_BREAKPOINT\n * then the calendar is inactive.\n */\n get isEnabled(): boolean {\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent\n // What they recommend is:\n //\"In summary, we recommend looking for the string 'Mobi'\n // anywhere in the User Agent to detect a mobile device.\"\n if (this._document) {\n if (this._innerWidth < DATEPICKER_ENABLE_BREAKPOINT && this._isUserAgentMobile) {\n return false;\n }\n }\n return true;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { ClrPopoverPositions } from '../../../utils/popover/enums/positions.enum';\nimport { ClrPopoverPosition } from '../../../utils/popover/interfaces/popover-position.interface';\n\nconst enum DatepickerViewEnum {\n MONTHVIEW = 'MONTHVIEW',\n YEARVIEW = 'YEARVIEW',\n DAYVIEW = 'DAYVIEW',\n}\n\n/**\n * This service manages which view is visible in the datepicker popover.\n */\n@Injectable()\nexport class ViewManagerService {\n private _currentView: DatepickerViewEnum = DatepickerViewEnum.DAYVIEW;\n position: ClrPopoverPosition = ClrPopoverPositions['bottom-left'];\n\n get isDayView(): boolean {\n return this._currentView === DatepickerViewEnum.DAYVIEW;\n }\n\n get isYearView(): boolean {\n return this._currentView === DatepickerViewEnum.YEARVIEW;\n }\n\n get isMonthView(): boolean {\n return this._currentView === DatepickerViewEnum.MONTHVIEW;\n }\n\n changeToMonthView(): void {\n this._currentView = DatepickerViewEnum.MONTHVIEW;\n }\n\n changeToYearView(): void {\n this._currentView = DatepickerViewEnum.YEARVIEW;\n }\n\n changeToDayView(): void {\n this._currentView = DatepickerViewEnum.DAYVIEW;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { AfterViewInit, Component, ElementRef, HostListener } from '@angular/core';\n\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, UP_ARROW } from '../../utils/key-codes/key-codes';\n\nimport { DateNavigationService } from './providers/date-navigation.service';\nimport { DatepickerFocusService } from './providers/datepicker-focus.service';\nimport { LocaleHelperService } from './providers/locale-helper.service';\nimport { ViewManagerService } from './providers/view-manager.service';\n\n@Component({\n selector: 'clr-monthpicker',\n template: `\n <button\n type=\"button\"\n class=\"calendar-btn month\"\n *ngFor=\"let month of monthNames; let monthIndex = index\"\n (click)=\"changeMonth(monthIndex)\"\n [class.is-selected]=\"monthIndex === calendarMonthIndex\"\n [attr.tabindex]=\"getTabIndex(monthIndex)\"\n >\n {{ month }}\n </button>\n `,\n host: {\n '[class.monthpicker]': 'true',\n },\n})\nexport class ClrMonthpicker implements AfterViewInit {\n constructor(\n private _viewManagerService: ViewManagerService,\n private _localeHelperService: LocaleHelperService,\n private _dateNavigationService: DateNavigationService,\n private _datepickerFocusService: DatepickerFocusService,\n private _elRef: ElementRef\n ) {\n this._focusedMonthIndex = this.calendarMonthIndex;\n }\n\n /**\n * Keeps track of the current focused month.\n */\n private _focusedMonthIndex: number;\n\n /**\n * Gets the months array which is used to rendered the monthpicker view.\n * Months are in the TranslationWidth.Wide format.\n */\n get monthNames(): ReadonlyArray<string> {\n return this._localeHelperService.localeMonthsWide;\n }\n\n /**\n * Gets the month value of the Calendar.\n */\n get calendarMonthIndex(): number {\n return this._dateNavigationService.displayedCalendar.month;\n }\n\n /**\n * Calls the DateNavigationService to update the month value of the calendar.\n * Also changes the view to the daypicker.\n */\n changeMonth(monthIndex: number) {\n this._dateNavigationService.changeMonth(monthIndex);\n this._viewManagerService.changeToDayView();\n }\n\n /**\n * Compares the month passed to the focused month and returns the tab index.\n */\n getTabIndex(monthIndex: number): number {\n return monthIndex === this._focusedMonthIndex ? 0 : -1;\n }\n\n /**\n * Handles the Keyboard arrow navigation for the monthpicker.\n */\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n // NOTE: Didn't move this to the date navigation service because\n // the logic is fairly simple and it didn't make sense for me\n // to create extra observables just to move this logic to the service.\n if (event) {\n const keyCode: number = event.keyCode;\n if (keyCode === UP_ARROW && this._focusedMonthIndex > 0) {\n event.preventDefault();\n this._focusedMonthIndex--;\n this._datepickerFocusService.focusCell(this._elRef);\n } else if (keyCode === DOWN_ARROW && this._focusedMonthIndex < 11) {\n event.preventDefault();\n this._focusedMonthIndex++;\n this._datepickerFocusService.focusCell(this._elRef);\n } else if (keyCode === RIGHT_ARROW && this._focusedMonthIndex < 6) {\n event.preventDefault();\n this._focusedMonthIndex = this._focusedMonthIndex + 6;\n this._datepickerFocusService.focusCell(this._elRef);\n } else if (keyCode === LEFT_ARROW && this._focusedMonthIndex > 5) {\n event.preventDefault();\n this._focusedMonthIndex = this._focusedMonthIndex - 6;\n this._datepickerFocusService.focusCell(this._elRef);\n }\n }\n }\n\n /**\n * Focuses on the current calendar month when the View is initialized.\n */\n ngAfterViewInit() {\n this._datepickerFocusService.focusCell(this._elRef);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nconst YEARS_TO_DISPLAY = 10;\n\nexport class YearRangeModel {\n constructor(private readonly year: number) {\n this.generateYearRange();\n }\n\n yearRange: number[] = [];\n\n /**\n * Gets the number in the middle of the range.\n */\n get middleYear(): number {\n return this.yearRange[Math.floor(this.yearRange.length / 2)];\n }\n\n /**\n * Generates the year range based on the year parameter.\n * eg: If 2018 is passed the output will be [2010, 2011, ..., 2019]\n */\n private generateYearRange() {\n const remainder: number = this.year % YEARS_TO_DISPLAY;\n const floor: number = this.year - remainder;\n const ceil: number = floor + YEARS_TO_DISPLAY;\n this.yearRange = this.generateRange(floor, ceil);\n }\n\n /**\n * Function which generate a range of numbers from floor to ceil.\n */\n private generateRange(floor: number, ceil: number): number[] {\n return Array.from({ length: ceil - floor }, (_v, k) => k + floor);\n }\n\n /**\n * Generates the YearRangeModel for the next decade.\n */\n nextDecade(): YearRangeModel {\n return new YearRangeModel(this.year + 10);\n }\n\n /**\n * Generates the YearRangeModel for the previous decade.\n */\n previousDecade(): YearRangeModel {\n return new YearRangeModel(this.year - 10);\n }\n\n /**\n * Generates the YearRangeModel for the current decade.\n */\n currentDecade(): YearRangeModel {\n return new YearRangeModel(new Date().getFullYear());\n }\n\n /**\n * Checks if the value is in the YearRangeModel.\n */\n inRange(value: number): boolean {\n return this.yearRange.indexOf(value) > -1;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { AfterViewInit, Component, ElementRef, HostListener } from '@angular/core';\n\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, UP_ARROW } from '../../utils/key-codes/key-codes';\n\nimport { YearRangeModel } from './model/year-range.model';\nimport { DateNavigationService } from './providers/date-navigation.service';\nimport { DatepickerFocusService } from './providers/datepicker-focus.service';\nimport { ViewManagerService } from './providers/view-manager.service';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\n\n@Component({\n selector: 'clr-yearpicker',\n template: `\n <div class=\"year-switchers\">\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"previousDecade()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerPreviousDecade\"\n >\n <cds-icon shape=\"angle\" direction=\"left\" [attr.title]=\"commonStrings.keys.datepickerPreviousDecade\"></cds-icon>\n </button>\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"currentDecade()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerCurrentDecade\"\n >\n <cds-icon shape=\"event\" [attr.title]=\"commonStrings.keys.datepickerCurrentDecade\"></cds-icon>\n </button>\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"nextDecade()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerNextDecade\"\n >\n <cds-icon shape=\"angle\" direction=\"right\" [attr.title]=\"commonStrings.keys.datepickerNextDecade\"></cds-icon>\n </button>\n </div>\n <div class=\"years\">\n <button\n *ngFor=\"let year of yearRangeModel.yearRange\"\n type=\"button\"\n class=\"calendar-btn year\"\n [attr.tabindex]=\"getTabIndex(year)\"\n [class.is-selected]=\"year === calendarYear\"\n (click)=\"changeYear(year)\"\n >\n {{ year }}\n </button>\n </div>\n `,\n host: {\n '[class.yearpicker]': 'true',\n },\n})\nexport class ClrYearpicker implements AfterViewInit {\n constructor(\n private _dateNavigationService: DateNavigationService,\n private _viewManagerService: ViewManagerService,\n private _datepickerFocusService: DatepickerFocusService,\n private _elRef: ElementRef,\n public commonStrings: ClrCommonStringsService\n ) {\n this.yearRangeModel = new YearRangeModel(this.calendarYear);\n this._focusedYear = this.calendarYear;\n this.updateRange(this.yearRangeModel);\n }\n\n private decadeRange: string;\n\n /**\n * YearRangeModel which is used to build the YearPicker view.\n */\n yearRangeModel: YearRangeModel;\n\n /**\n * Keeps track of the current focused year.\n */\n private _focusedYear: number;\n\n /**\n * Gets the year which the user is currently on.\n */\n get calendarYear(): number {\n return this._dateNavigationService.displayedCalendar.year;\n }\n\n /**\n * Increments the focus year by the value passed. Updates the YearRangeModel if the\n * new value is not in the current decade.\n */\n private incrementFocusYearBy(value: number): void {\n this._focusedYear = this._focusedYear + value;\n if (!this.yearRangeModel.inRange(this._focusedYear)) {\n if (value > 0) {\n this.yearRangeModel = this.yearRangeModel.nextDecade();\n } else {\n this.yearRangeModel = this.yearRangeModel.previousDecade();\n }\n }\n this._datepickerFocusService.focusCell(this._elRef);\n }\n\n /**\n * Calls the DateNavigationService to update the year value of the calendar.\n * Also changes the view to the daypicker.\n */\n changeYear(year: number): void {\n this._dateNavigationService.changeYear(year);\n this._viewManagerService.changeToDayView();\n }\n\n /**\n * Updates the YearRangeModel to the previous decade.\n */\n previousDecade(): void {\n this.yearRangeModel = this.yearRangeModel.previousDecade();\n this.updateRange(this.yearRangeModel);\n // Year in the yearpicker is not focused because while navigating to a different decade,\n // you want the focus to remain on the decade switcher arrows.\n }\n\n /**\n * Updates the YearRangeModel to the current decade.\n */\n currentDecade(): void {\n if (!this.yearRangeModel.inRange(this._dateNavigationService.today.year)) {\n this.yearRangeModel = this.yearRangeModel.currentDecade();\n }\n this._datepickerFocusService.focusCell(this._elRef);\n this.updateRange(this.yearRangeModel);\n }\n\n /**\n * Updates the YearRangeModel to the next decade.\n */\n nextDecade(): void {\n this.yearRangeModel = this.yearRangeModel.nextDecade();\n this.updateRange(this.yearRangeModel);\n // Year in the yearpicker is not focused because while navigating to a different decade,\n // you want the focus to remain on the decade switcher arrows.\n }\n\n /**\n * Compares the year passed to the focused year and returns the tab index.\n */\n getTabIndex(year: number): number {\n if (!this.yearRangeModel.inRange(this._focusedYear)) {\n if (this.yearRangeModel.inRange(this.calendarYear)) {\n this._focusedYear = this.calendarYear;\n } else {\n this._focusedYear = this.yearRangeModel.middleYear;\n }\n }\n return this._focusedYear === year ? 0 : -1;\n }\n\n /**\n * Handles the Keyboard arrow navigation for the yearpicker.\n */\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n // NOTE: Didn't move this to the date navigation service because\n // the logic is fairly simple and it didn't make sense for me\n // to create extra observables just to move this logic to the service.\n if (event) {\n const keyCode: number = event.keyCode;\n if (keyCode === UP_ARROW) {\n event.preventDefault();\n this.incrementFocusYearBy(-1);\n } else if (keyCode === DOWN_ARROW) {\n event.preventDefault();\n this.incrementFocusYearBy(1);\n } else if (keyCode === RIGHT_ARROW) {\n event.preventDefault();\n this.incrementFocusYearBy(5);\n } else if (keyCode === LEFT_ARROW) {\n event.preventDefault();\n this.incrementFocusYearBy(-5);\n }\n }\n }\n\n private updateRange(yrm: YearRangeModel): void {\n const floor = yrm.yearRange[0];\n const ceil = yrm.yearRange[yrm.yearRange.length - 1];\n this.decadeRange = `${floor} to ${ceil}`;\n }\n\n /**\n * Focuses on the current calendar year when the View is initialized.\n */\n ngAfterViewInit() {\n this._datepickerFocusService.focusCell(this._elRef);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component } from '@angular/core';\n\nimport { DateNavigationService } from './providers/date-navigation.service';\nimport { LocaleHelperService } from './providers/locale-helper.service';\nimport { ViewManagerService } from './providers/view-manager.service';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\n\n@Component({\n selector: 'clr-daypicker',\n templateUrl: './daypicker.html',\n host: { '[class.daypicker]': 'true' },\n})\nexport class ClrDaypicker {\n constructor(\n private _viewManagerService: ViewManagerService,\n private _dateNavigationService: DateNavigationService,\n private _localeHelperService: LocaleHelperService,\n public commonStrings: ClrCommonStringsService\n ) {}\n\n get monthAttrString(): string {\n return this.commonStrings.parse(this.commonStrings.keys.datepickerSelectMonthText, {\n CALENDAR_MONTH: this.calendarMonth,\n });\n }\n\n get yearAttrString(): string {\n return this.commonStrings.parse(this.commonStrings.keys.datepickerSelectYearText, {\n CALENDAR_YEAR: this.calendarYear.toString(),\n });\n }\n\n /**\n * Calls the ViewManagerService to change to the monthpicker view.\n */\n changeToMonthView(): void {\n this._viewManagerService.changeToMonthView();\n }\n\n /**\n * Calls the ViewManagerService to change to the yearpicker view.\n */\n changeToYearView(): void {\n this._viewManagerService.changeToYearView();\n }\n\n /**\n * Returns the month value of the calendar in the TranslationWidth.Abbreviated format.\n */\n get calendarMonth(): string {\n return this._localeHelperService.localeMonthsAbbreviated[this._dateNavigationService.displayedCalendar.month];\n }\n\n /**\n * Returns the year value of the calendar.\n */\n get calendarYear(): number {\n return this._dateNavigationService.displayedCalendar.year;\n }\n\n /**\n * Calls the DateNavigationService to move to the next month.\n */\n nextMonth(): void {\n this._dateNavigationService.moveToNextMonth();\n }\n\n /**\n * Calls the DateNavigationService to move to the previous month.\n */\n previousMonth(): void {\n this._dateNavigationService.moveToPreviousMonth();\n }\n\n /**\n * Calls the DateNavigationService to move to the current month.\n */\n currentMonth(): void {\n this._dateNavigationService.moveToCurrentMonth();\n }\n}\n","<div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n<div class=\"calendar-header\">\n <div class=\"calendar-pickers\">\n <button\n class=\"calendar-btn monthpicker-trigger\"\n type=\"button\"\n (click)=\"changeToMonthView()\"\n [attr.aria-label]=\"monthAttrString\"\n [attr.title]=\"monthAttrString\"\n >\n {{calendarMonth}}\n </button>\n <button\n class=\"calendar-btn yearpicker-trigger\"\n type=\"button\"\n (click)=\"changeToYearView()\"\n [attr.aria-label]=\"yearAttrString\"\n [attr.title]=\"yearAttrString\"\n >\n {{calendarYear}}\n </button>\n </div>\n <div class=\"calendar-switchers\">\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"previousMonth()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerPreviousMonth\"\n >\n <cds-icon shape=\"angle\" direction=\"left\" [attr.title]=\"commonStrings.keys.datepickerPreviousMonth\"></cds-icon>\n </button>\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"currentMonth()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerCurrentMonth\"\n >\n <cds-icon shape=\"event\" [attr.title]=\"commonStrings.keys.datepickerCurrentMonth\"></cds-icon>\n </button>\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"nextMonth()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerNextMonth\"\n >\n <cds-icon shape=\"angle\" direction=\"right\"></cds-icon>\n </button>\n </div>\n</div>\n<clr-calendar></clr-calendar>\n<div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\nimport { DatepickerFocusService } from './providers/datepicker-focus.service';\nimport { ViewManagerService } from './providers/view-manager.service';\n\n@Component({\n selector: 'clr-datepicker-view-manager',\n templateUrl: './datepicker-view-manager.html',\n providers: [DatepickerFocusService],\n host: {\n '[class.datepicker]': 'true',\n '[attr.aria-modal]': 'true',\n },\n})\nexport class ClrDatepickerViewManager {\n constructor(private viewManagerService: ViewManagerService) {}\n\n /**\n * Returns if the current view is the monthpicker.\n */\n get isMonthView(): boolean {\n return this.viewManagerService.isMonthView;\n }\n\n /**\n * Returns if the current view is the yearpicker.\n */\n get isYearView(): boolean {\n return this.viewManagerService.isYearView;\n }\n\n /**\n * Returns if the current view is the daypicker.\n */\n get isDayView(): boolean {\n return this.viewManagerService.isDayView;\n }\n}\n","<!--\n* Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n* This software is released under MIT license.\n* The full license information can be found in LICENSE in the root directory of this project.\n-->\n\n<clr-monthpicker *ngIf=\"isMonthView\"></clr-monthpicker>\n<clr-yearpicker *ngIf=\"isYearView\"></clr-yearpicker>\n<clr-daypicker *ngIf=\"isDayView\"></clr-daypicker>\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component, Optional, ViewChild, ElementRef, Input, AfterViewInit } from '@angular/core';\n\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { ControlClassService } from '../common/providers/control-class.service';\nimport { ControlIdService } from '../common/providers/control-id.service';\nimport { FocusService } from '../common/providers/focus.service';\nimport { LayoutService } from '../common/providers/layout.service';\nimport { NgControlService } from '../common/providers/ng-control.service';\n\nimport { DateFormControlService } from './providers/date-form-control.service';\nimport { DateIOService } from './providers/date-io.service';\nimport { DateNavigationService } from './providers/date-navigation.service';\nimport { DatepickerEnabledService } from './providers/datepicker-enabled.service';\nimport { LocaleHelperService } from './providers/locale-helper.service';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrPopoverPositions } from '../../utils/popover/enums/positions.enum';\nimport { ClrPopoverPosition } from '../../utils/popover/interfaces/popover-position.interface';\nimport { ClrPopoverEventsService } from '../../utils/popover/providers/popover-events.service';\nimport { ClrPopoverPositionService } from '../../utils/popover/providers/popover-position.service';\nimport { ViewManagerService } from './providers/view-manager.service';\nimport { IfControlStateService } from '../common/if-control-state/if-control-state.service';\nimport { ClrAbstractContainer } from '../common/abstract-container';\n\n@Component({\n selector: 'clr-date-container',\n template: `\n <ng-content select=\"label\"></ng-content>\n <label *ngIf=\"!label && addGrid()\"></label>\n <div class=\"clr-control-container\" [ngClass]=\"controlClass()\">\n <div class=\"clr-input-wrapper\" clrPopoverAnchor>\n <div class=\"clr-input-group\" [class.clr-focus]=\"focus\">\n <ng-content select=\"[clrDate]\"></ng-content>\n <button\n #actionButton\n type=\"button\"\n clrPopoverOpenCloseButton\n class=\"clr-input-group-icon-action\"\n [attr.title]=\"commonStrings.keys.datepickerToggle\"\n [attr.aria-label]=\"commonStrings.keys.datepickerToggle\"\n [disabled]=\"isInputDateDisabled\"\n *ngIf=\"isEnabled\"\n >\n <cds-icon status=\"info\" shape=\"calendar\"></cds-icon>\n </button>\n <clr-datepicker-view-manager\n *clrPopoverContent=\"open; at: popoverPosition; outsideClickToClose: true; scrollToClose: true\"\n clrFocusTrap\n ></clr-datepicker-view-manager>\n </div>\n <cds-icon\n *ngIf=\"showInvalid\"\n class=\"clr-validate-icon\"\n status=\"danger\"\n shape=\"exclamation-circle\"\n aria-hidden=\"true\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"showValid\"\n class=\"clr-validate-icon\"\n shape=\"check-circle\"\n status=\"success\"\n aria-hidden=\"true\"\n ></cds-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"showHelper\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showInvalid\"></ng-content>\n <ng-content select=\"clr-control-success\" *ngIf=\"showValid\"></ng-content>\n </div>\n `,\n providers: [\n ControlIdService,\n ClrPopoverToggleService,\n ClrPopoverEventsService,\n ClrPopoverPositionService,\n LocaleHelperService,\n ControlClassService,\n FocusService,\n NgControlService,\n DateIOService,\n DateNavigationService,\n DatepickerEnabledService,\n DateFormControlService,\n ViewManagerService,\n IfControlStateService,\n ],\n host: {\n '[class.clr-date-container]': 'true',\n '[class.clr-form-control-disabled]': 'isInputDateDisabled',\n '[class.clr-form-control]': 'true',\n '[class.clr-row]': 'addGrid()',\n },\n})\nexport class ClrDateContainer extends ClrAbstractContainer implements AfterViewInit {\n focus = false;\n\n @Input('clrPosition')\n set clrPosition(position: string) {\n if (position && (ClrPopoverPositions as Record<string, any>)[position]) {\n this.viewManagerService.position = (ClrPopoverPositions as Record<string, any>)[position];\n }\n }\n get popoverPosition(): ClrPopoverPosition {\n return this.viewManagerService.position;\n }\n\n public get open() {\n return this.toggleService.open;\n }\n\n private toggleButton: ElementRef;\n @ViewChild('actionButton')\n set actionButton(button: ElementRef) {\n this.toggleButton = button;\n }\n\n constructor(\n private toggleService: ClrPopoverToggleService,\n private dateNavigationService: DateNavigationService,\n private datepickerEnabledService: DatepickerEnabledService,\n private dateFormControlService: DateFormControlService,\n public commonStrings: ClrCommonStringsService,\n private focusService: FocusService,\n private viewManagerService: ViewManagerService,\n protected controlClassService: ControlClassService,\n @Optional() protected layoutService: LayoutService,\n protected ngControlService: NgControlService,\n protected ifControlStateService: IfControlStateService\n ) {\n super(ifControlStateService, layoutService, controlClassService, ngControlService);\n\n this.subscriptions.push(\n this.focusService.focusChange.subscribe(state => {\n this.focus = state;\n })\n );\n\n this.subscriptions.push(\n this.toggleService.openChange.subscribe(() => {\n this.dateFormControlService.markAsTouched();\n })\n );\n }\n\n ngAfterViewInit(): void {\n this.subscriptions.push(\n this.toggleService.openChange.subscribe(open => {\n if (open) {\n this.initializeCalendar();\n } else {\n this.toggleButton.nativeElement.focus();\n }\n })\n );\n }\n\n /**\n * Returns if the Datepicker is enabled or not. If disabled, hides the datepicker trigger.\n */\n get isEnabled(): boolean {\n return this.datepickerEnabledService.isEnabled;\n }\n\n /**\n * Return if Datepicker is diabled or not as Form Control\n */\n get isInputDateDisabled(): boolean {\n /* clrForm wrapper or without clrForm */\n return (\n (this.control && this.control.disabled) || (this.dateFormControlService && this.dateFormControlService.disabled)\n );\n }\n\n /**\n * Processes the user input and Initializes the Calendar everytime the datepicker popover is open.\n */\n private initializeCalendar(): void {\n this.dateNavigationService.initializeCalendar();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport function isBooleanAttributeSet(value: string | boolean): boolean {\n // for null just return false no need to check anything\n if (value === null) {\n return false;\n }\n if (typeof value === 'string') {\n // Empty string is valid, 'true' as string is also valid\n return value.length >= 0;\n }\n // Boolean value will be read as it is, everything else is false\n return typeof value === 'boolean' ? value : false;\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n PLATFORM_ID,\n Renderer2,\n Self,\n ViewContainerRef,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { filter, switchMap } from 'rxjs/operators';\nimport { of } from 'rxjs';\n\nimport { FocusService } from '../common/providers/focus.service';\nimport { WrappedFormControl } from '../common/wrapped-control';\nimport { ClrDateContainer } from './date-container';\nimport { DayModel } from './model/day.model';\nimport { DateFormControlService } from './providers/date-form-control.service';\nimport { DateIOService } from './providers/date-io.service';\nimport { DateNavigationService } from './providers/date-navigation.service';\nimport { DatepickerEnabledService } from './providers/datepicker-enabled.service';\nimport { DatepickerFocusService } from './providers/datepicker-focus.service';\nimport { datesAreEqual } from './utils/date-utils';\nimport { isBooleanAttributeSet } from '../../utils/component/is-boolean-attribute-set';\n\n// There are four ways the datepicker value is set\n// 1. Value set by user typing into text input as a string ex: '01/28/2015'\n// 2. Value set explicitly by Angular Forms APIs as a string ex: '01/28/2015'\n// 3. Value set by user via datepicker UI as a Date Object\n// 4. Value set via `clrDate` input as a Date Object\n\n@Directive({\n selector: '[clrDate]',\n host: {\n '[class.clr-input]': 'true',\n },\n providers: [DatepickerFocusService],\n})\nexport class ClrDateInput extends WrappedFormControl<ClrDateContainer> implements OnInit, AfterViewInit, OnDestroy {\n public static ngAcceptInputType_date: Date | null | string;\n\n @Input() placeholder: string;\n @Output('clrDateChange') dateChange: EventEmitter<Date> = new EventEmitter<Date>(false);\n @Input('clrDate')\n set date(date: Date | string) {\n if (this.previousDateChange !== date) {\n this.updateDate(this.getValidDateValueFromDate(date as Date));\n }\n\n if (!this.initialClrDateInputValue) {\n this.initialClrDateInputValue = date as Date;\n }\n }\n\n @Input()\n set min(dateString: string) {\n this.dateIOService.setMinDate(dateString);\n }\n\n @Input()\n set max(dateString: string) {\n this.dateIOService.setMaxDate(dateString);\n }\n\n protected index = 1;\n private initialClrDateInputValue: Date;\n private previousDateChange: Date;\n\n constructor(\n viewContainerRef: ViewContainerRef,\n injector: Injector,\n protected el: ElementRef,\n protected renderer: Renderer2,\n @Self()\n @Optional()\n protected control: NgControl,\n @Optional() private container: ClrDateContainer,\n @Optional() private dateIOService: DateIOService,\n @Optional() private dateNavigationService: DateNavigationService,\n @Optional() private datepickerEnabledService: DatepickerEnabledService,\n @Optional() private dateFormControlService: DateFormControlService,\n @Inject(PLATFORM_ID) private platformId: any,\n @Optional() private focusService: FocusService,\n private datepickerFocusService: DatepickerFocusService\n ) {\n super(viewContainerRef, ClrDateContainer, injector, control, renderer, el);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.populateServicesFromContainerComponent();\n\n this.subscriptions.push(\n this.listenForUserSelectedDayChanges(),\n this.listenForControlValueChanges(),\n this.listenForTouchChanges(),\n this.listenForDirtyChanges(),\n this.listenForInputRefocus()\n );\n }\n\n ngAfterViewInit() {\n // I don't know why I have to do this but after using the new HostWrapping Module I have to delay the processing\n // of the initial Input set by the user to here. If I do not 2 issues occur:\n // 1. The Input setter is called before ngOnInit. ngOnInit initializes the services without which the setter fails.\n // 2. The Renderer doesn't work before ngAfterViewInit (It used to before the new HostWrapping Module for some reason).\n // I need the renderer to set the value property on the input to make sure that if the user has supplied a Date\n // input object, we reflect it with the right date on the input field using the IO service. I am not sure if\n // these are major issues or not but just noting them down here.\n this.processInitialInputs();\n }\n\n @HostListener('focus')\n setFocusStates() {\n this.setFocus(true);\n }\n\n @HostListener('blur')\n triggerValidation() {\n super.triggerValidation();\n this.setFocus(false);\n }\n\n @HostBinding('attr.placeholder')\n get placeholderText(): string {\n return this.placeholder ? this.placeholder : this.dateIOService.placeholderText;\n }\n\n @HostBinding('attr.type')\n get inputType(): string {\n return isPlatformBrowser(this.platformId) && this.usingNativeDatepicker() ? 'date' : 'text';\n }\n\n @HostListener('change', ['$event.target'])\n onValueChange(target: HTMLInputElement) {\n const validDateValue = this.dateIOService.getDateValueFromDateString(target.value);\n if (this.usingClarityDatepicker() && validDateValue) {\n this.updateDate(validDateValue, true);\n } else if (this.usingNativeDatepicker()) {\n const [year, month, day] = target.value.split('-');\n this.updateDate(new Date(+year, +month - 1, +day), true);\n } else {\n this.emitDateOutput(null);\n }\n }\n\n @HostBinding('disabled')\n @Input('disabled')\n set disabled(value: boolean | string) {\n if (this.dateFormControlService) {\n this.dateFormControlService.setDisabled(isBooleanAttributeSet(value));\n }\n }\n get disabled() {\n if (this.dateFormControlService) {\n return this.dateFormControlService.disabled;\n }\n return null;\n }\n\n private usingClarityDatepicker() {\n return this.datepickerEnabledService.isEnabled;\n }\n\n private usingNativeDatepicker() {\n return !this.datepickerEnabledService.isEnabled;\n }\n\n private setFocus(focus: boolean) {\n if (this.focusService) {\n this.focusService.focused = focus;\n }\n }\n\n private populateServicesFromContainerComponent() {\n if (!this.container) {\n this.dateIOService = this.getProviderFromContainer(DateIOService);\n this.dateNavigationService = this.getProviderFromContainer(DateNavigationService);\n this.datepickerEnabledService = this.getProviderFromContainer(DatepickerEnabledService);\n this.dateFormControlService = this.getProviderFromContainer(DateFormControlService);\n }\n }\n\n private processInitialInputs() {\n if (this.datepickerHasFormControl()) {\n this.updateDate(this.dateIOService.getDateValueFromDateString(this.control.value));\n } else {\n this.updateDate(this.initialClrDateInputValue);\n }\n }\n\n private updateDate(value: Date, setByUserInteraction = false) {\n const date = this.getValidDateValueFromDate(value);\n\n if (setByUserInteraction) {\n this.emitDateOutput(date);\n } else {\n this.previousDateChange = date;\n }\n\n if (this.dateNavigationService) {\n this.dateNavigationService.selectedDay = date\n ? new DayModel(date.getFullYear(), date.getMonth(), date.getDate())\n : null;\n }\n\n this.updateInput(date);\n }\n\n private updateInput(date: Date) {\n if (date) {\n const dateString = this.dateIOService.toLocaleDisplayFormatString(date);\n if (this.usingNativeDatepicker()) {\n // valueAsDate expects UTC, date from input is time-zoned\n date.setMinutes(date.getMinutes() - date.getTimezoneOffset());\n this.renderer.setProperty(this.el.nativeElement, 'valueAsDate', date);\n } else if (this.datepickerHasFormControl() && dateString !== this.control.value) {\n this.control.control.setValue(dateString);\n } else {\n this.renderer.setProperty(this.el.nativeElement, 'value', dateString);\n }\n } else {\n this.renderer.setProperty(this.el.nativeElement, 'value', '');\n }\n }\n\n private getValidDateValueFromDate(date: Date) {\n if (this.dateIOService) {\n const dateString = this.dateIOService.toLocaleDisplayFormatString(date);\n return this.dateIOService.getDateValueFromDateString(dateString);\n } else {\n return null;\n }\n }\n\n private emitDateOutput(date: Date) {\n if (!datesAreEqual(date, this.previousDateChange)) {\n this.dateChange.emit(date);\n this.previousDateChange = date;\n } else if (!date && this.previousDateChange) {\n this.dateChange.emit(null);\n this.previousDateChange = null;\n }\n }\n\n private datepickerHasFormControl() {\n return !!this.control;\n }\n\n private listenForControlValueChanges() {\n return of(this.datepickerHasFormControl())\n .pipe(\n filter(hasControl => hasControl),\n switchMap(() => this.control.valueChanges),\n // only update date value if not being set by user\n filter(() => !this.datepickerFocusService.elementIsFocused(this.el.nativeElement))\n )\n .subscribe((value: string) => this.updateDate(this.dateIOService.getDateValueFromDateString(value)));\n }\n\n private listenForUserSelectedDayChanges() {\n return this.dateNavigationService.selectedDayChange.subscribe(dayModel => this.updateDate(dayModel.toDate(), true));\n }\n\n private listenForTouchChanges() {\n return this.dateFormControlService.touchedChange\n .pipe(filter(() => this.datepickerHasFormControl()))\n .subscribe(() => this.control.control.markAsTouched());\n }\n\n private listenForDirtyChanges() {\n return this.dateFormControlService.dirtyChange\n .pipe(filter(() => this.datepickerHasFormControl()))\n .subscribe(() => this.control.control.markAsDirty());\n }\n\n private listenForInputRefocus() {\n return this.dateNavigationService.selectedDayChange\n .pipe(filter(date => !!date))\n .subscribe(() => this.datepickerFocusService.focusInput(this.el.nativeElement));\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrConditionalModule } from '../../utils/conditional/conditional.module';\nimport { ClrFocusTrapModule } from '../../utils/focus-trap/focus-trap.module';\nimport { ClrHostWrappingModule } from '../../utils/host-wrapping/host-wrapping.module';\nimport { ClrCommonFormsModule } from '../common/common.module';\nimport { ClrPopoverModuleNext } from '../../utils/popover/popover.module';\n\nimport { ClrCalendar } from './calendar';\nimport { ClrDateContainer } from './date-container';\nimport { ClrDateInput } from './date-input';\nimport { ClrDatepickerViewManager } from './datepicker-view-manager';\nimport { ClrDay } from './day';\nimport { ClrDaypicker } from './daypicker';\nimport { ClrMonthpicker } from './monthpicker';\nimport { ClrYearpicker } from './yearpicker';\nimport {\n checkCircleIcon,\n ClarityIcons,\n eventIcon,\n exclamationCircleIcon,\n angleIcon,\n calendarIcon,\n} from '@cds/core/icon';\n\nexport const CLR_DATEPICKER_DIRECTIVES: Type<any>[] = [\n ClrDay,\n ClrDateContainer,\n ClrDateInput,\n ClrDatepickerViewManager,\n ClrMonthpicker,\n ClrYearpicker,\n ClrDaypicker,\n ClrCalendar,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n ClrHostWrappingModule,\n ClrConditionalModule,\n ClrPopoverModuleNext,\n ClrIconModule,\n ClrFocusTrapModule,\n ClrCommonFormsModule,\n ],\n declarations: [CLR_DATEPICKER_DIRECTIVES],\n exports: [CLR_DATEPICKER_DIRECTIVES],\n entryComponents: [ClrDateContainer],\n})\nexport class ClrDatepickerModule {\n constructor() {\n ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon, angleIcon, eventIcon, calendarIcon);\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\nimport { NgControlService } from '../common/providers/ng-control.service';\nimport { ControlIdService } from '../common/providers/control-id.service';\nimport { ControlClassService } from '../common/providers/control-class.service';\nimport { ClrAbstractContainer } from '../common/abstract-container';\nimport { IfControlStateService } from '../common/if-control-state/if-control-state.service';\n\n@Component({\n selector: 'clr-input-container',\n template: `\n <ng-content select=\"label\"></ng-content>\n <label *ngIf=\"!label && addGrid()\"></label>\n <div class=\"clr-control-container\" [ngClass]=\"controlClass()\">\n <div class=\"clr-input-wrapper\">\n <ng-content select=\"[clrInput]\"></ng-content>\n <cds-icon\n *ngIf=\"showInvalid\"\n class=\"clr-validate-icon\"\n shape=\"exclamation-circle\"\n aria-hidden=\"true\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"showValid\"\n class=\"clr-validate-icon\"\n shape=\"check-circle\"\n status=\"success\"\n aria-hidden=\"true\"\n ></cds-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"showHelper\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showInvalid\"></ng-content>\n <ng-content select=\"clr-control-success\" *ngIf=\"showValid\"></ng-content>\n </div>\n `,\n host: {\n '[class.clr-form-control]': 'true',\n '[class.clr-form-control-disabled]': 'control?.disabled',\n '[class.clr-row]': 'addGrid()',\n },\n providers: [IfControlStateService, NgControlService, ControlIdService, ControlClassService],\n})\nexport class ClrInputContainer extends ClrAbstractContainer {}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, Optional, ViewContainerRef, Renderer2, ElementRef, Injector, Self } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\nimport { ClrInputContainer } from './input-container';\nimport { WrappedFormControl } from '../common/wrapped-control';\n\n@Directive({ selector: '[clrInput]', host: { '[class.clr-input]': 'true' } })\nexport class ClrInput extends WrappedFormControl<ClrInputContainer> {\n protected index = 1;\n\n constructor(\n vcr: ViewContainerRef,\n injector: Injector,\n @Self()\n @Optional()\n control: NgControl,\n renderer: Renderer2,\n el: ElementRef\n ) {\n super(vcr, ClrInputContainer, injector, control, renderer, el);\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { checkCircleIcon, ClarityIcons, exclamationCircleIcon } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrCommonFormsModule } from '../common/common.module';\n\nimport { ClrInput } from './input';\nimport { ClrInputContainer } from './input-container';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ClrIconModule, ClrCommonFormsModule],\n declarations: [ClrInput, ClrInputContainer],\n exports: [ClrCommonFormsModule, ClrInput, ClrInputContainer],\n entryComponents: [ClrInputContainer],\n})\nexport class ClrInputModule {\n constructor() {\n ClarityIcons.addIcons(\n exclamationCircleIcon,\n checkCircleIcon // caret\n );\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, Inject, InjectionToken, Input, Optional } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { ControlClassService } from '../common/providers/control-class.service';\nimport { ControlIdService } from '../common/providers/control-id.service';\nimport { FocusService } from '../common/providers/focus.service';\nimport { LayoutService } from '../common/providers/layout.service';\nimport { NgControlService } from '../common/providers/ng-control.service';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrAbstractContainer } from '../common/abstract-container';\nimport { IfControlStateService } from '../common/if-control-state/if-control-state.service';\n\nexport const TOGGLE_SERVICE = new InjectionToken<BehaviorSubject<boolean>>(undefined);\nexport function ToggleServiceFactory() {\n return new BehaviorSubject<boolean>(false);\n}\nexport const TOGGLE_SERVICE_PROVIDER = { provide: TOGGLE_SERVICE, useFactory: ToggleServiceFactory };\n\n@Component({\n selector: 'clr-password-container',\n template: `\n <ng-content select=\"label\"></ng-content>\n <label *ngIf=\"!label && addGrid()\"></label>\n <div class=\"clr-control-container\" [ngClass]=\"controlClass()\">\n <div class=\"clr-input-wrapper\">\n <div class=\"clr-input-group\" [class.clr-focus]=\"focus\">\n <ng-content select=\"[clrPassword]\"></ng-content>\n <button\n *ngIf=\"clrToggle\"\n (click)=\"toggle()\"\n [disabled]=\"control?.disabled\"\n class=\"clr-input-group-icon-action\"\n type=\"button\"\n >\n <cds-icon\n status=\"info\"\n [attr.shape]=\"show ? 'eye-hide' : 'eye'\"\n [attr.title]=\"show ? commonStrings.keys.hide : commonStrings.keys.show\"\n ></cds-icon>\n </button>\n </div>\n <cds-icon\n *ngIf=\"showInvalid\"\n class=\"clr-validate-icon\"\n status=\"danger\"\n shape=\"exclamation-circle\"\n aria-hidden=\"true\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"showValid\"\n class=\"clr-validate-icon\"\n shape=\"check-circle\"\n status=\"success\"\n aria-hidden=\"true\"\n ></cds-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"showHelper\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showInvalid\"></ng-content>\n <ng-content select=\"clr-control-success\" *ngIf=\"showValid\"></ng-content>\n </div>\n `,\n host: {\n '[class.clr-form-control]': 'true',\n '[class.clr-form-control-disabled]': 'control?.disabled',\n '[class.clr-row]': 'addGrid()',\n },\n providers: [\n NgControlService,\n ControlIdService,\n ControlClassService,\n FocusService,\n TOGGLE_SERVICE_PROVIDER,\n IfControlStateService,\n ],\n})\nexport class ClrPasswordContainer extends ClrAbstractContainer {\n show = false;\n focus = false;\n private _toggle = true;\n\n @Input('clrToggle')\n set clrToggle(state: boolean) {\n this._toggle = state;\n if (!state) {\n this.show = false;\n }\n }\n get clrToggle() {\n return this._toggle;\n }\n\n constructor(\n ifControlStateService: IfControlStateService,\n @Optional() layoutService: LayoutService,\n controlClassService: ControlClassService,\n ngControlService: NgControlService,\n public focusService: FocusService,\n @Inject(TOGGLE_SERVICE) private toggleService: BehaviorSubject<boolean>,\n public commonStrings: ClrCommonStringsService\n ) {\n super(ifControlStateService, layoutService, controlClassService, ngControlService);\n\n /* The unsubscribe is handle inside the ClrAbstractContainer */\n this.subscriptions.push(\n this.focusService.focusChange.subscribe(state => {\n this.focus = state;\n })\n );\n }\n\n toggle() {\n this.show = !this.show;\n this.toggleService.next(this.show);\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n Directive,\n ElementRef,\n HostListener,\n Inject,\n Injector,\n OnDestroy,\n OnInit,\n Optional,\n Renderer2,\n Self,\n ViewContainerRef,\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { NgControl } from '@angular/forms';\n\nimport { ClrPasswordContainer, TOGGLE_SERVICE } from './password-container';\nimport { WrappedFormControl } from '../common/wrapped-control';\nimport { FocusService } from '../common/providers/focus.service';\n\n@Directive({ selector: '[clrPassword]', host: { '[class.clr-input]': 'true' } })\nexport class ClrPassword extends WrappedFormControl<ClrPasswordContainer> implements OnInit, OnDestroy {\n protected index = 1;\n\n constructor(\n vcr: ViewContainerRef,\n injector: Injector,\n @Self()\n @Optional()\n control: NgControl,\n renderer: Renderer2,\n el: ElementRef,\n @Optional() private focusService: FocusService,\n @Optional()\n @Inject(TOGGLE_SERVICE)\n private toggleService: BehaviorSubject<boolean>\n ) {\n super(vcr, ClrPasswordContainer, injector, control, renderer, el);\n\n if (!this.focusService) {\n throw new Error('clrPassword requires being wrapped in <clr-password-container>');\n }\n\n this.subscriptions.push(\n this.toggleService.subscribe(toggle => {\n renderer.setProperty(el.nativeElement, 'type', toggle ? 'text' : 'password');\n })\n );\n }\n\n @HostListener('focus')\n triggerFocus() {\n if (this.focusService) {\n this.focusService.focused = true;\n }\n }\n\n @HostListener('blur')\n triggerValidation() {\n super.triggerValidation();\n if (this.focusService) {\n this.focusService.focused = false;\n }\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { checkCircleIcon, ClarityIcons, exclamationCircleIcon, eyeHideIcon, eyeIcon } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrCommonFormsModule } from '../common/common.module';\n\nimport { ClrPassword } from './password';\nimport { ClrPasswordContainer } from './password-container';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ClrIconModule, ClrCommonFormsModule],\n declarations: [ClrPassword, ClrPasswordContainer],\n exports: [ClrCommonFormsModule, ClrPassword, ClrPasswordContainer],\n entryComponents: [ClrPasswordContainer],\n})\nexport class ClrPasswordModule {\n constructor() {\n ClarityIcons.addIcons(eyeHideIcon, eyeIcon, exclamationCircleIcon, checkCircleIcon);\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ContentChild, OnInit } from '@angular/core';\n\nimport { DynamicWrapper } from '../../utils/host-wrapping/dynamic-wrapper';\nimport { ControlIdService } from '../common/providers/control-id.service';\nimport { ClrLabel } from '../common/label';\n\n@Component({\n selector: 'clr-radio-wrapper',\n template: `\n <ng-content select=\"[clrRadio]\"></ng-content>\n <ng-content select=\"label\"></ng-content>\n <label *ngIf=\"!label\"></label>\n `,\n host: {\n '[class.clr-radio-wrapper]': 'true',\n },\n providers: [ControlIdService],\n})\nexport class ClrRadioWrapper implements DynamicWrapper, OnInit {\n // We need both _dynamic for HostWrapper and ContentChild(ClrLabel) in cases where\n // the user puts a radio inside a wrapper without a label, host wrapping doesn't apply\n // but we'd still need to insert a label\n _dynamic = false;\n @ContentChild(ClrLabel, { static: true })\n label: ClrLabel;\n\n ngOnInit() {\n if (this.label) {\n this.label.disableGrid();\n }\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ElementRef, Injector, Optional, Renderer2, Self, ViewContainerRef } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\nimport { WrappedFormControl } from '../common/wrapped-control';\nimport { ClrRadioWrapper } from '../radio/radio-wrapper';\n\n@Directive({ selector: '[clrRadio]' })\nexport class ClrRadio extends WrappedFormControl<ClrRadioWrapper> {\n constructor(\n vcr: ViewContainerRef,\n injector: Injector,\n @Self()\n @Optional()\n control: NgControl,\n renderer: Renderer2,\n el: ElementRef\n ) {\n super(vcr, ClrRadioWrapper, injector, control, renderer, el);\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterContentInit, Component, ContentChildren, Input, Optional, QueryList } from '@angular/core';\n\nimport { ControlClassService } from '../common/providers/control-class.service';\nimport { NgControlService } from '../common/providers/ng-control.service';\nimport { ClrAbstractContainer } from '../common/abstract-container';\nimport { LayoutService } from '../common/providers/layout.service';\nimport { IfControlStateService } from '../common/if-control-state/if-control-state.service';\nimport { ContainerIdService } from '../common/providers/container-id.service';\nimport { ClrRadio } from './radio';\n\n@Component({\n selector: 'clr-radio-container',\n template: `\n <ng-content select=\"label\"></ng-content>\n <label *ngIf=\"!label && addGrid()\"></label>\n <div class=\"clr-control-container\" [class.clr-control-inline]=\"clrInline\" [ngClass]=\"controlClass()\">\n <ng-content select=\"clr-radio-wrapper\"></ng-content>\n <div class=\"clr-subtext-wrapper\">\n <ng-content select=\"clr-control-helper\" *ngIf=\"showHelper\"></ng-content>\n <cds-icon\n *ngIf=\"showInvalid\"\n class=\"clr-validate-icon\"\n status=\"danger\"\n shape=\"exclamation-circle\"\n aria-hidden=\"true\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"showValid\"\n class=\"clr-validate-icon\"\n shape=\"check-circle\"\n status=\"success\"\n aria-hidden=\"true\"\n ></cds-icon>\n <ng-content select=\"clr-control-error\" *ngIf=\"showInvalid\"></ng-content>\n <ng-content select=\"clr-control-success\" *ngIf=\"showValid\"></ng-content>\n </div>\n </div>\n `,\n host: {\n '[class.clr-form-control]': 'true',\n '[class.clr-form-control-disabled]': 'control?.disabled',\n '[class.clr-row]': 'addGrid()',\n '[attr.role]': 'role',\n },\n providers: [NgControlService, IfControlStateService, ControlClassService, ContainerIdService],\n})\nexport class ClrRadioContainer extends ClrAbstractContainer implements AfterContentInit {\n private inline = false;\n public role: string;\n\n @ContentChildren(ClrRadio, { descendants: true }) radios: QueryList<ClrRadio>;\n\n constructor(\n @Optional() protected layoutService: LayoutService,\n protected controlClassService: ControlClassService,\n protected ngControlService: NgControlService,\n protected ifControlStateService: IfControlStateService\n ) {\n super(ifControlStateService, layoutService, controlClassService, ngControlService);\n }\n\n /*\n * Here we want to support the following cases\n * clrInline - true by presence\n * clrInline=\"true|false\" - unless it is explicitly false, strings are considered true\n * [clrInline]=\"true|false\" - expect a boolean\n */\n @Input()\n set clrInline(value: boolean | string) {\n if (typeof value === 'string') {\n this.inline = value === 'false' ? false : true;\n } else {\n this.inline = !!value;\n }\n }\n get clrInline() {\n return this.inline;\n }\n\n ngAfterContentInit() {\n this.setAriaRoles();\n }\n\n private setAriaRoles() {\n this.role = this.radios.length ? 'group' : null;\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { checkCircleIcon, ClarityIcons, exclamationCircleIcon } from '@cds/core/icon';\nimport { ClrIconModule } from '../../icon/icon.module';\n\nimport { ClrHostWrappingModule } from '../../utils/host-wrapping/host-wrapping.module';\nimport { ClrCommonFormsModule } from '../common/common.module';\n\nimport { ClrRadio } from './radio';\nimport { ClrRadioContainer } from './radio-container';\nimport { ClrRadioWrapper } from './radio-wrapper';\n\n@NgModule({\n imports: [CommonModule, ClrCommonFormsModule, ClrHostWrappingModule, ClrIconModule],\n declarations: [ClrRadio, ClrRadioContainer, ClrRadioWrapper],\n exports: [ClrCommonFormsModule, ClrRadio, ClrRadioContainer, ClrRadioWrapper],\n entryComponents: [ClrRadioWrapper],\n})\nexport class ClrRadioModule {\n constructor() {\n ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon);\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ContentChild, Optional } from '@angular/core';\nimport { SelectMultipleControlValueAccessor } from '@angular/forms';\n\nimport { NgControlService } from '../common/providers/ng-control.service';\nimport { ControlIdService } from '../common/providers/control-id.service';\nimport { ControlClassService } from '../common/providers/control-class.service';\nimport { ClrAbstractContainer } from '../common/abstract-container';\nimport { LayoutService } from '../common/providers/layout.service';\nimport { IfControlStateService } from '../common/if-control-state/if-control-state.service';\n\n@Component({\n selector: 'clr-select-container',\n template: `\n <ng-content select=\"label\"></ng-content>\n <label *ngIf=\"!label && addGrid()\"></label>\n <div class=\"clr-control-container\" [ngClass]=\"controlClass()\">\n <div [ngClass]=\"wrapperClass()\">\n <ng-content select=\"[clrSelect]\"></ng-content>\n <cds-icon\n *ngIf=\"showInvalid\"\n class=\"clr-validate-icon\"\n status=\"danger\"\n shape=\"exclamation-circle\"\n aria-hidden=\"true\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"showValid\"\n class=\"clr-validate-icon\"\n shape=\"check-circle\"\n status=\"success\"\n aria-hidden=\"true\"\n ></cds-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"showHelper\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showInvalid\"></ng-content>\n <ng-content select=\"clr-control-success\" *ngIf=\"showValid\"></ng-content>\n </div>\n `,\n host: {\n '[class.clr-form-control]': 'true',\n '[class.clr-form-control-disabled]': 'control?.disabled',\n '[class.clr-row]': 'addGrid()',\n },\n providers: [IfControlStateService, NgControlService, ControlIdService, ControlClassService],\n})\nexport class ClrSelectContainer extends ClrAbstractContainer {\n @ContentChild(SelectMultipleControlValueAccessor, { static: false })\n multiple: SelectMultipleControlValueAccessor;\n private multi = false;\n\n constructor(\n @Optional() protected layoutService: LayoutService,\n protected controlClassService: ControlClassService,\n protected ngControlService: NgControlService,\n protected ifControlStateService: IfControlStateService\n ) {\n super(ifControlStateService, layoutService, controlClassService, ngControlService);\n }\n\n ngOnInit() {\n /* The unsubscribe is handle inside the ClrAbstractContainer */\n this.subscriptions.push(\n this.ngControlService.controlChanges.subscribe(control => {\n if (control) {\n this.multi = control.valueAccessor instanceof SelectMultipleControlValueAccessor;\n this.control = control;\n }\n })\n );\n }\n\n wrapperClass() {\n return this.multi ? 'clr-multiselect-wrapper' : 'clr-select-wrapper';\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ViewContainerRef, Renderer2, ElementRef, Injector, Optional, Self } from '@angular/core';\n\nimport { WrappedFormControl } from '../common/wrapped-control';\nimport { ClrSelectContainer } from './select-container';\nimport { NgControl } from '@angular/forms';\n\n@Directive({ selector: '[clrSelect]', host: { '[class.clr-select]': 'true' } })\nexport class ClrSelect extends WrappedFormControl<ClrSelectContainer> {\n protected index = 1;\n\n constructor(\n vcr: ViewContainerRef,\n injector: Injector,\n @Self()\n @Optional()\n control: NgControl,\n renderer: Renderer2,\n el: ElementRef\n ) {\n super(vcr, ClrSelectContainer, injector, control, renderer, el);\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { checkCircleIcon, ClarityIcons, exclamationCircleIcon } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrCommonFormsModule } from '../common/common.module';\n\nimport { ClrSelect } from './select';\nimport { ClrSelectContainer } from './select-container';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ClrIconModule, ClrCommonFormsModule],\n declarations: [ClrSelect, ClrSelectContainer],\n exports: [ClrCommonFormsModule, ClrSelect, ClrSelectContainer],\n entryComponents: [ClrSelectContainer],\n})\nexport class ClrSelectModule {\n constructor() {\n ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon);\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\nimport { NgControlService } from '../common/providers/ng-control.service';\nimport { ControlIdService } from '../common/providers/control-id.service';\nimport { ControlClassService } from '../common/providers/control-class.service';\nimport { ClrAbstractContainer } from '../common/abstract-container';\nimport { IfControlStateService } from '../common/if-control-state/if-control-state.service';\n\n@Component({\n selector: 'clr-textarea-container',\n template: `\n <ng-content select=\"label\"></ng-content>\n <label *ngIf=\"!label && addGrid()\"></label>\n <div class=\"clr-control-container\" [ngClass]=\"controlClass()\">\n <div class=\"clr-textarea-wrapper\">\n <ng-content select=\"[clrTextarea]\"></ng-content>\n <cds-icon\n *ngIf=\"showInvalid\"\n class=\"clr-validate-icon\"\n status=\"danger\"\n shape=\"exclamation-circle\"\n aria-hidden=\"true\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"showValid\"\n class=\"clr-validate-icon\"\n shape=\"check-circle\"\n status=\"success\"\n aria-hidden=\"true\"\n ></cds-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"showHelper\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showInvalid\"></ng-content>\n <ng-content select=\"clr-control-success\" *ngIf=\"showValid\"></ng-content>\n </div>\n `,\n host: {\n '[class.clr-form-control]': 'true',\n '[class.clr-form-control-disabled]': 'control?.disabled',\n '[class.clr-row]': 'addGrid()',\n },\n providers: [IfControlStateService, NgControlService, ControlIdService, ControlClassService],\n})\nexport class ClrTextareaContainer extends ClrAbstractContainer {}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ViewContainerRef, Renderer2, ElementRef, Injector, Optional, Self } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\nimport { WrappedFormControl } from '../common/wrapped-control';\nimport { ClrTextareaContainer } from './textarea-container';\n\n@Directive({ selector: '[clrTextarea]', host: { '[class.clr-textarea]': 'true' } })\nexport class ClrTextarea extends WrappedFormControl<ClrTextareaContainer> {\n protected index = 1;\n\n constructor(\n vcr: ViewContainerRef,\n injector: Injector,\n @Self()\n @Optional()\n control: NgControl,\n renderer: Renderer2,\n el: ElementRef\n ) {\n super(vcr, ClrTextareaContainer, injector, control, renderer, el);\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { checkCircleIcon, ClarityIcons, exclamationCircleIcon } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrCommonFormsModule } from '../common/common.module';\n\nimport { ClrTextarea } from './textarea';\nimport { ClrTextareaContainer } from './textarea-container';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ClrIconModule, ClrCommonFormsModule],\n declarations: [ClrTextarea, ClrTextareaContainer],\n exports: [ClrCommonFormsModule, ClrTextarea, ClrTextareaContainer],\n entryComponents: [ClrTextareaContainer],\n})\nexport class ClrTextareaModule {\n constructor() {\n ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon);\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, Input, Optional, Renderer2 } from '@angular/core';\n\nimport { NgControlService } from '../common/providers/ng-control.service';\nimport { LayoutService } from '../common/providers/layout.service';\nimport { ControlIdService } from '../common/providers/control-id.service';\nimport { ControlClassService } from '../common/providers/control-class.service';\nimport { ClrAbstractContainer } from '../common/abstract-container';\nimport { IfControlStateService } from '../common/if-control-state/if-control-state.service';\n\n@Component({\n selector: 'clr-range-container',\n template: `\n <ng-content select=\"label\"></ng-content>\n <label *ngIf=\"!label && addGrid()\"></label>\n <div class=\"clr-control-container\" [ngClass]=\"controlClass()\">\n <div class=\"clr-range-wrapper\" [class.progress-fill]=\"hasProgress\">\n <ng-content select=\"[clrRange]\"></ng-content>\n <span *ngIf=\"hasProgress\" class=\"fill-input\" [style.width]=\"getRangeProgressFillWidth()\"></span>\n <cds-icon\n *ngIf=\"showInvalid\"\n class=\"clr-validate-icon\"\n status=\"danger\"\n shape=\"exclamation-circle\"\n aria-hidden=\"true\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"showValid\"\n class=\"clr-validate-icon\"\n shape=\"check-circle\"\n status=\"success\"\n aria-hidden=\"true\"\n ></cds-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"showHelper\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showInvalid\"></ng-content>\n <ng-content select=\"clr-control-success\" *ngIf=\"showValid\"></ng-content>\n </div>\n `,\n host: {\n '[class.clr-form-control]': 'true',\n '[class.clr-form-control-disabled]': 'control?.disabled',\n '[class.clr-row]': 'addGrid()',\n },\n providers: [IfControlStateService, NgControlService, ControlIdService, ControlClassService],\n})\nexport class ClrRangeContainer extends ClrAbstractContainer {\n private _hasProgress = false;\n\n @Input('clrRangeHasProgress')\n set hasProgress(val: boolean) {\n const valBool = !!val;\n if (valBool !== this._hasProgress) {\n this._hasProgress = valBool;\n }\n }\n\n get hasProgress() {\n return this._hasProgress;\n }\n\n constructor(\n @Optional() layoutService: LayoutService,\n controlClassService: ControlClassService,\n ngControlService: NgControlService,\n private renderer: Renderer2,\n private idService: ControlIdService,\n protected ifControlStateService: IfControlStateService\n ) {\n super(ifControlStateService, layoutService, controlClassService, ngControlService);\n }\n\n getRangeProgressFillWidth(): string {\n const input = this.renderer.selectRootElement('[clrRange]#' + this.idService.id);\n\n const inputWidth = input.offsetWidth;\n const inputMinValue = +input.min;\n let inputMaxValue = +input.max;\n\n if (inputMinValue === 0 && inputMaxValue === 0) {\n inputMaxValue = 100;\n }\n\n const inputMiddle = (inputMinValue + inputMaxValue) / 2;\n const inputValue = !!this.control && this.control.value !== undefined ? this.control.value : inputMiddle;\n const valueAsPercent = ((inputValue - inputMinValue) * 100) / (inputMaxValue - inputMinValue);\n\n return (valueAsPercent * inputWidth) / 100 + 'px';\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, Optional, ViewContainerRef, Renderer2, ElementRef, Injector, Self } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\nimport { WrappedFormControl } from '../common/wrapped-control';\nimport { ClrRangeContainer } from './range-container';\n\n@Directive({ selector: '[clrRange]', host: { '[class.clr-range]': 'true' } })\nexport class ClrRange extends WrappedFormControl<ClrRangeContainer> {\n constructor(\n vcr: ViewContainerRef,\n injector: Injector,\n @Self()\n @Optional()\n control: NgControl,\n renderer: Renderer2,\n el: ElementRef\n ) {\n super(vcr, ClrRangeContainer, injector, control, renderer, el);\n }\n\n // Notes: We need an output here EventEmitter for the value\n // Does this implementation also need a display for the value?\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { checkCircleIcon, ClarityIcons, exclamationCircleIcon } from '@cds/core/icon';\nimport { ClrIconModule } from '../../icon/icon.module';\n\nimport { ClrHostWrappingModule } from '../../utils/host-wrapping/host-wrapping.module';\nimport { ClrCommonFormsModule } from '../common/common.module';\nimport { ClrRange } from './range';\nimport { ClrRangeContainer } from './range-container';\n\n@NgModule({\n imports: [CommonModule, ClrCommonFormsModule, ClrHostWrappingModule, ClrIconModule],\n declarations: [ClrRange, ClrRangeContainer],\n exports: [ClrCommonFormsModule, ClrRange, ClrRangeContainer],\n entryComponents: [ClrRangeContainer],\n})\nexport class ClrRangeModule {\n constructor() {\n ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nlet counter = 0;\n\n@Injectable()\nexport class DatalistIdService {\n private _id = 'clr-datalist-' + ++counter;\n\n get id(): string {\n return this._id;\n }\n\n set id(value: string) {\n this._id = value;\n this._idChange.next(value);\n }\n\n private _idChange: BehaviorSubject<string> = new BehaviorSubject(this._id);\n public get idChange(): Observable<string> {\n return this._idChange.asObservable();\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, Optional } from '@angular/core';\nimport { ControlClassService } from '../common/providers/control-class.service';\nimport { LayoutService } from '../common/providers/layout.service';\nimport { ControlIdService } from '../common/providers/control-id.service';\nimport { FocusService } from '../common/providers/focus.service';\nimport { NgControlService } from '../common/providers/ng-control.service';\nimport { DatalistIdService } from './providers/datalist-id.service';\nimport { ClrAbstractContainer } from '../common/abstract-container';\nimport { IfControlStateService } from '../common/if-control-state/if-control-state.service';\n\n@Component({\n selector: 'clr-datalist-container',\n template: `\n <ng-content select=\"label\"></ng-content>\n <label *ngIf=\"!label && addGrid()\"></label>\n <div class=\"clr-control-container\" [ngClass]=\"controlClass()\">\n <div class=\"clr-input-wrapper\">\n <div class=\"clr-input-group\" [class.clr-focus]=\"focus\">\n <ng-content select=\"[clrDatalistInput]\"></ng-content>\n <ng-content select=\"datalist\"></ng-content>\n </div>\n <cds-icon\n *ngIf=\"showInvalid\"\n class=\"clr-validate-icon\"\n status=\"danger\"\n shape=\"exclamation-circle\"\n aria-hidden=\"true\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"showValid\"\n class=\"clr-validate-icon\"\n shape=\"check-circle\"\n status=\"success\"\n aria-hidden=\"true\"\n ></cds-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"showHelper\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showInvalid\"></ng-content>\n <ng-content select=\"clr-control-success\" *ngIf=\"showValid\"></ng-content>\n </div>\n `,\n host: {\n '[class.clr-form-control]': 'true',\n '[class.clr-form-control-disabled]': 'control?.disabled',\n '[class.clr-row]': 'addGrid()',\n },\n providers: [\n ControlClassService,\n LayoutService,\n ControlIdService,\n FocusService,\n NgControlService,\n DatalistIdService,\n IfControlStateService,\n ],\n})\nexport class ClrDatalistContainer extends ClrAbstractContainer {\n focus = false;\n\n constructor(\n controlClassService: ControlClassService,\n @Optional() layoutService: LayoutService,\n ngControlService: NgControlService,\n private focusService: FocusService,\n protected ifControlStateService: IfControlStateService\n ) {\n super(ifControlStateService, layoutService, controlClassService, ngControlService);\n\n this.subscriptions.push(this.focusService.focusChange.subscribe(state => (this.focus = state)));\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n Directive,\n ViewContainerRef,\n Injector,\n Self,\n Optional,\n Renderer2,\n ElementRef,\n HostListener,\n AfterContentInit,\n} from '@angular/core';\nimport { WrappedFormControl } from '../common/wrapped-control';\nimport { ClrDatalistContainer } from './datalist-container';\nimport { NgControl } from '@angular/forms';\nimport { FocusService } from '../common/providers/focus.service';\nimport { DatalistIdService } from './providers/datalist-id.service';\n\n@Directive({\n selector: '[clrDatalistInput]',\n host: {\n '[class.clr-input]': 'true',\n '[attr.list]': 'listValue',\n },\n})\nexport class ClrDatalistInput extends WrappedFormControl<ClrDatalistContainer> implements AfterContentInit {\n constructor(\n @Optional() private focusService: FocusService,\n vcr: ViewContainerRef,\n injector: Injector,\n @Self()\n @Optional()\n control: NgControl,\n renderer: Renderer2,\n el: ElementRef,\n private datalistIdService: DatalistIdService\n ) {\n super(vcr, ClrDatalistContainer, injector, control, renderer, el);\n\n if (!this.focusService) {\n throw new Error('clrDatalist requires being wrapped in <clr-datalist-container>');\n }\n }\n\n listValue: string;\n\n ngAfterContentInit() {\n // Subscriptions is inherited from WrappedFormControl, unsubscribe is handled there\n this.subscriptions.push(this.datalistIdService.idChange.subscribe(id => (this.listValue = id)));\n }\n\n @HostListener('focus')\n triggerFocus() {\n if (this.focusService) {\n this.focusService.focused = true;\n }\n }\n\n @HostListener('blur')\n triggerValidation() {\n super.triggerValidation();\n if (this.focusService) {\n this.focusService.focused = false;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Input, Directive, AfterContentInit, Optional } from '@angular/core';\n\nimport { Subscription } from 'rxjs';\nimport { DatalistIdService } from './providers/datalist-id.service';\n\n@Directive({\n selector: 'datalist',\n host: {\n '[id]': 'datalistId',\n },\n})\nexport class ClrDatalist implements AfterContentInit {\n private subscriptions: Subscription[] = [];\n constructor(@Optional() private datalistIdService: DatalistIdService) {}\n datalistId: string;\n\n ngAfterContentInit() {\n if (!this.datalistIdService) {\n return;\n }\n this.subscriptions.push(this.datalistIdService.idChange.subscribe(id => (this.datalistId = id)));\n }\n @Input()\n set id(idValue: string) {\n if (!!idValue && this.datalistIdService) {\n this.datalistId = idValue;\n this.datalistIdService.id = idValue;\n } else if (idValue) {\n this.datalistId = idValue;\n }\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ClrDatalistInput } from './datalist-input';\nimport { ClrInputModule } from '../input/input.module';\nimport { ClrDatalistContainer } from './datalist-container';\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrDatalist } from './datalist';\nimport { checkCircleIcon, ClarityIcons, exclamationCircleIcon } from '@cds/core/icon';\n\n@NgModule({\n imports: [CommonModule, ClrInputModule, ClrIconModule],\n declarations: [ClrDatalist, ClrDatalistInput, ClrDatalistContainer],\n exports: [ClrDatalist, ClrDatalistInput, ClrDatalistContainer],\n})\nexport class ClrDatalistModule {\n constructor() {\n ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Observable } from 'rxjs';\n\nexport abstract class FocusableItem {\n id: string;\n disabled?: boolean;\n\n abstract focus(): void;\n abstract blur(): void;\n abstract activate?(): void;\n\n up?: FocusableItem | Observable<FocusableItem>;\n down?: FocusableItem | Observable<FocusableItem>;\n left?: FocusableItem | Observable<FocusableItem>;\n right?: FocusableItem | Observable<FocusableItem>;\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Type } from '@angular/core';\nimport { UNIQUE_ID_PROVIDER } from '../../id-generator/id-generator.service';\nimport { FocusableItem } from './focusable-item';\n\nexport function customFocusableItemProvider<T>(implementation: Type<T>) {\n return [\n UNIQUE_ID_PROVIDER,\n implementation,\n {\n provide: FocusableItem,\n useExisting: implementation,\n },\n ];\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum ArrowKeyDirection {\n UP = 'up',\n DOWN = 'down',\n LEFT = 'left',\n RIGHT = 'right',\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ComboboxModel } from './combobox.model';\n\nexport class SingleSelectComboboxModel<T> implements ComboboxModel<T> {\n model: T;\n\n containsItem(item: T): boolean {\n return this.model === item;\n }\n\n select(item: T): void {\n this.model = item;\n }\n\n unselect(item: T): void {\n if (this.containsItem(item)) {\n this.model = null;\n }\n }\n\n isEmpty(): boolean {\n return !this.model;\n }\n\n pop(): T {\n const item = this.model;\n this.model = null;\n return item;\n }\n\n toString(displayField?: string): string {\n if (!this.model) {\n return '';\n }\n if (displayField && (this.model as any)[displayField]) {\n return (this.model as any)[displayField];\n } else {\n return this.model.toString();\n }\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { SingleSelectComboboxModel } from './single-select-combobox.model';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nexport class PseudoFocusModel<T> extends SingleSelectComboboxModel<T> {\n private _focusChanged: BehaviorSubject<T> = new BehaviorSubject(null);\n get focusChanged(): Observable<T> {\n return this._focusChanged.asObservable();\n }\n\n select(item: T): void {\n if (this.model !== item) {\n this.model = item;\n this._focusChanged.next(item);\n }\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ComboboxModel } from './combobox.model';\n\nexport class MultiSelectComboboxModel<T> implements ComboboxModel<T> {\n model: T[];\n\n containsItem(item: T): boolean {\n return this.model ? this.model.includes(item) : false;\n }\n\n select(item: T): void {\n this.addItem(item);\n }\n\n unselect(item: T): void {\n this.removeItem(item);\n }\n\n isEmpty(): boolean {\n return !(this.model && this.model.length > 0);\n }\n\n pop(): T {\n let item;\n if (this.model && this.model.length > 0) {\n item = this.model[this.model.length - 1];\n this.removeItem(item);\n }\n return item;\n }\n\n toString(displayField?: string, index = -1): string {\n let displayString = '';\n\n if (this.model) {\n // If the model is array, we can use a specific item from it, to retrieve the display value.\n if (index > -1) {\n if (this.model[index]) {\n // If we have a defined display field, we'll use it's value as display value\n if (displayField && (this.model[index] as any)[displayField]) {\n displayString += (this.model[index] as any)[displayField];\n } else {\n // If we don't have a defined display field, we'll use the toString representation of the\n // item as display value.\n displayString += this.model[index].toString();\n }\n }\n } else {\n this.model.forEach((model: T) => {\n // If we have a defined display field, we'll use it's value as display value\n if (displayField && (model as any)[displayField]) {\n displayString += (model as any)[displayField];\n } else {\n // If we don't have a defined display field, we'll use the toString representation of the\n // model as display value.\n displayString += model.toString();\n }\n displayString += ' ';\n });\n }\n }\n\n return displayString.trim();\n }\n\n private addItem(item: T) {\n if (!this.containsItem(item)) {\n this.model = this.model || [];\n this.model.push(item);\n }\n }\n\n private removeItem(item: T) {\n if (this.model === null || this.model === undefined) {\n return;\n }\n\n const index = this.model.indexOf(item);\n\n if (index > -1) {\n this.model.splice(index, 1);\n }\n\n // we intentionally set the model to null for form validation\n if (this.model.length === 0) {\n this.model = null;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, BehaviorSubject, ReplaySubject } from 'rxjs';\n\nimport { MultiSelectComboboxModel } from '../model/multi-select-combobox.model';\nimport { ComboboxModel } from '../model/combobox.model';\n\n@Injectable()\nexport class OptionSelectionService<T> {\n public selectionModel: ComboboxModel<T>;\n public loading = false;\n public displayField: string;\n private _currentInput = '';\n get currentInput(): string {\n return this._currentInput;\n }\n set currentInput(input) {\n // clear value in single selection model when input is empty\n if (input === '' && !this.multiselectable) {\n this.setSelectionValue(null);\n }\n this._currentInput = input;\n this._inputChanged.next(input);\n }\n private _inputChanged: BehaviorSubject<string> = new BehaviorSubject('');\n inputChanged = this._inputChanged.asObservable();\n\n private _selectionChanged: ReplaySubject<ComboboxModel<T>> = new ReplaySubject(1);\n\n // This observable is for notifying the ClrOption to update its\n // selection by comparing the value\n get selectionChanged(): Observable<ComboboxModel<T>> {\n return this._selectionChanged.asObservable();\n }\n\n select(item: T) {\n if (item === null || item === undefined || this.selectionModel.containsItem(item)) {\n return;\n }\n this.selectionModel.select(item);\n this._selectionChanged.next(this.selectionModel);\n }\n\n toggle(item: T) {\n if (item === null || item === undefined) {\n return;\n }\n if (this.selectionModel.containsItem(item)) {\n this.selectionModel.unselect(item);\n } else {\n this.selectionModel.select(item);\n }\n this._selectionChanged.next(this.selectionModel);\n }\n\n unselect(item: T) {\n if (item === null || item === undefined || !this.selectionModel.containsItem(item)) {\n return;\n }\n this.selectionModel.unselect(item);\n this._selectionChanged.next(this.selectionModel);\n }\n\n get multiselectable(): boolean {\n return this.selectionModel instanceof MultiSelectComboboxModel;\n }\n\n // TODO: Add support for trackBy and compareFn\n setSelectionValue(value: T | T[]): void {\n // NOTE: Currently we assume that no 2 options will have the same value\n // but Eudes and I discussed that this is a possibility but we will handle\n // this later\n\n // if selection is undefined, or its value hasn't changed, or changing from null <-> undefined, that's not really changing so we return\n if (!this.selectionModel || this.selectionModel.model === value || (!this.selectionModel.model && !value)) {\n return;\n }\n\n this.selectionModel.model = value;\n this._selectionChanged.next(this.selectionModel);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport { Inject, Injectable, PLATFORM_ID, Renderer2, RendererFactory2, ChangeDetectorRef } from '@angular/core';\nimport { customFocusableItemProvider } from '../../../utils/focus/focusable-item/custom-focusable-item-provider';\nimport { UNIQUE_ID } from '../../../utils/id-generator/id-generator.service';\nimport { ArrowKeyDirection } from '../../../utils/focus/arrow-key-direction.enum';\nimport { ClrPopoverToggleService } from '../../../utils/popover/providers/popover-toggle.service';\nimport { OptionSelectionService } from './option-selection.service';\nimport { PseudoFocusModel } from '../model/pseudo-focus.model';\nimport { take } from 'rxjs/operators';\nimport { KeyCodes } from '../../../utils/enums/key-codes.enum';\nimport { keyValidator } from '../../../utils/focus/key-focus/util';\n\n@Injectable()\nexport class ComboboxFocusHandler<T> {\n constructor(\n @Inject(UNIQUE_ID) public id: string,\n rendererFactory: RendererFactory2,\n private toggleService: ClrPopoverToggleService,\n private selectionService: OptionSelectionService<T>,\n @Inject(PLATFORM_ID) private platformId: any\n ) {\n this.handleFocusSubscription();\n // Direct renderer injection can be problematic and leads to failing tests at least\n this.renderer = rendererFactory.createRenderer(null, null);\n }\n\n // We need a Change Detector from the related component, so we can update it on Blur\n // (which is needed because of Edge specific lifecycle mis-behavior)\n componentCdRef: ChangeDetectorRef;\n\n private renderer: Renderer2;\n\n private handleFocusSubscription() {\n this.toggleService.openChange.subscribe(open => {\n if (!open) {\n this.pseudoFocus.model = null;\n }\n });\n }\n\n private _trigger: HTMLElement;\n get trigger() {\n return this._trigger;\n }\n set trigger(el: HTMLElement) {\n this._trigger = el;\n this.addFocusOnBlurListener(el);\n }\n\n private _listbox: HTMLElement;\n get listbox() {\n return this._listbox;\n }\n set listbox(el: HTMLElement) {\n this._listbox = el;\n this.addFocusOnBlurListener(el);\n }\n\n public pseudoFocus: PseudoFocusModel<OptionData<T>> = new PseudoFocusModel<OptionData<T>>();\n\n private _textInput: HTMLElement;\n get textInput() {\n return this._textInput;\n }\n set textInput(el: HTMLElement) {\n this._textInput = el;\n this.renderer.listen(el, 'keydown', event => !this.handleTextInput(event));\n this.addFocusOnBlurListener(el);\n }\n\n private moveFocusTo(direction: ArrowKeyDirection) {\n let index = this.optionData.findIndex(option => option.equals(this.pseudoFocus.model));\n if (direction === ArrowKeyDirection.UP) {\n if (index === -1 || index === 0) {\n index = this.optionData.length - 1;\n } else {\n index--;\n }\n } else if (direction === ArrowKeyDirection.DOWN) {\n if (index === -1 || index === this.optionData.length - 1) {\n index = 0;\n } else {\n index++;\n }\n }\n this.pseudoFocus.select(this.optionData[index]);\n if (this.pseudoFocus.model && this.pseudoFocus.model.el) {\n this.pseudoFocus.model.el.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'nearest' });\n }\n }\n\n private openAndMoveTo(direction: ArrowKeyDirection) {\n if (!this.toggleService.open) {\n this.toggleService.openChange.pipe(take(1)).subscribe(open => {\n if (open) {\n this.moveFocusTo(direction);\n }\n });\n this.toggleService.open = true;\n } else {\n this.moveFocusTo(direction);\n }\n }\n\n // this service is only interested in keys that may move the focus\n private handleTextInput(event: KeyboardEvent): boolean {\n let preventDefault = false;\n const key = keyValidator(event.key);\n if (event) {\n switch (key) {\n case KeyCodes.Enter:\n if (this.toggleService.open && this.pseudoFocus.model) {\n if (this.selectionService.multiselectable) {\n this.selectionService.toggle(this.pseudoFocus.model.value);\n } else {\n this.selectionService.select(this.pseudoFocus.model.value);\n }\n preventDefault = true;\n }\n break;\n case KeyCodes.Space:\n if (!this.toggleService.open) {\n this.toggleService.open = true;\n preventDefault = true;\n }\n break;\n case KeyCodes.ArrowUp:\n this.preventViewportScrolling(event);\n this.openAndMoveTo(ArrowKeyDirection.UP);\n preventDefault = true;\n break;\n case KeyCodes.ArrowDown:\n this.preventViewportScrolling(event);\n this.openAndMoveTo(ArrowKeyDirection.DOWN);\n preventDefault = true;\n break;\n default:\n // Any other keypress\n if (\n event.key !== KeyCodes.Tab &&\n !(this.selectionService.multiselectable && event.key === KeyCodes.Backspace) &&\n !(event.key === KeyCodes.Escape) &&\n !this.toggleService.open\n ) {\n this.toggleService.open = true;\n }\n break;\n }\n }\n return preventDefault;\n }\n\n private preventViewportScrolling(event: KeyboardEvent) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n\n focusInput() {\n if (this.textInput && isPlatformBrowser(this.platformId)) {\n this.textInput.focus();\n }\n }\n\n private addFocusOnBlurListener(el: HTMLElement) {\n if (isPlatformBrowser(this.platformId)) {\n this.renderer.listen(el, 'blur', event => {\n if (this.focusOutOfComponent(event)) {\n this.toggleService.open = false;\n // Workaround for popover close-on-outside-click timing issues in Edge browser\n if (this.componentCdRef) {\n this.componentCdRef.detectChanges();\n }\n }\n });\n }\n }\n\n private focusOutOfComponent(event: FocusEvent): boolean {\n // event.relatedTarget is null in IE11. In that case we use document.activeElement\n // which points to the element that becomes active as the blur event occurs on the input.\n const target = (event.relatedTarget || document.activeElement) as Node;\n return !(this.textInput.contains(target) || this.trigger.contains(target) || this.listbox.contains(target));\n }\n\n focusFirstActive() {\n if (this.optionData.length > 0) {\n if (this.selectionService.selectionModel.isEmpty()) {\n this.pseudoFocus.select(this.optionData[0]);\n } else {\n let firstActive: T;\n if (this.selectionService.multiselectable) {\n firstActive = (this.selectionService.selectionModel.model as T[])[0];\n } else {\n firstActive = this.selectionService.selectionModel.model as T;\n }\n const activeProxy = this.optionData.find(option => option.value === firstActive);\n this.pseudoFocus.select(activeProxy);\n }\n }\n }\n\n private optionData: OptionData<T>[] = [];\n\n addOptionValues(options: OptionData<T>[]) {\n this.optionData = options;\n }\n}\n\nexport const COMBOBOX_FOCUS_HANDLER_PROVIDER = customFocusableItemProvider(ComboboxFocusHandler);\n\nexport class OptionData<T> {\n id: string;\n el: HTMLElement;\n value: T;\n constructor(id: string, value: T) {\n this.id = id;\n this.value = value;\n }\n equals(other: OptionData<T>): boolean {\n if (!other) {\n return false;\n }\n return this.id === other.id && this.value === other.value;\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component, ElementRef, HostBinding, HostListener, Inject, Input, OnInit } from '@angular/core';\n\nimport { OptionSelectionService } from './providers/option-selection.service';\nimport { ComboboxFocusHandler, OptionData as OptionProxy } from './providers/combobox-focus-handler.service';\nimport { UNIQUE_ID, UNIQUE_ID_PROVIDER } from '../../utils/id-generator/id-generator.service';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\n@Component({\n selector: 'clr-option',\n template: `<ng-content></ng-content>\n <span *ngIf=\"selected\" class=\"clr-sr-only\"> {{ commonStrings.keys.comboboxSelected }} </span> `,\n providers: [UNIQUE_ID_PROVIDER],\n host: {\n '[class.clr-combobox-option]': 'true',\n '[attr.role]': '\"option\"',\n // Do not remove. Or click-selection will not work.\n '[attr.tabindex]': '-1',\n '[attr.id]': 'optionId',\n },\n})\nexport class ClrOption<T> implements OnInit {\n // A proxy with only the necessary data to be used for a11y and the focus handler service.\n public optionProxy: OptionProxy<T> = new OptionProxy(null, null);\n\n private _id: string;\n @Input('id')\n set optionId(id: string) {\n this._id = id;\n this.optionProxy.id = this._id;\n }\n get optionId() {\n return this._id;\n }\n\n private _value: T;\n @Input('clrValue')\n set value(value: T) {\n this._value = value;\n this.optionProxy.value = value;\n }\n get value(): T {\n return this._value;\n }\n\n @HostBinding('class.active')\n get selected() {\n return (\n this.optionSelectionService.selectionModel && this.optionSelectionService.selectionModel.containsItem(this.value)\n );\n }\n\n constructor(\n public elRef: ElementRef,\n public commonStrings: ClrCommonStringsService,\n private focusHandler: ComboboxFocusHandler<T>,\n private optionSelectionService: OptionSelectionService<T>,\n @Inject(UNIQUE_ID) private autoId: string\n ) {\n this.optionProxy.el = this.elRef.nativeElement;\n }\n\n ngOnInit() {\n if (!this._id) {\n this._id = 'clr-option-' + this.autoId;\n this.optionProxy.id = this._id;\n }\n }\n\n @HostListener('click')\n onClick() {\n if (this.optionSelectionService.multiselectable) {\n this.optionSelectionService.toggle(this.value);\n } else {\n this.optionSelectionService.select(this.value);\n }\n // As the popover stays open in multi-select mode now, we have to take focus back to the input\n // This way we achieve two things:\n // - do not lose focus\n // - we're still able to use onBlur for \"outside-click\" handling\n this.focusHandler.focusInput();\n }\n\n @HostBinding('class.clr-focus')\n get focusClass() {\n return this.focusHandler.pseudoFocus.containsItem(this.optionProxy);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ElementRef, InjectionToken } from '@angular/core';\n\nexport const POPOVER_HOST_ANCHOR = new InjectionToken<ElementRef>('POPOVER_HOST_ANCHOR');\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Injectable } from '@angular/core';\n\n// TODO: if we find more components that could use this, consider moving this to utils\n@Injectable()\nexport class AriaService {\n public ariaLabelledBy: string;\n public ariaControls: string;\n public ariaOwns: string;\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component, Input, HostBinding } from '@angular/core';\nimport { isBooleanAttributeSet } from '../../utils/component/is-boolean-attribute-set';\n\n@Component({\n selector: 'clr-spinner',\n template: ` <ng-content></ng-content> `,\n host: {\n '[attr.aria-busy]': 'true',\n },\n})\nexport class ClrSpinner {\n /**\n * Default class for all spinners. This class is always true\n */\n @HostBinding('class.spinner')\n get spinnerClass() {\n return true;\n }\n\n // Style\n private _inline: boolean;\n @HostBinding('class.spinner-inline')\n get inlineClass() {\n return this._inline;\n }\n\n @Input('clrInline')\n set clrInline(value: boolean | string) {\n this._inline = isBooleanAttributeSet(value);\n }\n\n private _inverse: boolean;\n @HostBinding('class.spinner-inverse')\n get inverseClass() {\n return this._inverse;\n }\n\n @Input('clrInverse')\n set clrInverse(value: boolean | string) {\n this._inverse = isBooleanAttributeSet(value);\n }\n\n // Size\n /**\n * By default all spinners are Large. (spinner-lg)\n * To change the size you need to use set clrSmall or clrMedium to TRUE/\n */\n\n /**\n * Small\n */\n private _small: boolean;\n @HostBinding('class.spinner-sm')\n get smallClass() {\n return this._small;\n }\n\n @Input('clrSmall')\n set clrSmall(value: boolean | string) {\n this._small = isBooleanAttributeSet(value);\n }\n\n /**\n * When clrSmall & clrMedium are set both to true.\n * The CSS with high priority will be small - so medium size will be ignored.\n *\n * For this reason if clrSmall is set we won't add clrMedium class.\n *\n * NOTE: This is dictated by the CSS rules.\n * DON'T USE clrSmall & clrMedium to toggle classes. This could change without notice.\n *\n * Also there is no logical need to have both of them set to TRUE or FALSE.\n */\n private _medium: boolean;\n @HostBinding('class.spinner-md')\n get mediumClass() {\n if (this._small) {\n return false;\n }\n return this._medium;\n }\n\n @Input('clrMedium')\n set clrMedium(value: boolean | string) {\n this._medium = isBooleanAttributeSet(value);\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n Component,\n ContentChildren,\n ElementRef,\n Inject,\n Input,\n Optional,\n QueryList,\n AfterViewInit,\n OnDestroy,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { POPOVER_HOST_ANCHOR } from '../../popover/common/popover-host-anchor.token';\nimport { OptionSelectionService } from './providers/option-selection.service';\nimport { IF_ACTIVE_ID } from '../../utils/conditional/if-active.service';\nimport { AriaService } from '../../utils/aria/aria.service';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { LoadingListener } from '../../utils/loading/loading-listener';\nimport { ClrLoadingState } from '../../utils/loading/loading';\nimport { ClrOption } from './option';\nimport { ComboboxFocusHandler } from './providers/combobox-focus-handler.service';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\n\nlet nbOptionsComponents = 0;\n\n@Component({\n selector: 'clr-options',\n template: `\n <div *ngIf=\"optionSelectionService.loading\" class=\"clr-combobox-options-loading\">\n <clr-spinner clrInline>\n {{ commonStrings.keys.loading }}\n </clr-spinner>\n <span class=\"clr-combobox-options-text\">\n {{ searchText(optionSelectionService.currentInput) }}\n </span>\n </div>\n\n <!-- Rendered if data set is empty -->\n <div *ngIf=\"emptyOptions\">\n <span class=\"clr-combobox-options-empty-text\">\n {{ commonStrings.keys.comboboxNoResults }}\n </span>\n </div>\n\n <!--Option Groups and Options will be projected here-->\n <ng-content></ng-content>\n `,\n providers: [{ provide: LoadingListener, useExisting: ClrOptions }],\n host: {\n '[class.clr-combobox-options]': 'true',\n '[attr.role]': '\"listbox\"',\n '[id]': 'optionsId',\n },\n})\nexport class ClrOptions<T> implements AfterViewInit, LoadingListener, OnDestroy {\n public loading = false;\n private subscriptions: Subscription[] = [];\n\n constructor(\n public optionSelectionService: OptionSelectionService<T>,\n @Inject(IF_ACTIVE_ID) public id: number,\n private ariaService: AriaService,\n private el: ElementRef,\n public commonStrings: ClrCommonStringsService,\n private focusHandler: ComboboxFocusHandler<T>,\n private toggleService: ClrPopoverToggleService,\n @Optional()\n @Inject(POPOVER_HOST_ANCHOR)\n parentHost: ElementRef,\n @Inject(DOCUMENT) private document: any\n ) {\n if (!parentHost) {\n throw new Error('clr-options should only be used inside of a clr-combobox');\n }\n\n if (!this.optionsId) {\n this.optionsId = 'clr-options-' + nbOptionsComponents++;\n }\n }\n\n public searchText(input: string) {\n return this.commonStrings.parse(this.commonStrings.keys.comboboxSearching, { INPUT: input });\n }\n\n /**\n * Tests if the list of options is empty, meaning it doesn't contain any items\n */\n public get emptyOptions() {\n return !this.optionSelectionService.loading && this.items.length === 0;\n }\n\n @Input('id')\n set optionsId(id: string) {\n this.ariaService.ariaControls = id;\n this.ariaService.ariaOwns = id;\n }\n\n get optionsId(): string {\n return this.ariaService.ariaControls;\n }\n\n _items: QueryList<ClrOption<T>>;\n @ContentChildren(ClrOption)\n set items(items: QueryList<ClrOption<T>>) {\n this._items = items;\n this.focusHandler.addOptionValues(this._items.map(option => option.optionProxy));\n }\n\n get items(): QueryList<ClrOption<T>> {\n return this._items;\n }\n\n loadingStateChange(state: ClrLoadingState): void {\n this.loading = state === ClrLoadingState.LOADING;\n }\n\n ngAfterViewInit() {\n this.focusHandler.listbox = this.el.nativeElement;\n\n this.subscriptions.push(\n fromEvent(this.document, 'scroll', { capture: true }).subscribe(event => {\n if (\n this.toggleService.open &&\n (event as Event).target !== this.el.nativeElement &&\n (event as Event).target !== this.focusHandler.textInput\n ) {\n this.toggleService.open = false;\n }\n })\n );\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class ComboboxContainerService {\n labelOffset = 0;\n labelText: string;\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n Component,\n Optional,\n ElementRef,\n ViewChild,\n ContentChild,\n AfterViewInit,\n AfterContentInit,\n} from '@angular/core';\n\nimport { NgControlService } from '../common/providers/ng-control.service';\nimport { ControlIdService } from '../common/providers/control-id.service';\nimport { ControlClassService } from '../common/providers/control-class.service';\nimport { LayoutService } from '../common/providers/layout.service';\nimport { ComboboxContainerService } from './providers/combobox-container.service';\nimport { ClrAbstractContainer } from '../common/abstract-container';\nimport { ClrLabel } from '../common/label';\nimport { IfControlStateService } from '../common/if-control-state/if-control-state.service';\n\n@Component({\n selector: 'clr-combobox-container',\n template: `\n <ng-content select=\"label\"></ng-content>\n <label *ngIf=\"!label && addGrid()\"></label>\n <div class=\"clr-control-container\" [ngClass]=\"controlClass()\" #controlContainer>\n <ng-content select=\"clr-combobox\"></ng-content>\n <cds-icon\n *ngIf=\"showInvalid\"\n class=\"clr-validate-icon\"\n status=\"danger\"\n shape=\"exclamation-circle\"\n aria-hidden=\"true\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"showValid\"\n class=\"clr-validate-icon\"\n status=\"success\"\n shape=\"check-circle\"\n aria-hidden=\"true\"\n ></cds-icon>\n <ng-content select=\"clr-control-helper\" *ngIf=\"showHelper\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showInvalid\"></ng-content>\n <ng-content select=\"clr-control-success\" *ngIf=\"showValid\"></ng-content>\n </div>\n `,\n host: {\n '[class.clr-form-control]': 'true',\n '[class.clr-combobox-form-control]': 'true',\n '[class.clr-form-control-disabled]': 'control?.disabled',\n '[class.clr-row]': 'addGrid()',\n },\n providers: [IfControlStateService, NgControlService, ControlIdService, ControlClassService, ComboboxContainerService],\n})\nexport class ClrComboboxContainer extends ClrAbstractContainer implements AfterContentInit, AfterViewInit {\n @ViewChild('controlContainer') controlContainer: ElementRef;\n @ContentChild(ClrLabel) label: ClrLabel;\n\n constructor(\n ifControlStateService: IfControlStateService,\n @Optional() layoutService: LayoutService,\n controlClassService: ControlClassService,\n ngControlService: NgControlService,\n private containerService: ComboboxContainerService,\n private el: ElementRef\n ) {\n super(ifControlStateService, layoutService, controlClassService, ngControlService);\n }\n\n ngAfterContentInit() {\n if (this.label) {\n this.containerService.labelText = this.label.labelText;\n }\n }\n\n ngAfterViewInit() {\n this.containerService.labelOffset =\n this.controlContainer.nativeElement.offsetHeight - this.el.nativeElement.offsetHeight;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({ selector: '[clrOptionSelected]' })\nexport class ClrOptionSelected<T> {\n constructor(public template: TemplateRef<{ $implicit: T }>) {}\n\n @Input('clrOptionSelected') selected: T;\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable, Optional, Renderer2, SkipSelf } from '@angular/core';\nimport { isObservable, of } from 'rxjs';\n\nimport { ArrowKeyDirection } from './arrow-key-direction.enum';\nimport { FocusableItem } from './focusable-item/focusable-item';\n\n@Injectable()\nexport class FocusService {\n constructor(private renderer: Renderer2) {}\n\n private _unlistenFuncs: (() => void)[] = [];\n private _current: FocusableItem;\n public get current() {\n return this._current;\n }\n\n reset(first: FocusableItem) {\n this._current = first;\n }\n\n listenToArrowKeys(el: HTMLElement) {\n // The following listeners return false when there was an action to take for the key pressed,\n // in order to prevent the default behavior of that key.\n this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.arrowup', () => !this.move(ArrowKeyDirection.UP)));\n this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.arrowdown', () => !this.move(ArrowKeyDirection.DOWN)));\n this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.arrowleft', () => !this.move(ArrowKeyDirection.LEFT)));\n this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.arrowright', () => !this.move(ArrowKeyDirection.RIGHT)));\n }\n\n registerContainer(el: HTMLElement) {\n this.renderer.setAttribute(el, 'tabindex', '0');\n this.listenToArrowKeys(el);\n // The following listeners return false when there was an action to take for the key pressed,\n // in order to prevent the default behavior of that key.\n this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.space', () => !this.activateCurrent()));\n this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.enter', () => !this.activateCurrent()));\n }\n\n moveTo(item: FocusableItem) {\n /**\n * Make sure that item is not undefined,\n * This is safety net in the case that someone sometime decide to\n * call this method without having FocusableItem.\n */\n if (item === undefined) {\n return;\n }\n\n if (this.current) {\n this.current.blur();\n }\n item.focus();\n this._current = item;\n }\n\n move(direction: ArrowKeyDirection): boolean {\n let moved = false;\n if (this.current) {\n const next = this.current[direction];\n if (next) {\n // Turning the value into an Observable isn't great, but it's the fastest way to avoid code duplication.\n // If performance ever matters for this, we can refactor using additional private methods.\n const nextObs = isObservable(next) ? next : of(next);\n nextObs.subscribe(item => {\n if (item) {\n this.moveTo(item);\n moved = true;\n }\n });\n }\n }\n return moved;\n }\n\n activateCurrent() {\n if (this.current && this.current.activate) {\n this.current.activate();\n return true;\n }\n return false;\n }\n\n public detachListeners() {\n this._unlistenFuncs.forEach(unlisten => unlisten());\n }\n}\n\nexport function clrFocusServiceFactory(existing: FocusService, renderer: Renderer2) {\n return existing || new FocusService(renderer);\n}\n\nexport const FOCUS_SERVICE_PROVIDER = {\n provide: FocusService,\n useFactory: clrFocusServiceFactory,\n deps: [[new Optional(), new SkipSelf(), FocusService], Renderer2],\n};\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum ClrFocusDirection {\n VERTICAL = 'vertical',\n HORIZONTAL = 'horizontal',\n BOTH = 'both',\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ElementRef, Inject, PLATFORM_ID } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Directive({\n selector: '[clrKeyFocusItem]',\n})\nexport class ClrKeyFocusItem {\n get nativeElement() {\n return this.elementRef.nativeElement;\n }\n\n constructor(private elementRef: ElementRef, @Inject(PLATFORM_ID) private platformId: any) {}\n\n focus() {\n if (isPlatformBrowser(this.platformId)) {\n this.elementRef.nativeElement.focus();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n Component,\n ContentChildren,\n EventEmitter,\n HostListener,\n Input,\n Output,\n QueryList,\n ElementRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ClrFocusDirection } from './enums/focus-direction.enum';\nimport { FocusableItem } from './interfaces';\n\nimport { KeyCodes } from './../../enums/key-codes.enum';\nimport { ClrKeyFocusItem } from './key-focus-item';\nimport { preventArrowKeyScroll, keyValidator } from './util';\n\n@Component({\n selector: '[clrKeyFocus]',\n template: '<ng-content></ng-content>',\n})\nexport class ClrKeyFocus {\n constructor(private elementRef: ElementRef) {}\n @Input('clrDirection') direction: ClrFocusDirection | string = ClrFocusDirection.VERTICAL;\n @Input('clrFocusOnLoad') focusOnLoad = false;\n @Output('clrFocusChange') private focusChange: EventEmitter<number> = new EventEmitter<number>();\n @ContentChildren(ClrKeyFocusItem, { descendants: true })\n protected clrKeyFocusItems: QueryList<ClrKeyFocusItem>;\n\n private _focusableItems: Array<FocusableItem>;\n @Input('clrKeyFocus')\n /**\n * Here we use `any` cause any other type require reworking all methods below and a lot of more ifs.\n * this method will only work with array with FocusableItems anyway so any other value will be ignored.\n */\n set focusableItems(elements: Array<FocusableItem> | any) {\n // We accept a list of focusable elements (HTMLElements or existing Directives) or auto query for clrKeyFocusItem\n // We accept a list reference in the cases where we cannot use ContentChildren to query\n // ContentChildren can be unavailable if content is projected outside the scope of the component (see tabs).\n if (Array.isArray(elements) && elements.length) {\n this._focusableItems = elements as Array<FocusableItem>;\n this.initializeFocus();\n }\n }\n get focusableItems() {\n if (this._focusableItems) {\n return this._focusableItems;\n } else if (this.clrKeyFocusItems) {\n return this.clrKeyFocusItems.toArray();\n }\n return [];\n }\n\n get nativeElement(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n\n private _current = 0;\n\n get current() {\n return this._current;\n }\n\n set current(value: number) {\n if (this._current !== value) {\n this._current = value;\n }\n }\n\n get currentItem() {\n return this.focusableItems[this._current];\n }\n\n get currentItemElement(): HTMLElement {\n return this.currentItem.nativeElement ? this.currentItem.nativeElement : (this.currentItem as HTMLElement);\n }\n\n focusCurrent() {\n this.currentItem.focus();\n this.focusChange.next(this._current);\n }\n\n moveTo(position: number) {\n if (this.positionInRange(position)) {\n this.current = position;\n this.focusCurrent();\n }\n }\n\n protected subscriptions: Subscription[] = [];\n\n ngAfterContentInit() {\n this.subscriptions.push(this.listenForItemUpdates());\n this.initializeFocus();\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n @HostListener('keydown', ['$event'])\n handleKeyboardEvent(event: KeyboardEvent) {\n // Make sure event was originated on the current item's element\n if (this.currentItemElement !== event.target) {\n const position = this.getItemPosition(event.target as HTMLElement);\n if (this.positionInRange(position)) {\n this.current = position;\n }\n }\n\n if (this.prevKeyPressed(event) && this.currentFocusIsNotFirstItem()) {\n this.moveTo(this.current - 1);\n } else if (this.nextKeyPressed(event) && this.currentFocusIsNotLastItem()) {\n this.moveTo(this.current + 1);\n } else if (event.code === KeyCodes.Home) {\n this.moveTo(0);\n } else if (event.code === KeyCodes.End) {\n this.moveTo(this.focusableItems.length - 1);\n }\n\n preventArrowKeyScroll(event);\n }\n\n @HostListener('click', ['$event'])\n setClickedItemCurrent(event: any) {\n const position = this.getItemPosition(event.target);\n\n if (position > -1) {\n this.moveTo(position);\n }\n }\n\n private getItemPosition(item: HTMLElement) {\n if (this._focusableItems) {\n return this.focusableItems.indexOf(item);\n } else {\n return this.focusableItems.map(_item => _item.nativeElement).indexOf(item);\n }\n }\n\n protected positionInRange(position: number) {\n return position >= 0 && position < this.focusableItems.length;\n }\n\n protected currentFocusIsNotFirstItem() {\n return this._current - 1 >= 0;\n }\n\n protected currentFocusIsNotLastItem() {\n return this._current + 1 < this.focusableItems.length;\n }\n\n protected initializeFocus() {\n if (this.focusableItems && this.focusableItems.length) {\n // It is possible that the focus was on an element, whose index is no longer available.\n // This can happen when some of the focusable elements are being removed.\n // In such cases, the new focus is initialized on the last focusable element.\n if (this._current >= this.focusableItems.length) {\n this._current = this.focusableItems.length - 1;\n }\n\n if (this.focusOnLoad) {\n this.currentItem.focus();\n this.focusChange.next();\n }\n }\n }\n\n private listenForItemUpdates() {\n return this.clrKeyFocusItems.changes.subscribe(() => {\n this.initializeFocus();\n });\n }\n\n protected nextKeyPressed(event: KeyboardEvent) {\n const key = keyValidator(event.key);\n\n switch (this.direction) {\n case ClrFocusDirection.VERTICAL:\n return key === KeyCodes.ArrowDown;\n case ClrFocusDirection.HORIZONTAL:\n return key === KeyCodes.ArrowRight;\n case ClrFocusDirection.BOTH:\n return key === KeyCodes.ArrowDown || key === KeyCodes.ArrowRight;\n default:\n return false;\n }\n }\n\n protected prevKeyPressed(event: KeyboardEvent) {\n const key = keyValidator(event.key);\n\n switch (this.direction) {\n case ClrFocusDirection.VERTICAL:\n return key === KeyCodes.ArrowUp;\n case ClrFocusDirection.HORIZONTAL:\n return key === KeyCodes.ArrowLeft;\n case ClrFocusDirection.BOTH:\n return key === KeyCodes.ArrowUp || key === KeyCodes.ArrowLeft;\n default:\n return false;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ElementRef, Renderer2, Input } from '@angular/core';\n\nimport { KeyCodes } from '../../../utils/enums/key-codes.enum';\nimport { ClrKeyFocus } from './key-focus';\nimport { FocusableItem } from './interfaces';\n\n@Component({\n selector: '[clrRovingTabindex]',\n template: '<ng-content></ng-content>',\n})\nexport class ClrRovingTabindex extends ClrKeyFocus {\n constructor(elementRef: ElementRef, private renderer: Renderer2) {\n super(elementRef);\n }\n\n // Proxy the input, as the selector name from parent class will still be \"clrKeyFocus\".\n @Input('clrRovingTabindex')\n set rovingIndexItems(elements: Array<FocusableItem> | string) {\n this.focusableItems = elements as Array<FocusableItem>;\n }\n\n get rovingIndexItems(): Array<FocusableItem> | string {\n return this.focusableItems;\n }\n\n private disabled = false;\n\n @Input('clrRovingTabindexDisabled')\n set rovingTabindexDisabled(disabled: boolean) {\n this.disabled = disabled;\n if (this.currentItem) {\n this.setTabindex(this.currentItem, disabled ? -1 : 0);\n }\n }\n\n handleKeyboardEvent(event: KeyboardEvent) {\n if (this.prevKeyPressed(event) && this.currentFocusIsNotFirstItem()) {\n this.updateTabindex(this.current - 1);\n } else if (this.nextKeyPressed(event) && this.currentFocusIsNotLastItem()) {\n this.updateTabindex(this.current + 1);\n } else if (event.code === KeyCodes.Home) {\n this.updateTabindex(0);\n } else if (event.code === KeyCodes.End) {\n this.updateTabindex(this.focusableItems.length - 1);\n }\n super.handleKeyboardEvent(event);\n }\n\n setClickedItemCurrent(event: any) {\n let position: number;\n\n if (this.focusableItems[0].nativeElement) {\n position = this.focusableItems.map(item => item.nativeElement).indexOf(event.target);\n } else {\n position = this.focusableItems.indexOf(event.target);\n }\n\n if (position > -1) {\n this.updateTabindex(position);\n }\n super.setClickedItemCurrent(event);\n }\n\n protected initializeFocus() {\n if (this.focusableItems && this.focusableItems.length) {\n this.focusableItems.forEach(item => {\n this.setTabindex(item, -1);\n });\n\n // It is possible that the focus was on an element, whose index is no longer available.\n // This can happen when some of the focusable elements are being removed.\n // In such cases, the new focus is initialized on the last focusable element.\n if (this.current >= this.focusableItems.length) {\n this.current = this.focusableItems.length - 1;\n }\n if (!this.disabled && this.currentItem) {\n this.setTabindex(this.currentItem, 0);\n }\n }\n super.initializeFocus();\n }\n\n private updateTabindex(newIndex: number) {\n this.setTabindex(this.currentItem, -1);\n this.setTabindex(this.focusableItems[newIndex], 0);\n }\n\n private setTabindex(item: FocusableItem, value: number) {\n if (item instanceof HTMLElement) {\n this.renderer.setAttribute(item, 'tabindex', value.toString());\n } else {\n this.renderer.setAttribute(item.nativeElement, 'tabindex', value.toString());\n }\n }\n}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n Component,\n ContentChild,\n ElementRef,\n HostListener,\n PLATFORM_ID,\n Renderer2,\n ViewChild,\n ViewContainerRef,\n Injector,\n Self,\n Optional,\n Input,\n Output,\n EventEmitter,\n AfterContentInit,\n Inject,\n ChangeDetectorRef,\n} from '@angular/core';\nimport { Subscription, Observable } from 'rxjs';\n\nimport { POPOVER_HOST_ANCHOR } from '../../popover/common/popover-host-anchor.token';\n\nimport { OptionSelectionService } from './providers/option-selection.service';\nimport { WrappedFormControl } from '../common/wrapped-control';\nimport { ClrComboboxContainer } from './combobox-container';\nimport { NgControl, ControlValueAccessor } from '@angular/forms';\nimport { ClrOptionSelected } from './option-selected.directive';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\n\nimport { AriaService } from '../../utils/aria/aria.service';\nimport { IF_ACTIVE_ID_PROVIDER } from '../../utils/conditional/if-active.service';\nimport { MultiSelectComboboxModel } from './model/multi-select-combobox.model';\nimport { SingleSelectComboboxModel } from './model/single-select-combobox.model';\nimport { COMBOBOX_FOCUS_HANDLER_PROVIDER, ComboboxFocusHandler } from './providers/combobox-focus-handler.service';\nimport { FOCUS_SERVICE_PROVIDER } from '../../utils/focus/focus.service';\nimport { BACKSPACE } from '../../utils/key-codes/key-codes';\n\nimport { ClrPopoverPosition } from '../../utils/popover/interfaces/popover-position.interface';\nimport { ClrAxis } from '../../utils/popover/enums/axis.enum';\nimport { ClrAlignment } from '../../utils/popover/enums/alignment.enum';\nimport { ClrSide } from '../../utils/popover/enums/side.enum';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { ClrPopoverEventsService } from '../../utils/popover/providers/popover-events.service';\nimport { ClrPopoverPositionService } from '../../utils/popover/providers/popover-position.service';\nimport { ComboboxContainerService } from './providers/combobox-container.service';\nimport { LoadingListener } from '../../utils/loading/loading-listener';\nimport { ClrLoadingState } from '../../utils/loading/loading';\nimport { ComboboxModel } from './model/combobox.model';\nimport { IfControlStateService, CONTROL_STATE } from '../common/if-control-state/if-control-state.service';\n\n@Component({\n selector: 'clr-combobox',\n templateUrl: './combobox.html',\n providers: [\n ClrPopoverToggleService,\n { provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef },\n OptionSelectionService,\n { provide: LoadingListener, useExisting: ClrCombobox },\n IF_ACTIVE_ID_PROVIDER,\n AriaService,\n FOCUS_SERVICE_PROVIDER,\n COMBOBOX_FOCUS_HANDLER_PROVIDER,\n ClrPopoverToggleService,\n ClrPopoverEventsService,\n ClrPopoverPositionService,\n ],\n host: {\n '[class.aria-required]': 'true',\n '[class.clr-combobox]': 'true',\n '[class.clr-combobox-disabled]': 'control?.disabled',\n },\n})\nexport class ClrCombobox<T>\n extends WrappedFormControl<ClrComboboxContainer>\n implements ControlValueAccessor, LoadingListener, AfterContentInit\n{\n @ViewChild('textboxInput') textbox: ElementRef;\n @ViewChild('trigger') trigger: ElementRef;\n @ContentChild(ClrOptionSelected) optionSelected: ClrOptionSelected<T>;\n\n private onChangeCallback: (model: T | T[]) => any;\n\n protected index = 1;\n\n invalid = false;\n focused = false;\n\n constructor(\n vcr: ViewContainerRef,\n injector: Injector,\n @Self()\n @Optional()\n public control: NgControl,\n protected renderer: Renderer2,\n protected el: ElementRef,\n public optionSelectionService: OptionSelectionService<T>,\n public commonStrings: ClrCommonStringsService,\n private toggleService: ClrPopoverToggleService,\n private positionService: ClrPopoverPositionService,\n @Optional() private controlStateService: IfControlStateService,\n @Optional() private containerService: ComboboxContainerService,\n @Inject(PLATFORM_ID) private platformId: any,\n private ariaService: AriaService,\n private focusHandler: ComboboxFocusHandler<T>,\n private cdr: ChangeDetectorRef\n ) {\n super(vcr, ClrComboboxContainer, injector, control, renderer, el);\n if (control) {\n control.valueAccessor = this;\n }\n // default to SingleSelectComboboxModel, in case the optional input [ClrMulti] isn't used\n this.optionSelectionService.selectionModel = new SingleSelectComboboxModel<T>();\n this.updateControlValue();\n }\n\n focusedPill: any;\n\n // Override the id of WrappedFormControl, as we want to move it to the embedded input.\n // Otherwise the label/component connection does not work and screen readers do not read the label.\n get id() {\n return this.controlIdService.id + '-combobox';\n }\n\n set id(id: string) {\n super.id = id;\n }\n\n inputId(): string {\n return this.controlIdService.id;\n }\n\n get openState(): boolean {\n return this.toggleService.open;\n }\n\n private _searchText = '';\n\n set searchText(text: string) {\n // if input text has changed since last time, fire a change event so application can react to it\n if (text !== this._searchText) {\n this._searchText = text;\n this.clrInputChange.emit(this.searchText);\n this.optionSelectionService.currentInput = this.searchText;\n }\n }\n\n get searchText(): string {\n return this._searchText;\n }\n\n get multiSelectModel(): T[] {\n if (!this.multiSelect) {\n throw Error('multiSelectModel is not available in single selection context');\n }\n return (this.optionSelectionService.selectionModel as MultiSelectComboboxModel<T>).model;\n }\n\n public smartPosition: ClrPopoverPosition = {\n axis: ClrAxis.VERTICAL,\n side: ClrSide.AFTER,\n anchor: ClrAlignment.START,\n content: ClrAlignment.START,\n };\n\n loadingStateChange(state: ClrLoadingState): void {\n this.optionSelectionService.loading = state === ClrLoadingState.LOADING;\n this.positionService.realign();\n if (state !== ClrLoadingState.LOADING && isPlatformBrowser(this.platformId)) {\n setTimeout(() => {\n this.focusFirstActive();\n });\n }\n }\n\n private get disabled() {\n return this.control && this.control.disabled;\n }\n\n unselect(item: T) {\n if (!this.disabled) {\n this.optionSelectionService.unselect(item);\n }\n }\n\n @Input('placeholder') placeholder = '';\n\n @Input('clrMulti')\n set multiSelect(value: boolean | string) {\n if (value) {\n this.optionSelectionService.selectionModel = new MultiSelectComboboxModel<T>();\n } else {\n // in theory, setting this again should not cause errors even though we already set it in constructor,\n // since the initial call to writeValue (caused by [ngModel] input) should happen after this\n this.optionSelectionService.selectionModel = new SingleSelectComboboxModel<T>();\n }\n this.updateControlValue();\n }\n\n get multiSelect() {\n return this.optionSelectionService.multiselectable;\n }\n\n get ariaControls(): string {\n return this.ariaService.ariaControls;\n }\n\n get ariaOwns(): string {\n return this.ariaService.ariaOwns;\n }\n\n get ariaDescribedBySelection(): string {\n return 'selection-' + this.id;\n }\n\n get displayField(): string {\n return this.optionSelectionService.displayField;\n }\n\n onBlur() {\n this.onTouchedCallback();\n if (this.control.control.updateOn === 'blur') {\n this.control.control.updateValueAndValidity();\n }\n this.focused = false;\n }\n\n onFocus() {\n this.focused = true;\n }\n\n getSelectionAriaLabel() {\n if (this.containerService && this.containerService.labelText) {\n return `${this.containerService.labelText} ${this.commonStrings.keys.comboboxSelection}`;\n }\n return this.commonStrings.keys.comboboxSelection;\n }\n\n @HostListener('keydown', ['$event'])\n onKeyUp(event: KeyboardEvent) {\n // if BACKSPACE in multiselect mode, delete the last pill if text is empty\n if (event.keyCode === BACKSPACE && this.multiSelect && this._searchText.length === 0) {\n const multiModel: T[] = this.optionSelectionService.selectionModel.model as T[];\n if (multiModel && multiModel.length > 0) {\n const lastItem: T = multiModel[multiModel.length - 1];\n this.control.control.markAsTouched();\n this.optionSelectionService.unselect(lastItem);\n }\n }\n }\n\n @Output('clrInputChange') public clrInputChange: EventEmitter<string> = new EventEmitter<string>(false);\n\n @Output('clrOpenChange') public clrOpenChange: Observable<boolean> = this.toggleService.openChange;\n\n // This output should be used to set up a live region using aria-live and populate it with updates that reflect each combobox change\n @Output('clrSelectionChange') public clrSelectionChange: Observable<ComboboxModel<T>> =\n this.optionSelectionService.selectionChanged;\n\n private initializeSubscriptions(): void {\n this.subscriptions.push(\n this.optionSelectionService.selectionChanged.subscribe((newSelection: ComboboxModel<T>) => {\n this.updateInputValue(newSelection);\n if (this.multiSelect) {\n this.positionService.realign();\n }\n if (!this.multiSelect && newSelection && !newSelection.isEmpty()) {\n this.toggleService.open = false;\n }\n this.updateControlValue();\n })\n );\n\n this.subscriptions.push(\n this.toggleService.openChange.subscribe(open => {\n if (open) {\n this.focusFirstActive();\n }\n if (this.multiSelect) {\n this.searchText = '';\n } else {\n this.searchText = this.getDisplayNames(this.optionSelectionService.selectionModel.model)[0] || '';\n }\n })\n );\n\n this.subscriptions.push(\n this.toggleService.popoverAligned.subscribe(popoverNode => {\n // When used outside a combobox container\n if (!this.containerService) {\n return;\n }\n const popover: HTMLElement = popoverNode as HTMLElement;\n // Update position if popover hides the label\n if (popover.getBoundingClientRect().top < this.el.nativeElement.getBoundingClientRect().top) {\n this.renderer.setStyle(popoverNode, 'top', `${popover.offsetTop + this.containerService.labelOffset}px`);\n }\n })\n );\n\n if (this.controlStateService) {\n this.subscriptions.push(\n this.controlStateService.statusChanges.subscribe(invalid => {\n this.invalid = invalid === CONTROL_STATE.INVALID;\n })\n );\n }\n }\n\n focusFirstActive() {\n this.focusHandler.focusFirstActive();\n }\n\n private updateInputValue(model: ComboboxModel<T>) {\n if (!this.multiSelect) {\n this.searchText = model.model ? this.getDisplayNames(model.model)[0] : '';\n if (this.searchText) {\n this.optionSelectionService.currentInput = this.searchText;\n }\n }\n }\n\n private updateControlValue() {\n if (this.onChangeCallback) {\n this.onChangeCallback(this.optionSelectionService.selectionModel.model);\n }\n }\n\n // ControlValueAccessor implementation methods\n writeValue(value: T | T[]): void {\n this.optionSelectionService.selectionModel.model = value;\n this.updateInputValue(this.optionSelectionService.selectionModel);\n }\n\n registerOnChange(onChange: any): void {\n this.onChangeCallback = onChange;\n }\n\n getActiveDescendant() {\n const model = this.focusHandler.pseudoFocus.model;\n return model ? model.id : null;\n }\n\n private onTouchedCallback: () => any;\n\n registerOnTouched(onTouched: any): void {\n this.onTouchedCallback = onTouched;\n }\n\n setDisabledState(): void {\n // do nothing\n }\n\n focusInput() {\n this.focusHandler.focusInput();\n }\n\n private getDisplayNames(model: T | T[]) {\n if (this.displayField) {\n if (!Array.isArray(model)) {\n model = [model];\n }\n return model.map(item => (item ? (item as any)[this.displayField] : null));\n }\n return [this.optionSelectionService.selectionModel.model];\n }\n\n // Lifecycle methods\n ngAfterContentInit() {\n this.initializeSubscriptions();\n\n // Initialize with preselected value\n if (!this.optionSelectionService.selectionModel.isEmpty()) {\n this.updateInputValue(this.optionSelectionService.selectionModel);\n }\n }\n\n ngAfterViewInit() {\n this.focusHandler.componentCdRef = this.cdr;\n this.focusHandler.textInput = this.textbox.nativeElement;\n this.focusHandler.trigger = this.trigger.nativeElement;\n // The text input is the actual element we are wrapping\n // This assignment is needed by the wrapper, so it can set\n // the aria properties on the input element, not on the component.\n this.el = this.textbox;\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach((sub: Subscription) => sub.unsubscribe());\n }\n}\n","<!--\n* Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n* This software is released under MIT license.\n* The full license information can be found in LICENSE in the root directory of this project.\n-->\n\n<!-- The (click) handler is needed to auto-focus on input field which can not currently occupy the whole\n width of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverAnchor\n (click)=\"focusInput()\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"invalid\"\n>\n <span\n *ngIf=\"multiSelect && optionSelectionService.selectionModel.model\"\n role=\"grid\"\n clrRovingTabindex\n [clrRovingTabindexDisabled]=\"control?.disabled\"\n clrDirection=\"both\"\n [attr.aria-label]=\"getSelectionAriaLabel()\"\n [attr.aria-disabled]=\"control?.disabled? true: null\"\n >\n <span *ngFor=\"let item of multiSelectModel; let i = index\" class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n <ng-container\n *ngIf=\"optionSelected\"\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n >\n </ng-container>\n </span>\n </span>\n <span role=\"gridcell\">\n <button\n clrKeyFocusItem\n type=\"button\"\n class=\"clr-combobox-remove-btn\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxDelete + ' ' + optionSelectionService.selectionModel.toString(displayField, i)\"\n (click)=\"unselect(item)\"\n >\n <cds-icon shape=\"window-close\" size=\"12\"></cds-icon>\n </button>\n </span>\n </span>\n </span>\n\n <span class=\"clr-combobox-input-wrapper\">\n <input\n #textboxInput\n type=\"text\"\n [id]=\"inputId()\"\n role=\"combobox\"\n class=\"clr-input clr-combobox-input\"\n [(ngModel)]=\"searchText\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n [attr.aria-expanded]=\"openState\"\n [attr.aria-owns]=\"ariaOwns\"\n aria-haspopup=\"listbox\"\n aria-autocomplete=\"list\"\n autocomplete=\"off\"\n [attr.aria-invalid]=\"control?.invalid? true: null\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-activedescendant]=\"getActiveDescendant()\"\n [attr.placeholder]=\"placeholder\"\n aria-multiline=\"false\"\n />\n </span>\n\n <!-- No click handler, as it uses the handler on the .clr-combobox-wrapper -->\n <button\n clrPopoverOpenCloseButton\n #trigger\n type=\"button\"\n class=\"clr-combobox-trigger\"\n tabindex=\"-1\"\n [disabled]=\"control?.disabled || null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxOpen\"\n >\n <cds-icon shape=\"angle\" direction=\"down\" size=\"12\"></cds-icon>\n </button>\n\n <div class=\"clr-focus-indicator\" [class.clr-focus]=\"focused\"></div>\n</div>\n\n<!-- Both close handlers are handled manually due to issues in Edge browser.\n Additionally 'outsideClickToClose' has complex handling that's necessary\n to be manual due to the component architecture -->\n<div role=\"dialog\" *clrPopoverContent=\"openState at smartPosition; outsideClickToClose: false; scrollToClose: false\">\n <ng-content></ng-content>\n</div>\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { NgForOf, NgForOfContext } from '@angular/common';\nimport {\n Directive,\n DoCheck,\n Input,\n IterableDiffer,\n IterableDiffers,\n TemplateRef,\n TrackByFunction,\n ViewContainerRef,\n OnDestroy,\n} from '@angular/core';\n\nimport { OptionSelectionService } from './providers/option-selection.service';\nimport { Subscription } from 'rxjs';\nimport { ClrPopoverPositionService } from '../../utils/popover/providers/popover-position.service';\n\n@Directive({\n selector: '[clrOptionItems][clrOptionItemsOf]',\n})\nexport class ClrOptionItems<T> implements DoCheck, OnDestroy {\n private iterableProxy: NgForOf<T>;\n private _rawItems: T[];\n private filteredItems: T[];\n private subscriptions: Subscription[] = [];\n private filter = '';\n private _filterField: string;\n private differ: IterableDiffer<T> | null = null;\n\n @Input('clrOptionItemsOf')\n public set rawItems(items: T[]) {\n this._rawItems = items ? items : [];\n this.updateItems();\n }\n\n @Input('clrOptionItemsTrackBy')\n set trackBy(value: TrackByFunction<T>) {\n this.iterableProxy.ngForTrackBy = value;\n }\n\n @Input('clrOptionItemsField')\n public set field(field: string) {\n this._filterField = field;\n this.optionService.displayField = field;\n }\n\n constructor(\n public template: TemplateRef<NgForOfContext<T>>,\n private differs: IterableDiffers,\n private optionService: OptionSelectionService<T>,\n private positionService: ClrPopoverPositionService,\n private vcr: ViewContainerRef\n ) {\n this.iterableProxy = new NgForOf<T>(this.vcr, this.template, this.differs);\n this.subscriptions.push(\n optionService.inputChanged.subscribe(filter => {\n this.filter = filter;\n this.updateItems();\n })\n );\n }\n\n private updateItems() {\n if (!this._rawItems || this.filter === undefined || this.filter === null) {\n return;\n }\n if (this._filterField) {\n this.filteredItems = this._rawItems.filter(item => {\n const objValue = (item as any)[this._filterField];\n return objValue ? objValue.toString().toLowerCase().indexOf(this.filter.toLowerCase().toString()) > -1 : false;\n });\n } else {\n // Filter by all item object values\n this.filteredItems = this._rawItems.filter(item => {\n if (typeof item !== 'object') {\n return item.toString().toLowerCase().indexOf(this.filter.toString().toLowerCase()) > -1;\n }\n const objValues = Object.values(item).filter(value => {\n return value !== null && value !== undefined\n ? value.toString().toLowerCase().indexOf(this.filter.toString().toLowerCase()) > -1\n : false;\n });\n return objValues.length > 0;\n });\n }\n this.iterableProxy.ngForOf = this.filteredItems;\n }\n\n ngDoCheck() {\n if (!this.differ) {\n this.differ = this.differs.find(this.filteredItems).create(this.iterableProxy.ngForTrackBy);\n }\n if (this.differ) {\n const changes = this.differ.diff(this.filteredItems);\n if (changes) {\n this.iterableProxy.ngDoCheck();\n this.positionService.realign();\n }\n }\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { ClrSpinner } from './spinner';\n\nexport const CLR_SPINNER_DIRECTIVES: Type<any>[] = [ClrSpinner];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [CLR_SPINNER_DIRECTIVES],\n exports: [CLR_SPINNER_DIRECTIVES],\n})\nexport class ClrSpinnerModule {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrKeyFocus } from './key-focus';\nimport { ClrKeyFocusItem } from './key-focus-item';\nimport { ClrRovingTabindex } from './roving-tabindex';\n\nconst KEY_FOCUS_DIRECTIVES: Type<any>[] = [ClrKeyFocus, ClrRovingTabindex, ClrKeyFocusItem];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [KEY_FOCUS_DIRECTIVES],\n exports: [KEY_FOCUS_DIRECTIVES],\n})\nexport class ClrKeyFocusModule {}\n","/**\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrCommonFormsModule } from '../common/common.module';\nimport { ClrConditionalModule } from '../../utils/conditional/conditional.module';\n\nimport { ClrOption } from './option';\nimport { ClrOptions } from './options';\nimport { ClrCombobox } from './combobox';\nimport { ClrComboboxContainer } from './combobox-container';\nimport { ClrOptionSelected } from './option-selected.directive';\nimport { ClrPopoverModuleNext } from '../../utils/popover/popover.module';\nimport { ClrOptionItems } from './option-items.directive';\nimport { ClrSpinnerModule } from '../../progress/spinner/spinner.module';\nimport { ClrKeyFocusModule } from '../../utils/focus/key-focus/key-focus.module';\nimport { angleIcon, checkCircleIcon, ClarityIcons, exclamationCircleIcon, windowCloseIcon } from '@cds/core/icon';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ClrIconModule,\n ClrKeyFocusModule,\n ClrCommonFormsModule,\n ClrConditionalModule,\n ClrPopoverModuleNext,\n ClrSpinnerModule,\n ],\n declarations: [ClrCombobox, ClrComboboxContainer, ClrOptions, ClrOption, ClrOptionSelected, ClrOptionItems],\n exports: [\n ClrCommonFormsModule,\n ClrCombobox,\n ClrComboboxContainer,\n ClrOptions,\n ClrOption,\n ClrOptionSelected,\n ClrConditionalModule,\n ClrOptionItems,\n ],\n})\nexport class ClrComboboxModule {\n constructor() {\n ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon, angleIcon, windowCloseIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ClrCheckboxModule } from './checkbox/checkbox.module';\nimport { ClrCommonFormsModule } from './common/common.module';\nimport { ClrDatepickerModule } from './datepicker/datepicker.module';\nimport { ClrInputModule } from './input/input.module';\nimport { ClrPasswordModule } from './password/password.module';\nimport { ClrRadioModule } from './radio/radio.module';\nimport { ClrSelectModule } from './select/select.module';\nimport { ClrTextareaModule } from './textarea/textarea.module';\nimport { ClrRangeModule } from './range/range.module';\nimport { ClrDatalistModule } from './datalist/datalist.module';\nimport { ClrComboboxModule } from './combobox/combobox.module';\n\n@NgModule({\n imports: [CommonModule],\n exports: [\n ClrCommonFormsModule,\n ClrCheckboxModule,\n ClrComboboxModule,\n ClrDatepickerModule,\n ClrInputModule,\n ClrPasswordModule,\n ClrRadioModule,\n ClrSelectModule,\n ClrTextareaModule,\n ClrRangeModule,\n ClrDatalistModule,\n ],\n})\nexport class ClrFormsModule {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrLoading } from './loading';\n\nexport const CLR_LOADING_DIRECTIVES: Type<any>[] = [ClrLoading];\n\n@NgModule({ imports: [CommonModule], declarations: [CLR_LOADING_DIRECTIVES], exports: [CLR_LOADING_DIRECTIVES] })\nexport class ClrLoadingModule {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Directive, ElementRef, EventEmitter, Input, NgZone, OnDestroy, Output, Renderer2 } from '@angular/core';\n\n@Directive({ selector: '[clrOutsideClick]' })\nexport class OutsideClick implements OnDestroy {\n @Input('clrStrict') strict = false;\n\n @Output('clrOutsideClick') outsideClick = new EventEmitter<any>(false);\n\n private documentClickListener: VoidFunction;\n\n constructor(host: ElementRef<HTMLElement>, renderer: Renderer2, ngZone: NgZone) {\n ngZone.runOutsideAngular(() => {\n this.documentClickListener = renderer.listen('document', 'click', (event: MouseEvent) => {\n // Compare the element in the DOM on which the mouse was clicked\n // with the current actionMenu native HTML element.\n if (host.nativeElement === event.target) {\n return;\n }\n\n if (!this.strict && host.nativeElement.contains(event.target as HTMLElement)) {\n return;\n }\n\n // We'll run change detection only if the click event actually happened outside of\n // the host element.\n ngZone.run(() => {\n this.outsideClick.emit(event);\n });\n });\n });\n }\n\n ngOnDestroy(): void {\n this.documentClickListener();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Type } from '@angular/core';\nimport { OutsideClick } from './outside-click';\n\nexport * from './outside-click';\n\nexport const OUSTIDE_CLICK_DIRECTIVES: Type<any>[] = [OutsideClick];\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OUSTIDE_CLICK_DIRECTIVES } from './index';\n\n@NgModule({ imports: [CommonModule], declarations: [OUSTIDE_CLICK_DIRECTIVES], exports: [OUSTIDE_CLICK_DIRECTIVES] })\nexport class ClrOutsideClickModule {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n/*\n * If we someday want to be able to render the datagrid in a webworker,\n * this is where we would test if we're in headless mode. Right now it's not testing anything, but any access\n * to native DOM elements' methods and properties in the Datagrid happens here.\n */\n\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class DomAdapter {\n userDefinedWidth(element: HTMLElement): number {\n element.classList.add('datagrid-cell-width-zero');\n const userDefinedWidth = this.clientRect(element).width;\n element.classList.remove('datagrid-cell-width-zero');\n return userDefinedWidth;\n }\n\n scrollBarWidth(element: any) {\n return element.offsetWidth - element.clientWidth;\n }\n\n scrollWidth(element: any) {\n return element.scrollWidth || 0;\n }\n\n computedHeight(element: any): number {\n return parseInt(getComputedStyle(element).getPropertyValue('height'), 10);\n }\n\n clientRect(element: any): DOMRect {\n const elementClientRect = element.getBoundingClientRect();\n return {\n top: parseInt(elementClientRect.top, 10),\n bottom: parseInt(elementClientRect.bottom, 10),\n left: parseInt(elementClientRect.left, 10),\n right: parseInt(elementClientRect.right, 10),\n width: parseInt(elementClientRect.width, 10),\n height: parseInt(elementClientRect.height, 10),\n } as DOMRect;\n }\n\n minWidth(element: any): number {\n return parseInt(getComputedStyle(element).getPropertyValue('min-width'), 10);\n }\n\n focus(element: any): void {\n element.focus();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { DragEventInterface, DragPointPosition } from './interfaces/drag-event.interface';\n\n// This class is used to convert an internal event\n// to an external event to be emitted.\nexport class ClrDragEvent<T> {\n public dragPosition: DragPointPosition;\n public group: string | string[];\n public dragDataTransfer: T;\n public dropPointPosition: DragPointPosition;\n\n constructor(dragEvent: DragEventInterface<T>) {\n this.dragPosition = dragEvent.dragPosition;\n this.group = dragEvent.group;\n this.dragDataTransfer = dragEvent.dragDataTransfer;\n this.dropPointPosition = dragEvent.dropPointPosition;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nexport enum DragEventType {\n DRAG_START,\n DRAG_MOVE,\n DRAG_END,\n DRAG_ENTER,\n DRAG_LEAVE,\n DROP,\n}\n\nexport interface DragPointPosition {\n pageX: number;\n pageY: number;\n moveX?: number;\n moveY?: number;\n}\n\nexport interface DragEventInterface<T> {\n type: DragEventType;\n group?: string | string[];\n ghostElement?: any;\n dragPosition: DragPointPosition;\n dragDataTransfer?: T;\n // For default ghosts, this dropPointPosition denotes the center point of the ghost element.\n // This center point is used to determine whether the ghost is over droppable elements or not.\n dropPointPosition?: DragPointPosition;\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { DragEventInterface, DragEventType } from '../interfaces/drag-event.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class DragAndDropEventBusService<T> {\n private dragStart: Subject<DragEventInterface<T>> = new Subject<DragEventInterface<T>>();\n private dragMove: Subject<DragEventInterface<T>> = new Subject<DragEventInterface<T>>();\n private dragEnd: Subject<DragEventInterface<T>> = new Subject<DragEventInterface<T>>();\n private drop: Subject<DragEventInterface<T>> = new Subject<DragEventInterface<T>>();\n\n get dragStarted(): Observable<DragEventInterface<T>> {\n return this.dragStart.asObservable();\n }\n\n get dragMoved(): Observable<DragEventInterface<T>> {\n return this.dragMove.asObservable();\n }\n\n get dragEnded(): Observable<DragEventInterface<T>> {\n return this.dragEnd.asObservable();\n }\n\n get dropped(): Observable<DragEventInterface<T>> {\n return this.drop.asObservable();\n }\n\n broadcast(event: DragEventInterface<T>): void {\n switch (event.type) {\n case DragEventType.DRAG_START:\n this.dragStart.next(event);\n break;\n case DragEventType.DRAG_MOVE:\n this.dragMove.next(event);\n break;\n case DragEventType.DRAG_END:\n this.dragEnd.next(event);\n break;\n case DragEventType.DROP:\n this.drop.next(event);\n break;\n default:\n break;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Injectable, NgZone, Renderer2 } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { DragEventInterface, DragEventType, DragPointPosition } from '../interfaces/drag-event.interface';\nimport { DragAndDropEventBusService } from './drag-and-drop-event-bus.service';\n\n@Injectable()\nexport class DragEventListenerService<T> {\n private draggableEl: any;\n\n // contains listeners for the starting events such as mousedown and touchstart\n private listeners: (() => void)[] = [];\n // contains listeners for nested events that happens after/inside the starting events\n // such as selectstart, mousemove/touchmove, mouseup/touchend\n private nestedListeners: (() => void)[];\n\n // contains listener for mousemove/touchmove before delay\n private checkDragStartBoundaryListener: () => void;\n\n private dragStart: Subject<DragEventInterface<T>> = new Subject<DragEventInterface<T>>();\n private dragMove: Subject<DragEventInterface<T>> = new Subject<DragEventInterface<T>>();\n private dragEnd: Subject<DragEventInterface<T>> = new Subject<DragEventInterface<T>>();\n\n private hasDragStarted = false;\n\n private dragStartDelayTimeout: ReturnType<typeof setTimeout>;\n\n get dragStarted(): Observable<DragEventInterface<T>> {\n return this.dragStart.asObservable();\n }\n\n get dragMoved(): Observable<DragEventInterface<T>> {\n return this.dragMove.asObservable();\n }\n\n get dragEnded(): Observable<DragEventInterface<T>> {\n return this.dragEnd.asObservable();\n }\n\n get dragStartPosition(): DragPointPosition {\n return this.initialPosition;\n }\n\n constructor(private ngZone: NgZone, private renderer: Renderer2, private eventBus: DragAndDropEventBusService<T>) {}\n\n private initialPosition: DragPointPosition;\n\n // Draggable component sets these properties:\n public dragDataTransfer?: T;\n public group?: string | string[];\n public dragStartDelay = 0;\n\n // DraggableGhost component sets these properties:\n public ghostElement?: any;\n public dropPointPosition?: DragPointPosition;\n\n public attachDragListeners(draggableEl: Node) {\n this.draggableEl = draggableEl;\n this.listeners.push(this.customDragEvent(this.draggableEl, 'mousedown', 'mousemove', 'mouseup'));\n this.listeners.push(this.customDragEvent(this.draggableEl, 'touchstart', 'touchmove', 'touchend'));\n }\n\n public detachDragListeners() {\n if (this.listeners) {\n this.listeners.map(event => event());\n }\n\n // In most cases, once users start dragging with mousedown/touchstart events,\n // they will end dragging at one point with mouseup/touchend.\n // However, there might be a few cases where mousedown/touchstart events get registered,\n // but the draggable element gets removed before user ends dragging.\n // In that case, we need to remove the attached listeners that happened during the mousedown/touchstart events.\n if (this.nestedListeners) {\n this.nestedListeners.map(event => event());\n }\n\n if (this.checkDragStartBoundaryListener) {\n this.checkDragStartBoundaryListener();\n }\n }\n\n private getNativeEventObject(event: MouseEvent | TouchEvent): any {\n if ((event as TouchEvent).hasOwnProperty('changedTouches')) {\n return (event as TouchEvent).changedTouches[0];\n } else {\n return event;\n }\n }\n\n private customDragEvent(element: Node, startOnEvent: string, moveOnEvent: string, endOnEvent: string): () => void {\n return this.renderer.listen(element, startOnEvent, (startEvent: MouseEvent | TouchEvent) => {\n // save the initial point to initialPosition\n // this will be used to calculate how far the draggable has been dragged from its initial position\n this.initialPosition = {\n pageX: this.getNativeEventObject(startEvent).pageX,\n pageY: this.getNativeEventObject(startEvent).pageY,\n };\n\n // Initialize nested listeners' property with a new empty array;\n this.nestedListeners = [];\n\n // This is needed to disable selection during dragging (especially in EDGE/IE11).\n this.nestedListeners.push(\n this.renderer.listen('document', 'selectstart', (selectEvent: Event) => {\n selectEvent.preventDefault();\n selectEvent.stopImmediatePropagation();\n })\n );\n\n // Listen to mousemove/touchmove events outside of angular zone.\n this.ngZone.runOutsideAngular(() => {\n // During the drag start delay, pointer should stay within the boundary.\n this.checkDragStartBoundary(moveOnEvent);\n\n this.dragStartDelayTimeout = setTimeout(() => {\n if (this.checkDragStartBoundaryListener) {\n this.checkDragStartBoundaryListener();\n }\n\n this.hasDragStarted = true;\n // Fire \"dragstart\"\n this.broadcast(startEvent, DragEventType.DRAG_START);\n\n this.nestedListeners.push(\n this.renderer.listen('document', moveOnEvent, (moveEvent: MouseEvent | TouchEvent) => {\n // Event.stopImmediatePropagation() is needed here to prevent nested draggables from getting dragged\n // altogether. We shouldn't use Event.stopPropagation() here as we are listening to the events\n // on the global element level.\n\n // With Event.stopImmediatePropagation(), it registers the events sent from the inner most draggable\n // first. Then immediately after that, it stops listening to the same type of events on the same\n // element. So this will help us to not register the same events that would come from the parent\n // level draggables eventually.\n\n moveEvent.stopImmediatePropagation();\n\n if (this.hasDragStarted) {\n // Fire \"dragmove\"\n this.broadcast(moveEvent, DragEventType.DRAG_MOVE);\n }\n })\n );\n }, this.dragStartDelay);\n });\n\n // Listen to mouseup/touchend events.\n this.nestedListeners.push(\n this.renderer.listen('document', endOnEvent, (endEvent: MouseEvent | TouchEvent) => {\n if (this.hasDragStarted) {\n // Fire \"dragend\" only if dragstart is registered\n this.hasDragStarted = false;\n this.broadcast(endEvent, DragEventType.DRAG_END);\n }\n\n clearTimeout(this.dragStartDelayTimeout);\n\n // We must remove the the nested listeners every time drag completes.\n this.nestedListeners.map(event => event());\n\n // We must remove the event listener from checkDragStartBoundary\n if (this.checkDragStartBoundaryListener) {\n this.checkDragStartBoundaryListener();\n }\n })\n );\n });\n }\n\n private checkDragStartBoundary(eventType: string): void {\n this.checkDragStartBoundaryListener = this.renderer.listen(\n 'document',\n eventType,\n (moveEvent: MouseEvent | TouchEvent) => {\n const deltaX = Math.abs(this.getNativeEventObject(moveEvent).pageX - this.initialPosition.pageX);\n const deltaY = Math.abs(this.getNativeEventObject(moveEvent).pageY - this.initialPosition.pageY);\n\n // If pointer move delta exceeds horizontal or vertical threshold,\n // we should cancel drag initiation.\n if (deltaX > 1 || deltaY > 1) {\n clearTimeout(this.dragStartDelayTimeout);\n if (this.checkDragStartBoundaryListener) {\n this.checkDragStartBoundaryListener();\n }\n }\n }\n );\n }\n\n private broadcast(event: MouseEvent | TouchEvent, eventType: DragEventType): void {\n const dragEvent: DragEventInterface<T> = this.generateDragEvent(event, eventType);\n\n switch (dragEvent.type) {\n case DragEventType.DRAG_START:\n this.dragStart.next(dragEvent);\n break;\n case DragEventType.DRAG_MOVE:\n this.dragMove.next(dragEvent);\n break;\n case DragEventType.DRAG_END:\n this.dragEnd.next(dragEvent);\n break;\n default:\n break;\n }\n\n // The following properties are set after they are broadcasted to the DraggableGhost component.\n dragEvent.ghostElement = this.ghostElement;\n dragEvent.dropPointPosition = this.dropPointPosition;\n\n this.eventBus.broadcast(dragEvent);\n }\n\n private generateDragEvent(event: MouseEvent | TouchEvent, eventType: DragEventType): DragEventInterface<T> {\n const nativeEvent: any = this.getNativeEventObject(event);\n\n return {\n type: eventType,\n dragPosition: {\n pageX: nativeEvent.pageX,\n pageY: nativeEvent.pageY,\n moveX: nativeEvent.pageX - this.initialPosition.pageX,\n moveY: nativeEvent.pageY - this.initialPosition.pageY,\n },\n group: this.group,\n dragDataTransfer: this.dragDataTransfer,\n ghostElement: this.ghostElement,\n };\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Injectable } from '@angular/core';\nimport { DomAdapter } from '../../dom-adapter/dom-adapter';\nimport { DragEventInterface } from '../interfaces/drag-event.interface';\n\n// This service is used to capture the state of clrDraggable element\n// at a certain event and passes it to clrDraggableGhost component.\n@Injectable()\nexport class DraggableSnapshotService<T> {\n constructor(private domAdapter: DomAdapter) {}\n\n private draggableElClientRect: ClientRect;\n private snapshotDragEvent: DragEventInterface<T>;\n\n public capture(el: Node, event: DragEventInterface<T>): void {\n this.draggableElClientRect = this.domAdapter.clientRect(el);\n this.snapshotDragEvent = event;\n }\n public discard(): void {\n delete this.draggableElClientRect;\n delete this.snapshotDragEvent;\n }\n get hasDraggableState(): boolean {\n return !!this.snapshotDragEvent && !!this.draggableElClientRect;\n }\n get clientRect(): ClientRect {\n return this.draggableElClientRect;\n }\n get dragEvent(): DragEventInterface<T> {\n return this.snapshotDragEvent;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { Component, ElementRef, HostBinding, NgZone, OnDestroy, Optional, Renderer2 } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { DragEventInterface } from './interfaces/drag-event.interface';\nimport { DragEventListenerService } from './providers/drag-event-listener.service';\nimport { DraggableSnapshotService } from './providers/draggable-snapshot.service';\n\ntype PagePosition = {\n pageX: number;\n pageY: number;\n};\ntype OffsetPosition = {\n top: number;\n left: number;\n};\n\n@Component({\n selector: 'clr-draggable-ghost',\n template: `<ng-content></ng-content>`,\n animations: [\n trigger('leaveAnimation', [\n transition(':leave', [\n style({ left: '*', top: '*' }),\n animate('0.2s ease-in-out', style({ top: '{{top}}', left: '{{left}}' })),\n ]),\n ]),\n ],\n})\nexport class ClrDraggableGhost<T> implements OnDestroy {\n private draggableGhostEl: any;\n\n private subscriptions: Subscription[] = [];\n\n @HostBinding('@leaveAnimation') leaveAnimConfig = { value: 0, params: { top: '0px', left: '0px' } };\n\n constructor(\n private el: ElementRef,\n @Optional() private dragEventListener: DragEventListenerService<T>,\n @Optional() private draggableSnapshot: DraggableSnapshotService<T>,\n private renderer: Renderer2,\n private ngZone: NgZone\n ) {\n if (!this.dragEventListener || !this.draggableSnapshot) {\n throw new Error('The clr-draggable-ghost component can only be used inside of a clrDraggable directive.');\n }\n\n this.draggableGhostEl = this.el.nativeElement;\n\n // Need to use Renderer2 as it runs outside of NgZone\n this.renderer.addClass(this.draggableGhostEl, 'draggable-ghost');\n\n // Register the ghost element in DragEventListener to pass in a ClrDragEvent.\n this.dragEventListener.ghostElement = this.draggableGhostEl;\n\n // Default ghost size gets the size of ClrDraggable element.\n this.setDefaultGhostSize(this.draggableGhostEl);\n\n const offset: OffsetPosition = {\n top: this.draggableSnapshot.hasDraggableState\n ? this.draggableSnapshot.dragEvent.dragPosition.pageY - this.draggableSnapshot.clientRect.top\n : 0,\n left: this.draggableSnapshot.hasDraggableState\n ? this.draggableSnapshot.dragEvent.dragPosition.pageX - this.draggableSnapshot.clientRect.left\n : 0,\n };\n\n let isAnimationConfigured = false;\n\n this.subscriptions.push(\n this.dragEventListener.dragMoved.subscribe((event: DragEventInterface<T>) => {\n // On the first drag move event, we configure the animation as it's dependent on the first drag event.\n if (!isAnimationConfigured) {\n if (this.draggableSnapshot.hasDraggableState) {\n this.animateToOnLeave(\n `${this.draggableSnapshot.clientRect.top}px`,\n `${this.draggableSnapshot.clientRect.left}px`\n );\n } else {\n this.animateToOnLeave(\n `${this.dragEventListener.dragStartPosition.pageY}px`,\n `${this.dragEventListener.dragStartPosition.pageY}px`\n );\n }\n isAnimationConfigured = true;\n }\n\n // Position the draggable ghost.\n const topLeftPosition: PagePosition = this.findTopLeftPosition(event.dragPosition, offset);\n this.setPositionStyle(this.draggableGhostEl, topLeftPosition.pageX, topLeftPosition.pageY);\n this.dragEventListener.dropPointPosition = this.findDropPointPosition(topLeftPosition);\n })\n );\n }\n\n private setDefaultGhostSize(el: Node): void {\n if (this.draggableSnapshot.hasDraggableState) {\n this.setSizeStyle(el, this.draggableSnapshot.clientRect.width, this.draggableSnapshot.clientRect.height);\n }\n }\n\n private animateToOnLeave(top: string, left: string): void {\n this.ngZone.run(() => {\n this.leaveAnimConfig = { value: 0, params: { top: top, left: left } };\n });\n }\n\n private findTopLeftPosition(dragPosition: PagePosition, offset: OffsetPosition): PagePosition {\n return { pageX: dragPosition.pageX - offset.left, pageY: dragPosition.pageY - offset.top };\n }\n\n private findDropPointPosition(topLeftPosition: PagePosition): PagePosition {\n if (this.draggableSnapshot.hasDraggableState) {\n return {\n pageX: topLeftPosition.pageX + this.draggableSnapshot.clientRect.width / 2,\n pageY: topLeftPosition.pageY + this.draggableSnapshot.clientRect.height / 2,\n };\n } else {\n return topLeftPosition;\n }\n }\n\n private setSizeStyle(el: Node, width: number, height: number): void {\n this.renderer.setStyle(el, 'width', `${width}px`);\n this.renderer.setStyle(el, 'height', `${height}px`);\n }\n\n private setPositionStyle(el: Node, left: number, top: number): void {\n this.renderer.setStyle(el, 'left', `${left}px`);\n this.renderer.setStyle(el, 'top', `${top}px`);\n this.renderer.setStyle(el, 'visibility', 'visible');\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach((sub: Subscription) => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Directive, OnDestroy, Optional, SkipSelf, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { DragEventListenerService } from './providers/drag-event-listener.service';\n\n// This structural directive will be used mainly together with `clr-draggable-ghost` directive inside of clrDraggable\n// directive. The directive is responsible for instantiating `clr-draggable-ghost` directive only during dragging so\n// that Angular Change Detection is prevented from running if a component or directive is placed inside of the\n// `clr-draggable-ghost` directive.\n\n@Directive({ selector: '[clrIfDragged]' })\nexport class ClrIfDragged<T> implements OnDestroy {\n private subscriptions: Subscription[] = [];\n constructor(\n private template: TemplateRef<any>,\n @Optional()\n @SkipSelf()\n private container: ViewContainerRef,\n @Optional() private dragEventListener: DragEventListenerService<T>\n ) {\n if (!this.dragEventListener || !this.container) {\n throw new Error('The *clrIfDragged directive can only be used inside of a clrDraggable directive.');\n }\n\n this.subscriptions.push(\n this.dragEventListener.dragStarted.subscribe(() => {\n this.container.createEmbeddedView(this.template);\n })\n );\n this.subscriptions.push(\n this.dragEventListener.dragEnded.subscribe(() => {\n this.container.clear();\n })\n );\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach((sub: Subscription) => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Injectable, Renderer2 } from '@angular/core';\n\nimport { DragEventListenerService } from './drag-event-listener.service';\n\n// This provider registers the drag handle element.\n// When it registers a element as a drag handle, it attaches that element to the listeners from ClrDragEventListener.\n// Also, it adds the \"drag-handle\" css class to the registered element through Renderer.\n@Injectable()\nexport class DragHandleRegistrarService<T> {\n private _customHandleEl: any;\n private _defaultHandleEl: any;\n\n get defaultHandleEl() {\n return this._defaultHandleEl;\n }\n\n set defaultHandleEl(el: Node) {\n this._defaultHandleEl = el; // defaultHandleEl will be usually the clrDraggable element.\n\n // If the customHandleEl has been registered,\n // don't make the defaultHandleEl the drag handle yet until the customHandleEl is unregistered.\n if (!this._customHandleEl) {\n this.makeElementHandle(this._defaultHandleEl);\n }\n }\n\n constructor(private dragEventListener: DragEventListenerService<T>, private renderer: Renderer2) {}\n\n private makeElementHandle(el: Node) {\n if (this._defaultHandleEl && this._defaultHandleEl !== el) {\n // Before making an element the custom handle element,\n // we should remove the existing drag-handle class from the draggable element.\n this.renderer.removeClass(this._defaultHandleEl, 'drag-handle');\n }\n this.dragEventListener.attachDragListeners(el);\n this.renderer.addClass(el, 'drag-handle');\n }\n\n get customHandleEl() {\n return this._customHandleEl;\n }\n\n public registerCustomHandle(el: Node) {\n this.dragEventListener.detachDragListeners(); // removes the existing listeners\n this._customHandleEl = el;\n this.makeElementHandle(this._customHandleEl);\n }\n\n public unregisterCustomHandle() {\n this.dragEventListener.detachDragListeners(); // removes the existing listeners\n this.renderer.removeClass(this._customHandleEl, 'drag-handle');\n delete this._customHandleEl;\n // if default handle is set, make that handle\n if (this._defaultHandleEl) {\n this.makeElementHandle(this._defaultHandleEl);\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Injectable, Renderer2 } from '@angular/core';\n\n// This service class adds and removes the \"in-drag\" class to the document body element\n// through its public enter() and exit() methods.\n@Injectable()\nexport class GlobalDragModeService {\n constructor(private renderer: Renderer2) {}\n\n enter(): void {\n this.renderer.addClass(document.body, 'in-drag');\n }\n\n exit(): void {\n this.renderer.removeClass(document.body, 'in-drag');\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport {\n AfterContentInit,\n ComponentFactory,\n ComponentFactoryResolver,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n Injector,\n OnDestroy,\n Output,\n ViewContainerRef,\n} from '@angular/core';\nimport { Input } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { DomAdapter } from '../../dom-adapter/dom-adapter';\nimport { ClrDragEvent } from '../drag-event';\nimport { ClrDraggableGhost } from '../draggable-ghost';\nimport { ClrIfDragged } from '../if-dragged';\nimport { DragEventInterface } from '../interfaces/drag-event.interface';\nimport { DragEventListenerService } from '../providers/drag-event-listener.service';\nimport { DragHandleRegistrarService } from '../providers/drag-handle-registrar.service';\nimport { DraggableSnapshotService } from '../providers/draggable-snapshot.service';\nimport { GlobalDragModeService } from '../providers/global-drag-mode.service';\n\n@Directive({\n selector: '[clrDraggable]',\n providers: [\n DragEventListenerService,\n DragHandleRegistrarService,\n DraggableSnapshotService,\n GlobalDragModeService,\n DomAdapter,\n ],\n host: { '[class.draggable]': 'true', '[class.being-dragged]': 'dragOn' },\n})\nexport class ClrDraggable<T> implements AfterContentInit, OnDestroy {\n private draggableEl: any;\n private subscriptions: Subscription[] = [];\n private componentFactory: ComponentFactory<ClrDraggableGhost<T>>;\n public dragOn = false;\n\n constructor(\n private el: ElementRef,\n private dragEventListener: DragEventListenerService<T>,\n private dragHandleRegistrar: DragHandleRegistrarService<T>,\n private viewContainerRef: ViewContainerRef,\n private cfr: ComponentFactoryResolver,\n private injector: Injector,\n private draggableSnapshot: DraggableSnapshotService<T>,\n private globalDragMode: GlobalDragModeService\n ) {\n this.draggableEl = this.el.nativeElement;\n this.componentFactory = this.cfr.resolveComponentFactory<ClrDraggableGhost<T>>(ClrDraggableGhost);\n }\n\n @ContentChild(ClrIfDragged) customGhost: ClrIfDragged<T>;\n\n @Input('clrDraggable')\n set dataTransfer(value: T) {\n this.dragEventListener.dragDataTransfer = value;\n }\n\n @Input('clrGroup')\n set group(value: string | string[]) {\n this.dragEventListener.group = value;\n }\n\n @Input('clrDragStartDelay')\n set dragStartDelay(value: number) {\n if (typeof value === 'number') {\n this.dragEventListener.dragStartDelay = value;\n } else if (typeof value === 'string') {\n this.dragEventListener.dragStartDelay = parseInt(value, 10) || 0;\n }\n }\n\n private createDefaultGhost(event: DragEventInterface<T>) {\n this.draggableSnapshot.capture(this.draggableEl, event);\n // NOTE: The default ghost element will appear\n // next to the clrDraggable in the DOM as a sibling element.\n this.viewContainerRef.createComponent(this.componentFactory, 0, this.injector, [\n [this.draggableEl.cloneNode(true)],\n ]);\n }\n\n private destroyDefaultGhost() {\n this.viewContainerRef.clear();\n this.draggableSnapshot.discard();\n }\n\n @Output('clrDragStart') dragStartEmitter: EventEmitter<ClrDragEvent<T>> = new EventEmitter();\n @Output('clrDragMove') dragMoveEmitter: EventEmitter<ClrDragEvent<T>> = new EventEmitter();\n @Output('clrDragEnd') dragEndEmitter: EventEmitter<ClrDragEvent<T>> = new EventEmitter();\n\n ngAfterContentInit() {\n this.dragHandleRegistrar.defaultHandleEl = this.draggableEl;\n\n this.subscriptions.push(\n this.dragEventListener.dragStarted.subscribe((event: DragEventInterface<T>) => {\n this.globalDragMode.enter();\n this.dragOn = true;\n if (!this.customGhost) {\n this.createDefaultGhost(event);\n }\n\n this.dragStartEmitter.emit(new ClrDragEvent(event));\n })\n );\n this.subscriptions.push(\n this.dragEventListener.dragMoved.subscribe((event: DragEventInterface<T>) => {\n this.dragMoveEmitter.emit(new ClrDragEvent(event));\n })\n );\n this.subscriptions.push(\n this.dragEventListener.dragEnded.subscribe((event: DragEventInterface<T>) => {\n this.globalDragMode.exit();\n this.dragOn = false;\n if (!this.customGhost) {\n this.destroyDefaultGhost();\n }\n this.dragEndEmitter.emit(new ClrDragEvent(event));\n })\n );\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach((sub: Subscription) => sub.unsubscribe());\n this.dragEventListener.detachDragListeners();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Directive, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, Renderer2 } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { DomAdapter } from '../../dom-adapter/dom-adapter';\nimport { ClrDragEvent } from '../drag-event';\nimport { DragEventInterface, DragEventType, DragPointPosition } from '../interfaces/drag-event.interface';\nimport { ClrDropToleranceInterface } from '../interfaces/drop-tolerance.interface';\nimport { DragAndDropEventBusService } from '../providers/drag-and-drop-event-bus.service';\n\n@Directive({\n selector: '[clrDroppable]',\n providers: [DomAdapter],\n host: { '[class.droppable]': 'true', '[class.draggable-match]': 'isDraggableMatch' },\n})\nexport class ClrDroppable<T> implements OnInit, OnDestroy {\n private dragStartSubscription: Subscription;\n private dragMoveSubscription: Subscription;\n private dragEndSubscription: Subscription;\n\n private droppableEl: any;\n private clientRect: ClientRect;\n\n constructor(\n private el: ElementRef,\n private eventBus: DragAndDropEventBusService<T>,\n private domAdapter: DomAdapter,\n private renderer: Renderer2\n ) {\n this.droppableEl = this.el.nativeElement;\n }\n\n isDraggableMatch = false;\n private _isDraggableOver = false;\n\n set isDraggableOver(value: boolean) {\n // We need to add/remove this draggable-over class via Renderer2\n // because isDraggableOver is set outside of NgZone.\n if (value) {\n this.renderer.addClass(this.droppableEl, 'draggable-over');\n } else {\n this.renderer.removeClass(this.droppableEl, 'draggable-over');\n }\n this._isDraggableOver = value;\n }\n\n private _group: string | string[];\n\n @Input('clrGroup')\n set group(value: string | string[]) {\n this._group = value;\n }\n\n private _dropTolerance: ClrDropToleranceInterface = { top: 0, right: 0, bottom: 0, left: 0 };\n\n private dropToleranceGenerator(top = 0, right = top, bottom = top, left = right): ClrDropToleranceInterface {\n return { top, right, bottom, left };\n }\n\n @Input('clrDropTolerance')\n set dropTolerance(value: number | string | ClrDropToleranceInterface) {\n // If user provides an object here and wants to manipulate/update properties individually,\n // the object must be immutable as we generate new object based user's given object.\n if (typeof value === 'number') {\n this._dropTolerance = this.dropToleranceGenerator(value);\n } else if (typeof value === 'string') {\n const toleranceValues = value\n .trim()\n .split(/\\s+/)\n .map(tolerance => parseInt(tolerance, 10));\n this._dropTolerance = this.dropToleranceGenerator(...toleranceValues);\n } else if (value) {\n // The value could be passed in as {left: 20, top: 30 }\n // In this case, the rest of the direction properties should be 0.\n // That's why we initialize properties with 0 first, then override with user's given value.\n this._dropTolerance = { ...this.dropToleranceGenerator(0), ...value };\n }\n }\n\n @Output('clrDragStart') dragStartEmitter: EventEmitter<ClrDragEvent<T>> = new EventEmitter();\n @Output('clrDragMove') dragMoveEmitter: EventEmitter<ClrDragEvent<T>> = new EventEmitter();\n @Output('clrDragEnd') dragEndEmitter: EventEmitter<ClrDragEvent<T>> = new EventEmitter();\n @Output('clrDragLeave') dragLeaveEmitter: EventEmitter<ClrDragEvent<T>> = new EventEmitter();\n @Output('clrDragEnter') dragEnterEmitter: EventEmitter<ClrDragEvent<T>> = new EventEmitter();\n @Output('clrDrop') dropEmitter: EventEmitter<ClrDragEvent<T>> = new EventEmitter();\n\n private unsubscribeFrom(subscription: Subscription): void {\n if (subscription) {\n subscription.unsubscribe();\n }\n }\n\n private checkGroupMatch(draggableGroup: string | string[]): boolean {\n // Both Draggable and Droppable have clrGroup input.\n // The clrGroup input can be both a string key or array of string keys in Draggable and Droppable.\n\n // It's not match if Draggable has no defined value assigned to clrGroup, but Droppable has a defined clrGroup.\n if (!draggableGroup && this._group) {\n return false;\n }\n // The same is true the other way round.\n if (!this._group && draggableGroup) {\n return false;\n }\n\n // It's match if both Draggable and Droppable have no assigned value for clrGroup.\n if (!this._group && !draggableGroup) {\n return true;\n }\n\n // It's match if both Draggable and Droppable have simple string keys that are matching.\n // It's match if Draggable's simple clrGroup key is matching with one of the clrGroup keys of Droppable. The\n // same is true the other way round.\n // it's match if one of the clrGroup keys of Droppable is matching with one of the clrGroup keys of Draggable.\n if (typeof draggableGroup === 'string') {\n if (typeof this._group === 'string') {\n return this._group === draggableGroup;\n } else {\n return this._group.indexOf(draggableGroup) > -1;\n }\n } else {\n if (typeof this._group === 'string') {\n return draggableGroup.indexOf(this._group) > -1;\n } else {\n return (this._group as string[]).some(groupKey => draggableGroup.indexOf(groupKey) > -1);\n }\n }\n }\n\n private isInDropArea(point: DragPointPosition): boolean {\n if (!point) {\n return false;\n }\n\n if (!this.clientRect) {\n this.clientRect = this.domAdapter.clientRect(this.droppableEl);\n }\n\n if (\n point.pageX >= this.clientRect.left - this._dropTolerance.left &&\n point.pageX <= this.clientRect.right + this._dropTolerance.right &&\n point.pageY >= this.clientRect.top - this._dropTolerance.top &&\n point.pageY <= this.clientRect.bottom + this._dropTolerance.bottom\n ) {\n return true;\n } else {\n return false;\n }\n }\n\n private onDragStart(dragStartEvent: DragEventInterface<T>): void {\n // Check draggable and droppable have a matching group key.\n this.isDraggableMatch = this.checkGroupMatch(dragStartEvent.group);\n\n // Subscribe to dragMoved and dragEnded only if draggable and droppable have a matching group key.\n if (this.isDraggableMatch) {\n this.dragStartEmitter.emit(new ClrDragEvent(dragStartEvent));\n this.dragMoveSubscription = this.eventBus.dragMoved.subscribe((dragMoveEvent: DragEventInterface<T>) => {\n this.onDragMove(dragMoveEvent);\n });\n this.dragEndSubscription = this.eventBus.dragEnded.subscribe((dragEndEvent: DragEventInterface<T>) => {\n this.onDragEnd(dragEndEvent);\n });\n }\n }\n\n private onDragMove(dragMoveEvent: DragEventInterface<T>): void {\n const isInDropArea = this.isInDropArea(dragMoveEvent.dropPointPosition);\n if (!this._isDraggableOver && isInDropArea) {\n this.isDraggableOver = true;\n const dragEnterEvent = { ...dragMoveEvent, type: DragEventType.DRAG_ENTER };\n this.eventBus.broadcast(dragEnterEvent);\n this.dragEnterEmitter.emit(new ClrDragEvent(dragEnterEvent));\n } else if (this._isDraggableOver && !isInDropArea) {\n this.isDraggableOver = false;\n const dragLeaveEvent = { ...dragMoveEvent, type: DragEventType.DRAG_LEAVE };\n this.eventBus.broadcast(dragLeaveEvent);\n this.dragLeaveEmitter.emit(new ClrDragEvent(dragLeaveEvent));\n }\n\n this.dragMoveEmitter.emit(new ClrDragEvent(dragMoveEvent));\n }\n\n private onDragEnd(dragEndEvent: DragEventInterface<T>): void {\n if (this._isDraggableOver) {\n if (dragEndEvent.ghostElement) {\n // By this point, the draggable ghost component is destroyed,\n // but the element would be active until its animation completes.\n // As such, once the ghost is dropped over, we will give it \"dropped\" class.\n\n // This process cannot be done in the ghost component\n // because any subscription to the drop event is ineffective or invalid\n // as the component had been already destroyed.\n this.renderer.addClass(dragEndEvent.ghostElement, 'dropped');\n }\n\n const dropEvent = { ...dragEndEvent, type: DragEventType.DROP };\n this.eventBus.broadcast(dropEvent);\n this.dropEmitter.emit(new ClrDragEvent(dropEvent));\n this.isDraggableOver = false;\n }\n this.dragEndEmitter.emit(new ClrDragEvent(dragEndEvent));\n this.unsubscribeFrom(this.dragMoveSubscription);\n this.unsubscribeFrom(this.dragEndSubscription);\n this.isDraggableMatch = false;\n delete this.clientRect;\n }\n\n ngOnInit() {\n this.dragStartSubscription = this.eventBus.dragStarted.subscribe((dragStartEvent: DragEventInterface<T>) => {\n this.onDragStart(dragStartEvent);\n });\n }\n\n ngOnDestroy() {\n this.unsubscribeFrom(this.dragStartSubscription);\n this.unsubscribeFrom(this.dragMoveSubscription);\n this.unsubscribeFrom(this.dragEndSubscription);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ElementRef, OnDestroy, Optional } from '@angular/core';\nimport { DragHandleRegistrarService } from './providers/drag-handle-registrar.service';\n\n@Directive({ selector: '[clrDragHandle]', host: { '[class.drag-handle]': 'true' } })\nexport class ClrDragHandle<T> implements OnDestroy {\n constructor(private el: ElementRef, @Optional() private dragHandleRegistrar: DragHandleRegistrarService<T>) {\n if (!this.dragHandleRegistrar) {\n // ClrDragHandleRegistrar is provided in ClrDraggable so we expect it to be present here\n // as clrDragHandle is required to be used only inside of a clrDraggable directive.\n throw new Error('The clrDragHandle directive can only be used inside of a clrDraggable directive.');\n }\n this.dragHandleRegistrar.registerCustomHandle(this.el.nativeElement);\n }\n\n ngOnDestroy() {\n this.dragHandleRegistrar.unregisterCustomHandle();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrDraggable } from './draggable/draggable';\nimport { ClrDroppable } from './droppable/droppable';\nimport { ClrIfDragged } from './if-dragged';\nimport { ClrDragHandle } from './drag-handle';\nimport { ClrDraggableGhost } from './draggable-ghost';\n\nexport const CLR_DRAG_AND_DROP_DIRECTIVES: Type<any>[] = [\n ClrDraggable,\n ClrDroppable,\n ClrIfDragged,\n ClrDragHandle,\n ClrDraggableGhost,\n];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [CLR_DRAG_AND_DROP_DIRECTIVES],\n entryComponents: [ClrDraggableGhost],\n exports: [CLR_DRAG_AND_DROP_DIRECTIVES],\n})\nexport class ClrDragAndDropModule {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ElementRef, HostBinding, HostListener, Input } from '@angular/core';\n\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { DomAdapter } from '../../dom-adapter/dom-adapter';\n\n@Component({\n selector: 'clr-expandable-animation',\n template: ` <ng-content></ng-content> `,\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n animations: [\n trigger('expandAnimation', [\n transition('true <=> false', [\n style({ height: '{{startHeight}}px', overflow: 'hidden' }),\n animate('0.2s ease-in-out', style({ height: '*' })),\n ]),\n ]),\n ],\n providers: [DomAdapter],\n})\nexport class ClrExpandableAnimation {\n @Input() clrExpandTrigger: any;\n\n startHeight = 0;\n\n constructor(private element: ElementRef, private domAdapter: DomAdapter) {}\n\n @HostBinding('@expandAnimation')\n get expandAnimation() {\n return { value: this.clrExpandTrigger, params: { startHeight: this.startHeight } };\n }\n\n @HostListener('@expandAnimation.done')\n animationDone() {\n // A \"safe\" auto-update of the height ensuring basic OOTB user experience .\n // Prone to small jumps in initial animation height if data was changed in the meantime, window was resized, etc.\n // For optimal behavior call manually updateStartHeight() from the parent component before initiating the update.\n this.updateStartHeight();\n }\n\n updateStartHeight() {\n this.startHeight = this.domAdapter.computedHeight(this.element.nativeElement) || 0;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Type } from '@angular/core';\n\nimport { ClrExpandableAnimation } from './expandable-animation';\n\nexport * from './expandable-animation';\n\nexport const EXPANDABLE_ANIMATION_DIRECTIVES: Type<any>[] = [ClrExpandableAnimation];\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { EXPANDABLE_ANIMATION_DIRECTIVES } from './index';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [EXPANDABLE_ANIMATION_DIRECTIVES],\n exports: [EXPANDABLE_ANIMATION_DIRECTIVES],\n})\nexport class ClrExpandableAnimationModule {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { InjectionToken } from '@angular/core';\n\nexport const FOCUS_ON_VIEW_INIT = new InjectionToken<boolean>('FOCUS_ON_VIEW_INIT');\n\n// This provider holds the default value for clrFocusOnViewInit directive's isEnabled property.\n// So users can interject this provider and set their own value for this provider.\nexport const FOCUS_ON_VIEW_INIT_PROVIDER = {\n provide: FOCUS_ON_VIEW_INIT,\n useValue: true,\n};\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n Directive,\n ElementRef,\n HostListener,\n Inject,\n Input,\n PLATFORM_ID,\n Renderer2,\n} from '@angular/core';\nimport { FOCUS_ON_VIEW_INIT } from './focus-on-view-init.provider';\n\n/* This directive is for guiding the document focus to the newly added content when its view is initialized\n so that assistive technologies can read its content. */\n@Directive({\n selector: '[clrFocusOnViewInit]',\n})\nexport class ClrFocusOnViewInit implements AfterViewInit {\n constructor(\n private el: ElementRef,\n @Inject(PLATFORM_ID) private platformId: any,\n @Inject(FOCUS_ON_VIEW_INIT) private focusOnViewInit: boolean,\n @Inject(DOCUMENT) document: any,\n private renderer: Renderer2\n ) {\n this._isEnabled = this.focusOnViewInit;\n\n // Angular compiler doesn't understand the type Document\n // when working out the metadata for injectable parameters,\n // even though it understands the injection token DOCUMENT\n // https://github.com/angular/angular/issues/20351\n this.document = document;\n }\n\n private document: Document;\n private directFocus = true; // true if the element gets focused without need to set tabindex;\n\n @HostListener('focusout')\n onFocusout() {\n if (!this.directFocus) {\n // manually set attributes and styles should be removed\n this.renderer.removeAttribute(this.el.nativeElement, 'tabindex');\n this.renderer.setStyle(this.el.nativeElement, 'outline', null);\n }\n }\n\n private _isEnabled: boolean;\n @Input('clrFocusOnViewInit')\n set isEnabled(value: boolean | string) {\n if (this.focusOnViewInit && typeof value === 'boolean') {\n this._isEnabled = value;\n }\n }\n\n ngAfterViewInit() {\n this.focus();\n }\n\n private focus() {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n if (!this._isEnabled) {\n return;\n }\n if (this.document && this.document.activeElement !== this.el.nativeElement) {\n this.el.nativeElement.focus();\n if (this.document.activeElement !== this.el.nativeElement) {\n // if it's not directly focused now, it means it was a non-interactive element\n // so we need to give it a tabindex.\n this.directFocus = false;\n this.renderer.setAttribute(this.el.nativeElement, 'tabindex', '-1');\n this.renderer.setStyle(this.el.nativeElement, 'outline', 'none');\n this.el.nativeElement.focus();\n }\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { ClrFocusOnViewInit } from './focus-on-view-init';\nimport { FOCUS_ON_VIEW_INIT_PROVIDER } from './focus-on-view-init.provider';\n\nexport const FOCUS_ON_VIEW_INIT_DIRECTIVES: Type<any>[] = [ClrFocusOnViewInit];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [FOCUS_ON_VIEW_INIT_DIRECTIVES],\n providers: [FOCUS_ON_VIEW_INIT_PROVIDER],\n exports: [FOCUS_ON_VIEW_INIT_DIRECTIVES],\n})\nexport class ClrFocusOnViewInitModule {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nexport abstract class CustomFilter {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\n/*\n * This provider implements some form of synchronous debouncing through a lock pattern\n * to avoid emitting multiple state changes for a single user action.\n */\n@Injectable()\nexport class StateDebouncer {\n /**\n * The Observable that lets other classes subscribe to global state changes\n */\n private _change = new Subject<void>();\n // We do not want to expose the Subject itself, but the Observable which is read-only\n public get change(): Observable<void> {\n return this._change.asObservable();\n }\n\n /*\n * This is the lock, to only emit once all the changes have finished processing\n */\n private nbChanges = 0;\n\n public changeStart() {\n this.nbChanges++;\n }\n\n public changeDone() {\n if (--this.nbChanges === 0) {\n this._change.next();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\nimport { StateDebouncer } from './state-debouncer.provider';\n\n@Injectable()\nexport class Page {\n constructor(private stateDebouncer: StateDebouncer) {}\n\n private preventEmit = false;\n public activated = false;\n\n /**\n * Page size, a value of 0 means no pagination\n */\n private _size = 0;\n public get size(): number {\n return this._size;\n }\n public set size(size: number) {\n const oldSize = this._size;\n if (size !== oldSize) {\n if (!this.preventEmit) {\n this.stateDebouncer.changeStart();\n }\n this._size = size;\n if (size === 0) {\n this._current = 1;\n } else {\n // Yeap. That's the formula to keep the first item from the old page still\n // displayed in the new one.\n this._current = Math.floor((oldSize / size) * (this._current - 1)) + 1;\n }\n // We always emit an event even if the current page index didn't change, because\n // the size changing means the items inside the page are different\n if (!this.preventEmit) {\n this._change.next(this._current);\n this._sizeChange.next(this._size);\n this.stateDebouncer.changeDone();\n }\n }\n this.preventEmit = false;\n }\n\n /**\n * Total items (needed to guess the last page)\n */\n private _totalItems?: number;\n public get totalItems(): number {\n return this._totalItems || 0; // remains 0 if not set to avoid breaking change\n }\n public set totalItems(total: number) {\n this._totalItems = total;\n // If we have less items than before, we might need to change the current page\n if (this.current > this.last) {\n this.current = this.last;\n }\n }\n\n /**\n * Last page\n */\n private _last: number;\n public get last(): number {\n if (this._last) {\n return this._last;\n }\n // If the last page isn't known, we compute it from the last item's index\n if (this.size > 0 && this.totalItems) {\n return Math.ceil(this.totalItems / this.size);\n }\n return 1;\n }\n public set last(page: number) {\n this._last = page;\n }\n\n /**\n * The Observable that lets other classes subscribe to page changes\n */\n private _change = new Subject<number>();\n // We do not want to expose the Subject itself, but the Observable which is read-only\n public get change(): Observable<number> {\n return this._change.asObservable();\n }\n\n private _sizeChange = new Subject<number>();\n\n public get sizeChange(): Observable<number> {\n return this._sizeChange.asObservable();\n }\n\n /**\n * Current page\n */\n private _current = 1;\n public get current(): number {\n return this._current;\n }\n public set current(page: number) {\n if (page !== this._current) {\n this.stateDebouncer.changeStart();\n this._current = page;\n this._change.next(page);\n this.stateDebouncer.changeDone();\n }\n }\n\n /**\n * Moves to the previous page if it exists\n */\n public previous() {\n if (this.current > 1) {\n this.current--;\n }\n }\n\n /**\n * Moves to the next page if it exists\n */\n public next() {\n if (this.current < this.last) {\n this.current++;\n }\n }\n\n /**\n * Index of the first item displayed on the current page, starting at 0, -1 if none displayed\n */\n public get firstItem(): number {\n if (this._totalItems === 0) {\n return -1;\n }\n\n if (this.size === 0) {\n return 0;\n }\n return (this.current - 1) * this.size;\n }\n\n /**\n * Index of the last item displayed on the current page, starting at 0, -1 if none displayed\n */\n public get lastItem(): number {\n if (this._totalItems === 0) {\n return -1;\n }\n\n if (this.size === 0) {\n return this.totalItems - 1;\n }\n let lastInPage = this.current * this.size - 1;\n if (this.totalItems) {\n lastInPage = Math.min(lastInPage, this.totalItems - 1);\n }\n return lastInPage;\n }\n\n /**\n * Resets the page size to 0\n */\n public resetPageSize(preventEmit = false): void {\n this.preventEmit = preventEmit;\n this.size = 0;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\nimport { ClrDatagridFilterInterface } from '../interfaces/filter.interface';\nimport { Page } from './page';\nimport { StateDebouncer } from './state-debouncer.provider';\n\n@Injectable()\nexport class FiltersProvider<T = any> {\n constructor(private _page: Page, private stateDebouncer: StateDebouncer) {}\n /**\n * This subject is the list of filters that changed last, not the whole list.\n * We emit a list rather than just one filter to allow batch changes to several at once.\n */\n private _change = new Subject<ClrDatagridFilterInterface<T>[]>();\n // We do not want to expose the Subject itself, but the Observable which is read-only\n public get change(): Observable<ClrDatagridFilterInterface<T>[]> {\n return this._change.asObservable();\n }\n\n /**\n * List of all filters, whether they're active or not\n */\n private _all: RegisteredFilter<T, ClrDatagridFilterInterface<T>>[] = [];\n\n /**\n * Tests if at least one filter is currently active\n */\n public hasActiveFilters(): boolean {\n // We do not use getActiveFilters() because this function will be called much more often\n // and stopping the loop early might be relevant.\n for (const { filter } of this._all) {\n if (filter && filter.isActive()) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Returns a list of all currently active filters\n */\n public getActiveFilters(): ClrDatagridFilterInterface<T>[] {\n const ret: ClrDatagridFilterInterface<T>[] = [];\n for (const { filter } of this._all) {\n if (filter && filter.isActive()) {\n ret.push(filter);\n }\n }\n return ret;\n }\n\n /**\n * Registers a filter, and returns a deregistration function\n */\n public add<F extends ClrDatagridFilterInterface<T>>(filter: F): RegisteredFilter<T, F> {\n const subscription = filter.changes.subscribe(() => this.resetPageAndEmitFilterChange([filter]));\n let hasUnregistered = false;\n const registered = new RegisteredFilter(filter, () => {\n if (hasUnregistered) {\n return;\n }\n subscription.unsubscribe();\n const matchIndex = this._all.findIndex(item => item.filter === filter);\n if (matchIndex >= 0) {\n this._all.splice(matchIndex, 1);\n }\n if (filter.isActive()) {\n this.resetPageAndEmitFilterChange([]);\n }\n hasUnregistered = true;\n });\n this._all.push(registered);\n if (filter.isActive()) {\n this.resetPageAndEmitFilterChange([filter]);\n }\n return registered;\n }\n\n /**\n * Accepts an item if it is accepted by all currently active filters\n */\n public accepts(item: T): boolean {\n for (const { filter } of this._all) {\n if (filter && filter.isActive() && !filter.accepts(item)) {\n return false;\n }\n }\n return true;\n }\n\n private resetPageAndEmitFilterChange(filters: ClrDatagridFilterInterface<T>[]) {\n this.stateDebouncer.changeStart();\n // filtering may change the page number such that current page number doesn't exist in the filtered dataset.\n // So here we always set the current page to 1 so that it'll fetch first page's data with the given filter.\n this._page.current = 1;\n this._change.next(filters);\n this.stateDebouncer.changeDone();\n }\n}\n\nexport class RegisteredFilter<T, F extends ClrDatagridFilterInterface<T>> {\n constructor(public filter: F, public unregister: () => void) {}\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Directive, OnDestroy } from '@angular/core';\nimport { ClrDatagridFilterInterface } from '../interfaces/filter.interface';\nimport { FiltersProvider, RegisteredFilter } from '../providers/filters';\n\n@Directive()\nexport abstract class DatagridFilterRegistrar<T, F extends ClrDatagridFilterInterface<T>> implements OnDestroy {\n constructor(private filters: FiltersProvider<T>) {}\n\n /**\n * @NOTEe Type `any` is set here to be able to pass templateStrictMode\n */\n public registered: any;\n\n public get filter(): F {\n return this.registered && this.registered.filter;\n }\n\n public setFilter(filter: F | RegisteredFilter<T, F>) {\n // If we previously had another filter, we unregister it\n this.deleteFilter();\n if (filter instanceof RegisteredFilter) {\n this.registered = filter;\n } else if (filter) {\n this.registered = this.filters.add(filter);\n }\n }\n\n public deleteFilter() {\n if (this.registered) {\n this.registered.unregister();\n delete this.registered;\n }\n }\n\n public ngOnDestroy(): void {\n this.deleteFilter();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport {\n Component,\n EventEmitter,\n Input,\n Output,\n Inject,\n OnDestroy,\n PLATFORM_ID,\n ViewChild,\n ElementRef,\n} from '@angular/core';\n\nimport { ClrDatagridFilterInterface } from './interfaces/filter.interface';\nimport { CustomFilter } from './providers/custom-filter';\nimport { FiltersProvider, RegisteredFilter } from './providers/filters';\nimport { DatagridFilterRegistrar } from './utils/datagrid-filter-registrar';\nimport { ClrPopoverPosition } from '../../utils/popover/interfaces/popover-position.interface';\nimport { ClrAxis } from '../../utils/popover/enums/axis.enum';\nimport { ClrSide } from '../../utils/popover/enums/side.enum';\nimport { ClrAlignment } from '../../utils/popover/enums/alignment.enum';\nimport { UNIQUE_ID, UNIQUE_ID_PROVIDER } from '../../utils/id-generator/id-generator.service';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { Subscription } from 'rxjs';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * Custom filter that can be added in any column to override the default object property string filter.\n * The reason this is not just an input on DatagridColumn is because we need the filter's template to be projected,\n * since it can be anything (not just a text input).\n */\n@Component({\n selector: 'clr-dg-filter',\n // We register this component as a CustomFilter, for the parent column to detect it.\n providers: [{ provide: CustomFilter, useExisting: ClrDatagridFilter }, UNIQUE_ID_PROVIDER],\n template: `\n <button\n class=\"datagrid-filter-toggle\"\n type=\"button\"\n #anchor\n [attr.aria-label]=\"commonStrings.keys.datagridFilterAriaLabel\"\n [attr.aria-expanded]=\"ariaExpanded\"\n [attr.aria-controls]=\"popoverId\"\n clrPopoverAnchor\n clrPopoverOpenCloseButton\n [class.datagrid-filter-open]=\"open\"\n [class.datagrid-filtered]=\"active\"\n >\n <cds-icon\n [attr.status]=\"active ? 'info' : null\"\n [attr.shape]=\"active ? 'filter-grid-circle' : 'filter-grid'\"\n solid\n ></cds-icon>\n </button>\n\n <div\n class=\"datagrid-filter\"\n [id]=\"popoverId\"\n clrFocusTrap\n *clrPopoverContent=\"open; at: smartPosition; outsideClickToClose: true; scrollToClose: true\"\n role=\"dialog\"\n [attr.aria-label]=\"commonStrings.keys.datagridFilterDialogAriaLabel\"\n >\n <div class=\"datagrid-filter-close-wrapper\">\n <button type=\"button\" class=\"close\" clrPopoverCloseButton>\n <cds-icon shape=\"window-close\" [attr.title]=\"commonStrings.keys.close\"></cds-icon>\n </button>\n </div>\n\n <ng-content></ng-content>\n </div>\n `,\n})\nexport class ClrDatagridFilter<T = any>\n extends DatagridFilterRegistrar<T, ClrDatagridFilterInterface<T>>\n implements CustomFilter, OnDestroy\n{\n private subs: Subscription[] = [];\n public ariaExpanded = false;\n\n constructor(\n _filters: FiltersProvider<T>,\n public commonStrings: ClrCommonStringsService,\n private smartToggleService: ClrPopoverToggleService,\n @Inject(PLATFORM_ID) private platformId: any,\n @Inject(UNIQUE_ID) public popoverId: string\n ) {\n super(_filters);\n this.subs.push(\n smartToggleService.openChange.subscribe(change => {\n this.open = change;\n this.ariaExpanded = change;\n })\n );\n }\n\n @ViewChild('anchor', { read: ElementRef })\n anchor: ElementRef;\n\n // Smart Popover\n public smartPosition: ClrPopoverPosition = {\n axis: ClrAxis.VERTICAL,\n side: ClrSide.AFTER,\n anchor: ClrAlignment.END,\n content: ClrAlignment.END,\n };\n\n private _open = false;\n public get open() {\n return this._open;\n }\n\n @Input('clrDgFilterOpen')\n public set open(open: boolean) {\n open = !!open;\n if (this.open !== open) {\n this.smartToggleService.open = open;\n this.openChange.emit(open);\n if (!open && isPlatformBrowser(this.platformId)) {\n this.anchor.nativeElement.focus();\n }\n // keep track of the state\n this._open = open;\n }\n }\n\n @Output('clrDgFilterOpenChange') public openChange = new EventEmitter<boolean>(false);\n\n @Input('clrDgFilter')\n public set customFilter(filter: ClrDatagridFilterInterface<T> | RegisteredFilter<T, ClrDatagridFilterInterface<T>>) {\n this.setFilter(filter);\n }\n\n /**\n * Indicates if the filter is currently active\n */\n public get active() {\n return !!this.filter && this.filter.isActive();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.subs.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n/**\n * Generic accessor for deep object properties\n * that can be specified as simple dot-separated strings.\n */\nexport class NestedProperty<T = any> {\n private splitProp: string[];\n\n constructor(private prop: string) {\n if (prop.indexOf('.') >= 0) {\n this.splitProp = prop.split('.');\n }\n }\n\n // Safe getter for a deep object property, will not throw an error but return\n // undefined if one of the intermediate properties is null or undefined.\n public getPropValue(item: T): any {\n if (this.splitProp) {\n let value = item;\n for (const nestedProp of this.splitProp) {\n if (\n value === null ||\n typeof value === 'undefined' ||\n typeof (value as Record<string, any>)[nestedProp] === 'undefined'\n ) {\n return undefined;\n }\n value = (value as Record<string, any>)[nestedProp];\n }\n return value;\n } else {\n return (item as Record<string, any>)[this.prop];\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { ClrDatagridStringFilterInterface } from '../../interfaces/string-filter.interface';\nimport { NestedProperty } from '../nested-property';\n\nexport class DatagridPropertyStringFilter<T = any> implements ClrDatagridStringFilterInterface<T> {\n private nestedProp: NestedProperty<T>;\n\n constructor(public prop: string, public exact = false) {\n this.nestedProp = new NestedProperty(prop);\n }\n\n accepts(item: T, search: string): boolean {\n const propValue = this.nestedProp.getPropValue(item);\n if (typeof propValue === 'undefined') {\n return false;\n } else if (this.exact) {\n return ('' + propValue).toLowerCase() === search;\n } else {\n return ('' + propValue).toLowerCase().indexOf(search) >= 0;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Observable, Subject } from 'rxjs';\nimport { ClrDatagridFilterInterface } from '../../interfaces/filter.interface';\nimport { ClrDatagridStringFilterInterface } from '../../interfaces/string-filter.interface';\nimport { DatagridPropertyStringFilter } from './datagrid-property-string-filter';\n\nexport class DatagridStringFilterImpl<T = any> implements ClrDatagridFilterInterface<T> {\n constructor(public filterFn: ClrDatagridStringFilterInterface<T>) {}\n\n /**\n * The Observable required as part of the Filter interface\n */\n private _changes = new Subject<string>();\n // We do not want to expose the Subject itself, but the Observable which is read-only\n public get changes(): Observable<string> {\n return this._changes.asObservable();\n }\n\n /**\n * Input value converted to lowercase\n */\n private _lowerCaseValue = '';\n public get lowerCaseValue() {\n return this._lowerCaseValue;\n }\n\n /**\n * Raw input value\n */\n private _rawValue = '';\n public get value(): string {\n return this._rawValue;\n }\n /**\n * Common setter for the input value\n */\n public set value(value: string) {\n if (!value) {\n value = '';\n }\n if (value !== this._rawValue) {\n this._rawValue = value;\n this._lowerCaseValue = value.toLowerCase().trim();\n this._changes.next(value);\n }\n }\n\n /**\n * Indicates if the filter is currently active, meaning the input is not empty\n */\n public isActive(): boolean {\n return !!this.value;\n }\n\n /**\n * Tests if an item matches a search text\n */\n public accepts(item: T): boolean {\n // We always test with the lowercase value of the input, to stay case insensitive\n return this.filterFn.accepts(item, this.lowerCaseValue);\n }\n\n public get state() {\n if (this.filterFn instanceof DatagridPropertyStringFilter) {\n return {\n property: this.filterFn.prop,\n value: this.value,\n };\n }\n return this;\n }\n\n public equals(other: ClrDatagridFilterInterface<T, any>): boolean {\n if (other instanceof DatagridStringFilterImpl) {\n if (other.filterFn instanceof DatagridPropertyStringFilter) {\n return (\n this.filterFn instanceof DatagridPropertyStringFilter &&\n other.filterFn.prop === this.filterFn.prop &&\n other.value === this.value\n );\n }\n return other === this;\n }\n return false;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { AfterViewInit, Component, ElementRef, EventEmitter, Input, Output, ViewChild, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ClrDatagridFilter } from '../../datagrid-filter';\nimport { ClrDatagridStringFilterInterface } from '../../interfaces/string-filter.interface';\nimport { CustomFilter } from '../../providers/custom-filter';\nimport { FiltersProvider, RegisteredFilter } from '../../providers/filters';\nimport { DomAdapter } from '../../../../utils/dom-adapter/dom-adapter';\nimport { DatagridFilterRegistrar } from '../../utils/datagrid-filter-registrar';\nimport { ClrCommonStringsService } from '../../../../utils/i18n/common-strings.service';\n\nimport { DatagridStringFilterImpl } from './datagrid-string-filter-impl';\nimport { ClrPopoverToggleService } from '../../../../utils/popover/providers/popover-toggle.service';\n\n@Component({\n selector: 'clr-dg-string-filter',\n providers: [{ provide: CustomFilter, useExisting: DatagridStringFilter }],\n template: `\n <clr-dg-filter [clrDgFilter]=\"registered\" [(clrDgFilterOpen)]=\"open\">\n <input\n #input\n type=\"text\"\n name=\"search\"\n [(ngModel)]=\"value\"\n class=\"clr-input\"\n [attr.aria-label]=\"commonStrings.keys.filterItems\"\n />\n </clr-dg-filter>\n `,\n})\nexport class DatagridStringFilter<T = any>\n extends DatagridFilterRegistrar<T, DatagridStringFilterImpl<T>>\n implements CustomFilter, AfterViewInit, OnDestroy\n{\n private subs: Subscription[] = [];\n constructor(\n filters: FiltersProvider<T>,\n private domAdapter: DomAdapter,\n public commonStrings: ClrCommonStringsService,\n private smartToggleService: ClrPopoverToggleService\n ) {\n super(filters);\n }\n\n /**\n * Customizable filter logic based on a search text\n */\n @Input('clrDgStringFilter')\n set customStringFilter(\n value: ClrDatagridStringFilterInterface<T> | RegisteredFilter<T, DatagridStringFilterImpl<T>>\n ) {\n if (value instanceof RegisteredFilter) {\n this.setFilter(value);\n } else {\n this.setFilter(new DatagridStringFilterImpl(value));\n }\n if (this.initFilterValue) {\n this.value = this.initFilterValue;\n // This initFilterValue should be used only once after the filter registration\n // So deleting this property value to prevent it from being used again\n // if this customStringFilter property is set again\n delete this.initFilterValue;\n }\n }\n\n /**\n * Indicates if the filter dropdown is open\n */\n public open = false;\n\n /**\n * We need the actual input element to automatically focus on it\n */\n @ViewChild('input') public input: ElementRef;\n\n /**\n * We grab the ClrDatagridFilter we wrap to register this StringFilter to it.\n */\n @ViewChild(ClrDatagridFilter) public filterContainer: ClrDatagridFilter<T>;\n ngAfterViewInit() {\n this.subs.push(\n this.smartToggleService.openChange.subscribe(openChange => {\n this.open = openChange;\n // The timeout in used because when this executes, the input isn't displayed.\n setTimeout(() => {\n this.domAdapter.focus(this.input.nativeElement);\n });\n })\n );\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.subs.forEach(sub => sub.unsubscribe());\n }\n\n private initFilterValue: string;\n\n /**\n * Common setter for the input value\n */\n public get value() {\n return this.filter.value;\n }\n @Input('clrFilterValue')\n public set value(value: string) {\n if (this.filter && typeof value === 'string') {\n if (!value) {\n value = '';\n }\n if (value !== this.filter.value) {\n this.filter.value = value;\n this.filterValueChange.emit(value);\n }\n } else {\n this.initFilterValue = value;\n }\n }\n\n @Output('clrFilterValueChange') filterValueChange = new EventEmitter();\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { ClrDatagridNumericFilterInterface } from '../../interfaces/numeric-filter.interface';\nimport { NestedProperty } from '../nested-property';\n\nexport class DatagridPropertyNumericFilter<T = any> implements ClrDatagridNumericFilterInterface<T> {\n private nestedProp: NestedProperty<T>;\n\n constructor(public prop: string, public exact = false) {\n this.nestedProp = new NestedProperty(prop);\n }\n\n accepts(item: T, low: number, high: number): boolean {\n const propValue = this.nestedProp.getPropValue(item);\n if (low !== null && propValue < low) {\n return false;\n }\n if (high !== null && propValue > high) {\n return false;\n }\n return true;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Observable, Subject } from 'rxjs';\nimport { ClrDatagridFilterInterface } from '../../interfaces/filter.interface';\nimport { ClrDatagridNumericFilterInterface } from '../../interfaces/numeric-filter.interface';\nimport { DatagridPropertyNumericFilter } from './datagrid-property-numeric-filter';\n\nexport class DatagridNumericFilterImpl<T = any> implements ClrDatagridFilterInterface<T> {\n constructor(public filterFn: ClrDatagridNumericFilterInterface<T>) {}\n\n /**\n * The Observable required as part of the Filter interface\n */\n private _changes = new Subject<[number, number]>();\n // We do not want to expose the Subject itself, but the Observable which is read-only\n public get changes(): Observable<[number, number]> {\n return this._changes.asObservable();\n }\n\n /**\n * Internal values and accessor\n */\n private _low: number | null = null;\n private _high: number | null = null;\n\n /**\n * Common setters for the input values, including individual limits and\n * both at the same time. Value is singular to make the interface similar\n * to the built-in string filter.\n */\n\n public get value(): [number, number] {\n return [this._low, this._high];\n }\n\n public set value(vals: [number, number]) {\n const low = vals[0];\n const high = vals[1];\n if (low !== this._low || high !== this._high) {\n this._low = low;\n this._high = high;\n this._changes.next([this._low, this._high]);\n }\n }\n\n public get low() {\n return this._low;\n }\n public set low(low: number) {\n if (low !== this._low) {\n this._low = low;\n this._changes.next([this._low, this._high]);\n }\n }\n\n public get high() {\n return this._high;\n }\n public set high(high: number) {\n if (high !== this._high) {\n this._high = high;\n this._changes.next([this._low, this._high]);\n }\n }\n\n /**\n * Indicates if the filter is currently active, (at least one input is set)\n */\n public isActive(): boolean {\n return this._low !== null || this.high !== null;\n }\n\n /**\n * Tests if an item matches a search text\n */\n public accepts(item: T): boolean {\n // We have a filter function in case someone wants to implement a numeric\n // filter that always passes nulls or similar\n return this.filterFn.accepts(item, this._low, this._high);\n }\n\n public get state() {\n if (this.filterFn instanceof DatagridPropertyNumericFilter) {\n return {\n property: this.filterFn.prop,\n low: this._low,\n high: this._high,\n };\n }\n return this;\n }\n\n public equals(other: ClrDatagridFilterInterface<T, any>): boolean {\n if (other instanceof DatagridNumericFilterImpl) {\n if (other.filterFn instanceof DatagridPropertyNumericFilter) {\n return (\n this.filterFn instanceof DatagridPropertyNumericFilter &&\n other.filterFn.prop === this.filterFn.prop &&\n other.low === this._low &&\n other.high === this._high\n );\n }\n return other === this;\n }\n return false;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { AfterViewInit, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrDatagridFilter } from '../../datagrid-filter';\nimport { ClrDatagridNumericFilterInterface } from '../../interfaces/numeric-filter.interface';\nimport { CustomFilter } from '../../providers/custom-filter';\nimport { FiltersProvider, RegisteredFilter } from '../../providers/filters';\nimport { DomAdapter } from '../../../../utils/dom-adapter/dom-adapter';\nimport { DatagridFilterRegistrar } from '../../utils/datagrid-filter-registrar';\nimport { DatagridNumericFilterImpl } from './datagrid-numeric-filter-impl';\nimport { ClrCommonStringsService } from '../../../../utils/i18n/common-strings.service';\nimport { ClrPopoverToggleService } from '../../../../utils/popover/providers/popover-toggle.service';\n\n@Component({\n selector: 'clr-dg-numeric-filter',\n providers: [{ provide: CustomFilter, useExisting: DatagridNumericFilter }],\n template: `\n <clr-dg-filter [clrDgFilter]=\"registered\" [(clrDgFilterOpen)]=\"open\">\n <input\n class=\"datagrid-numeric-filter-input\"\n #input_low\n type=\"number\"\n name=\"low\"\n [(ngModel)]=\"low\"\n [placeholder]=\"commonStrings.keys.minValue\"\n [attr.aria-label]=\"commonStrings.keys.minValue\"\n />\n <span class=\"datagrid-filter-input-spacer\"></span>\n <input\n class=\"datagrid-numeric-filter-input\"\n #input_high\n type=\"number\"\n name=\"high\"\n [(ngModel)]=\"high\"\n [placeholder]=\"commonStrings.keys.maxValue\"\n [attr.aria-label]=\"commonStrings.keys.maxValue\"\n />\n </clr-dg-filter>\n `,\n})\nexport class DatagridNumericFilter<T = any>\n extends DatagridFilterRegistrar<T, DatagridNumericFilterImpl<T>>\n implements CustomFilter, AfterViewInit\n{\n constructor(\n filters: FiltersProvider<T>,\n private domAdapter: DomAdapter,\n public commonStrings: ClrCommonStringsService,\n private popoverToggleService: ClrPopoverToggleService\n ) {\n super(filters);\n }\n\n private subscriptions: Subscription[] = [];\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => {\n sub.unsubscribe();\n });\n }\n\n /**\n * Customizable filter logic based on high and low values\n */\n @Input('clrDgNumericFilter')\n set customNumericFilter(\n value: ClrDatagridNumericFilterInterface<T> | RegisteredFilter<T, DatagridNumericFilterImpl<T>>\n ) {\n if (value instanceof RegisteredFilter) {\n this.setFilter(value);\n } else {\n this.setFilter(new DatagridNumericFilterImpl(value));\n }\n if (this.initFilterValues) {\n this.value = this.initFilterValues;\n // This initFilterValues should be used only once after the filter registration\n // So deleting this property value to prevent it from being used again\n // if this customStringFilter property is set again\n delete this.initFilterValues;\n }\n }\n\n /**\n * Indicates if the filter dropdown is open\n */\n public open = false;\n\n /**\n * We need the actual input element to automatically focus on it\n */\n @ViewChild('input_low') public input: ElementRef;\n\n /**\n * We grab the ClrDatagridFilter we wrap to register this StringFilter to it.\n */\n @ViewChild(ClrDatagridFilter) public filterContainer: ClrDatagridFilter<T>;\n ngAfterViewInit() {\n this.subscriptions.push(\n this.popoverToggleService.openChange.subscribe(openChange => {\n this.open = openChange;\n // The timeout in used because when this executes, the input isn't displayed.\n setTimeout(() => {\n this.domAdapter.focus(this.input.nativeElement);\n });\n })\n );\n }\n\n private initFilterValues: [number, number];\n /**\n * Common setter for the input values\n */\n public get value() {\n return [this.filter.low, this.filter.high];\n }\n\n @Input('clrFilterValue')\n public set value(values: [number, number]) {\n if (this.filter && Array.isArray(values)) {\n if (values && (values[0] !== this.filter.low || values[1] !== this.filter.high)) {\n if (typeof values[0] === 'number') {\n this.filter.low = values[0];\n } else {\n this.filter.low = null;\n }\n if (typeof values[1] === 'number') {\n this.filter.high = values[1];\n } else {\n this.filter.high = null;\n }\n this.filterValueChange.emit(values);\n }\n } else {\n this.initFilterValues = values;\n }\n }\n\n public get low() {\n if (typeof this.filter.low === 'number' && isFinite(this.filter.low)) {\n return this.filter.low;\n } else {\n // There's not a low limit\n return null;\n }\n }\n\n public set low(low: number | string) {\n if (typeof low === 'number' && low !== this.filter.low) {\n this.filter.low = low;\n this.filterValueChange.emit([this.filter.low, this.filter.high]);\n } else if (typeof low !== 'number') {\n this.filter.low = null;\n this.filterValueChange.emit([this.filter.low, this.filter.high]);\n }\n }\n\n public get high() {\n if (typeof this.filter.high === 'number' && isFinite(this.filter.high)) {\n return this.filter.high;\n } else {\n // There's not a high limit\n return null;\n }\n }\n\n public set high(high: number | string) {\n if (typeof high === 'number' && high !== this.filter.high) {\n this.filter.high = high;\n this.filterValueChange.emit([this.filter.low, this.filter.high]);\n } else if (typeof high !== 'number') {\n this.filter.high = null;\n this.filterValueChange.emit([this.filter.low, this.filter.high]);\n }\n }\n\n @Output('clrFilterValueChange') filterValueChange = new EventEmitter();\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { AfterViewChecked, Directive } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\n/*\n * After a conversation with the Angular core team, it turns out we don't have much of a choice for our\n * declarative API, we need to fight against change detection and its one-way flow. This is\n * currently the least dirty solution to do what we want.\n *\n * Do not modify or even use this class unless you know exactly what you're doing.\n * It has the potential to trigger change detection loops or kill app performances.\n */\n@Directive()\nexport class WillyWonka implements AfterViewChecked {\n private _chocolate = new Subject<string>();\n\n public get chocolate(): Observable<string> {\n return this._chocolate.asObservable();\n }\n\n disableChocolateCheck = false;\n\n ngAfterViewChecked() {\n if (!this.disableChocolateCheck) {\n this._chocolate.next();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { AfterContentChecked, ChangeDetectorRef, OnDestroy, Directive } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { WillyWonka } from './willy-wonka';\n\n@Directive()\nexport abstract class OompaLoompa implements AfterContentChecked, OnDestroy {\n // FIXME: Request Injector once we move to Angular 4.2+, it'll allow easier refactors\n constructor(cdr: ChangeDetectorRef, willyWonka: WillyWonka) {\n this.subscription = willyWonka.chocolate.subscribe(() => {\n if (this.latestFlavor !== this.flavor) {\n willyWonka.disableChocolateCheck = true;\n cdr.detectChanges();\n willyWonka.disableChocolateCheck = false;\n }\n });\n }\n\n private subscription: Subscription;\n\n private latestFlavor: any;\n\n abstract get flavor(): any;\n\n ngAfterContentChecked() {\n this.latestFlavor = this.flavor;\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Directive } from '@angular/core';\nimport { WillyWonka } from '../../../utils/chocolate/willy-wonka';\n\n@Directive({ selector: 'clr-datagrid' })\nexport class DatagridWillyWonka extends WillyWonka {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class RowActionService {\n private actionableCount = 0;\n\n public register() {\n this.actionableCount++;\n }\n\n public unregister() {\n this.actionableCount--;\n }\n\n /**\n * false means no rows with action\n */\n public get hasActionableRow(): boolean {\n return this.actionableCount > 0;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { ChangeDetectorRef, Directive, Optional } from '@angular/core';\nimport { OompaLoompa } from '../../../utils/chocolate/oompa-loompa';\nimport { RowActionService } from '../providers/row-action-service';\nimport { DatagridWillyWonka } from './datagrid-willy-wonka';\n\n@Directive({ selector: 'clr-datagrid, clr-dg-row' })\nexport class ActionableOompaLoompa extends OompaLoompa {\n private rowActions: RowActionService;\n\n constructor(cdr: ChangeDetectorRef, @Optional() willyWonka: DatagridWillyWonka, rowActions: RowActionService) {\n if (!willyWonka) {\n throw new Error('clr-dg-row should only be used inside of a clr-datagrid');\n }\n super(cdr, willyWonka);\n this.rowActions = rowActions;\n }\n\n get flavor() {\n return this.rowActions.hasActionableRow;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable()\nexport class DetailService {\n private toggleState = false;\n private _state: BehaviorSubject<boolean | null> = new BehaviorSubject<boolean>(this.toggleState);\n private cache: any;\n private _enabled = false;\n private button: HTMLButtonElement;\n public id: string;\n\n get enabled(): boolean {\n return this._enabled;\n }\n\n set enabled(state: boolean) {\n this._enabled = state;\n }\n\n public get stateChange(): Observable<boolean | null> {\n return this._state.asObservable();\n }\n\n close() {\n this.toggleState = false;\n this._state.next(this.toggleState);\n if (this.button) {\n this.button.focus();\n this.button = null;\n }\n }\n\n open(item: any, button?: HTMLButtonElement) {\n this.cache = item;\n this.button = button;\n this.toggleState = true;\n this._state.next(this.toggleState);\n }\n\n toggle(item: any, button?: HTMLButtonElement) {\n if (this.isRowOpen(item) || !item) {\n this.close();\n } else {\n this.open(item, button);\n }\n }\n\n get state() {\n return this.cache;\n }\n\n isRowOpen(item: any) {\n return !!(this.toggleState && this.cache === item);\n }\n\n get isOpen() {\n return this.toggleState === true;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Injectable } from '@angular/core';\nimport { DetailService } from './detail.service';\n\n@Injectable()\nexport class ExpandableRowsCount {\n constructor(private detailService: DetailService) {}\n\n private expandableCount = 0;\n\n public register() {\n this.expandableCount++;\n }\n\n public unregister() {\n this.expandableCount--;\n }\n\n /**\n * false means no rows with action\n * check if details are on, and disable rows entirely\n */\n public get hasExpandableRow(): boolean {\n return !this.detailService.enabled && this.expandableCount > 0;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { ChangeDetectorRef, Directive, Optional } from '@angular/core';\nimport { OompaLoompa } from '../../../utils/chocolate/oompa-loompa';\nimport { ExpandableRowsCount } from '../providers/global-expandable-rows';\nimport { DatagridWillyWonka } from './datagrid-willy-wonka';\n\n@Directive({ selector: 'clr-datagrid, clr-dg-row' })\nexport class ExpandableOompaLoompa extends OompaLoompa {\n private expandableCount: ExpandableRowsCount;\n\n constructor(\n cdr: ChangeDetectorRef,\n @Optional() willyWonka: DatagridWillyWonka,\n expandableCount: ExpandableRowsCount\n ) {\n if (!willyWonka) {\n throw new Error('clr-dg-row should only be used inside of a clr-datagrid');\n }\n super(cdr, willyWonka);\n this.expandableCount = expandableCount;\n }\n\n get flavor() {\n return this.expandableCount.hasExpandableRow;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { ClrDatagridComparatorInterface } from '../../interfaces/comparator.interface';\nimport { NestedProperty } from '../nested-property';\n\nexport class DatagridPropertyComparator<T = any> implements ClrDatagridComparatorInterface<T> {\n private nestedProp: NestedProperty<T>;\n\n constructor(public prop: string) {\n this.nestedProp = new NestedProperty(prop);\n }\n\n public compare(a: T, b: T): number {\n let propA = this.nestedProp.getPropValue(a);\n let propB = this.nestedProp.getPropValue(b);\n\n if (typeof propA === 'string') {\n propA = propA.toLowerCase();\n }\n\n if (typeof propB === 'string') {\n propB = propB.toLowerCase();\n }\n\n if (typeof propA === 'undefined' || propA === null) {\n if (typeof propB === 'undefined' || propB === null) {\n return 0;\n } else {\n return 1;\n }\n } else {\n if (typeof propB === 'undefined' || propB === null) {\n return -1;\n } else if (propA < propB) {\n return -1;\n } else if (propA > propB) {\n return 1;\n } else {\n return 0;\n }\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n/**\n * Enumeration representing the sorting order of a datagrid column. It is a constant Enum,\n * i.e. each value needs to be treated as a `number`, starting at index 0.\n *\n * @export\n * @enum {number}\n */\nexport enum ClrDatagridSortOrder {\n UNSORTED = 0,\n ASC = 1,\n DESC = -1,\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { AfterViewInit, Component, EmbeddedViewRef, OnDestroy, TemplateRef, ViewChild } from '@angular/core';\n\nimport { DynamicWrapper } from '../../utils/host-wrapping/dynamic-wrapper';\n\n@Component({\n selector: 'dg-wrapped-column',\n template: `\n <ng-template #columnPortal>\n <ng-content></ng-content>\n </ng-template>\n `,\n})\nexport class WrappedColumn implements DynamicWrapper, AfterViewInit, OnDestroy {\n _dynamic = false;\n\n @ViewChild('columnPortal') templateRef: TemplateRef<void>;\n columnView: EmbeddedViewRef<void>; // the columns projected view (in memory)\n\n ngAfterViewInit() {\n // Create the cells view in memory, not the DOM.\n this.columnView = this.templateRef.createEmbeddedView(null);\n }\n\n ngOnDestroy() {\n this.columnView.destroy();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\nimport { ClrDatagridComparatorInterface } from '../interfaces/comparator.interface';\nimport { StateDebouncer } from './state-debouncer.provider';\n\n@Injectable()\nexport class Sort<T = any> {\n constructor(private stateDebouncer: StateDebouncer) {}\n\n /**\n * Currently active comparator\n */\n private _comparator: ClrDatagridComparatorInterface<T>;\n public get comparator(): ClrDatagridComparatorInterface<T> {\n return this._comparator;\n }\n public set comparator(value: ClrDatagridComparatorInterface<T>) {\n this.stateDebouncer.changeStart();\n this._comparator = value;\n this.emitChange();\n this.stateDebouncer.changeDone();\n }\n\n /**\n * Ascending order if false, descending if true\n */\n private _reverse = false;\n public get reverse(): boolean {\n return this._reverse;\n }\n public set reverse(value: boolean) {\n this.stateDebouncer.changeStart();\n this._reverse = value;\n this.emitChange();\n this.stateDebouncer.changeDone();\n }\n\n /**\n * The Observable that lets other classes subscribe to sort changes\n */\n private _change = new Subject<Sort<T>>();\n private emitChange() {\n this._change.next(this);\n }\n // We do not want to expose the Subject itself, but the Observable which is read-only\n public get change(): Observable<Sort<T>> {\n return this._change.asObservable();\n }\n\n /**\n * Sets a comparator as the current one, or toggles reverse if the comparator is already used. The\n * optional forceReverse input parameter allows to override that toggling behavior by sorting in\n * reverse order if `true`.\n *\n * @memberof Sort\n */\n public toggle(sortBy: ClrDatagridComparatorInterface<T>, forceReverse?: boolean) {\n this.stateDebouncer.changeStart();\n // We modify private properties directly, to batch the change event\n if (this.comparator === sortBy) {\n this._reverse = typeof forceReverse !== 'undefined' ? forceReverse || !this._reverse : !this._reverse;\n } else {\n this._comparator = sortBy;\n this._reverse = typeof forceReverse !== 'undefined' ? forceReverse : false;\n }\n this.emitChange();\n this.stateDebouncer.changeDone();\n }\n\n /**\n * Clears the current sorting order\n */\n public clear() {\n this.comparator = null;\n }\n\n /**\n * Compares two objects according to the current comparator\n */\n public compare(a: T, b: T): number {\n return (this.reverse ? -1 : 1) * this.comparator.compare(a, b);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum DatagridRenderStep {\n ALIGN_COLUMNS,\n CALCULATE_MODE_ON,\n CALCULATE_MODE_OFF,\n CLEAR_WIDTHS, // Note this is listened to by both cells and columns\n COMPUTE_COLUMN_WIDTHS,\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { DatagridRenderStep } from '../enums/render-step.enum';\n\n@Injectable()\nexport class DatagridRenderOrganizer {\n protected _renderStep: Subject<DatagridRenderStep> = new Subject<DatagridRenderStep>();\n public get renderStep(): Observable<DatagridRenderStep> {\n return this._renderStep.asObservable();\n }\n\n public filterRenderSteps(step: DatagridRenderStep) {\n return this.renderStep.pipe(filter(testStep => step === testStep));\n }\n\n private alreadySized = false;\n\n public resize() {\n this._renderStep.next(DatagridRenderStep.CALCULATE_MODE_ON);\n if (this.alreadySized) {\n this._renderStep.next(DatagridRenderStep.CLEAR_WIDTHS);\n }\n this._renderStep.next(DatagridRenderStep.COMPUTE_COLUMN_WIDTHS);\n this._renderStep.next(DatagridRenderStep.ALIGN_COLUMNS);\n this.alreadySized = true;\n this._renderStep.next(DatagridRenderStep.CALCULATE_MODE_OFF);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { ElementRef, Injectable } from '@angular/core';\nimport { DomAdapter } from '../../../utils/dom-adapter/dom-adapter';\nimport { DatagridRenderOrganizer } from '../render/render-organizer';\n\nconst MIN_COLUMN_WIDTH = 96;\n\n// This service allows DatagridHeaderRenderer and ClrDatagridColumnSeparator\n// to share column resize data with each other.\n\n@Injectable()\nexport class ColumnResizerService {\n constructor(private el: ElementRef, private domAdapter: DomAdapter, private organizer: DatagridRenderOrganizer) {}\n\n private widthBeforeResize: number;\n\n private _resizedBy = 0;\n\n public get resizedBy() {\n return this._resizedBy;\n }\n\n // is it within the maximum resize range to the left\n public isWithinMaxResizeRange: boolean;\n\n public get minColumnWidth() {\n return this.domAdapter.minWidth(this.el.nativeElement) || MIN_COLUMN_WIDTH;\n }\n\n public get maxResizeRange() {\n return this.widthBeforeResize - this.minColumnWidth;\n }\n\n public startResize(): void {\n this._resizedBy = 0;\n this.isWithinMaxResizeRange = true;\n this.widthBeforeResize = this.domAdapter.clientRect(this.el.nativeElement).width;\n }\n\n public endResize(): void {\n this.organizer.resize();\n }\n\n public get widthAfterResize(): number {\n return this.widthBeforeResize + this._resizedBy;\n }\n\n public calculateResize(resizedBy: number): void {\n // calculates the resize amount within the allowed range\n if (resizedBy < -this.maxResizeRange) {\n this._resizedBy = -this.maxResizeRange;\n this.isWithinMaxResizeRange = false;\n } else {\n this._resizedBy = resizedBy;\n this.isWithinMaxResizeRange = true;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { isPlatformBrowser } from '@angular/common';\nimport { ElementRef, Inject, Injectable, PLATFORM_ID } from '@angular/core';\n\n/**\n * @description\n * Internal datagrid service that holds a reference to the clr-dg-table element and exposes a method to get height.\n */\n@Injectable()\nexport class TableSizeService {\n private _tableRef: HTMLElement;\n\n public get tableRef(): HTMLElement {\n return this._tableRef;\n }\n\n public set tableRef(element: HTMLElement) {\n this._tableRef = element;\n }\n\n constructor(@Inject(PLATFORM_ID) private platformId: any) {}\n public set table(table: ElementRef) {\n if (isPlatformBrowser(this.platformId) && table.nativeElement) {\n this.tableRef = table.nativeElement.querySelector('.datagrid-table');\n }\n }\n\n // Used when resizing columns to show the column border being dragged.\n getColumnDragHeight(): string {\n if (!this.tableRef) {\n return null;\n }\n return `${this.tableRef.clientHeight}px`;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { DOCUMENT } from '@angular/common';\nimport { AfterViewInit, Component, ElementRef, Inject, NgZone, OnDestroy, Renderer2, ViewChild } from '@angular/core';\nimport { KeyCodes, IEKeyCodes } from '../../utils/enums/key-codes.enum';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { UNIQUE_ID, UNIQUE_ID_PROVIDER } from '../../utils/id-generator/id-generator.service';\nimport { ColumnResizerService } from './providers/column-resizer.service';\nimport { TableSizeService } from './providers/table-size.service';\n\n// Default resize length on each keyboard move event\nconst KEYBOARD_RESIZE_LENGTH = 12;\n\n@Component({\n selector: 'clr-dg-column-separator',\n template: `\n <button\n type=\"button\"\n class=\"datagrid-column-handle\"\n [attr.aria-label]=\"commonString.keys.columnSeparatorAriaLabel\"\n [attr.aria-describedby]=\"descriptionId\"\n clrDraggable\n [clrGroup]=\"columnSeparatorId\"\n (clrDragStart)=\"showTracker()\"\n (clrDragMove)=\"moveTracker($event.dragPosition.moveX)\"\n (clrDragEnd)=\"hideTracker()\"\n #columnHandle\n ></button>\n <span class=\"clr-sr-only\" [attr.id]=\"descriptionId\">\n {{ commonString.keys.columnSeparatorDescription }}\n </span>\n <div class=\"datagrid-column-resize-tracker\" #resizeTracker></div>\n `,\n host: {\n '[class.datagrid-column-separator]': 'true',\n },\n providers: [UNIQUE_ID_PROVIDER],\n})\nexport class ClrDatagridColumnSeparator implements AfterViewInit, OnDestroy {\n @ViewChild('resizeTracker') private resizeTrackerRef: ElementRef;\n\n private get resizeTrackerEl() {\n return this.resizeTrackerRef.nativeElement;\n }\n\n @ViewChild('columnHandle') private columnHandleRef: ElementRef;\n\n private get columnHandleEl() {\n return this.columnHandleRef.nativeElement;\n }\n\n private resizeStartedOnKeyDown = false;\n\n private isWithinMaxResizeRange: boolean;\n\n private unlisteners: (() => void)[] = [];\n\n // Every column draggable separator should have its own unique ID\n // in order to not conflict with other draggables/droppables.\n constructor(\n private columnResizerService: ColumnResizerService,\n private renderer: Renderer2,\n private ngZone: NgZone,\n private tableSizeService: TableSizeService,\n public commonString: ClrCommonStringsService,\n @Inject(DOCUMENT) private document: any,\n @Inject(UNIQUE_ID) public columnSeparatorId: string\n ) {}\n\n ngAfterViewInit() {\n this.ngZone.runOutsideAngular(() => {\n this.unlisteners.push(\n this.renderer.listen(this.columnHandleEl, 'keydown', event => {\n this.showTrackerOnFirstKeyDown(event);\n this.moveTrackerOnKeyDown(event);\n })\n );\n this.unlisteners.push(\n this.renderer.listen(this.columnHandleEl, 'keyup', event => {\n this.hideTrackerOnKeyUp(event);\n })\n );\n });\n }\n\n get descriptionId(): string {\n return `${this.columnSeparatorId}-aria-describedby`;\n }\n\n public showTracker(): void {\n this.columnResizerService.startResize();\n const tableHeight = this.tableSizeService.getColumnDragHeight();\n this.renderer.setStyle(this.resizeTrackerEl, 'height', tableHeight);\n this.renderer.setStyle(this.resizeTrackerEl, 'display', 'block');\n }\n\n public moveTracker(movedBy: number): void {\n this.columnResizerService.calculateResize(movedBy);\n this.renderer.setStyle(this.resizeTrackerEl, 'transform', `translateX(${this.columnResizerService.resizedBy}px)`);\n this.renderer.setStyle(this.document.body, 'cursor', 'col-resize');\n this.redFlagTracker();\n }\n\n public hideTracker(): void {\n this.columnResizerService.endResize();\n this.renderer.setStyle(this.resizeTrackerEl, 'display', 'none');\n this.renderer.setStyle(this.resizeTrackerEl, 'transform', `translateX(0px)`);\n this.renderer.setStyle(this.document.body, 'cursor', 'auto');\n }\n\n private showTrackerOnFirstKeyDown(event: KeyboardEvent): void {\n if (!this.resizeStartedOnKeyDown && (this.isArrowLeftKeyEvent(event) || this.isArrowRightKeyEvent(event))) {\n this.resizeStartedOnKeyDown = true;\n this.renderer.addClass(this.resizeTrackerEl, 'on-arrow-key-resize');\n this.showTracker();\n }\n }\n\n private moveTrackerOnKeyDown(event: KeyboardEvent): void {\n if (this.isArrowLeftKeyEvent(event)) {\n this.moveTracker(this.columnResizerService.resizedBy - KEYBOARD_RESIZE_LENGTH);\n } else if (this.isArrowRightKeyEvent(event)) {\n this.moveTracker(this.columnResizerService.resizedBy + KEYBOARD_RESIZE_LENGTH);\n }\n }\n\n private hideTrackerOnKeyUp(event: KeyboardEvent): void {\n if (this.resizeStartedOnKeyDown && (this.isArrowLeftKeyEvent(event) || this.isArrowRightKeyEvent(event))) {\n this.resizeStartedOnKeyDown = false;\n this.renderer.removeClass(this.resizeTrackerEl, 'on-arrow-key-resize');\n this.hideTracker();\n this.columnHandleEl.focus();\n }\n }\n\n private redFlagTracker(): void {\n if (this.isWithinMaxResizeRange !== this.columnResizerService.isWithinMaxResizeRange) {\n this.isWithinMaxResizeRange = this.columnResizerService.isWithinMaxResizeRange;\n if (!this.isWithinMaxResizeRange) {\n this.renderer.addClass(this.resizeTrackerEl, 'exceeded-max');\n } else {\n this.renderer.removeClass(this.resizeTrackerEl, 'exceeded-max');\n }\n }\n }\n\n private isArrowLeftKeyEvent(event: KeyboardEvent) {\n return event.key === KeyCodes.ArrowLeft || event.key === IEKeyCodes.ArrowLeft;\n }\n\n private isArrowRightKeyEvent(event: KeyboardEvent) {\n return event.key === KeyCodes.ArrowRight || event.key === IEKeyCodes.ArrowRight;\n }\n\n ngOnDestroy() {\n this.unlisteners.forEach(unlistener => unlistener());\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport {\n Component,\n ContentChild,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewContainerRef,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { HostWrapper } from '../../utils/host-wrapping/host-wrapper';\nimport { DatagridPropertyComparator } from './built-in/comparators/datagrid-property-comparator';\nimport { DatagridPropertyStringFilter } from './built-in/filters/datagrid-property-string-filter';\nimport { DatagridPropertyNumericFilter } from './built-in/filters/datagrid-property-numeric-filter';\nimport { DatagridStringFilterImpl } from './built-in/filters/datagrid-string-filter-impl';\nimport { DatagridNumericFilterImpl } from './built-in/filters/datagrid-numeric-filter-impl';\nimport { ClrDatagridSortOrder } from './enums/sort-order.enum';\nimport { ClrDatagridComparatorInterface } from './interfaces/comparator.interface';\nimport { CustomFilter } from './providers/custom-filter';\nimport { FiltersProvider } from './providers/filters';\nimport { Sort } from './providers/sort';\nimport { DatagridFilterRegistrar } from './utils/datagrid-filter-registrar';\nimport { ClrDatagridFilterInterface } from './interfaces/filter.interface';\nimport { WrappedColumn } from './wrapped-column';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrPopoverPositionService } from '../../utils/popover/providers/popover-position.service';\nimport { ClrPopoverEventsService } from '../../utils/popover/providers/popover-events.service';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { DetailService } from './providers/detail.service';\n\n@Component({\n selector: 'clr-dg-column',\n template: `\n <div class=\"datagrid-column-flex\">\n <button class=\"datagrid-column-title\" *ngIf=\"sortable\" (click)=\"sort()\" type=\"button\">\n <ng-container *ngTemplateOutlet=\"columnTitle\"></ng-container>\n <cds-icon\n *ngIf=\"sortDirection\"\n shape=\"arrow\"\n [attr.direction]=\"sortDirection\"\n aria-hidden=\"true\"\n class=\"sort-icon\"\n ></cds-icon>\n </button>\n <!-- I'm really not happy with that select since it's not very scalable -->\n <ng-content select=\"clr-dg-filter, clr-dg-string-filter, clr-dg-numeric-filter\"></ng-content>\n\n <clr-dg-string-filter\n *ngIf=\"field && !customFilter && colType == 'string'\"\n [clrDgStringFilter]=\"registered\"\n [(clrFilterValue)]=\"filterValue\"\n ></clr-dg-string-filter>\n\n <clr-dg-numeric-filter\n *ngIf=\"field && !customFilter && colType == 'number'\"\n [clrDgNumericFilter]=\"registered\"\n [(clrFilterValue)]=\"filterValue\"\n ></clr-dg-numeric-filter>\n\n <ng-template #columnTitle>\n <ng-content></ng-content>\n </ng-template>\n\n <span class=\"datagrid-column-title\" *ngIf=\"!sortable\">\n <ng-container *ngTemplateOutlet=\"columnTitle\"></ng-container>\n </span>\n\n <clr-dg-column-separator *ngIf=\"showSeparator\"></clr-dg-column-separator>\n </div>\n `,\n providers: [ClrPopoverPositionService, ClrPopoverEventsService, ClrPopoverToggleService],\n host: {\n '[class.datagrid-column]': 'true',\n '[attr.aria-sort]': 'ariaSort',\n role: 'columnheader',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ClrDatagridColumn<T = any>\n extends DatagridFilterRegistrar<T, ClrDatagridFilterInterface<T>>\n implements OnDestroy, OnInit, OnChanges\n{\n constructor(\n private _sort: Sort<T>,\n filters: FiltersProvider<T>,\n private vcr: ViewContainerRef,\n private detailService: DetailService,\n private changeDetectorRef: ChangeDetectorRef,\n public commonStrings: ClrCommonStringsService\n ) {\n super(filters);\n this.subscriptions.push(this.listenForSortingChanges());\n this.subscriptions.push(this.listenForDetailPaneChanges());\n }\n\n public showSeparator = true;\n\n /**\n * Subscription to the sort service changes\n */\n private subscriptions: Subscription[] = [];\n\n ngOnDestroy() {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n private listenForDetailPaneChanges() {\n return this.detailService.stateChange.subscribe(state => {\n if (this.showSeparator !== !state) {\n this.showSeparator = !state;\n // Have to manually change because of OnPush\n this.changeDetectorRef.markForCheck();\n }\n });\n }\n\n private listenForSortingChanges() {\n return this._sort.change.subscribe(sort => {\n // Need to manually mark the component to be checked\n // for both activating and deactivating sorting\n this.changeDetectorRef.markForCheck();\n // We're only listening to make sure we emit an event when the column goes from sorted to unsorted\n if (this.sortOrder !== ClrDatagridSortOrder.UNSORTED && sort.comparator !== this._sortBy) {\n this._sortOrder = ClrDatagridSortOrder.UNSORTED;\n this.sortOrderChange.emit(this._sortOrder);\n // removes the sortIcon when column becomes unsorted\n this.sortIcon = null;\n this._sortDirection = null;\n }\n // deprecated: to be removed - START\n if (this.sorted && sort.comparator !== this._sortBy) {\n this._sorted = false;\n this.sortedChange.emit(false);\n }\n // deprecated: to be removed - END\n });\n }\n\n /*\n * What type is this column? This defaults to STRING, but can also be\n * set to NUMBER. Unsupported types default to STRING. Users can set it\n * via the [clrDgColType] input by setting it to 'string' or 'number'.\n */\n\n private _colType: 'string' | 'number' = 'string';\n\n get colType() {\n return this._colType;\n }\n\n // TODO: We might want to make this an enum in the future\n @Input('clrDgColType')\n set colType(value: 'string' | 'number') {\n this._colType = value;\n }\n\n /*\n * Simple object property shortcut, activates both sorting and filtering\n * based on native comparison of the specified property on the items.\n */\n private _field: string;\n public get field() {\n return this._field;\n }\n\n @Input('clrDgField')\n public set field(field: string) {\n if (typeof field === 'string') {\n this._field = field;\n\n if (!this._sortBy) {\n this._sortBy = new DatagridPropertyComparator(field);\n }\n }\n }\n\n private setupDefaultFilter(field: string, colType: 'string' | 'number') {\n if (colType === 'number') {\n this.setFilter(new DatagridNumericFilterImpl(new DatagridPropertyNumericFilter(field)));\n } else if (colType === 'string') {\n this.setFilter(new DatagridStringFilterImpl(new DatagridPropertyStringFilter(field)));\n }\n if (this.filter && this.initFilterValue) {\n this.updateFilterValue = this.initFilterValue;\n // This initFilterValue should be used only once after the filter registration\n // So deleting this property value to prevent it from being used again\n // if this field property is set again\n delete this.initFilterValue;\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (\n changes.colType &&\n changes.colType.currentValue &&\n changes.colType.currentValue !== changes.colType.previousValue\n ) {\n if (!this.customFilter && !this.filter && this.colType && this.field) {\n this.setupDefaultFilter(this.field, this.colType);\n }\n }\n if (changes.field && changes.field.currentValue && changes.field.currentValue !== changes.field.previousValue) {\n if (!this.customFilter && this.colType) {\n this.setupDefaultFilter(this.field, this.colType);\n }\n }\n }\n\n /**\n * ClrDatagridComparatorInterface to use when sorting the column\n */\n\n private _sortBy: ClrDatagridComparatorInterface<T>;\n\n public get sortBy() {\n return this._sortBy;\n }\n\n @Input('clrDgSortBy')\n public set sortBy(comparator: ClrDatagridComparatorInterface<T> | string) {\n if (typeof comparator === 'string') {\n this._sortBy = new DatagridPropertyComparator(comparator);\n } else {\n if (comparator) {\n this._sortBy = comparator;\n } else {\n if (this.field) {\n this._sortBy = new DatagridPropertyComparator(this.field);\n } else {\n delete this._sortBy;\n }\n }\n }\n }\n\n /**\n * Indicates if the column is sortable\n */\n public get sortable(): boolean {\n return !!this._sortBy;\n }\n\n // deprecated: to be removed - START\n /**\n * Indicates if the column is currently sorted\n *\n * @deprecated This will be removed soon, in favor of the sortOrder mechanism\n */\n private _sorted = false;\n public get sorted() {\n return this._sorted;\n }\n\n /**\n * @deprecated This will be removed soon, in favor of the sortOrder mechanism\n */\n @Input('clrDgSorted')\n public set sorted(value: boolean) {\n if (!value && this.sorted) {\n this._sorted = false;\n this._sort.clear();\n } else if (value && !this.sorted) {\n this.sort();\n }\n }\n\n /**\n * @deprecated This will be removed soon, in favor of the sortOrder mechanism\n */\n @Output('clrDgSortedChange') public sortedChange = new EventEmitter<boolean>();\n\n // deprecated: to be removed - END\n\n /**\n * Indicates how the column is currently sorted\n */\n private _sortOrder: ClrDatagridSortOrder = ClrDatagridSortOrder.UNSORTED;\n public get sortOrder() {\n return this._sortOrder;\n }\n\n @Input('clrDgSortOrder')\n public set sortOrder(value: ClrDatagridSortOrder) {\n if (typeof value === 'undefined') {\n return;\n }\n\n // only if the incoming order is different from the current one\n if (this._sortOrder === value) {\n return;\n }\n\n switch (value) {\n // the Unsorted case happens when the current state is either Asc or Desc\n default:\n case ClrDatagridSortOrder.UNSORTED:\n this._sort.clear();\n break;\n case ClrDatagridSortOrder.ASC:\n this.sort(false);\n break;\n case ClrDatagridSortOrder.DESC:\n this.sort(true);\n break;\n }\n }\n\n public get ariaSort() {\n switch (this._sortOrder) {\n default:\n case ClrDatagridSortOrder.UNSORTED:\n return 'none';\n case ClrDatagridSortOrder.ASC:\n return 'ascending';\n case ClrDatagridSortOrder.DESC:\n return 'descending';\n }\n }\n\n @Output('clrDgSortOrderChange') public sortOrderChange = new EventEmitter<ClrDatagridSortOrder>();\n\n /**\n * @deprecated\n *\n * Use `sortDirection` to indentify the sort direction\n */\n public sortIcon: string | null;\n\n private _sortDirection: 'up' | 'down' | null;\n\n public get sortDirection(): 'up' | 'down' | null {\n return this._sortDirection;\n }\n\n /**\n * Sorts the datagrid based on this column\n */\n public sort(reverse?: boolean) {\n if (!this.sortable) {\n return;\n }\n\n this._sort.toggle(this._sortBy, reverse);\n\n // setting the private variable to not retrigger the setter logic\n this._sortOrder = this._sort.reverse ? ClrDatagridSortOrder.DESC : ClrDatagridSortOrder.ASC;\n // Sets the correct icon for current sort order\n this._sortDirection = this._sortOrder === ClrDatagridSortOrder.DESC ? 'down' : 'up';\n this.sortIcon = this._sortOrder === ClrDatagridSortOrder.DESC ? 'arrow down' : 'arrow'; // Backward compatibility\n this.sortOrderChange.emit(this._sortOrder);\n\n // deprecated: to be removed - START\n this._sorted = true;\n this.sortedChange.emit(true);\n // deprecated: to be removed - END\n }\n\n /**\n * A custom filter for this column that can be provided in the projected content\n */\n public customFilter = false;\n\n @ContentChild(CustomFilter)\n public set projectedFilter(custom: any) {\n if (custom) {\n this.deleteFilter();\n this.customFilter = true;\n }\n }\n\n @Input('clrFilterValue')\n public set updateFilterValue(newValue: string | [number, number]) {\n if (this.filter) {\n if (this.filter instanceof DatagridStringFilterImpl) {\n if (!newValue || typeof newValue !== 'string') {\n newValue = '';\n }\n if (newValue !== this.filter.value) {\n this.filter.value = newValue;\n }\n } else if (this.filter instanceof DatagridNumericFilterImpl) {\n if (!newValue || !(newValue instanceof Array)) {\n newValue = [null, null];\n }\n if (newValue.length === 2 && (newValue[0] !== this.filter.value[0] || newValue[1] !== this.filter.value[1])) {\n this.filter.value = newValue;\n }\n }\n } else {\n this.initFilterValue = newValue;\n }\n }\n\n // This property holds filter value temporarily while this.filter property is not yet registered\n // When this.filter is registered, this property value would be used update this.filter.value\n //\n private initFilterValue: string | [number, number];\n\n public get filterValue() {\n if (this.filter instanceof DatagridStringFilterImpl || this.filter instanceof DatagridNumericFilterImpl) {\n return this.filter.value;\n }\n return null;\n }\n\n /**\n * @NOTE type `any` here is to let us pass templateStrictMode, because in our code we try to handle\n * two types of filters String and Number with the same variable but both of them work with different\n * format we got an error for casting. We could not cast anything inside the template so to not mess the\n * casting, the last type is set to `any`\n *\n * Orignial types: string | [number, number]\n */\n public set filterValue(newValue: any) {\n if (this.filter instanceof DatagridStringFilterImpl || this.filter instanceof DatagridNumericFilterImpl) {\n this.updateFilterValue = newValue;\n this.filterValueChange.emit(this.filter.value);\n }\n }\n\n @Output('clrFilterValueChange') filterValueChange = new EventEmitter();\n\n private wrappedInjector: Injector;\n\n ngOnInit() {\n this.wrappedInjector = new HostWrapper(WrappedColumn, this.vcr);\n }\n\n public get _view() {\n return this.wrappedInjector.get(WrappedColumn, this.vcr).columnView;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Injectable, TrackByFunction } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\nimport { Subscription } from 'rxjs';\n\nimport { FiltersProvider } from './filters';\nimport { Page } from './page';\nimport { Sort } from './sort';\n\n@Injectable()\nexport class Items<T = any> {\n constructor(private _filters: FiltersProvider<T>, private _sort: Sort<T>, private _page: Page) {}\n\n /**\n * Indicates if the data is currently loading\n */\n public loading = false;\n\n // TODO: Verify that trackBy is registered for the *ngFor case too\n /**\n * Tracking function to identify objects. Default is reference equality.\n */\n public trackBy: TrackByFunction<T> = (_index: number, item: T) => item;\n\n /**\n * Subscriptions to the other providers changes.\n */\n private _filtersSub: Subscription;\n private _sortSub: Subscription;\n private _pageSub: Subscription;\n /**\n * Cleans up our subscriptions to other providers\n */\n public destroy() {\n if (this._filtersSub) {\n this._filtersSub.unsubscribe();\n }\n if (this._sortSub) {\n this._sortSub.unsubscribe();\n }\n if (this._pageSub) {\n this._pageSub.unsubscribe();\n }\n }\n\n /**\n * Whether we should use smart items for this datagrid or let the user handle\n * everything.\n */\n private _smart = false;\n public get smart(): boolean {\n return this._smart;\n }\n public smartenUp() {\n this._smart = true;\n /*\n * These observers trigger a chain of function: filter -> sort -> paginate\n * An observer up the chain re-triggers all the operations that follow it.\n */\n this._filtersSub = this._filters.change.subscribe(() => this._filterItems());\n this._sortSub = this._sort.change.subscribe(() => {\n // Special case, if the datagrid went from sorted to unsorted, we have to re-filter\n // to get the original order back\n if (!this._sort.comparator) {\n this._filterItems();\n } else {\n this._sortItems();\n }\n });\n this._pageSub = this._page.change.subscribe(() => this._changePage());\n }\n\n /**\n * List of all items in the datagrid\n */\n private _all: T[];\n public get all() {\n return this._all;\n }\n public set all(items: T[]) {\n this._all = items;\n this.emitAllChanges(items);\n if (this.smart) {\n this._filterItems();\n } else {\n this._displayed = items;\n this.emitChange();\n }\n }\n\n /**\n * Manually recompute the list of displayed items\n */\n public refresh() {\n if (this.smart) {\n this._filterItems();\n }\n }\n\n /**\n * Internal temporary step, which we preserve to avoid re-filtering or re-sorting if not necessary\n */\n private _filtered: T[];\n\n /**\n * List of items currently displayed\n */\n private _displayed: T[] = [];\n public get displayed(): T[] {\n // Ideally we could return an immutable array, but we don't have it in Clarity yet.\n return this._displayed;\n }\n\n /**\n * The Observable that lets other classes subscribe to items changes\n */\n private _change = new Subject<T[]>();\n private emitChange() {\n this._change.next(this.displayed);\n }\n // We do not want to expose the Subject itself, but the Observable which is read-only\n public get change(): Observable<T[]> {\n return this._change.asObservable();\n }\n\n private _allChanges = new Subject<T[]>();\n private emitAllChanges(items: T[]): void {\n this._allChanges.next(items);\n }\n\n public get allChanges(): Observable<T[]> {\n return this._allChanges.asObservable();\n }\n\n /**\n * Checks if we don't have data to process yet, to abort early operations\n */\n private get uninitialized() {\n return !this._all;\n }\n\n /**\n * FiltersProvider items from the raw list\n */\n private _filterItems() {\n if (this.uninitialized) {\n return;\n }\n if (this._filters.hasActiveFilters()) {\n this._filtered = this._all.filter(item => this._filters.accepts(item));\n } else {\n // Work on a shallow copy of the array, to not modify the user's model\n this._filtered = this._all.slice();\n }\n this._page.totalItems = this._filtered.length;\n this._sortItems();\n }\n\n /**\n * Sorts items in the filtered list\n */\n private _sortItems() {\n if (this.uninitialized) {\n return;\n }\n if (this._sort.comparator) {\n this._filtered.sort((a, b) => this._sort.compare(a, b));\n }\n this._changePage();\n }\n\n /**\n * Extracts the current page from the sorted list\n */\n private _changePage() {\n // If we know we have pagination but the page size hasn't been set yet, we wait for it.\n if (this.uninitialized || (this._page.activated && this._page.size === 0)) {\n return;\n }\n if (this._page.size > 0) {\n this._displayed = this._filtered.slice(this._page.firstItem, this._page.lastItem + 1);\n } else {\n this._displayed = this._filtered;\n }\n this.emitChange();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { NgForOf, NgForOfContext } from '@angular/common';\nimport {\n Directive,\n DoCheck,\n Input,\n IterableDiffer,\n IterableDiffers,\n TemplateRef,\n TrackByFunction,\n ViewContainerRef,\n OnDestroy,\n} from '@angular/core';\n\nimport { Items } from './providers/items';\nimport { Subscription } from 'rxjs';\n\n@Directive({\n selector: '[clrDgItems][clrDgItemsOf]',\n})\nexport class ClrDatagridItems<T> implements DoCheck, OnDestroy {\n private iterableProxy: NgForOf<T>;\n private _rawItems: T[];\n private differ: IterableDiffer<T> | null = null;\n private subscriptions: Subscription[] = [];\n\n @Input('clrDgItemsOf')\n public set rawItems(items: T[]) {\n this._rawItems = items ? items : []; // local copy for ngOnChange diffing\n }\n\n @Input('clrDgItemsTrackBy')\n set trackBy(value: TrackByFunction<T>) {\n this.items.trackBy = value;\n this.iterableProxy.ngForTrackBy = value;\n }\n\n constructor(\n public template: TemplateRef<NgForOfContext<T>>,\n private differs: IterableDiffers,\n private items: Items,\n private vcr: ViewContainerRef\n ) {\n items.smartenUp();\n this.iterableProxy = new NgForOf<T>(this.vcr, this.template, this.differs);\n this.subscriptions.push(\n items.change.subscribe(newItems => {\n this.iterableProxy.ngForOf = newItems;\n this.iterableProxy.ngDoCheck();\n })\n );\n }\n\n ngDoCheck() {\n if (!this.differ) {\n this.differ = this.differs.find(this._rawItems).create(this.iterableProxy.ngForTrackBy);\n }\n if (this.differ) {\n const changes = this.differ.diff(this._rawItems);\n if (changes) {\n // TODO: not very efficient right now,\n // but premature optimization is the root of all evil.\n this.items.all = this._rawItems;\n }\n }\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component } from '@angular/core';\nimport { Items } from './providers/items';\n\n@Component({\n selector: 'clr-dg-placeholder',\n template: `\n <div class=\"datagrid-placeholder\" [class.datagrid-empty]=\"emptyDatagrid\" role=\"row\">\n <div class=\"datagrid-placeholder-image\" *ngIf=\"emptyDatagrid\"></div>\n <span role=\"gridcell\"><ng-content *ngIf=\"emptyDatagrid\"></ng-content></span>\n </div>\n `,\n host: { '[class.datagrid-placeholder-container]': 'true' },\n})\nexport class ClrDatagridPlaceholder<T = any> {\n constructor(private items: Items<T>) {}\n\n /**\n * Tests if the datagrid is empty, meaning it doesn't contain any items\n */\n public get emptyDatagrid() {\n return !this.items.loading && (!this.items.displayed || this.items.displayed.length === 0);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n *\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class SignpostIdService {\n private _id: Subject<string> = new Subject<string>();\n\n setId(id: string) {\n this._id.next(id);\n }\n\n get id(): Observable<string> {\n return this._id.asObservable();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class SignpostFocusManager {\n private _triggerEl: HTMLElement;\n\n set triggerEl(value: HTMLElement) {\n this._triggerEl = value;\n }\n\n focusTrigger() {\n if (this._triggerEl) {\n this._triggerEl.focus();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { Directive, ElementRef, HostListener, Inject, OnDestroy, PLATFORM_ID } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { SignpostFocusManager } from './providers/signpost-focus-manager.service';\nimport { SignpostIdService } from './providers/signpost-id.service';\n\n@Directive({\n selector: '[clrSignpostTrigger]',\n host: {\n class: 'signpost-trigger',\n '[attr.aria-expanded]': 'ariaExpanded',\n '[attr.aria-controls]': 'ariaControl',\n '[class.active]': 'isOpen',\n },\n})\n\n/*********\n *\n * @description\n * A Directive added to the ClrSignpost Trigger button that will call the ClrSignpost.toggle() function to hide/show the\n * ClrSignpostContent.\n *\n */\nexport class ClrSignpostTrigger implements OnDestroy {\n private subscriptions: Subscription[] = [];\n\n public ariaExpanded: boolean;\n public ariaControl: string;\n public isOpen: boolean;\n\n private document: Document;\n\n constructor(\n private toggleService: ClrPopoverToggleService,\n private el: ElementRef,\n public commonStrings: ClrCommonStringsService,\n private signpostIdService: SignpostIdService,\n private signpostFocusManager: SignpostFocusManager,\n @Inject(DOCUMENT) document: any,\n @Inject(PLATFORM_ID) private platformId: any\n ) {\n this.document = document;\n }\n\n ngOnInit() {\n this.signpostFocusManager.triggerEl = this.el.nativeElement;\n this.subscriptions.push(\n this.toggleService.openChange.subscribe((isOpen: boolean) => {\n this.ariaExpanded = isOpen;\n\n const prevIsOpen = this.isOpen;\n this.isOpen = isOpen;\n\n // openChange fires false on initialization because signpost starts as closed by default\n // but we shouldn't focus on that initial false value\n // we should focus back only if it's closed after being opened\n if (!this.isOpen && prevIsOpen) {\n this.focusOnClose();\n }\n }),\n this.signpostIdService.id.subscribe(idChange => (this.ariaControl = idChange))\n );\n this.addDefaultAriaLabel(this.el.nativeElement);\n }\n\n private addDefaultAriaLabel(el: HTMLElement) {\n if (!el.hasAttribute('aria-label')) {\n el.setAttribute('aria-label', this.commonStrings.keys.signpostToggle);\n }\n }\n\n private focusOnClose() {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n // we have to set the focus back on the trigger only if the focus is reset back to the body element\n // if the focus is on another element, we are not allowed to move that focus back to this trigger again.\n if (!this.isOpen && this.document.activeElement === this.document.body) {\n this.signpostFocusManager.focusTrigger();\n }\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach((sub: Subscription) => sub.unsubscribe());\n }\n\n /**********\n *\n * @description\n * click handler for the ClrSignpost trigger button used to hide/show ClrSignpostContent.\n */\n @HostListener('click', ['$event'])\n onSignpostTriggerClick(event: Event): void {\n this.toggleService.toggleWithEvent(event);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component, ContentChild, ElementRef } from '@angular/core';\n\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { POPOVER_HOST_ANCHOR } from '../common/popover-host-anchor.token';\n\nimport { ClrSignpostTrigger } from './signpost-trigger';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { SignpostIdService } from './providers/signpost-id.service';\nimport { SignpostFocusManager } from './providers/signpost-focus-manager.service';\n\n@Component({\n selector: 'clr-signpost',\n template: `\n <ng-container *ngIf=\"!useCustomTrigger\">\n <button type=\"button\" class=\"signpost-action btn btn-small btn-link\" clrSignpostTrigger>\n <cds-icon shape=\"info-circle\" [attr.title]=\"commonStrings.keys.info\"></cds-icon>\n </button>\n </ng-container>\n\n <ng-content></ng-content>\n `,\n host: { '[class.signpost]': 'true' },\n providers: [\n ClrPopoverToggleService,\n SignpostFocusManager,\n { provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef },\n SignpostIdService,\n ],\n})\n\n/*********\n *\n * @class ClrSignpost\n *\n * @description\n * Class used to configure and control the state of a ClrSignpost and its associated ClrSignpostContent.\n * It supports the clrPosition with a 'right-middle' default.\n *\n */\nexport class ClrSignpost {\n constructor(public commonStrings: ClrCommonStringsService) {}\n\n /**********\n * @property useCustomTrigger\n *\n * @description\n * Flag used to determine if we need to use the default trigger or a user supplied trigger element.\n *\n */\n public useCustomTrigger = false;\n\n /**********\n * @property signPostTrigger\n *\n * @description\n * Uses ContentChild to check for a user supplied element with the ClrSignpostTrigger on it.\n *\n */\n @ContentChild(ClrSignpostTrigger)\n set customTrigger(trigger: ClrSignpostTrigger) {\n this.useCustomTrigger = !!trigger;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { AfterViewInit, Component, EmbeddedViewRef, OnDestroy, TemplateRef, ViewChild } from '@angular/core';\n\nimport { DynamicWrapper } from '../../utils/host-wrapping/dynamic-wrapper';\n\n@Component({\n selector: 'dg-wrapped-cell',\n template: `\n <ng-template #cellPortal>\n <ng-content></ng-content>\n </ng-template>\n `,\n})\nexport class WrappedCell implements DynamicWrapper, AfterViewInit, OnDestroy {\n _dynamic = false;\n @ViewChild('cellPortal') templateRef: TemplateRef<void>;\n cellView: EmbeddedViewRef<void>; // the cells projected view\n\n ngAfterViewInit() {\n this.cellView = this.templateRef.createEmbeddedView(null);\n }\n\n ngOnDestroy() {\n this.cellView.destroy();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component, ContentChildren, Injector, OnInit, QueryList, ViewContainerRef } from '@angular/core';\n\nimport { ClrSignpost } from '../../popover/signpost/signpost';\nimport { HostWrapper } from '../../utils/host-wrapping/host-wrapper';\nimport { WrappedCell } from './wrapped-cell';\n\n@Component({\n selector: 'clr-dg-cell',\n template: ` <ng-content></ng-content> `,\n host: {\n '[class.datagrid-cell]': 'true',\n '[class.datagrid-signpost-trigger]': 'signpost.length > 0',\n role: 'gridcell',\n },\n})\nexport class ClrDatagridCell implements OnInit {\n /*********\n * @property signpost\n *\n * @description\n * @ContentChild is used to detect the presence of a Signpost in the projected content.\n * On the host, we set the .datagrid-signpost-trigger class on the cell when signpost.length is greater than 0.\n *\n */\n @ContentChildren(ClrSignpost) signpost: QueryList<ClrSignpost>;\n\n constructor(private vcr: ViewContainerRef) {}\n\n private wrappedInjector: Injector;\n\n ngOnInit() {\n this.wrappedInjector = new HostWrapper(WrappedCell, this.vcr);\n }\n\n public get _view() {\n return this.wrappedInjector.get(WrappedCell, this.vcr).cellView;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum DatagridDisplayMode {\n DISPLAY,\n CALCULATE,\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { AfterViewInit, Component, EmbeddedViewRef, OnDestroy, TemplateRef, ViewChild } from '@angular/core';\n\nimport { DynamicWrapper } from '../../utils/host-wrapping/dynamic-wrapper';\n\n@Component({\n selector: 'dg-wrapped-row',\n template: `\n <ng-template #rowPortal>\n <ng-content></ng-content>\n </ng-template>\n `,\n})\nexport class WrappedRow implements DynamicWrapper, AfterViewInit, OnDestroy {\n _dynamic = false;\n\n @ViewChild('rowPortal') templateRef: TemplateRef<void>;\n rowView: EmbeddedViewRef<void>; // the rows projected view (in memory)\n\n ngAfterViewInit() {\n // Create the cells view in memory, not the DOM.\n this.rowView = this.templateRef.createEmbeddedView(null);\n }\n\n ngOnDestroy() {\n this.rowView.destroy();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum SelectionType {\n None,\n Single,\n Multi,\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\n\nimport { IfExpandService } from '../../utils/conditional/if-expanded.service';\nimport { ClrLoadingState } from '../../utils/loading/loading';\n\nlet nbRow = 0;\n\n@Injectable()\nexport class DatagridIfExpandService extends IfExpandService {\n expandableId = '';\n\n constructor() {\n super();\n nbRow++;\n this.expandableId = 'clr-dg-expandable-row-' + nbRow;\n }\n // due to the es5 spec if the set is overridden on base class the getter must also be overridden\n get expanded(): boolean {\n return this._expanded;\n }\n\n set expanded(value: boolean) {\n value = !!value;\n if (value !== this._expanded) {\n this._expanded = value;\n this._animate.next();\n this._expandChange.next(value);\n }\n }\n\n loadingStateChange(state: ClrLoadingState) {\n super.loadingStateChange(state);\n if (state !== ClrLoadingState.LOADING) {\n this._animate.next();\n }\n }\n\n private _replace: BehaviorSubject<boolean> = new BehaviorSubject(false as boolean);\n get replace(): Observable<boolean> {\n return this._replace.asObservable();\n }\n\n setReplace(replaceValue: boolean) {\n this._replace.next(replaceValue);\n }\n\n private _animate: Subject<boolean> = new Subject<boolean>();\n get animate(): Observable<boolean> {\n return this._animate.asObservable();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Injectable, TrackByFunction, NgZone } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\n\nimport { FiltersProvider } from './filters';\nimport { Items } from './items';\nimport { SelectionType } from '../enums/selection-type';\nimport { debounceTime } from 'rxjs/operators';\n\nlet nbSelection = 0;\n\n@Injectable()\nexport class Selection<T = any> {\n public id: string;\n public preserveSelection = false;\n private prevSelectionRefs: T[] = []; // Refs of selected items\n private prevSingleSelectionRef: T; // Ref of single selected item\n private lockedRefs: T[] = []; // Ref of locked items\n\n constructor(private _items: Items<T>, private _filters: FiltersProvider<T>, private _zone: NgZone) {\n this.id = 'clr-dg-selection' + nbSelection++;\n\n this.subscriptions.push(\n this._filters.change.subscribe(() => {\n if (!this._selectable || this.preserveSelection) {\n return;\n }\n this.clearSelection();\n })\n );\n\n this.subscriptions.push(\n this._items.allChanges.subscribe(updatedItems => {\n // Reset the lockedRefs;\n const updateLockedRef: T[] = [];\n\n switch (this.selectionType) {\n case SelectionType.None: {\n break;\n }\n\n case SelectionType.Single: {\n let newSingle: any;\n const trackBy: TrackByFunction<T> = this._items.trackBy;\n let selectionUpdated = false;\n\n // if the currentSingle has been set before data was loaded, we look up and save the ref from current data set\n if (this.currentSingle && !this.prevSingleSelectionRef) {\n if (this._items.all && this._items.trackBy) {\n const lookup = this._items.all.findIndex(maybe => maybe === this.currentSingle);\n this.prevSingleSelectionRef = this._items.trackBy(lookup, this.currentSingle);\n }\n }\n\n updatedItems.forEach((item, index) => {\n const ref = trackBy(index, item);\n // If one of the updated items is the previously selectedSingle, set it as the new one\n if (this.prevSingleSelectionRef === ref) {\n newSingle = item;\n selectionUpdated = true;\n }\n if (this.lockedRefs.indexOf(ref) > -1) {\n updateLockedRef.push(ref);\n }\n });\n\n // If we're using smart datagrids, we expect all items to be present in the updatedItems array.\n // Therefore, we should delete the currentSingle if it used to be defined but doesn't exist anymore.\n // No explicit \"delete\" is required, since newSingle would be undefined at this point.\n // Marking it as selectionUpdated here will set currentSingle to undefined below in the setTimeout.\n if (this._items.smart && !newSingle) {\n selectionUpdated = true;\n }\n\n // TODO: Discussed this with Eudes and this is fine for now.\n // But we need to figure out a different pattern for the\n // child triggering the parent change detection problem.\n // Using setTimeout for now to fix this.\n setTimeout(() => {\n if (selectionUpdated) {\n this.currentSingle = newSingle;\n }\n }, 0);\n break;\n }\n\n case SelectionType.Multi: {\n let leftOver: any[] = this.current.slice();\n const trackBy: TrackByFunction<any> = this._items.trackBy;\n let selectionUpdated = false;\n\n // if the current has been set before data was loaded, we look up and save the ref from current data set\n if (this.current.length > 0 && this.prevSelectionRefs.length !== this.current.length) {\n if (this._items.all && this._items.trackBy) {\n this.prevSelectionRefs = [];\n this.current.forEach(item => {\n const lookup = this._items.all.findIndex(maybe => maybe === item);\n this.prevSelectionRefs.push(this._items.trackBy(lookup, item));\n });\n }\n }\n\n // Duplicate loop, when the issue is issue#2342 is revisited keep in mind that\n // we need to go over every updated item and check to see if there are valid to be\n // locked or not and update it. When only add items that are found in the lockedRefs back.\n //\n // The both loops below that goes over updatedItems could be combined into one.\n updatedItems.forEach((item, index) => {\n const ref = trackBy(index, item);\n if (this.lockedRefs.indexOf(ref) > -1) {\n updateLockedRef.push(ref);\n }\n });\n\n // TODO: revisit this when we work on https://github.com/vmware/clarity/issues/2342\n // currently, the selection is cleared when filter is applied, so the logic inside\n // the if statement below results in broken behavior.\n if (leftOver.length > 0) {\n updatedItems.forEach((item, index) => {\n const ref = trackBy(index, item);\n // Look in current selected refs array if item is selected, and update actual value\n const selectedIndex = this.prevSelectionRefs.indexOf(ref);\n if (selectedIndex > -1) {\n leftOver[selectedIndex] = item;\n selectionUpdated = true;\n }\n });\n\n // Filter out any unmatched items if we're using smart datagrids where we expect all items to be\n // present\n if (this._items.smart) {\n leftOver = leftOver.filter(selected => updatedItems.indexOf(selected) > -1);\n if (this.current.length !== leftOver.length) {\n selectionUpdated = true;\n }\n }\n\n // TODO: Discussed this with Eudes and this is fine for now.\n // But we need to figure out a different pattern for the\n // child triggering the parent change detection problem.\n // Using setTimeout for now to fix this.\n setTimeout(() => {\n if (selectionUpdated) {\n this.current = leftOver;\n }\n }, 0);\n }\n break;\n }\n\n default: {\n break;\n }\n }\n // Sync locked items\n this.lockedRefs = updateLockedRef;\n })\n );\n\n this.subscriptions.push(this.valueCollector.pipe(debounceTime(0)).subscribe(() => this.emitChange()));\n }\n\n public clearSelection(): void {\n this._current = [];\n this.prevSelectionRefs = [];\n this.prevSingleSelectionRef = null;\n this._currentSingle = null;\n this.emitChange();\n }\n\n private _selectionType: SelectionType = SelectionType.None;\n public get selectionType(): SelectionType {\n return this._selectionType;\n }\n public set selectionType(value: SelectionType) {\n if (value === this.selectionType) {\n return;\n }\n this._selectionType = value;\n if (value === SelectionType.None) {\n delete this.current;\n } else {\n this.updateCurrent([], false);\n }\n }\n\n /** @deprecated since 2.0, remove in 3.0 */\n public rowSelectionMode = false;\n\n private get _selectable(): boolean {\n return this._selectionType === SelectionType.Multi || this._selectionType === SelectionType.Single;\n }\n\n /**\n * Subscriptions to the other providers changes.\n */\n private subscriptions: Subscription[] = [];\n\n /**\n * Cleans up our subscriptions to other providers\n */\n public destroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n /**\n * The current selection in single selection type\n */\n private _currentSingle: T;\n public get currentSingle(): T {\n return this._currentSingle;\n }\n public set currentSingle(value: T) {\n if (value === this._currentSingle) {\n return;\n }\n\n this._currentSingle = value;\n if (this._items.all && this._items.trackBy && value) {\n const lookup = this._items.all.findIndex(maybe => maybe === value);\n this.prevSingleSelectionRef = this._items.trackBy(lookup, value);\n }\n this.emitChange();\n }\n\n /**\n * The current selection\n */\n private _current: T[];\n public get current(): T[] {\n return this._current;\n }\n public set current(value: T[]) {\n this.updateCurrent(value, true);\n }\n\n private valueCollector: Subject<T[]> = new Subject<T[]>();\n public updateCurrent(value: T[], emit: boolean) {\n this._current = value;\n\n if (emit) {\n this.valueCollector.next(value);\n }\n }\n\n /**\n * The Observable that lets other classes subscribe to selection changes\n */\n private _change = new Subject<T[] | T>();\n private emitChange() {\n if (this._selectionType === SelectionType.Single) {\n this._change.next(this.currentSingle);\n } else if (this._selectionType === SelectionType.Multi) {\n this._change.next(this.current);\n }\n }\n // We do not want to expose the Subject itself, but the Observable which is read-only\n public get change(): Observable<T[] | T> {\n return this._change.asObservable();\n }\n\n /**\n * Checks if an item is currently selected\n */\n public isSelected(item: T): boolean {\n if (this._selectionType === SelectionType.Single) {\n return this.currentSingle === item;\n } else if (this._selectionType === SelectionType.Multi) {\n return this.current.indexOf(item) >= 0;\n }\n return false;\n }\n\n /**\n * Selects an item\n */\n private selectItem(item: T): void {\n this.current = this.current.concat(item);\n if (this._items.trackBy && this._items.all) {\n // Push selected ref onto array\n const lookup = this._items.all.findIndex(maybe => maybe === item);\n this.prevSelectionRefs.push(this._items.trackBy(lookup, item));\n }\n }\n\n /**\n * Deselects an item\n */\n private deselectItem(indexOfItem: number): void {\n this.current = this.current.slice(0, indexOfItem).concat(this.current.slice(indexOfItem + 1));\n if (this._items.trackBy && indexOfItem < this.prevSelectionRefs.length) {\n // Keep selected refs array in sync\n const removedItems = this.prevSelectionRefs.splice(indexOfItem, 1);\n // locked reference is no longer needed (if any)\n this.lockedRefs = this.lockedRefs.filter(locked => locked !== removedItems[0]);\n }\n }\n\n /**\n * Selects or deselects an item\n */\n public setSelected(item: T, selected: boolean) {\n const index = this.current ? this.current.indexOf(item) : -1;\n\n switch (this._selectionType) {\n case SelectionType.None:\n break;\n case SelectionType.Single:\n // in single selection, set currentSingle method should be used\n break;\n case SelectionType.Multi:\n if (index >= 0 && !selected) {\n this.deselectItem(index);\n } else if (index < 0 && selected) {\n this.selectItem(item);\n }\n break;\n default:\n break;\n }\n }\n\n /**\n * Checks if all currently displayed items are selected\n */\n public isAllSelected(): boolean {\n if (this._selectionType !== SelectionType.Multi || !this._items.displayed) {\n return false;\n }\n // make sure to exclude the locked items from the list when counting\n const displayedItems: T[] = this._items.displayed.filter(item => {\n return this.isLocked(item) === false;\n });\n\n const nbDisplayed = displayedItems.length;\n if (nbDisplayed < 1) {\n return false;\n }\n const temp: T[] = displayedItems.filter(item => this.current.indexOf(item) > -1);\n return temp.length === displayedItems.length;\n }\n\n /**\n * Make sure that it could be locked\n *\n * @remark\n * Check also is items.all an array, if not there is no nothing to lock or compare to\n *\n */\n private canItBeLocked(): boolean {\n // We depend on the trackBy and all so there are part of the requirment of is item could be locked\n return this._selectionType !== SelectionType.None && Array.isArray(this._items.all);\n }\n\n /**\n * Lock and unlock item\n */\n public lockItem(item: T, lock: boolean) {\n if (this.canItBeLocked()) {\n const ref = this._items.trackBy(\n this._items.all.findIndex(maybe => maybe === item),\n item\n );\n if (lock === true) {\n // Add to lockedRef\n this.lockedRefs.push(ref);\n } else {\n // Remove from lockedRef\n this.lockedRefs = this.lockedRefs.filter(lockedItem => ref !== lockedItem);\n }\n }\n }\n\n /**\n * Check is item locked or not by searcing into lockedRefs for entry\n */\n public isLocked(item: T): boolean {\n /**\n * The check for selectionType will boost the performence by NOT searching\n * into the array when there is no need for that.\n */\n if (this.canItBeLocked()) {\n const ref = this._items.trackBy(\n this._items.all.findIndex(maybe => maybe === item),\n item\n );\n return this.lockedRefs.indexOf(ref) > -1;\n }\n\n return false;\n }\n\n /**\n * Selects or deselects all currently displayed items\n */\n public toggleAll() {\n if (this._selectionType === SelectionType.None || this._selectionType === SelectionType.Single) {\n return;\n }\n /**\n * If every currently displayed item is already selected, we clear them.\n * If at least one item isn't selected, we select every currently displayed item.\n */\n if (this.isAllSelected()) {\n this._items.displayed.forEach(item => {\n const currentIndex = this.current.indexOf(item);\n if (currentIndex > -1 && this.isLocked(item) === false) {\n this.deselectItem(currentIndex);\n }\n });\n } else {\n this._items.displayed.forEach(item => {\n if (this.current.indexOf(item) < 0 && this.isLocked(item) === false) {\n this.selectItem(item);\n }\n });\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { Observable, BehaviorSubject, Subscription } from 'rxjs';\n\nimport { DatagridDisplayMode } from '../enums/display-mode.enum';\nimport { DatagridRenderStep } from '../enums/render-step.enum';\nimport { DatagridRenderOrganizer } from '../render/render-organizer';\n\n@Injectable()\nexport class DisplayModeService implements OnDestroy {\n private subscriptions: Subscription[] = [];\n protected _view: BehaviorSubject<DatagridDisplayMode> = new BehaviorSubject<DatagridDisplayMode>(\n DatagridDisplayMode.DISPLAY\n );\n\n constructor(renderOrganizer: DatagridRenderOrganizer) {\n this.subscriptions.push(\n renderOrganizer\n .filterRenderSteps(DatagridRenderStep.CALCULATE_MODE_ON)\n .subscribe(() => this._view.next(DatagridDisplayMode.CALCULATE))\n );\n\n this.subscriptions.push(\n renderOrganizer\n .filterRenderSteps(DatagridRenderStep.CALCULATE_MODE_OFF)\n .subscribe(() => this._view.next(DatagridDisplayMode.DISPLAY))\n );\n }\n\n public get view(): Observable<DatagridDisplayMode> {\n return this._view.asObservable();\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n Output,\n QueryList,\n Renderer2,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { combineLatest, Subscription } from 'rxjs';\n\nimport { IfExpandService } from '../../utils/conditional/if-expanded.service';\nimport { HostWrapper } from '../../utils/host-wrapping/host-wrapper';\nimport { LoadingListener } from '../../utils/loading/loading-listener';\n\nimport { ClrDatagridCell } from './datagrid-cell';\nimport { DatagridDisplayMode } from './enums/display-mode.enum';\nimport { DisplayModeService } from './providers/display-mode.service';\nimport { ExpandableRowsCount } from './providers/global-expandable-rows';\nimport { RowActionService } from './providers/row-action-service';\nimport { Selection } from './providers/selection';\nimport { WrappedRow } from './wrapped-row';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { SelectionType } from './enums/selection-type';\nimport { DatagridIfExpandService } from './datagrid-if-expanded.service';\nimport { ClrExpandableAnimation } from '../../utils/animations/expandable-animation/expandable-animation';\nimport { DetailService } from './providers/detail.service';\n\nlet nbRow = 0;\n\n@Component({\n selector: 'clr-dg-row',\n templateUrl: './datagrid-row.html',\n host: {\n '[class.datagrid-row]': 'true',\n '[class.datagrid-selected]': 'selected',\n '[attr.aria-owns]': 'id',\n role: 'rowgroup',\n },\n providers: [\n DatagridIfExpandService,\n { provide: IfExpandService, useExisting: DatagridIfExpandService },\n { provide: LoadingListener, useExisting: DatagridIfExpandService },\n ],\n})\nexport class ClrDatagridRow<T = any> implements AfterContentInit, AfterViewInit {\n public id: string;\n public radioId: string;\n public checkboxId: string;\n public expandableId: string;\n\n /* reference to the enum so that template can access */\n public SELECTION_TYPE = SelectionType;\n\n @ViewChild(ClrExpandableAnimation) expandAnimation: ClrExpandableAnimation;\n\n /**\n * Model of the row, to use for selection\n */\n @Input('clrDgItem') item: T;\n\n public replaced: boolean;\n\n public expandAnimationTrigger = false;\n\n constructor(\n public selection: Selection<T>,\n public rowActionService: RowActionService,\n public globalExpandable: ExpandableRowsCount,\n public expand: DatagridIfExpandService,\n public detailService: DetailService,\n private displayMode: DisplayModeService,\n private vcr: ViewContainerRef,\n private renderer: Renderer2,\n private el: ElementRef,\n public commonStrings: ClrCommonStringsService\n ) {\n nbRow++;\n this.id = 'clr-dg-row' + nbRow;\n this.radioId = 'clr-dg-row-rd' + nbRow;\n this.checkboxId = 'clr-dg-row-cb' + nbRow;\n this.expandableId = expand.expandableId;\n\n this.subscriptions.push(\n combineLatest(this.expand.replace, this.expand.expandChange).subscribe(\n ([expandReplaceValue, expandChangeValue]) => {\n if (expandReplaceValue && expandChangeValue) {\n // replaced and expanding\n this.replaced = true;\n this.renderer.addClass(this.el.nativeElement, 'datagrid-row-replaced');\n } else {\n this.replaced = false;\n // Handles these cases: not replaced and collapsing & replaced and\n // collapsing and not replaced and expanding.\n this.renderer.removeClass(this.el.nativeElement, 'datagrid-row-replaced');\n }\n }\n )\n );\n }\n\n private _selected = false;\n /**\n * Indicates if the row is selected\n */\n public get selected() {\n if (this.selection.selectionType === SelectionType.None) {\n return this._selected;\n } else {\n return this.selection.isSelected(this.item);\n }\n }\n\n @Input('clrDgSelected')\n public set selected(value: boolean | string) {\n if (this.selection.selectionType === SelectionType.None) {\n this._selected = value as boolean;\n } else {\n this.selection.setSelected(this.item, value as boolean);\n }\n }\n\n // By default every item is selectable; it becomes not selectable only if it's explicitly set to false\n @Input('clrDgSelectable')\n public set clrDgSelectable(value: boolean | string) {\n this.selection.lockItem(this.item, value === false);\n }\n\n public get clrDgSelectable() {\n return !this.selection.isLocked(this.item);\n }\n\n @Output('clrDgSelectedChange') selectedChanged = new EventEmitter<boolean>(false);\n\n public toggle(selected = !this.selected) {\n if (selected !== this.selected) {\n this.selected = selected;\n this.selectedChanged.emit(selected);\n }\n }\n\n public get expanded() {\n return this.expand.expanded;\n }\n\n @Input('clrDgExpanded')\n public set expanded(value: boolean | string) {\n this.expand.expanded = value as boolean;\n }\n\n @Output('clrDgExpandedChange') expandedChange = new EventEmitter<boolean>(false);\n\n public toggleExpand() {\n if (this.expand.expandable) {\n this.expandAnimation.updateStartHeight();\n this.expanded = !this.expanded;\n this.expandedChange.emit(this.expanded);\n }\n }\n\n @ViewChild('detailButton') detailButton: ElementRef;\n\n private _detailOpenLabel = '';\n @Input()\n set clrDgDetailOpenLabel(label: string) {\n this._detailOpenLabel = label;\n }\n get clrDgDetailOpenLabel(): string {\n return this._detailOpenLabel ? this._detailOpenLabel : this.commonStrings.keys.open;\n }\n private _detailCloseLabel = '';\n @Input()\n set clrDgDetailCloseLabel(label: string) {\n this._detailCloseLabel = label;\n }\n get clrDgDetailCloseLabel(): string {\n return this._detailCloseLabel ? this._detailCloseLabel : this.commonStrings.keys.close;\n }\n\n /*****\n * property dgCells\n *\n * @description\n * A Query List of the ClrDatagrid cells in this row.\n *\n */\n @ContentChildren(ClrDatagridCell) dgCells: QueryList<ClrDatagridCell>;\n\n ngAfterContentInit() {\n this.dgCells.changes.subscribe(() => {\n this.dgCells.forEach(cell => {\n if (!cell._view.destroyed) {\n this._scrollableCells.insert(cell._view);\n }\n });\n });\n }\n\n ngAfterViewInit() {\n this.subscriptions.push(\n this.displayMode.view.subscribe(viewChange => {\n // Listen for view changes and move cells around depending on the current displayType\n // remove cell views from display view\n for (let i = this._scrollableCells.length; i > 0; i--) {\n this._scrollableCells.detach();\n }\n // remove cell views from calculated view\n for (let i = this._calculatedCells.length; i > 0; i--) {\n this._calculatedCells.detach();\n }\n if (viewChange === DatagridDisplayMode.CALCULATE) {\n this.displayCells = false;\n this.dgCells.forEach(cell => {\n if (!cell._view.destroyed) {\n this._calculatedCells.insert(cell._view);\n }\n });\n } else {\n this.displayCells = true;\n this.dgCells.forEach(cell => {\n if (!cell._view.destroyed) {\n this._scrollableCells.insert(cell._view);\n }\n });\n }\n }),\n this.expand.animate.subscribe(() => {\n this.expandAnimationTrigger = !this.expandAnimationTrigger;\n })\n );\n }\n\n private subscriptions: Subscription[] = [];\n\n ngOnDestroy() {\n this.subscriptions.forEach((sub: Subscription) => sub.unsubscribe());\n }\n\n public displayCells = false;\n\n @ViewChild('stickyCells', { read: ViewContainerRef })\n _stickyCells: ViewContainerRef;\n @ViewChild('scrollableCells', { read: ViewContainerRef })\n _scrollableCells: ViewContainerRef;\n @ViewChild('calculatedCells', { read: ViewContainerRef })\n _calculatedCells: ViewContainerRef;\n\n private wrappedInjector: Injector;\n\n ngOnInit() {\n this.wrappedInjector = new HostWrapper(WrappedRow, this.vcr);\n this.selection.lockItem(this.item, this.clrDgSelectable === false);\n }\n\n public get _view() {\n return this.wrappedInjector.get(WrappedRow, this.vcr).rowView;\n }\n}\n","<!--\n We need to wrap the #rowContent in label element if we are in rowSelectionMode.\n Clicking of that wrapper label will equate to clicking on the whole row, which triggers the checkbox to toggle.\n-->\n<label class=\"datagrid-row-clickable\" *ngIf=\"selection.rowSelectionMode\">\n <clr-expandable-animation [clrExpandTrigger]=\"expandAnimationTrigger\" *ngIf=\"expand.expandable\">\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n </clr-expandable-animation>\n <ng-template [ngTemplateOutlet]=\"rowContent\" *ngIf=\"!expand.expandable\"></ng-template>\n</label>\n\n<clr-expandable-animation\n *ngIf=\"!selection.rowSelectionMode && expand.expandable\"\n [clrExpandTrigger]=\"expandAnimationTrigger\"\n>\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n</clr-expandable-animation>\n\n<ng-template *ngIf=\"!selection.rowSelectionMode && !expand.expandable\" [ngTemplateOutlet]=\"rowContent\"></ng-template>\n\n<!--\n We need the \"project into template\" hacks because we need this in 2 different places\n depending on whether the details replace the row or not.\n-->\n<ng-template #detail>\n <ng-content select=\"clr-dg-row-detail\"></ng-content>\n</ng-template>\n\n<ng-template #rowContent>\n <div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [class.datagrid-row-detail-open]=\"detailService.isRowOpen(item)\"\n >\n <div class=\"datagrid-row-sticky\">\n <!-- Sticky elements here -->\n <ng-container #stickyCells>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <div class=\"clr-checkbox-wrapper\">\n <input\n type=\"checkbox\"\n [ngModel]=\"selected\"\n (ngModelChange)=\"toggle($event)\"\n [id]=\"checkboxId\"\n [attr.disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-label]=\"commonStrings.keys.select\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"checkboxId\" class=\"clr-control-label clr-col-null\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.select}}</span>\n </label>\n </div>\n </div>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n >\n <!-- TODO: it would be better if in addition to the generic \"Select\" label, we could add aria-labelledby\n to label the radio by the first cell in the row (typically an id or name).\n It's pretty easy to label it with the whole row since we already have an id for it, but in most\n cases the row is far too long to serve as a label, the screenreader reads every single cell content. -->\n <input\n type=\"radio\"\n clrRadio\n [id]=\"radioId\"\n [name]=\"selection.id + '-radio'\"\n [value]=\"item\"\n [(ngModel)]=\"selection.currentSingle\"\n [checked]=\"selection.currentSingle === item\"\n [attr.disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-label]=\"commonStrings.keys.select\"\n />\n </div>\n <div\n *ngIf=\"rowActionService.hasActionableRow\"\n class=\"datagrid-row-actions datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-content select=\"clr-dg-action-overflow\"></ng-content>\n </div>\n <div\n *ngIf=\"globalExpandable.hasExpandableRow\"\n class=\"datagrid-expandable-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-container *ngIf=\"expand.expandable\">\n <button\n *ngIf=\"!expand.loading\"\n (click)=\"toggleExpand()\"\n type=\"button\"\n class=\"datagrid-expandable-caret-button\"\n [attr.aria-expanded]=\"expand.expanded\"\n [attr.aria-label]=\"expand.expanded ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-controls]=\"expandableId\"\n >\n <cds-icon\n shape=\"angle\"\n class=\"datagrid-expandable-caret-icon\"\n [attr.direction]=\"expand.expanded ? 'down' : 'right'\"\n [attr.title]=\"expand.expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n <clr-spinner *ngIf=\"expand.loading\" clrSmall>{{ commonStrings.keys.loading }}</clr-spinner>\n </ng-container>\n </div>\n <div *ngIf=\"detailService.enabled\" class=\"datagrid-detail-caret datagrid-fixed-column datagrid-cell\">\n <button\n (click)=\"detailService.toggle(item, detailButton)\"\n type=\"button\"\n #detailButton\n class=\"datagrid-detail-caret-button\"\n [class.is-open]=\"detailService.isRowOpen(item)\"\n [attr.aria-label]=\"detailService.isOpen ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-expanded]=\"detailService.isOpen\"\n [attr.aria-controls]=\"detailService.id\"\n aria-haspopup=\"dialog\"\n >\n <cds-icon\n shape=\"angle-double\"\n [attr.direction]=\"detailService.isRowOpen(item) ? 'left' : 'right'\"\n class=\"datagrid-detail-caret-icon\"\n [attr.title]=\"detailService.isRowOpen(item) ? commonStrings.keys.close: commonStrings.keys.open\"\n ></cds-icon>\n </button>\n </div>\n </ng-container>\n <!-- placeholder for projecting other sticky cells as pinned-->\n </div>\n <div class=\"datagrid-row-scrollable\" [ngClass]=\"{'is-replaced': replaced && expanded}\">\n <div class=\"datagrid-scrolling-cells\">\n <ng-content select=\"clr-dg-cell\"></ng-content>\n <ng-container #scrollableCells></ng-container>\n </div>\n <!-- details here when replace, re-visit when sticky container is used for pinned cells -->\n <ng-template *ngIf=\"replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n <ng-template *ngIf=\"!replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n </div>\n </div>\n</ng-template>\n\n<ng-container #calculatedCells></ng-container>\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { DatagridPropertyComparator } from '../built-in/comparators/datagrid-property-comparator';\nimport { ClrDatagridStateInterface } from '../interfaces/state.interface';\n\nimport { FiltersProvider } from './filters';\nimport { Page } from './page';\nimport { Sort } from './sort';\nimport { StateDebouncer } from './state-debouncer.provider';\n\n/**\n * This provider aggregates state changes from the various providers of the Datagrid\n */\n@Injectable()\nexport class StateProvider<T> {\n constructor(\n private filters: FiltersProvider<T>,\n private sort: Sort<T>,\n private page: Page,\n private debouncer: StateDebouncer\n ) {}\n\n /**\n * The Observable that lets other classes subscribe to global state changes\n */\n change: Observable<ClrDatagridStateInterface<T>> = this.debouncer.change.pipe(map(() => this.state));\n\n /*\n * By making this a getter, we open the possibility for a setter in the future.\n * It's been requested a couple times.\n */\n get state(): ClrDatagridStateInterface<T> {\n const state: ClrDatagridStateInterface<T> = {};\n if (this.page.size > 0) {\n state.page = {\n from: this.page.firstItem,\n to: this.page.lastItem,\n size: this.page.size,\n current: this.page.current,\n };\n }\n if (this.sort.comparator) {\n if (this.sort.comparator instanceof DatagridPropertyComparator) {\n /*\n * Special case for the default object property comparator,\n * we give the property name instead of the actual comparator.\n */\n state.sort = { by: (this.sort.comparator as DatagridPropertyComparator<T>).prop, reverse: this.sort.reverse };\n } else {\n state.sort = { by: this.sort.comparator, reverse: this.sort.reverse };\n }\n }\n\n const activeFilters = this.filters.getActiveFilters();\n if (activeFilters.length > 0) {\n state.filters = [];\n for (const filter of activeFilters) {\n if (filter.state) {\n state.filters.push(filter.state);\n } else {\n state.filters.push(filter);\n }\n }\n }\n return state;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum DatagridColumnChanges {\n WIDTH,\n HIDDEN,\n}\n\nexport const ALL_COLUMN_CHANGES: DatagridColumnChanges[] = Object.keys(DatagridColumnChanges)\n .map(key => (DatagridColumnChanges as Record<string, any>)[key])\n .filter(key => key === parseInt(key, 10)); // extracts only integer keys\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { ColumnStateDiff, ColumnState } from '../interfaces/column-state.interface';\nimport { ALL_COLUMN_CHANGES } from '../enums/column-changes.enum';\n\n@Injectable()\nexport class ColumnsService {\n columns: BehaviorSubject<ColumnState>[] = [];\n private _cache: ColumnState[] = [];\n\n cache() {\n this._cache = this.columns.map(subject => {\n const value = { ...subject.value };\n delete value.changes;\n return value;\n });\n }\n\n hasCache() {\n return !!this._cache.length;\n }\n\n resetToLastCache() {\n this._cache.forEach((state, index) => {\n // Just emit the exact value from the cache\n this.columns[index].next({ ...state, changes: ALL_COLUMN_CHANGES });\n });\n this._cache = [];\n }\n\n get columnStates(): ColumnState[] {\n return this.columns.map(column => column.value);\n }\n\n get hasHideableColumns(): boolean {\n return this.columnStates.filter(state => state.hideable).length > 0;\n }\n\n // Helper method to emit a change to a column only when there is an actual diff to process for that column\n emitStateChangeAt(columnIndex: number, diff: ColumnStateDiff) {\n if (!this.columns[columnIndex]) {\n return;\n }\n this.emitStateChange(this.columns[columnIndex], diff);\n }\n\n emitStateChange(column: BehaviorSubject<ColumnState>, diff: ColumnStateDiff) {\n column.next({ ...column.value, ...diff });\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Output,\n QueryList,\n Renderer2,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrDatagridColumn } from './datagrid-column';\nimport { ClrDatagridItems } from './datagrid-items';\nimport { ClrDatagridPlaceholder } from './datagrid-placeholder';\nimport { ClrDatagridRow } from './datagrid-row';\nimport { DatagridDisplayMode } from './enums/display-mode.enum';\nimport { ClrDatagridStateInterface } from './interfaces/state.interface';\nimport { DisplayModeService } from './providers/display-mode.service';\nimport { FiltersProvider } from './providers/filters';\nimport { ExpandableRowsCount } from './providers/global-expandable-rows';\nimport { Items } from './providers/items';\nimport { Page } from './providers/page';\nimport { RowActionService } from './providers/row-action-service';\nimport { Selection } from './providers/selection';\nimport { Sort } from './providers/sort';\nimport { StateDebouncer } from './providers/state-debouncer.provider';\nimport { StateProvider } from './providers/state.provider';\nimport { TableSizeService } from './providers/table-size.service';\nimport { DatagridRenderOrganizer } from './render/render-organizer';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { SelectionType } from './enums/selection-type';\nimport { ColumnsService } from './providers/columns.service';\nimport { DetailService } from './providers/detail.service';\nimport { UNIQUE_ID, UNIQUE_ID_PROVIDER } from '../../utils/id-generator/id-generator.service';\n\n@Component({\n selector: 'clr-datagrid',\n templateUrl: './datagrid.html',\n providers: [\n Selection,\n Sort,\n FiltersProvider,\n Page,\n Items,\n DatagridRenderOrganizer,\n RowActionService,\n ExpandableRowsCount,\n StateDebouncer,\n DetailService,\n UNIQUE_ID_PROVIDER,\n StateProvider,\n TableSizeService,\n ColumnsService,\n DisplayModeService,\n ],\n host: {\n '[class.datagrid-host]': 'true',\n '[class.datagrid-detail-open]': 'detailService.isOpen',\n },\n})\nexport class ClrDatagrid<T = any> implements AfterContentInit, AfterViewInit, OnDestroy {\n public selectAllId: string;\n constructor(\n private organizer: DatagridRenderOrganizer,\n public items: Items<T>,\n public expandableRows: ExpandableRowsCount,\n public selection: Selection<T>,\n public rowActionService: RowActionService,\n private stateProvider: StateProvider<T>,\n private displayMode: DisplayModeService,\n private renderer: Renderer2,\n public detailService: DetailService,\n @Inject(UNIQUE_ID) datagridId: string,\n private el: ElementRef,\n private page: Page,\n public commonStrings: ClrCommonStringsService\n ) {\n this.selectAllId = 'clr-dg-select-all-' + datagridId;\n this.detailService.id = datagridId;\n }\n\n /* reference to the enum so that template can access */\n public SELECTION_TYPE = SelectionType;\n\n /**\n * Freezes the datagrid while data is loading\n */\n public get loading(): boolean {\n return this.items.loading;\n }\n\n @Input('clrDgLoading')\n public set loading(value: boolean) {\n this.items.loading = value;\n }\n\n /**\n * Output emitted whenever the data needs to be refreshed, based on user action or external ones\n */\n @Output('clrDgRefresh') public refresh = new EventEmitter<ClrDatagridStateInterface<T>>(false);\n\n /**\n * Public method to re-trigger the computation of displayed items manually\n */\n public dataChanged() {\n this.items.refresh();\n }\n\n /**\n * We grab the smart iterator from projected content\n */\n @ContentChild(ClrDatagridItems) public iterator: ClrDatagridItems<T>;\n\n /**\n * Array of all selected items\n */\n @Input('clrDgSelected')\n set selected(value: T[] | undefined) {\n if (value) {\n this.selection.selectionType = SelectionType.Multi;\n } else {\n this.selection.selectionType = SelectionType.None;\n }\n this.selection.updateCurrent(value, false);\n }\n\n @Output('clrDgSelectedChange') selectedChanged = new EventEmitter<T[]>(false);\n\n /**\n * Selected item in single-select mode\n */\n @Input('clrDgSingleSelected')\n set singleSelected(value: T) {\n this.selection.selectionType = SelectionType.Single;\n // the clrDgSingleSelected is updated in one of two cases:\n // 1. an explicit value is passed\n // 2. is being set to null or undefined, where previously it had a value\n if (value) {\n this.selection.currentSingle = value;\n } else if (this.selection.currentSingle) {\n this.selection.currentSingle = null;\n }\n }\n\n @Output('clrDgSingleSelectedChange') singleSelectedChanged = new EventEmitter<T>(false);\n\n @Input() clrDgSingleSelectionAriaLabel: string = this.commonStrings.keys.singleSelectionAriaLabel;\n @Input() clrDgSingleActionableAriaLabel: string = this.commonStrings.keys.singleActionableAriaLabel;\n @Input() clrDetailExpandableAriaLabel: string = this.commonStrings.keys.detailExpandableAriaLabel;\n // Allows disabling of the auto focus on page/state changes (excludes focus management inside of popups)\n @Input() clrDgDisablePageFocus = false;\n\n @Input()\n set clrDgPreserveSelection(state: boolean) {\n this.selection.preserveSelection = state;\n }\n /**\n * @deprecated since 2.0, remove in 3.0\n *\n * Selection/Deselection on row click mode\n */\n @Input('clrDgRowSelection')\n set rowSelectionMode(value: boolean) {\n this.selection.rowSelectionMode = value;\n }\n\n /**\n * Indicates if all currently displayed items are selected\n */\n public get allSelected() {\n return this.selection.isAllSelected();\n }\n\n /**\n * Selects/deselects all currently displayed items\n * @param value\n */\n public set allSelected(_value: boolean) {\n /**\n * This is a setter but we ignore the value.\n * It's strange, but it lets us have an indeterminate state where only\n * some of the items are selected.\n */\n this.selection.toggleAll();\n }\n\n /**\n * Custom placeholder detection\n */\n @ContentChild(ClrDatagridPlaceholder) public placeholder: ClrDatagridPlaceholder<T>;\n\n /**\n * Hideable Column data source / detection.\n */\n @ContentChildren(ClrDatagridColumn) public columns: QueryList<ClrDatagridColumn<T>>;\n\n /**\n * When the datagrid is user-managed without the smart iterator, we get the items displayed\n * by querying the projected content. This is needed to keep track of the models currently\n * displayed, typically for selection.\n */\n\n @ContentChildren(ClrDatagridRow) rows: QueryList<ClrDatagridRow<T>>;\n @ViewChild('scrollableColumns', { read: ViewContainerRef })\n scrollableColumns: ViewContainerRef;\n\n @ViewChild('datagridTable', { read: ElementRef })\n datagridTable: ElementRef;\n\n ngAfterContentInit() {\n if (!this.items.smart) {\n this.items.all = this.rows.map((row: ClrDatagridRow<T>) => row.item);\n }\n\n this._subscriptions.push(\n this.rows.changes.subscribe(() => {\n if (!this.items.smart) {\n this.items.all = this.rows.map((row: ClrDatagridRow<T>) => row.item);\n }\n // Remove any projected rows from the displayedRows container\n // Necessary with Ivy off. See https://github.com/vmware/clarity/issues/4692\n for (let i = this._displayedRows.length - 1; i >= 0; i--) {\n if (this._displayedRows.get(i).destroyed) {\n this._displayedRows.remove(i);\n }\n }\n this.rows.forEach(row => {\n this._displayedRows.insert(row._view);\n });\n\n // Try to update only when there is something cached and its open.\n if (this.detailService.state && this.detailService.isOpen) {\n const row = this.rows.find((row, index) => {\n return this.items.trackBy(index, row.item) === this.items.trackBy(index, this.detailService.state);\n });\n\n /**\n * Reopen updated row or close it\n */\n row ? this.detailService.open(row.item, row.detailButton.nativeElement) : this.detailService.close();\n }\n })\n );\n }\n\n /**\n * Our setup happens in the view of some of our components, so we wait for it to be done before starting\n */\n ngAfterViewInit() {\n // TODO: determine if we can get rid of provider wiring in view init so that subscriptions can be done earlier\n this.refresh.emit(this.stateProvider.state);\n this._subscriptions.push(\n this.stateProvider.change.subscribe(state => this.refresh.emit(state)),\n this.selection.change.subscribe(s => {\n if (this.selection.selectionType === SelectionType.Single) {\n this.singleSelectedChanged.emit(s as T);\n } else if (this.selection.selectionType === SelectionType.Multi) {\n this.selectedChanged.emit(s as T[]);\n }\n }),\n this.page.change.subscribe(() => {\n if (!this.clrDgDisablePageFocus) {\n this.datagridTable.nativeElement.focus();\n }\n }),\n // A subscription that listens for displayMode changes on the datagrid\n this.displayMode.view.subscribe(viewChange => {\n // Remove any projected columns from the projectedDisplayColumns container\n for (let i = this._projectedDisplayColumns.length; i > 0; i--) {\n this._projectedDisplayColumns.detach();\n }\n // Remove any projected columns from the projectedCalculationColumns container\n for (let i = this._projectedCalculationColumns.length; i > 0; i--) {\n this._projectedCalculationColumns.detach();\n }\n // Remove any projected rows from the calculationRows container\n for (let i = this._calculationRows.length; i > 0; i--) {\n this._calculationRows.detach();\n }\n // Remove any projected rows from the displayedRows container\n for (let i = this._displayedRows.length; i > 0; i--) {\n this._displayedRows.detach();\n }\n if (viewChange === DatagridDisplayMode.DISPLAY) {\n // Set state, style for the datagrid to DISPLAY and insert row & columns into containers\n this.renderer.removeClass(this.el.nativeElement, 'datagrid-calculate-mode');\n this.columns.forEach(column => {\n this._projectedDisplayColumns.insert(column._view);\n });\n this.rows.forEach(row => {\n this._displayedRows.insert(row._view);\n });\n } else {\n // Set state, style for the datagrid to CALCULATE and insert row & columns into containers\n this.renderer.addClass(this.el.nativeElement, 'datagrid-calculate-mode');\n this.columns.forEach(column => {\n this._projectedCalculationColumns.insert(column._view);\n });\n this.rows.forEach(row => {\n this._calculationRows.insert(row._view);\n });\n }\n })\n );\n }\n\n /**\n * Subscriptions to all the services and queries changes\n */\n private _subscriptions: Subscription[] = [];\n\n ngOnDestroy() {\n this._subscriptions.forEach((sub: Subscription) => sub.unsubscribe());\n }\n\n resize(): void {\n this.organizer.resize();\n }\n\n @ViewChild('projectedDisplayColumns', { read: ViewContainerRef })\n _projectedDisplayColumns: ViewContainerRef;\n @ViewChild('projectedCalculationColumns', { read: ViewContainerRef })\n _projectedCalculationColumns: ViewContainerRef;\n @ViewChild('displayedRows', { read: ViewContainerRef })\n _displayedRows: ViewContainerRef;\n @ViewChild('calculationRows', { read: ViewContainerRef })\n _calculationRows: ViewContainerRef;\n}\n","<!--\n ~ Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<ng-content select=\"clr-dg-action-bar\"></ng-content>\n<div class=\"datagrid-outer-wrapper\">\n <div class=\"datagrid-inner-wrapper\">\n <div class=\"datagrid\" #datagrid [attr.aria-hidden]=\"detailService.isOpen ? true : null\">\n <div class=\"datagrid-table-wrapper\">\n <div role=\"grid\" class=\"datagrid-table\" tabindex=\"-1\" #datagridTable>\n <div role=\"rowgroup\" class=\"datagrid-header\">\n <div role=\"row\" class=\"datagrid-row\">\n <div class=\"datagrid-row-master datagrid-row-flex\">\n <div class=\"datagrid-row-sticky\">\n <!--header for datagrid where you can select multiple rows -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n >\n <div class=\"clr-checkbox-wrapper\">\n <input\n type=\"checkbox\"\n [id]=\"selectAllId\"\n [(ngModel)]=\"allSelected\"\n [attr.aria-label]=\"commonStrings.keys.selectAll\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"selectAllId\" class=\"clr-control-label clr-col-null\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.selectAll}}</span>\n </label>\n </div>\n\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for datagrid where you can select one row only -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n [attr.aria-label]=\"clrDgSingleSelectionAriaLabel\"\n >\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for single row action; only displayType if we have at least one actionable row in datagrid -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-row-actions datagrid-fixed-column\"\n *ngIf=\"rowActionService.hasActionableRow\"\n [attr.aria-label]=\"clrDgSingleActionableAriaLabel\"\n >\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for carets; only displayType if we have at least one expandable row in datagrid -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-expandable-caret datagrid-fixed-column\"\n *ngIf=\"expandableRows.hasExpandableRow || detailService.enabled\"\n [attr.aria-label]=\"clrDetailExpandableAriaLabel\"\n >\n <div class=\"datagrid-column-separator\"></div>\n </div>\n </div>\n <div class=\"datagrid-row-scrollable\">\n <ng-container #projectedDisplayColumns></ng-container>\n </div>\n </div>\n </div>\n </div>\n <ng-container #displayedRows></ng-container>\n <!-- Custom placeholder overrides the default empty one -->\n <ng-content select=\"clr-dg-placeholder\"></ng-content>\n <clr-dg-placeholder *ngIf=\"!placeholder\"></clr-dg-placeholder>\n </div>\n </div>\n </div>\n <ng-content select=\"clr-dg-footer\"></ng-content>\n <div class=\"datagrid-spinner\" *ngIf=\"loading\">\n <clr-spinner clrMedium>Loading</clr-spinner>\n </div>\n </div>\n <ng-content select=\"[clrIfDetail],clr-dg-detail\"></ng-content>\n</div>\n\n<div class=\"datagrid-calculation-table\">\n <div class=\"datagrid-calculation-header\">\n <ng-container #projectedCalculationColumns></ng-container>\n </div>\n <ng-container #calculationRows></ng-container>\n</div>\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'clr-dg-action-bar',\n template: ` <ng-content></ng-content> `,\n host: { '[class.datagrid-action-bar]': 'true' },\n})\nexport class ClrDatagridActionBar {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component, EventEmitter, Inject, Input, OnDestroy, Output, NgZone, PLATFORM_ID } from '@angular/core';\n\nimport { RowActionService } from './providers/row-action-service';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { isPlatformBrowser } from '@angular/common';\nimport { UNIQUE_ID, UNIQUE_ID_PROVIDER } from '../../utils/id-generator/id-generator.service';\nimport { ClrPopoverPosition } from '../../utils/popover/interfaces/popover-position.interface';\nimport { ClrAlignment } from '../../utils/popover/enums/alignment.enum';\nimport { ClrSide } from '../../utils/popover/enums/side.enum';\nimport { ClrAxis } from '../../utils/popover/enums/axis.enum';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { ClrPopoverEventsService } from '../../utils/popover/providers/popover-events.service';\nimport { ClrPopoverPositionService } from '../../utils/popover/providers/popover-position.service';\nimport { Subscription } from 'rxjs';\n\nlet clrDgActionId = 0;\n\n@Component({\n selector: 'clr-dg-action-overflow',\n providers: [UNIQUE_ID_PROVIDER, ClrPopoverToggleService, ClrPopoverEventsService, ClrPopoverPositionService],\n template: `\n <button\n class=\"datagrid-action-toggle\"\n type=\"button\"\n role=\"button\"\n aria-haspopup=\"true\"\n #anchor\n [attr.aria-controls]=\"popoverId\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-label]=\"commonStrings.keys.rowActions\"\n clrPopoverAnchor\n clrPopoverOpenCloseButton\n >\n <cds-icon shape=\"ellipsis-vertical\" [attr.title]=\"commonStrings.keys.rowActions\"></cds-icon>\n </button>\n\n <div\n class=\"datagrid-action-overflow\"\n role=\"menu\"\n [id]=\"popoverId\"\n [attr.aria-hidden]=\"!open\"\n [attr.id]=\"popoverId\"\n clrFocusTrap\n (click)=\"closeOverflowContent($event)\"\n *clrPopoverContent=\"open; at: smartPosition; outsideClickToClose: true; scrollToClose: true\"\n >\n <ng-content></ng-content>\n </div>\n `,\n})\nexport class ClrDatagridActionOverflow implements OnDestroy {\n private subscriptions: Subscription[] = [];\n public smartPosition: ClrPopoverPosition = {\n axis: ClrAxis.HORIZONTAL,\n side: ClrSide.AFTER,\n anchor: ClrAlignment.CENTER,\n content: ClrAlignment.CENTER,\n };\n\n constructor(\n private rowActionService: RowActionService,\n public commonStrings: ClrCommonStringsService,\n @Inject(PLATFORM_ID) private platformId: any,\n private zone: NgZone,\n private smartToggleService: ClrPopoverToggleService,\n @Inject(UNIQUE_ID) public popoverId: string\n ) {\n this.rowActionService.register();\n this.subscriptions.push(\n this.smartToggleService.openChange.subscribe(openState => {\n this.open = openState;\n if (openState) {\n this.focusFirstButton();\n }\n })\n );\n this.popoverId = 'clr-action-menu' + clrDgActionId++;\n }\n\n ngOnDestroy() {\n this.rowActionService.unregister();\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n closeOverflowContent(event: Event): void {\n this.smartToggleService.toggleWithEvent(event);\n }\n\n private focusFirstButton(): void {\n if (isPlatformBrowser(this.platformId)) {\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n const firstButton: HTMLButtonElement | null = document.querySelector('button.action-item');\n if (firstButton) {\n firstButton.focus();\n }\n });\n });\n }\n }\n\n private _open = false;\n public get open() {\n return this._open;\n }\n\n @Input('clrDgActionOverflowOpen')\n public set open(open: boolean) {\n const openState = !!open;\n if (!!openState !== this.open) {\n // prevents chocolate mess\n this.smartToggleService.open = openState;\n this.openChange.emit(openState);\n this._open = openState;\n }\n }\n\n @Output('clrDgActionOverflowOpenChange') public openChange = new EventEmitter<boolean>(false);\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'clr-dg-column-toggle-title',\n template: `<ng-content></ng-content>`,\n})\n/** @deprecated since 2.0, remove in 3.0 */\nexport class ClrDatagridColumnToggleTitle {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component, EventEmitter, Output } from '@angular/core';\nimport { ColumnsService } from './providers/columns.service';\nimport { ColumnState } from './interfaces/column-state.interface';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { DatagridColumnChanges } from './enums/column-changes.enum';\n\n@Component({\n selector: 'clr-dg-column-toggle-button',\n template: `\n <button\n class=\"btn btn-sm btn-link switch-button\"\n (click)=\"selectAll()\"\n [disabled]=\"allHideablesVisible\"\n type=\"button\"\n >\n <ng-content></ng-content>\n </button>\n `,\n})\n/** @deprecated since 2.0, remove in 3.0 */\nexport class ClrDatagridColumnToggleButton {\n constructor(private columnsService: ColumnsService) {}\n\n private allSelected: Subject<boolean> = new EventEmitter();\n\n @Output('clrAllSelected')\n get clrAllSelected(): Observable<boolean> {\n return this.allSelected.asObservable();\n }\n\n private hideableColumns(): BehaviorSubject<ColumnState>[] {\n return this.columnsService.columns.filter(column => column.value.hideable);\n }\n\n get allHideablesVisible() {\n return this.hideableColumns().filter(column => column.value.hidden).length === 0;\n }\n\n selectAll() {\n this.hideableColumns().forEach(hideableColumn =>\n this.columnsService.emitStateChange(hideableColumn, {\n hidden: false,\n changes: [DatagridColumnChanges.HIDDEN],\n })\n );\n this.allSelected.next(true);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Directive, Input, Optional, TrackByFunction } from '@angular/core';\n\nimport { Items } from './providers/items';\n\n@Directive({\n selector: '[ngForTrackBy]',\n})\nexport class ClrDatagridItemsTrackBy<T = any> {\n constructor(@Optional() private _items: Items<T>) {}\n\n @Input('ngForTrackBy')\n set trackBy(value: TrackByFunction<T>) {\n if (this._items) {\n this._items.trackBy = value;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component, Inject, ContentChild, ElementRef, NgZone, PLATFORM_ID, ViewChild } from '@angular/core';\n\nimport { UNIQUE_ID, UNIQUE_ID_PROVIDER } from '../../utils/id-generator/id-generator.service';\nimport { ClrPopoverPosition } from '../../utils/popover/interfaces/popover-position.interface';\nimport { ClrAxis } from '../../utils/popover/enums/axis.enum';\nimport { ClrAlignment } from '../../utils/popover/enums/alignment.enum';\nimport { ClrSide } from '../../utils/popover/enums/side.enum';\nimport { ClrPopoverEventsService } from '../../utils/popover/providers/popover-events.service';\nimport { ClrPopoverPositionService } from '../../utils/popover/providers/popover-position.service';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ColumnsService } from './providers/columns.service';\nimport { ColumnState } from './interfaces/column-state.interface';\nimport { DatagridColumnChanges } from './enums/column-changes.enum';\nimport { ClrDatagridColumnToggleTitle } from './datagrid-column-toggle-title';\nimport { ClrDatagridColumnToggleButton } from './datagrid-column-toggle-button';\n\n@Component({\n selector: 'clr-dg-column-toggle',\n template: `\n <button\n role=\"button\"\n type=\"button\"\n class=\"btn btn-sm btn-link column-toggle--action\"\n clrPopoverAnchor\n clrPopoverOpenCloseButton\n [attr.aria-controls]=\"popoverId\"\n [attr.aria-owns]=\"popoverId\"\n [attr.title]=\"commonStrings.keys.pickColumns\"\n >\n <cds-icon shape=\"view-columns\" aria-hidden=\"true\" [attr.title]=\"commonStrings.keys.pickColumns\"></cds-icon>\n </button>\n <div\n class=\"column-switch\"\n role=\"dialog\"\n [attr.aria-label]=\"commonStrings.keys.showColumnsMenuDescription\"\n [id]=\"popoverId\"\n clrFocusTrap\n *clrPopoverContent=\"openState; at: smartPosition; outsideClickToClose: true; scrollToClose: true\"\n >\n <div class=\"switch-header\">\n <div class=\"clr-sr-only\" tabindex=\"-1\" #allSelected>{{ commonStrings.keys.allColumnsSelected }}</div>\n <ng-container *ngIf=\"!customToggleTitle\">{{ commonStrings.keys.showColumns }}</ng-container>\n <ng-content select=\"clr-dg-column-toggle-title\"></ng-content>\n <button\n class=\"btn btn-sm btn-link toggle-switch-close-button\"\n clrPopoverCloseButton\n type=\"button\"\n [attr.aria-label]=\"commonStrings.keys.close\"\n [attr.title]=\"commonStrings.keys.close\"\n >\n <cds-icon shape=\"window-close\" aria-hidden=\"true\" [attr.title]=\"commonStrings.keys.close\"></cds-icon>\n </button>\n </div>\n <ul class=\"switch-content list-unstyled\">\n <li *ngFor=\"let columnState of hideableColumnStates; trackBy: trackByFn\">\n <clr-checkbox-wrapper>\n <input\n clrCheckbox\n type=\"checkbox\"\n [disabled]=\"hasOnlyOneVisibleColumn && !columnState.hidden\"\n [ngModel]=\"!columnState.hidden\"\n (ngModelChange)=\"toggleColumnState(columnState, !$event)\"\n />\n <label>\n <ng-template [ngTemplateOutlet]=\"columnState.titleTemplateRef\"></ng-template>\n </label>\n </clr-checkbox-wrapper>\n </li>\n </ul>\n <div class=\"switch-footer\">\n <ng-content select=\"clr-dg-column-toggle-button\"></ng-content>\n <clr-dg-column-toggle-button *ngIf=\"!customToggleButton\" (clrAllSelected)=\"allColumnsSelected()\">\n {{ commonStrings.keys.selectAll }}\n </clr-dg-column-toggle-button>\n </div>\n </div>\n `,\n host: { '[class.column-switch-wrapper]': 'true', '[class.active]': 'openState' },\n providers: [UNIQUE_ID_PROVIDER, ClrPopoverEventsService, ClrPopoverPositionService, ClrPopoverToggleService],\n})\n/** @deprecated since 2.0, remove in 3.0 */\nexport class ClrDatagridColumnToggle {\n private _allColumnsVisible: boolean;\n\n // Smart Popover\n public smartPosition: ClrPopoverPosition = {\n axis: ClrAxis.VERTICAL,\n side: ClrSide.BEFORE,\n anchor: ClrAlignment.START,\n content: ClrAlignment.START,\n };\n public openState: boolean;\n\n @ContentChild(ClrDatagridColumnToggleTitle) customToggleTitle: ClrDatagridColumnToggleTitle;\n @ContentChild(ClrDatagridColumnToggleButton) customToggleButton: ClrDatagridColumnToggleButton;\n @ViewChild('allSelected', { read: ElementRef })\n private allSelectedElement: ElementRef<HTMLElement>;\n\n public get allColumnsVisible(): boolean {\n return this._allColumnsVisible;\n }\n\n public set allColumnsVisible(value: boolean) {\n this._allColumnsVisible = value;\n }\n\n constructor(\n public commonStrings: ClrCommonStringsService,\n private columnsService: ColumnsService,\n @Inject(UNIQUE_ID) public columnSwitchId: string,\n @Inject(PLATFORM_ID) private platformId: any,\n private zone: NgZone,\n @Inject(UNIQUE_ID) public popoverId: string\n ) {}\n\n get hideableColumnStates(): ColumnState[] {\n const hideables = this.columnsService.columns.filter(column => column.value.hideable);\n return hideables.map(column => column.value);\n }\n\n get hasOnlyOneVisibleColumn(): boolean {\n const nbNonHideableColumns = this.columnsService.columns.length - this.hideableColumnStates.length;\n // this should only return true when there is no non-hideable columns.\n return (\n nbNonHideableColumns === 0 && this.hideableColumnStates.filter(columnState => !columnState.hidden).length === 1\n );\n }\n\n toggleColumnState(columnState: ColumnState, event: boolean) {\n const columnToToggle = this.columnsService.columns.filter(column => column.value === columnState)[0];\n this.columnsService.emitStateChange(columnToToggle, {\n hidden: event,\n changes: [DatagridColumnChanges.HIDDEN],\n });\n }\n\n toggleSwitchPanel() {\n this.openState = !this.openState;\n }\n\n allColumnsSelected() {\n this.allSelectedElement.nativeElement.focus();\n }\n\n // Without tracking the checkboxes get rerendered on model update, which leads\n // to loss of focus after checkbox toggle.\n trackByFn(index: number) {\n return index;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Directive, Optional } from '@angular/core';\nimport { ExpandableRowsCount } from './providers/global-expandable-rows';\n\n/*\n * I don't think this deserves to be in IfExpanded itself,\n * so I'm adding a second directive on the same selector for now just for the datagrid\n */\n@Directive({ selector: '[clrIfExpanded]' })\nexport class DatagridDetailRegisterer {\n constructor(@Optional() private expandableRowsCount: ExpandableRowsCount) {\n if (this.expandableRowsCount) {\n this.expandableRowsCount.register();\n }\n }\n\n ngOnDestroy() {\n if (this.expandableRowsCount) {\n this.expandableRowsCount.unregister();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component } from '@angular/core';\nimport { DetailService } from './providers/detail.service';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\n\n@Component({\n selector: 'clr-dg-detail-header',\n host: {\n '[class.datagrid-detail-header]': 'true',\n },\n template: `\n <div class=\"datagrid-detail-header-title\" clrFocusOnViewInit [id]=\"titleId\">\n <ng-content></ng-content>\n </div>\n <div class=\"datagrid-detail-pane-close\">\n <button\n type=\"button\"\n class=\"btn btn-link\"\n (click)=\"detailService.close()\"\n [attr.aria-label]=\"commonStrings.keys.close\"\n >\n <cds-icon size=\"24\" shape=\"times\"></cds-icon>\n </button>\n </div>\n `,\n})\nexport class ClrDatagridDetailHeader {\n get titleId() {\n return `${this.detailService.id}-title`;\n }\n\n constructor(public detailService: DetailService, public commonStrings: ClrCommonStringsService) {}\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component, ContentChild, HostListener } from '@angular/core';\nimport { DetailService } from './providers/detail.service';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrDatagridDetailHeader } from './datagrid-detail-header';\n\n@Component({\n selector: 'clr-dg-detail',\n host: {\n '[class.datagrid-detail-pane]': 'true',\n },\n // We put the *ngIf on the clrFocusTrap so it doesn't always exist on the page\n // have to test for presence of header for aria-describedby because it was causing unit tests to crash\n template: `\n <div\n [clrFocusTrap]=\"{ strict: false }\"\n class=\"datagrid-detail-pane-content\"\n *ngIf=\"detailService.isOpen\"\n role=\"dialog\"\n [id]=\"detailService.id\"\n aria-modal=\"true\"\n [attr.aria-describedby]=\"header ? header.titleId : ''\"\n >\n <div class=\"clr-sr-only\">{{ commonStrings.keys.detailPaneStart }}</div>\n <ng-content></ng-content>\n <div class=\"clr-sr-only\">{{ commonStrings.keys.detailPaneEnd }}</div>\n </div>\n `,\n})\nexport class ClrDatagridDetail {\n @ContentChild(ClrDatagridDetailHeader) public header: ClrDatagridDetailHeader;\n\n constructor(public detailService: DetailService, public commonStrings: ClrCommonStringsService) {}\n\n @HostListener('document:keyup.esc')\n closeCheck(): void {\n this.detailService.close();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n Directive,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { DetailService } from './providers/detail.service';\n\n@Directive({\n selector: '[clrIfDetail]',\n})\nexport class ClrIfDetail implements OnInit, OnDestroy {\n private subscriptions: Subscription[] = [];\n private skip = false; // This keeps us from resetting the input and calling the toggle twice\n\n @Input('clrIfDetail')\n set state(model: any) {\n if (!this.skip) {\n this.detailService.toggle(model);\n }\n this.skip = false;\n }\n\n @Output('clrIfDetailChange') public stateChange = new EventEmitter<any>(null);\n\n constructor(\n private templateRef: TemplateRef<any>,\n private viewContainer: ViewContainerRef,\n private detailService: DetailService\n ) {\n this.detailService.enabled = true;\n }\n\n ngOnInit() {\n this.subscriptions.push(\n this.detailService.stateChange.subscribe(state => {\n if (state === true) {\n this.togglePanel(true);\n } else {\n this.togglePanel(false);\n }\n })\n );\n }\n\n private togglePanel(showPanel: boolean) {\n let stateChangeParams = null;\n this.viewContainer.clear();\n if (showPanel === true) {\n this.viewContainer.createEmbeddedView(this.templateRef, { $implicit: this.detailService.state });\n this.skip = true;\n stateChangeParams = this.detailService.state;\n }\n\n this.stateChange.emit(stateChangeParams);\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'clr-dg-detail-body',\n template: `\n <div class=\"clr-dg-detail-body-wrapper\">\n <ng-content></ng-content>\n </div>\n `,\n host: {\n '[class.datagrid-detail-body]': 'true',\n },\n})\nexport class ClrDatagridDetailBody {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component, ContentChild } from '@angular/core';\n\nimport { ClrDatagridColumnToggle } from './datagrid-column-toggle';\nimport { Selection } from './providers/selection';\nimport { SelectionType } from './enums/selection-type';\nimport { ColumnsService } from './providers/columns.service';\nimport { DetailService } from './providers/detail.service';\n\n@Component({\n selector: 'clr-dg-footer',\n template: `\n <ng-container *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi && selection.current.length > 0\">\n <div class=\"clr-form-control-disabled\">\n <clr-checkbox-wrapper class=\"datagrid-footer-select\">\n <input clrCheckbox type=\"checkbox\" checked=\"checked\" disabled />\n <label>{{ selection.current.length }}</label>\n </clr-checkbox-wrapper>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!detailService.isOpen\">\n <ng-content select=\"clr-dg-column-toggle\"></ng-content>\n <clr-dg-column-toggle *ngIf=\"hasHideableColumns && !toggle\"></clr-dg-column-toggle>\n <div class=\"datagrid-footer-description\">\n <ng-content></ng-content>\n </div>\n </ng-container>\n <ng-content select=\"clr-dg-pagination\"></ng-content>\n `,\n host: {\n '[class.datagrid-footer]': 'true',\n },\n})\nexport class ClrDatagridFooter<T = any> {\n constructor(\n public selection: Selection<T>,\n public detailService: DetailService,\n private columnsService: ColumnsService\n ) {}\n\n /* reference to the enum so that template can access */\n public SELECTION_TYPE = SelectionType;\n\n @ContentChild(ClrDatagridColumnToggle) toggle: ClrDatagridColumnToggle;\n\n get hasHideableColumns(): boolean {\n return this.columnsService.hasHideableColumns;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { InjectionToken } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { ColumnState } from '../interfaces/column-state.interface';\n\nexport const COLUMN_STATE = new InjectionToken<ColumnState>('COLUMN_STATE');\n\nexport function columnStateFactory() {\n return new BehaviorSubject<ColumnState>({\n changes: [],\n });\n}\n\nexport const COLUMN_STATE_PROVIDER = {\n provide: COLUMN_STATE,\n useFactory: columnStateFactory,\n};\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport {\n Directive,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { ColumnsService } from './providers/columns.service';\nimport { ColumnState } from './interfaces/column-state.interface';\nimport { DatagridColumnChanges } from './enums/column-changes.enum';\nimport { COLUMN_STATE } from './providers/column-state.provider';\n\n@Directive({ selector: '[clrDgHideableColumn]' })\n\n/**\n *\n * @description\n * A structural directive meant to be used inside a clr-dg-column component.\n *\n * <clr-dg-column>\n * <ng-container *clrDgHideableColumn=\"{ hidden: true }\">\n * User ID\n * </ng-container>\n * </clr-dg-column>\n *\n * It sets up state and properties so that columns can be manges for hide/show by a service and an internal\n * datagrid toggle component.\n *\n */\nexport class ClrDatagridHideableColumn implements OnDestroy {\n /**\n *\n * @description\n * Used to initialize the column with either hidden or visible state.\n *\n */\n private _hidden: boolean;\n\n /**\n *\n * @description\n * Setter fn for the @Input with the same name as this structural directive.\n * It allows the user to pre-configure the column's hide/show state. { hidden: true }\n * It's more verbose but has more Clarity.\n *\n * @example\n * *clrDgHideableColumn\n * *clrDgHideableColumn={hidden: false}\n * *clrDgHideableColumn={hidden: true}\n *\n */\n @Input('clrDgHideableColumn')\n set clrDgHideableColumn(value: { hidden: boolean } | string) {\n if (typeof value === 'string') {\n this.clrDgHidden = false;\n return;\n }\n this.clrDgHidden = value && value.hidden ? value.hidden : false;\n }\n\n @Input('clrDgHidden')\n set clrDgHidden(hidden: boolean) {\n this._hidden = hidden ? hidden : false;\n this.columnsService.emitStateChange(this.columnState, {\n hidden: this._hidden,\n changes: [DatagridColumnChanges.HIDDEN],\n });\n }\n\n @Output('clrDgHiddenChange') public hiddenChange = new EventEmitter<boolean>();\n\n constructor(\n private titleTemplateRef: TemplateRef<any>,\n private viewContainerRef: ViewContainerRef,\n private columnsService: ColumnsService,\n @Optional()\n @Inject(COLUMN_STATE)\n private columnState: BehaviorSubject<ColumnState>\n ) {\n this.viewContainerRef.createEmbeddedView(this.titleTemplateRef);\n\n if (!this.columnState) {\n throw new Error('The *clrDgHideableColumn directive can only be used inside of a clr-dg-column component.');\n }\n }\n\n private subscriptions: Subscription[] = [];\n\n ngOnInit() {\n this.columnsService.emitStateChange(this.columnState, {\n hideable: true,\n titleTemplateRef: this.titleTemplateRef,\n hidden: this._hidden,\n changes: [DatagridColumnChanges.HIDDEN],\n });\n\n this.subscriptions.push(\n this.columnState.subscribe((state: ColumnState) => {\n if (state.changes && state.changes.indexOf(DatagridColumnChanges.HIDDEN) > -1) {\n this.hiddenChange.emit(state.hidden); // Can emit through @Output when desugared syntax is used\n }\n })\n );\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component, Input } from '@angular/core';\nimport { Page } from './providers/page';\n\n@Component({\n selector: 'clr-dg-page-size',\n template: `\n <ng-content></ng-content>\n <div class=\"clr-select-wrapper\">\n <select [class.clr-page-size-select]=\"true\" [(ngModel)]=\"page.size\">\n <option *ngFor=\"let option of pageSizeOptions\" [ngValue]=\"option\">{{ option }}</option>\n </select>\n </div>\n `,\n})\nexport class ClrDatagridPageSize {\n @Input('clrPageSizeOptions') pageSizeOptions: number[];\n\n constructor(public page: Page) {}\n\n ngOnInit() {\n if (!this.pageSizeOptions || this.pageSizeOptions.length === 0) {\n this.pageSizeOptions = [this.page.size];\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport {\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { Page } from './providers/page';\nimport { ClrDatagridPageSize } from './datagrid-page-size';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { DetailService } from './providers/detail.service';\n\n@Component({\n selector: 'clr-dg-pagination',\n template: `\n <ng-container *ngIf=\"!detailService.isOpen\">\n <div class=\"pagination-size\" *ngIf=\"_pageSizeComponent\">\n <ng-content select=\"clr-dg-page-size\"></ng-content>\n </div>\n <div class=\"pagination-description\">\n <ng-content></ng-content>\n </div>\n <div class=\"pagination-list\" *ngIf=\"page.last > 1\">\n <button\n type=\"button\"\n class=\"pagination-first\"\n [disabled]=\"page.current <= 1\"\n (click)=\"page.current = 1\"\n [attr.aria-label]=\"commonStrings.keys.firstPage\"\n >\n <cds-icon shape=\"step-forward-2\" direction=\"down\"></cds-icon>\n </button>\n <button\n type=\"button\"\n class=\"pagination-previous\"\n [disabled]=\"page.current <= 1\"\n (click)=\"page.current = page.current - 1\"\n [attr.aria-label]=\"commonStrings.keys.previousPage\"\n >\n <cds-icon shape=\"angle\" direction=\"left\"></cds-icon>\n </button>\n <input\n *ngIf=\"!disableCurrentPageInput; else readOnly\"\n #currentPageInput\n type=\"text\"\n class=\"pagination-current clr-input\"\n [size]=\"page.last.toString().length\"\n [value]=\"page.current\"\n (keydown.enter)=\"updateCurrentPage($event)\"\n (blur)=\"updateCurrentPage($event)\"\n [attr.aria-label]=\"commonStrings.keys.currentPage\"\n />\n <ng-template #readOnly>\n <span>{{ page.current }}</span>\n </ng-template>\n\n / <span [attr.aria-label]=\"commonStrings.keys.totalPages\">{{ page.last }}</span>\n <button\n type=\"button\"\n class=\"pagination-next\"\n [disabled]=\"page.current >= page.last\"\n (click)=\"page.current = page.current + 1\"\n [attr.aria-label]=\"commonStrings.keys.nextPage\"\n >\n <cds-icon shape=\"angle\" direction=\"right\"></cds-icon>\n </button>\n <button\n type=\"button\"\n class=\"pagination-last\"\n [disabled]=\"page.current >= page.last\"\n (click)=\"page.current = page.last\"\n [attr.aria-label]=\"commonStrings.keys.lastPage\"\n >\n <cds-icon shape=\"step-forward-2\" direction=\"up\"></cds-icon>\n </button>\n </div>\n </ng-container>\n <ng-container *ngIf=\"detailService.isOpen\">\n <div class=\"pagination-description-compact\">\n {{ page.firstItem + 1 }}-{{ page.lastItem + 1 }} / {{ page.totalItems }}\n </div>\n <div class=\"pagination-list\">\n <button\n type=\"button\"\n class=\"pagination-previous\"\n [disabled]=\"page.current <= 1\"\n (click)=\"page.current = page.current - 1\"\n [attr.aria-label]=\"commonStrings.keys.previousPage\"\n >\n <cds-icon shape=\"angle\" direction=\"left\"></cds-icon>\n </button>\n <span>{{ page.current }}</span>\n <button\n type=\"button\"\n class=\"pagination-next\"\n [disabled]=\"page.current >= page.last\"\n (click)=\"page.current = page.current + 1\"\n [attr.aria-label]=\"commonStrings.keys.nextPage\"\n >\n <cds-icon shape=\"angle\" direction=\"right\"></cds-icon>\n </button>\n </div>\n </ng-container>\n `,\n host: { '[class.pagination]': 'true' },\n})\nexport class ClrDatagridPagination implements OnDestroy, OnInit {\n @ContentChild(ClrDatagridPageSize) _pageSizeComponent: ClrDatagridPageSize;\n @ViewChild('currentPageInput') currentPageInputRef: ElementRef;\n\n constructor(public page: Page, public commonStrings: ClrCommonStringsService, public detailService: DetailService) {\n this.page.activated = true;\n }\n\n /**********\n * Subscription to the Page service for page changes.\n * Note: this only emits after the datagrid is initialized/stabalized and the page changes.\n */\n ngOnInit() {\n /*\n * Default page size is 10.\n * The reason we set it here and not in the provider itself is because\n * we don't want pagination if this component isn't present in the datagrid.\n */\n if (!this.page.size) {\n this.page.size = 10;\n }\n this._pageSubscription = this.page.change.subscribe(current => this.currentChanged.emit(current));\n }\n\n /**\n * Subscription to the page service changes\n */\n private _pageSubscription: Subscription;\n\n ngOnDestroy() {\n this.page.resetPageSize(true);\n if (this._pageSubscription) {\n this._pageSubscription.unsubscribe();\n }\n }\n\n @Input('clrDgPageInputDisabled') public disableCurrentPageInput: boolean;\n\n /**\n * Page size\n */\n public get pageSize(): number | string {\n return this.page.size;\n }\n\n @Input('clrDgPageSize')\n public set pageSize(size: number | string) {\n if (typeof size === 'number') {\n this.page.size = size as number;\n }\n }\n\n /**\n * Total items (needed to guess the last page)\n */\n public get totalItems(): number | string {\n return this.page.totalItems;\n }\n\n @Input('clrDgTotalItems')\n public set totalItems(total: number | string) {\n if (typeof total === 'number') {\n this.page.totalItems = total as number;\n }\n }\n\n /**\n * Last page\n */\n public get lastPage(): number | string {\n return this.page.last;\n }\n\n @Input('clrDgLastPage')\n public set lastPage(last: number | string) {\n if (typeof last === 'number') {\n this.page.last = last as number;\n }\n }\n\n /**\n * Current page\n */\n public get currentPage(): number | string {\n return this.page.current;\n }\n\n @Input('clrDgPage')\n public set currentPage(page: number | string) {\n if (typeof page === 'number') {\n this.page.current = page as number;\n }\n }\n\n @Output('clrDgPageChange') currentChanged = new EventEmitter<number>(false);\n\n /**\n * Moves to the previous page if it exists\n */\n public previous() {\n this.page.previous();\n }\n\n /**\n * Moves to the next page if it exists\n */\n public next() {\n this.page.next();\n }\n\n /**\n * Index of the first item displayed on the current page, starting at 0, -1 if none displayed\n */\n public get firstItem(): number {\n return this.page.firstItem;\n }\n\n /**\n * Index of the last item displayed on the current page, starting at 0, -1 if none displayed\n */\n public get lastItem(): number {\n return this.page.lastItem;\n }\n\n /**\n * Conditionally adds page numbers before and after the current page\n */\n public get middlePages(): number[] {\n const middlePages: number[] = [];\n if (this.page.current > 1) {\n middlePages.push(this.page.current - 1);\n }\n middlePages.push(this.page.current);\n if (this.page.current < this.page.last) {\n middlePages.push(this.page.current + 1);\n }\n return middlePages;\n }\n\n /**\n * We only update the pagination's current page on blur of the input field, or\n * when they press enter.\n */\n public updateCurrentPage(event: any): void {\n const parsed = parseInt(event.target.value, 10);\n\n // if the input value, is not a number, we don't update the page\n if (!isNaN(parsed)) {\n if (parsed < 1) {\n this.page.current = 1;\n } else if (parsed > this.page.last) {\n this.page.current = this.page.last;\n } else {\n this.page.current = parsed;\n }\n }\n\n /**\n * Set the input's value to the new current page. This is needed because the code\n * above may have changed the value from what the user entered in.\n */\n this.currentPageInputRef.nativeElement.value = this.page.current;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { AfterContentInit, Component, ContentChildren, Input, OnDestroy, QueryList } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrDatagridCell } from './datagrid-cell';\nimport { ExpandableRowsCount } from './providers/global-expandable-rows';\nimport { RowActionService } from './providers/row-action-service';\nimport { Selection } from './providers/selection';\nimport { SelectionType } from './enums/selection-type';\nimport { DatagridIfExpandService } from './datagrid-if-expanded.service';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\n\n/**\n * Generic bland container serving various purposes for Datagrid.\n * For instance, it can help span a text over multiple rows in detail view.\n */\n@Component({\n selector: 'clr-dg-row-detail',\n template: `\n <div class=\"clr-sr-only\">\n {{ beginningOfExpandableContentAriaText }} {{ commonStrings.keys.dategridExpandableRowsHelperText }}\n </div>\n <ng-content></ng-content>\n <div class=\"clr-sr-only\">{{ endOfExpandableContentAriaText }}</div>\n `,\n host: {\n '[class.datagrid-row-flex]': 'true',\n '[class.datagrid-row-detail]': 'true',\n '[class.datagrid-container]': 'cells.length === 0',\n '[attr.id]': 'expand.expandableId',\n },\n})\nexport class ClrDatagridRowDetail implements AfterContentInit, OnDestroy {\n /* reference to the enum so that template can access it */\n public SELECTION_TYPE = SelectionType;\n\n constructor(\n public selection: Selection,\n public rowActionService: RowActionService,\n public expand: DatagridIfExpandService,\n public expandableRows: ExpandableRowsCount,\n public commonStrings: ClrCommonStringsService\n ) {}\n\n @ContentChildren(ClrDatagridCell) cells: QueryList<ClrDatagridCell>;\n\n @Input('clrDgReplace')\n set replace(value: boolean) {\n this.expand.setReplace(!!value);\n }\n private subscriptions: Subscription[] = [];\n public replacedRow = false;\n\n ngAfterContentInit() {\n this.subscriptions.push(\n this.expand.replace.subscribe(replaceChange => {\n this.replacedRow = replaceChange;\n })\n );\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n @Input('clrRowDetailBeginningAriaText') _beginningOfExpandableContentAriaText: string;\n public get beginningOfExpandableContentAriaText() {\n return (\n this._beginningOfExpandableContentAriaText ||\n `${this.commonStrings.keys.dategridExpandableBeginningOf} ${this.commonStrings.keys.dategridExpandableRowContent}`\n );\n }\n\n @Input('clrRowDetailEndAriaText') _endOfExpandableContentAriaText: string;\n public get endOfExpandableContentAriaText() {\n return (\n this._endOfExpandableContentAriaText ||\n `${this.commonStrings.keys.dategridExpandableEndOf} ${this.commonStrings.keys.dategridExpandableRowContent}`\n );\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n// @TODO The top two are not used now, which is probably a performance drag that was broken along the way.\n// There was a previous pattern to hide everything to do computation then display, for Firefox, needs revisiting.\nexport const NO_LAYOUT_CLASS = 'datagrid-no-layout';\nexport const COMPUTE_WIDTH_CLASS = 'datagrid-computing-columns-width';\nexport const STRICT_WIDTH_CLASS = 'datagrid-fixed-width';\nexport const HIDDEN_COLUMN_CLASS = 'datagrid-hidden-column';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Directive, ElementRef, OnDestroy, Renderer2 } from '@angular/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { DatagridRenderStep } from '../enums/render-step.enum';\n\nimport { HIDDEN_COLUMN_CLASS, STRICT_WIDTH_CLASS } from './constants';\nimport { DatagridRenderOrganizer } from './render-organizer';\nimport { ColumnState } from '../interfaces/column-state.interface';\nimport { ALL_COLUMN_CHANGES, DatagridColumnChanges } from '../enums/column-changes.enum';\n\n@Directive({ selector: 'clr-dg-cell' })\nexport class DatagridCellRenderer implements OnDestroy {\n private stateSubscription: Subscription;\n\n private runAllChanges: DatagridColumnChanges[];\n\n // @TODO(JEREMY) Work out how to dedupe some of this code between header and cell renderers\n set columnState(columnState: BehaviorSubject<ColumnState>) {\n if (this.stateSubscription) {\n this.stateSubscription.unsubscribe();\n }\n\n this.runAllChanges = ALL_COLUMN_CHANGES;\n this.stateSubscription = columnState.subscribe(state => this.stateChanges(state));\n }\n\n constructor(private el: ElementRef, private renderer: Renderer2, organizer: DatagridRenderOrganizer) {\n this.subscriptions.push(\n organizer.filterRenderSteps(DatagridRenderStep.CLEAR_WIDTHS).subscribe(() => this.clearWidth())\n );\n }\n\n private subscriptions: Subscription[] = [];\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n if (this.stateSubscription) {\n this.stateSubscription.unsubscribe();\n }\n }\n\n private stateChanges(state: ColumnState) {\n if (this.runAllChanges) {\n state.changes = this.runAllChanges;\n delete this.runAllChanges;\n }\n if (state.changes && state.changes.length) {\n state.changes.forEach(change => {\n switch (change) {\n case DatagridColumnChanges.WIDTH:\n this.setWidth(state);\n break;\n case DatagridColumnChanges.HIDDEN:\n this.setHidden(state);\n break;\n default:\n break;\n }\n });\n }\n }\n\n private clearWidth() {\n this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);\n this.renderer.setStyle(this.el.nativeElement, 'width', null);\n }\n\n private setWidth(state: ColumnState) {\n if (state.strictWidth) {\n this.renderer.addClass(this.el.nativeElement, STRICT_WIDTH_CLASS);\n } else {\n this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);\n }\n this.renderer.setStyle(this.el.nativeElement, 'width', state.width + 'px');\n }\n\n private setHidden(state: ColumnState) {\n if (state.hidden) {\n this.renderer.addClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);\n } else {\n this.renderer.removeClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Directive, ElementRef, EventEmitter, Inject, OnDestroy, Output, Renderer2 } from '@angular/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { DomAdapter } from '../../../utils/dom-adapter/dom-adapter';\nimport { DatagridRenderStep } from '../enums/render-step.enum';\nimport { ColumnResizerService } from '../providers/column-resizer.service';\nimport { HIDDEN_COLUMN_CLASS, STRICT_WIDTH_CLASS } from './constants';\nimport { DatagridRenderOrganizer } from './render-organizer';\nimport { ColumnState } from '../interfaces/column-state.interface';\nimport { DatagridColumnChanges } from '../enums/column-changes.enum';\nimport { COLUMN_STATE, COLUMN_STATE_PROVIDER } from '../providers/column-state.provider';\nimport { ColumnsService } from '../providers/columns.service';\n\n@Directive({ selector: 'clr-dg-column', providers: [ColumnResizerService, COLUMN_STATE_PROVIDER] })\nexport class DatagridHeaderRenderer implements OnDestroy {\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n private organizer: DatagridRenderOrganizer,\n private domAdapter: DomAdapter,\n private columnResizerService: ColumnResizerService,\n private columnsService: ColumnsService,\n @Inject(COLUMN_STATE) private columnState: BehaviorSubject<ColumnState>\n ) {\n this.subscriptions.push(\n this.organizer.filterRenderSteps(DatagridRenderStep.CLEAR_WIDTHS).subscribe(() => this.clearWidth())\n );\n\n this.subscriptions.push(columnState.subscribe(state => this.stateChanges(state)));\n }\n\n @Output('clrDgColumnResize') resizeEmitter: EventEmitter<number> = new EventEmitter();\n\n /**\n * Indicates if the column has a strict width, so it doesn't shrink or expand based on the content.\n */\n private widthSet = false;\n private autoSet = false;\n\n private subscriptions: Subscription[] = [];\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n private stateChanges(state: ColumnState) {\n if (state.changes && state.changes.length) {\n state.changes.forEach(change => {\n switch (change) {\n case DatagridColumnChanges.WIDTH:\n this.setWidth(state);\n break;\n case DatagridColumnChanges.HIDDEN:\n this.setHidden(state);\n break;\n default:\n break;\n }\n });\n }\n }\n\n private clearWidth() {\n // remove the width only if we set it, and it is not changed by dragging.\n if (this.widthSet && !this.columnResizerService.resizedBy) {\n this.renderer.setStyle(this.el.nativeElement, 'width', null);\n }\n if (this.autoSet) {\n this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);\n }\n }\n\n private detectStrictWidth(): number {\n if (this.columnResizerService.resizedBy) {\n return this.columnResizerService.widthAfterResize;\n } else if (this.autoSet) {\n return 0;\n } else {\n return this.domAdapter.userDefinedWidth(this.el.nativeElement);\n }\n }\n\n private computeWidth(strictWidth: number): number {\n let width: number = strictWidth;\n if (!width) {\n width = this.domAdapter.scrollWidth(this.el.nativeElement);\n }\n return width;\n }\n\n public getColumnWidthState(): Partial<ColumnState> {\n const strictWidth = this.detectStrictWidth();\n return {\n width: this.computeWidth(strictWidth),\n strictWidth: strictWidth,\n };\n }\n\n public setColumnState(index: number) {\n this.columnsService.columns[index] = this.columnState;\n }\n\n private setWidth(state: ColumnState) {\n if (state.strictWidth) {\n if (this.columnResizerService.resizedBy) {\n this.resizeEmitter.emit(state.width);\n this.renderer.setStyle(this.el.nativeElement, 'width', state.width + 'px');\n this.widthSet = false;\n }\n // Don't set width if there is a user-defined one. Just add the strict width class.\n this.renderer.addClass(this.el.nativeElement, STRICT_WIDTH_CLASS);\n this.autoSet = false;\n } else {\n this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);\n this.renderer.setStyle(this.el.nativeElement, 'width', state.width + 'px');\n this.widthSet = true;\n this.autoSet = true;\n }\n }\n\n private setHidden(state: ColumnState) {\n if (state.hidden) {\n this.renderer.addClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);\n } else {\n this.renderer.removeClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n/*\n * This version of the DomAdapter is for use on non-browser platforms, where there are no\n * nativeElements to use for calculations.\n */\n\nimport { Injectable } from '@angular/core';\nimport { DomAdapter } from '../../../utils/dom-adapter/dom-adapter';\n\n@Injectable()\nexport class NoopDomAdapter implements DomAdapter {\n // eslint-disable-next-line\n userDefinedWidth(element: any): number {\n return 0;\n }\n\n // eslint-disable-next-line\n scrollBarWidth(element: any) {\n return 0;\n }\n\n // eslint-disable-next-line\n scrollWidth(element: any) {\n return 0;\n }\n\n // eslint-disable-next-line\n computedHeight(element: any): number {\n return 0;\n }\n\n // eslint-disable-next-line\n clientRect(element: any): DOMRect {\n return {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: 0,\n height: 0,\n } as DOMRect;\n }\n\n // eslint-disable-next-line\n minWidth(element: any): number {\n return 0;\n }\n\n // eslint-disable-next-line\n focus(element: any): void {\n // Do nothing\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { AfterContentInit, ContentChildren, Directive, OnDestroy, QueryList } from '@angular/core';\n\nimport { DatagridCellRenderer } from './cell-renderer';\nimport { ColumnsService } from '../providers/columns.service';\nimport { Subscription } from 'rxjs';\n\n@Directive({ selector: 'clr-dg-row, clr-dg-row-detail' })\nexport class DatagridRowRenderer implements AfterContentInit, OnDestroy {\n @ContentChildren(DatagridCellRenderer) private cells: QueryList<DatagridCellRenderer>;\n\n constructor(private columnsService: ColumnsService) {}\n\n ngAfterContentInit() {\n this.setColumnState(); // case #3 and #4\n this.subscriptions.push(\n this.cells.changes.subscribe(() => {\n this.setColumnState(); // case #2\n // Note on case #2: In the case of dynamic columns, when one column (header/cell together) gets deleted,\n // this.cells.changes emits before this.columnsService.columns gets updated in MainRenderer\n // when this.headers.changes emits as well. So that means there will be n+1 column state providers\n // when this.cells.changes emits. Hence, we should quit earlier there. But this method will be called\n // right after again when this.headers.changes emits. By then, there will be the same number of column state\n // providers as column headers.\n })\n );\n }\n\n private subscriptions: Subscription[] = [];\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n public setColumnState() {\n // This method runs in four cases:\n // 1. When the initial rows appear on the first page.\n // In this case, the method will be called in DatagridMainRenderer.\n // 2. When columns (corresponding header/cells) get added and deleted.\n // In this case, the method will be called in DatagridMainRenderer. (Read the note on this case above).\n // 3. When rows load asynchronously.\n // In this case, the method will be called in this class.\n // 4. When rows load after switching pages.\n // In this case, the method will be called in this class (Basically, same as the case 3).\n if (this.cells.length === this.columnsService.columns.length) {\n this.cells.forEach((cell, index) => {\n if (this.columnsService.columns[index]) {\n cell.columnState = this.columnsService.columns[index];\n }\n });\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewChecked,\n AfterViewInit,\n ContentChildren,\n Directive,\n ElementRef,\n OnDestroy,\n PLATFORM_ID,\n QueryList,\n Renderer2,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { DatagridRenderStep } from '../enums/render-step.enum';\nimport { Items } from '../providers/items';\nimport { Page } from '../providers/page';\nimport { TableSizeService } from '../providers/table-size.service';\n\nimport { DomAdapter } from '../../../utils/dom-adapter/dom-adapter';\nimport { DatagridHeaderRenderer } from './header-renderer';\nimport { NoopDomAdapter } from './noop-dom-adapter';\nimport { DatagridRenderOrganizer } from './render-organizer';\nimport { ColumnsService } from '../providers/columns.service';\nimport { DatagridColumnChanges } from '../enums/column-changes.enum';\nimport { DatagridRowRenderer } from './row-renderer';\nimport { ColumnStateDiff } from '../interfaces/column-state.interface';\nimport { DetailService } from '../providers/detail.service';\n\n// Fixes build error\n// @dynamic (https://github.com/angular/angular/issues/19698#issuecomment-338340211)\nexport const domAdapterFactory = (platformId: any) => {\n if (isPlatformBrowser(platformId)) {\n return new DomAdapter();\n } else {\n return new NoopDomAdapter();\n }\n};\n\n// Fixes build error\n// @dynamic (https://github.com/angular/angular/issues/19698#issuecomment-338340211)\n@Directive({\n selector: 'clr-datagrid',\n providers: [{ provide: DomAdapter, useFactory: domAdapterFactory, deps: [PLATFORM_ID] }],\n})\nexport class DatagridMainRenderer implements AfterContentInit, AfterViewInit, AfterViewChecked, OnDestroy {\n constructor(\n private organizer: DatagridRenderOrganizer,\n private items: Items,\n private page: Page,\n private domAdapter: DomAdapter,\n private el: ElementRef,\n private renderer: Renderer2,\n private detailService: DetailService,\n private tableSizeService: TableSizeService,\n private columnsService: ColumnsService\n ) {\n this.subscriptions.push(\n this.organizer\n .filterRenderSteps(DatagridRenderStep.COMPUTE_COLUMN_WIDTHS)\n .subscribe(() => this.computeHeadersWidth())\n );\n\n this.subscriptions.push(\n this.page.sizeChange.subscribe(() => {\n if (this._heightSet) {\n this.resetDatagridHeight();\n }\n })\n );\n this.subscriptions.push(this.detailService.stateChange.subscribe(state => this.toggleDetailPane(state)));\n this.subscriptions.push(this.items.change.subscribe(() => (this.shouldStabilizeColumns = true)));\n }\n\n @ContentChildren(DatagridHeaderRenderer) private headers: QueryList<DatagridHeaderRenderer>;\n @ContentChildren(DatagridRowRenderer, { descendants: true })\n private rows: QueryList<DatagridRowRenderer>; // if expandable row is expanded initially, query its cells too.\n\n ngAfterContentInit() {\n this.setupColumns();\n\n this.subscriptions.push(\n this.headers.changes.subscribe(() => {\n // TODO: only re-stabilize if a column was added or removed. Reordering is fine.\n // Need to setup columns before stabalizing them\n this.setupColumns();\n this.columnsSizesStable = false;\n this.stabilizeColumns();\n })\n );\n }\n\n // Initialize and set Table width for horizontal scrolling here.\n ngAfterViewInit() {\n this.tableSizeService.table = this.el;\n }\n\n ngAfterViewChecked() {\n if (this.shouldStabilizeColumns) {\n this.stabilizeColumns();\n }\n if (this.shouldComputeHeight()) {\n setTimeout(() => {\n this.computeDatagridHeight();\n });\n }\n }\n\n private setupColumns() {\n this.headers.forEach((header, index) => header.setColumnState(index));\n this.columnsService.columns.splice(this.headers.length); // Trim any old columns\n this.rows.forEach(row => row.setColumnState());\n }\n\n private _heightSet = false;\n\n private shouldComputeHeight(): boolean {\n if (!this._heightSet && this.page.size > 0) {\n if (this.items.displayed.length === this.page.size) {\n return true;\n }\n }\n return false;\n }\n\n public toggleDetailPane(state: boolean) {\n if (this.headers) {\n if (state && !this.columnsService.hasCache()) {\n this.columnsService.cache();\n this.headers.forEach((_header, index) => {\n if (index > 0) {\n this.columnsService.emitStateChangeAt(index, {\n changes: [DatagridColumnChanges.HIDDEN],\n hidden: state,\n });\n }\n });\n } else if (!state) {\n this.columnsService.resetToLastCache();\n }\n }\n }\n\n /**\n * Computes the height of the datagrid.\n *\n * NOTE: We had to choose to set the height instead of the min-height because\n * IE 11 requires the height on the parent for the children flex grow/shrink properties to work.\n * When we used min-height, 1 1 auto doesn't used to work in IE11 :-(\n * But this doesn't affect the fix. It works in both fixed & variable height datagrids.\n *\n * Refer: http://stackoverflow.com/questions/24396205/flex-grow-not-working-in-internet-explorer-11-0\n */\n private computeDatagridHeight() {\n // IE doesn't return correct value for getComputedStyle(element).getPropertyValue(\"height\")\n const value: number = this.domAdapter.clientRect(this.el.nativeElement).height;\n this.renderer.setStyle(this.el.nativeElement, 'height', value + 'px');\n this._heightSet = true;\n }\n\n private resetDatagridHeight() {\n this.renderer.setStyle(this.el.nativeElement, 'height', '');\n this._heightSet = false;\n }\n\n private subscriptions: Subscription[] = [];\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n /**\n * Makes each header compute its width.\n */\n private computeHeadersWidth() {\n const nbColumns: number = this.headers.length;\n let allStrict = true;\n this.headers.forEach((header, index) => {\n // On the last header column check whether all columns have strict widths.\n // If all columns have strict widths, remove the strict width from the last column and make it the column's\n // minimum width so that when all previous columns shrink, it will get a flexible width and cover the empty\n // gap in the Datagrid.\n const state: ColumnStateDiff = {\n changes: [DatagridColumnChanges.WIDTH],\n ...header.getColumnWidthState(),\n };\n\n if (!state.strictWidth) {\n allStrict = false;\n }\n\n if (nbColumns === index + 1 && allStrict) {\n state.strictWidth = 0;\n }\n\n this.columnsService.emitStateChangeAt(index, state);\n });\n }\n\n /**\n * Indicates if we want to re-compute columns width. This should only happen:\n * 1) When headers change, with columns being added or removed\n * 2) When rows are lazily loaded for the first time\n */\n private columnsSizesStable = false;\n\n private shouldStabilizeColumns = true;\n\n /**\n * Triggers a whole re-rendring cycle to set column sizes, if needed.\n */\n private stabilizeColumns() {\n this.shouldStabilizeColumns = false;\n if (this.columnsSizesStable) {\n // Nothing to do.\n return;\n }\n // Resize when the rows are loaded.\n if (this.items.displayed.length > 0) {\n this.organizer.resize();\n this.columnsSizesStable = true;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { ClrFormsModule } from '../../forms/forms.module';\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrLoadingModule } from '../../utils/loading/loading.module';\nimport { ClrOutsideClickModule } from '../../utils/outside-click/outside-click.module';\nimport { ClrDragAndDropModule } from '../../utils/drag-and-drop/drag-and-drop.module';\nimport { ClrExpandableAnimationModule } from '../../utils/animations/expandable-animation/expandable-animation.module';\nimport { ClrSpinnerModule } from '../../progress/spinner/spinner.module';\nimport { ClrPopoverModuleNext } from '../../utils/popover/popover.module';\nimport { ClrFocusTrapModule } from '../../utils/focus-trap/focus-trap.module';\nimport { ClrFocusOnViewInitModule } from '../../utils/focus/focus-on-view-init/focus-on-view-init.module';\nimport { ClrConditionalModule } from '../../utils/conditional/conditional.module';\n\nimport { DatagridStringFilter } from './built-in/filters/datagrid-string-filter';\nimport { DatagridNumericFilter } from './built-in/filters/datagrid-numeric-filter';\nimport { ActionableOompaLoompa } from './chocolate/actionable-oompa-loompa';\nimport { DatagridWillyWonka } from './chocolate/datagrid-willy-wonka';\nimport { ExpandableOompaLoompa } from './chocolate/expandable-oompa-loompa';\nimport { ClrDatagrid } from './datagrid';\nimport { ClrDatagridActionBar } from './datagrid-action-bar';\nimport { ClrDatagridActionOverflow } from './datagrid-action-overflow';\nimport { ClrDatagridCell } from './datagrid-cell';\nimport { ClrDatagridColumn } from './datagrid-column';\nimport { ClrDatagridColumnSeparator } from './datagrid-column-separator';\nimport { ClrDatagridColumnToggle } from './datagrid-column-toggle';\nimport { ClrDatagridColumnToggleButton } from './datagrid-column-toggle-button';\nimport { ClrDatagridColumnToggleTitle } from './datagrid-column-toggle-title';\nimport { DatagridDetailRegisterer } from './datagrid-detail-registerer';\nimport { ClrDatagridDetail } from './datagrid-detail';\nimport { ClrIfDetail } from './datagrid-if-detail';\nimport { ClrDatagridDetailHeader } from './datagrid-detail-header';\nimport { ClrDatagridDetailBody } from './datagrid-detail-body';\nimport { ClrDatagridFilter } from './datagrid-filter';\nimport { ClrDatagridFooter } from './datagrid-footer';\nimport { ClrDatagridHideableColumn } from './datagrid-hideable-column';\nimport { ClrDatagridItems } from './datagrid-items';\nimport { ClrDatagridItemsTrackBy } from './datagrid-items-trackby';\nimport { ClrDatagridPagination } from './datagrid-pagination';\nimport { ClrDatagridPageSize } from './datagrid-page-size';\nimport { ClrDatagridPlaceholder } from './datagrid-placeholder';\nimport { ClrDatagridRow } from './datagrid-row';\nimport { ClrDatagridRowDetail } from './datagrid-row-detail';\nimport { DatagridCellRenderer } from './render/cell-renderer';\nimport { DatagridHeaderRenderer } from './render/header-renderer';\nimport { DatagridMainRenderer } from './render/main-renderer';\nimport { DatagridRowRenderer } from './render/row-renderer';\nimport { WrappedCell } from './wrapped-cell';\nimport { WrappedColumn } from './wrapped-column';\nimport { WrappedRow } from './wrapped-row';\nimport {\n angleDoubleIcon,\n arrowIcon,\n ClarityIcons,\n ellipsisVerticalIcon,\n filterGridCircleIcon,\n filterGridIcon,\n stepForward2Icon,\n timesIcon,\n viewColumnsIcon,\n windowCloseIcon,\n} from '@cds/core/icon';\n\nexport const CLR_DATAGRID_DIRECTIVES: Type<any>[] = [\n // Core\n ClrDatagrid,\n ClrDatagridActionBar,\n ClrDatagridActionOverflow,\n ClrDatagridColumn,\n ClrDatagridColumnSeparator,\n ClrDatagridColumnToggle,\n ClrDatagridHideableColumn,\n ClrDatagridFilter,\n ClrDatagridItems,\n ClrDatagridItemsTrackBy,\n ClrDatagridRow,\n ClrDatagridRowDetail,\n DatagridDetailRegisterer,\n ClrDatagridCell,\n ClrDatagridFooter,\n ClrDatagridPagination,\n ClrDatagridPageSize,\n ClrDatagridPlaceholder,\n ClrDatagridColumnToggleButton,\n ClrDatagridColumnToggleTitle,\n ClrDatagridDetail,\n ClrIfDetail,\n ClrDatagridDetailHeader,\n ClrDatagridDetailBody,\n WrappedCell,\n WrappedColumn,\n WrappedRow,\n\n // Renderers\n DatagridMainRenderer,\n DatagridHeaderRenderer,\n DatagridRowRenderer,\n DatagridCellRenderer,\n\n // Chocolate\n DatagridWillyWonka,\n ActionableOompaLoompa,\n ExpandableOompaLoompa,\n\n // Built-in shortcuts\n DatagridStringFilter,\n DatagridNumericFilter,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n ClrIconModule,\n ClrFormsModule,\n FormsModule,\n ClrLoadingModule,\n ClrConditionalModule,\n ClrOutsideClickModule,\n ClrExpandableAnimationModule,\n ClrDragAndDropModule,\n ClrSpinnerModule,\n ClrPopoverModuleNext,\n ClrFocusTrapModule,\n ClrFocusOnViewInitModule,\n ],\n declarations: [CLR_DATAGRID_DIRECTIVES],\n exports: [CLR_DATAGRID_DIRECTIVES],\n entryComponents: [WrappedCell, WrappedColumn, WrappedRow],\n})\nexport class ClrDatagridModule {\n constructor() {\n ClarityIcons.addIcons(\n ellipsisVerticalIcon,\n viewColumnsIcon,\n windowCloseIcon,\n arrowIcon,\n timesIcon,\n stepForward2Icon,\n angleDoubleIcon,\n filterGridCircleIcon,\n filterGridIcon\n );\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component, EventEmitter, HostBinding, Inject, Input, OnInit, Optional, Output, SkipSelf } from '@angular/core';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { UNIQUE_ID, UNIQUE_ID_PROVIDER } from '../../utils/id-generator/id-generator.service';\n\n@Component({\n selector: 'clr-stack-block',\n template: `\n <div\n class=\"stack-block-label\"\n (click)=\"toggleExpand()\"\n (keyup.enter)=\"toggleExpand()\"\n (keyup.space)=\"toggleExpand()\"\n (focus)=\"focused = true\"\n (blur)=\"focused = false\"\n [id]=\"uniqueId\"\n [attr.role]=\"role\"\n [attr.tabindex]=\"tabIndex\"\n [attr.aria-expanded]=\"ariaExpanded\"\n [attr.aria-controls]=\"getStackChildrenId()\"\n [attr.aria-posinset]=\"ariaPosinset\"\n [attr.aria-level]=\"ariaLevel\"\n [attr.aria-setsize]=\"ariaSetsize\"\n >\n <cds-icon shape=\"angle\" class=\"stack-block-caret\" *ngIf=\"expandable\" [attr.direction]=\"caretDirection\"></cds-icon>\n <span class=\"clr-sr-only\" *ngIf=\"getChangedValue\">{{ commonStrings.keys.stackViewChanged }}</span>\n <div class=\"stack-view-key\">\n <!-- This structure changed to fix #3567 and the a11y request was to move away from dl's -->\n <!-- I added the key class to update css targets for the original component style -->\n <ng-content select=\"clr-stack-label\"></ng-content>\n </div>\n <div class=\"stack-block-content\">\n <ng-content></ng-content>\n </div>\n </div>\n\n <clr-expandable-animation [clrExpandTrigger]=\"expanded\" class=\"stack-children\" [attr.id]=\"getStackChildrenId()\">\n <div [style.height]=\"expanded ? 'auto' : 0\" role=\"region\" *ngIf=\"expanded\">\n <ng-content select=\"clr-stack-block\"></ng-content>\n </div>\n </clr-expandable-animation>\n `,\n // Custom elements are inline by default\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n // Make sure the host has the proper class for styling purposes\n host: { '[class.stack-block]': 'true' },\n providers: [UNIQUE_ID_PROVIDER],\n})\nexport class ClrStackBlock implements OnInit {\n @HostBinding('class.stack-block-expanded')\n @Input('clrSbExpanded')\n expanded = false;\n @Output('clrSbExpandedChange') expandedChange: EventEmitter<boolean> = new EventEmitter<boolean>(false);\n @HostBinding('class.stack-block-expandable')\n @Input('clrSbExpandable')\n expandable = false;\n\n focused = false;\n private _changedChildren = 0;\n private _fullyInitialized = false;\n private _changed = false;\n\n @HostBinding('class.stack-block-changed')\n get getChangedValue(): boolean {\n return this._changed || (this._changedChildren > 0 && !this.expanded);\n }\n\n @Input('clrSbNotifyChange')\n set setChangedValue(value: boolean) {\n this._changed = value;\n\n if (this.parent && this._fullyInitialized) {\n if (value) {\n this.parent._changedChildren++;\n } else {\n this.parent._changedChildren--;\n }\n }\n }\n\n /**\n * Depth of the stack view starting from 1 for first level\n */\n @Input('clrStackViewLevel') ariaLevel: number;\n\n /**\n * Total number of rows in a given group\n */\n @Input('clrStackViewSetsize') ariaSetsize: number;\n\n /**\n * The position of the row inside the grouped by level rows\n */\n @Input('clrStackViewPosinset') ariaPosinset: number;\n\n /*\n * This would be more efficient with @ContentChildren, with the parent ClrStackBlock\n * querying for children StackBlocks, but this feature is not available when downgrading\n * the component for Angular 1.\n */\n constructor(\n @SkipSelf()\n @Optional()\n private parent: ClrStackBlock,\n @Inject(UNIQUE_ID) public uniqueId: string,\n public commonStrings: ClrCommonStringsService\n ) {\n if (parent) {\n parent.addChild();\n }\n }\n\n ngOnInit(): void {\n // in order to access the parent ClrStackBlock's properties,\n // the child ClrStackBlock has to be fully initialized at first.\n this._fullyInitialized = true;\n }\n\n addChild(): void {\n this.expandable = true;\n }\n\n toggleExpand(): void {\n if (this.expandable) {\n this.expanded = !this.expanded;\n this.expandedChange.emit(this.expanded);\n }\n }\n\n get caretDirection(): string {\n return this.expanded ? 'down' : 'right';\n }\n\n get role(): string {\n return this.expandable ? 'button' : null;\n }\n\n get tabIndex(): string {\n return this.expandable ? '0' : null;\n }\n\n @HostBinding('class.on-focus')\n get onStackLabelFocus(): boolean {\n return this.expandable && !this.expanded && this.focused;\n }\n\n get ariaExpanded(): string {\n if (!this.expandable) {\n return null;\n } else {\n return this.expanded ? 'true' : 'false';\n }\n }\n\n getStackChildrenId() {\n return this.expanded ? `clr-stack-children-${this.uniqueId}` : null;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component, EventEmitter, Output } from '@angular/core';\n\n@Component({\n selector: 'clr-stack-view',\n template: `\n <ng-content select=\"clr-stack-header\"></ng-content>\n <div class=\"stack-view\"><ng-content></ng-content></div>\n `,\n // Custom elements are inline by default.\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class ClrStackView {\n /**\n * Undocumented experimental feature: inline editing.\n */\n editable = false;\n\n @Output('clrStackSave') save: EventEmitter<void> = new EventEmitter<void>(false);\n\n private _editMode = false;\n\n editingChange: EventEmitter<boolean> = new EventEmitter<boolean>(false);\n\n get editing(): boolean {\n return this.editable && this._editMode;\n }\n\n set editing(value: boolean) {\n if (this.editable) {\n this._editMode = value;\n this.editingChange.emit(value);\n if (!value) {\n this.save.emit(null);\n }\n }\n }\n /**\n * End of undocumented experimental feature.\n */\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component } from '@angular/core';\nimport { ClrStackView } from './stack-view';\n\n@Component({\n selector: 'clr-stack-header',\n template: `\n <h4 class=\"stack-header\">\n <span class=\"stack-title\"><ng-content></ng-content></span>\n\n <span class=\"stack-actions\">\n <ng-content select=\".stack-action\"></ng-content>\n <!-- Undocumented experimental feature: inline editing. -->\n <button\n *ngIf=\"stackView.editable\"\n class=\"stack-action btn btn-sm btn-link\"\n (click)=\"stackView.editing = !stackView.editing\"\n type=\"button\"\n >\n Edit\n </button>\n <!-- End of undocumented experimental feature. -->\n </span>\n </h4>\n `,\n // Custom elements are inline by default\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class ClrStackHeader {\n constructor(public stackView: ClrStackView) {}\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n/**\n * Undocumented experimental feature: inline editing.\n */\n\nimport { EventEmitter } from '@angular/core';\nimport { ClrStackView } from './stack-view';\n\nexport class StackControl {\n model: any;\n modelChange: EventEmitter<any> = new EventEmitter<any>(false);\n\n constructor(protected stackView: ClrStackView) {\n // Make the ClrStackView editable, since it contains a StackControl\n this.stackView.editable = true;\n this.stackView.editingChange.subscribe((editing: boolean) => {\n // Edit mode was closed\n if (!editing) {\n this.modelChange.emit(this.model);\n }\n });\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n/**\n * Undocumented experimental feature: inline editing.\n *\n * TODO: support more types of inputs: checkbox, radio, ...\n * TODO: Mirror input attributes from the host to the actual input: size, min, max, placeholder, ...\n */\n\nimport { Component } from '@angular/core';\nimport { StackControl } from './stack-control';\nimport { ClrStackView } from './stack-view';\n\n@Component({\n selector: 'clr-stack-input',\n inputs: ['model: clrModel', 'type'],\n outputs: ['modelChange: clrModelChange'],\n template: `\n <span *ngIf=\"!stackView.editing\">{{ model }}</span>\n <input [type]=\"type\" *ngIf=\"stackView.editing\" [(ngModel)]=\"model\" />\n `,\n})\nexport class ClrStackInput extends StackControl {\n type = 'text';\n\n constructor(public stackView: ClrStackView) {\n super(stackView);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n/**\n * Undocumented experimental feature: inline editing.\n *\n * TODO: Offer a a way to customize the value displayed, plain value may be unreadable.\n */\n\nimport { Component } from '@angular/core';\nimport { StackControl } from './stack-control';\nimport { ClrStackView } from './stack-view';\n\n@Component({\n selector: 'clr-stack-select',\n inputs: ['model: clrModel'],\n outputs: ['modelChange: clrModelChange'],\n template: `\n <span *ngIf=\"!stackView.editing\">{{ model }}</span>\n <div class=\"select\" *ngIf=\"stackView.editing\">\n <select [(ngModel)]=\"model\">\n <ng-content></ng-content>\n </select>\n </div>\n `,\n})\nexport class ClrStackSelect extends StackControl {\n constructor(public stackView: ClrStackView) {\n super(stackView);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Directive } from '@angular/core';\n\n@Directive({ selector: 'clr-stack-label, clr-stack-content' })\nexport class ClrStackViewCustomTags {\n // No behavior\n // The only purpose is to \"declare\" the tag in Angular\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Directive, Inject } from '@angular/core';\nimport { UNIQUE_ID } from '../../utils/id-generator/id-generator.service';\n\n@Directive({\n selector: '[clrStackInput]',\n host: {\n '[class.clr-input]': 'true',\n '[attr.aria-labelledby]': 'uniqueId',\n },\n})\nexport class ClrStackContentInput {\n constructor(@Inject(UNIQUE_ID) public uniqueId: string) {}\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { ClrStackBlock } from './stack-block';\nimport { ClrStackHeader } from './stack-header';\nimport { ClrStackInput } from './stack-input';\nimport { ClrStackSelect } from './stack-select';\nimport { ClrStackView } from './stack-view';\nimport { ClrStackViewCustomTags } from './stack-view-custom-tags';\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrExpandableAnimationModule } from '../../utils/animations/expandable-animation/expandable-animation.module';\nimport { ClrStackContentInput } from './stack-content-input';\nimport { angleIcon, ClarityIcons } from '@cds/core/icon';\n\nexport const CLR_STACK_VIEW_DIRECTIVES: Type<any>[] = [\n ClrStackView,\n ClrStackHeader,\n ClrStackBlock,\n ClrStackContentInput,\n ClrStackViewCustomTags,\n /**\n * Undocumented experimental feature: inline editing.\n */\n ClrStackInput,\n ClrStackSelect,\n /**\n * End of undocumented experimental feature.\n */\n];\n\n@NgModule({\n imports: [CommonModule, FormsModule, ClrIconModule, ClrExpandableAnimationModule],\n declarations: [CLR_STACK_VIEW_DIRECTIVES],\n exports: [CLR_STACK_VIEW_DIRECTIVES],\n})\nexport class ClrStackViewModule {\n constructor() {\n ClarityIcons.addIcons(angleIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n// TODO: I'd like this to be a CheckedState enum for the checkboxes in the future.\nexport enum ClrSelectedState {\n // WARNING! Unselected has the value 0,\n // so it's actually the only one that will evaluate to false if cast to a boolean.\n // Don't mess with the order!\n UNSELECTED = 0,\n SELECTED,\n INDETERMINATE,\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ClrSelectedState } from './selected-state.enum';\nimport { BehaviorSubject } from 'rxjs';\n\nexport abstract class TreeNodeModel<T> {\n nodeId: string;\n expanded: boolean;\n selected = new BehaviorSubject<ClrSelectedState>(ClrSelectedState.UNSELECTED);\n model: T | null;\n /*\n * Ideally, I would like to use a polymorphic this type here to ensure homogeneity of the tree, something like:\n * abstract parent: this<T> | null;\n * abstract children: this<T>[];\n * But I'm hitting limitations on typescript not allowing that type in constructors or static methods.\n * So I'm resorting to forcing override with more precise types by marking these abstract.\n */\n abstract parent: TreeNodeModel<T> | null;\n abstract children: TreeNodeModel<T>[];\n\n /*\n * Being able to push this down to the RecursiveTreeNodeModel would require too much work on the angular components\n * right now for them to know which kind of model they are using. So I'm lifting the public properties to this\n * abstract parent class for now and we can revisit it later, when we're not facing such a close deadline.\n */\n private _loading = false;\n loading$ = new BehaviorSubject<boolean>(false);\n\n get loading() {\n return this._loading;\n }\n\n set loading(isLoading: boolean) {\n this._loading = isLoading;\n this.loading$.next(isLoading);\n }\n\n destroy() {\n // Just to be safe\n this.selected.complete();\n }\n\n // Propagate by default when eager, don't propagate in the lazy-loaded tree.\n setSelected(state: ClrSelectedState, propagateUp: boolean, propagateDown: boolean) {\n if (state === this.selected.value) {\n return;\n }\n this.selected.next(state);\n if (propagateDown && state !== ClrSelectedState.INDETERMINATE && this.children) {\n this.children.forEach(child => child.setSelected(state, false, true));\n }\n if (propagateUp && this.parent) {\n this.parent._updateSelectionFromChildren();\n }\n }\n\n toggleSelection(propagate: boolean) {\n // Both unselected and indeterminate toggle to selected\n const newState =\n this.selected.value === ClrSelectedState.SELECTED ? ClrSelectedState.UNSELECTED : ClrSelectedState.SELECTED;\n // NOTE: we always propagate selection up in this method because it is only called when the user takes an action.\n // It should never be called from lifecycle hooks or app-provided inputs.\n this.setSelected(newState, true, propagate);\n }\n\n private computeSelectionStateFromChildren() {\n let oneSelected = false;\n let oneUnselected = false;\n // Using a good old for loop to exit as soon as we can tell, for better performance on large trees.\n for (const child of this.children) {\n switch (child.selected.value) {\n case ClrSelectedState.INDETERMINATE:\n return ClrSelectedState.INDETERMINATE;\n case ClrSelectedState.SELECTED:\n oneSelected = true;\n if (oneUnselected) {\n return ClrSelectedState.INDETERMINATE;\n }\n break;\n case ClrSelectedState.UNSELECTED:\n default:\n // Default is the same as unselected, in case an undefined somehow made it all the way here.\n oneUnselected = true;\n if (oneSelected) {\n return ClrSelectedState.INDETERMINATE;\n }\n break;\n }\n }\n if (!oneSelected) {\n return ClrSelectedState.UNSELECTED;\n } else if (!oneUnselected) {\n return ClrSelectedState.SELECTED;\n } else {\n return ClrSelectedState.UNSELECTED;\n }\n }\n\n /*\n * Internal, but needs to be called by other nodes\n */\n _updateSelectionFromChildren() {\n const newState = this.computeSelectionStateFromChildren();\n if (newState === this.selected.value) {\n return;\n }\n this.selected.next(newState);\n if (this.parent) {\n this.parent._updateSelectionFromChildren();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { TreeNodeModel } from './tree-node.model';\n\n/*\n * A declarative model is built by traversing the Angular component tree.\n * Declarative = Tree node components dictate the model\n */\nexport class DeclarativeTreeNodeModel<T> extends TreeNodeModel<T> {\n constructor(parent: DeclarativeTreeNodeModel<T> | null) {\n super();\n this.parent = parent;\n if (parent) {\n parent._addChild(this);\n }\n this.children = [];\n }\n\n // Override for a more precise type\n parent: DeclarativeTreeNodeModel<T> | null;\n children: DeclarativeTreeNodeModel<T>[];\n\n _addChild(child: DeclarativeTreeNodeModel<T>) {\n this.children.push(child);\n }\n\n _removeChild(child: DeclarativeTreeNodeModel<T>) {\n const index = this.children.indexOf(child);\n if (index > -1) {\n this.children.splice(index, 1);\n }\n }\n\n destroy() {\n if (this.parent) {\n this.parent._removeChild(this);\n }\n super.destroy();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Injectable, Optional, SkipSelf, TemplateRef } from '@angular/core';\nimport { RecursiveTreeNodeModel } from './models/recursive-tree-node.model';\nimport { ClrRecursiveForOfContext } from './recursive-for-of';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class TreeFeaturesService<T> {\n selectable = false;\n eager = true;\n recursion: {\n template: TemplateRef<ClrRecursiveForOfContext<T>>;\n root: RecursiveTreeNodeModel<T>[];\n };\n childrenFetched: Subject<void> = new Subject();\n}\n\nexport function treeFeaturesFactory<T>(existing: TreeFeaturesService<T>) {\n return existing || new TreeFeaturesService();\n}\n\nexport const TREE_FEATURES_PROVIDER = {\n provide: TreeFeaturesService,\n useFactory: treeFeaturesFactory,\n /*\n * The Optional + SkipSelf pattern ensures that in case of nested components, only the root one will\n * instantiate a new service and all its children will reuse the root's instance.\n * If there are several roots (in this case, several independent trees on a page), each root will instantiate\n * its own service so they won't interfere with one another.\n *\n * TL;DR - Optional + SkipSelf = 1 instance of TreeFeaturesService per tree.\n */\n deps: [[new Optional(), new SkipSelf(), TreeFeaturesService]],\n};\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '.clr-treenode-link',\n})\nexport class ClrTreeNodeLink {\n constructor(private el: ElementRef) {}\n\n activate() {\n if (this.el.nativeElement && this.el.nativeElement.click) {\n this.el.nativeElement.click();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { TreeNodeModel } from './models/tree-node.model';\n\n@Injectable()\nexport class TreeFocusManagerService<T> {\n public rootNodeModels: TreeNodeModel<T>[];\n\n private focusedNodeId: string;\n\n private _focusRequest: Subject<string> = new Subject();\n\n private _focusChange: Subject<string> = new Subject();\n\n get focusRequest(): Observable<string> {\n return this._focusRequest.asObservable();\n }\n\n get focusChange(): Observable<string> {\n return this._focusChange.asObservable();\n }\n\n private findSiblings(model: TreeNodeModel<T>): TreeNodeModel<T>[] {\n // the method will return not only sibling models but also itself among them\n if (model.parent) {\n return model.parent.children;\n } else {\n return this.rootNodeModels;\n }\n }\n\n private findLastVisibleInNode(model: TreeNodeModel<T>): TreeNodeModel<T> {\n // the method will traverse through until it finds the last visible node from the given node\n if (!model) {\n return null;\n }\n if (model.expanded && model.children.length > 0) {\n const children = model.children;\n const lastChild = children[children.length - 1];\n return this.findLastVisibleInNode(lastChild);\n } else {\n return model;\n }\n }\n\n private findNextFocusable(model: TreeNodeModel<T>): TreeNodeModel<T> {\n if (!model) {\n return null;\n }\n\n const siblings = this.findSiblings(model);\n const selfIndex = siblings.indexOf(model);\n\n if (selfIndex < siblings.length - 1) {\n return siblings[selfIndex + 1];\n } else if (selfIndex === siblings.length - 1) {\n return this.findNextFocusable(model.parent);\n }\n return null;\n }\n\n private findLastVisibleInTree(): TreeNodeModel<T> {\n const lastRootNode =\n this.rootNodeModels && this.rootNodeModels.length && this.rootNodeModels[this.rootNodeModels.length - 1];\n return this.findLastVisibleInNode(lastRootNode);\n }\n\n private findNodeAbove(model: TreeNodeModel<T>): TreeNodeModel<T> {\n if (!model) {\n return null;\n }\n\n const siblings = this.findSiblings(model);\n const selfIndex = siblings.indexOf(model);\n\n if (selfIndex === 0) {\n return model.parent;\n } else if (selfIndex > 0) {\n return this.findLastVisibleInNode(siblings[selfIndex - 1]);\n }\n return null;\n }\n\n private findNodeBelow(model: TreeNodeModel<T>): TreeNodeModel<T> {\n if (!model) {\n return null;\n }\n\n if (model.expanded && model.children.length > 0) {\n return model.children[0];\n } else {\n return this.findNextFocusable(model);\n }\n }\n\n focusNode(model: TreeNodeModel<T>): void {\n if (model) {\n this._focusRequest.next(model.nodeId);\n }\n }\n\n broadcastFocusedNode(nodeId: string): void {\n if (this.focusedNodeId !== nodeId) {\n this.focusedNodeId = nodeId;\n this._focusChange.next(nodeId);\n }\n }\n\n focusParent(model: TreeNodeModel<T>): void {\n if (model) {\n this.focusNode(model.parent);\n }\n }\n\n focusFirstVisibleNode(): void {\n const focusModel = this.rootNodeModels && this.rootNodeModels[0];\n this.focusNode(focusModel);\n }\n\n focusLastVisibleNode(): void {\n this.focusNode(this.findLastVisibleInTree());\n }\n\n focusNodeAbove(model: TreeNodeModel<T>): void {\n this.focusNode(this.findNodeAbove(model));\n }\n\n focusNodeBelow(model: TreeNodeModel<T>): void {\n this.focusNode(this.findNodeBelow(model));\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, Input, Optional } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { IfExpandService } from '../../utils/conditional/if-expanded.service';\nimport { TreeFeaturesService } from './tree-features.service';\nimport { TreeNodeModel } from './models/tree-node.model';\nimport { ClrRecursiveForOfContext } from './recursive-for-of';\nimport { RecursiveTreeNodeModel } from './models/recursive-tree-node.model';\n\n@Component({\n selector: 'clr-recursive-children',\n template: `\n <ng-container *ngIf=\"shouldRender()\">\n <ng-container *ngFor=\"let child of parent?.children || children\">\n <ng-container *ngTemplateOutlet=\"featuresService.recursion.template; context: getContext(child)\"></ng-container>\n </ng-container>\n </ng-container>\n `,\n host: {\n '[attr.role]': '\"group\"', // Safari + VO needs direct relationship between treeitem and group; no element should exist between them\n },\n})\n/**\n * Internal component, do not export!\n * This is part of the hack to get around https://github.com/angular/angular/issues/15998\n */\nexport class RecursiveChildren<T> {\n constructor(public featuresService: TreeFeaturesService<T>, @Optional() private expandService: IfExpandService) {\n if (expandService) {\n this.subscription = this.expandService.expandChange.subscribe(value => {\n if (!value && this.parent && !this.featuresService.eager && this.featuresService.recursion) {\n // In the case of lazy-loading recursive trees, we clear the children on collapse.\n // This is better in case they change between two user interaction, and that way\n // the app itself can decide whether to cache them or not.\n (this.parent as RecursiveTreeNodeModel<T>).clearChildren();\n }\n });\n }\n }\n\n shouldRender() {\n return (\n this.featuresService.recursion &&\n // In the smart case, we eagerly render all the recursive children\n // to make sure two-way bindings for selection are available.\n // They will be hidden with CSS by the parent.\n (this.featuresService.eager || !this.expandService || this.expandService.expanded)\n );\n }\n\n // Offering the option to either give the parent node to recurse potentially lazily,\n // or directly the list of children to display.\n @Input('parent') parent: TreeNodeModel<T>;\n @Input('children') children: TreeNodeModel<T>[];\n\n getContext(node: TreeNodeModel<T>): ClrRecursiveForOfContext<T> {\n return {\n $implicit: node.model,\n clrModel: node,\n };\n }\n\n subscription: Subscription;\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { animate, style, transition, trigger, state } from '@angular/animations';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Inject,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n PLATFORM_ID,\n QueryList,\n SkipSelf,\n ViewChild,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { debounceTime, filter } from 'rxjs/operators';\n\nimport { KeyCodes } from './../../utils/enums/key-codes.enum';\nimport { IfExpandService } from '../../utils/conditional/if-expanded.service';\nimport { keyValidator, preventArrowKeyScroll } from '../../utils/focus/key-focus/util';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { UNIQUE_ID, UNIQUE_ID_PROVIDER } from '../../utils/id-generator/id-generator.service';\nimport { LoadingListener } from '../../utils/loading/loading-listener';\nimport { DeclarativeTreeNodeModel } from './models/declarative-tree-node.model';\nimport { ClrSelectedState } from './models/selected-state.enum';\nimport { TreeNodeModel } from './models/tree-node.model';\nimport { TreeFeaturesService, TREE_FEATURES_PROVIDER } from './tree-features.service';\nimport { TreeFocusManagerService } from './tree-focus-manager.service';\nimport { ClrTreeNodeLink } from './tree-node-link';\n\nconst LVIEW_CONTEXT_INDEX = 8;\n\n@Component({\n selector: 'clr-tree-node',\n templateUrl: './tree-node.html',\n providers: [\n UNIQUE_ID_PROVIDER,\n TREE_FEATURES_PROVIDER,\n IfExpandService,\n { provide: LoadingListener, useExisting: IfExpandService },\n ],\n animations: [\n trigger('toggleChildrenAnim', [\n transition('collapsed => expanded', [style({ height: 0 }), animate(200, style({ height: '*' }))]),\n transition('expanded => collapsed', [style({ height: '*' }), animate(200, style({ height: 0 }))]),\n state('expanded', style({ height: '*', 'overflow-y': 'visible' })),\n state('collapsed', style({ height: 0 })),\n ]),\n ],\n host: {\n '[attr.role]': '\"treeitem\"',\n '[class.clr-tree-node]': 'true',\n },\n})\nexport class ClrTreeNode<T> implements OnInit, OnDestroy {\n STATES = ClrSelectedState;\n private skipEmitChange = false;\n isModelLoading = false;\n\n constructor(\n @Inject(UNIQUE_ID) public nodeId: string,\n @Inject(PLATFORM_ID) private platformId: any,\n @Optional()\n @SkipSelf()\n parent: ClrTreeNode<T>,\n public featuresService: TreeFeaturesService<T>,\n public expandService: IfExpandService,\n public commonStrings: ClrCommonStringsService,\n private focusManager: TreeFocusManagerService<T>,\n injector: Injector\n ) {\n if (this.featuresService.recursion) {\n // I'm completely stuck, we have to hack into private properties until either\n // https://github.com/angular/angular/issues/14935 or https://github.com/angular/angular/issues/15998\n // are fixed\n // This is for non-ivy implementations\n if ((injector as any).view) {\n this._model = (injector as any).view.context.clrModel;\n } else {\n // Ivy puts this on a specific index of a _lView property\n this._model = (injector as any)._lView[LVIEW_CONTEXT_INDEX].clrModel;\n }\n } else {\n // Force cast for now, not sure how to tie the correct type here to featuresService.recursion\n this._model = new DeclarativeTreeNodeModel(parent ? (parent._model as DeclarativeTreeNodeModel<T>) : null);\n }\n this._model.nodeId = this.nodeId;\n }\n\n _model: TreeNodeModel<T>;\n\n isExpandable() {\n if (typeof this.expandable !== 'undefined') {\n return this.expandable;\n }\n return !!this.expandService.expandable || (this._model.children && this._model.children.length > 0);\n }\n\n @Input('clrSelected')\n get selected(): ClrSelectedState | boolean {\n return this._model.selected.value;\n }\n set selected(value: ClrSelectedState | boolean) {\n this.featuresService.selectable = true;\n // Gracefully handle falsy states like null or undefined because it's just easier than answering questions.\n // This shouldn't happen with strict typing on the app's side, but it's not up to us.\n if (value === null || typeof value === 'undefined') {\n value = ClrSelectedState.UNSELECTED;\n }\n // We match booleans to the corresponding ClrSelectedState\n if (typeof value === 'boolean') {\n value = value ? ClrSelectedState.SELECTED : ClrSelectedState.UNSELECTED;\n }\n // We propagate only if the tree is in smart mode, and skip emitting the output when we set the input\n // See https://github.com/vmware/clarity/issues/3073\n this.skipEmitChange = true;\n this._model.setSelected(value, this.featuresService.eager, this.featuresService.eager);\n this.skipEmitChange = false;\n }\n\n @Output('clrSelectedChange') selectedChange = new EventEmitter<ClrSelectedState>(false);\n\n get ariaSelected(): boolean {\n return this.featuresService.selectable ? this._model.selected.value === ClrSelectedState.SELECTED : null;\n }\n\n // Allows the consumer to override our logic deciding if a node is expandable.\n // Useful for recursive trees that don't want to pre-load one level ahead just to know which nodes are expandable.\n @Input('clrExpandable') expandable: boolean | undefined;\n\n // I'm caving on this, for tree nodes I think we can tolerate having a two-way binding on the component\n // rather than enforce the clrIfExpanded structural directive for dynamic cases. Mostly because for the smart\n // case, you can't use a structural directive, it would need to go on an ng-container.\n @Input('clrExpanded')\n get expanded(): boolean {\n return this.expandService.expanded;\n }\n set expanded(value: boolean) {\n this.expandService.expanded = value;\n }\n\n @Output('clrExpandedChange') expandedChange = new EventEmitter<boolean>();\n\n private subscriptions: Subscription[] = [];\n\n contentContainerTabindex = -1;\n @ViewChild('contentContainer', { read: ElementRef, static: true })\n private contentContainer: ElementRef;\n\n ngOnInit() {\n this._model.expanded = this.expanded;\n this.subscriptions.push(\n this._model.selected.pipe(filter(() => !this.skipEmitChange)).subscribe(value => {\n this.selectedChange.emit(value);\n })\n );\n this.subscriptions.push(\n this.expandService.expandChange.subscribe(value => {\n this.expandedChange.emit(value);\n this._model.expanded = value;\n })\n );\n this.subscriptions.push(\n this.focusManager.focusRequest.subscribe(nodeId => {\n if (this.nodeId === nodeId) {\n this.focusTreeNode();\n }\n }),\n this.focusManager.focusChange.subscribe(nodeId => {\n this.checkTabIndex(nodeId);\n })\n );\n\n this.subscriptions.push(\n this._model.loading$.pipe(debounceTime(0)).subscribe(isLoading => (this.isModelLoading = isLoading))\n );\n }\n\n ngOnDestroy() {\n this._model.destroy();\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n // @ContentChild would have been more succinct\n // but it doesn't offer a way to query only an immediate child\n @ContentChildren(ClrTreeNodeLink, { descendants: false })\n private treeNodeLinkList: QueryList<ClrTreeNodeLink>;\n\n get treeNodeLink() {\n return this.treeNodeLinkList && this.treeNodeLinkList.first;\n }\n\n private setTabIndex(value: number) {\n this.contentContainerTabindex = value;\n this.contentContainer.nativeElement.setAttribute('tabindex', value);\n }\n\n private checkTabIndex(nodeId: string): void {\n if (isPlatformBrowser(this.platformId) && this.nodeId !== nodeId && this.contentContainerTabindex !== -1) {\n this.setTabIndex(-1);\n }\n }\n\n focusTreeNode(): void {\n if (isPlatformBrowser(this.platformId) && document.activeElement !== this.contentContainer.nativeElement) {\n this.setTabIndex(0);\n this.contentContainer.nativeElement.focus();\n }\n }\n\n broadcastFocusOnContainer() {\n this.focusManager.broadcastFocusedNode(this.nodeId);\n }\n\n onKeyDown(event: KeyboardEvent) {\n // Two reasons to prevent default behavior:\n // 1. to prevent scrolling on arrow keys\n // 2. Assistive Technology focus differs from Keyboard focus behavior.\n // By default, pressing arrow key makes AT focus go into the nested content of the item.\n preventArrowKeyScroll(event);\n\n // https://www.w3.org/TR/wai-aria-practices-1.1/#keyboard-interaction-22\n switch (keyValidator(event.key)) {\n case KeyCodes.ArrowUp:\n this.focusManager.focusNodeAbove(this._model);\n break;\n case KeyCodes.ArrowDown:\n this.focusManager.focusNodeBelow(this._model);\n break;\n case KeyCodes.ArrowRight:\n this.expandOrFocusFirstChild();\n break;\n case KeyCodes.ArrowLeft:\n this.collapseOrFocusParent();\n break;\n case KeyCodes.Home:\n this.focusManager.focusFirstVisibleNode();\n break;\n case KeyCodes.End:\n this.focusManager.focusLastVisibleNode();\n break;\n case KeyCodes.Enter:\n this.triggerDefaultAction();\n break;\n case KeyCodes.Space:\n // to prevent scrolling on space key in this specific case\n event.preventDefault();\n this.triggerDefaultAction();\n break;\n default:\n break;\n }\n }\n\n private expandOrFocusFirstChild() {\n if (this.expanded) {\n // if the node is already expanded and has children, focus its very first child\n if (this._model.children.length > 0) {\n this.focusManager.focusNodeBelow(this._model);\n }\n } else {\n // we must check if the node is expandable, in order to set .expanded to true from false\n // because we shouldn't set .expanded to true if it's not expandable node\n if (this.isExpandable()) {\n this.expandService.expanded = true;\n }\n }\n }\n\n private collapseOrFocusParent() {\n if (this.expanded) {\n this.expandService.expanded = false;\n } else {\n this.focusManager.focusParent(this._model);\n }\n }\n\n private triggerDefaultAction() {\n if (this.treeNodeLink) {\n this.treeNodeLink.activate();\n } else {\n if (this.featuresService.selectable) {\n this._model.toggleSelection(this.featuresService.eager);\n }\n }\n }\n}\n","<!--\n ~ Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div\n #contentContainer\n role=\"treeitem\"\n class=\"clr-tree-node-content-container\"\n tabindex=\"-1\"\n [attr.aria-expanded]=\"isExpandable() ? expanded : null\"\n [attr.aria-selected]=\"ariaSelected\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"broadcastFocusOnContainer()\"\n>\n <button\n *ngIf=\"isExpandable() && !isModelLoading && !expandService.loading\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"clr-treenode-caret\"\n (click)=\"expandService.toggle();\"\n (focus)=\"focusTreeNode()\"\n >\n <cds-icon\n class=\"clr-treenode-caret-icon\"\n shape=\"angle\"\n [attr.direction]=\"expandService.expanded ? 'down' : 'right'\"\n ></cds-icon>\n </button>\n <div class=\"clr-treenode-spinner-container\" *ngIf=\"expandService.loading || isModelLoading\">\n <span class=\"clr-treenode-spinner spinner\"></span>\n </div>\n <div class=\"clr-checkbox-wrapper clr-treenode-checkbox\" *ngIf=\"featuresService.selectable\">\n <input\n aria-hidden=\"true\"\n type=\"checkbox\"\n id=\"{{nodeId}}-check\"\n class=\"clr-checkbox\"\n [checked]=\"_model.selected.value === STATES.SELECTED\"\n [indeterminate]=\"_model.selected.value === STATES.INDETERMINATE\"\n (change)=\"_model.toggleSelection(featuresService.eager)\"\n (focus)=\"focusTreeNode()\"\n tabindex=\"-1\"\n />\n <label for=\"{{nodeId}}-check\" class=\"clr-control-label\"></label>\n </div>\n <div class=\"clr-treenode-content\" (mousedown)=\"focusTreeNode()\">\n <ng-content></ng-content>\n <div class=\"clr-sr-only\" *ngIf=\"featuresService.selectable\">\n <span *ngIf=\"ariaSelected\"> selected </span>\n <span *ngIf=\"!ariaSelected\"> unselected </span>\n </div>\n </div>\n</div>\n<div\n class=\"clr-treenode-children\"\n [@toggleChildrenAnim]=\"expandService.expanded ? 'expanded' : 'collapsed'\"\n [attr.role]=\"isExpandable() && !featuresService.recursion ? 'group' : null\"\n>\n <ng-content select=\"clr-tree-node\"></ng-content>\n <ng-content select=\"[clrIfExpanded]\"></ng-content>\n <clr-recursive-children [parent]=\"_model\"></clr-recursive-children>\n</div>\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n AfterContentInit,\n Component,\n ContentChildren,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n QueryList,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { TreeFocusManagerService } from './tree-focus-manager.service';\nimport { TreeFeaturesService, TREE_FEATURES_PROVIDER } from './tree-features.service';\nimport { ClrTreeNode } from './tree-node';\n\n@Component({\n selector: 'clr-tree',\n template: `\n <ng-content></ng-content>\n <clr-recursive-children\n *ngIf=\"featuresService.recursion\"\n [children]=\"featuresService.recursion.root\"\n ></clr-recursive-children>\n `,\n providers: [TREE_FEATURES_PROVIDER, TreeFocusManagerService],\n host: {\n '[attr.tabindex]': 'tabindex',\n '[attr.role]': '\"tree\"',\n '[attr.aria-multiselectable]': 'isMultiSelectable',\n },\n})\nexport class ClrTree<T> implements AfterContentInit, OnDestroy {\n constructor(\n public featuresService: TreeFeaturesService<T>,\n private focusManagerService: TreeFocusManagerService<T>,\n private el: ElementRef\n ) {}\n\n private subscriptions: Subscription[] = [];\n\n @Input('clrLazy')\n set lazy(value: boolean) {\n this.featuresService.eager = !value;\n }\n\n tabindex = 0;\n\n get isMultiSelectable() {\n return this.featuresService.selectable && this.rootNodes.length > 0;\n }\n\n @HostListener('focusin', ['$event'])\n onFocusIn(event: FocusEvent) {\n if (event.target === this.el.nativeElement) {\n // After discussing with the team, I've made it so that when the tree receives focus, the first visible node will be focused.\n // This will prevent from the page scrolling abruptly to the first selected node if it exist in a deeply nested tree.\n this.focusManagerService.focusFirstVisibleNode();\n\n // when the first child gets focus,\n // tree should no longer have tabindex of 0;\n delete this.tabindex;\n }\n }\n\n @ContentChildren(ClrTreeNode) private rootNodes: QueryList<ClrTreeNode<T>>;\n\n ngAfterContentInit() {\n this.setRootNodes();\n this.subscriptions.push(\n this.rootNodes.changes.subscribe(() => {\n this.setRootNodes();\n })\n );\n }\n\n private setRootNodes(): void {\n // if node has no parent, it's a root node\n // for recursive tree, this.rootNodes registers also nested children\n // so we have to use filter to extract the ones that are truly root nodes\n this.focusManagerService.rootNodeModels = this.rootNodes.map(node => node._model).filter(node => !node.parent);\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n// We need to make sure people can give us null or undefined children even if they run strict type checking.\nimport { Observable } from 'rxjs';\n\nexport type AsyncArray<T> =\n | T[]\n | null\n | undefined\n | Promise<T[] | null | undefined>\n | Observable<T[] | null | undefined>;\n\nexport function isPromise<T>(o: AsyncArray<T>): o is Promise<T[]> {\n // Shamelessly copied from every open-source project out there.\n return o && typeof (o as any).then === 'function';\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isObservable, Subscription } from 'rxjs';\n\nimport { TreeNodeModel } from './tree-node.model';\nimport { AsyncArray, isPromise } from './async-array';\nimport { TreeFeaturesService } from '../tree-features.service';\n\n/*\n * A recursive model is built received from the app and traversed to create the corresponding components.\n * Recursive = Model dictates the tree node components\n */\nexport class RecursiveTreeNodeModel<T> extends TreeNodeModel<T> {\n constructor(\n model: T,\n parent: RecursiveTreeNodeModel<T> | null,\n private getChildren: (node: T) => AsyncArray<T> | undefined,\n private featuresService: TreeFeaturesService<T> | undefined\n ) {\n super();\n this.model = model;\n this.parent = parent;\n }\n\n parent: RecursiveTreeNodeModel<T> | null;\n\n private childrenFetched = false;\n\n clearChildren() {\n this._children.forEach(child => child.destroy());\n delete this._children;\n this.childrenFetched = false;\n }\n\n fetchChildren() {\n if (this.childrenFetched) {\n return;\n }\n\n const asyncChildren = this.getChildren(this.model);\n if (isPromise(asyncChildren)) {\n this.loading = true;\n asyncChildren.then(raw => {\n this._children = this.wrapChildren(raw);\n this.loading = false;\n });\n } else if (isObservable(asyncChildren)) {\n this.loading = true;\n this.subscription = asyncChildren.subscribe(raw => {\n this._children = this.wrapChildren(raw);\n this.loading = false;\n });\n } else if (asyncChildren) {\n // Synchronous case\n this._children = this.wrapChildren(asyncChildren);\n } else {\n this._children = [];\n }\n this.childrenFetched = true;\n if (this.featuresService) {\n this.featuresService.childrenFetched.next();\n }\n }\n\n private wrapChildren(rawModels: T[]) {\n return rawModels.map(m => new RecursiveTreeNodeModel(m, this, this.getChildren, this.featuresService));\n }\n\n private _children: RecursiveTreeNodeModel<T>[] = [];\n get children(): RecursiveTreeNodeModel<T>[] {\n this.fetchChildren();\n return this._children;\n }\n set children(value: RecursiveTreeNodeModel<T>[]) {\n this._children = value;\n }\n\n private subscription: Subscription;\n\n destroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n super.destroy();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ChangeDetectorRef, Directive, Input, OnChanges, OnDestroy, TemplateRef } from '@angular/core';\nimport { TreeFeaturesService } from './tree-features.service';\nimport { RecursiveTreeNodeModel } from './models/recursive-tree-node.model';\nimport { TreeNodeModel } from './models/tree-node.model';\nimport { AsyncArray } from './models/async-array';\nimport { Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nexport interface ClrRecursiveForOfContext<T> {\n $implicit: T;\n clrModel: TreeNodeModel<T>;\n}\n\n@Directive({ selector: '[clrRecursiveFor][clrRecursiveForOf]' })\nexport class ClrRecursiveForOf<T> implements OnChanges, OnDestroy {\n constructor(\n private template: TemplateRef<ClrRecursiveForOfContext<T>>,\n private featuresService: TreeFeaturesService<T>,\n private cdr: ChangeDetectorRef\n ) {}\n\n // TODO: accept NgIterable<T>\n @Input('clrRecursiveForOf') nodes: T | T[];\n\n // TODO: accept NgIterable<T> return type\n @Input('clrRecursiveForGetChildren') getChildren: (node: T) => AsyncArray<T>;\n\n private childrenFetchSubscription: Subscription;\n\n // I'm using OnChanges instead of OnInit to easily keep up to date with dynamic trees. Maybe optimizable later.\n ngOnChanges() {\n let wrapped: RecursiveTreeNodeModel<T>[];\n if (Array.isArray(this.nodes)) {\n wrapped = this.nodes.map(node => new RecursiveTreeNodeModel(node, null, this.getChildren, this.featuresService));\n } else {\n wrapped = [new RecursiveTreeNodeModel(this.nodes, null, this.getChildren, this.featuresService)];\n }\n if (!this.childrenFetchSubscription) {\n this.childrenFetchSubscription = this.featuresService.childrenFetched.pipe(debounceTime(0)).subscribe(() => {\n this.cdr.detectChanges();\n });\n }\n\n this.featuresService.recursion = {\n template: this.template,\n root: wrapped,\n };\n }\n\n ngOnDestroy() {\n if (this.childrenFetchSubscription) {\n this.childrenFetchSubscription.unsubscribe();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrLoadingModule } from '../../utils/loading/loading.module';\nimport { ClrTreeNode } from './tree-node';\nimport { ClrTree } from './tree';\nimport { ClrRecursiveForOf } from './recursive-for-of';\nimport { RecursiveChildren } from './recursive-children';\nimport { ClrTreeNodeLink } from './tree-node-link';\nimport { angleIcon, ClarityIcons } from '@cds/core/icon';\n\nexport const CLR_TREE_VIEW_DIRECTIVES: Type<any>[] = [ClrTree, ClrTreeNode, ClrRecursiveForOf, ClrTreeNodeLink];\n\n@NgModule({\n imports: [CommonModule, ClrIconModule, ClrLoadingModule],\n declarations: [CLR_TREE_VIEW_DIRECTIVES, RecursiveChildren],\n exports: [CLR_TREE_VIEW_DIRECTIVES],\n})\nexport class ClrTreeViewModule {\n constructor() {\n ClarityIcons.addIcons(angleIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { NgModule } from '@angular/core';\nimport { ClrDatagridModule } from './datagrid/datagrid.module';\nimport { ClrStackViewModule } from './stack-view/stack-view.module';\nimport { ClrTreeViewModule } from './tree-view/tree-view.module';\n\n@NgModule({ exports: [ClrDatagridModule, ClrStackViewModule, ClrTreeViewModule] })\nexport class ClrDataModule {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Observable } from 'rxjs';\nimport { ArrowKeyDirection } from '../arrow-key-direction.enum';\nimport { FocusableItem } from './focusable-item';\n\nexport class Linkers {\n /**\n * Links a set of focusable items to a parent along one direction\n */\n static linkParent(\n items: FocusableItem[],\n parent: FocusableItem | Observable<FocusableItem>,\n direction: ArrowKeyDirection\n ) {\n items.forEach(item => (item[direction] = parent));\n }\n\n /**\n * Double-links a set of focusable items vertically, possibly looping\n */\n static linkVertical(items: FocusableItem[], loop = true) {\n items.forEach((item, index) => {\n if (index > 0) {\n item.up = items[index - 1];\n }\n if (index < items.length - 1) {\n item.down = items[index + 1];\n }\n });\n if (loop && items.length > 1) {\n items[0].up = items[items.length - 1];\n items[items.length - 1].down = items[0];\n }\n }\n}\n\n// Right now I only need the two linkers above, but we can easily add more linkers. A couple examples:\n// export function linkHorizontal(items: FocusableItem[], loop = true);\n// export function linkTable(items: FocusableItem[][]);\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Observable, Observer } from 'rxjs';\n\nexport function wrapObservable<T>(\n observable: Observable<T>,\n onSubscribe?: (observer: Observer<T>) => void,\n onUnsubscribe?: (observer: Observer<T>) => void\n): Observable<T> {\n return Observable.create((observer: Observer<T>) => {\n onSubscribe(observer);\n const subscription = observable.subscribe(observer);\n return () => {\n subscription.unsubscribe();\n if (onUnsubscribe) {\n onUnsubscribe(observer);\n }\n };\n });\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport { Inject, Injectable, Optional, PLATFORM_ID, Renderer2, SkipSelf } from '@angular/core';\nimport { Observable, of, ReplaySubject } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\nimport { ClrPopoverToggleService } from '../../../utils/popover/providers/popover-toggle.service';\nimport { customFocusableItemProvider } from '../../../utils/focus/focusable-item/custom-focusable-item-provider';\nimport { UNIQUE_ID } from '../../../utils/id-generator/id-generator.service';\nimport { ArrowKeyDirection } from '../../../utils/focus/arrow-key-direction.enum';\nimport { FocusService } from '../../../utils/focus/focus.service';\nimport { FocusableItem } from '../../../utils/focus/focusable-item/focusable-item';\nimport { Linkers } from '../../../utils/focus/focusable-item/linkers';\nimport { wrapObservable } from '../../../utils/focus/wrap-observable';\n\n@Injectable()\nexport class DropdownFocusHandler implements FocusableItem {\n constructor(\n @Inject(UNIQUE_ID) public id: string,\n private renderer: Renderer2,\n @SkipSelf()\n @Optional()\n private parent: DropdownFocusHandler,\n private toggleService: ClrPopoverToggleService,\n private focusService: FocusService,\n @Inject(PLATFORM_ID) private platformId: any\n ) {\n this.resetChildren();\n this.moveToFirstItemWhenOpen();\n if (!this.parent) {\n this.handleRootFocus();\n }\n }\n\n private _unlistenFuncs: (() => void)[] = [];\n\n /**\n * If the dropdown was opened by clicking on the trigger, we automatically move to the first item\n */\n moveToFirstItemWhenOpen() {\n this.toggleService.openChange.subscribe(open => {\n if (open && this.toggleService.originalEvent) {\n // Even if we properly waited for ngAfterViewInit, the container still wouldn't be attached to the DOM.\n // So setTimeout is the only way to wait for the container to be ready to move focus to first item.\n setTimeout(() => {\n this.focusService.moveTo(this);\n if (this.parent) {\n this.focusService.move(ArrowKeyDirection.RIGHT);\n } else {\n this.focusService.move(ArrowKeyDirection.DOWN);\n }\n });\n }\n });\n }\n\n private focusBackOnTrigger = false;\n\n /**\n * Focus on the menu when it opens, and focus back on the root trigger when the whole dropdown becomes closed\n */\n handleRootFocus() {\n this.toggleService.openChange.subscribe(open => {\n if (!open) {\n // We reset the state of the focus service both on initialization and when closing.\n this.focusService.reset(this);\n // But we only actively focus the trigger when closing, not on initialization.\n if (this.focusBackOnTrigger) {\n this.focus();\n }\n }\n this.focusBackOnTrigger = open;\n });\n }\n\n private _trigger: HTMLElement;\n get trigger() {\n return this._trigger;\n }\n set trigger(el: HTMLElement) {\n this._trigger = el;\n\n if (this.parent) {\n this._unlistenFuncs.push(\n this.renderer.listen(el, 'keydown.arrowright', event => this.toggleService.toggleWithEvent(event))\n );\n } else {\n this._unlistenFuncs.push(\n this.renderer.listen(el, 'keydown.arrowup', event => this.toggleService.toggleWithEvent(event))\n );\n this._unlistenFuncs.push(\n this.renderer.listen(el, 'keydown.arrowdown', event => this.toggleService.toggleWithEvent(event))\n );\n this.focusService.listenToArrowKeys(el);\n }\n }\n\n private _container: HTMLElement;\n get container() {\n return this._container;\n }\n set container(el: HTMLElement) {\n this._container = el;\n\n // whether root container or not, tab key should always toggle (i.e. close) the container\n this._unlistenFuncs.push(\n this.renderer.listen(el, 'keydown.tab', event => this.toggleService.toggleWithEvent(event))\n );\n\n if (this.parent) {\n // if it's a nested container, pressing esc has the same effect as pressing left key, which closes the current\n // popup and moves up to its parent. Here, we stop propagation so that the parent container\n // doesn't receive the esc keydown\n this._unlistenFuncs.push(\n this.renderer.listen(el, 'keydown.esc', event => {\n this.focusService.move(ArrowKeyDirection.LEFT);\n event.stopPropagation();\n })\n );\n } else {\n // The root container is the only one we register to the focus service, others do not need focus\n this.focusService.registerContainer(el);\n\n // The root container will simply close the container when esc key is pressed\n this._unlistenFuncs.push(\n this.renderer.listen(el, 'keydown.esc', event => this.toggleService.toggleWithEvent(event))\n );\n\n // When the user moves focus outside of the menu, we close the dropdown\n this._unlistenFuncs.push(\n this.renderer.listen(el, 'blur', event => {\n // we clear out any existing focus on the items\n this.children.pipe(take(1)).subscribe(items => items.forEach(item => item.blur()));\n\n // event.relatedTarget is null in IE11. In that case we use document.activeElement which correctly points\n // to the element we want to check. Note that other browsers might point document.activeElement to the\n // wrong element. This is ok, because all the other browsers we support relies on event.relatedTarget.\n const target = event.relatedTarget || document.activeElement;\n\n // If the user clicks on an item which triggers the blur, we don't want to close it since it may open a submenu.\n // In the case of needing to close it (i.e. user selected an item and the dropdown menu is set to close on\n // selection), dropdown-item.ts handles it.\n if (target && isPlatformBrowser(this.platformId)) {\n if (el.contains(target) || target === this.trigger) {\n return;\n }\n }\n // We let the user move focus to where the want, we don't force the focus back on the trigger\n this.focusBackOnTrigger = false;\n this.toggleService.open = false;\n })\n );\n }\n }\n\n focus() {\n if (this.trigger && isPlatformBrowser(this.platformId)) {\n this.trigger.focus();\n }\n }\n blur() {\n if (this.trigger && isPlatformBrowser(this.platformId)) {\n this.trigger.blur();\n }\n }\n\n activate() {\n if (isPlatformBrowser(this.platformId)) {\n this.trigger.click();\n }\n }\n\n private children: ReplaySubject<FocusableItem[]>;\n right?: Observable<FocusableItem>;\n down?: Observable<FocusableItem>;\n up?: Observable<FocusableItem>;\n\n private openAndGetChildren() {\n return wrapObservable(this.children, () => (this.toggleService.open = true));\n }\n private closeAndGetThis() {\n return wrapObservable(of(this), () => (this.toggleService.open = false));\n }\n\n resetChildren() {\n this.children = new ReplaySubject<FocusableItem[]>(1);\n if (this.parent) {\n this.right = this.openAndGetChildren().pipe(map(all => all[0]));\n } else {\n this.down = this.openAndGetChildren().pipe(map(all => all[0]));\n this.up = this.openAndGetChildren().pipe(map(all => all[all.length - 1]));\n }\n }\n\n addChildren(children: FocusableItem[]) {\n Linkers.linkVertical(children);\n if (this.parent) {\n Linkers.linkParent(children, this.closeAndGetThis(), ArrowKeyDirection.LEFT);\n }\n this.children.next(children);\n }\n\n ngOnDestroy() {\n this._unlistenFuncs.forEach((unlisten: () => void) => unlisten());\n this.focusService.detachListeners();\n }\n}\n\nexport const DROPDOWN_FOCUS_HANDLER_PROVIDER = customFocusableItemProvider(DropdownFocusHandler);\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Injectable, Optional, SkipSelf } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class RootDropdownService {\n private _changes: Subject<boolean> = new Subject<boolean>();\n\n get changes(): Observable<boolean> {\n return this._changes.asObservable();\n }\n\n closeMenus(): void {\n this._changes.next(false);\n }\n}\n\nexport function clrRootDropdownFactory(existing: RootDropdownService) {\n return existing || new RootDropdownService();\n}\n\nexport const ROOT_DROPDOWN_PROVIDER = {\n provide: RootDropdownService,\n useFactory: clrRootDropdownFactory,\n deps: [[new Optional(), new SkipSelf(), RootDropdownService]],\n};\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { ChangeDetectorRef, Component, ElementRef, Input, OnDestroy, Optional, SkipSelf } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { POPOVER_HOST_ANCHOR } from '../common/popover-host-anchor.token';\nimport { DROPDOWN_FOCUS_HANDLER_PROVIDER } from './providers/dropdown-focus-handler.service';\nimport { FOCUS_SERVICE_PROVIDER } from '../../utils/focus/focus.service';\n\nimport { ROOT_DROPDOWN_PROVIDER, RootDropdownService } from './providers/dropdown.service';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\n\n@Component({\n selector: 'clr-dropdown',\n template: '<ng-content></ng-content>',\n host: {\n '[class.dropdown]': 'true',\n '[class.open]': 'toggleService.open',\n },\n providers: [\n ROOT_DROPDOWN_PROVIDER,\n { provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef },\n FOCUS_SERVICE_PROVIDER,\n ClrPopoverToggleService,\n DROPDOWN_FOCUS_HANDLER_PROVIDER,\n ],\n})\nexport class ClrDropdown implements OnDestroy {\n private subscriptions: Subscription[] = [];\n\n constructor(\n @SkipSelf()\n @Optional()\n public parent: ClrDropdown,\n public toggleService: ClrPopoverToggleService,\n private cdr: ChangeDetectorRef,\n dropdownService: RootDropdownService\n ) {\n this.subscriptions.push(dropdownService.changes.subscribe(value => (this.toggleService.open = value)));\n this.subscriptions.push(toggleService.openChange.subscribe(() => this.cdr.markForCheck()));\n }\n\n @Input('clrCloseMenuOnItemClick') isMenuClosable = true;\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport { ElementRef, Inject, Injectable, PLATFORM_ID, Renderer2 } from '@angular/core';\nimport { UNIQUE_ID, UNIQUE_ID_PROVIDER } from '../../id-generator/id-generator.service';\nimport { FocusableItem } from './focusable-item';\n\n@Injectable()\nexport class BasicFocusableItem implements FocusableItem {\n constructor(\n @Inject(UNIQUE_ID) public id: string,\n private el: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n @Inject(PLATFORM_ID) private platformId: any\n ) {\n renderer.setAttribute(el.nativeElement, 'id', id);\n renderer.setAttribute(el.nativeElement, 'tabindex', '-1');\n }\n\n disabled = false;\n\n focus() {\n if (isPlatformBrowser(this.platformId)) {\n this.renderer.setAttribute(this.el.nativeElement, 'tabindex', '0');\n this.el.nativeElement.focus();\n this.el.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'nearest' });\n }\n }\n blur() {\n if (isPlatformBrowser(this.platformId)) {\n this.renderer.setAttribute(this.el.nativeElement, 'tabindex', '-1');\n this.el.nativeElement.blur();\n }\n }\n\n activate() {\n if (isPlatformBrowser(this.platformId)) {\n this.el.nativeElement.click();\n }\n }\n}\n\nexport const BASIC_FOCUSABLE_ITEM_PROVIDER = [\n UNIQUE_ID_PROVIDER,\n {\n provide: FocusableItem,\n useClass: BasicFocusableItem,\n },\n];\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { AfterViewInit, Directive, ElementRef, Input, Renderer2 } from '@angular/core';\n\nimport { ClrDropdown } from './dropdown';\nimport { BASIC_FOCUSABLE_ITEM_PROVIDER } from '../../utils/focus/focusable-item/basic-focusable-item.service';\nimport { FocusableItem } from '../../utils/focus/focusable-item/focusable-item';\nimport { RootDropdownService } from './providers/dropdown.service';\n\n@Directive({\n selector: '[clrDropdownItem]',\n host: {\n '[class.disabled]': 'disabled',\n '[class.dropdown-item]': 'true',\n '[attr.role]': '\"menuitem\"',\n '[attr.aria-disabled]': 'disabled',\n '[attr.disabled]': \"(disabled && setByDeprecatedDisabled)? '' : null\",\n '[attr.id]': 'dropdownItemId',\n },\n providers: [BASIC_FOCUSABLE_ITEM_PROVIDER],\n})\nexport class ClrDropdownItem implements AfterViewInit {\n constructor(\n private dropdown: ClrDropdown,\n private el: ElementRef<HTMLElement>,\n private _dropdownService: RootDropdownService,\n private renderer: Renderer2,\n private focusableItem: FocusableItem\n ) {}\n\n private unlisten: () => void;\n public setByDeprecatedDisabled = false;\n\n @Input('clrDisabled')\n set disabled(value: boolean | string) {\n // Empty string attribute evaluates to false but should disable the item, so we need to add a special case for it.\n this.focusableItem.disabled = !!value || value === '';\n }\n\n get disabled() {\n return this.focusableItem.disabled;\n }\n\n /*\n * @deprecated since 3.0, remove in 4.0. the presence of this attribute makes it not-focusable in IE11. Use [clrDisabled] input instead.\n */\n @Input('disabled')\n set disabledDeprecated(value: boolean | string) {\n // Empty string attribute evaluates to false but should disable the item, so we need to add a special case for it.\n this.focusableItem.disabled = !!value || value === '';\n this.setByDeprecatedDisabled = true;\n }\n\n get disabledDeprecated() {\n return this.focusableItem.disabled;\n }\n\n /**\n * Let you overwrite the focusable auto increment id.\n */\n @Input('id')\n set dropdownItemId(value: string) {\n this.focusableItem.id = value;\n }\n get dropdownItemId() {\n return this.focusableItem.id;\n }\n\n ngAfterViewInit() {\n this.unlisten = this.renderer.listen(this.el.nativeElement, 'click', () => this.onDropdownItemClick());\n }\n\n onDropdownItemClick(): void {\n if (this.dropdown.isMenuClosable && !this.el.nativeElement.classList.contains('disabled')) {\n this._dropdownService.closeMenus();\n }\n }\n\n ngOnDestroy() {\n if (this.unlisten) {\n this.unlisten();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n/*\n * Do NOT Angular this up. It assumes we're in the DOM, plays with native elements, ...\n * It could potentially be used as part of @clr/ui as a vanilla Javascript helper.\n */\n\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\nimport { PopoverOptions } from './popover-options.interface';\nexport enum Point {\n RIGHT_CENTER,\n RIGHT_TOP,\n RIGHT_BOTTOM,\n TOP_CENTER,\n TOP_RIGHT,\n TOP_LEFT,\n BOTTOM_CENTER,\n BOTTOM_RIGHT,\n BOTTOM_LEFT,\n LEFT_CENTER,\n LEFT_TOP,\n LEFT_BOTTOM,\n}\n\nconst POSITION_RELATIVE = 'relative';\nconst POSITION_ABSOLUTE = 'absolute';\nconst POSITION_FIXED = 'fixed';\n\nconst OVERFLOW_SCROLL = 'scroll';\nconst OVERFLOW_AUTO = 'auto';\n\nexport class Popover {\n private _scroll: Subject<void>;\n\n constructor(private element: any) {\n // Browsers don't agree with what to do if some of these are not specified, so we set them all to be safe.\n element.style.position = POSITION_ABSOLUTE;\n element.style.top = 0;\n element.style.bottom = 'auto';\n element.style.left = 0;\n element.style.right = 'auto';\n }\n\n // TODO: need a way to account for parameters that change dynamically (positioning).\n public anchor(\n anchor: any,\n anchorAlign: Point,\n popoverAlign: Point,\n { offsetX = 0, offsetY = 0, useAnchorParent = false }: PopoverOptions = {}\n ): Observable<any> {\n // TODO: we are assuming here that the popover is inside or next to the anchor.\n // We'd need to go up the popover tree too otherwise\n\n this.addScrollEventListeners(anchor);\n if (useAnchorParent) {\n anchor = anchor.parentNode;\n }\n // explicitly override anchor's style to static\n anchor.style.position = 'static';\n\n const anchorRect = anchor.getBoundingClientRect();\n const popoverRect = this.element.getBoundingClientRect();\n\n // position of left top corner of anchor + the offset\n let leftDiff: number = anchorRect.left - popoverRect.left + offsetX;\n let topDiff: number = anchorRect.top - popoverRect.top + offsetY;\n\n // first, adjust positioning based on anchor's align point\n switch (anchorAlign) {\n case Point.LEFT_TOP:\n case Point.TOP_LEFT:\n break;\n case Point.TOP_CENTER:\n leftDiff += anchorRect.width / 2;\n break;\n case Point.TOP_RIGHT:\n leftDiff += anchorRect.width;\n break;\n case Point.RIGHT_TOP:\n leftDiff += anchorRect.width;\n break;\n case Point.LEFT_BOTTOM:\n topDiff += anchorRect.height;\n break;\n case Point.BOTTOM_LEFT:\n topDiff += anchorRect.height;\n break;\n case Point.BOTTOM_CENTER:\n topDiff += anchorRect.height;\n leftDiff += anchorRect.width / 2;\n break;\n case Point.BOTTOM_RIGHT:\n topDiff += anchorRect.height;\n leftDiff += anchorRect.width;\n break;\n case Point.RIGHT_BOTTOM:\n topDiff += anchorRect.height;\n leftDiff += anchorRect.width;\n break;\n case Point.LEFT_CENTER:\n topDiff += anchorRect.height / 2;\n break;\n case Point.RIGHT_CENTER:\n topDiff += anchorRect.height / 2;\n leftDiff += anchorRect.width;\n break;\n default:\n }\n\n // second, adjust positioning based on popover's align point\n switch (popoverAlign) {\n case Point.LEFT_TOP:\n case Point.TOP_LEFT:\n break;\n case Point.TOP_CENTER:\n leftDiff -= popoverRect.width / 2;\n break;\n case Point.TOP_RIGHT:\n leftDiff -= popoverRect.width;\n break;\n case Point.RIGHT_TOP:\n leftDiff -= popoverRect.width;\n break;\n case Point.LEFT_BOTTOM:\n topDiff -= popoverRect.height;\n break;\n case Point.BOTTOM_LEFT:\n topDiff -= popoverRect.height;\n break;\n case Point.BOTTOM_CENTER:\n topDiff -= popoverRect.height;\n leftDiff -= popoverRect.width / 2;\n break;\n case Point.BOTTOM_RIGHT:\n topDiff -= popoverRect.height;\n leftDiff -= popoverRect.width;\n break;\n case Point.RIGHT_BOTTOM:\n topDiff -= popoverRect.height;\n leftDiff -= popoverRect.width;\n break;\n case Point.LEFT_CENTER:\n topDiff -= popoverRect.height / 2;\n break;\n case Point.RIGHT_CENTER:\n topDiff -= popoverRect.height / 2;\n leftDiff -= popoverRect.width;\n break;\n default:\n }\n\n // Third, adjust with popover's margins based on the two align points.\n // Here, we make an assumption that popover is primarily positioned outside the\n // anchor with minor offset. Without this assumption, it's impossible to apply\n // the popover's margins in a predictable way. For example, assume that a popover\n // and its anchor are exactly the same size. if a popover is positioned inside the\n // anchor (which is technically possible), then it becomes impossible to know what to do\n // if the popover has a non-zero margin value all around (because applying the margin in\n // all four directions will result in no margin visually, which isn't what we want).\n // Therefore, our logic makes assumptions about margins of interest given the points,\n // and only covers the cases where popover is outside the anchor.\n\n const popoverComputedStyle = getComputedStyle(this.element);\n const marginLeft = parseInt(popoverComputedStyle.marginLeft, 10);\n const marginRight = parseInt(popoverComputedStyle.marginRight, 10);\n const marginTop = parseInt(popoverComputedStyle.marginTop, 10);\n const marginBottom = parseInt(popoverComputedStyle.marginBottom, 10);\n\n switch (anchorAlign) {\n case Point.LEFT_TOP:\n case Point.TOP_LEFT:\n case Point.TOP_RIGHT:\n case Point.RIGHT_TOP:\n if (popoverAlign === Point.BOTTOM_RIGHT || popoverAlign === Point.RIGHT_BOTTOM) {\n topDiff -= marginBottom;\n leftDiff -= marginRight;\n }\n if (popoverAlign === Point.BOTTOM_LEFT || popoverAlign === Point.LEFT_BOTTOM) {\n topDiff -= marginTop;\n leftDiff += marginLeft;\n }\n if (popoverAlign === Point.TOP_LEFT || popoverAlign === Point.LEFT_TOP) {\n topDiff += marginTop;\n leftDiff += marginLeft;\n }\n if (popoverAlign === Point.TOP_RIGHT || popoverAlign === Point.RIGHT_TOP) {\n topDiff += marginTop;\n leftDiff -= marginRight;\n }\n break;\n case Point.LEFT_BOTTOM:\n case Point.BOTTOM_LEFT:\n case Point.BOTTOM_RIGHT:\n case Point.RIGHT_BOTTOM:\n if (popoverAlign === Point.BOTTOM_LEFT || popoverAlign === Point.LEFT_BOTTOM) {\n topDiff -= marginBottom;\n leftDiff += marginLeft;\n }\n if (popoverAlign === Point.BOTTOM_RIGHT || popoverAlign === Point.RIGHT_BOTTOM) {\n topDiff -= marginBottom;\n leftDiff -= marginRight;\n }\n if (popoverAlign === Point.TOP_LEFT || popoverAlign === Point.LEFT_TOP) {\n topDiff += marginTop;\n leftDiff += marginLeft;\n }\n if (popoverAlign === Point.TOP_RIGHT || popoverAlign === Point.RIGHT_TOP) {\n topDiff += marginTop;\n leftDiff -= marginRight;\n }\n break;\n case Point.TOP_CENTER:\n topDiff -= marginBottom;\n leftDiff += marginLeft;\n leftDiff -= marginRight;\n break;\n case Point.BOTTOM_CENTER:\n topDiff += marginTop;\n leftDiff += marginLeft;\n leftDiff -= marginRight;\n break;\n case Point.LEFT_CENTER:\n topDiff += marginTop;\n topDiff -= marginBottom;\n leftDiff -= marginRight;\n break;\n case Point.RIGHT_CENTER:\n topDiff += marginTop;\n topDiff -= marginBottom;\n leftDiff += marginLeft;\n break;\n default:\n }\n\n this.element.style.transform = `translateX(${Math.round(leftDiff)}px) translateY(${Math.round(topDiff)}px)`;\n return this._scroll.asObservable();\n }\n\n public release() {\n this.element.style.transform = '';\n this.removeScrollEventListeners();\n }\n\n private isPositioned(container: any) {\n const position = getComputedStyle(container).position;\n return position === POSITION_RELATIVE || position === POSITION_ABSOLUTE || position === POSITION_FIXED;\n }\n\n /*\n * Containers up to the first positioned one will have an event on scroll\n */\n\n private scrollableElements: HTMLElement[] = [];\n\n private emitScrollEvent() {\n this._scroll.next();\n }\n\n private boundOnScrollListener: any = this.emitScrollEvent.bind(this);\n\n private addScrollEventListeners(e: any) {\n this._scroll = new Subject<void>();\n const anchor: any = e;\n let current: any = e;\n while (current && current !== document) {\n if (this.scrolls(current)) {\n current.addEventListener('scroll', this.boundOnScrollListener);\n this.scrollableElements.push(current);\n }\n if (current !== anchor && this.isPositioned(current)) {\n break;\n }\n current = current.parentNode;\n }\n }\n\n private removeScrollEventListeners() {\n for (const elem of this.scrollableElements) {\n elem.removeEventListener('scroll', this.boundOnScrollListener);\n }\n this.scrollableElements.length = 0;\n if (this._scroll) {\n this._scroll.complete();\n delete this._scroll;\n }\n }\n\n private scrolls(container: any): boolean {\n const computedStyles = getComputedStyle(container);\n return (\n computedStyles.overflowX === OVERFLOW_SCROLL ||\n computedStyles.overflowX === OVERFLOW_AUTO ||\n computedStyles.overflowY === OVERFLOW_SCROLL ||\n computedStyles.overflowY === OVERFLOW_AUTO\n );\n }\n}\n","/*\n * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport {\n AfterViewChecked,\n ElementRef,\n HostBinding,\n Injector,\n OnDestroy,\n Renderer2,\n SkipSelf,\n Directive,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\n\nimport { Point, Popover } from './popover';\nimport { PopoverOptions } from './popover-options.interface';\n\n// Literally any annotation would work here, but writing our own @HoneyBadger annotation feels overkill.\n@Directive()\nexport abstract class AbstractPopover implements AfterViewChecked, OnDestroy {\n constructor(injector: Injector, @SkipSelf() protected parentHost: ElementRef) {\n this.el = injector.get(ElementRef);\n this.toggleService = injector.get(ClrPopoverToggleService);\n this.renderer = injector.get(Renderer2);\n // Default anchor is the parent host\n this.anchorElem = parentHost.nativeElement;\n\n this.popoverInstance = new Popover(this.el.nativeElement);\n this.subscription = this.toggleService.openChange.subscribe(change => {\n if (change) {\n this.anchor();\n this.attachESCListener();\n } else {\n this.release();\n this.detachESCListener();\n }\n });\n if (this.toggleService.open) {\n this.anchor();\n this.attachESCListener();\n }\n }\n\n protected el: ElementRef;\n protected toggleService: ClrPopoverToggleService;\n protected renderer: Renderer2;\n\n private popoverInstance: Popover;\n private subscription: Subscription;\n\n private updateAnchor = false;\n\n protected anchorElem: any;\n protected anchorPoint: Point;\n protected popoverPoint: Point;\n protected popoverOptions: PopoverOptions = {};\n\n protected ignoredElement: any;\n\n protected anchor() {\n this.updateAnchor = true;\n }\n\n protected release() {\n this.detachOutsideClickListener();\n this.popoverInstance.release();\n }\n\n ngAfterViewChecked() {\n if (this.updateAnchor) {\n this.updateAnchor = false;\n this.popoverInstance\n .anchor(this.anchorElem, this.anchorPoint, this.popoverPoint, this.popoverOptions)\n .subscribe(() => {\n // if a scroll event is detected, close the popover\n this.toggleService.open = false;\n });\n this.attachOutsideClickListener();\n }\n }\n\n ngOnDestroy() {\n this.release();\n this.detachESCListener();\n this.subscription.unsubscribe();\n }\n\n /*\n * Fallback to hide when *clrIfOpen is not being used\n */\n\n @HostBinding('class.is-off-screen')\n get isOffScreen() {\n return this.toggleService.open ? false : true;\n }\n\n /*\n * Until https://github.com/angular/angular/issues/8785 is supported, we don't have any way to instantiate\n * a separate directive on the host. So let's do dirty but performant for now.\n */\n public closeOnOutsideClick = false;\n private documentESCListener: () => void;\n\n private attachESCListener(): void {\n if (!this.popoverOptions.ignoreGlobalESCListener) {\n this.documentESCListener = this.renderer.listen('document', 'keydown', event => {\n if (event && event.key) {\n if (event.key === 'Escape' || event.key === 'Esc') {\n this.toggleService.open = false;\n }\n }\n });\n }\n }\n\n private detachESCListener(): void {\n if (this.documentESCListener) {\n this.documentESCListener();\n delete this.documentESCListener;\n }\n }\n\n private closeOnOutsideClickCallback = event => {\n // The anchor element containing the click event origin means, the click wasn't triggered outside.\n if (this.anchorElem.contains(event.target)) {\n return;\n }\n this.toggleService.open = false;\n };\n\n private attachOutsideClickListener() {\n if (this.closeOnOutsideClick && this.toggleService.open) {\n if (document && document.addEventListener) {\n // To listen outside click, the listener should catch the event during the capturing phase.\n // We have to do this ugly document check as Renderer2.listen doesn't allow passive/useCapture listen.\n document.addEventListener('click', this.closeOnOutsideClickCallback, true);\n }\n }\n }\n\n private detachOutsideClickListener() {\n if (this.closeOnOutsideClick) {\n if (document && document.removeEventListener) {\n document.removeEventListener('click', this.closeOnOutsideClickCallback, true);\n }\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport {\n AfterContentInit,\n Component,\n ContentChildren,\n ElementRef,\n Inject,\n Injector,\n Input,\n OnDestroy,\n Optional,\n QueryList,\n SkipSelf,\n} from '@angular/core';\nimport { AbstractPopover } from '../common/abstract-popover';\nimport { Point } from '../common/popover';\nimport { POPOVER_HOST_ANCHOR } from '../common/popover-host-anchor.token';\nimport { DropdownFocusHandler } from './providers/dropdown-focus-handler.service';\nimport { FocusableItem } from '../../utils/focus/focusable-item/focusable-item';\n\n@Component({\n selector: 'clr-dropdown-menu',\n template: ` <ng-content></ng-content> `,\n host: {\n '[class.dropdown-menu]': 'true',\n '[attr.role]': '\"menu\"',\n },\n})\nexport class ClrDropdownMenu extends AbstractPopover implements AfterContentInit, OnDestroy {\n constructor(\n injector: Injector,\n @Optional()\n @Inject(POPOVER_HOST_ANCHOR)\n parentHost: ElementRef<HTMLElement>,\n @Optional()\n @SkipSelf()\n nested: ClrDropdownMenu,\n focusHandler: DropdownFocusHandler\n ) {\n if (!parentHost) {\n throw new Error('clr-dropdown-menu should only be used inside of a clr-dropdown');\n }\n super(injector, parentHost);\n if (!nested) {\n // Default positioning for normal dropdown is bottom-left\n this.anchorPoint = Point.BOTTOM_LEFT;\n this.popoverPoint = Point.LEFT_TOP;\n } else {\n // Default positioning for nested dropdown is right-top\n this.anchorPoint = Point.RIGHT_TOP;\n this.popoverPoint = Point.LEFT_TOP;\n }\n this.popoverOptions.allowMultipleOpen = true;\n this.popoverOptions.ignoreGlobalESCListener = true;\n this.closeOnOutsideClick = true;\n this.focusHandler = focusHandler;\n }\n\n @Input('clrPosition')\n set position(position: string) {\n // set the popover values based on menu position\n switch (position) {\n case 'top-right':\n this.anchorPoint = Point.TOP_RIGHT;\n this.popoverPoint = Point.RIGHT_BOTTOM;\n break;\n case 'top-left':\n this.anchorPoint = Point.TOP_LEFT;\n this.popoverPoint = Point.LEFT_BOTTOM;\n break;\n case 'bottom-right':\n this.anchorPoint = Point.BOTTOM_RIGHT;\n this.popoverPoint = Point.RIGHT_TOP;\n break;\n case 'bottom-left':\n this.anchorPoint = Point.BOTTOM_LEFT;\n this.popoverPoint = Point.LEFT_TOP;\n break;\n case 'right-top':\n this.anchorPoint = Point.RIGHT_TOP;\n this.popoverPoint = Point.LEFT_TOP;\n break;\n case 'right-bottom':\n this.anchorPoint = Point.RIGHT_BOTTOM;\n this.popoverPoint = Point.LEFT_BOTTOM;\n break;\n case 'left-top':\n this.anchorPoint = Point.LEFT_TOP;\n this.popoverPoint = Point.RIGHT_TOP;\n break;\n case 'left-bottom':\n this.anchorPoint = Point.LEFT_BOTTOM;\n this.popoverPoint = Point.RIGHT_BOTTOM;\n break;\n default:\n this.anchorPoint = Point.BOTTOM_LEFT;\n this.popoverPoint = Point.LEFT_TOP;\n break;\n }\n }\n\n private focusHandler: DropdownFocusHandler;\n @ContentChildren(FocusableItem) items: QueryList<FocusableItem>;\n\n ngAfterContentInit() {\n this.focusHandler.container = this.el.nativeElement;\n this.items.changes.subscribe(() => this.focusHandler.addChildren(this.items.toArray()));\n // I saw this on GitHub as a solution to avoid code duplication because of missed QueryList changes\n this.items.notifyOnChanges();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n this.focusHandler.resetChildren();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Directive, ElementRef, HostListener } from '@angular/core';\n\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\n\nimport { ClrDropdown } from './dropdown';\nimport { DropdownFocusHandler } from './providers/dropdown-focus-handler.service';\n\n@Directive({\n // We support both selectors for legacy reasons\n selector: '[clrDropdownTrigger],[clrDropdownToggle]',\n host: {\n '[class.dropdown-toggle]': 'isRootLevelToggle',\n '[class.dropdown-item]': '!isRootLevelToggle',\n '[class.expandable]': '!isRootLevelToggle',\n '[class.active]': 'active',\n '[attr.aria-haspopup]': '\"menu\"',\n '[attr.aria-expanded]': 'active',\n },\n})\nexport class ClrDropdownTrigger {\n public isRootLevelToggle = true;\n\n constructor(\n dropdown: ClrDropdown,\n private toggleService: ClrPopoverToggleService,\n el: ElementRef<HTMLElement>,\n focusHandler: DropdownFocusHandler\n ) {\n // if the containing dropdown has a parent, then this is not the root level one\n if (dropdown.parent) {\n this.isRootLevelToggle = false;\n }\n focusHandler.trigger = el.nativeElement;\n }\n\n get active(): boolean {\n return this.toggleService.open;\n }\n\n @HostListener('click', ['$event'])\n onDropdownTriggerClick(event: any): void {\n this.toggleService.toggleWithEvent(event);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrConditionalModule } from '../../utils/conditional/conditional.module';\n\nimport { ClrDropdown } from './dropdown';\nimport { ClrDropdownItem } from './dropdown-item';\nimport { ClrDropdownMenu } from './dropdown-menu';\nimport { ClrDropdownTrigger } from './dropdown-trigger';\n\nexport const CLR_DROPDOWN_DIRECTIVES: Type<any>[] = [ClrDropdown, ClrDropdownMenu, ClrDropdownTrigger, ClrDropdownItem];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [CLR_DROPDOWN_DIRECTIVES],\n exports: [CLR_DROPDOWN_DIRECTIVES, ClrConditionalModule, ClrIconModule],\n})\nexport class ClrDropdownModule {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n// @TODO Make this an enum\nexport const ALERT_TYPES: string[] = ['info', 'warning', 'danger', 'success'];\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\n\nimport { AlertInfoObject } from '../utils/alert-info-object';\nimport { ALERT_TYPES } from '../utils/alert-types';\nimport { ClrCommonStringsService } from '../../../utils/i18n/common-strings.service';\n\n@Injectable()\nexport class AlertIconAndTypesService {\n constructor(private commonStrings: ClrCommonStringsService) {}\n\n private defaultIconShape = 'info-circle';\n private _alertIconShape = '';\n private _alertType = 'info';\n\n get alertType(): string {\n return this._alertType;\n }\n set alertType(val: string) {\n if (ALERT_TYPES.indexOf(val) > -1) {\n this._alertType = val;\n }\n }\n\n get alertIconShape(): string {\n if ('' === this._alertIconShape) {\n return this.iconInfoFromType(this._alertType).shape;\n }\n return this._alertIconShape;\n }\n set alertIconShape(val: string) {\n if (!val) {\n this._alertIconShape = '';\n } else if (val !== this._alertIconShape) {\n this._alertIconShape = val;\n }\n }\n\n get alertIconTitle(): string {\n return this.iconInfoFromType(this._alertType).title;\n }\n\n public iconInfoFromType(type: string): AlertInfoObject {\n const returnObj = { shape: '', cssClass: '', title: '' };\n\n switch (type) {\n case 'warning':\n returnObj.shape = 'exclamation-triangle';\n returnObj.cssClass = 'alert-warning';\n returnObj.title = this.commonStrings.keys.warning;\n break;\n case 'danger':\n returnObj.shape = 'exclamation-circle';\n returnObj.cssClass = 'alert-danger';\n returnObj.title = this.commonStrings.keys.danger;\n break;\n case 'success':\n returnObj.shape = 'check-circle';\n returnObj.cssClass = 'alert-success';\n returnObj.title = this.commonStrings.keys.success;\n break;\n default:\n returnObj.shape = this.defaultIconShape;\n returnObj.cssClass = 'alert-info';\n returnObj.title = this.commonStrings.keys.info;\n break;\n }\n\n return returnObj;\n }\n}\n","/*\n * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Injectable, QueryList } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { ClrAlert } from '../alert';\n\n@Injectable()\nexport class MultiAlertService {\n private subscription: Subscription;\n\n private allAlerts: QueryList<ClrAlert>;\n\n /**\n * The Observable that lets other classes subscribe to changes\n */\n private _change = new Subject<number>();\n public get changes(): Observable<number> {\n return this._change.asObservable();\n }\n\n private _current: number;\n\n get current() {\n return this._current;\n }\n set current(index: number) {\n if (index !== this._current) {\n this._current = index;\n this._change.next(index);\n }\n }\n\n get activeAlerts() {\n return this.allAlerts && this.allAlerts.filter(alert => !alert._closed);\n }\n\n get currentAlert() {\n return this.activeAlerts && this.activeAlerts[this.current];\n }\n\n set currentAlert(alert: ClrAlert) {\n this.current = this.activeAlerts.indexOf(alert);\n }\n\n get count() {\n return (this.activeAlerts && this.activeAlerts.length) || 0;\n }\n\n manage(alerts: QueryList<ClrAlert>) {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n this.allAlerts = alerts;\n // After receiving alerts' QueryList,\n // we are picking index 0 as current by default if a user hasn't any index\n this.current = typeof this._current === 'number' ? this._current : 0;\n // we have to also broadcast that initial index\n this._change.next(this.current);\n\n this.subscription = this.allAlerts.changes.subscribe(() => {\n if (this.current >= this.allAlerts.length) {\n this.current = Math.max(0, this.allAlerts.length - 1);\n }\n });\n }\n\n next() {\n this._current = this.current === this.activeAlerts.length - 1 ? 0 : this.current + 1;\n this._change.next(this._current);\n }\n\n previous() {\n if (this.activeAlerts.length === 0) {\n return;\n }\n this._current = this.current === 0 ? this.activeAlerts.length - 1 : this.current - 1;\n this._change.next(this._current);\n }\n\n open() {\n if (this.activeAlerts.length === 0) {\n return;\n }\n\n if (!this.currentAlert) {\n this._current = 0;\n }\n\n this._change.next(this._current);\n }\n\n close(isCurrentAlert: boolean) {\n if (this.activeAlerts.length === 0) {\n return;\n }\n\n if (isCurrentAlert) {\n this._current = Math.max(0, this.current - 1);\n }\n\n this._change.next(this._current);\n }\n\n destroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { ChangeDetectorRef, Component, EventEmitter, Input, Optional, Output, OnInit, OnDestroy } from '@angular/core';\n\n// providers\nimport { AlertIconAndTypesService } from './providers/icon-and-types.service';\nimport { MultiAlertService } from './providers/multi-alert.service';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'clr-alert',\n providers: [AlertIconAndTypesService],\n templateUrl: './alert.html',\n styles: [':host { display: block; }'],\n})\nexport class ClrAlert implements OnInit, OnDestroy {\n private subscriptions: Subscription[] = [];\n\n constructor(\n private iconService: AlertIconAndTypesService,\n private cdr: ChangeDetectorRef,\n @Optional() private multiAlertService: MultiAlertService,\n private commonStrings: ClrCommonStringsService\n ) {}\n\n ngOnInit() {\n if (this.multiAlertService) {\n this.subscriptions.push(\n this.multiAlertService.changes.subscribe(() => {\n this.hidden = this.multiAlertService.currentAlert !== this;\n })\n );\n }\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n @Input('clrAlertSizeSmall') isSmall = false;\n @Input('clrAlertClosable') closable = true;\n @Input('clrAlertAppLevel') isAppLevel = false;\n\n // Aria\n @Input() clrCloseButtonAriaLabel: string = this.commonStrings.keys.alertCloseButtonAriaLabel;\n\n _closed = false;\n @Input('clrAlertClosed') set closed(value: boolean) {\n if (value && !this._closed) {\n this.close();\n } else if (!value && this._closed) {\n this.open();\n }\n }\n @Output('clrAlertClosedChange') _closedChanged: EventEmitter<boolean> = new EventEmitter<boolean>(false);\n\n @Input('clrAlertType')\n set alertType(val: string) {\n this.iconService.alertType = val;\n }\n\n get alertType(): string {\n return this.iconService.alertType;\n }\n\n @Input('clrAlertIcon')\n set alertIconShape(value: string) {\n this.iconService.alertIconShape = value;\n }\n\n get alertClass(): string {\n return this.iconService.iconInfoFromType(this.iconService.alertType).cssClass;\n }\n\n private _hidden: boolean;\n\n set hidden(value: boolean) {\n if (value !== this._hidden) {\n this._hidden = value;\n this.cdr.detectChanges();\n }\n }\n\n get hidden() {\n return this._hidden;\n }\n\n close(): void {\n if (!this.closable) {\n return;\n }\n const isCurrentAlert = this.multiAlertService?.currentAlert === this;\n this._closed = true;\n if (this.multiAlertService) {\n this.multiAlertService.close(isCurrentAlert);\n }\n this._closedChanged.emit(true);\n }\n\n open(): void {\n this._closed = false;\n if (this.multiAlertService) {\n this.multiAlertService.open();\n }\n this._closedChanged.emit(false);\n }\n}\n","<!--\n ~ Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div\n *ngIf=\"!_closed\"\n class=\"alert\"\n [ngClass]=\"alertClass\"\n [class.alert-hidden]=\"hidden\"\n [class.alert-sm]=\"isSmall\"\n [class.alert-app-level]=\"isAppLevel\"\n>\n <div class=\"alert-items\">\n <ng-content></ng-content>\n </div>\n <button type=\"button\" class=\"close\" *ngIf=\"closable\" (click)=\"close()\" [attr.aria-label]=\"clrCloseButtonAriaLabel\">\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n</div>\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\nimport { AlertIconAndTypesService } from './providers/icon-and-types.service';\n\n@Component({\n selector: 'clr-alert-item',\n template: `\n <div class=\"alert-icon-wrapper\">\n <cds-icon\n class=\"alert-icon\"\n [attr.shape]=\"iconService.alertIconShape\"\n [attr.title]=\"iconService.alertIconTitle\"\n ></cds-icon>\n </div>\n <ng-content></ng-content>\n `,\n host: { class: 'alert-item' },\n})\nexport class ClrAlertItem {\n constructor(public iconService: AlertIconAndTypesService) {}\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrAlert } from './alert';\nimport { MultiAlertService } from './providers/multi-alert.service';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\n\n@Component({\n selector: 'clr-alerts-pager',\n templateUrl: './alerts-pager.html',\n host: { '[class.alerts-pager]': 'true' },\n})\nexport class ClrAlertsPager implements OnInit, OnDestroy {\n private multiAlertServiceChanges: Subscription;\n\n /**\n * Input/Output to support two way binding on current alert instance\n */\n @Input('clrCurrentAlert')\n set currentAlert(alert: ClrAlert) {\n if (alert) {\n this.multiAlertService.currentAlert = alert;\n }\n }\n get currentAlert() {\n return this.multiAlertService.currentAlert;\n }\n\n @Output('clrCurrentAlertChange') currentAlertChange = new EventEmitter<ClrAlert>(false);\n\n /**\n * Input/Output to support two way binding on current alert index\n */\n @Input('clrCurrentAlertIndex')\n set currentAlertIndex(index: number) {\n this.multiAlertService.current = index;\n }\n get currentAlertIndex() {\n return this.multiAlertService.current;\n }\n\n @Output('clrCurrentAlertIndexChange') currentAlertIndexChange = new EventEmitter<number>();\n\n constructor(public multiAlertService: MultiAlertService, public commonStrings: ClrCommonStringsService) {}\n\n ngOnInit() {\n this.multiAlertServiceChanges = this.multiAlertService.changes.subscribe(index => {\n this.currentAlertIndexChange.emit(index);\n this.currentAlertChange.emit(this.multiAlertService.activeAlerts[index]);\n });\n }\n\n pageUp() {\n this.multiAlertService.next();\n }\n\n pageDown() {\n this.multiAlertService.previous();\n }\n\n ngOnDestroy() {\n this.multiAlertServiceChanges.unsubscribe();\n }\n}\n","<!--\n ~ Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div class=\"alerts-pager-control\">\n <div class=\"alerts-page-down\">\n <button class=\"alerts-pager-button\" (click)=\"pageDown()\">\n <cds-icon shape=\"angle\" direction=\"left\" [attr.title]=\"commonStrings.keys.previous\"></cds-icon>\n </button>\n </div>\n <div class=\"alerts-pager-text\">{{this.multiAlertService.current+1}} / {{this.multiAlertService.count}}</div>\n <div class=\"alerts-page-up\">\n <button class=\"alerts-pager-button\" (click)=\"pageUp()\">\n <cds-icon shape=\"angle\" direction=\"right\" [attr.title]=\"commonStrings.keys.next\"></cds-icon>\n </button>\n </div>\n</div>\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport {\n AfterContentInit,\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n QueryList,\n} from '@angular/core';\nimport { ClrAlert } from './alert';\nimport { MultiAlertService } from './providers/multi-alert.service';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'clr-alerts',\n templateUrl: './alerts.html',\n providers: [MultiAlertService],\n host: {\n '[class.alerts]': 'true',\n '[class.alert-danger]': \"this.currentAlertType == 'danger'\",\n '[class.alert-info]': \"this.currentAlertType == 'info'\",\n '[class.alert-success]': \"this.currentAlertType == 'success'\",\n '[class.alert-warning]': \"this.currentAlertType == 'warning'\",\n },\n styles: [':host { display: block }'],\n})\nexport class ClrAlerts implements AfterContentInit, OnDestroy {\n private subscriptions: Subscription[] = [];\n\n @ContentChildren(ClrAlert)\n set allAlerts(value: QueryList<ClrAlert>) {\n this.multiAlertService.manage(value); // provide alerts\n }\n\n /**\n * Input/Output to support two way binding on current alert index\n */\n @Input('clrCurrentAlertIndex')\n public set _inputCurrentIndex(index: number) {\n if (Number.isInteger(index) && index >= 0) {\n this.multiAlertService.current = index;\n }\n }\n\n @Output('clrCurrentAlertIndexChange') public currentAlertIndexChange = new EventEmitter<number>(false);\n\n set currentAlertIndex(index: number) {\n this.multiAlertService.current = index;\n }\n get currentAlertIndex() {\n return this.multiAlertService.current;\n }\n\n /**\n * Input/Output to support two way binding on current alert instance\n */\n @Input('clrCurrentAlert')\n set currentAlert(alert: ClrAlert) {\n if (alert) {\n this.multiAlertService.currentAlert = alert;\n }\n }\n get currentAlert() {\n return this.multiAlertService.currentAlert;\n }\n @Output('clrCurrentAlertChange') public currentAlertChange = new EventEmitter<ClrAlert>(false);\n\n /**\n * Ensure we are only dealing with alerts that have not been closed yet\n */\n get alerts() {\n return this.allAlerts.filter(alert => {\n return alert.hidden === false;\n });\n }\n\n get currentAlertType(): string {\n if (this.multiAlertService.currentAlert) {\n return this.multiAlertService.currentAlert.alertType;\n }\n return '';\n }\n\n constructor(public multiAlertService: MultiAlertService) {}\n\n ngAfterContentInit() {\n this.subscriptions.push(\n this.multiAlertService.changes.subscribe(index => {\n this.currentAlertIndexChange.next(index);\n this.currentAlertChange.next(this.multiAlertService.currentAlert);\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.multiAlertService.destroy();\n }\n}\n","<!--\n ~ Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<clr-alerts-pager *ngIf=\"multiAlertService.count > 1\" [clrCurrentAlertIndex]=\"currentAlertIndex\"> </clr-alerts-pager>\n<ng-content select=\"clr-alert\"></ng-content>\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive } from '@angular/core';\n\n/**\n * @remark\n * This directive is used only of selectin alert text.\n */\n@Directive({\n selector: '.alert-text',\n})\nexport class ClrAlertText {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrDropdownModule } from '../../popover/dropdown/dropdown.module';\n\nimport { ClrAlert } from './alert';\nimport { ClrAlertItem } from './alert-item';\nimport { ClrAlerts } from './alerts';\nimport { ClrAlertsPager } from './alerts-pager';\nimport { ClrAlertText } from './alert-text';\nimport {\n infoCircleIcon,\n checkCircleIcon,\n ClarityIcons,\n exclamationCircleIcon,\n exclamationTriangleIcon,\n windowCloseIcon,\n} from '@cds/core/icon';\n\nexport const CLR_ALERT_DIRECTIVES: Type<any>[] = [ClrAlert, ClrAlertItem, ClrAlerts, ClrAlertsPager, ClrAlertText];\n\n@NgModule({\n imports: [CommonModule, ClrIconModule, ClrDropdownModule],\n declarations: [CLR_ALERT_DIRECTIVES],\n exports: [CLR_ALERT_DIRECTIVES],\n})\nexport class ClrAlertModule {\n constructor() {\n ClarityIcons.addIcons(\n checkCircleIcon,\n infoCircleIcon,\n exclamationCircleIcon,\n exclamationTriangleIcon,\n windowCloseIcon\n );\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { NgModule } from '@angular/core';\nimport { ClrAlertModule } from './alert/alert.module';\n\n@NgModule({ exports: [ClrAlertModule] })\nexport class ClrEmphasisModule {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport class ResponsiveNavCodes {\n public static NAV_LEVEL_1 = 1;\n public static NAV_LEVEL_2 = 2;\n public static NAV_CLOSE_ALL = 'NAV_CLOSE_ALL';\n public static NAV_OPEN = 'NAV_OPEN';\n public static NAV_CLOSE = 'NAV_CLOSE';\n public static NAV_TOGGLE = 'NAV_TOGGLE';\n public static NAV_CLASS_HAMBURGER_MENU = 'open-hamburger-menu';\n public static NAV_CLASS_OVERFLOW_MENU = 'open-overflow-menu';\n public static NAV_CLASS_TRIGGER_1 = 'header-hamburger-trigger';\n public static NAV_CLASS_TRIGGER_2 = 'header-overflow-trigger';\n public static NAV_CLASS_LEVEL_1 = 'clr-nav-level-1';\n public static NAV_CLASS_LEVEL_2 = 'clr-nav-level-2';\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport class ResponsiveNavControlMessage {\n constructor(private _controlCode: string, private _navLevel: number) {}\n\n get controlCode(): string {\n return this._controlCode;\n }\n\n get navLevel(): number {\n return this._navLevel;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ReplaySubject, Subject } from 'rxjs';\n\nimport { ResponsiveNavCodes } from '../responsive-nav-codes';\nimport { ResponsiveNavControlMessage } from '../responsive-nav-control-message';\n\n@Injectable({ providedIn: 'root' })\nexport class ResponsiveNavigationService {\n public responsiveNavList: number[] = [];\n private registerNavSubject = new ReplaySubject<number[]>();\n private controlNavSubject = new Subject<ResponsiveNavControlMessage>();\n\n get registeredNavs(): Observable<number[]> {\n return this.registerNavSubject.asObservable();\n }\n\n get navControl(): Observable<ResponsiveNavControlMessage> {\n return this.controlNavSubject.asObservable();\n }\n\n constructor() {\n this.closeAllNavs(); // We start with all navs closed\n }\n\n registerNav(navLevel: number): void {\n if (!navLevel || this.isNavRegistered(navLevel)) {\n return;\n }\n this.responsiveNavList.push(navLevel);\n this.registerNavSubject.next(this.responsiveNavList);\n }\n\n isNavRegistered(navLevel: number): boolean {\n if (this.responsiveNavList.indexOf(navLevel) > -1) {\n console.error('Multiple clr-nav-level ' + navLevel + ' attributes found. Please make sure that only one exists');\n return true;\n }\n return false;\n }\n\n unregisterNav(navLevel: number) {\n const index = this.responsiveNavList.indexOf(navLevel);\n if (index > -1) {\n this.responsiveNavList.splice(index, 1);\n this.registerNavSubject.next(this.responsiveNavList);\n }\n }\n\n sendControlMessage(controlCode: string, navLevel: number) {\n const message: ResponsiveNavControlMessage = new ResponsiveNavControlMessage(controlCode, navLevel);\n this.controlNavSubject.next(message);\n }\n\n closeAllNavs() {\n const message: ResponsiveNavControlMessage = new ResponsiveNavControlMessage(\n ResponsiveNavCodes.NAV_CLOSE_ALL,\n -999\n );\n this.controlNavSubject.next(message);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Directive, ElementRef, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ResponsiveNavigationService } from '../nav/providers/responsive-navigation.service';\nimport { ResponsiveNavCodes } from '../nav/responsive-nav-codes';\nimport { ResponsiveNavControlMessage } from '../nav/responsive-nav-control-message';\n\n@Directive({ selector: 'clr-main-container', host: { '[class.main-container]': 'true' } })\nexport class ClrMainContainer implements OnDestroy, OnInit {\n private _subscription: Subscription;\n private _classList: DOMTokenList;\n\n constructor(private elRef: ElementRef, private responsiveNavService: ResponsiveNavigationService) {}\n\n ngOnInit() {\n this._classList = this.elRef.nativeElement.classList;\n this._subscription = this.responsiveNavService.navControl.subscribe({\n next: (message: ResponsiveNavControlMessage) => {\n this.processMessage(message);\n },\n });\n }\n\n processMessage(message: ResponsiveNavControlMessage): void {\n let navClass: string = ResponsiveNavCodes.NAV_CLASS_HAMBURGER_MENU;\n if (message.controlCode === ResponsiveNavCodes.NAV_CLOSE_ALL) {\n this._classList.remove(ResponsiveNavCodes.NAV_CLASS_HAMBURGER_MENU);\n this._classList.remove(ResponsiveNavCodes.NAV_CLASS_OVERFLOW_MENU);\n } else if (message.navLevel === ResponsiveNavCodes.NAV_LEVEL_1) {\n this.controlNav(message.controlCode, navClass);\n } else if (message.navLevel === ResponsiveNavCodes.NAV_LEVEL_2) {\n navClass = ResponsiveNavCodes.NAV_CLASS_OVERFLOW_MENU;\n this.controlNav(message.controlCode, navClass);\n }\n }\n\n controlNav(controlCode: string, navClass: string): void {\n if (controlCode === ResponsiveNavCodes.NAV_OPEN) {\n this._classList.add(navClass);\n } else if (controlCode === ResponsiveNavCodes.NAV_CLOSE) {\n this._classList.remove(navClass);\n } else if (controlCode === ResponsiveNavCodes.NAV_TOGGLE) {\n this._classList.toggle(navClass);\n }\n }\n\n ngOnDestroy() {\n this._subscription.unsubscribe();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrMainContainer } from './main-container';\n\nexport const CLR_LAYOUT_DIRECTIVES: Type<any>[] = [ClrMainContainer];\n\n@NgModule({\n imports: [CommonModule, ClrIconModule],\n declarations: [CLR_LAYOUT_DIRECTIVES],\n exports: [CLR_LAYOUT_DIRECTIVES],\n})\nexport class ClrMainContainerModule {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Directive } from '@angular/core';\nimport { WillyWonka } from '../../../utils/chocolate/willy-wonka';\n\n@Directive({ selector: 'clr-main-container' })\nexport class MainContainerWillyWonka extends WillyWonka {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { ChangeDetectorRef, Directive, Optional } from '@angular/core';\nimport { OompaLoompa } from '../../../utils/chocolate/oompa-loompa';\nimport { ResponsiveNavigationService } from '../providers/responsive-navigation.service';\nimport { MainContainerWillyWonka } from './main-container-willy-wonka';\n\n@Directive({ selector: 'clr-header' })\nexport class NavDetectionOompaLoompa extends OompaLoompa {\n private responsiveNavService: ResponsiveNavigationService;\n\n constructor(\n cdr: ChangeDetectorRef,\n @Optional() willyWonka: MainContainerWillyWonka,\n responsiveNavService: ResponsiveNavigationService\n ) {\n if (!willyWonka) {\n throw new Error('clr-header should only be used inside of a clr-main-container');\n }\n super(cdr, willyWonka);\n this.responsiveNavService = responsiveNavService;\n }\n\n // NavDetectionOompaLoompa is the addition of the nav levels\n // Since we support 2 levels, the possibilities are 0, 1 or 3 (1 + 2)\n get flavor() {\n return this.responsiveNavService.responsiveNavList.reduce((sum, navLevel) => sum + navLevel, 0);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ResponsiveNavigationService } from './providers/responsive-navigation.service';\nimport { ResponsiveNavCodes } from './responsive-nav-codes';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\n\n@Component({\n selector: 'clr-header',\n template: `\n <button\n type=\"button\"\n *ngIf=\"isNavLevel1OnPage\"\n class=\"header-hamburger-trigger\"\n [attr.aria-label]=\"\n openNavLevel !== responsiveNavCodes.NAV_LEVEL_1 ? commonStrings.keys.open : commonStrings.keys.close\n \"\n (click)=\"toggleNav(responsiveNavCodes.NAV_LEVEL_1)\"\n >\n <span></span>\n </button>\n <ng-content></ng-content>\n <button\n type=\"button\"\n *ngIf=\"isNavLevel2OnPage\"\n class=\"header-overflow-trigger\"\n [attr.aria-label]=\"\n openNavLevel !== responsiveNavCodes.NAV_LEVEL_2 ? commonStrings.keys.open : commonStrings.keys.close\n \"\n (click)=\"toggleNav(responsiveNavCodes.NAV_LEVEL_2)\"\n >\n <span></span>\n </button>\n <div class=\"header-backdrop\" (click)=\"closeOpenNav()\"></div>\n `,\n host: { '[class.header]': 'true' },\n})\nexport class ClrHeader implements OnDestroy {\n isNavLevel1OnPage = false;\n isNavLevel2OnPage = false;\n openNavLevel: number = null;\n responsiveNavCodes = ResponsiveNavCodes;\n private _subscription: Subscription;\n\n constructor(\n private responsiveNavService: ResponsiveNavigationService,\n public commonStrings: ClrCommonStringsService\n ) {\n this._subscription = this.responsiveNavService.registeredNavs.subscribe({\n next: (navLevelList: number[]) => {\n this.initializeNavTriggers(navLevelList);\n },\n });\n }\n\n // reset triggers. handles cases when an application has different nav levels on different pages.\n resetNavTriggers() {\n this.isNavLevel1OnPage = false;\n this.isNavLevel2OnPage = false;\n }\n\n // decides which triggers to show on the header\n initializeNavTriggers(navList: number[]): void {\n this.resetNavTriggers();\n if (navList.length > 2) {\n console.error('More than 2 Nav Levels detected.');\n return;\n }\n navList.forEach(navLevel => {\n if (navLevel === ResponsiveNavCodes.NAV_LEVEL_1) {\n this.isNavLevel1OnPage = true;\n } else if (navLevel === ResponsiveNavCodes.NAV_LEVEL_2) {\n this.isNavLevel2OnPage = true;\n }\n });\n }\n\n // closes the nav that is open\n closeOpenNav() {\n this.responsiveNavService.closeAllNavs();\n }\n\n // toggles the nav that is open\n toggleNav(navLevel: number) {\n this.openNavLevel = this.openNavLevel === navLevel ? null : navLevel;\n this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_TOGGLE, navLevel);\n }\n\n ngOnDestroy() {\n this._subscription.unsubscribe();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Directive, ElementRef, HostListener, Input, OnInit } from '@angular/core';\n\nimport { ResponsiveNavigationService } from './providers/responsive-navigation.service';\nimport { ResponsiveNavCodes } from './responsive-nav-codes';\n\n@Directive({ selector: '[clr-nav-level]' })\nexport class ClrNavLevel implements OnInit {\n @Input('clr-nav-level') _level: number;\n\n constructor(private responsiveNavService: ResponsiveNavigationService, private elementRef: ElementRef) {}\n\n ngOnInit() {\n if (this.level !== ResponsiveNavCodes.NAV_LEVEL_1 && this.level !== ResponsiveNavCodes.NAV_LEVEL_2) {\n console.error('Nav Level can only be 1 or 2');\n return;\n }\n this.responsiveNavService.registerNav(this.level);\n this.addNavClass(this.level);\n }\n\n addNavClass(level: number) {\n const navHostClassList = this.elementRef.nativeElement.classList;\n if (level === ResponsiveNavCodes.NAV_LEVEL_1) {\n navHostClassList.add(ResponsiveNavCodes.NAV_CLASS_LEVEL_1);\n } else if (level === ResponsiveNavCodes.NAV_LEVEL_2) {\n navHostClassList.add(ResponsiveNavCodes.NAV_CLASS_LEVEL_2);\n }\n }\n\n get level(): number {\n return this._level;\n }\n\n // getter to access the responsive navigation codes from the template\n get responsiveNavCodes(): ResponsiveNavCodes {\n return ResponsiveNavCodes;\n }\n\n open(): void {\n this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_OPEN, this.level);\n }\n\n close(): void {\n this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_CLOSE, this.level);\n }\n\n // TODO: Figure out whats the best way to do this. Possible methods\n // 1. HostListener (current solution)\n // 2. Directives on the .nav-link class. We discussed on moving away from class selectors but I forget the reason\n // why\n @HostListener('click', ['$event.target'])\n onMouseClick(target: any) {\n let current: any = target; // Get the element in the DOM on which the mouse was clicked\n const navHost: any = this.elementRef.nativeElement; // Get the current nav native HTML element\n\n // Start checking if current and navHost are equal.\n // If not traverse to the parentNode and check again.\n while (current) {\n if (current === navHost) {\n return;\n } else if (current.classList.contains('nav-link')) {\n this.close();\n return;\n }\n current = current.parentNode;\n }\n }\n\n ngOnDestroy() {\n this.responsiveNavService.unregisterNav(this.level);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrDropdownModule } from '../../popover/dropdown/dropdown.module';\n\nimport { MainContainerWillyWonka } from './chocolate/main-container-willy-wonka';\nimport { NavDetectionOompaLoompa } from './chocolate/nav-detection-oompa-loompa';\nimport { ClrHeader } from './header';\nimport { ClrNavLevel } from './nav-level';\n\nexport const CLR_NAVIGATION_DIRECTIVES: Type<any>[] = [\n ClrHeader,\n ClrNavLevel,\n NavDetectionOompaLoompa,\n MainContainerWillyWonka,\n];\n\n@NgModule({\n imports: [CommonModule, ClrIconModule, ClrDropdownModule],\n declarations: [CLR_NAVIGATION_DIRECTIVES],\n exports: [CLR_NAVIGATION_DIRECTIVES],\n})\nexport class ClrNavigationModule {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component, TemplateRef, ViewChild } from '@angular/core';\n\n@Component({\n template: `\n <ng-template>\n <ng-content></ng-content>\n </ng-template>\n `,\n})\nexport class TemplateRefContainer {\n @ViewChild(TemplateRef) template: TemplateRef<any>;\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Type } from '@angular/core';\nimport { TemplateRefContainer } from './template-ref-container';\n\nexport * from './template-ref-container';\n\nexport const TEMPLATE_REF_DIRECTIVES: Type<any>[] = [TemplateRefContainer];\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { TEMPLATE_REF_DIRECTIVES } from './index';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [TEMPLATE_REF_DIRECTIVES],\n entryComponents: [TEMPLATE_REF_DIRECTIVES],\n exports: [TEMPLATE_REF_DIRECTIVES],\n})\nexport class ClrTemplateRefModule {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Directive } from '@angular/core';\nimport { WillyWonka } from '../../../utils/chocolate/willy-wonka';\n\n@Directive({ selector: 'clr-tabs' })\nexport class TabsWillyWonka extends WillyWonka {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { ChangeDetectorRef, Directive, Inject, Optional } from '@angular/core';\n\nimport { OompaLoompa } from '../../../utils/chocolate/oompa-loompa';\nimport { IF_ACTIVE_ID, IfActiveService } from '../../../utils/conditional/if-active.service';\n\nimport { TabsWillyWonka } from './tabs-willy-wonka';\n\n@Directive({ selector: '[clrTabLink], clr-tab-content' })\nexport class ActiveOompaLoompa extends OompaLoompa {\n private ifActive: IfActiveService;\n private id: number;\n\n constructor(\n cdr: ChangeDetectorRef,\n @Optional() willyWonka: TabsWillyWonka,\n @Inject(IF_ACTIVE_ID) id: number,\n ifActive: IfActiveService\n ) {\n if (!willyWonka) {\n throw new Error('clrTabLink and clr-tab-content should only be used inside of a clr-tabs');\n }\n super(cdr, willyWonka);\n this.ifActive = ifActive;\n this.id = id;\n }\n\n get flavor() {\n return this.ifActive.current === this.id;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum TabsLayout {\n HORIZONTAL = 'horizontal',\n VERTICAL = 'vertical',\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Injectable, ViewContainerRef } from '@angular/core';\nimport { ClrTab } from '../tab';\nimport { TabsLayout } from '../enums/tabs-layout.enum';\n\n@Injectable()\nexport class TabsService {\n private _children: ClrTab[] = [];\n\n layout: TabsLayout | string = TabsLayout.HORIZONTAL;\n\n register(tab: ClrTab) {\n this._children.push(tab);\n }\n\n get children() {\n return this._children;\n }\n\n get activeTab() {\n return this.children.find((tab: ClrTab) => {\n return tab.active;\n });\n }\n\n get overflowTabs() {\n if (this.layout === TabsLayout.VERTICAL) {\n return [];\n } else {\n return this.children.filter((tab: ClrTab) => tab.tabLink.inOverflow === true);\n }\n }\n\n unregister(tab: ClrTab) {\n const index = this.children.indexOf(tab);\n if (index > -1) {\n this.children.splice(index, 1);\n }\n }\n\n tabContentViewContainer: ViewContainerRef;\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component, EmbeddedViewRef, Inject, Input, OnDestroy, TemplateRef, ViewChild } from '@angular/core';\nimport { IF_ACTIVE_ID, IfActiveService } from '../../utils/conditional/if-active.service';\nimport { AriaService } from '../../utils/aria/aria.service';\nimport { TabsService } from './providers/tabs.service';\n\nlet nbTabContentComponents = 0;\n\n@Component({\n selector: 'clr-tab-content',\n template: `\n <ng-template #tabContentProjectedRef>\n <section\n [id]=\"tabContentId\"\n role=\"tabpanel\"\n class=\"tab-content\"\n [class.active]=\"active\"\n [hidden]=\"!active\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-expanded]=\"active\"\n [attr.aria-hidden]=\"!active\"\n >\n <ng-content></ng-content>\n </section>\n </ng-template>\n `,\n})\nexport class ClrTabContent implements OnDestroy {\n constructor(\n public ifActiveService: IfActiveService,\n @Inject(IF_ACTIVE_ID) public id: number,\n private ariaService: AriaService,\n private tabsService: TabsService\n ) {\n if (!this.tabContentId) {\n this.tabContentId = 'clr-tab-content-' + nbTabContentComponents++;\n }\n }\n\n private viewRef: EmbeddedViewRef<ClrTabContent>;\n\n // The template must be applied on the top-down phase of view-child initialization to prevent\n // components in the content from initializing before a content container exists.\n // Some child components need their container for sizing calculations.\n @ViewChild('tabContentProjectedRef', { static: true })\n private set templateRef(value: TemplateRef<ClrTabContent>) {\n this.viewRef = this.tabsService.tabContentViewContainer.createEmbeddedView(value);\n }\n\n get ariaLabelledBy(): string {\n return this.ariaService.ariaLabelledBy;\n }\n\n get tabContentId(): string {\n return this.ariaService.ariaControls;\n }\n\n @Input('id')\n set tabContentId(id: string) {\n this.ariaService.ariaControls = id;\n }\n\n get active() {\n return this.ifActiveService.current === this.id;\n }\n\n ngOnDestroy(): void {\n const index = this.tabsService.tabContentViewContainer.indexOf(this.viewRef);\n if (index > -1) {\n this.tabsService.tabContentViewContainer.remove(index);\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { InjectionToken } from '@angular/core';\n\nlet nbTabsComponent = 0;\n\nexport const TABS_ID = new InjectionToken<number>('TABS_ID');\n\nexport function tokenFactory() {\n return 'clr-tabs-' + nbTabsComponent++;\n}\n\nexport const TABS_ID_PROVIDER = {\n provide: TABS_ID,\n useFactory: tokenFactory,\n};\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport {\n ComponentFactoryResolver,\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { IF_ACTIVE_ID, IfActiveService } from '../../utils/conditional/if-active.service';\nimport { TemplateRefContainer } from '../../utils/template-ref/template-ref-container';\nimport { TabsService } from './providers/tabs.service';\n\nimport { AriaService } from '../../utils/aria/aria.service';\nimport { TABS_ID } from './tabs-id.provider';\nimport { TabsLayout } from './enums/tabs-layout.enum';\n\nlet nbTabLinkComponents = 0;\n\n@Directive({\n selector: '[clrTabLink]',\n host: {\n '[attr.aria-hidden]': 'false',\n '[class.btn]': 'true',\n role: 'tab',\n type: 'button',\n },\n})\nexport class ClrTabLink {\n private _inOverflow: boolean;\n\n @Input('clrTabLinkInOverflow')\n set inOverflow(inOverflow) {\n this._inOverflow = inOverflow;\n }\n\n get inOverflow(): boolean {\n return this._inOverflow && this.tabsService.layout !== TabsLayout.VERTICAL;\n }\n\n @HostBinding('class.btn-link')\n @HostBinding('class.nav-link')\n get addLinkClasses() {\n return !this.inOverflow;\n }\n\n templateRefContainer: TemplateRefContainer;\n\n constructor(\n public ifActiveService: IfActiveService,\n @Inject(IF_ACTIVE_ID) private id: number,\n private ariaService: AriaService,\n public el: ElementRef,\n private cfr: ComponentFactoryResolver,\n private viewContainerRef: ViewContainerRef,\n private tabsService: TabsService,\n @Inject(TABS_ID) public tabsId: number\n ) {\n if (!this.tabLinkId) {\n this.tabLinkId = 'clr-tab-link-' + nbTabLinkComponents++;\n }\n\n // Tab links can be rendered in one of two places: in the main area or inside the overflow dropdown menu.\n // Here, we create a container so that its template can be used to create embeddedView on the fly.\n // See TabsService's renderView() method and how it's used in Tabs class for an example.\n const factory = this.cfr.resolveComponentFactory(TemplateRefContainer);\n this.templateRefContainer = this.viewContainerRef.createComponent(factory, undefined, undefined, [\n [this.el.nativeElement],\n ]).instance;\n }\n\n @HostBinding('attr.aria-controls')\n get ariaControls(): string {\n return this.ariaService.ariaControls;\n }\n\n get tabLinkId(): string {\n return this.ariaService.ariaLabelledBy;\n }\n\n @HostBinding('id')\n @Input('id')\n set tabLinkId(id: string) {\n this.ariaService.ariaLabelledBy = id;\n }\n\n @HostListener('click')\n activate() {\n this.ifActiveService.current = this.id;\n }\n\n @HostBinding('class.active')\n @HostBinding('attr.aria-selected')\n get active() {\n return this.ifActiveService.current === this.id;\n }\n\n @HostBinding('attr.tabindex')\n get tabindex() {\n return this.active ? 0 : -1;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component, ContentChild, Inject } from '@angular/core';\n\nimport { IF_ACTIVE_ID, IF_ACTIVE_ID_PROVIDER, IfActiveService } from '../../utils/conditional/if-active.service';\n\nimport { AriaService } from '../../utils/aria/aria.service';\nimport { TabsService } from './providers/tabs.service';\nimport { ClrTabContent } from './tab-content';\nimport { ClrTabLink } from './tab-link.directive';\n\n@Component({\n selector: 'clr-tab',\n template: ` <ng-content></ng-content> `,\n providers: [IF_ACTIVE_ID_PROVIDER, AriaService],\n})\nexport class ClrTab {\n @ContentChild(ClrTabLink, { static: true })\n tabLink: ClrTabLink;\n @ContentChild(ClrTabContent, { static: true })\n tabContent: ClrTabContent;\n\n constructor(\n public ifActiveService: IfActiveService,\n @Inject(IF_ACTIVE_ID) public id: number,\n private tabsService: TabsService\n ) {\n tabsService.register(this);\n }\n\n ngOnDestroy() {\n this.tabsService.unregister(this);\n }\n\n get active() {\n return this.ifActiveService.current === this.id;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'clr-tab-overflow-content',\n template: ` <ng-content></ng-content> `,\n host: {\n '[class.dropdown-menu]': 'true',\n },\n})\nexport class ClrTabOverflowContent {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport {\n AfterContentInit,\n Component,\n ContentChildren,\n ElementRef,\n Inject,\n Input,\n OnDestroy,\n QueryList,\n ViewChild,\n ViewContainerRef,\n HostBinding,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { IfActiveService } from '../../utils/conditional/if-active.service';\nimport { ClrKeyFocus } from '../../utils/focus/key-focus/key-focus';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { TabsLayout } from './enums/tabs-layout.enum';\nimport { TabsService } from './providers/tabs.service';\nimport { ClrTab } from './tab';\nimport { ClrTabLink } from './tab-link.directive';\nimport { TABS_ID, TABS_ID_PROVIDER } from './tabs-id.provider';\nimport { ClrTabOverflowContent } from './tab-overflow-content';\n\n@Component({\n selector: 'clr-tabs',\n template: `\n <ul\n class=\"nav\"\n role=\"tablist\"\n [attr.aria-owns]=\"tabIds\"\n [clrKeyFocus]=\"tabLinkElements\"\n clrDirection=\"both\"\n (clrFocusChange)=\"toggleOverflowOnPosition($event)\"\n (focusout)=\"resetKeyFocusCurrentToActive($event)\"\n >\n <!--tab links-->\n <ng-container *ngFor=\"let link of tabLinkDirectives\">\n <ng-container *ngIf=\"link.tabsId === tabsId && !link.inOverflow\">\n <li role=\"presentation\" class=\"nav-item\">\n <ng-container [ngTemplateOutlet]=\"link.templateRefContainer.template\"></ng-container>\n </li>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"tabsService.overflowTabs.length > 0\">\n <div class=\"tabs-overflow bottom-right\" role=\"presentation\" [class.open]=\"toggleService.open\">\n <li role=\"application\" class=\"nav-item\">\n <button\n #tabOverflowTrigger\n class=\"btn btn-link nav-link dropdown-toggle\"\n type=\"button\"\n aria-hidden=\"true\"\n [attr.tabindex]=\"activeTabInOverflow && !toggleService.open ? 0 : -1\"\n [class.active]=\"activeTabInOverflow\"\n [class.open]=\"toggleService.open\"\n (mousedown)=\"_mousedown = true\"\n (focus)=\"openOverflowOnFocus()\"\n (click)=\"toggleOverflowOnClick()\"\n [attr.title]=\"commonStrings.keys.more\"\n >\n <cds-icon\n shape=\"ellipsis-horizontal\"\n status=\"toggleService.open ? 'info' : null\"\n [attr.title]=\"commonStrings.keys.more\"\n ></cds-icon>\n </button>\n </li>\n <!--tab links in overflow menu-->\n <clr-tab-overflow-content\n *ngIf=\"toggleService.open\"\n (document:keydown.esc)=\"closeOnEscapeKey()\"\n (document:click)=\"closeOnOutsideClick($event, tabOverflowTrigger)\"\n (focusout)=\"closeOnFocusOut($event)\"\n >\n <ng-container *ngFor=\"let link of tabLinkDirectives\">\n <ng-container\n *ngIf=\"link.tabsId === tabsId && link.inOverflow\"\n [ngTemplateOutlet]=\"link.templateRefContainer.template\"\n >\n </ng-container>\n </ng-container>\n </clr-tab-overflow-content>\n </div>\n </ng-container>\n </ul>\n <ng-container #tabContentViewContainer></ng-container>\n `,\n providers: [IfActiveService, ClrPopoverToggleService, TabsService, TABS_ID_PROVIDER],\n})\nexport class ClrTabs implements AfterContentInit, OnDestroy {\n private subscriptions: Subscription[] = [];\n\n private get overflowPosition() {\n return this._tabLinkDirectives.filter(link => !link.inOverflow).length;\n }\n\n @ViewChild('tabContentViewContainer', { static: true, read: ViewContainerRef })\n private set tabContentViewContainer(value: ViewContainerRef) {\n this.tabsService.tabContentViewContainer = value;\n }\n\n @Input('clrLayout')\n set layout(layout: TabsLayout | string) {\n if (\n Object.keys(TabsLayout)\n .map(key => {\n return (TabsLayout as Record<string, any>)[key];\n })\n .indexOf(layout) >= 0\n ) {\n this.tabsService.layout = layout;\n }\n }\n get layout(): TabsLayout | string {\n return this.tabsService.layout;\n }\n\n @ContentChildren(ClrTab) private tabs: QueryList<ClrTab>;\n\n private _tabLinkDirectives: ClrTabLink[] = [];\n get tabLinkDirectives(): ClrTabLink[] {\n return this._tabLinkDirectives;\n }\n\n tabLinkElements: HTMLElement[] = [];\n\n @ViewChild(ClrKeyFocus, { static: true })\n keyFocus: ClrKeyFocus;\n\n constructor(\n public ifActiveService: IfActiveService,\n public toggleService: ClrPopoverToggleService,\n public tabsService: TabsService,\n @Inject(TABS_ID) public tabsId: number,\n public commonStrings: ClrCommonStringsService\n ) {}\n\n get activeTabInOverflow() {\n return this.tabsService.overflowTabs.indexOf(this.tabsService.activeTab) > -1;\n }\n\n get activeTabPosition() {\n return this._tabLinkDirectives.findIndex(link => link.active);\n }\n\n get tabIds() {\n return this.tabsService.children.map(tab => tab.tabLink.tabLinkId).join(' ');\n }\n\n get isCurrentInOverflow() {\n return this.keyFocus.current >= this.overflowPosition;\n }\n\n @HostBinding('class.tabs-vertical')\n get isVertical() {\n return this.layout === TabsLayout.VERTICAL;\n }\n\n toggleOverflowOnPosition(position: number) {\n // we need to check current position to determine\n // whether we need to open the tab overflow or not\n this.toggleService.open = position >= this.overflowPosition;\n }\n\n private _tabOverflowEl: HTMLElement;\n\n @ViewChild(ClrTabOverflowContent, { read: ElementRef })\n set tabOverflowEl(value: ElementRef) {\n this._tabOverflowEl = value && value.nativeElement;\n if (this.toggleService.open && value) {\n // only when tab overflow view element is registered,\n // we need to move the focus to the first item\n this.keyFocus.focusCurrent();\n }\n }\n\n resetKeyFocusCurrentToActive(event: FocusEvent) {\n const keyFocusContainsFocus = this.keyFocus.nativeElement.contains(event.relatedTarget as HTMLElement);\n if (!keyFocusContainsFocus && this.keyFocus.current !== this.activeTabPosition) {\n this.keyFocus.current = this.activeTabPosition;\n }\n }\n\n toggleOverflowOnClick() {\n if (this.isCurrentInOverflow && this.toggleService.open) {\n this.keyFocus.moveTo(this.overflowPosition - 1);\n } else {\n this.keyFocus.moveTo(this.overflowPosition);\n }\n\n // once click handler completes running,\n // reset the _mousedown flag\n this._mousedown = false;\n }\n\n // in order to check focus is triggered by click\n // we are using this _mousedown flag\n _mousedown = false;\n\n openOverflowOnFocus() {\n // This method should be called only on keyboard generated focus\n // when the active tab is in the overflow\n if (!this._mousedown && !this.toggleService.open) {\n this.keyFocus.moveTo(this.activeTabPosition);\n }\n }\n\n closeOnFocusOut(event: FocusEvent) {\n if (\n !this._tabOverflowEl.contains(event.relatedTarget as HTMLElement) &&\n this.toggleService.open &&\n !this._mousedown\n ) {\n this.toggleService.open = false;\n\n // if the focus is out of overflow and lands on the active tab link\n // which is currently visible, set the key focus current to activeTabPosition\n if (this.tabLinkElements[this.activeTabPosition] === event.relatedTarget) {\n this.keyFocus.current = this.activeTabPosition;\n }\n }\n }\n\n closeOnEscapeKey() {\n // Move current to the last visible focusable item\n this.keyFocus.moveTo(this.overflowPosition - 1);\n }\n\n closeOnOutsideClick(event: Event, tabOverflowTrigger: HTMLElement) {\n // Exit early if the event target is the trigger element itself or element that's inside the trigger element.\n // This is because we have another handler on the tabOverflowTrigger element itself.\n // As this handler method is on the document level so the event bubbles up to it and conflicts\n // with the tabOverflowTrigger handler resulting in opening the tab overflow and closing it right away consecutively.\n if (event.target === tabOverflowTrigger || tabOverflowTrigger.contains(event.target as HTMLElement)) {\n return;\n }\n\n // Move current to the last visible focusable item\n if (!this._tabOverflowEl.contains(event.target as HTMLElement) && this.isCurrentInOverflow) {\n this.keyFocus.moveTo(this.overflowPosition - 1);\n }\n }\n\n private listenForTabLinkChanges() {\n return this.tabs.changes.pipe(startWith(this.tabs.map(tab => tab.tabLink))).subscribe(() => {\n this._tabLinkDirectives = this.tabs.map(tab => tab.tabLink);\n this.tabLinkElements = this._tabLinkDirectives.map(tab => tab.el.nativeElement);\n });\n }\n\n ngAfterContentInit() {\n this.subscriptions.push(this.listenForTabLinkChanges());\n\n if (typeof this.ifActiveService.current === 'undefined' && this.tabLinkDirectives[0]) {\n this.tabLinkDirectives[0].activate();\n }\n\n // set initial current position\n this.keyFocus.current = this.activeTabPosition;\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => {\n sub.unsubscribe();\n });\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrConditionalModule } from '../../utils/conditional/conditional.module';\nimport { ClrTemplateRefModule } from '../../utils/template-ref/template-ref.module';\n\nimport { ActiveOompaLoompa } from './chocolate/active-oompa-loompa';\nimport { TabsWillyWonka } from './chocolate/tabs-willy-wonka';\nimport { ClrTab } from './tab';\nimport { ClrTabContent } from './tab-content';\nimport { ClrTabLink } from './tab-link.directive';\nimport { ClrTabOverflowContent } from './tab-overflow-content';\nimport { ClrTabs } from './tabs';\nimport { ClrKeyFocusModule } from '../../utils/focus/key-focus/key-focus.module';\nimport { ClarityIcons, ellipsisHorizontalIcon } from '@cds/core/icon';\n\nexport const CLR_TABS_DIRECTIVES: Type<any>[] = [\n ClrTabContent,\n ClrTab,\n ClrTabs,\n ClrTabOverflowContent,\n ClrTabLink,\n TabsWillyWonka,\n ActiveOompaLoompa,\n];\n\n@NgModule({\n imports: [CommonModule, ClrConditionalModule, ClrIconModule, ClrTemplateRefModule, ClrKeyFocusModule],\n declarations: [CLR_TABS_DIRECTIVES],\n exports: [CLR_TABS_DIRECTIVES, ClrConditionalModule],\n})\nexport class ClrTabsModule {\n constructor() {\n ClarityIcons.addIcons(ellipsisHorizontalIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class VerticalNavGroupRegistrationService {\n public navGroupCount = 0;\n\n registerNavGroup() {\n this.navGroupCount++;\n }\n\n unregisterNavGroup(): void {\n this.navGroupCount--;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class VerticalNavIconService {\n private _icons = 0;\n\n get hasIcons(): boolean {\n return this._icons > 0;\n }\n\n registerIcon(): void {\n this._icons++;\n }\n\n unregisterIcon(): void {\n this._icons--;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class VerticalNavService {\n private _animateOnCollapsed: Subject<boolean> = new Subject<boolean>();\n\n get animateOnCollapsed(): Observable<boolean> {\n return this._animateOnCollapsed.asObservable();\n }\n\n private _collapsedChanged: Subject<boolean> = new Subject<boolean>();\n\n get collapsedChanged(): Observable<boolean> {\n return this._collapsedChanged.asObservable();\n }\n\n private _collapsed = false;\n\n get collapsed(): boolean {\n return this._collapsed;\n }\n\n set collapsed(value: boolean) {\n value = !!value;\n if (this.collapsible && this._collapsed !== value) {\n this.updateCollapseBehavior(value);\n }\n }\n\n private _collapsible = false;\n\n get collapsible(): boolean {\n return this._collapsible;\n }\n\n set collapsible(value: boolean) {\n value = !!value;\n if (this._collapsible !== value) {\n if (!value && this.collapsed) {\n this.updateCollapseBehavior(false);\n }\n this._collapsible = value;\n }\n }\n\n private updateCollapseBehavior(value: boolean): void {\n this._animateOnCollapsed.next(value);\n this._collapsed = value;\n this._collapsedChanged.next(value);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { VerticalNavGroupRegistrationService } from './providers/vertical-nav-group-registration.service';\nimport { VerticalNavIconService } from './providers/vertical-nav-icon.service';\nimport { VerticalNavService } from './providers/vertical-nav.service';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\n\n@Component({\n selector: 'clr-vertical-nav',\n templateUrl: './vertical-nav.html',\n providers: [VerticalNavService, VerticalNavIconService, VerticalNavGroupRegistrationService],\n host: {\n class: 'clr-vertical-nav',\n '[class.is-collapsed]': 'collapsed',\n '[class.has-nav-groups]': 'hasNavGroups',\n '[class.has-icons]': 'hasIcons',\n },\n})\nexport class ClrVerticalNav implements OnDestroy {\n get collapsible(): boolean | string {\n return this._navService.collapsible;\n }\n\n @Input('clrVerticalNavCollapsible')\n set collapsible(value: boolean | string) {\n this._navService.collapsible = value as boolean;\n }\n\n get collapsed(): boolean | string {\n return this._navService.collapsed;\n }\n\n @Input('clrVerticalNavCollapsed')\n set collapsed(value: boolean | string) {\n this._navService.collapsed = value as boolean;\n }\n\n @Output('clrVerticalNavCollapsedChange')\n private _collapsedChanged: EventEmitter<boolean> = new EventEmitter<boolean>(true);\n\n get hasNavGroups(): boolean {\n return this._navGroupRegistrationService.navGroupCount > 0;\n }\n\n get hasIcons(): boolean {\n return this._navIconService.hasIcons;\n }\n\n get ariaExpanded(): string {\n if (!this.collapsible) {\n return null;\n }\n return !this.collapsed ? 'true' : 'false';\n }\n\n private _sub: Subscription;\n\n constructor(\n private _navService: VerticalNavService,\n private _navIconService: VerticalNavIconService,\n private _navGroupRegistrationService: VerticalNavGroupRegistrationService,\n public commonStrings: ClrCommonStringsService\n ) {\n this._sub = this._navService.collapsedChanged.subscribe(value => {\n this._collapsedChanged.emit(value);\n });\n }\n\n toggleByButton() {\n this.collapsed = !this.collapsed;\n }\n\n ngOnDestroy() {\n this._sub.unsubscribe();\n }\n}\n","<!--\n ~ Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<button\n type=\"button\"\n class=\"nav-trigger\"\n [class.on-collapse]=\"collapsed\"\n [attr.aria-expanded]=\"ariaExpanded\"\n [attr.aria-label]=\"commonStrings.keys.verticalNavToggle\"\n (click)=\"toggleByButton()\"\n *ngIf=\"collapsible\"\n>\n <cds-icon\n shape=\"angle-double\"\n class=\"nav-trigger-icon\"\n [attr.direction]=\"(this.collapsed) ? 'right' : 'left'\"\n [attr.title]=\"(this.collapsed) ? commonStrings.keys.expand : commonStrings.keys.collapse\"\n ></cds-icon>\n</button>\n<!-- Click handler on .nav-content is bad but required :-( -->\n<div class=\"nav-content\">\n <ng-content></ng-content>\n <button\n (click)=\"collapsed = false\"\n class=\"nav-btn\"\n aria-hidden=\"true\"\n tabindex=\"-1\"\n [attr.aria-label]=\"commonStrings.keys.verticalNavToggle\"\n *ngIf=\"collapsible && collapsed\"\n ></button>\n</div>\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class VerticalNavGroupService {\n private _expandChange: Subject<boolean> = new Subject<boolean>();\n\n get expandChange(): Observable<boolean> {\n return this._expandChange.asObservable();\n }\n\n expand(): void {\n this._expandChange.next(true);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { animate, AnimationEvent, state, style, transition, trigger } from '@angular/animations';\nimport { AfterContentInit, Component, EventEmitter, HostBinding, Input, OnDestroy, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { IfExpandService } from '../../utils/conditional/if-expanded.service';\n\nimport { VerticalNavGroupRegistrationService } from './providers/vertical-nav-group-registration.service';\nimport { VerticalNavGroupService } from './providers/vertical-nav-group.service';\nimport { VerticalNavService } from './providers/vertical-nav.service';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\n\nconst EXPANDED_STATE = 'expanded';\nconst COLLAPSED_STATE = 'collapsed';\n\n@Component({\n selector: 'clr-vertical-nav-group',\n templateUrl: './vertical-nav-group.html',\n providers: [IfExpandService, VerticalNavGroupService],\n animations: [\n trigger('clrExpand', [\n state(EXPANDED_STATE, style({ height: '*' })),\n state(COLLAPSED_STATE, style({ height: 0, 'overflow-y': 'hidden', visibility: 'hidden' })),\n transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, animate('0.2s ease-in-out')),\n ]),\n ],\n host: { class: 'nav-group' },\n})\nexport class ClrVerticalNavGroup implements AfterContentInit, OnDestroy {\n constructor(\n private _itemExpand: IfExpandService,\n private _navGroupRegistrationService: VerticalNavGroupRegistrationService,\n private _navGroupService: VerticalNavGroupService,\n private _navService: VerticalNavService,\n public commonStrings: ClrCommonStringsService\n ) {\n this._navGroupRegistrationService.registerNavGroup();\n\n // FIXME: This subscription handles a corner case\n // Vertical Nav collapse requires the animation to run first and then\n // remove the nodes from the DOM. If the user directly sets the input\n // on the clrIfExpanded directive, we have no chance to run the animation\n // and wait for it to complete. This subscription makes sure that the\n // animation states are correct for that edge case.\n this._subscriptions.push(\n this._itemExpand.expandChange.subscribe(value => {\n if (value && this.expandAnimationState === COLLAPSED_STATE) {\n if (this._navService.collapsed) {\n this._navService.collapsed = false;\n }\n this.expandAnimationState = EXPANDED_STATE;\n } else if (!value && this.expandAnimationState === EXPANDED_STATE) {\n this.expandAnimationState = COLLAPSED_STATE;\n }\n })\n );\n\n // 1. If the nav is collapsing, close the open nav group + save its state\n // 2. If the nav is expanding, expand the nav group if the previous state was expanded\n this._subscriptions.push(\n this._navService.animateOnCollapsed.subscribe((goingToCollapse: boolean) => {\n if (goingToCollapse && this.expanded) {\n this.wasExpanded = true;\n this.expandAnimationState = COLLAPSED_STATE;\n } else if (!goingToCollapse && this.wasExpanded) {\n this.expandGroup();\n this.wasExpanded = false;\n }\n })\n );\n\n // If a link is clicked, expand the nav group\n this._subscriptions.push(\n this._navGroupService.expandChange.subscribe((expand: boolean) => {\n if (expand && !this.expanded) {\n this.expandGroup();\n }\n })\n );\n }\n\n private wasExpanded = false;\n\n @HostBinding('class.is-expanded')\n get expanded(): boolean {\n return this._itemExpand.expanded;\n }\n\n set expanded(value: boolean) {\n if (this._itemExpand.expanded !== value) {\n this._itemExpand.expanded = value;\n this.expandedChange.emit(value);\n }\n }\n\n @Input('clrVerticalNavGroupExpanded')\n set userExpandedInput(value: boolean | string) {\n value = !!value;\n if (this.expanded !== value) {\n // We have to call toggleExpand because some cases require animations to occur first\n // Directly setting the Expand service value skips the animation and can result in\n // nodes in the DOM but the nav group still being collapsed\n this.toggleExpand();\n }\n }\n\n @Output('clrVerticalNavGroupExpandedChange') expandedChange: EventEmitter<boolean> = new EventEmitter<boolean>(true);\n\n private _subscriptions: Subscription[] = [];\n\n private _expandAnimationState: string = COLLAPSED_STATE;\n\n expandGroup(): void {\n this.expanded = true;\n // Expanded animation occurs after Expand.expand is set to true\n this.expandAnimationState = EXPANDED_STATE;\n }\n\n collapseGroup(): void {\n // If a Vertical Nav Group toggle button is clicked while the Vertical Nav is in Collapsed state,\n // the Vertical Nav should be expanded first.\n this.expandAnimationState = COLLAPSED_STATE;\n }\n\n // closes a group after the collapse animation\n expandAnimationDone($event: AnimationEvent) {\n if ($event.toState === COLLAPSED_STATE) {\n this.expanded = false;\n }\n }\n\n get expandAnimationState(): string {\n return this._expandAnimationState;\n }\n\n set expandAnimationState(value: string) {\n if (value !== this._expandAnimationState) {\n this._expandAnimationState = value;\n }\n }\n\n toggleExpand(): void {\n if (this.expanded) {\n this.collapseGroup();\n } else {\n // If nav is collasped, first open the nav\n if (this._navService.collapsed) {\n this._navService.collapsed = false;\n }\n // then expand the nav group\n this.expandGroup();\n }\n }\n\n ngAfterContentInit() {\n // This makes sure that if someone marks a nav group expanded in a collapsed nav\n // the expanded property is switched back to collapsed state.\n if (this._navService.collapsed && this.expanded) {\n this.wasExpanded = true;\n this.expandAnimationState = COLLAPSED_STATE;\n }\n }\n\n ngOnDestroy() {\n this._subscriptions.forEach((sub: Subscription) => sub.unsubscribe());\n this._navGroupRegistrationService.unregisterNavGroup();\n }\n}\n","<!--\n ~ Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div class=\"nav-group-content\">\n <ng-content select=\"[clrVerticalNavLink]\"></ng-content>\n <button\n class=\"nav-group-trigger\"\n type=\"button\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-label]=\"commonStrings.keys.verticalNavGroupToggle\"\n (click)=\"toggleExpand()\"\n >\n <ng-content select=\"[clrVerticalNavIcon]\"></ng-content>\n <div class=\"nav-group-text\">\n <ng-content></ng-content>\n </div>\n <cds-icon\n shape=\"angle\"\n class=\"nav-group-trigger-icon\"\n [attr.direction]=\"(this.expanded) ? 'down' : 'right'\"\n [attr.title]=\"(this.expanded) ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n >\n </cds-icon>\n </button>\n</div>\n<!--TODO: This animation needs to be added to the clr-vertical-nav-group-children component-->\n<div class=\"nav-group-children\" [@clrExpand]=\"expandAnimationState\" (@clrExpand.done)=\"expandAnimationDone($event)\">\n <ng-content select=\"[clrIfExpanded], clr-vertical-nav-group-children\"></ng-content>\n</div>\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'clr-vertical-nav-group-children',\n template: ` <ng-content></ng-content> `,\n})\nexport class ClrVerticalNavGroupChildren {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Directive, OnDestroy } from '@angular/core';\nimport { VerticalNavIconService } from './providers/vertical-nav-icon.service';\n\n@Directive({ selector: '[clrVerticalNavIcon]', host: { class: 'nav-icon' } })\nexport class ClrVerticalNavIcon implements OnDestroy {\n constructor(private _verticalNavIconService: VerticalNavIconService) {\n this._verticalNavIconService.registerIcon();\n }\n\n ngOnDestroy() {\n this._verticalNavIconService.unregisterIcon();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component, HostListener, Optional } from '@angular/core';\nimport { VerticalNavGroupService } from './providers/vertical-nav-group.service';\n\n@Component({\n selector: '[clrVerticalNavLink]',\n template: `\n <ng-content select=\"[clrVerticalNavIcon]\"></ng-content>\n <span class=\"nav-text\">\n <ng-content></ng-content>\n </span>\n `,\n host: { class: 'nav-link' },\n})\nexport class ClrVerticalNavLink {\n constructor(@Optional() private _navGroupService: VerticalNavGroupService) {}\n\n @HostListener('click')\n public expandParentNavGroup(): void {\n if (this._navGroupService) {\n this._navGroupService.expand();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { angleDoubleIcon, angleIcon, ClarityIcons } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrConditionalModule } from '../../utils/conditional/conditional.module';\nimport { ClrFocusOnViewInitModule } from '../../utils/focus/focus-on-view-init/focus-on-view-init.module';\n\nimport { ClrVerticalNav } from './vertical-nav';\nimport { ClrVerticalNavGroup } from './vertical-nav-group';\nimport { ClrVerticalNavGroupChildren } from './vertical-nav-group-children';\nimport { ClrVerticalNavIcon } from './vertical-nav-icon';\nimport { ClrVerticalNavLink } from './vertical-nav-link';\n\nexport const CLR_VERTICAL_NAV_DIRECTIVES: Type<any>[] = [\n ClrVerticalNav,\n ClrVerticalNavLink,\n ClrVerticalNavGroup,\n ClrVerticalNavGroupChildren,\n ClrVerticalNavIcon,\n];\n\n@NgModule({\n imports: [CommonModule, ClrIconModule, ClrConditionalModule, ClrFocusOnViewInitModule],\n declarations: [CLR_VERTICAL_NAV_DIRECTIVES],\n exports: [CLR_VERTICAL_NAV_DIRECTIVES, ClrConditionalModule, ClrIconModule, ClrFocusOnViewInitModule],\n})\nexport class ClrVerticalNavModule {\n constructor() {\n ClarityIcons.addIcons(angleIcon, angleDoubleIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { NgModule } from '@angular/core';\n\nimport { ClrMainContainerModule } from './main-container/main-container.module';\nimport { ClrNavigationModule } from './nav/navigation.module';\nimport { ClrTabsModule } from './tabs/tabs.module';\nimport { ClrVerticalNavModule } from './vertical-nav/vertical-nav.module';\n\n@NgModule({ exports: [ClrMainContainerModule, ClrNavigationModule, ClrTabsModule, ClrVerticalNavModule] })\nexport class ClrLayoutModule {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\n\n@Injectable()\nexport class ScrollingService {\n constructor(@Inject(DOCUMENT) private _document: any) {}\n\n stopScrolling(): void {\n this._document.body.classList.add('no-scrolling');\n }\n\n resumeScrolling(): void {\n if (this._document.body.classList.contains('no-scrolling')) {\n this._document.body.classList.remove('no-scrolling');\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { animate, AnimationEvent, style, transition, trigger } from '@angular/animations';\nimport {\n Component,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChange,\n ViewChild,\n} from '@angular/core';\nimport { FocusTrapDirective } from '../utils/focus-trap/focus-trap.directive';\nimport { ClrCommonStringsService } from '../utils/i18n/common-strings.service';\nimport { UNIQUE_ID, UNIQUE_ID_PROVIDER } from '../utils/id-generator/id-generator.service';\nimport { ScrollingService } from '../utils/scrolling/scrolling-service';\n\n@Component({\n selector: 'clr-modal',\n viewProviders: [ScrollingService],\n templateUrl: './modal.html',\n styles: [\n `\n :host {\n display: none;\n }\n :host.open {\n display: inline;\n }\n `,\n ],\n animations: [\n trigger('fadeDown', [\n transition('* => false', [style({ opacity: 0, transform: 'translate(0, -25%)' }), animate('0.2s ease-in-out')]),\n transition('false => *', [animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(0, -25%)' }))]),\n ]),\n trigger('fade', [\n transition('void => *', [style({ opacity: 0 }), animate('0.2s ease-in-out', style({ opacity: 0.85 }))]),\n transition('* => void', [animate('0.2s ease-in-out', style({ opacity: 0 }))]),\n ]),\n ],\n providers: [UNIQUE_ID_PROVIDER],\n})\nexport class ClrModal implements OnChanges, OnDestroy {\n @ViewChild(FocusTrapDirective) focusTrap: FocusTrapDirective;\n\n @HostBinding('class.open')\n @Input('clrModalOpen')\n _open = false;\n @Output('clrModalOpenChange') _openChanged: EventEmitter<boolean> = new EventEmitter<boolean>(false);\n\n @Input('clrModalClosable') closable = true;\n @Input('clrModalSize') size: string;\n @Input('clrModalStaticBackdrop') staticBackdrop = true;\n @Input('clrModalSkipAnimation') skipAnimation = 'false';\n\n // presently this is only used by wizards\n @Input('clrModalOverrideScrollService') bypassScrollService = false;\n @Input('clrModalPreventClose') stopClose = false;\n @Output('clrModalAlternateClose') altClose: EventEmitter<boolean> = new EventEmitter<boolean>(false);\n\n constructor(\n private _scrollingService: ScrollingService,\n public commonStrings: ClrCommonStringsService,\n @Inject(UNIQUE_ID) public modalId: string\n ) {}\n\n // Detect when _open is set to true and set no-scrolling to true\n ngOnChanges(changes: { [propName: string]: SimpleChange }): void {\n if (!this.bypassScrollService && changes && changes.hasOwnProperty('_open')) {\n if (changes._open.currentValue) {\n this._scrollingService.stopScrolling();\n } else {\n this._scrollingService.resumeScrolling();\n }\n }\n }\n\n ngOnDestroy(): void {\n this._scrollingService.resumeScrolling();\n }\n\n open(): void {\n if (this._open) {\n return;\n }\n this._open = true;\n this._openChanged.emit(true);\n }\n\n @HostListener('body:keyup.escape')\n close(): void {\n if (this.stopClose) {\n this.altClose.emit(false);\n return;\n }\n if (!this.closable || !this._open) {\n return;\n }\n this._open = false;\n // SPECME\n this.focusTrap.setPreviousFocus(); // Handles moving focus back to the element that had it before.\n }\n\n fadeDone(e: AnimationEvent) {\n if (e.toState === 'void') {\n // TODO: Investigate if we can decouple from animation events\n this._openChanged.emit(false);\n }\n }\n}\n","<!--\n ~ Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div clrFocusTrap class=\"modal\" *ngIf=\"_open\">\n <!--fixme: revisit when ngClass works with exit animation-->\n <div\n [@fadeDown]=\"skipAnimation\"\n (@fadeDown.done)=\"fadeDone($event)\"\n class=\"modal-dialog\"\n [class.modal-sm]=\"size == 'sm'\"\n [class.modal-lg]=\"size == 'lg'\"\n [class.modal-xl]=\"size == 'xl'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!_open\"\n [attr.aria-labelledby]=\"modalId\"\n >\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n <div class=\"modal-content-wrapper\">\n <!-- only used in wizards -->\n <ng-content select=\".modal-nav\"></ng-content>\n\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <div class=\"modal-title-wrapper\" id=\"{{modalId}}\" clrFocusOnViewInit>\n <ng-content select=\".modal-title\"></ng-content>\n </div>\n <button\n type=\"button\"\n [attr.aria-label]=\"commonStrings.keys.close\"\n class=\"close\"\n *ngIf=\"closable\"\n (click)=\"close()\"\n >\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n </div>\n <div class=\"modal-body-wrapper\">\n <ng-content select=\".modal-body\"></ng-content>\n </div>\n <ng-content select=\".modal-footer\"></ng-content>\n </div>\n </div>\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n </div>\n\n <div [@fade] class=\"modal-backdrop\" aria-hidden=\"true\" (click)=\"staticBackdrop || close()\"></div>\n</div>\n","/*\n * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ElementRef, NgZone, OnDestroy, Renderer2 } from '@angular/core';\n\n/**\n * Allows modal overflow area to be scrollable via keyboard.\n * The modal body will focus with keyboard navigation only.\n * This allows inner focusable items to be focused without\n * the overflow scroll being focused.\n */\n@Directive({ selector: '.modal-body' })\nexport class ClrModalBody implements OnDestroy {\n private tabindex = '0';\n private unlisteners: VoidFunction[] = [];\n\n constructor(private readonly renderer: Renderer2, private readonly host: ElementRef<HTMLElement>, ngZone: NgZone) {\n ngZone.runOutsideAngular(() => {\n new ResizeObserver(() => this.addOrRemoveTabIndex()).observe(this.host.nativeElement);\n\n this.unlisteners.push(\n this.renderer.listen(this.host.nativeElement, 'mouseup', () => {\n // set the tabindex binding back when click is completed with mouseup\n this.addOrRemoveTabIndex();\n }),\n this.renderer.listen(this.host.nativeElement, 'mousedown', () => {\n // tabindex = 0 binding should be removed\n // so it won't be focused when click starts with mousedown\n this.removeTabIndex();\n })\n );\n });\n }\n\n ngOnDestroy(): void {\n while (this.unlisteners.length) {\n this.unlisteners.pop()();\n }\n }\n\n private addTabIndex() {\n this.renderer.setAttribute(this.host.nativeElement, 'tabindex', this.tabindex);\n }\n\n private removeTabIndex() {\n this.renderer.removeAttribute(this.host.nativeElement, 'tabindex');\n }\n\n private addOrRemoveTabIndex() {\n const modalBody = this.host.nativeElement.parentElement;\n\n if (modalBody.clientHeight < modalBody.scrollHeight) {\n this.addTabIndex();\n } else {\n this.removeTabIndex();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrIconModule } from '../icon/icon.module';\nimport { ClrFocusTrapModule } from '../utils/focus-trap/focus-trap.module';\nimport { ClrModal } from './modal';\nimport { ClrModalBody } from './modal-body';\nimport { ClrFocusOnViewInitModule } from '../utils/focus/focus-on-view-init/focus-on-view-init.module';\nimport { ClarityIcons, windowCloseIcon } from '@cds/core/icon';\n\nexport const CLR_MODAL_DIRECTIVES: Type<any>[] = [ClrModal, ClrModalBody];\n\n@NgModule({\n imports: [CommonModule, ClrIconModule, ClrFocusTrapModule, ClrFocusOnViewInitModule],\n declarations: [CLR_MODAL_DIRECTIVES],\n exports: [CLR_MODAL_DIRECTIVES, ClrIconModule, ClrFocusOnViewInitModule],\n})\nexport class ClrModalModule {\n constructor() {\n ClarityIcons.addIcons(windowCloseIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Point } from '../common/popover';\n\nexport interface Position {\n anchorPoint: Point;\n popoverPoint: Point;\n offsetY: number;\n offsetX: number;\n}\n\nexport const SIGNPOST_POSITIONS: { [input: string]: Position } = {\n 'top-left': { anchorPoint: Point.TOP_CENTER, popoverPoint: Point.BOTTOM_RIGHT, offsetY: -10, offsetX: 0 },\n 'top-middle': { anchorPoint: Point.TOP_CENTER, popoverPoint: Point.BOTTOM_CENTER, offsetY: -10, offsetX: 0 },\n 'top-right': { anchorPoint: Point.TOP_CENTER, popoverPoint: Point.BOTTOM_LEFT, offsetY: -10, offsetX: 0 },\n 'right-top': { anchorPoint: Point.RIGHT_CENTER, popoverPoint: Point.LEFT_BOTTOM, offsetY: 2, offsetX: 14 },\n 'right-middle': { anchorPoint: Point.RIGHT_CENTER, popoverPoint: Point.LEFT_CENTER, offsetY: 6, offsetX: 14 },\n 'right-bottom': { anchorPoint: Point.RIGHT_CENTER, popoverPoint: Point.LEFT_TOP, offsetY: -1, offsetX: 14 },\n 'bottom-right': { anchorPoint: Point.BOTTOM_CENTER, popoverPoint: Point.TOP_LEFT, offsetY: 9, offsetX: -1 },\n 'bottom-middle': { anchorPoint: Point.BOTTOM_CENTER, popoverPoint: Point.TOP_CENTER, offsetY: 9, offsetX: 12 },\n 'bottom-left': { anchorPoint: Point.BOTTOM_CENTER, popoverPoint: Point.TOP_RIGHT, offsetY: 9, offsetX: 0 },\n 'left-bottom': { anchorPoint: Point.LEFT_CENTER, popoverPoint: Point.RIGHT_TOP, offsetY: 0, offsetX: -14 },\n 'left-middle': { anchorPoint: Point.LEFT_CENTER, popoverPoint: Point.RIGHT_CENTER, offsetY: 4, offsetX: -14 },\n 'left-top': { anchorPoint: Point.LEFT_CENTER, popoverPoint: Point.RIGHT_BOTTOM, offsetY: 0, offsetX: -14 },\n default: { anchorPoint: Point.RIGHT_CENTER, popoverPoint: Point.LEFT_CENTER, offsetY: 6, offsetX: 14 },\n};\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component, ElementRef, Inject, Injector, Input, Optional, OnDestroy, PLATFORM_ID } from '@angular/core';\n\nimport { AbstractPopover } from '../common/abstract-popover';\nimport { POPOVER_HOST_ANCHOR } from '../common/popover-host-anchor.token';\n\nimport { SIGNPOST_POSITIONS } from './signpost-positions';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { UNIQUE_ID, UNIQUE_ID_PROVIDER } from '../../utils/id-generator/id-generator.service';\nimport { SignpostIdService } from './providers/signpost-id.service';\nimport { SignpostFocusManager } from './providers/signpost-focus-manager.service';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\n\n// aka where the arrow / pointer is at in relation to the anchor\nconst POSITIONS: string[] = [\n 'top-left',\n 'top-middle',\n 'top-right',\n 'right-top',\n 'right-middle', // default\n 'right-bottom',\n 'bottom-right',\n 'bottom-middle',\n 'bottom-left',\n 'left-bottom',\n 'left-middle',\n 'left-top',\n];\n\n@Component({\n selector: 'clr-signpost-content',\n template: `\n <div class=\"signpost-wrap\">\n <div class=\"popover-pointer\"></div>\n <div class=\"signpost-content-header\">\n <button\n type=\"button\"\n [attr.aria-label]=\"commonStrings.keys.signpostClose\"\n class=\"signpost-action close\"\n (click)=\"close()\"\n [attr.aria-controls]=\"signpostContentId\"\n >\n <cds-icon shape=\"window-close\" [attr.title]=\"commonStrings.keys.close\"></cds-icon>\n </button>\n </div>\n <div class=\"signpost-content-body\">\n <ng-content></ng-content>\n </div>\n </div>\n `,\n host: { '[class.signpost-content]': 'true', '[id]': 'signpostContentId' },\n providers: [UNIQUE_ID_PROVIDER],\n})\nexport class ClrSignpostContent extends AbstractPopover implements OnDestroy {\n private document: Document;\n\n constructor(\n injector: Injector,\n @Optional()\n @Inject(POPOVER_HOST_ANCHOR)\n parentHost: ElementRef,\n public commonStrings: ClrCommonStringsService,\n @Inject(UNIQUE_ID) public signpostContentId: string,\n private signpostIdService: SignpostIdService,\n private signpostFocusManager: SignpostFocusManager,\n @Inject(PLATFORM_ID) private platformId: any,\n @Inject(DOCUMENT) document: any\n ) {\n super(injector, parentHost);\n if (!parentHost) {\n throw new Error('clr-signpost-content should only be used inside of a clr-signpost');\n }\n // Defaults\n this.position = 'right-middle';\n this.closeOnOutsideClick = true;\n this.signpostIdService.setId(signpostContentId);\n\n this.document = document;\n }\n\n /**********\n *\n * @description\n * Close function that uses the signpost instance to toggle the state of the content popover.\n *\n */\n close() {\n this.toggleService.open = false;\n }\n\n private _position: string;\n\n get position() {\n return this._position;\n }\n\n /*********\n *\n * @description\n * A setter for the position of the ClrSignpostContent popover. This is a combination of the following:\n * - anchorPoint - where on the trigger to anchor the ClrSignpostContent\n * - popoverPoint - where on the ClrSignpostContent container to align with the anchorPoint\n * - offsetY - where on the Y axis to align the ClrSignpostContent so it meets specs\n * - offsetX - where on the X axis to align the ClrSignpostContent so it meets specs\n * There are 12 possible positions to place a ClrSignpostContent container:\n * - top-left\n * - top-middle\n * - top-right\n * - right-top\n * - right-middle\n * - right-bottom\n * - bottom-right\n * - bottom-middle\n * - bottom-left\n * - left-bottom\n * - left-middle\n * - left-top\n *\n * I think of it as follows for 'top-left' -> CONTAINER_SIDE-SIDE_POSITION. In this case CONTAINER_SIDE is 'top'\n * meaning the top of the trigger icon (above the icon that hides/shows) the ClrSignpostContent. And, SIDE_POSITION\n * is 'left' meaning two things: 1) the ClrSignpostContent container extends to the left and 2) the 'arrow/pointer'\n * linking the SingpostContent to the trigger points down at the horizontal center of the trigger icon.\n *\n * @param newPosition\n */\n @Input('clrPosition')\n set position(position: string) {\n // Ugh\n this.renderer.removeClass(this.el.nativeElement, this.position);\n if (position && POSITIONS.indexOf(position) > -1) {\n this._position = position;\n } else {\n this._position = 'right-middle';\n }\n // Ugh\n this.renderer.addClass(this.el.nativeElement, this.position);\n\n const setPosition = SIGNPOST_POSITIONS[this.position];\n this.anchorPoint = setPosition.anchorPoint;\n this.popoverPoint = setPosition.popoverPoint;\n this.popoverOptions.offsetY = setPosition.offsetY;\n this.popoverOptions.offsetX = setPosition.offsetX;\n }\n\n ngOnDestroy() {\n if (isPlatformBrowser(this.platformId) && this.el.nativeElement.contains(this.document.activeElement)) {\n this.signpostFocusManager.focusTrigger();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { ClarityIcons, infoCircleIcon, windowCloseIcon } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrConditionalModule } from '../../utils/conditional/conditional.module';\nimport { ClrFocusOnViewInitModule } from '../../utils/focus/focus-on-view-init/focus-on-view-init.module';\n\nimport { ClrSignpost } from './signpost';\nimport { ClrSignpostContent } from './signpost-content';\nimport { ClrSignpostTrigger } from './signpost-trigger';\n\nexport const CLR_SIGNPOST_DIRECTIVES: Type<any>[] = [ClrSignpost, ClrSignpostContent, ClrSignpostTrigger];\n\n@NgModule({\n imports: [CommonModule, ClrIconModule, ClrFocusOnViewInitModule],\n declarations: [CLR_SIGNPOST_DIRECTIVES],\n exports: [CLR_SIGNPOST_DIRECTIVES, ClrConditionalModule],\n})\nexport class ClrSignpostModule {\n constructor() {\n ClarityIcons.addIcons(windowCloseIcon, infoCircleIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable()\nexport class TooltipIdService {\n private _id: Subject<string> = new Subject<string>();\n\n updateId(id: string) {\n this._id.next(id);\n }\n\n get id(): Observable<string> {\n return this._id.asObservable();\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component, ElementRef } from '@angular/core';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { POPOVER_HOST_ANCHOR } from '../common/popover-host-anchor.token';\nimport { UNIQUE_ID_PROVIDER } from '../../utils/id-generator/id-generator.service';\nimport { TooltipIdService } from './providers/tooltip-id.service';\n\n@Component({\n selector: 'clr-tooltip',\n template: ` <ng-content></ng-content> `,\n host: {\n '[class.tooltip]': 'true',\n },\n providers: [\n ClrPopoverToggleService,\n { provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef },\n // TODO: consider centralizing the unique id string on a service that provides ariaAttributes that need it\n // AriaService in layout/tabs/providers might be a good starting point.\n UNIQUE_ID_PROVIDER,\n TooltipIdService,\n ],\n})\nexport class ClrTooltip {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component, ElementRef, Inject, Injector, Input, Optional } from '@angular/core';\nimport { AbstractPopover } from '../common/abstract-popover';\nimport { Point } from '../common/popover';\nimport { POPOVER_HOST_ANCHOR } from '../common/popover-host-anchor.token';\nimport { UNIQUE_ID } from '../../utils/id-generator/id-generator.service';\nimport { TooltipIdService } from './providers/tooltip-id.service';\n\nconst POSITIONS: string[] = ['bottom-left', 'bottom-right', 'top-left', 'top-right', 'right', 'left'];\n\nconst SIZES: string[] = ['xs', 'sm', 'md', 'lg'];\n\n@Component({\n selector: 'clr-tooltip-content',\n template: ` <ng-content></ng-content> `,\n host: {\n '[class.tooltip-content]': 'true',\n '[style.opacity]': '1',\n '[attr.role]': '\"tooltip\"',\n '[id]': 'id',\n },\n})\nexport class ClrTooltipContent extends AbstractPopover {\n constructor(\n injector: Injector,\n @Optional()\n @Inject(POPOVER_HOST_ANCHOR)\n parentHost: ElementRef,\n @Inject(UNIQUE_ID) public uniqueId: string,\n private tooltipIdService: TooltipIdService\n ) {\n super(injector, parentHost);\n\n if (!parentHost) {\n throw new Error('clr-tooltip-content should only be used inside of a clr-tooltip');\n }\n\n // Defaults\n this.position = 'right';\n this.size = 'sm';\n\n // Set the default id in case consumer does not supply a custom id.\n this.updateId(uniqueId);\n }\n\n get id(): string {\n return this._id;\n }\n\n @Input()\n set id(value: string) {\n this.updateId(value || '');\n }\n private _id: string;\n\n private updateId(id: string) {\n this._id = id;\n this.tooltipIdService.updateId(id);\n }\n\n private _position: string;\n\n get position() {\n return this._position;\n }\n\n @Input('clrPosition')\n set position(position: string) {\n // Ugh\n this.renderer.removeClass(this.el.nativeElement, 'tooltip-' + this.position);\n if (position && POSITIONS.indexOf(position) > -1) {\n this._position = position;\n } else {\n this._position = 'right';\n }\n // Ugh\n this.renderer.addClass(this.el.nativeElement, 'tooltip-' + this.position);\n\n // set the popover values based on direction\n switch (position) {\n case 'top-right':\n this.anchorPoint = Point.TOP_CENTER;\n this.popoverPoint = Point.LEFT_BOTTOM;\n break;\n case 'top-left':\n this.anchorPoint = Point.TOP_CENTER;\n this.popoverPoint = Point.RIGHT_BOTTOM;\n break;\n case 'bottom-right':\n this.anchorPoint = Point.BOTTOM_CENTER;\n this.popoverPoint = Point.LEFT_TOP;\n break;\n case 'bottom-left':\n this.anchorPoint = Point.BOTTOM_CENTER;\n this.popoverPoint = Point.RIGHT_TOP;\n break;\n case 'right':\n this.anchorPoint = Point.RIGHT_CENTER;\n this.popoverPoint = Point.LEFT_TOP;\n break;\n case 'left':\n this.anchorPoint = Point.LEFT_CENTER;\n this.popoverPoint = Point.RIGHT_TOP;\n break;\n default:\n this.anchorPoint = Point.RIGHT_CENTER;\n this.popoverPoint = Point.LEFT_TOP;\n break;\n }\n }\n\n private _size: string;\n\n get size() {\n return this._size;\n }\n\n @Input('clrSize')\n set size(size: string) {\n // Ugh\n this.renderer.removeClass(this.el.nativeElement, 'tooltip-' + this.size);\n if (size && SIZES.indexOf(size) > -1) {\n this._size = size;\n } else {\n this._size = 'sm';\n }\n // Ugh\n this.renderer.addClass(this.el.nativeElement, 'tooltip-' + this.size);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, HostListener } from '@angular/core';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { TooltipIdService } from './providers/tooltip-id.service';\nimport { Subscription } from 'rxjs';\n\n@Directive({\n selector: '[clrTooltipTrigger]',\n host: {\n tabindex: '0',\n '[class.tooltip-trigger]': 'true',\n '[attr.aria-describedby]': 'ariaDescribedBy',\n '[attr.role]': '\"button\"',\n },\n})\nexport class ClrTooltipTrigger {\n public ariaDescribedBy: string;\n private subs: Subscription[] = [];\n constructor(private toggleService: ClrPopoverToggleService, private tooltipIdService: TooltipIdService) {\n // The aria-described by comes from the id of content. It\n this.subs.push(this.tooltipIdService.id.subscribe(tooltipId => (this.ariaDescribedBy = tooltipId)));\n }\n\n @HostListener('mouseenter')\n @HostListener('focus')\n showTooltip(): void {\n this.toggleService.open = true;\n }\n\n @HostListener('mouseleave')\n @HostListener('blur')\n hideTooltip(): void {\n this.toggleService.open = false;\n }\n\n ngOnDestroy() {\n this.subs.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrConditionalModule } from '../../utils/conditional/conditional.module';\n\nimport { ClrTooltip } from './tooltip';\nimport { ClrTooltipContent } from './tooltip-content';\nimport { ClrTooltipTrigger } from './tooltip-trigger';\n\nexport const CLR_TOOLTIP_DIRECTIVES: Type<any>[] = [ClrTooltip, ClrTooltipTrigger, ClrTooltipContent];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [CLR_TOOLTIP_DIRECTIVES],\n exports: [CLR_TOOLTIP_DIRECTIVES, ClrConditionalModule, ClrIconModule],\n})\nexport class ClrTooltipModule {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { NgModule } from '@angular/core';\n\nimport { ClrDropdownModule } from './dropdown/dropdown.module';\nimport { ClrSignpostModule } from './signpost/signpost.module';\nimport { ClrTooltipModule } from './tooltip/tooltip.module';\n\n@NgModule({ exports: [ClrDropdownModule, ClrSignpostModule, ClrTooltipModule] })\nexport class ClrPopoverModule {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class ButtonHubService {\n public buttonsReady = false;\n\n private _previousBtnClicked = new Subject<any>();\n public get previousBtnClicked(): Observable<any> {\n return this._previousBtnClicked.asObservable();\n }\n\n private _nextBtnClicked = new Subject<any>();\n public get nextBtnClicked(): Observable<any> {\n return this._nextBtnClicked.asObservable();\n }\n\n private _dangerBtnClicked = new Subject<any>();\n public get dangerBtnClicked(): Observable<any> {\n return this._dangerBtnClicked.asObservable();\n }\n\n private _cancelBtnClicked = new Subject<any>();\n public get cancelBtnClicked(): Observable<any> {\n return this._cancelBtnClicked.asObservable();\n }\n\n private _finishBtnClicked = new Subject<any>();\n public get finishBtnClicked(): Observable<any> {\n return this._finishBtnClicked.asObservable();\n }\n\n private _customBtnClicked = new Subject<any>();\n public get customBtnClicked(): Observable<any> {\n return this._customBtnClicked.asObservable();\n }\n\n public buttonClicked(buttonType: string): void {\n if ('previous' === buttonType) {\n this._previousBtnClicked.next();\n } else if ('next' === buttonType) {\n this._nextBtnClicked.next();\n } else if ('finish' === buttonType) {\n this._finishBtnClicked.next();\n } else if ('danger' === buttonType) {\n this._dangerBtnClicked.next();\n } else if ('cancel' === buttonType) {\n this._cancelBtnClicked.next();\n } else {\n this._customBtnClicked.next(buttonType);\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable, QueryList } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\nimport { ClrWizardPage } from '../wizard-page';\n\n/**\n * PageCollectionService manages the collection of pages assigned to the wizard and offers\n * a number of functions useful across the wizards providers and subcomponents -- all related\n * to essentially lookups on the collection of pages.\n *\n * The easiest way to access PageCollectionService is via the wizard. The\n * following example would allow you to access your instance of the wizard from your host\n * component and thereby access the page collection via YourHostComponent.wizard.pageCollection.\n *\n * @example\n * <clr-wizard #wizard ...>\n *\n * @example\n * export class YourHostComponent {\n * @ViewChild(\"wizard\") wizard: Wizard;\n * ...\n * }\n *\n * The heart of the page collection is the query list of pages, which it is assigned as a\n * reference to the Wizard.pages QueryList when the wizard is created.\n *\n */\n@Injectable()\nexport class PageCollectionService {\n /**\n * A reference to the Wizard.pages QueryList.\n *\n * Populated when the wizard is created.\n *\n * @memberof PageCollectionService\n */\n public pages: QueryList<ClrWizardPage>;\n\n /**\n * Converts the PageCollectionService.pages QueryList to an array and returns it.\n *\n * Useful for many instances when you would prefer a QueryList to act like an array.\n *\n * @memberof PageCollectionService\n */\n public get pagesAsArray(): ClrWizardPage[] {\n return this.pages ? this.pages.toArray() : [];\n }\n\n /**\n * Returns the length of the pages query list.\n *\n * @memberof PageCollectionService\n */\n public get pagesCount(): number {\n return this.pages ? this.pages.length : 0;\n }\n\n /**\n * Returns the next-to-last page in the query list of pages. Operates as a getter\n * so that it isn't working with stale data.\n *\n * @memberof PageCollectionService\n */\n public get penultimatePage(): ClrWizardPage {\n const pageCount = this.pagesCount;\n\n if (pageCount < 2) {\n return null;\n }\n\n return this.pagesAsArray[pageCount - 2];\n }\n\n /**\n * Returns the last page in the query list of pages. Operates as a getter\n * so that it isn't working with stale data.\n *\n * @memberof PageCollectionService\n */\n public get lastPage(): ClrWizardPage {\n const pageCount = this.pagesCount;\n\n if (pageCount < 1) {\n return null;\n }\n\n return this.pagesAsArray[pageCount - 1];\n }\n\n /**\n * Returns the first page in the query list of pages. Operates as a getter\n * so that it isn't working with stale data.\n *\n * @memberof PageCollectionService\n */\n public get firstPage(): ClrWizardPage {\n if (!this.pagesCount) {\n return null;\n }\n\n return this.pagesAsArray[0];\n }\n\n /**\n * Used mostly internally, but accepts a string ID and returns a ClrWizardPage\n * object that matches the ID passed. Note that IDs here should include the prefix\n * \"clr-wizard-page-\".\n *\n * Returns the next-to-last page in the query list of pages. Operates as a getter\n * so that it isn't working with stale data.\n *\n * @memberof PageCollectionService\n */\n public getPageById(id: string): ClrWizardPage {\n const foundPages: ClrWizardPage[] = this.pages.filter((page: ClrWizardPage) => id === page.id);\n return this.checkResults(foundPages, id);\n }\n\n /**\n * Accepts s number as a parameter and treats that number as the index of the page\n * you're looking for in the collection of pages. Returns a wizard page object.\n *\n * @memberof PageCollectionService\n */\n public getPageByIndex(index: number): ClrWizardPage {\n const pageCount = this.pagesCount;\n const pagesLastIndex: number = pageCount > 1 ? pageCount - 1 : 0;\n\n if (index < 0) {\n throw new Error('Cannot retrieve page with index of ' + index);\n }\n\n if (index > pagesLastIndex) {\n throw new Error('Page index is greater than length of pages array.');\n }\n\n return this.pagesAsArray[index];\n }\n\n /**\n * Takes a wizard page object as a parameter and returns its index in the\n * collection of pages.\n *\n * @memberof PageCollectionService\n */\n public getPageIndex(page: ClrWizardPage): number {\n const index = this.pagesAsArray.indexOf(page);\n\n if (index < 0) {\n throw new Error('Requested page cannot be found in collection of pages.');\n }\n\n return index;\n }\n\n /**\n * Consolidates guard logic that prevents a couple of unfortunate edge cases with\n * look ups on the collection of pages.\n *\n * @memberof PageCollectionService\n */\n private checkResults(results: ClrWizardPage[], requestedPageId: string) {\n const foundPagesCount: number = results.length || 0;\n\n if (foundPagesCount > 1) {\n throw new Error('More than one page has the requested id ' + requestedPageId + '.');\n } else if (foundPagesCount < 1) {\n throw new Error('No page can be found with the id ' + requestedPageId + '.');\n } else {\n return results[0];\n }\n }\n\n /**\n * Accepts two numeric indexes and returns an array of wizard page objects that include\n * all wizard pages in the page collection from the first index to the second.\n *\n * @memberof PageCollectionService\n */\n public pageRange(start: number, end: number): ClrWizardPage[] {\n let pages: ClrWizardPage[] = [];\n\n if (start < 0 || end < 0) {\n return [];\n }\n\n if (start === null || typeof start === 'undefined' || isNaN(start)) {\n return [];\n }\n\n if (end === null || typeof end === 'undefined' || isNaN(end)) {\n return [];\n }\n\n if (end > this.pagesCount) {\n end = this.pagesCount;\n }\n\n pages = this.pagesAsArray;\n\n if (end - start === 0) {\n // just return the one page they want\n return [this.getPageByIndex(start)];\n }\n\n // slice end does not include item referenced by end index, which is weird for users\n // incrementing end index here to correct that so users and other methods\n // don't have to think about it\n end = end + 1;\n\n // slice does not return the last one in the range but it does include the first one\n // does not modify original array\n return pages.slice(start, end);\n }\n\n /**\n * Accepts two wizard page objects and returns those page objects with all other page\n * objects between them in the page collection. It doesn't care which page is ahead of the\n * other in the parameters. It will be smart enough to figure that out on its own.\n *\n * @memberof PageCollectionService\n */\n public getPageRangeFromPages(page: ClrWizardPage, otherPage: ClrWizardPage): ClrWizardPage[] {\n const pageIndex = this.getPageIndex(page);\n const otherPageIndex = this.getPageIndex(otherPage);\n let startIndex: number;\n let endIndex: number;\n\n if (pageIndex <= otherPageIndex) {\n startIndex = pageIndex;\n endIndex = otherPageIndex;\n } else {\n startIndex = otherPageIndex;\n endIndex = pageIndex;\n }\n return this.pageRange(startIndex, endIndex);\n }\n\n /**\n * Takes a wizard page object as a parameter and returns the wizard page object of\n * the page immediately before it in the page collection. Returns null if there is\n * no page before the page it is passed.\n *\n * @memberof PageCollectionService\n */\n public getPreviousPage(page: ClrWizardPage) {\n const myPageIndex = this.getPageIndex(page);\n const previousPageIndex = myPageIndex - 1;\n if (previousPageIndex < 0) {\n return null;\n }\n return this.getPageByIndex(previousPageIndex);\n }\n\n /**\n * Accepts a wizard page object as a parameter and returns a Boolean that says if\n * the page you sent it is complete.\n *\n * @memberof PageCollectionService\n */\n public previousPageIsCompleted(page: ClrWizardPage) {\n if (!page) {\n return false;\n }\n\n const previousPage = this.getPreviousPage(page);\n\n if (null === previousPage) {\n // page is the first page. no previous page.\n return true;\n }\n\n return previousPage.completed;\n }\n\n /**\n * Takes a wizard page object as a parameter and returns the wizard page object of\n * the page immediately after it in the page collection. Returns null if there is\n * no page after the page it is passed.\n *\n * @memberof PageCollectionService\n */\n public getNextPage(page: ClrWizardPage) {\n const myPageIndex = this.getPageIndex(page);\n const nextPageIndex = myPageIndex + 1;\n\n if (nextPageIndex >= this.pagesAsArray.length) {\n return null;\n }\n return this.getPageByIndex(nextPageIndex);\n }\n\n /**\n * Takes a wizard page object as a parameter and generates a step item id from the\n * page ID. Returns the generated step item ID as a string.\n *\n * @memberof PageCollectionService\n */\n public getStepItemIdForPage(page: ClrWizardPage) {\n const pageId = page.id;\n const pageIdParts = pageId.split('-').reverse();\n\n pageIdParts[1] = 'step';\n return pageIdParts.reverse().join('-');\n }\n\n /**\n * Generally only used internally to mark that a specific page has been \"committed\".\n * This involves marking the page complete and firing the ClrWizardPage.onCommit\n * (clrWizardPageOnCommit) output. Takes the wizard page object that you intend to\n * mark completed as a parameter.\n *\n * @memberof PageCollectionService\n */\n public commitPage(page: ClrWizardPage) {\n const pageHasOverrides = page.stopNext || page.preventDefault;\n page.completed = true;\n\n if (!pageHasOverrides) {\n // prevent loop of event emission; alternate flows work off\n // of event emitters this is how they break that cycle.\n page.onCommit.emit(page.id);\n }\n }\n\n // used by the navService to navigate back to first possible step after\n // pages are reset\n\n /**\n *\n * @memberof PageCollectionService\n */\n private _pagesReset = new Subject<boolean>();\n\n /**\n * An observable that the navigation service listens to in order to know when\n * the page collection completed states have been reset to false so that way it\n * can also reset the navigation to make the first page in the page collection\n * current/active.\n *\n * @memberof PageCollectionService\n */\n public get pagesReset(): Observable<boolean> {\n return this._pagesReset.asObservable();\n }\n\n /**\n * Sets all completed states of the pages in the page collection to false and\n * notifies the navigation service to likewise reset the navigation.\n *\n * @memberof PageCollectionService\n */\n public reset() {\n this.pagesAsArray.forEach((page: ClrWizardPage) => {\n page.completed = false;\n });\n this._pagesReset.next(true);\n }\n\n /**\n * Rolls through all the pages in the page collection to make sure there are no\n * incomplete pages sandwiched between completed pages in the workflow. Identifies\n * the first incomplete page index and sets all pages behind it to a completed\n * state of false.\n *\n * @memberof PageCollectionService\n */\n public updateCompletedStates(): void {\n const firstIncompleteIndex = this.findFirstIncompletePageIndex();\n\n if (firstIncompleteIndex === this.pagesAsArray.length - 1) {\n // all complete no need to do anything\n return;\n }\n\n this.pagesAsArray.forEach((page: ClrWizardPage, index: number) => {\n if (index > firstIncompleteIndex) {\n page.completed = false;\n }\n });\n }\n\n /**\n * Retrieves the index of the first incomplete page in the page collection.\n *\n * @memberof PageCollectionService\n */\n public findFirstIncompletePageIndex(): number {\n let returnIndex: number = null;\n this.pagesAsArray.forEach((page: ClrWizardPage, index: number) => {\n if (null === returnIndex && false === page.completed) {\n returnIndex = index;\n }\n });\n\n // fallthrough, all completed, return last page\n if (null === returnIndex) {\n returnIndex = this.pagesCount - 1;\n }\n\n return returnIndex;\n }\n\n public findFirstIncompletePage(): ClrWizardPage {\n const myIncompleteIndex = this.findFirstIncompletePageIndex();\n return this.pagesAsArray[myIncompleteIndex];\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable, OnDestroy, TemplateRef } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\nimport { Subscription } from 'rxjs';\n\nimport { ClrWizardPage } from '../wizard-page';\n\nimport { ButtonHubService } from './button-hub.service';\nimport { PageCollectionService } from './page-collection.service';\n\n/**\n * Performs navigation functions for a wizard and manages the current page. Presented as a\n * separate service to encapsulate the behavior of navigating and completing the wizard so\n * that it can be shared across the wizard and its sub-components.\n *\n * The easiest way to access the navigation service is there a reference on your wizard. The\n * Following example would allow you to access your instance of the wizard from your host\n * component and thereby access the navigation service via YourHostComponent.wizard.navService.\n *\n * @example\n * <clr-wizard #wizard ...>\n *\n * @example\n * export class YourHostComponent {\n * @ViewChild(\"wizard\") wizard: Wizard;\n * ...\n * }\n *\n */\n@Injectable()\nexport class WizardNavigationService implements OnDestroy {\n /**\n * Is notified when a previous button is clicked in the wizard. Performs checks\n * before alerting the current page of the button click. Enacts navigation to\n * the previous page if not overridden at the page level.\n *\n * @memberof WizardNavigationService\n */\n public previousButtonSubscription: Subscription;\n\n /**\n * Is notified when a Next button is clicked in the wizard.\n *\n * @memberof WizardNavigationService\n */\n public nextButtonSubscription: Subscription;\n\n /**\n * Is notified when a danger button is clicked in the wizard.\n *\n * @memberof WizardNavigationService\n */\n public dangerButtonSubscription: Subscription;\n\n /**\n * Is notified when a finish button is clicked in the wizard.\n *\n * @memberof WizardNavigationService\n */\n public finishButtonSubscription: Subscription;\n\n /**\n * Is notified when a Custom button is clicked in the wizard.\n *\n * @memberof WizardNavigationService\n */\n public customButtonSubscription: Subscription;\n\n /**\n * Is notified when a Cancel button is clicked in the wizard. Notifies the wizard,\n * which handles all cancel functionality, if cancel is not overridden at the page\n * level.\n *\n * @memberof WizardNavigationService\n */\n public cancelButtonSubscription: Subscription;\n\n /**\n * Resets navigation to make the first page current when the page collection service\n * emits an event notifying WizardNavigationService that it has reset all pages\n * to their pristine, incomplete state.\n *\n * @memberof WizardNavigationService\n */\n public pagesResetSubscription: Subscription;\n\n /**\n * Creates an instance of WizardNavigationService. Also sets up subscriptions\n * that listen to the button service to determine when a button has been clicked\n * in the wizard. Is also responsible for taking action when the page collection\n * requests that navigation be reset to its pristine state.\n *\n * @memberof WizardNavigationService\n */\n constructor(public pageCollection: PageCollectionService, public buttonService: ButtonHubService) {\n this.previousButtonSubscription = this.buttonService.previousBtnClicked.subscribe(() => {\n const currentPage = this.currentPage;\n if (this.currentPageIsFirst || currentPage.previousStepDisabled) {\n return;\n }\n currentPage.previousButtonClicked.emit(currentPage);\n if (!currentPage.preventDefault) {\n this.previous();\n }\n });\n\n this.nextButtonSubscription = this.buttonService.nextBtnClicked.subscribe(() => {\n this.checkAndCommitCurrentPage('next');\n });\n\n this.dangerButtonSubscription = this.buttonService.dangerBtnClicked.subscribe(() => {\n this.checkAndCommitCurrentPage('danger');\n });\n\n this.finishButtonSubscription = this.buttonService.finishBtnClicked.subscribe(() => {\n this.checkAndCommitCurrentPage('finish');\n });\n\n this.customButtonSubscription = this.buttonService.customBtnClicked.subscribe((type: string) => {\n if (!this.wizardStopNavigation) {\n this.currentPage.customButtonClicked.emit(type);\n }\n });\n\n this.cancelButtonSubscription = this.buttonService.cancelBtnClicked.subscribe(() => {\n if (this.wizardStopNavigation) {\n return;\n }\n\n if (this.currentPage.preventDefault) {\n this.currentPage.pageOnCancel.emit(this.currentPage);\n } else {\n this.cancel();\n }\n });\n\n this.pagesResetSubscription = this.pageCollection.pagesReset.subscribe(() => {\n this.setFirstPageCurrent();\n });\n }\n\n /**\n *\n * @memberof WizardNavigationService\n */\n ngOnDestroy(): void {\n this.previousButtonSubscription.unsubscribe();\n this.nextButtonSubscription.unsubscribe();\n this.dangerButtonSubscription.unsubscribe();\n this.finishButtonSubscription.unsubscribe();\n this.customButtonSubscription.unsubscribe();\n this.cancelButtonSubscription.unsubscribe();\n this.pagesResetSubscription.unsubscribe();\n }\n\n /**\n *\n * @memberof WizardNavigationService\n */\n private _currentChanged = new Subject<ClrWizardPage>();\n\n /**\n * An Observable that is predominantly used amongst the subcomponents and services\n * of the wizard. It is recommended that users listen to the ClrWizardPage.onLoad\n * (clrWizardPageOnLoad) output instead of this Observable.\n *\n * @memberof WizardNavigationService\n */\n public get currentPageChanged(): Observable<ClrWizardPage> {\n // TODO: MAKE SURE EXTERNAL OUTPUTS SAY 'CHANGE' NOT 'CHANGED'\n // A BREAKING CHANGE SO AWAITING MINOR RELEASE\n return this._currentChanged.asObservable();\n }\n\n /**\n * A Boolean flag used by the ClrWizardPage to avoid a race condition when pages are\n * loading and there is no current page defined.\n *\n * @memberof WizardNavigationService\n */\n public navServiceLoaded = false;\n\n /**\n * A boolean flag shared across the Wizard subcomponents that follows the value\n * of the Wizard.forceForward (clrWizardForceForwardNavigation) input. When true,\n * navigating backwards in the stepnav menu will reset any skipped pages' completed\n * state to false.\n *\n * This is useful when a wizard executes validation on a page-by-page basis when\n * the next button is clicked.\n *\n * @memberof WizardNavigationService\n */\n public forceForwardNavigation = false;\n\n /**\n * @memberof WizardNavigationService\n */\n public get currentPageTitle(): TemplateRef<any> {\n // when the querylist of pages is empty. this is the first place it fails...\n if (!this.currentPage) {\n return null;\n }\n return this.currentPage.title;\n }\n\n /**\n * Returns a Boolean that tells you whether or not the current page is the first\n * page in the Wizard.\n *\n * This is helpful for determining whether a page is navigable.\n *\n * @memberof WizardNavigationService\n */\n public get currentPageIsFirst(): boolean {\n return this.pageCollection.firstPage === this.currentPage;\n }\n\n /**\n * Returns a Boolean that tells you whether or not the current page is the\n * last page in the Wizard.\n *\n * This is used to determine which buttons should display in the wizard footer.\n *\n * @memberof WizardNavigationService\n */\n public get currentPageIsLast(): boolean {\n return this.pageCollection.lastPage === this.currentPage;\n }\n\n /**\n * @memberof WizardNavigationService\n */\n private _currentPage: ClrWizardPage;\n\n /**\n * Returns the ClrWizardPage object of the current page or null.\n *\n * @memberof WizardNavigationService\n */\n get currentPage(): ClrWizardPage {\n if (!this._currentPage) {\n return null;\n }\n return this._currentPage;\n }\n\n /**\n * Accepts a ClrWizardPage object, since that object to be the current/active\n * page in the wizard, and emits the ClrWizardPage.onLoad (clrWizardPageOnLoad)\n * event for that page.\n *\n * Note that all of this work is bypassed if the ClrWizardPage object is already\n * the current page.\n *\n * @memberof WizardNavigationService\n */\n set currentPage(page: ClrWizardPage) {\n if (this._currentPage !== page && !this.wizardStopNavigation) {\n this._currentPage = page;\n page.onLoad.emit(page.id);\n this._currentChanged.next(page);\n }\n }\n\n /**\n * @memberof WizardNavigationService\n */\n private _movedToNextPage = new Subject<boolean>();\n\n /**\n * An observable used internally to alert the wizard that forward navigation\n * has occurred. It is recommended that you use the Wizard.onMoveNext\n * (clrWizardOnNext) output instead of this one.\n *\n * @memberof WizardNavigationService\n */\n public get movedToNextPage(): Observable<boolean> {\n return this._movedToNextPage.asObservable();\n }\n\n /**\n * @memberof WizardNavigationService\n */\n private _wizardFinished = new Subject<boolean>();\n\n /**\n * An observable used internally to alert the wizard that the nav service\n * has approved completion of the wizard.\n *\n * It is recommended that you use the Wizard.wizardFinished (clrWizardOnFinish)\n * output instead of this one.\n *\n * @memberof WizardNavigationService\n */\n public get wizardFinished(): Observable<boolean> {\n return this._wizardFinished.asObservable();\n }\n\n /**\n * This is a public function that can be used to programmatically advance\n * the user to the next page.\n *\n * When invoked, this method will move the wizard to the next page after\n * successful validation. Note that this method goes through all checks\n * and event emissions as if Wizard.next(false) had been called.\n *\n * In most cases, it makes more sense to use Wizard.next(false).\n *\n * @memberof WizardNavigationService\n */\n public next(): void {\n if (this.currentPageIsLast) {\n this.checkAndCommitCurrentPage('finish');\n } else {\n this.checkAndCommitCurrentPage('next');\n }\n }\n\n /**\n * Bypasses checks and most event emissions to force a page to navigate forward.\n *\n * Comparable to calling Wizard.next() or Wizard.forceNext().\n *\n * @memberof WizardNavigationService\n */\n public forceNext(): void {\n const currentPage: ClrWizardPage = this.currentPage;\n const nextPage: ClrWizardPage = this.pageCollection.getNextPage(currentPage);\n\n // catch errant null or undefineds that creep in\n if (!nextPage) {\n throw new Error('The wizard has no next page to go to.');\n }\n\n if (this.wizardStopNavigation) {\n return;\n }\n\n if (!currentPage.completed) {\n // this is a state that alt next flows can get themselves in...\n this.pageCollection.commitPage(currentPage);\n }\n this.currentPage = nextPage;\n }\n\n /**\n * Accepts a button/action type as a parameter. Encapsulates all logic for\n * event emissions, state of the current page, and wizard and page level overrides.\n *\n * Avoid calling this function directly unless you really know what you're doing.\n *\n * @memberof WizardNavigationService\n */\n public checkAndCommitCurrentPage(buttonType: string): void {\n const currentPage: ClrWizardPage = this.currentPage;\n\n if (!currentPage.readyToComplete || this.wizardStopNavigation) {\n return;\n }\n\n const iAmTheLastPage = this.currentPageIsLast;\n\n const isNext = buttonType === 'next';\n const isDanger = buttonType === 'danger';\n const isDangerNext = isDanger && !iAmTheLastPage;\n const isDangerFinish = isDanger && iAmTheLastPage;\n const isFinish = buttonType === 'finish' || isDangerFinish;\n\n if (isFinish && !iAmTheLastPage) {\n return;\n }\n\n currentPage.primaryButtonClicked.emit(buttonType);\n\n if (isFinish) {\n currentPage.finishButtonClicked.emit(currentPage);\n } else if (isDanger) {\n currentPage.dangerButtonClicked.emit();\n } else if (isNext) {\n currentPage.nextButtonClicked.emit();\n }\n\n if (currentPage.stopNext || currentPage.preventDefault) {\n currentPage.onCommit.emit(currentPage.id);\n return;\n }\n\n // order is very important with these emitters!\n if (isFinish) {\n // mark page as complete\n if (!this.wizardHasAltNext) {\n this.pageCollection.commitPage(currentPage);\n }\n this._wizardFinished.next();\n }\n\n if (this.wizardHasAltNext) {\n this.pageCollection.commitPage(currentPage);\n\n if (isNext || isDangerNext) {\n this._movedToNextPage.next(true);\n }\n // jump out here, no matter what type we're looking at\n return;\n }\n\n if (isNext || isDangerNext) {\n this.forceNext();\n }\n\n if (!this.wizardHasAltNext && !this.wizardStopNavigation) {\n this._movedToNextPage.next(true);\n }\n }\n\n /**\n * This is a public function that can be used to programmatically conclude\n * the wizard.\n *\n * When invoked, this method will initiate the work involved with finalizing\n * and finishing the wizard workflow. Note that this method goes through all\n * checks and event emissions as if Wizard.finish(false) had been called.\n *\n * In most cases, it makes more sense to use Wizard.finish(false).\n *\n * @memberof WizardNavigationService\n */\n public finish(): void {\n this.checkAndCommitCurrentPage('finish');\n }\n\n /**\n * @memberof WizardNavigationService\n */\n private _movedToPreviousPage = new Subject<boolean>();\n\n /**\n * Notifies the wizard when backwards navigation has occurred via the\n * previous button.\n *\n * @memberof WizardNavigationService\n */\n public get movedToPreviousPage(): Observable<boolean> {\n return this._movedToPreviousPage.asObservable();\n }\n\n /**\n * Programmatically moves the wizard to the page before the current page.\n *\n * In most instances, it makes more sense to call Wizard.previous()\n * which does the same thing.\n *\n * @memberof WizardNavigationService\n */\n public previous(): void {\n if (this.currentPageIsFirst || this.wizardStopNavigation) {\n return;\n }\n\n const previousPage = this.pageCollection.getPreviousPage(this.currentPage);\n\n if (!previousPage) {\n return;\n }\n\n this._movedToPreviousPage.next(true);\n\n if (this.forceForwardNavigation) {\n this.currentPage.completed = false;\n }\n\n this.currentPage = previousPage;\n }\n\n /**\n * @memberof WizardNavigationService\n */\n private _cancelWizard = new Subject<any>();\n\n /**\n * Notifies the wizard that a user is trying to cancel it.\n *\n * @memberof WizardNavigationService\n */\n public get notifyWizardCancel(): Observable<any> {\n return this._cancelWizard.asObservable();\n }\n\n /**\n * Allows a hook into the cancel workflow of the wizard from the nav service. Note that\n * this route goes through all checks and event emissions as if a cancel button had\n * been clicked.\n *\n * In most cases, users looking for a hook into the cancel routine are actually looking\n * for a way to close the wizard from their host component because they have prevented\n * the default cancel action.\n *\n * In this instance, it is recommended that you use Wizard.close() to avoid any event\n * emission loop resulting from an event handler calling back into routine that will\n * again evoke the events it handles.\n *\n * @memberof WizardNavigationService\n */\n public cancel(): void {\n this._cancelWizard.next();\n }\n\n /**\n * A boolean flag shared across the Wizard subcomponents that follows the value\n * of the Wizard.stopCancel (clrWizardPreventDefaultCancel) input. When true, the cancel\n * routine is subverted and must be reinstated in the host component calling Wizard.close()\n * at some point.\n *\n * @memberof WizardNavigationService\n */\n public wizardHasAltCancel = false;\n\n /**\n * A boolean flag shared across the Wizard subcomponents that follows the value\n * of the Wizard.stopNext (clrWizardPreventDefaultNext) input. When true, the next and finish\n * routines are subverted and must be reinstated in the host component calling Wizard.next(),\n * Wizard.forceNext(), Wizard.finish(), or Wizard.forceFinish().\n *\n * @memberof WizardNavigationService\n */\n public wizardHasAltNext = false;\n\n /**\n * A boolean flag shared across the Wizard subcomponents that follows the value\n * of the Wizard.stopNavigation (clrWizardPreventNavigation) input. When true, all\n * navigational elements in the wizard are disabled.\n *\n * This is intended to freeze the wizard in place. Events are not fired so this is\n * not a way to implement alternate functionality for navigation.\n *\n * @memberof WizardNavigationService\n */\n public wizardStopNavigation = false;\n\n /**\n * A boolean flag shared with the stepnav items that prevents user clicks on\n * stepnav items from navigating the wizard.\n *\n * @memberof WizardNavigationService\n */\n public wizardDisableStepnav = false;\n\n /**\n * Performs all required checks to determine if a user can navigate to a page. Checking at each\n * point if a page is navigable -- completed where the page immediately after the last completed\n * page.\n *\n * Takes two parameters. The first one must be either the ClrWizardPage object or the ID of the\n * ClrWizardPage object that you want to make the current page.\n *\n * The second parameter is optional and is a Boolean flag for \"lazy completion\". What this means\n * is the Wizard will mark all pages between the current page and the page you want to navigate\n * to as completed. This is useful for informational wizards that do not require user action,\n * allowing an easy means for users to jump ahead.\n *\n * To avoid checks on navigation, use ClrWizardPage.makeCurrent() instead.\n *\n * @memberof WizardNavigationService\n */\n public goTo(pageToGoToOrId: any, lazyComplete = false) {\n const myPages = this.pageCollection;\n const pageToGoTo = typeof pageToGoToOrId === 'string' ? myPages.getPageById(pageToGoToOrId) : pageToGoToOrId;\n const currentPage = this.currentPage;\n\n // no point in going to the current page. you're there already!\n // also hard block on any navigation when stopNavigation is true\n if (pageToGoTo === currentPage || this.wizardStopNavigation) {\n return;\n }\n\n const currentPageIndex = myPages.getPageIndex(currentPage);\n const goToPageIndex = myPages.getPageIndex(pageToGoTo);\n const goingForward = goToPageIndex > currentPageIndex;\n const pagesToCheck = myPages.getPageRangeFromPages(this.currentPage, pageToGoTo);\n const okayToMove = lazyComplete || this.canGoTo(pagesToCheck);\n\n if (!okayToMove) {\n return;\n }\n\n if (goingForward && lazyComplete) {\n pagesToCheck.forEach((page: ClrWizardPage) => {\n if (page !== pageToGoTo) {\n page.completed = true;\n }\n });\n } else if (!goingForward && this.forceForwardNavigation) {\n pagesToCheck.forEach((page: ClrWizardPage) => {\n page.completed = false;\n });\n }\n\n this.currentPage = pageToGoTo;\n }\n\n /**\n * Accepts a range of ClrWizardPage objects as a parameter. Performs the work of checking\n * those objects to determine if navigation can be accomplished.\n *\n * @memberof WizardNavigationService\n */\n public canGoTo(pagesToCheck: ClrWizardPage[]): boolean {\n let okayToMove = true;\n const myPages = this.pageCollection;\n\n // previous page can be important when moving because if it's completed it\n // allows us to move to the page even if it's incomplete...\n let previousPagePasses: boolean;\n\n if (!pagesToCheck || pagesToCheck.length < 1) {\n return false;\n }\n\n pagesToCheck.forEach((page: ClrWizardPage) => {\n if (!okayToMove) {\n return;\n }\n\n if (page.completed) {\n // default is true. just jump out instead of complicating it.\n return;\n }\n\n // so we know our page is not completed...\n const previousPage = myPages.getPageIndex(page) > 0 ? myPages.getPreviousPage(page) : null;\n previousPagePasses = previousPage === null || previousPage.completed === true;\n\n // we are false if not the current page AND previous page is not completed\n // (but must have a previous page)\n if (!page.current && !previousPagePasses) {\n okayToMove = false;\n }\n // falls through to true as default\n });\n\n return okayToMove;\n }\n\n /**\n * Looks through the collection of pages to find the first one that is incomplete\n * and makes that page the current/active page.\n *\n * @memberof WizardNavigationService\n */\n public setLastEnabledPageCurrent(): void {\n const allPages: ClrWizardPage[] = this.pageCollection.pagesAsArray;\n let lastCompletedPageIndex: number = null;\n\n allPages.forEach((page: ClrWizardPage, index: number) => {\n if (page.completed) {\n lastCompletedPageIndex = index;\n }\n });\n\n if (lastCompletedPageIndex === null) {\n // always is at least the first item...\n lastCompletedPageIndex = 0;\n } else if (lastCompletedPageIndex + 1 < allPages.length) {\n lastCompletedPageIndex = lastCompletedPageIndex + 1;\n }\n\n this.currentPage = allPages[lastCompletedPageIndex];\n }\n\n /**\n * Finds the first page in the collection of pages and makes that page the\n * current/active page.\n *\n * @memberof WizardNavigationService\n */\n public setFirstPageCurrent(): void {\n this.currentPage = this.pageCollection.pagesAsArray[0];\n }\n\n /**\n * Updates the stepnav on the left side of the wizard when pages are dynamically\n * added or removed from the collection of pages.\n *\n * @memberof WizardNavigationService\n */\n public updateNavigation(): void {\n let toSetCurrent: ClrWizardPage;\n\n this.pageCollection.updateCompletedStates();\n\n const currentPageRemoved = this.pageCollection.pagesAsArray.indexOf(this.currentPage) < 0;\n if (currentPageRemoved) {\n toSetCurrent = this.pageCollection.findFirstIncompletePage();\n this.currentPage = toSetCurrent;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable, QueryList } from '@angular/core';\nimport { ClrWizardHeaderAction } from '../wizard-header-action';\nimport { WizardNavigationService } from './wizard-navigation.service';\n\n@Injectable()\nexport class HeaderActionService {\n // this service communicates information about the presence/display of header actions\n // across the wizard\n\n constructor(public navService: WizardNavigationService) {}\n\n public wizardHeaderActions: QueryList<ClrWizardHeaderAction>;\n\n public get wizardHasHeaderActions(): boolean {\n const wizardHdrActions = this.wizardHeaderActions;\n if (!wizardHdrActions) {\n return false;\n }\n return wizardHdrActions.toArray().length > 0;\n }\n\n public get currentPageHasHeaderActions(): boolean {\n return this.navService.currentPage ? this.navService.currentPage.hasHeaderActions : false;\n }\n\n public get showWizardHeaderActions(): boolean {\n return !this.currentPageHasHeaderActions && this.wizardHasHeaderActions;\n }\n\n public get displayHeaderActionsWrapper(): boolean {\n return this.currentPageHasHeaderActions || this.wizardHasHeaderActions;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\n\nlet wizardHeaderActionIndex = 0;\n\n@Component({\n selector: 'clr-wizard-header-action',\n template: `\n <button\n type=\"button\"\n class=\"btn clr-wizard-header-action btn-link\"\n [id]=\"id\"\n [class.disabled]=\"disabled\"\n (click)=\"click()\"\n [title]=\"title\"\n >\n <ng-content></ng-content>\n </button>\n `,\n host: { class: 'clr-wizard-header-action-wrapper' },\n})\nexport class ClrWizardHeaderAction {\n // title is explanatory text added to the header action\n @Input('title') title = '';\n\n // If our host has an ID attribute, we use this instead of our index.\n @Input('id') _id: string = (wizardHeaderActionIndex++).toString();\n\n public get id(): string {\n return `clr-wizard-header-action-${this._id}`;\n }\n\n @Input('clrWizardHeaderActionDisabled') public disabled = false;\n\n @Output('actionClicked') headerActionClicked: EventEmitter<string> = new EventEmitter(false);\n\n click(): void {\n if (this.disabled) {\n return;\n }\n\n // passing the header action id allows users to have one method that\n // routes to many different actions based on the type of header action\n // clicked. this is further aided by users being able to specify ids\n // for their header actions.\n this.headerActionClicked.emit(this._id);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: '[clrPageButtons]' })\nexport class ClrWizardPageButtons {\n constructor(public pageButtonsTemplateRef: TemplateRef<any>) {}\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: '[clrPageHeaderActions]' })\nexport class ClrWizardPageHeaderActions {\n constructor(public pageHeaderActionsTemplateRef: TemplateRef<any>) {}\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: '[clrPageNavTitle]' })\nexport class ClrWizardPageNavTitle {\n constructor(public pageNavTitleTemplateRef: TemplateRef<any>) {}\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, TemplateRef } from '@angular/core';\n\n@Directive({ selector: '[clrPageTitle]' })\nexport class ClrWizardPageTitle {\n constructor(public pageTitleTemplateRef: TemplateRef<any>) {}\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ContentChild, EventEmitter, Input, OnInit, Output, TemplateRef } from '@angular/core';\n\nimport { ButtonHubService } from './providers/button-hub.service';\nimport { PageCollectionService } from './providers/page-collection.service';\nimport { WizardNavigationService } from './providers/wizard-navigation.service';\nimport { ClrWizardPageButtons } from './wizard-page-buttons';\nimport { ClrWizardPageHeaderActions } from './wizard-page-header-actions';\nimport { ClrWizardPageNavTitle } from './wizard-page-navtitle';\nimport { ClrWizardPageTitle } from './wizard-page-title';\n\nlet wizardPageIndex = 0;\n\n/**\n * The ClrWizardPage component is responsible for displaying the content of each step\n * in the wizard workflow.\n *\n * ClrWizardPage component has hooks into the navigation service (ClrWizardPage.navService),\n * page collection (ClrWizardPage.pageCollection), and button service\n * (ClrWizardPage.buttonService). These three providers are shared across the components\n * within each instance of a Wizard.\n *\n */\n@Component({\n selector: 'clr-wizard-page',\n template: '<ng-content></ng-content>',\n host: {\n '[id]': 'id',\n '[attr.aria-hidden]': '!current',\n '[attr.aria-labelledby]': 'stepItemId',\n '[class.active]': 'current',\n '[class.clr-wizard-page]': 'true',\n },\n})\nexport class ClrWizardPage implements OnInit {\n /**\n * Creates an instance of ClrWizardPage.\n *\n * @memberof WizardPage\n */\n constructor(\n private navService: WizardNavigationService,\n public pageCollection: PageCollectionService,\n public buttonService: ButtonHubService\n ) {}\n\n /**\n * Contains a reference to the page title which is used for a number\n * of different tasks for display in the wizard.\n *\n * @memberof WizardPage\n *\n */\n @ContentChild(ClrWizardPageTitle, { static: true })\n public pageTitle: ClrWizardPageTitle;\n\n /**\n * Contains a reference to the desired title for the page's step in the\n * navigation on the left side of the wizard. Can be projected to change the\n * navigation link's text.\n *\n * If not defined, then ClrWizardPage.pageTitle will be displayed in the stepnav.\n *\n * @memberof WizardPage\n *\n */\n @ContentChild(ClrWizardPageNavTitle, { static: true })\n public pageNavTitle: ClrWizardPageNavTitle;\n\n /**\n * Contains a reference to the buttons defined within the page. If not defined,\n * the wizard defaults to the set of buttons defined as a direct child of the\n * wizard.\n *\n * @memberof WizardPage\n *\n */\n @ContentChild(ClrWizardPageButtons, { static: true })\n public _buttons: ClrWizardPageButtons;\n\n /**\n * Contains a reference to the header actions defined within the page. If not defined,\n * the wizard defaults to the set of header actions defined as a direct child of the\n * wizard.\n *\n * @memberof WizardPage\n *\n */\n @ContentChild(ClrWizardPageHeaderActions, { static: true })\n public _headerActions: ClrWizardPageHeaderActions;\n\n /**\n *\n * @memberof WizardPage\n *\n */\n private _nextStepDisabled = false;\n\n /**\n * A getter that tells whether or not the wizard should be allowed\n * to move to the next page.\n *\n * Useful for in-page validation because it prevents forward navigation\n * and visibly disables the next button.\n *\n * Does not require that you re-implement navigation routines like you\n * would if you were using ClrWizardPage.preventDefault or\n * Wizard.preventDefault.\n *\n * @memberof WizardPage\n *\n */\n public get nextStepDisabled(): boolean {\n return this._nextStepDisabled;\n }\n\n /**\n * Sets whether the page should allow forward navigation.\n *\n * @memberof WizardPage\n *\n */\n @Input('clrWizardPageNextDisabled')\n public set nextStepDisabled(val: boolean) {\n const valBool = !!val;\n if (valBool !== this._nextStepDisabled) {\n this._nextStepDisabled = valBool;\n this.nextStepDisabledChange.emit(valBool);\n }\n }\n\n /**\n * Emits when the value of ClrWizardPage.nextStepDisabled changes.\n * Should emit the new value of nextStepDisabled.\n *\n * @memberof WizardPage\n *\n */\n @Output('clrWizardPageNextDisabledChange') nextStepDisabledChange: EventEmitter<boolean> = new EventEmitter();\n\n /**\n *\n * @memberof WizardPage\n *\n */\n private _previousStepDisabled = false;\n\n /**\n * A getter that tells whether or not the wizard should be allowed\n * to move to the previous page.\n *\n * Useful for in-page validation because it prevents backward navigation\n * and visibly disables the previous button.\n *\n * Does not require that you re-implement navigation routines like you\n * would if you were using ClrWizardPage.preventDefault or\n * Wizard.preventDefault.\n *\n * @memberof WizardPage\n *\n */\n public get previousStepDisabled(): boolean {\n return this._previousStepDisabled;\n }\n\n /**\n * Sets whether the page should allow backward navigation.\n *\n * @memberof WizardPage\n *\n */\n @Input('clrWizardPagePreviousDisabled')\n public set previousStepDisabled(val: boolean) {\n const valBool = !!val;\n if (valBool !== this._previousStepDisabled) {\n this._previousStepDisabled = valBool;\n this.previousStepDisabledChange.emit(valBool);\n }\n }\n\n /**\n * Emits when the value of ClrWizardPage.previousStepDisabled changes.\n * Should emit the new value of previousStepDisabled.\n *\n * @memberof WizardPage\n *\n */\n @Output('clrWizardPagePreviousDisabledChange')\n public previousStepDisabledChange: EventEmitter<boolean> = new EventEmitter();\n\n /**\n *\n * @memberof WizardPage\n *\n */\n private _hasError = false;\n\n /**\n * A getter that tells whether or not the page has an error.\n *\n * @memberof WizardPage\n *\n */\n public get hasError(): boolean {\n return this._hasError;\n }\n\n /**\n * Sets whether the page has an error and also resolve the \"falsy\" value. The\n * current logic treat a \"0\" or an empty string as false and likewise will treat any\n * \"truthy\" value as true.\n *\n * @memberof WizardPage\n *\n */\n @Input('clrWizardPageHasError')\n public set hasError(val: boolean) {\n const valBool = !!val;\n if (valBool !== this._hasError) {\n this._hasError = valBool;\n }\n }\n\n /**\n * Overrides all actions from the page level, so you can use an alternate function for\n * validation or data-munging with a ClrWizardPage.onCommit (clrWizardPageOnCommit output),\n * ClrWizardPage.onCancel (clrWizardPageOnCancel output), or one\n * of the granular page-level button click event emitters.\n *\n * @memberof WizardPage\n *\n */\n @Input('clrWizardPagePreventDefault') public preventDefault: boolean | string = false;\n\n /**\n *\n * @memberof WizardPage\n *\n */\n private _stopCancel = false;\n\n /**\n * A getter that retrieves whether the page is preventing the cancel action.\n *\n * @memberof WizardPage\n *\n */\n public get stopCancel(): boolean {\n return this._stopCancel;\n }\n\n /**\n * Overrides the cancel action from the page level. Allows you to use an\n * alternate function for validation or data-munging before cancelling the\n * wizard when combined with the ClrWizardPage.onCancel\n * (the clrWizardPageOnCancel output).\n *\n * Requires that you manually close the wizard from your host component,\n * usually with a call to Wizard.forceNext() or wizard.next();\n *\n * @memberof ClrWizardPage\n */\n @Input('clrWizardPagePreventDefaultCancel')\n public set stopCancel(val: boolean) {\n const valBool = !!val;\n if (valBool !== this._stopCancel) {\n this._stopCancel = valBool;\n this.stopCancelChange.emit(valBool);\n }\n }\n\n /**\n *\n * @memberof WizardPage\n *\n */\n @Output('clrWizardPagePreventDefaultCancelChange') stopCancelChange: EventEmitter<boolean> = new EventEmitter();\n\n /**\n *\n * @memberof WizardPage\n *\n */\n private _stopNext = false;\n\n /**\n * A getter that tells you whether the page is preventing the next action.\n *\n * @memberof WizardPage\n *\n */\n public get stopNext(): boolean {\n return this._stopNext;\n }\n\n /**\n * Overrides forward navigation from the page level. Allows you to use an\n * alternate function for validation or data-munging before moving the\n * wizard to the next pagewhen combined with the ClrWizardPage.onCommit\n * (clrWizardPageOnCommit) or ClrWizardPage.nextButtonClicked\n * (clrWizardPageNext) outputs.\n *\n * Requires that you manually tell the wizard to navigate forward from\n * the hostComponent, usually with a call to Wizard.forceNext() or\n * wizard.next();\n *\n * @memberof ClrWizardPage\n */\n @Input('clrWizardPagePreventDefaultNext')\n public set stopNext(val: boolean) {\n const valBool = !!val;\n if (valBool !== this._stopNext) {\n this._stopNext = valBool;\n }\n }\n\n /**\n * An event emitter carried over from a legacy version of ClrWizardPage.\n * Fires an event on ClrWizardPage whenever the next or finish buttons\n * are clicked and the page is the current page of the Wizard.\n *\n * Note that this does not automatically emit an event when a custom\n * button is used in place of a next or finish button.\n *\n * @memberof WizardPage\n *\n */\n @Output('clrWizardPageOnCommit') onCommit: EventEmitter<string> = new EventEmitter<string>(false);\n\n /**\n * Emits an event when ClrWizardPage becomes the current page of the\n * Wizard.\n *\n * @memberof WizardPage\n *\n */\n @Output('clrWizardPageOnLoad') onLoad: EventEmitter<string> = new EventEmitter();\n\n /**\n * Emits an event when the ClrWizardPage invokes the cancel routine for the wizard.\n *\n * Can be used in conjunction with the ClrWizardPage.stopCancel\n * (clrWizardPagePreventDefaultCancel) or ClrWizardPage.preventDefault\n * (clrWizardPagePagePreventDefault) inputs to implement custom cancel\n * functionality at the page level. This is useful if you would like to do\n * validation, save data, or warn users before cancelling the wizard.\n *\n * Note that this requires you to call Wizard.close() from the host component.\n * This constitues a full replacement of the cancel functionality.\n *\n * @memberof WizardPage\n *\n */\n @Output('clrWizardPageOnCancel') pageOnCancel: EventEmitter<ClrWizardPage> = new EventEmitter();\n\n /**\n * Emits an event when the finish button is clicked and the ClrWizardPage is\n * the wizard's current page.\n *\n * Can be used in conjunction with the ClrWizardPage.preventDefault\n * (clrWizardPagePagePreventDefault) input to implement custom finish\n * functionality at the page level. This is useful if you would like to do\n * validation, save data, or warn users before allowing them to complete\n * the wizard.\n *\n * Note that this requires you to call Wizard.finish() or Wizard.forceFinish()\n * from the host component. This combination creates a full replacement of\n * the finish functionality.\n *\n * @memberof WizardPage\n *\n */\n @Output('clrWizardPageFinish') finishButtonClicked: EventEmitter<ClrWizardPage> = new EventEmitter();\n\n /**\n * Emits an event when the previous button is clicked and the ClrWizardPage is\n * the wizard's current page.\n *\n * Can be used in conjunction with the ClrWizardPage.preventDefault\n * (clrWizardPagePagePreventDefault) input to implement custom backwards\n * navigation at the page level. This is useful if you would like to do\n * validation, save data, or warn users before allowing them to go\n * backwards in the wizard.\n *\n * Note that this requires you to call Wizard.previous()\n * from the host component. This combination creates a full replacement of\n * the backwards navigation functionality.\n *\n * @memberof WizardPage\n *\n */\n @Output('clrWizardPagePrevious') previousButtonClicked: EventEmitter<ClrWizardPage> = new EventEmitter();\n\n /**\n * Emits an event when the next button is clicked and the ClrWizardPage is\n * the wizard's current page.\n *\n * Can be used in conjunction with the ClrWizardPage.preventDefault\n * (clrWizardPagePagePreventDefault) input to implement custom forwards\n * navigation at the page level. This is useful if you would like to do\n * validation, save data, or warn users before allowing them to go\n * to the next page in the wizard.\n *\n * Note that this requires you to call Wizard.forceNext() or Wizard.next()\n * from the host component. This combination creates a full replacement of\n * the forward navigation functionality.\n *\n * @memberof WizardPage\n *\n */\n @Output('clrWizardPageNext') nextButtonClicked: EventEmitter<ClrWizardPage> = new EventEmitter();\n\n /**\n * Emits an event when a danger button is clicked and the ClrWizardPage is\n * the wizard's current page. By default, a danger button will act as\n * either a \"next\" or \"finish\" button depending on if the ClrWizardPage is the\n * last page or not.\n *\n * Can be used in conjunction with the ClrWizardPage.preventDefault\n * (clrWizardPagePagePreventDefault) input to implement custom forwards\n * or finish navigation at the page level when the danger button is clicked.\n * This is useful if you would like to do validation, save data, or warn\n * users before allowing them to go to the next page in the wizard or\n * finish the wizard.\n *\n * Note that this requires you to call Wizard.finish(), Wizard.forceFinish(),\n * Wizard.forceNext() or Wizard.next() from the host component. This\n * combination creates a full replacement of the forward navigation and\n * finish functionality.\n *\n * @memberof WizardPage\n *\n */\n @Output('clrWizardPageDanger') dangerButtonClicked: EventEmitter<ClrWizardPage> = new EventEmitter();\n\n /**\n * Emits an event when a next, finish, or danger button is clicked and the\n * ClrWizardPage is the wizard's current page.\n *\n * Can be used in conjunction with the ClrWizardPage.preventDefault\n * (clrWizardPagePagePreventDefault) input to implement custom forwards\n * or finish navigation at the page level, regardless of the type of\n * primary button.\n *\n * This is useful if you would like to do validation, save data, or warn\n * users before allowing them to go to the next page in the wizard or\n * finish the wizard.\n *\n * Note that this requires you to call Wizard.finish(), Wizard.forceFinish(),\n * Wizard.forceNext() or Wizard.next() from the host component. This\n * combination creates a full replacement of the forward navigation and\n * finish functionality.\n *\n * @memberof WizardPage\n *\n */\n @Output('clrWizardPagePrimary') primaryButtonClicked: EventEmitter<string> = new EventEmitter();\n\n @Output('clrWizardPageCustomButton') customButtonClicked: EventEmitter<string> = new EventEmitter();\n\n /**\n * An input value that is used internally to generate the ClrWizardPage ID as\n * well as the step nav item ID.\n *\n * Typed as any because it should be able to accept numbers as well as\n * strings. Passing an index for wizard whose pages are created with an\n * ngFor loop is a common use case.\n *\n * @memberof WizardPage\n *\n */\n @Input('id') _id: any = (wizardPageIndex++).toString();\n\n /**\n * A read-only getter that generates an ID string for the wizard page from\n * either the value passed to the ClrWizardPage \"id\" input or a wizard page\n * counter shared across all wizard pages in the application.\n *\n * Note that the value passed into the ID input Will be prefixed with\n * \"clr-wizard-page-\".\n *\n * @readonly\n *\n * @memberof ClrWizardPage\n */\n public get id(): string {\n // covers things like null, undefined, false, and empty string\n // while allowing zero to pass\n const idIsNonZeroFalsy = !this._id && this._id !== 0;\n\n // in addition to non-zero falsy we also want to make sure _id is not a negative\n // number.\n if (idIsNonZeroFalsy || this._id < 0) {\n // guard here in the event that input becomes undefined or null by accident\n this._id = (wizardPageIndex++).toString();\n }\n return `clr-wizard-page-${this._id}`;\n }\n\n /**\n * A read-only getter that serves as a convenience for those who would rather\n * not think in the terms of !ClrWizardPage.nextStepDisabled. For some use cases,\n * ClrWizardPage.readyToComplete is more logical and declarative.\n *\n * @memberof WizardPage\n *\n */\n public get readyToComplete(): boolean {\n return !this.nextStepDisabled;\n }\n\n /**\n *\n * @memberof WizardPage\n *\n */\n private _complete = false;\n\n /**\n * A page is marked as completed if it is both readyToComplete and completed,\n * as in the next or finish action has been executed while this page was current.\n *\n * Note there is and open question about how to handle pages that are marked\n * complete but who are no longer readyToComplete. This might indicate an error\n * state for the ClrWizardPage. Currently, the wizard does not acknowledge this state\n * and only returns that the page is incomplete.\n *\n * @memberof WizardPage\n *\n */\n public get completed(): boolean {\n return this._complete && this.readyToComplete;\n\n // FOR V2: UNWIND COMPLETED, READYTOCOMPLETE, AND ERRORS\n // SUCH THAT ERRORS IS ITS OWN INPUT. IF A STEP IS\n // INCOMPLETE AND ERRORED, ERRORED WILL NOT SHOW.\n // FIRST QUESTION: AM I GREY OR COLORED?\n // SECOND QUESTION: AM I GREEN OR RED?\n }\n\n /**\n * A ClrWizardPage can be manually set to completed using this boolean setter.\n * It is recommended that users rely on the convenience functions in the wizard\n * and navigation service instead of manually setting pages’ completion state.\n *\n * @memberof ClrWizardPage\n */\n public set completed(value: boolean) {\n this._complete = value;\n }\n\n /**\n * Checks with the navigation service to see if it is the current page.\n *\n * @memberof WizardPage\n *\n */\n public get current(): boolean {\n return this.navService.currentPage === this;\n }\n\n public get disabled(): boolean {\n return !this.enabled;\n }\n\n /**\n * A read-only getter that returns whether or not the page is navigable\n * in the wizard. A wizard page can be navigated to if it is completed\n * or the page before it is completed.\n *\n * This getter handles the logic for enabling or disabling the links in\n * the step nav on the left Side of the wizard.\n *\n * @memberof WizardPage\n *\n */\n public get enabled(): boolean {\n return this.current || this.completed || this.previousCompleted;\n }\n\n /**\n * A read-only getter that returns whether or not the page before this\n * ClrWizardPage is completed. This is useful for determining whether or not\n * a page is navigable if it is not current or already completed.\n *\n * @memberof WizardPage\n *\n */\n public get previousCompleted(): boolean {\n const previousPage = this.pageCollection.getPreviousPage(this);\n\n if (!previousPage) {\n return true;\n }\n\n return previousPage.completed;\n }\n\n /**\n *\n * @memberof WizardPage\n *\n */\n public get title(): TemplateRef<any> {\n return this.pageTitle.pageTitleTemplateRef;\n }\n\n /**\n *\n * @memberof WizardPage\n *\n */\n public get navTitle(): TemplateRef<any> {\n if (this.pageNavTitle) {\n return this.pageNavTitle.pageNavTitleTemplateRef;\n }\n return this.pageTitle.pageTitleTemplateRef;\n }\n\n /**\n *\n * @memberof WizardPage\n *\n */\n public get headerActions(): TemplateRef<any> {\n if (!this._headerActions) {\n return undefined;\n }\n return this._headerActions.pageHeaderActionsTemplateRef;\n }\n\n /**\n *\n * @memberof WizardPage\n *\n */\n public get hasHeaderActions(): boolean {\n return !!this._headerActions;\n }\n\n /**\n *\n * @memberof WizardPage\n *\n */\n public get buttons(): TemplateRef<any> {\n if (!this._buttons) {\n return undefined;\n }\n return this._buttons.pageButtonsTemplateRef;\n }\n\n /**\n * A read-only getter that returns a boolean that says whether or\n * not the ClrWizardPage includes buttons. Used to determine if the\n * Wizard should override the default button set defined as\n * its direct children.\n *\n * @memberof WizardPage\n *\n */\n public get hasButtons(): boolean {\n return !!this._buttons;\n }\n\n /**\n * Uses the nav service to make the ClrWizardPage the current page in the\n * wizard. Bypasses all checks but still emits the ClrWizardPage.onLoad\n * (clrWizardPageOnLoad) output.\n *\n * In most cases, it is better to use the default navigation functions\n * in Wizard.\n *\n * @memberof WizardPage\n *\n */\n public makeCurrent(): void {\n this.navService.currentPage = this;\n }\n\n /**\n * Links the nav service and establishes the current page if one is not defined.\n *\n * @memberof WizardPage\n *\n */\n public ngOnInit(): void {\n const navService = this.navService;\n if (!navService.currentPage && !navService.navServiceLoaded) {\n this.makeCurrent();\n this.navService.navServiceLoaded = true;\n }\n }\n\n /**\n * A read-only getter that returns the id used by the step nav item associated with the page.\n *\n * ClrWizardPage needs this ID string for aria information.\n *\n * @memberof WizardPage\n *\n */\n public get stepItemId(): string {\n return this.pageCollection.getStepItemIdForPage(this);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport const defaultAnimationTiming = '0.2s ease-in-out';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { animate, AnimationMetadata, state, style, transition } from '@angular/animations';\n\nimport { defaultAnimationTiming } from './../constants';\n\nexport function collapse(): AnimationMetadata[] {\n 'use strict';\n return [\n state('true', style({ height: 0, 'overflow-y': 'hidden' })),\n transition('true => false', [animate(defaultAnimationTiming, style({ height: '*', 'overflow-y': 'hidden' }))]),\n transition('false => true', [style({ height: '*', 'overflow-y': 'hidden' }), animate(defaultAnimationTiming)]),\n ];\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nexport * from './collapse';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { animate, AnimationMetadata, style, transition } from '@angular/animations';\n\nimport { defaultAnimationTiming } from './../constants';\n\nexport function fade(opacity = 1): AnimationMetadata[] {\n return [\n transition('void => *', [style({ opacity: 0 }), animate(defaultAnimationTiming, style({ opacity: opacity }))]),\n transition('* => void', [animate(defaultAnimationTiming, style({ opacity: 0 }))]),\n ];\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nexport * from './fade';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { animate, AnimationMetadata, style, transition } from '@angular/animations';\n\nimport { defaultAnimationTiming } from './../constants';\n\nexport function fadeSlide(direction: string): AnimationMetadata[] {\n let transform: string = null;\n if (direction === 'up') {\n transform = 'translate(0, 25%)';\n } else if (direction === 'down') {\n transform = 'translate(0, -25%)';\n } else if (direction === 'left') {\n transform = 'translate(25%, 0)';\n } else if (direction === 'right') {\n transform = 'translate(-25%, 0)';\n } else {\n throw new Error('Unknown direction ' + direction + ' for slide animation.');\n }\n return [\n transition('void => *', [style({ opacity: 0, transform: transform }), animate(defaultAnimationTiming)]),\n transition('* => void', [animate(defaultAnimationTiming, style({ opacity: 0, transform: transform }))]),\n ];\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nexport * from './fade-slide';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { animate, AnimationMetadata, style, transition } from '@angular/animations';\n\nimport { defaultAnimationTiming } from './../constants';\n\nexport function slide(direction: string): AnimationMetadata[] {\n let transform: string = null;\n if (direction === 'up') {\n transform = 'translate(0, 25%)';\n } else if (direction === 'down') {\n transform = 'translate(0, -25%)';\n } else if (direction === 'left') {\n transform = 'translate(25%, 0)';\n } else if (direction === 'right') {\n transform = 'translate(-25%, 0)';\n } else {\n throw new Error('Unknown direction ' + direction + ' for slide animation.');\n }\n return [\n transition('void => *', [style({ transform: transform }), animate(defaultAnimationTiming)]),\n transition('* => void', [animate(defaultAnimationTiming, style({ transform: transform }))]),\n ];\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nexport * from './slide';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './collapse/index';\nexport * from './expandable-animation/index';\nexport * from './fade/index';\nexport * from './fade-slide/index';\nexport * from './slide/index';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './loading';\nexport * from './loading-listener';\nexport * from './loading.module';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './if-active.directive';\nexport * from './if-open.directive';\nexport * from './if-expanded.directive';\nexport * from './conditional.module';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './common-strings.service';\nexport * from './common-strings.interface';\nexport * from './common-strings.default';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { PLATFORM_ID } from '@angular/core';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { Inject, Injectable, NgZone, OnDestroy } from '@angular/core';\nimport { uniqueIdFactory } from '../id-generator/id-generator.service';\n\nexport enum ClrAriaLivePoliteness {\n off = 'off',\n polite = 'polite',\n assertive = 'assertive',\n}\n\n/**\n * Time in milliseconds before inserting the content into the container\n */\nconst ARIA_LIVE_TICK = 100;\n\n/**\n * @deprecated\n *\n * -- ClrAriaLiveService is deprecated in 5.0 to be removed in 6.0 --\n * Please consider using the LiveAnnouncer in the Angular Material CDK\n * if your project needs this functionality.\n * More info: https://material.angular.io/cdk/a11y/overview#example-1\n *\n * This service handle `aria-live` accessibility attribute. The issue is that you need\n * to have the DOM Element with attribute `aria-live` before you could insert content\n * and SR (Screen Reader) pick the change and announce it.\n *\n * ```typescript\n * import { ClrAriaLiveService } from 'src/clr-angular/utils/a11y/aria-live.service';\n *\n * @Component({\n * selector: 'clr-demo-component',\n * providers: [ClrAriaLiveService],\n * template: `\n * <ng-content></ng-content>\n * `,\n * })\n * export class DemoComponent {\n * constructor(ariaLiveService: ClrAriaLiveService) {}\n *\n * public actionThatWillTriggerChange() {\n * this.ariaLiveService.announce('message that I want to announce to SR');\n * }\n * }\n * ```\n *\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ClrAriaLiveService implements OnDestroy {\n private ariaLiveElement: HTMLElement;\n private document: Document;\n private previousTimeout: ReturnType<typeof setTimeout>;\n\n constructor(private ngZone: NgZone, @Inject(DOCUMENT) _document: any, @Inject(PLATFORM_ID) private platformId: any) {\n this.document = _document;\n }\n\n private _id = `clr-aria-live-element-${uniqueIdFactory()}`;\n /**\n * get access to the internal HTML `id` that gonna be used for the AriaLive container.\n * @return ID of the DOM Element as string.\n */\n public get id(): string {\n return this._id;\n }\n\n /**\n * Append text content inside the AriaLive Container. This method will check if the\n * DOM Element is existing if not it will create one for us and the will apply the text.\n *\n * ```typescript\n * this.ariaLiveService.announce(this.el.nativeElement);\n * // or\n * this.ariaLiveService.announce('Message to announce to SR');\n * ```\n *\n * @remark\n * When second argument is `AriaLivePoliteness.off` we won't create aria container or update it.\n * The reason for that is that we don't want to do additional work if the SR will ignore it.\n *\n * @param message - This could be simple string or HTMLElement\n * @param politeness - 'polite', 'assertive' or 'off'\n */\n public announce(\n message: string | HTMLElement,\n politeness: ClrAriaLivePoliteness = ClrAriaLivePoliteness.polite\n ): void {\n if (politeness === ClrAriaLivePoliteness.off) {\n return;\n }\n\n if (!this.ariaLiveElement && isPlatformBrowser(this.platformId)) {\n this.ariaLiveElement = this.createContainer();\n }\n\n message = typeof message !== 'string' && isPlatformBrowser(this.platformId) ? message.textContent : message;\n\n // when there is no message do NOTHING!\n if (!message) {\n return;\n }\n\n this.ariaLiveElement.setAttribute('aria-live', politeness);\n\n // This 100ms timeout is necessary for some browser + screen-reader combinations:\n // - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout.\n // - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) message won't be read a\n // second time without clearing and then using a non-zero delay.\n // (using JAWS 17 at time of this writing).\n this.ngZone.runOutsideAngular(() => {\n // This clearTimeout will stop all older messages from announcing\n // in the case where the messages are comming too fast we gonna try to append only\n // the last one. That's what the SR will try to do anyway.\n clearTimeout(this.previousTimeout);\n this.previousTimeout = setTimeout(() => {\n this.ariaLiveElement.textContent = message as string;\n }, ARIA_LIVE_TICK);\n });\n }\n\n /**\n * onDestroy life cycle - must stop all active setTimeouts and remove the AriaLive\n * container from the document.\n */\n public ngOnDestroy() {\n clearTimeout(this.previousTimeout);\n if (isPlatformBrowser(this.platformId) && this.ariaLiveElement) {\n this.document.body.removeChild(this.ariaLiveElement);\n this.ariaLiveElement = null;\n }\n }\n\n /**\n * Create AriaLive DOM element as a last child of the document.\n * After the element is created, we gonna apply Clarity class to hide it from\n * the screen and set the `aria-live` politness.\n *\n * `clr-sr-only` is the CSS class that is used to hide the element from the screen.\n *\n * @remark\n * Calling this method multiple times will create multiple DOM Elements, that\n * won't be tracked and will be GC after the service is destroyed.\n *\n * @return AriaLive container as HTMLElement\n *\n */\n private createContainer(): HTMLElement {\n const ariaLiveElement = this.document.createElement('div');\n\n ariaLiveElement.setAttribute('id', this.id);\n // Use clarity screen reader class to hide the dom element\n // and fix the scrollbar shake\n ariaLiveElement.classList.add('clr-sr-only');\n\n ariaLiveElement.setAttribute('aria-atomic', 'true');\n ariaLiveElement.setAttribute('aria-live', ClrAriaLivePoliteness.polite);\n\n this.document.body.appendChild(ariaLiveElement);\n\n return ariaLiveElement;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './aria-live.service';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './draggable/draggable';\nexport * from './droppable/droppable';\nexport * from './if-dragged';\nexport * from './drag-handle';\nexport * from './draggable-ghost';\nexport * from './drag-event';\nexport * from './interfaces/drop-tolerance.interface';\nexport * from './drag-and-drop.module';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n *\n */\n\nimport { ClrAlignment } from '../enums/alignment.enum';\nimport { ClrSide } from '../enums/side.enum';\nimport { ClrAxis } from '../enums/axis.enum';\n\n/**\n * ClrPopoverPosition\n *\n * @description\n * A ClrPopover needs a way to describe the relationship between the anchor and the content (for when its\n * visible). The ClrPopoverPosition interface is that description.\n */\n\nexport interface ClrPopoverPosition {\n axis: ClrAxis; // The axis on which content and anchor push against each other\n side: ClrSide; // The side where content appears (top/bottom or left/right depending on the axis)\n anchor: ClrAlignment; // The position that the content element should align to\n content: ClrAlignment; // The position that the anchor element should align to\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n *\n */\n\nexport * from './enums/alignment.enum';\nexport * from './enums/axis.enum';\nexport * from './enums/side.enum';\nexport * from './interfaces/popover-position.interface';\nexport * from './providers/popover-events.service';\nexport * from './providers/popover-position.service';\nexport * from './providers/popover-toggle.service';\nexport * from './popover-anchor';\nexport * from './popover-content';\n\nexport { ClrPopoverModuleNext as ÇlrClrPopoverModuleNext } from './popover.module';\nexport { ClrPopoverCloseButton as ÇlrClrPopoverCloseButton } from './popover-close-button';\nexport { ClrPopoverOpenCloseButton as ÇlrClrPopoverOpenCloseButton } from './popover-open-close-button';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './focus-on-view-init';\nexport { FOCUS_ON_VIEW_INIT } from './focus-on-view-init.provider';\nexport * from './focus-on-view-init.module';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport { FocusTrapTracker as ÇlrFocusTrapTracker } from './focus-trap-tracker.service';\nexport { FocusTrapDirective as ÇlrFocusTrapDirective } from './focus-trap.directive';\nexport { ClrFocusTrapModule as ÇlrClrFocusTrapModule } from './focus-trap.module';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './animations/index';\nexport * from './loading/index';\nexport * from './conditional/index';\nexport * from './i18n/index';\nexport * from './a11y/index';\nexport * from './drag-and-drop/index';\nexport * from './popover/index';\nexport * from './focus/focus-on-view-init/index';\nexport * from './focus-trap/index';\n","/*\n * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, Input } from '@angular/core';\n\nimport { PageCollectionService } from './providers/page-collection.service';\nimport { WizardNavigationService } from './providers/wizard-navigation.service';\nimport { ClrWizardPage } from './wizard-page';\nimport { ClrCommonStringsService } from '../utils';\n\n@Component({\n selector: '[clr-wizard-stepnav-item]',\n template: `\n <button\n type=\"button\"\n class=\"btn btn-link clr-wizard-stepnav-link\"\n (click)=\"click()\"\n [attr.disabled]=\"isDisabled ? '' : null\"\n >\n <span class=\"clr-wizard-stepnav-link-suffix\">\n <cds-icon\n shape=\"error-standard\"\n status=\"danger\"\n class=\"clr-wizard-stepnav-item-error-icon\"\n *ngIf=\"hasError\"\n ></cds-icon>\n <ng-content *ngIf=\"!hasError\"></ng-content>\n </span>\n <span class=\"clr-wizard-stepnav-link-title\">\n <ng-template [ngTemplateOutlet]=\"page.navTitle\"></ng-template>\n </span>\n <span *ngIf=\"hasError\" class=\"clr-sr-only\">{{ commonStrings.keys.wizardStepError }}</span>\n <span *ngIf=\"!hasError && isComplete\" class=\"clr-sr-only\">{{ commonStrings.keys.wizardStepSuccess }}</span>\n </button>\n `,\n host: {\n '[id]': 'id',\n '[attr.aria-current]': 'stepAriaCurrent',\n '[attr.aria-controls]': 'id',\n '[class.clr-nav-link]': 'true',\n '[class.nav-item]': 'true',\n '[class.active]': 'isCurrent',\n '[class.disabled]': 'isDisabled',\n '[class.no-click]': '!canNavigate',\n '[class.complete]': 'isComplete',\n '[class.error]': 'hasError',\n },\n})\nexport class ClrWizardStepnavItem {\n @Input('page') public page: ClrWizardPage;\n\n constructor(\n public navService: WizardNavigationService,\n public pageCollection: PageCollectionService,\n public commonStrings: ClrCommonStringsService\n ) {}\n\n private pageGuard(): void {\n if (!this.page) {\n throw new Error('Wizard stepnav item is not associated with a wizard page.');\n }\n }\n\n public get id(): string {\n this.pageGuard();\n return this.pageCollection.getStepItemIdForPage(this.page);\n }\n\n public get stepAriaCurrent(): string {\n return this.isCurrent && 'step';\n }\n\n public get isDisabled(): boolean {\n this.pageGuard();\n return this.page.disabled || this.navService.wizardStopNavigation || this.navService.wizardDisableStepnav;\n }\n\n public get isCurrent(): boolean {\n this.pageGuard();\n return this.page.current;\n }\n\n public get isComplete(): boolean {\n this.pageGuard();\n return this.page.completed;\n }\n\n public get hasError(): boolean {\n this.pageGuard();\n return this.page.hasError && this.isComplete;\n }\n\n public get canNavigate(): boolean {\n this.pageGuard();\n return this.pageCollection.previousPageIsCompleted(this.page);\n }\n\n click(): void {\n this.pageGuard();\n\n // if we click on our own stepnav or a disabled stepnav, we don't want to do anything\n if (this.isDisabled || this.isCurrent) {\n return;\n }\n\n this.navService.goTo(this.page);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\nimport { PageCollectionService } from './providers/page-collection.service';\n\n@Component({\n selector: 'clr-wizard-stepnav',\n template: `\n <div class=\"clr-wizard-stepnav-list\">\n <div\n *ngFor=\"let page of pageService.pages; let i = index\"\n clr-wizard-stepnav-item\n [page]=\"page\"\n class=\"clr-wizard-stepnav-item\"\n >\n {{ i + 1 }}\n </div>\n </div>\n `,\n host: { class: 'clr-wizard-stepnav' },\n})\nexport class ClrWizardStepnav {\n constructor(public pageService: PageCollectionService) {}\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n AfterContentInit,\n Component,\n ContentChildren,\n DoCheck,\n ElementRef,\n EventEmitter,\n Input,\n IterableDiffers,\n OnDestroy,\n Output,\n QueryList,\n ViewChild,\n PLATFORM_ID,\n Inject,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { ButtonHubService } from './providers/button-hub.service';\nimport { HeaderActionService } from './providers/header-actions.service';\nimport { PageCollectionService } from './providers/page-collection.service';\nimport { WizardNavigationService } from './providers/wizard-navigation.service';\nimport { ClrWizardHeaderAction } from './wizard-header-action';\nimport { ClrWizardPage } from './wizard-page';\n\n@Component({\n selector: 'clr-wizard',\n providers: [WizardNavigationService, PageCollectionService, ButtonHubService, HeaderActionService],\n templateUrl: './wizard.html',\n host: {\n '[class.clr-wizard]': 'true',\n '[class.wizard-md]': \"size == 'md'\",\n '[class.wizard-lg]': \"size == 'lg'\",\n '[class.wizard-xl]': \"size == 'xl'\",\n '[class.lastPage]': 'navService.currentPageIsLast',\n },\n})\nexport class ClrWizard implements OnDestroy, AfterContentInit, DoCheck {\n /**\n * Set the modal size of the wizard. Set using `[clrWizardSize]` input.\n */\n @Input('clrWizardSize') size = 'xl';\n\n /**\n * Tells the modal part of the wizard whether it should have a close \"X\"\n * in the top right corner. Set using `[clrWizardClosable]` input.\n */\n @Input('clrWizardClosable') closable = true;\n\n /**\n * Resets page completed states when navigating backwards.\n * Set using `[clrWizardForceForwardNavigation]` input.\n */\n @Input('clrWizardForceForwardNavigation')\n set forceForward(value: boolean) {\n this._forceForward = !!value;\n this.navService.forceForwardNavigation = value;\n }\n get forceForward(): boolean {\n return this._forceForward;\n }\n private _forceForward = false;\n\n _open = false;\n /**\n * Toggles open/close of the wizard component.\n * Set using the `[clrWizardOpen]` input.\n */\n @Input('clrWizardOpen')\n set clrWizardOpen(open: boolean) {\n if (open) {\n this.buttonService.buttonsReady = true;\n }\n this._open = open;\n }\n\n /**\n * Prevents ClrWizard from moving to the next page or closing itself on finishing.\n * Set using the `[clrWizardPreventDefaultNext]` input. Note that using stopNext\n * will require you to create your own calls to .next() and .finish() in your\n * host component to make the ClrWizard work as expected.\n */\n @Input('clrWizardPreventDefaultNext')\n set stopNext(value: boolean) {\n this._stopNext = !!value;\n this.navService.wizardHasAltNext = value;\n }\n get stopNext(): boolean {\n return this._stopNext;\n }\n private _stopNext = false;\n\n /**\n * Prevents ClrWizard from closing when the cancel button or close \"X\" is clicked.\n * Set using the `[clrWizardPreventDefaultCancel]` input.\n *\n * Note that using stopCancel will require you to create your own calls to `close()` in your host compone`nt\n * to make the ClrWizard work as expected. Useful for doing checks or prompts\n * before closing a ClrWizard.\n */\n @Input('clrWizardPreventDefaultCancel')\n set stopCancel(value: boolean) {\n this._stopCancel = !!value;\n this.navService.wizardHasAltCancel = value;\n }\n get stopCancel(): boolean {\n return this._stopCancel;\n }\n private _stopCancel = false;\n\n /**\n * Prevents ClrWizard from performing any form of navigation away from the current\n * page. Set using the `[clrWizardPreventNavigation]` input.\n * Note that stopNavigation is meant to freeze the wizard in place, typically\n * during a long validation or background action where you want the wizard to\n * display loading content but not allow the user to execute navigation in\n * the stepnav, close X, or the back, finish, or next buttons.\n */\n @Input('clrWizardPreventNavigation')\n set stopNavigation(value: boolean) {\n this._stopNavigation = !!value;\n this.navService.wizardStopNavigation = value;\n }\n get stopNavigation(): boolean {\n return this._stopNavigation;\n }\n private _stopNavigation = false;\n\n /**\n * Prevents clicks on the links in the stepnav from working.\n * Set using `[clrWizardDisableStepnav]` input.\n * A more granular bypassing of navigation which can be useful when your\n * ClrWizard is in a state of completion and you don't want users to be\n * able to jump backwards and change things.\n */\n @Input('clrWizardDisableStepnav')\n set disableStepnav(value: boolean) {\n this._disableStepnav = !!value;\n this.navService.wizardDisableStepnav = value;\n }\n get disableStepnav(): boolean {\n return this._disableStepnav;\n }\n private _disableStepnav = false;\n\n /**\n * Used to communicate to the underlying modal that animations are not\n * wanted. Primary use is for the display of static/inline wizards.\n * Set using `[clrWizardPreventModalAnimation]` input.\n */\n /** @deprecated since 3.0, input should be removed in 4.0 because is only related to inline wizards */\n @Input('clrWizardPreventModalAnimation') _stopModalAnimations = false;\n get stopModalAnimations(): string {\n return this._stopModalAnimations ? 'true' : 'false';\n }\n\n /**\n * Emits when the wizard is opened or closed.\n * Listen via `(clrWizardOpenChange)` event.\n */\n @Output('clrWizardOpenChange') _openChanged: EventEmitter<boolean> = new EventEmitter<boolean>(false);\n\n /**\n * Emits when the wizard is canceled. Listen via `(clrWizardOnCancel)` event.\n * Can be combined with the `[clrWizardPreventDefaultCancel]` input to create\n * wizard-level custom cancel routines.\n */\n @Output('clrWizardOnCancel') onCancel: EventEmitter<any> = new EventEmitter<any>(false);\n\n /**\n * Emits when the wizard is completed. Listen via `(clrWizardOnFinish)` event.\n * Can be combined with the `[clrWizardPreventDefaultNext]` input to create\n * wizard-level custom completion routines.\n */\n @Output('clrWizardOnFinish') wizardFinished: EventEmitter<any> = new EventEmitter<any>(false);\n\n /**\n * Emits when the wizard is reset. Listen via `(clrWizardOnReset)` event.\n */\n @Output('clrWizardOnReset') onReset: EventEmitter<any> = new EventEmitter<any>(false);\n\n /**\n * Emits when the current page has changed. Listen via `(clrWizardCurrentPageChanged)` event.\n * output. Useful for non-blocking validation.\n */\n @Output('clrWizardCurrentPageChanged') currentPageChanged: EventEmitter<any> = new EventEmitter<any>(false);\n\n /**\n * Emits when the wizard moves to the next page. Listen via `(clrWizardOnNext)` event.\n * Can be combined with the `[clrWizardPreventDefaultNext]` input to create\n * wizard-level custom navigation routines, which are useful for validation.\n */\n @Output('clrWizardOnNext') onMoveNext: EventEmitter<any> = new EventEmitter<any>(false);\n\n /**\n * Emits when the wizard moves to the previous page. Can be useful for validation.\n * Listen via `(clrWizardOnPrevious)` event.\n */\n\n @Output('clrWizardOnPrevious') onMovePrevious: EventEmitter<any> = new EventEmitter<any>(false);\n\n @ContentChildren(ClrWizardPage, { descendants: true })\n pages: QueryList<ClrWizardPage>;\n @ContentChildren(ClrWizardHeaderAction) headerActions: QueryList<ClrWizardHeaderAction>;\n @ViewChild('wizardTitle') wizardTitle: ElementRef;\n\n public get currentPage(): ClrWizardPage {\n return this.navService.currentPage;\n }\n\n public set currentPage(page: ClrWizardPage) {\n this.navService.goTo(page, true);\n }\n\n public get isLast(): boolean {\n return this.navService.currentPageIsLast;\n }\n\n public get isFirst(): boolean {\n return this.navService.currentPageIsFirst;\n }\n\n public get isStatic(): boolean {\n return (this.elementRef.nativeElement as HTMLElement).classList.contains('clr-wizard--inline');\n }\n\n private differ: any; // for marking when the collection of wizard pages has been added to or deleted from\n private subscriptions: Subscription[] = [];\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: any,\n public navService: WizardNavigationService,\n public pageCollection: PageCollectionService,\n public buttonService: ButtonHubService,\n public headerActionService: HeaderActionService,\n private elementRef: ElementRef,\n differs: IterableDiffers\n ) {\n this.subscriptions.push(\n this.listenForNextPageChanges(),\n this.listenForPreviousPageChanges(),\n this.listenForCancelChanges(),\n this.listenForFinishedChanges(),\n this.listenForPageChanges()\n );\n\n this.differ = differs.find([]).create(null);\n }\n\n public ngAfterContentInit(): void {\n this.pageCollection.pages = this.pages;\n this.headerActionService.wizardHeaderActions = this.headerActions;\n this.initializeButtons();\n }\n\n public ngDoCheck(): void {\n this.updateNavOnPageChanges();\n }\n\n public ngOnDestroy(): void {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n /**\n * Marks Wizard as finished. By default it does not execute event\n * emissions or checks before completing and closing. This method is commonly\n * used as part of an alternative navigation with `[clrWizardPreventDefaultNext]`.\n *\n * If `skipChecksAndEmits` is true, the wizard will complete and close\n * regardless of the state of its current page. This is useful for alternative\n * navigation where event emissions have already been done and firing them again\n * may cause an event loop.\n */\n public finish(skipChecksAndEmits = true): void {\n if (skipChecksAndEmits) {\n this.forceFinish();\n } else {\n this.navService.finish();\n }\n }\n\n /**\n * Marks the wizard as finished but does run checks and emissions.\n * Good for a last step in an alternate workflow. Does the same thing as\n * calling `ClrWizard.finish(true)` or `ClrWizard.finish()` without a parameter.\n */\n public forceFinish(): void {\n if (this.stopNavigation) {\n return;\n }\n\n this.close();\n }\n\n /**\n * Opens the wizard. If there is no current page defined, sets the first page in the wizard to be current.\n */\n public open(): void {\n this._open = true;\n\n if (!this.currentPage) {\n this.navService.setFirstPageCurrent();\n }\n\n // Only render buttons when wizard is opened, to avoid chocolate errors\n this.buttonService.buttonsReady = true;\n\n this._openChanged.emit(true);\n }\n\n /**\n * Closes the wizard. Call this directly instead of `cancel()` to implement alternative cancel functionality.\n */\n public close(): void {\n if (this.stopNavigation) {\n return;\n }\n\n this._open = false;\n this._openChanged.emit(false);\n }\n\n /**\n * Used to open and close the wizard. By default the wizard will\n * close if invoked with no parameter. If parameter is true wizard will open\n * else if false will close.\n */\n public toggle(open: boolean): void {\n if (open) {\n this.open();\n } else {\n this.close();\n }\n }\n\n /**\n * Moves the wizard to the previous page.\n */\n public previous(): void {\n this.navService.previous();\n }\n\n /**\n * By default, `next()` does not execute event emissions.\n * This method is commonly called as part of an alternative navigation\n * with `[clrWizardPreventDefaultNext]`. The wizard will move to the next page\n * regardless of the state of its current page. This is useful for alternative\n * navigation where event emissions have already been done and firing them again\n * may cause an event loop.\n *\n * If `skipChecksAndEmits` is false, the wizard will execute default checks\n * and emit events as normal. This is useful for custom buttons or programmatic\n * workflows that are not executing the wizards default checks and emissions.\n * It is another way to navigate without having to rewrite the wizard’s default\n * functionality from scratch.\n */\n public next(skipChecksAndEmits = true): void {\n if (skipChecksAndEmits) {\n this.forceNext();\n } else {\n this.navService.next();\n }\n }\n\n /**\n * Moves the wizard to the next page without the checks and emissions.\n * Good for a last step in an alternate workflow.\n * Alias for `ClrWizard.next(true)` or `ClrWizard.next()`\n */\n public forceNext(): void {\n this.navService.forceNext();\n }\n\n /**\n * Cancels and closes the wizard. Do not use this for an override of the cancel\n * the functionality with `[clrWizardPreventDefaultCancel]`, `[clrWizardPreventPageDefaultCancel]`,\n * or `[clrWizardPagePreventDefault]` because it will initiate the same checks\n * and event emissions that invoked your event handler. Use `ClrWizard.close()` instead.\n */\n public cancel(): void {\n this.navService.cancel();\n }\n\n /**\n * Overrides behavior of the underlying modal to avoid collisions with\n * alternative cancel functionality. In most cases, use `ClrWizard.cancel()` instead.\n */\n public modalCancel(): void {\n if (this.closable) {\n this.checkAndCancel();\n }\n }\n\n /**\n * Checks for alternative cancel flows defined at the current page or\n * wizard level. Performs a canceled if not. Emits events that initiate\n * the alternative cancel outputs `(clrWizardPageOnCancel)` and `(clrWizardOnCancel)`.\n */\n public checkAndCancel(): void {\n const currentPage = this.currentPage;\n const currentPageHasOverrides = currentPage.stopCancel || currentPage.preventDefault;\n\n if (this.stopNavigation) {\n return;\n }\n\n currentPage.pageOnCancel.emit();\n if (!currentPageHasOverrides) {\n this.onCancel.emit();\n }\n\n if (!this.stopCancel && !currentPageHasOverrides) {\n this.close();\n }\n }\n\n /**\n * Navigates to a given page in the Wizard. Navigation will invoke the wizard’s default\n * checks and event emissions.\n *\n * The format of the expected ID parameter can be found in the return of the\n * ClrWizardPage.id getter, usually prefixed with `clr-wizard-page-` and then either a\n * numeric ID or the ID specified for the `ClrWizardPage` component’s `id` input.\n */\n public goTo(pageId: string): void {\n if (!pageId) {\n return;\n }\n\n this.navService.goTo(pageId);\n }\n\n /**\n * Reset sets all WizardPages to incomplete and sets the first page in the `ClrWizard` to\n * be the current page, resetting the wizard navigation.\n * Use `(clrWizardOnReset)` event to reset the data or model of your wizard.\n */\n public reset(): void {\n this.pageCollection.reset();\n this.onReset.next();\n }\n\n private listenForNextPageChanges(): Subscription {\n return this.navService.movedToNextPage.pipe(filter(() => isPlatformBrowser(this.platformId))).subscribe(() => {\n this.onMoveNext.emit();\n this.wizardTitle.nativeElement.focus();\n });\n }\n\n private listenForPreviousPageChanges(): Subscription {\n return this.navService.movedToPreviousPage.pipe(filter(() => isPlatformBrowser(this.platformId))).subscribe(() => {\n this.onMovePrevious.emit();\n this.wizardTitle.nativeElement.focus();\n });\n }\n\n private listenForCancelChanges(): Subscription {\n return this.navService.notifyWizardCancel.subscribe(() => this.checkAndCancel());\n }\n\n private listenForFinishedChanges(): Subscription {\n return this.navService.wizardFinished.subscribe(() => this.emitWizardFinished());\n }\n\n private listenForPageChanges(): Subscription {\n return this.navService.currentPageChanged.subscribe(() => this.currentPageChanged.emit());\n }\n\n private updateNavOnPageChanges(): void {\n const changes = this.differ.diff(this.pages);\n if (changes) {\n changes.forEachAddedItem(() => this.navService.updateNavigation());\n changes.forEachRemovedItem(() => this.navService.updateNavigation());\n }\n }\n\n private initializeButtons(): void {\n // Only trigger buttons ready if default is open (inlined)\n if (this._open) {\n this.buttonService.buttonsReady = true;\n }\n }\n\n private emitWizardFinished(): void {\n if (!this.stopNext) {\n this.forceFinish();\n }\n this.wizardFinished.emit();\n }\n}\n","<!--\n ~ Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<clr-modal\n [clrModalOpen]=\"_open\"\n [clrModalSize]=\"size\"\n [clrModalClosable]=\"closable\"\n [clrModalStaticBackdrop]=\"true\"\n [clrModalSkipAnimation]=\"stopModalAnimations\"\n [clrModalOverrideScrollService]=\"isStatic\"\n [clrModalPreventClose]=\"true\"\n (clrModalAlternateClose)=\"modalCancel()\"\n>\n <nav class=\"modal-nav clr-wizard-stepnav-wrapper\">\n <h1 class=\"clr-wizard-title\"><ng-content select=\"clr-wizard-title\"></ng-content></h1>\n <clr-wizard-stepnav></clr-wizard-stepnav>\n </nav>\n\n <h2 class=\"modal-title\">\n <span tabindex=\"-1\" #wizardTitle class=\"modal-title-text\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPageTitle\"></ng-template>\n </span>\n\n <div class=\"modal-header-actions-wrapper\" *ngIf=\"headerActionService.displayHeaderActionsWrapper\">\n <div *ngIf=\"headerActionService.showWizardHeaderActions\">\n <ng-content select=\"clr-wizard-header-action\"></ng-content>\n </div>\n <div *ngIf=\"headerActionService.currentPageHasHeaderActions\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.headerActions\"></ng-template>\n </div>\n </div>\n </h2>\n\n <div class=\"modal-body\">\n <main clr-wizard-pages-wrapper class=\"clr-wizard-content\">\n <ng-content></ng-content>\n </main>\n </div>\n <div class=\"modal-footer clr-wizard-footer\">\n <div class=\"clr-wizard-footer-buttons\">\n <div\n *ngIf=\"navService.currentPage && !navService.currentPage.hasButtons\"\n class=\"clr-wizard-footer-buttons-wrapper\"\n >\n <ng-content select=\"clr-wizard-button\"></ng-content>\n </div>\n <div\n *ngIf=\"navService.currentPage && navService.currentPage.hasButtons\"\n class=\"clr-wizard-footer-buttons-wrapper\"\n >\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.buttons\"></ng-template>\n </div>\n </div>\n </div>\n</clr-modal>\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { ButtonHubService } from './providers/button-hub.service';\nimport { WizardNavigationService } from './providers/wizard-navigation.service';\n\nexport const DEFAULT_BUTTON_TYPES: any = {\n cancel: 'cancel',\n previous: 'previous',\n next: 'next',\n finish: 'finish',\n danger: 'danger',\n};\n\nexport const CUSTOM_BUTTON_TYPES: any = {\n cancel: 'custom-cancel',\n previous: 'custom-previous',\n next: 'custom-next',\n finish: 'custom-finish',\n danger: 'custom-danger',\n};\n\n@Component({\n selector: 'clr-wizard-button',\n template: `\n <button\n type=\"button\"\n class=\"btn clr-wizard-btn\"\n [class.btn-link]=\"isCancel\"\n [class.clr-wizard-btn--tertiary]=\"isCancel\"\n [class.btn-outline]=\"isPrevious\"\n [class.clr-wizard-btn--secondary]=\"isPrevious\"\n [class.btn-primary]=\"isPrimaryAction\"\n [class.clr-wizard-btn--primary]=\"isPrimaryAction\"\n [class.btn-success]=\"isFinish\"\n [class.btn-danger]=\"isDanger\"\n [class.disabled]=\"isDisabled\"\n [attr.disabled]=\"_disabledAttribute\"\n (click)=\"click()\"\n >\n <ng-content></ng-content>\n </button>\n `,\n host: { class: 'clr-wizard-btn-wrapper', '[attr.aria-hidden]': 'isHidden' },\n})\nexport class ClrWizardButton {\n @Input('type') public type = '';\n\n @Input('clrWizardButtonDisabled') public disabled = false;\n\n @Input('clrWizardButtonHidden') public hidden = false;\n\n // EventEmitter which is emitted when a button is clicked.\n @Output('clrWizardButtonClicked') wasClicked: EventEmitter<string> = new EventEmitter<string>(false);\n\n constructor(public navService: WizardNavigationService, public buttonService: ButtonHubService) {}\n\n private checkDefaultAndCustomType(valueToCheck = '', typeToLookUp: string) {\n if (DEFAULT_BUTTON_TYPES[typeToLookUp] === valueToCheck) {\n return true;\n }\n if (CUSTOM_BUTTON_TYPES[typeToLookUp] === valueToCheck) {\n return true;\n }\n return false;\n }\n\n public get isCancel(): boolean {\n return this.checkDefaultAndCustomType(this.type, 'cancel');\n }\n\n public get isNext(): boolean {\n return this.checkDefaultAndCustomType(this.type, 'next');\n }\n\n public get isPrevious(): boolean {\n return this.checkDefaultAndCustomType(this.type, 'previous');\n }\n\n public get isFinish(): boolean {\n return this.checkDefaultAndCustomType(this.type, 'finish');\n }\n\n public get isDanger(): boolean {\n return this.checkDefaultAndCustomType(this.type, 'danger');\n }\n\n public get isPrimaryAction(): boolean {\n return this.isNext || this.isDanger || this.isFinish;\n }\n\n public get _disabledAttribute(): string | null {\n if (this.isDisabled) {\n return '';\n }\n return null;\n }\n\n public get isDisabled(): boolean {\n // dealing with negatives here. cognitively easier to think of it like this...\n const disabled = true;\n const nav = this.navService;\n const page = this.navService.currentPage;\n\n // Ensure we don't change the response until buttons are ready to avoid chocolate\n if (!this.buttonService.buttonsReady) {\n return !disabled;\n }\n\n if (this.disabled || nav.wizardStopNavigation || !page) {\n return true;\n }\n\n if (this.isCancel) {\n return !disabled;\n }\n\n if (this.isPrevious && (nav.currentPageIsFirst || page.previousStepDisabled)) {\n return disabled;\n }\n\n if (this.isDanger && !page.readyToComplete) {\n return disabled;\n }\n\n if (this.isNext && (nav.currentPageIsLast || !page.readyToComplete)) {\n return disabled;\n }\n\n if (this.isFinish && (!nav.currentPageIsLast || !page.readyToComplete)) {\n return disabled;\n }\n\n return !disabled;\n }\n\n public get isHidden(): boolean {\n // dealing with negatives here. cognitively easier to think of it like this...\n const hidden = true;\n const nav = this.navService;\n\n // Ensure we don't change the response until buttons are ready to avoid chocolate\n if (!this.buttonService.buttonsReady) {\n return !hidden;\n }\n\n if (this.hidden) {\n return true;\n }\n\n if (this.isCancel) {\n return !hidden;\n }\n\n if (this.isPrevious && nav.currentPageIsFirst) {\n return hidden;\n }\n\n if (this.isNext && nav.currentPageIsLast) {\n return hidden;\n }\n\n if (this.isFinish && !nav.currentPageIsLast) {\n return hidden;\n }\n\n return !hidden;\n }\n\n click(): void {\n if (this.isDisabled) {\n return;\n }\n\n this.wasClicked.emit(this.type);\n this.buttonService.buttonClicked(this.type);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive } from '@angular/core';\n\n@Directive({ selector: 'clr-wizard-title, clr-wizard-pagetitle' })\nexport class ClrWizardCustomTags {\n // No behavior\n // The only purpose is to \"declare\" the tag in Angular\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ClarityIcons, errorStandardIcon } from '@cds/core/icon';\n\nimport { ClrAlertModule } from '../emphasis/alert/alert.module';\nimport { ClrModalModule } from '../modal/modal.module';\n\nimport { ClrWizard } from './wizard';\nimport { ClrWizardButton } from './wizard-button';\nimport { ClrWizardCustomTags } from './wizard-custom-tags';\nimport { ClrWizardHeaderAction } from './wizard-header-action';\nimport { ClrWizardPage } from './wizard-page';\nimport { ClrWizardPageButtons } from './wizard-page-buttons';\nimport { ClrWizardPageHeaderActions } from './wizard-page-header-actions';\nimport { ClrWizardPageNavTitle } from './wizard-page-navtitle';\nimport { ClrWizardPageTitle } from './wizard-page-title';\nimport { ClrWizardStepnav } from './wizard-stepnav';\nimport { ClrWizardStepnavItem } from './wizard-stepnav-item';\n\nexport const CLR_WIZARD_DIRECTIVES: any[] = [\n ClrWizard,\n ClrWizardPage,\n ClrWizardStepnav,\n ClrWizardStepnavItem,\n ClrWizardButton,\n ClrWizardHeaderAction,\n ClrWizardCustomTags,\n ClrWizardPageTitle,\n ClrWizardPageNavTitle,\n ClrWizardPageButtons,\n ClrWizardPageHeaderActions,\n];\n\n@NgModule({\n imports: [CommonModule, ClrModalModule, ClrAlertModule],\n declarations: [CLR_WIZARD_DIRECTIVES],\n exports: [CLR_WIZARD_DIRECTIVES],\n})\nexport class ClrWizardModule {\n constructor() {\n ClarityIcons.addIcons(errorStandardIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum AccordionStatus {\n Inactive = 'inactive',\n Error = 'error',\n Complete = 'complete',\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { animate, style, transition, trigger } from '@angular/animations';\n\nimport { defaultAnimationTiming } from '../../utils/animations/constants';\n\nexport const panelAnimation = [\n trigger('skipInitialRender', [transition(':enter', [])]),\n trigger('toggle', [\n transition('void => *', [\n style({ display: 'block', height: 0 }),\n animate(defaultAnimationTiming, style({ height: '*' })),\n ]),\n ]),\n];\n\nexport const stepAnimation = [\n trigger('skipInitialRender', [transition(':enter', [])]),\n trigger('toggle', [\n transition('void => *', [\n style({ display: 'block', height: 0 }),\n animate(defaultAnimationTiming, style({ height: '*' })),\n ]),\n transition('* => void', [\n style({ display: 'block' }),\n animate(defaultAnimationTiming, style({ height: 0, display: 'none' })),\n ]),\n ]),\n];\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'clr-accordion-description, clr-step-description',\n template: `<ng-content></ng-content>`,\n host: { '[class.clr-accordion-description]': 'true' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ClrAccordionDescription {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum AccordionStrategy {\n Default = 'default', // only one panel at a time\n Multi = 'multi', // can have multiple panels open at a time\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AccordionStrategy } from '../enums/accordion-strategy.enum';\nimport { AccordionStatus } from '../enums/accordion-status.enum';\n\nlet accordionCount = 0;\n\nexport class AccordionPanelModel {\n status = AccordionStatus.Inactive;\n index: number = null;\n disabled = false;\n open = false;\n templateId = `${this.id}-${this.accordionId}`;\n constructor(public id: string, public accordionId: number | string) {}\n}\n\nexport class AccordionModel {\n protected strategy = AccordionStrategy.Default;\n protected accordionCount = accordionCount++;\n protected _panels: { [id: string]: AccordionPanelModel } = {};\n\n get panels(): AccordionPanelModel[] {\n return Object.keys(this._panels).map(id => this._panels[id]);\n }\n\n setStrategy(strategy: AccordionStrategy) {\n this.strategy = strategy;\n }\n\n updatePanelOrder(ids: string[]) {\n ids.forEach((id, index) => (this._panels[id].index = index));\n this.removeOldPanels(ids);\n }\n\n addPanel(id: string, open = false) {\n this._panels[id] = new AccordionPanelModel(id, this.accordionCount);\n this._panels[id].open = open;\n }\n\n togglePanel(panelId: string, open?: boolean) {\n const panelIsOpen = this._panels[panelId].open;\n const newOpenState = open !== undefined ? open : !panelIsOpen;\n if (newOpenState && this.strategy === AccordionStrategy.Default) {\n this.closeAllPanels();\n }\n\n this._panels[panelId].open = newOpenState;\n }\n\n disablePanel(panelId: string, disabled: boolean) {\n this._panels[panelId].disabled = disabled;\n }\n\n private closeAllPanels() {\n this.panels.forEach(panel => (this._panels[panel.id].open = false));\n }\n\n private removeOldPanels(ids: string[]) {\n this.panels\n .filter(panel => ids.find(id => id === panel.id) === undefined)\n .forEach(panel => delete this._panels[panel.id]);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { AccordionModel, AccordionPanelModel } from '../models/accordion.model';\nimport { AccordionStrategy } from '../enums/accordion-strategy.enum';\n\n@Injectable()\nexport class AccordionService {\n protected accordion = new AccordionModel();\n protected readonly _panelsChanges = new BehaviorSubject<AccordionPanelModel[]>(this.accordion.panels);\n\n getPanelChanges(panelId: string): Observable<AccordionPanelModel> {\n return this._panelsChanges.pipe(map(panels => panels.find(s => s.id === panelId)));\n }\n\n setStrategy(strategy: AccordionStrategy) {\n this.accordion.setStrategy(strategy);\n }\n\n addPanel(panelId: string, open = false) {\n this.accordion.addPanel(panelId, open);\n this.emitUpdatedPanels();\n }\n\n togglePanel(panelId: string, open?: boolean) {\n this.accordion.togglePanel(panelId, open);\n this.emitUpdatedPanels();\n }\n\n disablePanel(panelId: string, disabled?: boolean) {\n this.accordion.disablePanel(panelId, disabled);\n this.emitUpdatedPanels();\n }\n\n updatePanelOrder(ids: string[]) {\n this.accordion.updatePanelOrder(ids);\n this.emitUpdatedPanels();\n }\n\n protected emitUpdatedPanels() {\n this._panelsChanges.next(this.accordion.panels);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n Component,\n ChangeDetectionStrategy,\n Input,\n EventEmitter,\n Output,\n SimpleChanges,\n Inject,\n OnInit,\n OnChanges,\n ContentChildren,\n QueryList,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nimport { UNIQUE_ID_PROVIDER, UNIQUE_ID } from '../utils/id-generator/id-generator.service';\nimport { ClrCommonStringsService } from '../utils/i18n/common-strings.service';\nimport { AccordionService } from './providers/accordion.service';\nimport { AccordionStatus } from './enums/accordion-status.enum';\nimport { panelAnimation } from './utils/animation';\nimport { IfExpandService } from '../utils/conditional/if-expanded.service';\nimport { AccordionPanelModel } from './models/accordion.model';\nimport { ClrAccordionDescription } from './accordion-description';\n\n@Component({\n selector: 'clr-accordion-panel',\n templateUrl: './accordion-panel.html',\n host: { '[class.clr-accordion-panel]': 'true' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: panelAnimation,\n providers: [IfExpandService, UNIQUE_ID_PROVIDER],\n})\nexport class ClrAccordionPanel implements OnInit, OnChanges {\n @Input('clrAccordionPanelDisabled') disabled = false;\n @Input('clrAccordionPanelOpen') panelOpen = false;\n @Output('clrAccordionPanelOpenChange') panelOpenChange = new EventEmitter<boolean>();\n @ContentChildren(ClrAccordionDescription) accordionDescription: QueryList<ClrAccordionDescription>;\n\n panel: Observable<AccordionPanelModel>;\n readonly AccordionStatus = AccordionStatus;\n isAccordion = true;\n\n get id(): string {\n return this._id;\n }\n\n set id(value: string) {\n this._id = value;\n }\n\n constructor(\n public commonStrings: ClrCommonStringsService,\n private accordionService: AccordionService,\n private ifExpandService: IfExpandService,\n @Inject(UNIQUE_ID) private _id: string\n ) {}\n\n ngOnInit() {\n this.panel = this.accordionService.getPanelChanges(this.id).pipe(tap(panel => this.emitPanelChange(panel)));\n this.accordionService.addPanel(this.id, this.panelOpen);\n this.accordionService.togglePanel(this.id, this.panelOpen);\n this.accordionService.disablePanel(this.id, this.disabled);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.panel && changes.panelOpen && changes.panelOpen.currentValue !== changes.panelOpen.previousValue) {\n this.accordionService.togglePanel(this.id, changes.panelOpen.currentValue);\n }\n\n if (this.panel && changes.disabled && changes.disabled.currentValue !== changes.disabled.previousValue) {\n this.accordionService.disablePanel(this.id, changes.disabled.currentValue);\n }\n }\n\n togglePanel() {\n this.accordionService.togglePanel(this.id);\n }\n\n collapsePanelOnAnimationDone(panel: AccordionPanelModel) {\n if (!panel.open) {\n this.ifExpandService.expanded = false;\n }\n }\n\n getPanelStateClasses(panel: AccordionPanelModel) {\n return `clr-accordion-panel-${panel.status} ${panel.open ? 'clr-accordion-panel-open' : ''}`;\n }\n\n getAccordionContentId(id: string) {\n return `clr-accordion-content-${id}'`;\n }\n\n getAccordionHeaderId(id: string) {\n return `clr-accordion-header-${id}`;\n }\n\n private emitPanelChange(panel: AccordionPanelModel) {\n if (panel.open !== this.panelOpen) {\n this.panelOpenChange.emit(panel.open);\n /**\n * @Note: this line below is needed because we don't want to use another value to track\n * for changes of the panel. Because we use BehaviorSubject this emit event is trigger on\n * init (that is not needed - there is no change of the original value) - in some cases this\n * lead to duplicate events.\n *\n * To prevent this we try to emit only when the value is changed and keep the value in sync\n * even that is used only into the Initial Lifecycle (ngOnInit).\n */\n this.panelOpen = panel.open;\n }\n\n if (panel.open) {\n this.ifExpandService.expanded = true;\n }\n }\n}\n","<ng-container *ngIf=\"panel | async; let panel\">\n <div *ngIf=\"panel.status !== AccordionStatus.Inactive\" aria-live=\"assertive\" class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n </div>\n\n <div role=\"group\" [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-accordion-header\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [disabled]=\"isAccordion && panel.disabled\"\n [attr.aria-disabled]=\"!isAccordion && panel.disabled\"\n [attr.aria-controls]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-expanded]=\"panel.open\"\n [class.clr-accordion-header-has-description]=\"(accordionDescription.changes | async)?.length || accordionDescription.length\"\n #headerButton\n >\n <span class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n <ng-container *ngIf=\"panel.status === AccordionStatus.Complete\">{{commonStrings.keys.success}}</ng-container>\n </span>\n <span class=\"clr-accordion-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle\"></cds-icon>\n <span class=\"clr-accordion-number\"></span>\n <cds-icon status=\"danger\" shape=\"exclamation-circle\" class=\"clr-accordion-error-icon\"></cds-icon>\n <cds-icon status=\"success\" shape=\"check-circle\" class=\"clr-accordion-complete-icon\"></cds-icon>\n </span>\n <ng-content select=\"clr-accordion-title, clr-step-title\"></ng-content>\n <ng-content select=\"clr-accordion-description, clr-step-description\"></ng-content>\n </button>\n </div>\n <div\n @skipInitialRender\n role=\"region\"\n [id]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-hidden]=\"!panel.open\"\n [attr.aria-labelledby]=\"getAccordionHeaderId(panel.templateId)\"\n >\n <div\n *ngIf=\"panel.open\"\n @toggle\n (@toggle.done)=\"collapsePanelOnAnimationDone(panel)\"\n class=\"clr-accordion-content\"\n >\n <div class=\"clr-accordion-inner-content\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'clr-accordion-title, clr-step-title',\n template: `<ng-content></ng-content>`,\n host: { '[class.clr-accordion-title]': 'true' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ClrAccordionTitle {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n Component,\n ContentChildren,\n QueryList,\n ChangeDetectionStrategy,\n Input,\n SimpleChanges,\n OnInit,\n OnChanges,\n AfterViewInit,\n OnDestroy,\n} from '@angular/core';\nimport { startWith } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\n\nimport { AccordionService } from './providers/accordion.service';\nimport { ClrAccordionPanel } from './accordion-panel';\nimport { AccordionStrategy } from './enums/accordion-strategy.enum';\n\n@Component({\n selector: 'clr-accordion',\n template: `<ng-content></ng-content>`,\n host: { '[class.clr-accordion]': 'true' },\n providers: [AccordionService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ClrAccordion implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n @Input('clrAccordionMultiPanel') multiPanel: boolean | string = false;\n @ContentChildren(ClrAccordionPanel, { descendants: true })\n panels: QueryList<ClrAccordionPanel>;\n subscriptions: Subscription[] = [];\n\n constructor(private accordionService: AccordionService) {}\n\n ngOnInit() {\n this.setAccordionStrategy();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.multiPanel.currentValue !== changes.multiPanel.previousValue) {\n this.setAccordionStrategy();\n }\n }\n\n ngAfterViewInit() {\n this.subscriptions.push(this.listenForDOMChanges());\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n private setAccordionStrategy() {\n const strategy = this.multiPanel ? AccordionStrategy.Multi : AccordionStrategy.Default;\n this.accordionService.setStrategy(strategy);\n }\n\n private listenForDOMChanges() {\n return this.panels.changes\n .pipe(startWith(this.panels))\n .subscribe((panels: QueryList<ClrAccordionPanel>) =>\n this.accordionService.updatePanelOrder(panels.toArray().map(p => p.id))\n );\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'clr-accordion-content, clr-step-content',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ClrAccordionContent {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive } from '@angular/core';\n\nimport { WillyWonka } from '../../utils/chocolate/willy-wonka';\n\n@Directive({ selector: 'clr-accordion' })\nexport class AccordionWillyWonka extends WillyWonka {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ChangeDetectorRef, Directive, Optional } from '@angular/core';\n\nimport { OompaLoompa } from '../../utils/chocolate/oompa-loompa';\nimport { AccordionWillyWonka } from './accordion-willy-wonka';\nimport { IfExpandService } from '../../utils/conditional/if-expanded.service';\n\n@Directive({ selector: 'clr-accordion-panel' })\nexport class AccordionOompaLoompa extends OompaLoompa {\n private expand: IfExpandService;\n\n constructor(cdr: ChangeDetectorRef, @Optional() willyWonka: AccordionWillyWonka, ifExpandService: IfExpandService) {\n if (!willyWonka) {\n throw new Error('clr-accordion-panel should only be used inside of clr-accordion');\n }\n super(cdr, willyWonka);\n this.expand = ifExpandService;\n }\n\n get flavor() {\n return this.expand.expanded;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ClrIconModule } from '../icon/icon.module';\nimport { ClrAccordionPanel } from './accordion-panel';\nimport { ClrAccordionTitle } from './accordion-title';\nimport { ClrAccordionDescription } from './accordion-description';\nimport { ClrAccordion } from './accordion';\nimport { ClrAccordionContent } from './accordion-content';\nimport { AccordionOompaLoompa } from './chocolate/accordion-oompa-loompa';\nimport { AccordionWillyWonka } from './chocolate/accordion-willy-wonka';\nimport { angleIcon, checkCircleIcon, ClarityIcons, exclamationCircleIcon } from '@cds/core/icon';\n\nconst declarations = [\n ClrAccordion,\n ClrAccordionPanel,\n ClrAccordionTitle,\n ClrAccordionDescription,\n ClrAccordionContent,\n AccordionOompaLoompa,\n AccordionWillyWonka,\n];\n\n@NgModule({\n imports: [CommonModule, ClrIconModule],\n declarations: [...declarations],\n exports: [...declarations],\n})\nexport class ClrAccordionModule {\n constructor() {\n ClarityIcons.addIcons(angleIcon, exclamationCircleIcon, checkCircleIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { FormGroup, FormControl } from '@angular/forms';\n\nexport function triggerAllFormControlValidation(formGroup: FormGroup) {\n Object.keys(formGroup.controls).forEach(field => {\n const control = formGroup.get(field);\n if (control instanceof FormControl) {\n control.markAsTouched();\n control.markAsDirty();\n control.updateValueAndValidity();\n } else if (control instanceof FormGroup) {\n triggerAllFormControlValidation(control);\n }\n });\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AccordionModel } from '../../models/accordion.model';\nimport { AccordionStatus } from '../../enums/accordion-status.enum';\n\nexport class StepperModel extends AccordionModel {\n private stepperModelInitialize = false;\n\n get allPanelsCompleted(): boolean {\n return this.panels.length && this.getNumberOfIncompletePanels() === 0 && this.getNumberOfOpenPanels() === 0;\n }\n\n addPanel(id: string, open = false) {\n super.addPanel(id, open);\n this._panels[id].disabled = true;\n }\n\n updatePanelOrder(ids: string[]) {\n super.updatePanelOrder(ids);\n if (this.stepperModelInitialize === false) {\n this.openFirstPanel();\n }\n }\n\n togglePanel(panelId: string) {\n if (this._panels[panelId].status === AccordionStatus.Complete) {\n this._panels[panelId].open = !this._panels[panelId].open;\n }\n }\n\n navigateToNextPanel(currentPanelId: string, currentPanelValid = true) {\n if (currentPanelValid) {\n this.completePanel(currentPanelId);\n this.openNextPanel(this._panels[currentPanelId].id);\n } else {\n this.setPanelError(currentPanelId);\n }\n }\n\n overrideInitialPanel(panelId: string) {\n this.panels\n .filter(() => this._panels[panelId] !== undefined)\n .forEach(panel => {\n if (panel.index < this._panels[panelId].index) {\n this.completePanel(panel.id);\n } else if (panel.id === panelId) {\n this._panels[panel.id].open = true;\n } else {\n this._panels[panel.id].open = false;\n }\n });\n }\n\n setPanelsWithErrors(ids: string[]) {\n ids.forEach(id => this.setPanelError(id));\n }\n\n resetPanels() {\n /* return stepper to initialize state */\n this.stepperModelInitialize = false;\n this.panels.forEach(p => this.resetPanel(p.id));\n this.openFirstPanel();\n }\n\n getNextPanel(currentPanelId: string) {\n return this.panels.find(s => s.index === this._panels[currentPanelId].index + 1);\n }\n\n private resetAllFuturePanels(panelId: string) {\n this.panels.filter(panel => panel.index >= this._panels[panelId].index).forEach(panel => this.resetPanel(panel.id));\n }\n\n private resetPanel(panelId: string) {\n this._panels[panelId].status = AccordionStatus.Inactive;\n this._panels[panelId].open = false;\n this._panels[panelId].disabled = true;\n }\n\n private openFirstPanel() {\n const firstPanel = this.getFirstPanel();\n /**\n * You need to call updatePanelOrder first to get the correct order,\n * else the list of panels will not have `index` set and we won't know\n * how to find the first panel.\n */\n if (!firstPanel) {\n return;\n }\n\n this._panels[firstPanel.id].open = true;\n this._panels[firstPanel.id].disabled = true;\n this.stepperModelInitialize = true;\n }\n\n private completePanel(panelId: string) {\n this._panels[panelId].status = AccordionStatus.Complete;\n this._panels[panelId].disabled = false;\n this._panels[panelId].open = false;\n }\n\n private openNextPanel(currentPanelId: string) {\n const nextPanel = this.getNextPanel(currentPanelId);\n\n if (nextPanel) {\n this.resetAllFuturePanels(nextPanel.id);\n this._panels[nextPanel.id].open = true;\n this._panels[nextPanel.id].disabled = true;\n }\n }\n\n private setPanelError(panelId: string) {\n this.resetAllFuturePanels(panelId);\n this._panels[panelId].open = true;\n this._panels[panelId].status = AccordionStatus.Error;\n }\n\n private getFirstPanel() {\n return this.panels.find(panel => panel.index === 0);\n }\n\n private getNumberOfIncompletePanels() {\n return this.panels.reduce((prev, next) => (next.status !== AccordionStatus.Complete ? prev + 1 : prev), 0);\n }\n\n private getNumberOfOpenPanels() {\n return this.panels.reduce((prev, next) => (next.open !== false ? prev + 1 : prev), 0);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { map, distinctUntilChanged } from 'rxjs/operators';\nimport { Observable, Subject } from 'rxjs';\n\nimport { AccordionService } from './../../providers/accordion.service';\nimport { StepperModel } from '../models/stepper.model';\n\n@Injectable()\nexport class StepperService extends AccordionService {\n readonly panelsCompleted = this.getAllCompletedPanelChanges();\n protected accordion = new StepperModel();\n\n private _activeStepChanges = new Subject<string>();\n readonly activeStep = this._activeStepChanges.asObservable();\n\n resetPanels() {\n this.accordion.resetPanels();\n this.emitUpdatedPanels();\n }\n\n setPanelsWithErrors(ids: string[]) {\n this.accordion.setPanelsWithErrors(ids);\n this.emitUpdatedPanels();\n }\n\n navigateToNextPanel(currentPanelId: string, currentPanelValid = true) {\n this.accordion.navigateToNextPanel(currentPanelId, currentPanelValid);\n this.updateNextStep(currentPanelId, currentPanelValid);\n this.emitUpdatedPanels();\n }\n\n overrideInitialPanel(panelId: string) {\n this.accordion.overrideInitialPanel(panelId);\n this.emitUpdatedPanels();\n }\n\n private updateNextStep(currentPanelId: string, currentPanelValid: boolean) {\n const nextPanel = this.accordion.getNextPanel(currentPanelId);\n\n if (currentPanelValid && nextPanel) {\n this._activeStepChanges.next(nextPanel.id);\n } else if (currentPanelValid) {\n this._activeStepChanges.next(currentPanelId);\n }\n }\n\n private getAllCompletedPanelChanges(): Observable<boolean> {\n return this._panelsChanges.pipe(\n map(() => this.accordion.allPanelsCompleted),\n distinctUntilChanged()\n );\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n Component,\n ChangeDetectionStrategy,\n Optional,\n Inject,\n OnInit,\n ViewChild,\n ElementRef,\n PLATFORM_ID,\n} from '@angular/core';\nimport { FormGroupName, NgModelGroup } from '@angular/forms';\nimport { tap, filter, pairwise } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\n\nimport { UNIQUE_ID_PROVIDER, UNIQUE_ID } from '../../utils/id-generator/id-generator.service';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { StepperService } from './providers/stepper.service';\nimport { stepAnimation } from '../utils/animation';\nimport { triggerAllFormControlValidation } from '../../utils/forms/validation';\nimport { IfExpandService } from '../../utils/conditional/if-expanded.service';\nimport { AccordionPanelModel } from '../models/accordion.model';\nimport { AccordionStatus } from '../enums/accordion-status.enum';\nimport { ClrAccordionPanel } from '../accordion-panel';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Component({\n selector: 'clr-stepper-panel',\n templateUrl: './../accordion-panel.html',\n host: { '[class.clr-accordion-panel]': 'true' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: stepAnimation,\n providers: [IfExpandService, UNIQUE_ID_PROVIDER],\n})\nexport class ClrStepperPanel extends ClrAccordionPanel implements OnInit {\n isAccordion = false;\n\n @ViewChild('headerButton') headerButton: ElementRef;\n private subscriptions: Subscription[] = [];\n\n get formGroup() {\n return this.formGroupName ? this.formGroupName.control : this.ngModelGroup.control;\n }\n\n get id(): string {\n return this.formGroupName ? this.formGroupName.name.toString() : this.ngModelGroup.name;\n }\n\n set id(_value: string) {\n // overriding parent id required empty setter\n }\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: any,\n public commonStrings: ClrCommonStringsService,\n @Optional() private formGroupName: FormGroupName,\n @Optional() private ngModelGroup: NgModelGroup,\n private stepperService: StepperService,\n ifExpandService: IfExpandService,\n @Inject(UNIQUE_ID) id: string\n ) {\n super(commonStrings, stepperService, ifExpandService, id);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.panel = this.panel.pipe(tap(panel => this.triggerAllFormControlValidationIfError(panel)));\n this.stepperService.disablePanel(this.id, true);\n this.listenToFocusChanges();\n\n if (this.formGroup) {\n // not all stepper panels are guaranteed to have a form (i.e. empty template-driven)\n this.subscriptions.push(\n this.formGroup.statusChanges.pipe(pairwise()).subscribe(([prevStatus, newStatus]) => {\n if ('VALID' === prevStatus && 'INVALID' === newStatus) {\n this.stepperService.navigateToNextPanel(this.id, this.formGroup.valid);\n }\n })\n );\n }\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n private listenToFocusChanges() {\n this.subscriptions.push(\n this.stepperService.activeStep\n .pipe(filter(panelId => isPlatformBrowser(this.platformId) && panelId === this.id))\n .subscribe(() => this.headerButton.nativeElement.focus())\n );\n }\n\n private triggerAllFormControlValidationIfError(panel: AccordionPanelModel) {\n if (panel.status === AccordionStatus.Error) {\n triggerAllFormControlValidation(this.formGroup);\n }\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, HostListener, HostBinding, Input, OnInit } from '@angular/core';\n\nimport { StepperService } from './providers/stepper.service';\nimport { ClrStepperPanel } from './stepper-panel';\n\nexport enum ClrStepButtonType {\n Next = 'next',\n Submit = 'submit',\n}\n\n@Directive({\n selector: '[clrStepButton]',\n host: {\n '[class.clr-step-button]': 'true',\n '[class.btn]': 'true',\n '[type]': \"'button'\",\n },\n})\nexport class ClrStepButton implements OnInit {\n @Input('clrStepButton') type: ClrStepButtonType | string = ClrStepButtonType.Next;\n @HostBinding('class.btn-primary') submitButton = false;\n\n constructor(private clrStep: ClrStepperPanel, private stepperService: StepperService) {}\n\n ngOnInit() {\n this.submitButton = this.type === ClrStepButtonType.Submit;\n }\n\n @HostListener('click')\n navigateToNextPanel() {\n this.stepperService.navigateToNextPanel(this.clrStep.id, this.clrStep.formGroup.valid);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n Component,\n ContentChildren,\n QueryList,\n Optional,\n ChangeDetectionStrategy,\n Input,\n SimpleChanges,\n OnInit,\n AfterViewInit,\n OnDestroy,\n OnChanges,\n} from '@angular/core';\nimport { FormGroupDirective, NgForm } from '@angular/forms';\nimport { startWith, filter } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\n\nimport { StepperService } from './providers/stepper.service';\nimport { AccordionService } from '../providers/accordion.service';\nimport { ClrStepperPanel } from './stepper-panel';\n\n@Component({\n selector: 'form[clrStepper]',\n template: `<ng-content></ng-content>`,\n host: {\n '[class.clr-accordion]': 'true',\n '[class.clr-stepper-forms]': 'true',\n },\n providers: [StepperService, { provide: AccordionService, useExisting: StepperService }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ClrStepper implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n @Input('clrInitialStep') initialPanel: string;\n @ContentChildren(ClrStepperPanel, { descendants: true })\n panels: QueryList<ClrStepperPanel>;\n subscriptions: Subscription[] = [];\n form: FormGroupDirective | NgForm;\n\n constructor(\n @Optional() private formGroup: FormGroupDirective,\n @Optional() private ngForm: NgForm,\n private stepperService: StepperService\n ) {}\n\n ngOnInit() {\n if (!this.formGroup && !this.ngForm) {\n throw new Error('To use stepper a Reactive or Template Form is required.');\n }\n\n this.form = this.formGroup ? this.formGroup : this.ngForm;\n this.subscriptions.push(this.listenForPanelsCompleted());\n this.subscriptions.push(this.listenForFormResetChanges());\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.initialPanel.currentValue !== changes.initialPanel.previousValue) {\n this.stepperService.overrideInitialPanel(this.initialPanel);\n }\n }\n\n ngAfterViewInit() {\n this.subscriptions.push(this.listenForDOMChanges());\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n private listenForFormResetChanges() {\n return this.form.statusChanges\n .pipe(filter(() => this.form.pristine)) // https://github.com/angular/angular/issues/10887\n .subscribe(() => this.stepperService.resetPanels());\n }\n\n private listenForPanelsCompleted() {\n return this.stepperService.panelsCompleted.subscribe(panelsCompleted => {\n if (panelsCompleted && this.form.valid) {\n this.form.ngSubmit.emit();\n } else if (!this.form.valid && this.form.touched) {\n this.setPanelsWithFormErrors();\n }\n });\n }\n\n private setPanelsWithFormErrors() {\n const panelsWithErrors = this.panels.reduce((panels, p) => (p.formGroup.invalid ? [...panels, p.id] : panels), []);\n this.stepperService.setPanelsWithErrors(panelsWithErrors);\n }\n\n private listenForDOMChanges() {\n return this.panels.changes.pipe(startWith(this.panels)).subscribe((panels: QueryList<ClrStepperPanel>) => {\n this.stepperService.updatePanelOrder(panels.toArray().map(p => p.id));\n\n if (this.initialPanel) {\n this.stepperService.overrideInitialPanel(this.initialPanel);\n }\n });\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive } from '@angular/core';\n\nimport { WillyWonka } from '../../../utils/chocolate/willy-wonka';\n\n@Directive({ selector: 'form[clrStepper]' })\nexport class StepperWillyWonka extends WillyWonka {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ChangeDetectorRef, Directive, Optional } from '@angular/core';\n\nimport { OompaLoompa } from '../../../utils/chocolate/oompa-loompa';\nimport { StepperWillyWonka } from './stepper-willy-wonka';\nimport { IfExpandService } from '../../../utils/conditional/if-expanded.service';\n\n@Directive({ selector: 'clr-stepper-panel, [clrStepButton]' })\nexport class StepperOompaLoompa extends OompaLoompa {\n private expand: IfExpandService;\n\n constructor(cdr: ChangeDetectorRef, @Optional() willyWonka: StepperWillyWonka, ifExpandService: IfExpandService) {\n if (!willyWonka) {\n throw new Error('clr-stepper-panel should only be used inside of clrStepper');\n }\n super(cdr, willyWonka);\n this.expand = ifExpandService;\n }\n\n get flavor() {\n return this.expand.expanded;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ClrAccordionModule } from '../accordion.module';\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrStepButton } from './../stepper/step-button';\nimport { ClrStepper } from './../stepper/stepper';\nimport { ClrStepperPanel } from './stepper-panel';\nimport { StepperOompaLoompa } from './chocolate/stepper-oompa-loompa';\nimport { StepperWillyWonka } from './chocolate/stepper-willy-wonka';\n\nconst declarations = [ClrStepper, ClrStepButton, ClrStepperPanel, StepperOompaLoompa, StepperWillyWonka];\n\n@NgModule({\n imports: [CommonModule, ClrIconModule, ClrAccordionModule],\n declarations: [...declarations],\n exports: [...declarations, ClrAccordionModule],\n})\nexport class ClrStepperModule {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { Component, Input, HostBinding } from '@angular/core';\nimport { isBooleanAttributeSet } from '../../utils/component/is-boolean-attribute-set';\n\n@Component({\n selector: 'clr-progress-bar',\n template: `\n <progress [id]=\"id\" [attr.max]=\"max\" [attr.value]=\"value\" [attr.data-displayval]=\"displayValue\"></progress>\n <span *ngIf=\"displayStringValue()\">{{ displayValue }}</span>\n `,\n})\nexport class ClrProgressBar {\n /**\n * Handle component ID\n */\n private _ID: string;\n @HostBinding('attr.id') externalId = '';\n @Input()\n set id(value: string) {\n this._ID = value;\n this.externalId = null;\n }\n get id() {\n return this._ID;\n }\n\n // Progress\n @Input('clrMax') max: number | string = 100;\n @Input('clrDisplayval') displayval: string;\n\n private _value: number | string = 0;\n @Input('clrValue')\n get value() {\n return this._value;\n }\n\n set value(value: number | string) {\n /**\n * No need to convert to `number` cause we could have\n * floating point and parseInt will round the numbers\n *\n * working with string won't have any side-effects,\n * we don't do any math so string will do the job.\n */\n this._value = value;\n }\n\n // Styles\n @HostBinding('class.progress')\n get progressClass() {\n return true;\n }\n\n private _labeled: boolean;\n @HostBinding('class.labeled')\n get labeledClass() {\n return this._labeled;\n }\n\n @Input('clrLabeled')\n set clrLabeled(value: boolean | string) {\n this._labeled = isBooleanAttributeSet(value);\n }\n\n private _fade: boolean;\n @HostBinding('class.progress-fade')\n get fadeClass() {\n return this._fade;\n }\n\n @Input('clrFade')\n set clrFade(value: boolean | string) {\n this._fade = isBooleanAttributeSet(value);\n }\n\n private _loop: boolean;\n @HostBinding('class.loop')\n get loopClass() {\n return this._loop;\n }\n\n @Input('clrLoop')\n set clrLoop(value: boolean | string) {\n this._loop = isBooleanAttributeSet(value);\n }\n\n private _success: boolean;\n @HostBinding('class.success')\n get successClass() {\n return this._success;\n }\n\n /** @deprecated since 2.0, remove in 4.0 */\n @Input('clrSuccess')\n set clrSuccess(value: boolean | string) {\n this._success = isBooleanAttributeSet(value);\n }\n\n private _danger: boolean;\n @HostBinding('class.danger')\n get dangerClass() {\n return this._danger;\n }\n\n /** @deprecated since 2.0, remove in 4.0 */\n @Input('clrDanger')\n set clrDanger(value: boolean | string) {\n this._danger = isBooleanAttributeSet(value);\n }\n\n private _flash: boolean;\n @HostBinding('class.flash')\n get flashClass() {\n return this._flash;\n }\n\n @Input('clrFlash')\n set clrFlash(value: boolean | string) {\n this._flash = isBooleanAttributeSet(value);\n }\n\n private _flashDanger: boolean;\n @HostBinding('class.flash-danger')\n get flashDangerClass() {\n return this._flashDanger;\n }\n\n /** @deprecated since 2.0, remove in 4.0 */\n @Input('clrFlashDanger')\n set clrFlashDanger(value: boolean | string) {\n this._flashDanger = isBooleanAttributeSet(value);\n }\n\n /**\n * Display optional text only when labeled is eneabled\n */\n displayStringValue() {\n return this._labeled;\n }\n\n /**\n * Make sure that we always will have something that is readable\n * for the screen reader\n */\n get displayValue() {\n if (this.displayval) {\n return this.displayval;\n }\n return `${this.value || 0}%`;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { ClrProgressBar } from './progress-bar';\n\nexport const CLR_PROGRESS_BAR_DIRECTIVES: Type<any>[] = [ClrProgressBar];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [CLR_PROGRESS_BAR_DIRECTIVES],\n exports: [CLR_PROGRESS_BAR_DIRECTIVES],\n})\nexport class ClrProgressBarModule {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum ClrTimelineLayout {\n HORIZONTAL = 'horizontal',\n VERTICAL = 'vertical',\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum ClrTimelineStepState {\n NOT_STARTED = 'not-started',\n CURRENT = 'current',\n PROCESSING = 'processing',\n SUCCESS = 'success',\n ERROR = 'error',\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ClrTimelineStepState } from '../enums/timeline-step-state.enum';\nimport { IconAttributes } from '../interface/icon-attribute.interface';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class TimelineIconAttributeService {\n private attributeMap: Map<ClrTimelineStepState, IconAttributes> = new Map<ClrTimelineStepState, IconAttributes>();\n\n constructor(commonStrings: ClrCommonStringsService) {\n this.attributeMap.set(ClrTimelineStepState.NOT_STARTED, {\n iconShape: 'circle',\n iconStatus: null,\n ariaLabel: commonStrings.keys.timelineStepNotStarted,\n });\n this.attributeMap.set(ClrTimelineStepState.CURRENT, {\n iconShape: 'dot-circle',\n iconStatus: 'info',\n ariaLabel: commonStrings.keys.timelineStepCurrent,\n });\n this.attributeMap.set(ClrTimelineStepState.PROCESSING, {\n iconShape: undefined,\n iconStatus: null,\n ariaLabel: commonStrings.keys.timelineStepProcessing,\n });\n this.attributeMap.set(ClrTimelineStepState.SUCCESS, {\n iconShape: 'success-standard',\n iconStatus: 'success',\n ariaLabel: commonStrings.keys.timelineStepSuccess,\n });\n this.attributeMap.set(ClrTimelineStepState.ERROR, {\n iconShape: 'error-standard',\n iconStatus: 'danger',\n ariaLabel: commonStrings.keys.timelineStepError,\n });\n }\n\n public getAriaLabel(step: ClrTimelineStepState): string {\n return this.attributeMap.get(step).ariaLabel;\n }\n\n public getIconShape(step: ClrTimelineStepState): string {\n return this.attributeMap.get(step).iconShape;\n }\n\n public getIconStatus(step: ClrTimelineStepState): string {\n return this.attributeMap.get(step).iconStatus;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, Input, HostBinding } from '@angular/core';\n\nimport { ClrTimelineLayout } from './enums/timeline-layout.enum';\nimport { TimelineIconAttributeService } from './providers/timeline-icon-attribute.service';\n\n@Component({\n selector: 'clr-timeline',\n template: ` <ng-content></ng-content> `,\n host: { '[class.clr-timeline]': 'true' },\n providers: [TimelineIconAttributeService],\n})\nexport class ClrTimeline {\n @Input('clrLayout') layout: ClrTimelineLayout = ClrTimelineLayout.HORIZONTAL;\n\n @HostBinding('class.clr-timeline-vertical')\n get isVertical(): boolean {\n return this.layout === ClrTimelineLayout.VERTICAL;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\n/**\n * Note: Why does this component have aria-hidden attribute?\n *\n * tl;dr: we want screen readers to ignore this element when its reading out to blind users.\n *\n * In order to make a timeline step accessible to screen readers we need the title read out before the\n * icon. In order to do this, ClrTimeLine step has a ContentChild that queries for the ClrTimelineStepTitle and\n * then adds the projected text into a .clr-sr-only element that is a sibling element to the icon. See the\n * ClrTimlineStep template for the DOM structure.\n */\n@Component({\n selector: 'clr-timeline-step-title',\n template: ` <ng-content></ng-content> `,\n host: { '[class.clr-timeline-step-title]': 'true', '[attr.aria-hidden]': 'true' },\n})\nexport class ClrTimelineStepTitle {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ContentChild, ElementRef, Inject, Input, PLATFORM_ID } from '@angular/core';\n\nimport { ClrTimelineStepState } from './enums/timeline-step-state.enum';\nimport { TimelineIconAttributeService } from './providers/timeline-icon-attribute.service';\nimport { ClrTimelineStepTitle } from './timeline-step-title';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Component({\n selector: 'clr-timeline-step',\n template: `\n <ng-content select=\"clr-timeline-step-header\"></ng-content>\n <span class=\"clr-sr-only\">{{ stepTitleText }}</span>\n <ng-container *ngIf=\"!isProcessing; else processing\">\n <cds-icon\n [attr.status]=\"iconStatus\"\n [attr.shape]=\"iconShape\"\n [attr.aria-label]=\"iconAriaLabel\"\n [attr.aria-current]=\"iconAriaCurrent\"\n >\n </cds-icon>\n </ng-container>\n <div class=\"clr-timeline-step-body\">\n <ng-content select=\"clr-timeline-step-title\"></ng-content>\n <ng-content select=\"clr-timeline-step-description\"></ng-content>\n </div>\n\n <ng-template #processing>\n <clr-spinner clrMedium [attr.aria-label]=\"iconAriaLabel\"></clr-spinner>\n </ng-template>\n `,\n host: { '[class.clr-timeline-step]': 'true' },\n})\nexport class ClrTimelineStep {\n @Input('clrState') state: ClrTimelineStepState = ClrTimelineStepState.NOT_STARTED;\n\n public stepTitleText: string;\n @ContentChild(ClrTimelineStepTitle, { read: ElementRef })\n stepTitle: ElementRef;\n\n constructor(\n private iconAttributeService: TimelineIconAttributeService,\n @Inject(PLATFORM_ID) private platformId: any\n ) {}\n\n ngAfterContentInit() {\n if (this.stepTitle && isPlatformBrowser(this.platformId)) {\n this.stepTitleText = this.stepTitle.nativeElement.innerText;\n }\n }\n\n get iconAriaCurrent(): boolean {\n return this.state === ClrTimelineStepState.CURRENT;\n }\n\n get iconAriaLabel(): string {\n return this.iconAttributeService.getAriaLabel(this.state);\n }\n\n get iconShape(): string {\n return this.iconAttributeService.getIconShape(this.state);\n }\n\n get iconStatus(): string {\n return this.iconAttributeService.getIconStatus(this.state);\n }\n\n get isProcessing(): boolean {\n return this.state === ClrTimelineStepState.PROCESSING;\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'clr-timeline-step-description',\n template: ` <ng-content></ng-content> `,\n host: { '[class.clr-timeline-step-description]': 'true' },\n})\nexport class ClrTimelineStepDescription {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'clr-timeline-step-header',\n template: ` <ng-content></ng-content> `,\n host: { '[class.clr-timeline-step-header]': 'true' },\n})\nexport class ClrTimelineStepHeader {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { circleIcon, ClarityIcons, dotCircleIcon, errorStandardIcon, successStandardIcon } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../icon/icon.module';\nimport { ClrSpinnerModule } from '../progress/spinner/spinner.module';\n\nimport { ClrTimeline } from './timeline';\nimport { ClrTimelineStep } from './timeline-step';\nimport { ClrTimelineStepDescription } from './timeline-step-description';\nimport { ClrTimelineStepHeader } from './timeline-step-header';\nimport { ClrTimelineStepTitle } from './timeline-step-title';\n\nconst CLR_TIMELINE_DIRECTIVES: Type<any>[] = [\n ClrTimeline,\n ClrTimelineStep,\n ClrTimelineStepDescription,\n ClrTimelineStepHeader,\n ClrTimelineStepTitle,\n];\n\n@NgModule({\n imports: [CommonModule, ClrIconModule, ClrSpinnerModule],\n exports: [...CLR_TIMELINE_DIRECTIVES, ClrIconModule, ClrSpinnerModule],\n declarations: [CLR_TIMELINE_DIRECTIVES],\n})\nexport class ClrTimelineModule {\n constructor() {\n ClarityIcons.addIcons(circleIcon, dotCircleIcon, errorStandardIcon, successStandardIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nimport { NgModule } from '@angular/core';\n\nimport { ClrButtonModule } from './button/button.module';\nimport { ClrDataModule } from './data/data.module';\nimport { ClrDragAndDropModule } from './utils/drag-and-drop/drag-and-drop.module';\nimport { ClrEmphasisModule } from './emphasis/emphasis.module';\nimport { ClrFormsModule } from './forms/forms.module';\nimport { ClrIconModule } from './icon/icon.module';\nimport { ClrLayoutModule } from './layout/layout.module';\nimport { ClrModalModule } from './modal/modal.module';\nimport { ClrPopoverModule } from './popover/popover.module';\nimport { ClrConditionalModule } from './utils/conditional/conditional.module';\nimport { ClrFocusOnViewInitModule } from './utils/focus/focus-on-view-init/focus-on-view-init.module';\nimport { ClrFocusTrapModule } from './utils/focus-trap/focus-trap.module';\nimport { ClrLoadingModule } from './utils/loading/loading.module';\nimport { ClrWizardModule } from './wizard/wizard.module';\nimport { ClrStepperModule } from './accordion/stepper/stepper.module';\nimport { ClrSpinnerModule } from './progress/spinner/spinner.module';\nimport { ClrProgressBarModule } from './progress/progress-bars/progress-bar.module';\nimport { ClrPopoverModuleNext } from './utils/popover/popover.module';\nimport { ClrTimelineModule } from './timeline/timeline.module';\n\n// Register the icon library\nimport '@cds/core/icon/register';\n\n@NgModule({\n exports: [\n ClrEmphasisModule,\n ClrDataModule,\n ClrIconModule,\n ClrModalModule,\n ClrLoadingModule,\n ClrConditionalModule,\n ClrFocusTrapModule,\n ClrFocusOnViewInitModule,\n ClrButtonModule,\n ClrFormsModule,\n ClrLayoutModule,\n ClrPopoverModule,\n ClrWizardModule,\n ClrDragAndDropModule,\n ClrStepperModule,\n ClrSpinnerModule,\n ClrProgressBarModule,\n ClrPopoverModuleNext,\n ClrTimelineModule,\n ],\n})\nexport class ClarityModule {}\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './button';\nexport * from './button-group';\nexport * from './button-group.module';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './loading-button';\nexport * from './loading-button.module';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './button.module';\nexport * from './button-group/index';\nexport * from './button-loading/index';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './datagrid';\nexport * from './datagrid-action-bar';\nexport * from './datagrid-action-overflow';\nexport * from './datagrid-column';\nexport * from './datagrid-column-toggle';\nexport * from './datagrid-column-toggle-title';\nexport * from './datagrid-column-toggle-button';\nexport * from './datagrid-column-separator';\nexport * from './datagrid-detail';\nexport * from './datagrid-detail-body';\nexport * from './datagrid-detail-header';\nexport * from './datagrid-hideable-column';\nexport * from './datagrid-filter';\nexport * from './datagrid-if-detail';\nexport * from './datagrid-items';\nexport * from './datagrid-items-trackby';\nexport * from './datagrid-row';\nexport * from './datagrid-row-detail';\nexport * from './datagrid-cell';\nexport * from './datagrid-footer';\nexport * from './datagrid-page-size';\nexport * from './datagrid-pagination';\nexport * from './datagrid-placeholder';\n\nexport * from './interfaces/state.interface';\nexport * from './enums/sort-order.enum';\nexport * from './interfaces/filter.interface';\nexport * from './interfaces/string-filter.interface';\nexport * from './interfaces/numeric-filter.interface';\nexport * from './interfaces/comparator.interface';\n\nexport * from './built-in/filters/datagrid-string-filter';\nexport * from './built-in/filters/datagrid-numeric-filter';\nexport * from './built-in/filters/datagrid-property-string-filter';\nexport * from './built-in/filters/datagrid-property-numeric-filter';\nexport * from './built-in/comparators/datagrid-property-comparator';\n\nexport * from './datagrid.module';\n\nexport { DatagridDetailRegisterer as ÇlrDatagridDetailRegisterer } from './datagrid-detail-registerer';\nexport { WrappedCell as ÇlrWrappedCell } from './wrapped-cell';\nexport { WrappedColumn as ÇlrWrappedColumn } from './wrapped-column';\nexport { WrappedRow as ÇlrWrappedRow } from './wrapped-row';\nexport { DatagridMainRenderer as ÇlrDatagridMainRenderer } from './render/main-renderer';\nexport { DatagridHeaderRenderer as ÇlrDatagridHeaderRenderer } from './render/header-renderer';\nexport { DatagridCellRenderer as ÇlrDatagridCellRenderer } from './render/cell-renderer';\nexport { DatagridRowRenderer as ÇlrDatagridRowRenderer } from './render/row-renderer';\nexport { ExpandableOompaLoompa as ÇlrExpandableOompaLoompa } from './chocolate/expandable-oompa-loompa';\nexport { ActionableOompaLoompa as ÇlrActionableOompaLoompa } from './chocolate/actionable-oompa-loompa';\nexport { DatagridWillyWonka as ÇlrDatagridWillyWonka } from './chocolate/datagrid-willy-wonka';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './models/selected-state.enum';\nexport * from './tree';\nexport * from './tree-node';\nexport * from './recursive-for-of';\nexport * from './tree-view.module';\nexport * from './tree-node-link';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './stack-view';\nexport * from './stack-header';\nexport * from './stack-block';\nexport * from './stack-input';\nexport * from './stack-select';\nexport * from './stack-view.module';\nexport * from './stack-view-custom-tags';\nexport * from './stack-content-input';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './data.module';\nexport * from './datagrid/index';\nexport * from './tree-view/index';\nexport * from './stack-view/index';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './alert';\nexport * from './alert-item';\nexport * from './alert-text';\nexport * from './alerts';\nexport * from './alerts-pager';\nexport * from './alert.module';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nexport * from './emphasis.module';\nexport * from './alert/index';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './if-control-state/if-error';\nexport * from './if-control-state/if-success';\nexport { ClrFormLayout } from './providers/layout.service';\nexport * from './error';\nexport * from './success';\nexport * from './form';\nexport * from './helper';\nexport * from './label';\nexport * from './layout';\nexport * from './abstract-container';\nexport * from './control';\nexport * from './control-container';\nexport * from './wrapped-control';\nexport * from './common.module';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './checkbox';\nexport * from './checkbox-container';\nexport * from './checkbox-wrapper';\nexport * from './checkbox.module';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './combobox.module';\nexport * from './combobox-container';\nexport * from './combobox';\nexport * from './options';\nexport * from './option';\nexport * from './option-items.directive';\nexport * from './option-selected.directive';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './datalist';\nexport * from './datalist-input';\nexport * from './datalist-container';\nexport * from './datalist.module';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './date-container';\nexport * from './date-input';\nexport * from './datepicker-view-manager';\nexport * from './daypicker';\nexport * from './monthpicker';\nexport * from './yearpicker';\nexport * from './calendar';\nexport * from './day';\n\nexport * from './datepicker.module';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './input';\nexport * from './input-container';\nexport * from './input.module';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './password';\nexport * from './password-container';\nexport * from './password.module';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './radio';\nexport * from './radio-container';\nexport * from './radio-wrapper';\nexport * from './radio.module';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './select';\nexport * from './select-container';\nexport * from './select.module';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './textarea';\nexport * from './textarea-container';\nexport * from './textarea.module';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './range';\nexport * from './range-container';\nexport * from './range.module';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nexport * from './common/index';\nexport * from './checkbox/index';\nexport * from './combobox/index';\nexport * from './datalist/index';\nexport * from './datepicker/index';\nexport * from './input/index';\nexport * from './password/index';\nexport * from './radio/index';\nexport * from './select/index';\nexport * from './textarea/index';\nexport * from './range/index';\nexport * from './forms.module';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nexport * from './icon';\nexport * from './icon.module';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './main-container';\nexport * from './main-container.module';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nexport * from './main-container-willy-wonka';\nexport * from './nav-detection-oompa-loompa';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nexport * from './chocolate/index';\nexport * from './header';\nexport * from './nav-level';\nexport * from './navigation.module';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './tabs';\nexport * from './tab';\nexport * from './tab-content';\nexport * from './tab-overflow-content';\nexport * from './tab-link.directive';\nexport * from './tabs.module';\n\nexport { TabsWillyWonka as ÇlrTabsWillyWonka } from './chocolate/tabs-willy-wonka';\nexport { ActiveOompaLoompa as ÇlrActiveOompaLoompa } from './chocolate/active-oompa-loompa';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './vertical-nav-group-children';\nexport * from './vertical-nav-group';\nexport * from './vertical-nav';\nexport * from './vertical-nav-link';\nexport * from './vertical-nav-icon';\nexport * from './vertical-nav.module';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nexport * from './layout.module';\nexport * from './main-container/index';\nexport * from './nav/index';\nexport * from './tabs/index';\nexport * from './vertical-nav/index';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nexport * from './modal';\nexport * from './modal.module';\nexport * from './modal-body';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nexport const CLR_MENU_POSITIONS: string[] = [\n 'bottom-left',\n 'bottom-right',\n 'top-left',\n 'top-right',\n 'left-bottom',\n 'left-top',\n 'right-bottom',\n 'right-top',\n];\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './dropdown';\nexport * from './dropdown-menu';\nexport * from './dropdown-trigger';\nexport * from './dropdown-item';\nexport * from './menu-positions';\nexport * from './dropdown.module';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './signpost';\nexport * from './signpost-content';\nexport * from './signpost-trigger';\nexport * from './signpost.module';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './tooltip';\nexport * from './tooltip-trigger';\nexport * from './tooltip-content';\nexport * from './tooltip.module';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nexport * from './dropdown/index';\nexport * from './popover.module';\nexport * from './signpost/index';\nexport * from './tooltip/index';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './wizard';\nexport * from './wizard-page';\nexport * from './wizard-stepnav';\nexport * from './wizard-stepnav-item';\nexport * from './wizard-button';\nexport * from './wizard-header-action';\nexport * from './wizard-custom-tags';\nexport * from './wizard-page-title';\nexport * from './wizard-page-navtitle';\nexport * from './wizard-page-buttons';\nexport * from './wizard-page-header-actions';\nexport * from './wizard.module';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './accordion';\nexport * from './accordion-panel';\nexport * from './accordion-title';\nexport * from './accordion-content';\nexport * from './accordion-description';\nexport * from './accordion.module';\n\nexport { AccordionWillyWonka as ÇlrAccordionWillyWonka } from './chocolate/accordion-willy-wonka';\nexport { AccordionOompaLoompa as ÇlrAccordionOompaLoompa } from './chocolate/accordion-oompa-loompa';\nexport { StepperWillyWonka as ÇlrStepperWillyWonka } from './stepper/chocolate/stepper-willy-wonka';\nexport { StepperOompaLoompa as ÇlrStepperOompaLoompa } from './stepper/chocolate/stepper-oompa-loompa';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './stepper-panel';\nexport * from './stepper';\nexport * from './stepper.module';\nexport * from './step-button';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './spinner.module';\nexport * from './spinner';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './progress-bar.module';\nexport * from './progress-bar';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './timeline.module';\n\nexport * from './timeline';\nexport * from './timeline-step';\nexport * from './timeline-step-header';\nexport * from './timeline-step-description';\nexport * from './timeline-step-title';\n\nexport * from './enums/timeline-step-state.enum';\nexport * from './enums/timeline-layout.enum';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './clr-angular.module';\n\nexport * from './button/index';\nexport * from './data/index';\nexport * from './emphasis/index';\nexport * from './forms/index';\nexport * from './icon/index';\nexport * from './layout/index';\nexport * from './modal/index';\nexport * from './popover/index';\nexport * from './utils/index';\nexport * from './wizard/index';\nexport * from './accordion/index';\nexport * from './accordion/stepper/index';\nexport * from './progress/spinner/index';\nexport * from './progress/progress-bars/index';\nexport * from './timeline/index';\n","/*\n * Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\nexport * from './index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["counter","tokenFactory","FocusService","OptionProxy","nbRow","POSITIONS","declarations"],"mappings":"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"}
|