Icard/angular-clarity-master(work.../node_modules/@clr/angular/fesm2020/clr-angular.mjs.map

1 line
1.6 MiB
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"file":"clr-angular.mjs","sources":["../../../projects/angular/src/icon/icon.ts","../../../projects/angular/src/icon/icon.module.ts","../../../projects/angular/src/utils/loading/loading-listener.ts","../../../projects/angular/src/utils/loading/loading.ts","../../../projects/angular/src/utils/conditional/if-expanded.service.ts","../../../projects/angular/src/utils/id-generator/id-generator.service.ts","../../../projects/angular/src/accordion/accordion-description.ts","../../../projects/angular/src/accordion/enums/accordion-status.enum.ts","../../../projects/angular/src/utils/animations/constants.ts","../../../projects/angular/src/accordion/utils/animation.ts","../../../projects/angular/src/utils/i18n/common-strings.default.ts","../../../projects/angular/src/utils/i18n/common-strings.service.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.ts","../../../projects/angular/src/accordion/accordion-content.ts","../../../projects/angular/src/accordion/accordion-title.ts","../../../projects/angular/src/utils/chocolate/willy-wonka.ts","../../../projects/angular/src/utils/chocolate/oompa-loompa.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/utils/enums/keys.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/popover-anchor.ts","../../../projects/angular/src/utils/popover/popover-close-button.ts","../../../projects/angular/src/utils/popover/enums/axis.enum.ts","../../../projects/angular/src/utils/popover/enums/alignment.enum.ts","../../../projects/angular/src/utils/popover/enums/viewport-violation.enum.ts","../../../projects/angular/src/utils/popover/position-operators.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.module.ts","../../../projects/angular/src/button/providers/button-in-group.service.ts","../../../projects/angular/src/button/button-group/button.ts","../../../projects/angular/src/utils/destroy/destroy.service.ts","../../../projects/angular/src/utils/focus/arrow-key-direction.enum.ts","../../../projects/angular/src/utils/focus/focus.service.ts","../../../projects/angular/src/utils/popover/enums/side.enum.ts","../../../projects/angular/src/utils/popover/enums/positions.enum.ts","../../../projects/angular/src/popover/common/popover-host-anchor.token.ts","../../../projects/angular/src/utils/popover/stop-escape-propagation.directive.ts","../../../projects/angular/src/utils/popover/popover-host.directive.ts","../../../projects/angular/src/utils/focus/focusable-item/linkers.ts","../../../projects/angular/src/button/providers/button-group-focus.enum.ts","../../../projects/angular/src/utils/animations/collapse/collapse.ts","../../../projects/angular/src/utils/animations/collapse/index.ts","../../../projects/angular/src/utils/dom-adapter/dom-adapter.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/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/loading.module.ts","../../../projects/angular/src/utils/loading/index.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.directive.ts","../../../projects/angular/src/utils/conditional/conditional.module.ts","../../../projects/angular/src/utils/conditional/index.ts","../../../projects/angular/src/utils/i18n/common-strings.interface.ts","../../../projects/angular/src/utils/i18n/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/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/utils/focus/focus-on-view-init/index.ts","../../../projects/angular/src/utils/focus/focus-trap/standalone-cdk-trap-focus.directive.ts","../../../projects/angular/src/utils/focus/focus-trap/index.ts","../../../projects/angular/src/utils/destroy/index.ts","../../../projects/angular/src/utils/index.ts","../../../projects/angular/src/button/providers/button-group-focus-handler.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/forms/common/providers/control-id.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/error.ts","../../../projects/angular/src/forms/common/helper.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/label.ts","../../../projects/angular/src/forms/common/success.ts","../../../projects/angular/src/forms/common/providers/control-class.service.ts","../../../projects/angular/src/forms/common/abstract-container.ts","../../../projects/angular/src/forms/common/control-container.ts","../../../projects/angular/src/utils/host-wrapping/host-wrapper.ts","../../../projects/angular/src/forms/common/providers/mark-control.service.ts","../../../projects/angular/src/forms/common/wrapped-control.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/component/is-boolean-attribute-set.ts","../../../projects/angular/src/progress/spinner/spinner.ts","../../../projects/angular/src/progress/spinner/spinner.module.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/utils/focus/key-focus/key-focus.module.ts","../../../projects/angular/src/forms/combobox/providers/combobox-container.service.ts","../../../projects/angular/src/forms/combobox/combobox-container.ts","../../../projects/angular/src/forms/combobox/model/multi-select-combobox.model.ts","../../../projects/angular/src/forms/combobox/model/single-select-combobox.model.ts","../../../projects/angular/src/forms/combobox/option-selected.directive.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/forms/combobox/model/pseudo-focus.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/forms/combobox/options.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/forms/combobox/combobox.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/datalist/providers/datalist-id.service.ts","../../../projects/angular/src/forms/datalist/datalist.ts","../../../projects/angular/src/forms/common/providers/focus.service.ts","../../../projects/angular/src/forms/datalist/datalist-container.ts","../../../projects/angular/src/forms/datalist/datalist-input.ts","../../../projects/angular/src/forms/datalist/datalist.module.ts","../../../projects/angular/src/utils/cdk/cdk-trap-focus.module.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/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/forms/datepicker/date-input.ts","../../../projects/angular/src/forms/datepicker/date-input.validator.ts","../../../projects/angular/src/forms/datepicker/datepicker.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/range/range-container.ts","../../../projects/angular/src/forms/range/range.ts","../../../projects/angular/src/forms/range/range.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/forms.module.ts","../../../projects/angular/src/utils/animations/expandable-animation/expandable-animation.module.ts","../../../projects/angular/src/utils/cdk/cdk-drag.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/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-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/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/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/modal/modal-stack.service.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-focus-manager.service.ts","../../../projects/angular/src/popover/signpost/providers/signpost-id.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/datagrid-if-expanded.service.ts","../../../projects/angular/src/data/datagrid/enums/display-mode.enum.ts","../../../projects/angular/src/data/datagrid/enums/selection-type.ts","../../../projects/angular/src/data/datagrid/wrapped-row.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-selection-cell.directive.ts","../../../projects/angular/src/data/datagrid/datagrid-row.ts","../../../projects/angular/src/data/datagrid/datagrid-row.html","../../../projects/angular/src/data/datagrid/enums/column-changes.enum.ts","../../../projects/angular/src/data/datagrid/providers/columns.service.ts","../../../projects/angular/src/data/datagrid/providers/state.provider.ts","../../../projects/angular/src/data/datagrid/utils/key-navigation-grid.controller.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/utils/focus/key-focus/index.ts","../../../projects/angular/src/data/datagrid/datagrid-action-overflow.ts","../../../projects/angular/src/data/datagrid/datagrid-column-toggle-trackby.ts","../../../projects/angular/src/data/datagrid/datagrid-items-trackby.ts","../../../projects/angular/src/data/datagrid/datagrid-column-toggle-button.ts","../../../projects/angular/src/data/datagrid/datagrid-column-toggle.ts","../../../projects/angular/src/data/datagrid/datagrid-detail-header.ts","../../../projects/angular/src/data/datagrid/datagrid-detail.ts","../../../projects/angular/src/data/datagrid/datagrid-detail-body.ts","../../../projects/angular/src/data/datagrid/datagrid-detail-registerer.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-if-detail.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-view-custom-tags.ts","../../../projects/angular/src/data/stack-view/stack-block.ts","../../../projects/angular/src/data/stack-view/stack-content-input.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-view.module.ts","../../../projects/angular/src/data/tree-view/tree-features.service.ts","../../../projects/angular/src/data/tree-view/recursive-children.ts","../../../projects/angular/src/data/tree-view/models/async-array.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/recursive-tree-node.model.ts","../../../projects/angular/src/data/tree-view/recursive-for-of.ts","../../../projects/angular/src/data/tree-view/tree-focus-manager.service.ts","../../../projects/angular/src/data/tree-view/models/declarative-tree-node.model.ts","../../../projects/angular/src/data/tree-view/tree-node-link.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/tree-view.module.ts","../../../projects/angular/src/data/data.module.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/alert-text.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.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/aria-current-link.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/providers/tooltip-mouse.service.ts","../../../projects/angular/src/popover/tooltip/tooltip.ts","../../../projects/angular/src/utils/assert/assert.helpers.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/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/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/wizard/wizard-title.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.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/interfaces/state.interface.ts","../../../projects/angular/src/data/datagrid/interfaces/filter.interface.ts","../../../projects/angular/src/data/datagrid/interfaces/string-filter.interface.ts","../../../projects/angular/src/data/datagrid/interfaces/numeric-filter.interface.ts","../../../projects/angular/src/data/datagrid/interfaces/comparator.interface.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/heading-level.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/clr-angular.ts"],"sourcesContent":["/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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({\n selector: 'clr-icon',\n})\nexport class ClrIconCustomTag {\n // No behavior\n // The only purpose is to \"declare\" the tag in Angular\n}\n\n@Directive({\n selector: 'cds-icon',\n})\nexport class CdsIconCustomTag {\n // No behavior\n // The only purpose is to \"declare\" the tag in Angular\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { CdsIconCustomTag, ClrIconCustomTag } from './icon';\n\nexport const CLR_ICON_DIRECTIVES: Type<any>[] = [ClrIconCustomTag, CdsIconCustomTag];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [CLR_ICON_DIRECTIVES],\n exports: [CLR_ICON_DIRECTIVES],\n})\nexport class ClrIconModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, 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({\n selector: '[clrLoading]',\n})\nexport class ClrLoading implements OnDestroy {\n static ngAcceptInputType_loadingState: boolean | ClrLoadingState | null | string;\n\n private _loadingState: ClrLoadingState | string = ClrLoadingState.DEFAULT;\n\n // We find the first parent that handles something loading\n constructor(@Optional() private listener: LoadingListener) {}\n\n @Input('clrLoading')\n get loadingState() {\n return this._loadingState;\n }\n 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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\nimport { ClrLoadingState } from '../loading/loading';\nimport { LoadingListener } from '../loading/loading-listener';\n\n@Injectable()\nexport class IfExpandService implements LoadingListener {\n expandable = 0;\n\n protected _loading = false;\n protected _expanded = false;\n protected _expandChange = new Subject<boolean>();\n\n get loading(): boolean {\n return this._loading;\n }\n set loading(value: boolean) {\n value = !!value;\n if (value !== this._loading) {\n this._loading = value;\n }\n }\n\n get expanded(): boolean {\n return this._expanded;\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 get expandChange(): Observable<boolean> {\n return this._expandChange.asObservable();\n }\n\n toggle() {\n this.expanded = !this._expanded;\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-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nlet NB_INSTANCES = 0;\n\nexport function uniqueIdFactory() {\n return 'clr-id-' + NB_INSTANCES++;\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ChangeDetectionStrategy, Component } 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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: 'Manage 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: 'Toggle {COLUMN} filter',\n datagridFilterDialogAriaLabel: 'Filter dialog',\n columnSeparatorAriaLabel: 'Column resize handle',\n columnSeparatorDescription: 'Use left or right key to resize the column',\n // Alert\n alertCloseButtonAriaLabel: 'Close alert',\n alertNextAlertAriaLabel: 'Next alert message, {CURRENT} of {COUNT}',\n alertPreviousAlertAriaLabel: 'Previous alert message, {CURRENT} of {COUNT}',\n // Date Picker\n datepickerDialogLabel: 'Choose date',\n datepickerToggleChooseDateLabel: 'Choose date',\n datepickerToggleChangeDateLabel: 'Change date, {SELECTED_DATE}',\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 datepickerSelectedLabel: '{FULL_DATE} - Selected',\n // Stack View\n stackViewChanged: 'Value changed.',\n // Responsive Nav\n responsiveNavToggleOpen: 'Open navigation menu',\n responsiveNavToggleClose: 'Close navigation menu',\n responsiveNavOverflowOpen: 'Open navigation overflow menu',\n responsiveNavOverflowClose: 'Close navigation overflow menu',\n //Vertical Nav\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 datagridExpandableBeginningOf: 'Beginning of',\n datagridExpandableEndOf: 'End of',\n datagridExpandableRowContent: 'Expandable row content',\n datagridExpandableRowsHelperText: `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 wizardStepnavAriaLabel: 'Step navigation',\n\n /**\n * Password Input\n * Screen-reader text for the hide/show password field button\n */\n passwordHide: 'Hide password for {LABEL}',\n passwordShow: 'Show password for {LABEL}',\n\n /**\n * Datagrid footer; sr-only text after the number of selected rows.\n */\n selectedRows: 'Selected rows',\n};\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 * Access to all of the keys as strings\n */\n get keys(): Readonly<ClrCommonStrings> {\n return this._strings;\n }\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 * 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { AccordionStatus } from '../enums/accordion-status.enum';\nimport { AccordionStrategy } from '../enums/accordion-strategy.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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { AccordionStrategy } from '../enums/accordion-strategy.enum';\nimport { AccordionModel, AccordionPanelModel } from '../models/accordion.model';\n\n@Injectable()\nexport class AccordionService {\n protected accordion = new AccordionModel();\n protected readonly _panelsChanges = new BehaviorSubject(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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nimport { IfExpandService } from '../utils/conditional/if-expanded.service';\nimport { ClrCommonStringsService } from '../utils/i18n/common-strings.service';\nimport { uniqueIdFactory } from '../utils/id-generator/id-generator.service';\nimport { ClrAccordionDescription } from './accordion-description';\nimport { AccordionStatus } from './enums/accordion-status.enum';\nimport { AccordionPanelModel } from './models/accordion.model';\nimport { AccordionService } from './providers/accordion.service';\nimport { panelAnimation } from './utils/animation';\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],\n})\nexport class ClrAccordionPanel implements OnInit, OnChanges {\n @Input('clrAccordionPanelDisabled') @HostBinding('class.clr-accordion-panel-disabled') disabled = false;\n @Input('clrAccordionPanelOpen') panelOpen = false;\n\n @Output('clrAccordionPanelOpenChange') panelOpenChange = new EventEmitter<boolean>();\n\n @ContentChildren(ClrAccordionDescription) accordionDescription: QueryList<ClrAccordionDescription>;\n\n readonly AccordionStatus = AccordionStatus;\n\n isAccordion = true;\n panel: Observable<AccordionPanelModel>;\n\n private _id = uniqueIdFactory();\n private _panelIndex: number;\n\n constructor(\n public commonStrings: ClrCommonStringsService,\n private accordionService: AccordionService,\n private ifExpandService: IfExpandService,\n private cdr: ChangeDetectorRef\n ) {}\n\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value;\n }\n\n get panelNumber() {\n return this._panelIndex + 1;\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.index !== this._panelIndex) {\n this._panelIndex = panel.index;\n // The whole chain of updates leading to this line starts in a ngAfterViewInit subscription in accordion.ts,\n // listening for DOM changes. It seems to only fails in tests, but as this is not a frequently called code,\n // I prefer to stay on the safe side and initiate a detection cycle here.\n this.cdr.detectChanges();\n }\n\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 [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\">{{panelNumber}}.</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 class=\"clr-accordion-content-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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n QueryList,\n SimpleChanges,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\n\nimport { ClrAccordionPanel } from './accordion-panel';\nimport { AccordionStrategy } from './enums/accordion-strategy.enum';\nimport { AccordionService } from './providers/accordion.service';\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) 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ChangeDetectionStrategy, Component } 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ChangeDetectionStrategy, Component } 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { 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 disableChocolateCheck = false;\n\n private _chocolate = new Subject<string>();\n\n get chocolate(): Observable<string> {\n return this._chocolate.asObservable();\n }\n\n ngAfterViewChecked() {\n if (!this.disableChocolateCheck) {\n this._chocolate.next();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { AfterContentChecked, ChangeDetectorRef, Directive, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { WillyWonka } from './willy-wonka';\n\n@Directive()\nexport abstract class OompaLoompa implements AfterContentChecked, OnDestroy {\n private latestFlavor: any;\n private subscription: Subscription;\n\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 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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({\n selector: 'clr-accordion',\n})\nexport class AccordionWillyWonka extends WillyWonka {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { IfExpandService } from '../../utils/conditional/if-expanded.service';\nimport { AccordionWillyWonka } from './accordion-willy-wonka';\n\n@Directive({\n selector: 'clr-accordion-panel',\n})\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { angleIcon, checkCircleIcon, ClarityIcons, exclamationCircleIcon } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../icon/icon.module';\nimport { ClrAccordion } from './accordion';\nimport { ClrAccordionContent } from './accordion-content';\nimport { ClrAccordionDescription } from './accordion-description';\nimport { ClrAccordionPanel } from './accordion-panel';\nimport { ClrAccordionTitle } from './accordion-title';\nimport { AccordionOompaLoompa } from './chocolate/accordion-oompa-loompa';\nimport { AccordionWillyWonka } from './chocolate/accordion-willy-wonka';\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { FormControl, FormGroup } 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { AccordionStatus } from '../../enums/accordion-status.enum';\nimport { AccordionModel } from '../../models/accordion.model';\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 override addPanel(id: string, open = false) {\n super.addPanel(id, open);\n this._panels[id].disabled = true;\n }\n\n override updatePanelOrder(ids: string[]) {\n super.updatePanelOrder(ids);\n if (this.stepperModelInitialize === false) {\n this.openFirstPanel();\n }\n }\n\n override 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 setPanelValid(panelId: string) {\n this._panels[panelId].status = AccordionStatus.Complete;\n }\n\n setPanelInvalid(panelId: string) {\n this._panels[panelId].status = AccordionStatus.Error;\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { distinctUntilChanged, map } from 'rxjs/operators';\n\nimport { AccordionService } from '../../providers/accordion.service';\nimport { StepperModel } from '../models/stepper.model';\n\n@Injectable()\nexport class StepperService extends AccordionService {\n readonly activeStep: Observable<string>;\n readonly panelsCompleted = this.getAllCompletedPanelChanges();\n\n protected override accordion = new StepperModel();\n\n private _activeStepChanges = new Subject<string>();\n\n constructor() {\n super();\n\n this.activeStep = this._activeStepChanges.asObservable();\n }\n\n resetPanels() {\n this.accordion.resetPanels();\n this.emitUpdatedPanels();\n }\n\n setPanelValid(panelId: string) {\n this.accordion.setPanelValid(panelId);\n this.emitUpdatedPanels();\n }\n\n setPanelInvalid(panelId: string) {\n this.accordion.setPanelInvalid(panelId);\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n OnInit,\n Optional,\n PLATFORM_ID,\n ViewChild,\n} from '@angular/core';\nimport { FormGroupName, NgModelGroup } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { distinctUntilChanged, filter, skipUntil, tap } from 'rxjs/operators';\n\nimport { IfExpandService } from '../../utils/conditional/if-expanded.service';\nimport { triggerAllFormControlValidation } from '../../utils/forms/validation';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrAccordionPanel } from '../accordion-panel';\nimport { AccordionStatus } from '../enums/accordion-status.enum';\nimport { AccordionPanelModel } from '../models/accordion.model';\nimport { stepAnimation } from '../utils/animation';\nimport { StepperService } from './providers/stepper.service';\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],\n})\nexport class ClrStepperPanel extends ClrAccordionPanel implements OnInit {\n override isAccordion = false;\n\n @ViewChild('headerButton') headerButton: ElementRef;\n\n private subscriptions: Subscription[] = [];\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: any,\n public override commonStrings: ClrCommonStringsService,\n @Optional() private formGroupName: FormGroupName,\n @Optional() private ngModelGroup: NgModelGroup,\n private stepperService: StepperService,\n ifExpandService: IfExpandService,\n cdr: ChangeDetectorRef\n ) {\n super(commonStrings, stepperService, ifExpandService, cdr);\n }\n\n override get id(): string {\n return this.formGroupName ? this.formGroupName.name.toString() : this.ngModelGroup.name;\n }\n override set id(_value: string) {\n // overriding parent id required empty setter\n }\n\n get formGroup() {\n return this.formGroupName ? this.formGroupName.control : this.ngModelGroup.control;\n }\n\n override ngOnInit(): void {\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 // not all stepper panels are guaranteed to have a form (i.e. empty template-driven)\n if (this.formGroup) {\n // set panel status on form status change only after the form becomes invalid\n const invalidStatusTrigger = this.formGroup.statusChanges.pipe(filter(status => status === 'INVALID'));\n\n this.subscriptions.push(\n this.formGroup.statusChanges.pipe(skipUntil(invalidStatusTrigger), distinctUntilChanged()).subscribe(status => {\n if (status === 'VALID') {\n this.stepperService.setPanelValid(this.id);\n } else if (status === 'INVALID') {\n this.stepperService.setPanelInvalid(this.id);\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, HostBinding, HostListener, 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n QueryList,\n SimpleChanges,\n} from '@angular/core';\nimport { AbstractControl, FormGroupDirective, NgForm } from '@angular/forms';\nimport { Observable, Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\n\nimport { AccordionService } from '../providers/accordion.service';\nimport { StepperService } from './providers/stepper.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 }) 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 fromControlReset(this.form.form).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\nfunction fromControlReset(control: AbstractControl) {\n return new Observable<void>(observer => {\n const unpatchedControlReset = control.reset;\n\n control.reset = () => {\n observer.next();\n unpatchedControlReset.apply(control);\n };\n\n return () => {\n control.reset = unpatchedControlReset;\n };\n });\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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({\n selector: 'form[clrStepper]',\n})\nexport class StepperWillyWonka extends WillyWonka {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { IfExpandService } from '../../../utils/conditional/if-expanded.service';\nimport { StepperWillyWonka } from './stepper-willy-wonka';\n\n@Directive({\n selector: 'clr-stepper-panel, [clrStepButton]',\n})\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrAccordionModule } from '../accordion.module';\nimport { ClrStepButton } from '../stepper/step-button';\nimport { ClrStepper } from '../stepper/stepper';\nimport { StepperOompaLoompa } from './chocolate/stepper-oompa-loompa';\nimport { StepperWillyWonka } from './chocolate/stepper-willy-wonka';\nimport { ClrStepperPanel } from './stepper-panel';\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 Keys {\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 Spacebar = ' ',\n Home = 'Home',\n End = 'End',\n}\n\nexport enum IEKeys {\n ArrowUp = 'Up',\n ArrowDown = 'Down',\n ArrowRight = 'Right',\n ArrowLeft = 'Left',\n Space = 'Spacebar',\n Escape = 'Esc',\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { IEKeys, Keys } from '../../enums/keys.enum';\n\nexport function normalizeKey(key: string) {\n if (key === Keys.ArrowUp || key === IEKeys.ArrowUp) {\n return Keys.ArrowUp;\n } else if (key === Keys.ArrowDown || key === IEKeys.ArrowDown) {\n return Keys.ArrowDown;\n } else if (key === Keys.ArrowRight || key === IEKeys.ArrowRight) {\n return Keys.ArrowRight;\n } else if (key === Keys.ArrowLeft || key === IEKeys.ArrowLeft) {\n return Keys.ArrowLeft;\n } else if (key === Keys.Space || key === IEKeys.Space) {\n return Keys.Space;\n } else if (key === Keys.Escape || key === IEKeys.Escape) {\n return Keys.Escape;\n } else {\n return key;\n }\n}\n\nexport function preventArrowKeyScroll(event: KeyboardEvent) {\n const key = normalizeKey(event.key);\n\n if (key === Keys.ArrowUp || key === Keys.ArrowDown || key === Keys.ArrowLeft || key === Keys.ArrowRight) {\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\nexport function isKeyEitherLetterOrNumber(event: KeyboardEvent) {\n const char = event.key;\n // Only letter characters differ when they switch between lowercase and uppercase, whether it's an English or non-English letter.\n return char.toLowerCase() !== char.toUpperCase() || (char >= '0' && char <= '9');\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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\nimport { preventArrowKeyScroll } from '../../focus/key-focus/util';\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@Injectable()\nexport class ClrPopoverToggleService {\n private _open = false;\n private _openChange = new Subject<boolean>();\n private _openEvent: Event;\n private _openEventChange = new Subject<Event>();\n private _popoverAligned = new Subject<HTMLElement>();\n private _popoverVisible = new Subject<boolean>();\n\n get openChange(): Observable<boolean> {\n return this._openChange.asObservable();\n }\n\n get popoverVisible(): Observable<boolean> {\n return this._popoverVisible.asObservable();\n }\n\n get openEvent(): Event {\n return this._openEvent;\n }\n set openEvent(event: Event) {\n this._openEvent = event;\n this._openEventChange.next(event);\n }\n\n get open(): boolean {\n return this._open;\n }\n 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 // For compatibility with legacy IfOpenService based implementations\n get originalEvent(): Event {\n return this._openEvent;\n }\n\n get popoverAligned(): Observable<HTMLElement> {\n return this._popoverAligned.asObservable();\n }\n\n getEventChange(): Observable<Event> {\n return this._openEventChange.asObservable();\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 toggleWithEvent(event: any) {\n preventArrowKeyScroll(event);\n\n this.openEvent = event;\n this.open = !this.open;\n }\n\n popoverVisibleEmit(visible: boolean) {\n this._popoverVisible.next(visible);\n }\n\n popoverAlignedEmit(popoverNode: HTMLElement) {\n this._popoverAligned.next(popoverNode);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ElementRef, Inject, Injectable, OnDestroy, Renderer2 } from '@angular/core';\nimport { fromEvent, Observable, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { ClrPopoverToggleService } from './popover-toggle.service';\n\n// https://github.com/angular/angular/issues/20351#issuecomment-344009887\n/** @dynamic */\n@Injectable()\nexport class ClrPopoverEventsService implements OnDestroy {\n outsideClickClose = true;\n scrollToClose = true;\n ignoredEvent: any;\n anchorButtonRef: ElementRef;\n closeButtonRef: ElementRef;\n contentRef: ElementRef;\n\n private documentClickListener: () => void;\n private escapeListener: () => void;\n private scrollSubscription: Subscription;\n private subscriptions: Subscription[] = [];\n private documentScroller: Observable<Event>;\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 ngOnDestroy(): void {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.removeAllEventListeners();\n }\n\n 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 removeScrollListener() {\n if (this.documentScroller) {\n this.scrollSubscription.unsubscribe();\n delete this.documentScroller;\n }\n }\n\n 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 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 addEscapeListener() {\n this.escapeListener = this.renderer.listen(this.document, 'keydown.escape', () => {\n this.smartOpenService.open = false;\n this.setAnchorFocus();\n });\n }\n\n removeEscapeListener() {\n if (this.escapeListener) {\n this.escapeListener();\n delete this.escapeListener;\n }\n }\n\n setCloseFocus(): void {\n this.closeButtonRef.nativeElement.focus();\n }\n\n setAnchorFocus(): void {\n this.anchorButtonRef.nativeElement.focus();\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 private removeAllEventListeners() {\n this.removeScrollListener();\n this.removeClickListener();\n this.removeEscapeListener();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { AfterViewInit, Directive, ElementRef, EventEmitter, HostListener, OnDestroy, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { ClrPopoverEventsService } from './providers/popover-events.service';\nimport { ClrPopoverToggleService } from './providers/popover-toggle.service';\n\n@Directive({\n selector: '[clrPopoverCloseButton]',\n host: {\n '[class.clr-smart-close-button]': 'true',\n },\n})\nexport class ClrPopoverCloseButton implements OnDestroy, AfterViewInit {\n @Output('clrPopoverOnCloseChange') closeChange = new EventEmitter<void>();\n\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 @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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 ClrAxis {\n VERTICAL,\n HORIZONTAL,\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 ClrAlignment {\n START = 0,\n CENTER = 0.5,\n END = 1,\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 ClrViewportViolation {\n BOTTOM = 0,\n LEFT = 1,\n RIGHT = 2,\n TOP = 3,\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrAlignment } from './enums/alignment.enum';\nimport { ClrViewportViolation } from './enums/viewport-violation.enum';\nimport { ClrPopoverContentOffset } from './interfaces/popover-content-offset.interface';\nimport { ClrPopoverPosition } from './interfaces/popover-position.interface';\nimport { ClrVisibilityCoords } from './interfaces/visibility-coords.interface';\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { ClrAxis } from '../enums/axis.enum';\nimport { ClrViewportViolation } from '../enums/viewport-violation.enum';\nimport { ClrPopoverContentOffset } from '../interfaces/popover-content-offset.interface';\nimport { ClrPopoverPosition } from '../interfaces/popover-position.interface';\nimport { align, flipSides, flipSidesAndNudgeContent, nudgeContent, testVisibility } from '../position-operators';\nimport { ClrPopoverEventsService } from './popover-events.service';\n\n@Injectable()\nexport class ClrPopoverPositionService {\n position: ClrPopoverPosition;\n shouldRealign: Observable<void>;\n\n private currentAnchorCoords: ClientRect;\n private currentContentCoords: ClientRect;\n private contentOffsets: ClrPopoverContentOffset;\n private _shouldRealign = new Subject<void>();\n\n constructor(private eventService: ClrPopoverEventsService, @Inject(PLATFORM_ID) public platformId: any) {\n this.shouldRealign = this._shouldRealign.asObservable();\n }\n\n realign() {\n this._shouldRealign.next();\n }\n\n 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 position 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 position 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\n /**\n * Adjusts popover position based on scroll value by adding the negative 'top' value of currentContentCoords to yOffset for proper alignment.\n * - The negative value means that the 'top' of the content is scrolled out of view at the top of the viewport.\n */\n if (this.currentContentCoords.top < 0) {\n this.contentOffsets.yOffset += Math.abs(this.currentContentCoords.top);\n }\n\n /**\n * This detects the condition where the popover is flipped because it would violate the bottom of the viewport, but flipping it results in the\n * popover rendering above the top of the body (y coordinate outside the body). In that event, it should be rendered within the body\n * as much as possible, so this logic sets the top of popover to render touching the top of the body.\n */\n if (this.contentOffsets.yOffset + this.currentAnchorCoords.y < 0) {\n this.contentOffsets.yOffset = 0 - this.currentContentCoords.top;\n }\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(this.position, this.currentAnchorCoords, this.currentContentCoords);\n\n /**\n * Even with the nudge we still have a problem. We need to check if the content is going to be clipped\n */\n if (this.contentOffsets.xOffset < 0) {\n this.contentOffsets.xOffset = 10;\n }\n\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 {\n AfterContentChecked,\n Directive,\n EmbeddedViewRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { ClrPopoverPosition } from './interfaces/popover-position.interface';\nimport { ClrPopoverEventsService } from './providers/popover-events.service';\nimport { ClrPopoverPositionService } from './providers/popover-position.service';\nimport { ClrPopoverToggleService } from './providers/popover-toggle.service';\n\n// https://github.com/angular/angular/issues/20351#issuecomment-344009887\n/** @dynamic */\n@Directive({\n selector: '[clrPopoverContent]',\n})\nexport class ClrPopoverContent implements AfterContentChecked, OnDestroy {\n private view: EmbeddedViewRef<void>;\n private subscriptions: Subscription[] = [];\n private removeClickListenerFn: VoidFunction | null = null;\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 = new EventEmitter<void>();\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\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 @Input('clrPopoverContent')\n 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 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 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 }),\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 this.smartOpenService.popoverVisibleEmit(true);\n }\n })\n );\n }\n\n ngOnDestroy() {\n this.removeContent();\n this.subscriptions.forEach(sub => sub.unsubscribe());\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 const [rootNode] = this.view.rootNodes;\n this.smartEventsService.contentRef = rootNode; // So we know where/what to set close focus on\n this.renderer.addClass(rootNode, '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(rootNode, 'top', '0px');\n this.renderer.setStyle(rootNode, 'left', '0px');\n // We need to hide it during the calculation phase, while it's not yet finally positioned.\n this.renderer.setStyle(rootNode, 'opacity', '0');\n this.removeClickListenerFn = this.renderer.listen(rootNode, '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 removeContent(): void {\n if (!this.view) {\n return;\n }\n if (this.removeClickListenerFn) {\n this.removeClickListenerFn();\n this.removeClickListenerFn = null;\n }\n this.view.rootNodes.forEach(node => this.renderer.removeChild(this.document.body, node));\n this.container.clear();\n delete this.view;\n this.smartOpenService.popoverVisibleEmit(false);\n }\n\n private alignContent() {\n if (!this.view) {\n return;\n }\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, EventEmitter, HostListener, OnDestroy, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrPopoverToggleService } from './providers/popover-toggle.service';\n\n@Directive({\n selector: '[clrPopoverOpenCloseButton]',\n host: {\n '[class.clr-smart-open-close]': 'true',\n },\n})\nexport class ClrPopoverOpenCloseButton implements OnDestroy {\n @Output('clrPopoverOpenCloseChange') openCloseChange = new EventEmitter<boolean>();\n\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 @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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrPopoverAnchor } from './popover-anchor';\nimport { ClrPopoverCloseButton } from './popover-close-button';\nimport { ClrPopoverContent } from './popover-content';\nimport { ClrPopoverOpenCloseButton } from './popover-open-close-button';\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 = 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { uniqueIdFactory } from '../../utils/id-generator/id-generator.service';\nimport { ClrLoadingState } from '../../utils/loading/loading';\nimport { LoadingListener } from '../../utils/loading/loading-listener';\nimport { ButtonInGroupService } from '../providers/button-in-group.service';\n\n@Component({\n selector: 'clr-button',\n template: `\n <ng-template #buttonProjectedRef>\n <button\n [class]=\"classNames\"\n (click)=\"emitClick()\"\n [attr.type]=\"type\"\n [attr.name]=\"name\"\n [attr.disabled]=\"disabled\"\n [attr.role]=\"role\"\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 @Output('click') _click = new EventEmitter<boolean>(false);\n\n @ViewChild('buttonProjectedRef', { static: true }) templateRef: TemplateRef<ClrButton>;\n\n loading: boolean;\n\n private _inMenu = false;\n private _enableService = false;\n private _classNames = 'btn';\n private _name: string = null;\n private _type: string = null;\n private _disabled: any = null;\n private _id: string = uniqueIdFactory();\n\n constructor(\n @SkipSelf()\n @Optional()\n public buttonInGroupService: ButtonInGroupService\n ) {}\n\n @Input('clrInMenu')\n get inMenu(): boolean {\n return this._inMenu;\n }\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 @Input('class')\n get classNames(): string {\n return this._classNames;\n }\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 @Input('name')\n get name(): string {\n return this._name;\n }\n set name(value: string) {\n if (typeof value === 'string') {\n this._name = value;\n }\n }\n\n @Input('type')\n get type(): string {\n return this._type;\n }\n set type(value: string) {\n if (typeof value === 'string') {\n this._type = value;\n }\n }\n\n @Input('id')\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n if (typeof value === 'string') {\n this._id = value;\n }\n }\n\n @Input('disabled')\n get disabled(): any {\n return this._disabled;\n }\n set disabled(value: any) {\n if (value !== null && value !== false) {\n this._disabled = '';\n } else {\n this._disabled = null;\n }\n }\n\n get role(): string {\n return this.inMenu ? 'menuitem' : null;\n }\n\n ngAfterViewInit() {\n this._enableService = true;\n }\n\n loadingStateChange(state: ClrLoadingState): void {\n this.loading = state === ClrLoadingState.LOADING;\n }\n\n emitClick(): void {\n this._click.emit(true);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { Subject } from 'rxjs';\n\n/**\n * @description\n *\n * Developers should explicitly add this service to providers; it then can be injected\n * into a constructor and used as a notifier for the `takeUntil` operator. This eliminates\n * the need for boilerplates with subscriptions, and we don't need to implement the `OnDestroy`\n * interface and teardown subscriptions there.\n *\n * This can be used as follows:\n * ```ts\n * @Component({\n * selector: 'clr-button-group',\n * templateUrl: 'button-group.html',\n * providers: [ClrDestroyService],\n * })\n * export class ClrButtonGroup {\n * constructor(public buttonGroupNewService: ButtonInGroupService, private destroy$: ClrDestroyService) {}\n *\n * ngAfterContentInit() {\n * this.buttonGroupNewService.changes.pipe(takeUntil(this.destroy$)).subscribe(button => this.rearrangeButton(button));\n * }\n * }\n * ```\n */\n@Injectable()\nexport class ClrDestroyService extends Subject<void> implements OnDestroy {\n ngOnDestroy(): void {\n this.next();\n this.complete();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 private _current: FocusableItem;\n private _unlistenFuncs: (() => void)[] = [];\n\n constructor(private renderer: Renderer2) {}\n\n 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, tabIndex = '0') {\n this.renderer.setAttribute(el, 'tabindex', tabIndex);\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 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 ClrSide {\n BEFORE = -1,\n AFTER = 1,\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrAlignment } from './alignment.enum';\nimport { ClrAxis } from './axis.enum';\nimport { ClrSide } from './side.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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrPopoverToggleService } from './providers/popover-toggle.service';\n\n@Directive({\n standalone: true,\n})\nexport class ClrStopEscapePropagationDirective implements OnInit, OnDestroy {\n private subscription: Subscription;\n private lastOpenChange: boolean | null = null;\n\n constructor(private toggleService: ClrPopoverToggleService) {}\n\n ngOnInit() {\n this.subscription = this.toggleService.openChange.subscribe(open => {\n this.lastOpenChange = open;\n });\n }\n\n ngOnDestroy() {\n this.subscription?.unsubscribe();\n }\n\n @HostListener('keyup.escape', ['$event'])\n onEscapeKey(event: KeyboardEvent) {\n if (this.lastOpenChange !== null) {\n if (this.lastOpenChange === false) {\n event.stopPropagation();\n }\n\n this.lastOpenChange = null;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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\nimport { POPOVER_HOST_ANCHOR } from '../../popover/common/popover-host-anchor.token';\nimport { ClrPopoverEventsService } from './providers/popover-events.service';\nimport { ClrPopoverPositionService } from './providers/popover-position.service';\nimport { ClrPopoverToggleService } from './providers/popover-toggle.service';\nimport { ClrStopEscapePropagationDirective } from './stop-escape-propagation.directive';\n\n@Directive({\n standalone: true,\n providers: [\n ClrPopoverToggleService,\n ClrPopoverEventsService,\n ClrPopoverPositionService,\n { provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef },\n ],\n hostDirectives: [ClrStopEscapePropagationDirective],\n})\nexport class ClrPopoverHostDirective {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 InitialFocus {\n FIRST_ITEM = 'first',\n LAST_ITEM = 'last',\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\nimport { Component, ElementRef, HostBinding, HostListener, Input } from '@angular/core';\n\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 overflow: hidden;\n }\n `,\n ],\n animations: [\n trigger('expandAnimation', [\n transition('true <=> false', [\n style({ height: '{{startHeight}}px' }),\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 './fade';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 './fade-slide';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 './slide';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrLoading } from './loading';\n\nexport const CLR_LOADING_DIRECTIVES: Type<any>[] = [ClrLoading];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [CLR_LOADING_DIRECTIVES],\n exports: [CLR_LOADING_DIRECTIVES],\n})\nexport class ClrLoadingModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, 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 = 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 get currentChange(): Observable<number> {\n return this._currentChange.asObservable();\n }\n\n /*********\n *\n * @description\n * A property that gets/sets the current state of _current for this instance of IfActive structural directive.\n * And, broadcasts the new value to all subscribers.\n *\n */\n get current(): number {\n return this._current;\n }\n set current(value: number) {\n if (this._current !== value) {\n this._current = value;\n this._currentChange.next(value);\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 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({\n selector: '[clrIfActive]',\n})\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 /**********\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 = new EventEmitter<boolean>(false);\n\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 /**\n * @description\n * A property that gets/sets IfActiveService.active with value.\n *\n */\n @Input('clrIfActive')\n get active() {\n return this.ifActiveService.current === this.id;\n }\n set active(value: boolean | string) {\n if (value) {\n this.ifActiveService.current = this.id;\n }\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\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 */\n updateView(value: boolean) {\n if (value) {\n this.container.createEmbeddedView(this.template);\n } else {\n this.container.clear();\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 * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, 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({\n selector: '[clrIfOpen]',\n})\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 static ngAcceptInputType_open: boolean | '';\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 = new EventEmitter<boolean>(false);\n\n private subscription: Subscription;\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 * @description\n * A property that gets/sets ClrPopoverToggleService.open with value.\n */\n @Input('clrIfOpen')\n get open() {\n return this.toggleService.open;\n }\n set open(value: boolean | string) {\n this.toggleService.open = value as boolean;\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\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 *\n * @param value\n */\n updateView(value: boolean) {\n if (value) {\n this.container.createEmbeddedView(this.template);\n } else {\n this.container.clear();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 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({\n selector: '[clrIfExpanded]',\n})\nexport class ClrIfExpanded implements OnInit, OnDestroy {\n @Output('clrIfExpandedChange') expandedChange = new EventEmitter<boolean>(true);\n\n private _expanded = false;\n\n /**\n * Subscriptions to all the services and queries changes\n */\n private _subscriptions: Subscription[] = [];\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 @Input('clrIfExpanded')\n get expanded(): boolean | string {\n return this._expanded;\n }\n set expanded(value: boolean | string) {\n if (typeof value === 'boolean') {\n this.expand.expanded = value;\n this._expanded = value;\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 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","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrIfActive } from './if-active.directive';\nimport { ClrIfExpanded } from './if-expanded.directive';\nimport { ClrIfOpen } from './if-open.directive';\n\nexport const CONDITIONAL_DIRECTIVES: Type<any>[] = [ClrIfActive, ClrIfOpen, ClrIfExpanded];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [CONDITIONAL_DIRECTIVES],\n exports: [CONDITIONAL_DIRECTIVES],\n})\nexport class ClrConditionalModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 interface ClrCommonStrings {\n /**\n * Open button\n */\n open: string;\n /**\n * Close button\n */\n close: string;\n /**\n * Show button\n */\n show: string;\n /**\n * Hide button\n */\n hide: string;\n /**\n * Delete button\n */\n delete?: string;\n /**\n * Expandable components: expand caret\n */\n expand: string;\n /**\n * Expandable components: collapse caret\n */\n collapse: string;\n /**\n * Overflow menus: ellipsis button\n */\n more: string;\n /**\n * Selectable components: checkbox or radio\n */\n select: string;\n /**\n * Selectable components: checkbox to select all\n */\n selectAll: string;\n /**\n * Selected item(s): combobox\n */\n selection?: string;\n /**\n * Pagination: previous button\n */\n previous: string;\n /**\n * Pagination: next button\n */\n next: string;\n /**\n * Pagination: go to current\n */\n current: string;\n /**\n * Alert levels: info\n */\n info: string;\n /**\n * Alert levels: success\n */\n success: string;\n /**\n * Alert levels: warning\n */\n warning: string;\n /**\n * Alert levels: danger\n */\n danger: string;\n /**\n * Datagrid: row actions\n */\n rowActions: string;\n /**\n * Datagrid: pick columns\n */\n pickColumns: string;\n /**\n * Datagrid: show columns\n */\n showColumns: string;\n /**\n * Datagrid: sort of columns\n */\n sortColumn: string;\n /**\n * Datagrid: first page\n */\n firstPage: string;\n /**\n * Datagrid: last page\n */\n lastPage: string;\n /**\n * Datagrid: next page\n */\n nextPage: string;\n /**\n * Datagrid: previous page\n */\n previousPage: string;\n /**\n * Datagrid: previous page\n */\n currentPage: string;\n /**\n * Datagird: total pages\n */\n totalPages: string;\n /**\n * Datagrid string filter: filter items\n */\n filterItems: string;\n /**\n * Datagrid numeric filter: min\n */\n minValue: string;\n /**\n * Datagrid numeric filter: max\n */\n maxValue: string;\n /**\n * Datagrid filter toggle button\n */\n datagridFilterAriaLabel?: string;\n /**\n * Datagrid filter dialog\n */\n datagridFilterDialogAriaLabel?: string;\n /**\n * Datagrid column handler string\n */\n columnSeparatorAriaLabel?: string;\n /**\n * Datagrid column resize handler string\n */\n columnSeparatorDescription?: string;\n /**\n * Modal start of content\n */\n modalContentStart: string;\n /**\n * Modal end of content\n */\n modalContentEnd: string;\n\n /**\n * Datagrid Show columns menu description\n */\n showColumnsMenuDescription: string;\n /**\n * Datagrid Show columns / All columns selected confirmation\n */\n allColumnsSelected: string;\n /**\n * Signpost Toggle Button\n */\n signpostToggle: string;\n /**\n * Signpost Close Button\n * (used inside signpost content components)\n */\n signpostClose: string;\n /*\n * Loaders/Spinners\n */\n loading: string;\n /**\n * Datagrid: detail pane start content for screen reader\n */\n detailPaneStart: string;\n /**\n * Datagrid: detail pane end content for screen reader\n */\n detailPaneEnd: string;\n /**\n * Datagrid: Single selection header\n */\n singleSelectionAriaLabel: string;\n\n /**\n * Datagrid: Single actionable header\n */\n singleActionableAriaLabel: string;\n\n /**\n * Datagrid: Expandable row\n */\n detailExpandableAriaLabel: string;\n\n /**\n * Alert: Close alert button\n */\n alertCloseButtonAriaLabel: string;\n\n /**\n * Alert: Next Alert button\n */\n alertNextAlertAriaLabel: string;\n\n /**\n * Alert: Previous Alert button\n */\n alertPreviousAlertAriaLabel: string;\n\n /**\n * Datepicker UI labels\n */\n datepickerDialogLabel: string;\n datepickerToggleChooseDateLabel: string;\n datepickerToggleChangeDateLabel: string;\n datepickerPreviousMonth: string;\n datepickerCurrentMonth: string;\n datepickerNextMonth: string;\n datepickerPreviousDecade: string;\n datepickerNextDecade: string;\n datepickerCurrentDecade: string;\n datepickerSelectMonthText: string;\n datepickerSelectYearText: string;\n datepickerSelectedLabel: string;\n /**\n * Stack View: Record has changed\n */\n stackViewChanged: string;\n // Responsive Nav\n responsiveNavToggleOpen: string;\n responsiveNavToggleClose: string;\n responsiveNavOverflowOpen: string;\n responsiveNavOverflowClose: string;\n // Vertical Nav\n verticalNavToggle: string;\n /**\n * Timeline Steps\n */\n timelineStepNotStarted: string;\n timelineStepCurrent: string;\n timelineStepSuccess: string;\n timelineStepError: string;\n timelineStepProcessing: string;\n\n // Datagrid Helper text for expandable rows\n datagridExpandableBeginningOf?: string;\n datagridExpandableEndOf?: string;\n datagridExpandableRowContent?: string;\n datagridExpandableRowsHelperText?: string;\n\n /**\n * Combobox Searching Text\n */\n comboboxSearching: string;\n comboboxDelete: string;\n comboboxSelection: string;\n comboboxSelected: string;\n comboboxNoResults: string;\n comboboxOpen: string;\n\n /**\n * Wizard: Screen-reader text for completed step.\n */\n wizardStepSuccess: string;\n\n /**\n * Wizard: Screen-reader text for step with error.\n */\n wizardStepError: string;\n\n /**\n * Wizard: Aria-label for the stepnav section.\n */\n wizardStepnavAriaLabel: string;\n\n /**\n * Password Input\n * Screen-reader text for the hide/show password field button.\n */\n passwordHide: string;\n passwordShow: string;\n\n /**\n * Datagrid footer; sr-only text after the number of selected rows.\n */\n selectedRows: string;\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrAlignment } from '../enums/alignment.enum';\nimport { ClrAxis } from '../enums/axis.enum';\nimport { ClrSide } from '../enums/side.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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 './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';\nexport * from './popover-host.directive';\nexport * from './stop-escape-propagation.directive';\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 Inject,\n Input,\n NgZone,\n OnDestroy,\n PLATFORM_ID,\n Renderer2,\n} from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\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, OnDestroy {\n private document: Document;\n private directFocus = true; // true if the element gets focused without need to set tabindex;\n private destroy$ = new Subject<void>();\n private _isEnabled: boolean;\n\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 ngZone: NgZone\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 ngZone.runOutsideAngular(() =>\n fromEvent(el.nativeElement, 'focusout')\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\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 }\n\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 ngOnDestroy(): void {\n this.destroy$.next();\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { Directive } from '@angular/core';\n\n@Directive({\n standalone: true,\n})\nexport class ClrStandaloneCdkTrapFocus extends CdkTrapFocus {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 './standalone-cdk-trap-focus.directive';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 './destroy.service';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 './popover/index';\nexport * from './focus/focus-on-view-init/index';\nexport * from './focus/focus-trap/index';\nexport * from './destroy';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, Renderer2 } from '@angular/core';\n\nimport { ClrPopoverToggleService } from '../../utils';\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 { InitialFocus } from './button-group-focus.enum';\n\n@Injectable()\nexport class ButtonGroupFocusHandler {\n initialFocus: InitialFocus = InitialFocus.FIRST_ITEM;\n\n private menu: HTMLElement;\n private menuToggle: HTMLElement;\n private buttons: FocusableItem[];\n private _unlistenFuncs: (() => void)[] = [];\n\n constructor(\n private focusService: FocusService,\n private toggleService: ClrPopoverToggleService,\n private renderer: Renderer2\n ) {}\n\n ngOnDestroy() {\n this._unlistenFuncs.forEach((unlisten: () => void) => unlisten());\n this.focusService.detachListeners();\n }\n\n initialize({ menu, menuToggle }: { menu: HTMLElement; menuToggle: HTMLElement }) {\n this.menu = menu;\n this.menuToggle = menuToggle;\n\n this.focusService.registerContainer(this.menu, '-1');\n this.listenToKeys();\n this.linkButtons();\n\n switch (this.initialFocus) {\n case InitialFocus.LAST_ITEM:\n this.focusLastItem();\n break;\n default:\n this.focusFirstItem();\n break;\n }\n }\n\n private resetButtonsFocus() {\n this.buttons.forEach(button => {\n button.blur();\n });\n }\n\n private listenToKeys() {\n this._unlistenFuncs.push(\n this.renderer.listen(this.menu, 'keydown.shift.tab', event => this.closeMenu(event, false))\n );\n this._unlistenFuncs.push(this.renderer.listen(this.menu, 'keydown.tab', event => this.closeMenu(event, true)));\n }\n\n private closeMenu(event: KeyboardEvent, focusBackOnToggle: boolean) {\n this.toggleService.toggleWithEvent(event);\n if (focusBackOnToggle) {\n this.menuToggle.focus();\n }\n this.resetButtonsFocus();\n }\n\n private linkButtons() {\n const buttonElements = Array.from(this.menu.children) as HTMLElement[];\n this.buttons = buttonElements.map<FocusableItem>(buttonElement => {\n this._unlistenFuncs.push(this.renderer.listen(buttonElement, 'click', event => this.closeMenu(event, true)));\n return {\n id: buttonElement.id,\n value: buttonElement,\n focus: () => {\n buttonElement.setAttribute('tabindex', '0');\n buttonElement.focus();\n },\n blur: () => {\n buttonElement.setAttribute('tabindex', '-1');\n buttonElement.blur();\n },\n };\n });\n this.resetButtonsFocus();\n Linkers.linkVertical(this.buttons);\n }\n\n private focusFirstItem(): void {\n if (this.buttons.length) {\n this.focusService.moveTo(this.buttons[0]);\n }\n this.initialFocus = InitialFocus.FIRST_ITEM;\n }\n\n private focusLastItem(): void {\n if (this.buttons.length) {\n this.focusService.moveTo(this.buttons[this.buttons.length - 1]);\n }\n this.initialFocus = InitialFocus.FIRST_ITEM;\n }\n}\n\nexport const BUTTON_GROUP_FOCUS_HANDLER_PROVIDER = {\n provide: ButtonGroupFocusHandler,\n};\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 Input,\n QueryList,\n ViewChild,\n} from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ClrDestroyService } from '../../utils/destroy/destroy.service';\nimport { FOCUS_SERVICE_PROVIDER } from '../../utils/focus/focus.service';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { uniqueIdFactory } from '../../utils/id-generator/id-generator.service';\nimport { ClrPopoverPositions } from '../../utils/popover/enums/positions.enum';\nimport { ClrPopoverPosition } from '../../utils/popover/interfaces/popover-position.interface';\nimport { ClrPopoverHostDirective } from '../../utils/popover/popover-host.directive';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport {\n BUTTON_GROUP_FOCUS_HANDLER_PROVIDER,\n ButtonGroupFocusHandler,\n} from '../providers/button-group-focus-handler.service';\nimport { InitialFocus } from '../providers/button-group-focus.enum';\nimport { ButtonInGroupService } from '../providers/button-in-group.service';\nimport { ClrButton } from './button';\n\n@Component({\n selector: 'clr-button-group',\n templateUrl: 'button-group.html',\n providers: [ButtonInGroupService, ClrDestroyService, BUTTON_GROUP_FOCUS_HANDLER_PROVIDER, FOCUS_SERVICE_PROVIDER],\n hostDirectives: [ClrPopoverHostDirective],\n host: { '[class.btn-group]': 'true' },\n})\nexport class ClrButtonGroup implements AfterContentInit, AfterViewInit {\n @Input('clrToggleButtonAriaLabel') clrToggleButtonAriaLabel: string = this.commonStrings.keys.rowActions;\n\n @ViewChild('menuToggle') menuToggle: ElementRef<HTMLElement>;\n @ViewChild('menu') menu: ElementRef<HTMLElement>;\n\n @ContentChildren(ClrButton) buttons: QueryList<ClrButton>;\n\n popoverId = uniqueIdFactory();\n InitialFocus = InitialFocus;\n\n popoverPosition: ClrPopoverPosition = ClrPopoverPositions['bottom-left'];\n inlineButtons: ClrButton[] = [];\n menuButtons: ClrButton[] = [];\n\n // Indicates the position of the overflow menu\n private _menuPosition: string;\n\n constructor(\n public buttonGroupNewService: ButtonInGroupService,\n private toggleService: ClrPopoverToggleService,\n public commonStrings: ClrCommonStringsService,\n private destroy$: ClrDestroyService,\n private focusHandler: ButtonGroupFocusHandler\n ) {}\n\n @Input('clrMenuPosition')\n get menuPosition(): string {\n return this._menuPosition;\n }\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 get open() {\n return this.toggleService.open;\n }\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.pipe(takeUntil(this.destroy$)).subscribe(button => this.rearrangeButton(button));\n this.buttons.changes.subscribe(() => {\n this.initializeButtons();\n });\n }\n\n ngAfterViewInit() {\n this.handleFocusOnMenuOpen();\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 openMenu(event: Event, initialFocus: InitialFocus) {\n this.focusHandler.initialFocus = initialFocus;\n if (!this.toggleService.open) {\n this.toggleService.toggleWithEvent(event);\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 private handleFocusOnMenuOpen() {\n this.toggleService.popoverVisible.pipe(takeUntil(this.destroy$)).subscribe(visible => {\n if (visible) {\n this.focusHandler.initialize({\n menu: this.menu.nativeElement,\n menuToggle: this.menuToggle.nativeElement,\n });\n }\n });\n }\n}\n","<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software 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-template *ngFor=\"let inlineButton of inlineButtons\" [ngTemplateOutlet]=\"inlineButton.templateRef\"></ng-template>\n\n<div *ngIf=\"menuButtons.length > 0\" class=\"btn-group-overflow open\" [ngClass]=\"menuPosition\">\n <button\n #menuToggle\n class=\"btn dropdown-toggle\"\n clrPopoverAnchor\n clrPopoverOpenCloseButton\n (keydown.arrowup)=\"openMenu($event, InitialFocus.LAST_ITEM)\"\n (keydown.arrowdown)=\"openMenu($event, InitialFocus.FIRST_ITEM)\"\n [attr.aria-controls]=\"popoverId\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-label]=\"clrToggleButtonAriaLabel\"\n >\n <cds-icon shape=\"ellipsis-horizontal\" [attr.title]=\"commonStrings.keys.more\"></cds-icon>\n </button>\n <div\n #menu\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 *ngFor=\"let menuButton of menuButtons\" [ngTemplateOutlet]=\"menuButton.templateRef\"></ng-template>\n </div>\n</div>\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\n\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 <span @parent [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 </span>\n `,\n providers: [{ provide: LoadingListener, useExisting: ClrLoadingButton }],\n animations: [\n trigger('parent', [\n // Skip :enter animation on first render.\n // The button text/content should only be faded when transitioning to or from a non-default state.\n transition(':enter', []),\n ]),\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 @Input('disabled') disabled: boolean;\n\n @Output('clrLoadingChange') clrLoadingChange = new EventEmitter<ClrLoadingState>(false);\n\n buttonState = ClrLoadingState;\n state: ClrLoadingState = ClrLoadingState.DEFAULT;\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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({\n declarations: [EmptyAnchor],\n exports: [EmptyAnchor],\n})\nexport class ClrHostWrappingModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 } from 'rxjs';\nimport { Observable } from 'rxjs';\n\nlet counter = 0;\n\n@Injectable()\nexport class ControlIdService {\n private _id = 'clr-form-control-' + ++counter;\n private _idChange = new BehaviorSubject(this._id);\n\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 get idChange(): Observable<string> {\n return this._idChange.asObservable();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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\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 private _idChange = new BehaviorSubject(this._id);\n\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 get idChange(): Observable<string> {\n return this._idChange.asObservable();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\n\nimport { ContainerIdService } from './providers/container-id.service';\nimport { ControlIdService } from './providers/control-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 controlIdSuffix = 'abstract';\n\n constructor(\n @Optional() protected controlIdService: ControlIdService,\n @Optional() protected containerIdService: ContainerIdService\n ) {}\n\n 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\n\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 override controlIdSuffix = CONTROL_SUFFIX.ERROR;\n\n constructor(\n @Optional() protected override controlIdService: ControlIdService,\n @Optional() protected override containerIdService: ContainerIdService\n ) {\n super(controlIdService, containerIdService);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\n\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 override controlIdSuffix = CONTROL_SUFFIX.HELPER;\n\n constructor(\n @Optional() protected override controlIdService: ControlIdService,\n @Optional() protected override containerIdService: ContainerIdService\n ) {\n super(controlIdService, containerIdService);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 = new Subject<NgControl>();\n\n private _helpers = new Subject<Helpers>();\n\n get controlChanges(): Observable<NgControl> {\n return this._controlChanges.asObservable();\n }\n\n get helpersChange(): Observable<Helpers> {\n return this._helpers.asObservable();\n }\n\n setControl(control: NgControl) {\n this._controlChanges.next(control);\n }\n\n setHelpers(state: Helpers) {\n this._helpers.next(state);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { BehaviorSubject, Observable, Subscription } from 'rxjs';\n\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 = new BehaviorSubject(CONTROL_STATE.NONE);\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 get statusChanges(): Observable<CONTROL_STATE> {\n return this._statusChanges.asObservable();\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\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(['VALID', 'INVALID'].includes(status) ? status : CONTROL_STATE.NONE);\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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\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 get labelSize(): number {\n return this._labelSize;\n }\n set labelSize(size: number) {\n if (this.labelSizeIsValid(size)) {\n this._labelSize = size;\n }\n }\n\n get layoutClass(): string {\n return `clr-form-${this.layout}`;\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 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, 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({\n selector: 'label',\n})\nexport class ClrLabel implements OnInit, OnDestroy {\n @Input('for') @HostBinding('attr.for') forAttr: string;\n\n private enableGrid = true;\n private subscriptions: Subscription[] = [];\n\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 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 ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n disableGrid() {\n this.enableGrid = false;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\n\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 override controlIdSuffix = CONTROL_SUFFIX.SUCCESS;\n\n constructor(\n @Optional() protected override controlIdService: ControlIdService,\n @Optional() protected override containerIdService: ContainerIdService\n ) {\n super(controlIdService, containerIdService);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\n\nimport { CONTROL_STATE } from '../if-control-state/if-control-state.service';\nimport { LayoutService } from './layout.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-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\nimport { Subscription } from 'rxjs';\n\nimport { DynamicWrapper } from '../../utils/host-wrapping/dynamic-wrapper';\nimport { ClrControlError } from './error';\nimport { ClrControlHelper } from './helper';\nimport { CONTROL_STATE, IfControlStateService } from './if-control-state/if-control-state.service';\nimport { ClrLabel } from './label';\nimport { ControlClassService } from './providers/control-class.service';\nimport { LayoutService } from './providers/layout.service';\nimport { NgControlService } from './providers/ng-control.service';\nimport { ClrControlSuccess } from './success';\n\n@Directive()\nexport abstract class ClrAbstractContainer implements DynamicWrapper, OnDestroy, AfterContentInit {\n @ContentChild(ClrLabel, { static: false }) label: ClrLabel;\n @ContentChild(ClrControlSuccess) controlSuccessComponent: ClrControlSuccess;\n @ContentChild(ClrControlError) controlErrorComponent: ClrControlError;\n @ContentChild(ClrControlHelper) controlHelperComponent: ClrControlHelper;\n\n control: NgControl;\n _dynamic = false;\n\n protected subscriptions: Subscription[] = [];\n\n private state: CONTROL_STATE;\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 /**\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.touched || 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.touched && this.state === CONTROL_STATE.VALID && !!this.controlSuccessComponent;\n }\n\n get showInvalid(): boolean {\n return this.touched && this.state === CONTROL_STATE.INVALID && !!this.controlErrorComponent;\n }\n\n private get touched() {\n return this.control?.touched;\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) || !this.touched) {\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { IfControlStateService } from './if-control-state/if-control-state.service';\nimport { ControlClassService } from './providers/control-class.service';\nimport { ControlIdService } from './providers/control-id.service';\nimport { NgControlService } from './providers/ng-control.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 shape=\"exclamation-circle\"\n status=\"danger\"\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 private injector: Injector;\n\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 get<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T): T {\n return this.injector.get(token, notFoundValue);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 MarkControlService {\n private _touched = new Subject<void>();\n\n get touchedChange(): Observable<void> {\n return this._touched.asObservable();\n }\n\n markAsTouched() {\n this._touched.next();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 DoCheck,\n ElementRef,\n HostBinding,\n HostListener,\n InjectionToken,\n Injector,\n Input,\n KeyValueDiffer,\n KeyValueDiffers,\n OnDestroy,\n OnInit,\n Renderer2,\n Type,\n ViewContainerRef,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { DynamicWrapper } from '../../utils/host-wrapping/dynamic-wrapper';\nimport { HostWrapper } from '../../utils/host-wrapping/host-wrapper';\nimport { CONTROL_SUFFIX } from './abstract-control';\nimport { IfControlStateService } from './if-control-state/if-control-state.service';\nimport { ContainerIdService } from './providers/container-id.service';\nimport { ControlClassService } from './providers/control-class.service';\nimport { ControlIdService } from './providers/control-id.service';\nimport { MarkControlService } from './providers/mark-control.service';\nimport { Helpers, NgControlService } from './providers/ng-control.service';\n\nexport enum CHANGE_KEYS {\n FORM = 'form',\n MODEL = 'model',\n}\n\n@Directive()\nexport class WrappedFormControl<W extends DynamicWrapper> implements OnInit, DoCheck, OnDestroy {\n _id: string;\n\n protected renderer: Renderer2;\n protected controlIdService: ControlIdService;\n protected ngControlService: NgControlService;\n protected el: ElementRef<any>;\n protected index = 0;\n protected subscriptions: Subscription[] = [];\n\n private ifControlStateService: IfControlStateService;\n private controlClassService: ControlClassService;\n private markControlService: MarkControlService;\n private containerIdService: ContainerIdService;\n private _containerInjector: Injector;\n private differs: KeyValueDiffers;\n private differ: KeyValueDiffer<any, any>;\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\n if (injector) {\n this.ngControlService = injector.get(NgControlService, null);\n this.ifControlStateService = injector.get(IfControlStateService, null);\n this.controlClassService = injector.get(ControlClassService, null);\n this.markControlService = injector.get(MarkControlService, null);\n this.differs = injector.get(KeyValueDiffers, null);\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 if (ngControl) {\n this.differ = this.differs.find(ngControl).create();\n }\n }\n\n @Input()\n @HostBinding()\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 ngOnInit() {\n this._containerInjector = new HostWrapper(this.wrapperType, this.vcr, this.index);\n this.controlIdService = this._containerInjector.get(ControlIdService);\n\n /**\n * not all containers will provide `ContainerIdService`\n */\n this.containerIdService = this._containerInjector.get(ContainerIdService, null);\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 ngDoCheck() {\n if (this.differ) {\n const changes = this.differ.diff(this.ngControl);\n if (changes) {\n changes.forEachChangedItem(change => {\n if (\n (change.key === CHANGE_KEYS.FORM || change.key === CHANGE_KEYS.MODEL) &&\n change.currentValue !== change.previousValue\n ) {\n this.triggerValidation();\n }\n });\n }\n }\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n @HostListener('blur')\n triggerValidation() {\n if (this.ifControlStateService) {\n this.ifControlStateService.triggerStatusChange();\n }\n }\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 private markAsTouched(): void {\n this.ngControl.control.markAsTouched();\n this.ngControl.control.updateValueAndValidity();\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrControlContainer } from './control-container';\nimport { WrappedFormControl } from './wrapped-control';\n\n@Directive({\n selector: '[clrControl]',\n host: { '[class.clr-input]': 'true' },\n})\nexport class ClrControl extends WrappedFormControl<ClrControlContainer> {\n protected override 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, Input, QueryList } from '@angular/core';\n\nimport { ClrLabel } from './label';\nimport { LayoutService } from './providers/layout.service';\nimport { MarkControlService } from './providers/mark-control.service';\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 @ContentChildren(ClrLabel, { descendants: true }) labels: QueryList<ClrLabel>;\n\n constructor(public layoutService: LayoutService, private markControlService: MarkControlService) {}\n\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 @HostListener('submit')\n onFormSubmit() {\n this.markAsTouched();\n }\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","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { NgControlService } from '../providers/ng-control.service';\nimport { CONTROL_STATE, IfControlStateService } 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 protected handleState(_state: CONTROL_STATE): void {\n /* overwrite in implementation to handle status change */\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, EmbeddedViewRef, Input, Optional, TemplateRef, ViewContainerRef } from '@angular/core';\n\nimport { NgControlService } from '../providers/ng-control.service';\nimport { AbstractIfState } from './abstract-if-state';\nimport { CONTROL_STATE, IfControlStateService } from './if-control-state.service';\n\n@Directive({\n selector: '[clrIfError]',\n})\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 override 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, TemplateRef, ViewContainerRef } from '@angular/core';\n\nimport { NgControlService } from '../providers/ng-control.service';\nimport { AbstractIfState } from './abstract-if-state';\nimport { CONTROL_STATE, IfControlStateService } from './if-control-state.service';\n\n@Directive({\n selector: '[clrIfSuccess]',\n})\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 override 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\n\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\n\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})\nexport class ClrCommonFormsModule {\n constructor() {\n ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, Inject, InjectionToken, OnDestroy, OnInit } from '@angular/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { DynamicWrapper } from '../../utils/host-wrapping/dynamic-wrapper';\nimport { ClrLabel } from '../common/label';\nimport { ControlIdService } from '../common/providers/control-id.service';\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 }) 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { Attribute, Directive, ElementRef, Injector, Optional, Renderer2, Self, ViewContainerRef } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { WrappedFormControl } from '../common/wrapped-control';\nimport { ClrCheckboxWrapper, IS_TOGGLE } from './checkbox-wrapper';\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({\n selector: '[clrCheckbox],[clrToggle]',\n})\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 override 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrAbstractContainer } from '../common/abstract-container';\nimport { IfControlStateService } from '../common/if-control-state/if-control-state.service';\nimport { ContainerIdService } from '../common/providers/container-id.service';\nimport { ControlClassService } from '../common/providers/control-class.service';\nimport { LayoutService } from '../common/providers/layout.service';\nimport { NgControlService } from '../common/providers/ng-control.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 shape=\"exclamation-circle\"\n status=\"danger\"\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: [IfControlStateService, NgControlService, ControlClassService, ContainerIdService],\n})\nexport class ClrCheckboxContainer extends ClrAbstractContainer implements AfterContentInit {\n role: string;\n\n @ContentChildren(ClrCheckbox, { descendants: true }) checkboxes: QueryList<ClrCheckbox>;\n\n private inline = false;\n\n constructor(\n @Optional() protected override layoutService: LayoutService,\n protected override controlClassService: ControlClassService,\n protected override ngControlService: NgControlService,\n protected override 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 get clrInline() {\n return this.inline;\n }\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\n override ngAfterContentInit() {\n this.setAriaRoles();\n }\n\n private setAriaRoles() {\n this.role = this.checkboxes.length ? 'group' : null;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrHostWrappingModule } from '../../utils/host-wrapping/host-wrapping.module';\nimport { ClrCommonFormsModule } from '../common/common.module';\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})\nexport class ClrCheckboxModule {\n constructor() {\n ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, HostBinding, Input } from '@angular/core';\n\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 private _inline: boolean;\n private _inverse: boolean;\n private _small: boolean;\n private _medium: boolean;\n\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 @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 @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 @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 @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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { Directive, ElementRef, Inject, PLATFORM_ID } from '@angular/core';\n\n@Directive({\n selector: '[clrKeyFocusItem]',\n})\nexport class ClrKeyFocusItem {\n constructor(private elementRef: ElementRef, @Inject(PLATFORM_ID) private platformId: any) {}\n\n get nativeElement() {\n return this.elementRef.nativeElement;\n }\n\n focus() {\n if (isPlatformBrowser(this.platformId)) {\n this.elementRef.nativeElement.focus();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 EventEmitter,\n HostListener,\n Input,\n Output,\n QueryList,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { Keys } from '../../enums/keys.enum';\nimport { ClrFocusDirection } from './enums/focus-direction.enum';\nimport { FocusableItem } from './interfaces';\nimport { ClrKeyFocusItem } from './key-focus-item';\nimport { normalizeKey, preventArrowKeyScroll } from './util';\n\n@Component({\n selector: '[clrKeyFocus]',\n template: '<ng-content></ng-content>',\n})\nexport class ClrKeyFocus {\n @Input('clrDirection') direction: ClrFocusDirection | string = ClrFocusDirection.VERTICAL;\n @Input('clrFocusOnLoad') focusOnLoad = false;\n\n @ContentChildren(ClrKeyFocusItem, { descendants: true }) protected clrKeyFocusItems: QueryList<ClrKeyFocusItem>;\n\n protected subscriptions: Subscription[] = [];\n\n @Output('clrFocusChange') private focusChange = new EventEmitter<number>();\n\n private _current = 0;\n private _focusableItems: Array<FocusableItem>;\n\n constructor(private elementRef: ElementRef) {}\n\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 @Input('clrKeyFocus')\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 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\n get nativeElement(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n\n get current() {\n return this._current;\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 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 === Keys.Home) {\n this.moveTo(0);\n } else if (event.code === Keys.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 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 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 protected nextKeyPressed(event: KeyboardEvent) {\n const key = normalizeKey(event.key);\n\n switch (this.direction) {\n case ClrFocusDirection.VERTICAL:\n return key === Keys.ArrowDown;\n case ClrFocusDirection.HORIZONTAL:\n return key === Keys.ArrowRight;\n case ClrFocusDirection.BOTH:\n return key === Keys.ArrowDown || key === Keys.ArrowRight;\n default:\n return false;\n }\n }\n\n protected prevKeyPressed(event: KeyboardEvent) {\n const key = normalizeKey(event.key);\n\n switch (this.direction) {\n case ClrFocusDirection.VERTICAL:\n return key === Keys.ArrowUp;\n case ClrFocusDirection.HORIZONTAL:\n return key === Keys.ArrowLeft;\n case ClrFocusDirection.BOTH:\n return key === Keys.ArrowUp || key === Keys.ArrowLeft;\n default:\n return false;\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 private listenForItemUpdates() {\n return this.clrKeyFocusItems.changes.subscribe(() => {\n this.initializeFocus();\n });\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, Input, Renderer2 } from '@angular/core';\n\nimport { Keys } from '../../../utils/enums/keys.enum';\nimport { FocusableItem } from './interfaces';\nimport { ClrKeyFocus } from './key-focus';\n\n@Component({\n selector: '[clrRovingTabindex]',\n template: '<ng-content></ng-content>',\n})\nexport class ClrRovingTabindex extends ClrKeyFocus {\n private disabled = false;\n\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 get rovingIndexItems(): Array<FocusableItem> | string {\n return this.focusableItems;\n }\n set rovingIndexItems(elements: Array<FocusableItem> | string) {\n this.focusableItems = elements as Array<FocusableItem>;\n }\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 override 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 === Keys.Home) {\n this.updateTabindex(0);\n } else if (event.code === Keys.End) {\n this.updateTabindex(this.focusableItems.length - 1);\n }\n super.handleKeyboardEvent(event);\n }\n\n override 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 override 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 ComboboxContainerService {\n labelOffset = 0;\n labelText: string;\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, AfterViewInit, Component, ElementRef, Optional, ViewChild } from '@angular/core';\n\nimport { ClrAbstractContainer } from '../common/abstract-container';\nimport { IfControlStateService } from '../common/if-control-state/if-control-state.service';\nimport { ControlClassService } from '../common/providers/control-class.service';\nimport { ControlIdService } from '../common/providers/control-id.service';\nimport { LayoutService } from '../common/providers/layout.service';\nimport { NgControlService } from '../common/providers/ng-control.service';\nimport { ComboboxContainerService } from './providers/combobox-container.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 shape=\"exclamation-circle\"\n status=\"danger\"\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-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\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 override 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[clrOptionSelected]',\n})\nexport class ClrOptionSelected<T> {\n @Input('clrOptionSelected') selected: T;\n\n constructor(public template: TemplateRef<{ $implicit: T }>) {}\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 up?: FocusableItem | Observable<FocusableItem>;\n down?: FocusableItem | Observable<FocusableItem>;\n left?: FocusableItem | Observable<FocusableItem>;\n right?: FocusableItem | Observable<FocusableItem>;\n\n abstract focus(): void;\n abstract blur(): void;\n abstract activate?(): void;\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\n\nimport { FocusableItem } from './focusable-item';\n\nexport function customFocusableItemProvider<T>(implementation: Type<T>) {\n return [\n implementation,\n {\n provide: FocusableItem,\n useExisting: implementation,\n },\n ];\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { BehaviorSubject, Observable } from 'rxjs';\n\nimport { SingleSelectComboboxModel } from './single-select-combobox.model';\n\nexport class PseudoFocusModel<T> extends SingleSelectComboboxModel<T> {\n private _focusChanged = new BehaviorSubject<T>(null);\n get focusChanged(): Observable<T> {\n return this._focusChanged.asObservable();\n }\n\n override 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, ReplaySubject } from 'rxjs';\n\nimport { ComboboxModel } from '../model/combobox.model';\nimport { MultiSelectComboboxModel } from '../model/multi-select-combobox.model';\n\n@Injectable()\nexport class OptionSelectionService<T> {\n loading = false;\n displayField: string;\n selectionModel: ComboboxModel<T>;\n inputChanged: Observable<string>;\n\n // Display all options on first open, even if filter text exists.\n // https://github.com/vmware-clarity/ng-clarity/issues/386\n showAllOptions = true;\n\n private _currentInput = '';\n private _inputChanged = new BehaviorSubject('');\n private _selectionChanged = new ReplaySubject<ComboboxModel<T>>(1);\n\n constructor() {\n this.inputChanged = this._inputChanged.asObservable();\n }\n\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\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 get multiselectable(): boolean {\n return this.selectionModel instanceof MultiSelectComboboxModel;\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 // 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ChangeDetectorRef, Inject, Injectable, PLATFORM_ID, Renderer2, RendererFactory2 } from '@angular/core';\nimport { take } from 'rxjs/operators';\n\nimport { Keys } from '../../../utils/enums/keys.enum';\nimport { ArrowKeyDirection } from '../../../utils/focus/arrow-key-direction.enum';\nimport { customFocusableItemProvider } from '../../../utils/focus/focusable-item/custom-focusable-item-provider';\nimport { normalizeKey } from '../../../utils/focus/key-focus/util';\nimport { ClrPopoverToggleService } from '../../../utils/popover/providers/popover-toggle.service';\nimport { PseudoFocusModel } from '../model/pseudo-focus.model';\nimport { OptionSelectionService } from './option-selection.service';\n\n@Injectable()\nexport class ComboboxFocusHandler<T> {\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 pseudoFocus: PseudoFocusModel<OptionData<T>> = new PseudoFocusModel<OptionData<T>>();\n\n private renderer: Renderer2;\n private _trigger: HTMLElement;\n private _listbox: HTMLElement;\n private _textInput: HTMLElement;\n private optionData: OptionData<T>[] = [];\n\n constructor(\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 get trigger() {\n return this._trigger;\n }\n set trigger(el: HTMLElement) {\n this._trigger = el;\n this.addFocusOnBlurListener(el);\n }\n\n get listbox() {\n return this._listbox;\n }\n set listbox(el: HTMLElement) {\n this._listbox = el;\n this.addFocusOnBlurListener(el);\n }\n\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 focusInput() {\n if (this.textInput && isPlatformBrowser(this.platformId)) {\n this.textInput.focus();\n }\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 if (activeProxy) {\n // active element is visible\n this.pseudoFocus.select(activeProxy);\n } else {\n // we have active element, but it's filtered out\n this.pseudoFocus.select(this.optionData[0]);\n }\n this.scrollIntoSelectedModel('auto');\n }\n }\n }\n\n addOptionValues(options: OptionData<T>[]) {\n this.optionData = options;\n }\n\n private handleFocusSubscription() {\n this.toggleService.openChange.subscribe(open => {\n if (!open) {\n this.pseudoFocus.model = null;\n }\n });\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 this.scrollIntoSelectedModel();\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 = normalizeKey(event.key);\n if (event) {\n switch (key) {\n case Keys.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 Keys.Space:\n if (!this.toggleService.open) {\n this.toggleService.open = true;\n preventDefault = true;\n }\n break;\n case Keys.ArrowUp:\n this.preventViewportScrolling(event);\n this.openAndMoveTo(ArrowKeyDirection.UP);\n preventDefault = true;\n break;\n case Keys.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 !== Keys.Tab &&\n !(this.selectionService.multiselectable && event.key === Keys.Backspace) &&\n !(event.key === Keys.Escape) &&\n !this.toggleService.open\n ) {\n this.toggleService.open = true;\n }\n break;\n }\n }\n return preventDefault;\n }\n\n private scrollIntoSelectedModel(behavior: ScrollBehavior = 'smooth') {\n if (this.pseudoFocus.model && this.pseudoFocus.model.el) {\n this.pseudoFocus.model.el.scrollIntoView({ behavior, block: 'center', inline: 'nearest' });\n }\n }\n\n private preventViewportScrolling(event: KeyboardEvent) {\n event.preventDefault();\n event.stopImmediatePropagation();\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\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, OnInit } from '@angular/core';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { uniqueIdFactory } from '../../utils/id-generator/id-generator.service';\nimport { ComboboxFocusHandler, OptionData as OptionProxy } from './providers/combobox-focus-handler.service';\nimport { OptionSelectionService } from './providers/option-selection.service';\n@Component({\n selector: 'clr-option',\n template: `\n <ng-content></ng-content>\n <span *ngIf=\"selected\" class=\"clr-sr-only\">{{ commonStrings.keys.comboboxSelected }}</span>\n `,\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 optionProxy: OptionProxy<T> = new OptionProxy(null, null);\n\n private _id: string;\n private _value: T;\n\n constructor(\n public elRef: ElementRef,\n public commonStrings: ClrCommonStringsService,\n private focusHandler: ComboboxFocusHandler<T>,\n private optionSelectionService: OptionSelectionService<T>\n ) {\n this.optionProxy.el = this.elRef.nativeElement;\n }\n\n @Input('id')\n get optionId() {\n return this._id;\n }\n set optionId(id: string) {\n this._id = id;\n this.optionProxy.id = this._id;\n }\n\n @Input('clrValue')\n get value(): T {\n return this._value;\n }\n set value(value: T) {\n this._value = value;\n this.optionProxy.value = 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 @HostBinding('class.clr-focus')\n get focusClass() {\n return this.focusHandler.pseudoFocus.containsItem(this.optionProxy);\n }\n\n ngOnInit() {\n if (!this._id) {\n this._id = 'clr-option-' + uniqueIdFactory();\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","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 {\n AfterViewInit,\n Component,\n ContentChildren,\n ElementRef,\n Inject,\n Input,\n OnDestroy,\n Optional,\n QueryList,\n} from '@angular/core';\nimport { fromEvent, Subscription } from 'rxjs';\n\nimport { POPOVER_HOST_ANCHOR } from '../../popover/common/popover-host-anchor.token';\nimport { IF_ACTIVE_ID } from '../../utils/conditional/if-active.service';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrLoadingState } from '../../utils/loading/loading';\nimport { LoadingListener } from '../../utils/loading/loading-listener';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { ClrOption } from './option';\nimport { ComboboxFocusHandler } from './providers/combobox-focus-handler.service';\nimport { OptionSelectionService } from './providers/option-selection.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 @Input('id') optionsId: string;\n\n loading = false;\n _items: QueryList<ClrOption<T>>;\n\n private subscriptions: Subscription[] = [];\n\n constructor(\n public optionSelectionService: OptionSelectionService<T>,\n @Inject(IF_ACTIVE_ID) public id: number,\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 @ContentChildren(ClrOption)\n get items(): QueryList<ClrOption<T>> {\n return this._items;\n }\n set items(items: QueryList<ClrOption<T>>) {\n this._items = items;\n this.focusHandler.addOptionValues(this._items.map(option => option.optionProxy));\n }\n\n /**\n * Tests if the list of options is empty, meaning it doesn't contain any items\n */\n get emptyOptions() {\n return !this.optionSelectionService.loading && this.items.length === 0;\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 this.items.changes.subscribe(items => {\n if (items.length) {\n setTimeout(() => {\n this.focusHandler.focusFirstActive();\n });\n } else {\n this.focusHandler.pseudoFocus.pop();\n }\n })\n );\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n searchText(input: string) {\n return this.commonStrings.parse(this.commonStrings.keys.comboboxSearching, { INPUT: input });\n }\n\n loadingStateChange(state: ClrLoadingState): void {\n this.loading = state === ClrLoadingState.LOADING;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 AfterContentInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostListener,\n Inject,\n Injector,\n Input,\n Optional,\n Output,\n PLATFORM_ID,\n Renderer2,\n Self,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\nimport { IF_ACTIVE_ID_PROVIDER } from '../../utils/conditional/if-active.service';\nimport { Keys } from '../../utils/enums/keys.enum';\nimport { FOCUS_SERVICE_PROVIDER } from '../../utils/focus/focus.service';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrLoadingState } from '../../utils/loading/loading';\nimport { LoadingListener } from '../../utils/loading/loading-listener';\nimport { ClrAlignment } from '../../utils/popover/enums/alignment.enum';\nimport { ClrAxis } from '../../utils/popover/enums/axis.enum';\nimport { ClrSide } from '../../utils/popover/enums/side.enum';\nimport { ClrPopoverPosition } from '../../utils/popover/interfaces/popover-position.interface';\nimport { ClrPopoverHostDirective } from '../../utils/popover/popover-host.directive';\nimport { ClrPopoverPositionService } from '../../utils/popover/providers/popover-position.service';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { CONTROL_STATE, IfControlStateService } from '../common/if-control-state/if-control-state.service';\nimport { WrappedFormControl } from '../common/wrapped-control';\nimport { ClrComboboxContainer } from './combobox-container';\nimport { ComboboxModel } from './model/combobox.model';\nimport { MultiSelectComboboxModel } from './model/multi-select-combobox.model';\nimport { SingleSelectComboboxModel } from './model/single-select-combobox.model';\nimport { ClrOptionSelected } from './option-selected.directive';\nimport { ClrOptions } from './options';\nimport { ComboboxContainerService } from './providers/combobox-container.service';\nimport { COMBOBOX_FOCUS_HANDLER_PROVIDER, ComboboxFocusHandler } from './providers/combobox-focus-handler.service';\nimport { OptionSelectionService } from './providers/option-selection.service';\n\n@Component({\n selector: 'clr-combobox',\n templateUrl: './combobox.html',\n providers: [\n OptionSelectionService,\n { provide: LoadingListener, useExisting: ClrCombobox },\n IF_ACTIVE_ID_PROVIDER,\n FOCUS_SERVICE_PROVIDER,\n COMBOBOX_FOCUS_HANDLER_PROVIDER,\n ],\n hostDirectives: [ClrPopoverHostDirective],\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 @Input('placeholder') placeholder = '';\n\n @Output('clrInputChange') clrInputChange = new EventEmitter<string>(false);\n @Output('clrOpenChange') clrOpenChange = this.toggleService.openChange;\n\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 */\n @Output('clrSelectionChange') clrSelectionChange = this.optionSelectionService.selectionChanged;\n\n @ViewChild('textboxInput') textbox: ElementRef;\n @ViewChild('trigger') trigger: ElementRef;\n @ContentChild(ClrOptionSelected) optionSelected: ClrOptionSelected<T>;\n\n invalid = false;\n focused = false;\n focusedPill: any;\n\n smartPosition: ClrPopoverPosition = {\n axis: ClrAxis.VERTICAL,\n side: ClrSide.AFTER,\n anchor: ClrAlignment.START,\n content: ClrAlignment.START,\n };\n\n protected override index = 1;\n\n @ContentChild(ClrOptions) private options: ClrOptions<T>;\n\n private _searchText = '';\n private onTouchedCallback: () => any;\n private onChangeCallback: (model: T | T[]) => any;\n\n constructor(\n vcr: ViewContainerRef,\n injector: Injector,\n @Self()\n @Optional()\n public control: NgControl,\n protected override renderer: Renderer2,\n protected override 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 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 @Input('clrMulti')\n get multiSelect() {\n return this.optionSelectionService.multiselectable;\n }\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 // 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 override get id() {\n return this.controlIdService.id + '-combobox';\n }\n override set id(id: string) {\n super.id = id;\n }\n\n get searchText(): string {\n return this._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 if (this.toggleService.open) {\n this.optionSelectionService.showAllOptions = false;\n }\n this._searchText = text;\n this.clrInputChange.emit(this.searchText);\n }\n // We need to trigger this even if unchanged, so the option-items directive will update its list\n // based on the \"showAllOptions\" variable which may have changed in the openChange subscription below.\n // The option-items directive does not listen to openChange, but it listens to currentInput changes.\n this.optionSelectionService.currentInput = this.searchText;\n }\n\n get openState(): boolean {\n return this.toggleService.open;\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 get ariaControls(): string {\n return this.options?.optionsId;\n }\n\n get ariaOwns(): string {\n return this.options?.optionsId;\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 private get disabled() {\n return this.control && this.control.disabled;\n }\n\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 @HostListener('keydown', ['$event'])\n onKeyUp(event: KeyboardEvent) {\n // if BACKSPACE in multiselect mode, delete the last pill if text is empty\n if (event.key === Keys.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 inputId(): string {\n return this.controlIdService.id;\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 this.focusFirstActive();\n }\n }\n\n unselect(item: T) {\n if (!this.disabled) {\n this.optionSelectionService.unselect(item);\n }\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 // fix for \"expression changed\" error when focus is returned to a combobox after a modal is closed\n // https://github.com/vmware-clarity/ng-clarity/issues/663\n this.cdr.detectChanges();\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 focusFirstActive() {\n setTimeout(() => {\n this.focusHandler.focusFirstActive();\n });\n }\n\n writeValue(value: T | T[]): void {\n this.optionSelectionService.selectionModel.model = value;\n this.updateInputValue(this.optionSelectionService.selectionModel);\n }\n\n registerOnTouched(onTouched: any): void {\n this.onTouchedCallback = onTouched;\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 setDisabledState(): void {\n // do nothing\n }\n\n focusInput() {\n this.focusHandler.focusInput();\n }\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 } else {\n this.optionSelectionService.showAllOptions = true;\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 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 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","<!--\n* Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n* This software 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 [class.disabled]=\"control?.disabled? true: null\"\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 ></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 role=\"combobox\"\n [id]=\"inputId()\"\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 />\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\"></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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { NgForOf, NgForOfContext } from '@angular/common';\nimport {\n Directive,\n DoCheck,\n Input,\n IterableDiffer,\n IterableDiffers,\n OnDestroy,\n TemplateRef,\n TrackByFunction,\n ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrPopoverPositionService } from '../../utils/popover/providers/popover-position.service';\nimport { OptionSelectionService } from './providers/option-selection.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 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 @Input('clrOptionItemsOf')\n 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 set field(field: string) {\n this._filterField = field;\n this.optionService.displayField = field;\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 private updateItems() {\n if (!this._rawItems || this.filter === undefined || this.filter === null) {\n return;\n }\n\n const normalizedFilterValue = normalizeValue(this.filter);\n\n if (this.optionService.showAllOptions) {\n this.filteredItems = this._rawItems;\n } else if (this._filterField) {\n this.filteredItems = this._rawItems.filter(item => {\n const objValue = (item as any)[this._filterField];\n return objValue ? normalizeValue(objValue).includes(normalizedFilterValue) : 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 normalizeValue(item).includes(normalizedFilterValue);\n }\n const objValues = Object.values(item).filter(value => {\n return value !== null && value !== undefined ? normalizeValue(value).includes(normalizedFilterValue) : false;\n });\n return objValues.length > 0;\n });\n }\n this.iterableProxy.ngForOf = this.filteredItems;\n }\n}\n\nfunction normalizeValue(value: any) {\n return value\n .toString()\n .normalize('NFD')\n .replace(/\\p{Diacritic}/gu, '')\n .toLowerCase();\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { angleIcon, checkCircleIcon, ClarityIcons, exclamationCircleIcon, windowCloseIcon } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrSpinnerModule } from '../../progress/spinner/spinner.module';\nimport { ClrConditionalModule } from '../../utils/conditional/conditional.module';\nimport { ClrKeyFocusModule } from '../../utils/focus/key-focus/key-focus.module';\nimport { ClrPopoverModuleNext } from '../../utils/popover/popover.module';\nimport { ClrCommonFormsModule } from '../common/common.module';\nimport { ClrCombobox } from './combobox';\nimport { ClrComboboxContainer } from './combobox-container';\nimport { ClrOption } from './option';\nimport { ClrOptionItems } from './option-items.directive';\nimport { ClrOptionSelected } from './option-selected.directive';\nimport { ClrOptions } from './options';\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { IfControlStateService } from '../common/if-control-state/if-control-state.service';\nimport { ControlClassService } from '../common/providers/control-class.service';\nimport { ControlIdService } from '../common/providers/control-id.service';\nimport { NgControlService } from '../common/providers/ng-control.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 status=\"danger\"\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrInputContainer } from './input-container';\n\n@Directive({\n selector: '[clrInput]',\n host: { '[class.clr-input]': 'true' },\n})\nexport class ClrInput extends WrappedFormControl<ClrInputContainer> {\n protected override 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\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})\nexport class ClrInputModule {\n constructor() {\n ClarityIcons.addIcons(\n exclamationCircleIcon,\n checkCircleIcon // caret\n );\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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\nlet counter = 0;\n\n@Injectable()\nexport class DatalistIdService {\n private _id = 'clr-datalist-' + ++counter;\n private _idChange = new BehaviorSubject(this._id);\n\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 get idChange(): Observable<string> {\n return this._idChange.asObservable();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, Directive, Input, Optional } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\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 datalistId: string;\n\n private subscriptions: Subscription[] = [];\n\n constructor(@Optional() private datalistIdService: DatalistIdService) {}\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 ngAfterContentInit() {\n if (!this.datalistIdService) {\n return;\n }\n this.subscriptions.push(this.datalistIdService.idChange.subscribe(id => (this.datalistId = id)));\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 = new BehaviorSubject(false);\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\n\nimport { ClrAbstractContainer } from '../common/abstract-container';\nimport { IfControlStateService } from '../common/if-control-state/if-control-state.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';\nimport { DatalistIdService } from './providers/datalist-id.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 <cds-icon shape=\"angle\" class=\"clr-datalist-caret\" direction=\"down\"></cds-icon>\n </div>\n <cds-icon\n *ngIf=\"showInvalid\"\n class=\"clr-validate-icon\"\n shape=\"exclamation-circle\"\n status=\"danger\"\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 override 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 Directive,\n ElementRef,\n HostListener,\n Injector,\n Optional,\n Renderer2,\n Self,\n ViewContainerRef,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\nimport { FocusService } from '../common/providers/focus.service';\nimport { WrappedFormControl } from '../common/wrapped-control';\nimport { ClrDatalistContainer } from './datalist-container';\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 listValue: string;\n\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 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 override triggerValidation() {\n super.triggerValidation();\n if (this.focusService) {\n this.focusService.focused = false;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrInputModule } from '../input/input.module';\nimport { ClrDatalist } from './datalist';\nimport { ClrDatalistContainer } from './datalist-container';\nimport { ClrDatalistInput } from './datalist-input';\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { Directive, NgModule } from '@angular/core';\n\n/**\n * This is just a copy of CdkTrapFocus so it can be used independent of the rest of the A11yModule.\n */\n@Directive({\n selector: '[cdkTrapFocus]',\n})\nexport class CdkTrapFocusModule_CdkTrapFocus extends CdkTrapFocus {}\n\n/**\n * This module allows us to avoid importing all of A11yModule which results in a smaller application bundle.\n */\n@NgModule({\n declarations: [CdkTrapFocusModule_CdkTrapFocus],\n exports: [CdkTrapFocusModule_CdkTrapFocus],\n})\nexport class CdkTrapFocusModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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(readonly year: number, readonly month: number, 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 toDateString(): string {\n return this.toDate().toLocaleDateString();\n }\n\n private pad(num: number): string {\n return num < 10 ? `0${num}` : `${num}`;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { DateRange } from '../interfaces/date-range.interface';\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';\nimport { CalendarModel } from './calendar.model';\nimport { DayViewModel } from './day-view.model';\nimport { DayModel } from './day.model';\n\nexport class CalendarViewModel {\n private currMonthDayViews: DayViewModel[] = [];\n private _calendarView: DayViewModel[][];\n\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 /**\n * DayViewModel matrix. Size 6x7\n */\n get calendarView(): DayViewModel[][] {\n return this._calendarView;\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 * 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 * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\n\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 private _firstDayOfWeek = 0;\n private _localeDays: ReadonlyArray<ClrDayOfWeek>;\n private _localeMonthsAbbreviated: ReadonlyArray<string>;\n private _localeMonthsWide: ReadonlyArray<string>;\n private _localeDateFormat: string;\n\n constructor(@Inject(LOCALE_ID) public locale: string) {\n this.initializeLocaleData();\n }\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\nimport { DayModel } from './day.model';\n\nexport class CalendarModel {\n days: DayModel[];\n\n constructor(readonly year: number, readonly month: number) {\n this.initializeDaysInCalendar();\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 * 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 * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { 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 selectedDay: DayModel;\n focusedDay: DayModel;\n\n private _displayedCalendar: CalendarModel;\n private _todaysFullDate: Date = new Date();\n private _today: DayModel;\n private _selectedDayChange = new Subject<DayModel>();\n private _displayedCalendarChange = new Subject<void>();\n private _focusOnCalendarChange = new Subject<void>();\n private _focusedDayChange = new Subject<DayModel>();\n\n get today(): DayModel {\n return this._today;\n }\n\n get displayedCalendar(): CalendarModel {\n return this._displayedCalendar;\n }\n\n get selectedDayChange(): Observable<DayModel> {\n return this._selectedDayChange.asObservable();\n }\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 /**\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 /**\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 * 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 /**\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 // 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 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","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { filter, first } 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { DateRange } from '../interfaces/date-range.interface';\nimport { DayModel } from '../model/day.model';\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';\nimport { LocaleHelperService } from './locale-helper.service';\n\n@Injectable()\nexport class DateIOService {\n 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\n cldrLocaleDateFormat: string = DEFAULT_LOCALE_FORMAT;\n\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 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 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 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 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 getDateValueFromDateString(date: string): Date {\n if (!date || typeof date !== 'string') {\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 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 /**\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","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 disabled: boolean;\n\n private _touchedChange = new Subject<void>();\n private _dirtyChange = new Subject<void>();\n\n get touchedChange(): Observable<void> {\n return this._touchedChange.asObservable();\n }\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\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-current]=\"dayView.isTodaysDate ? 'date' : 'false'\"\n [attr.aria-label]=\"dayString\"\n [attr.aria-selected]=\"dayView.isSelected\"\n >\n {{ dayView.dayModel.date }}\n </button>\n `,\n host: { '[class.day]': 'true' },\n})\nexport class ClrDay {\n private _dayView: DayViewModel;\n\n constructor(\n private _dateNavigationService: DateNavigationService,\n private _toggleService: ClrPopoverToggleService,\n private dateFormControlService: DateFormControlService,\n private commonStrings: ClrCommonStringsService\n ) {}\n\n /**\n * DayViewModel input which is used to build the Day View.\n */\n\n @Input('clrDayView')\n get dayView(): DayViewModel {\n return this._dayView;\n }\n set dayView(day: DayViewModel) {\n this._dayView = day;\n }\n\n get dayString(): string {\n return this.dayView.isSelected\n ? this.commonStrings.parse(this.commonStrings.keys.datepickerSelectedLabel, {\n FULL_DATE: this._dayView.dayModel.toDateString(),\n })\n : this._dayView.dayModel.toDateString();\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, HostListener, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { Keys } from '../../utils/enums/keys.enum';\nimport { normalizeKey } from '../../utils/focus/key-focus/util';\nimport { ClrDayOfWeek } from './interfaces/day-of-week.interface';\nimport { CalendarViewModel } from './model/calendar-view.model';\nimport { CalendarModel } from './model/calendar.model';\nimport { DayModel } from './model/day.model';\nimport { DateIOService } from './providers/date-io.service';\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';\n\n@Component({\n selector: 'clr-calendar',\n templateUrl: './calendar.html',\n})\nexport class ClrCalendar implements OnDestroy {\n /**\n * Calendar View Model to generate the Calendar.\n */\n calendarViewModel: CalendarViewModel;\n\n private _subs: Subscription[] = [];\n\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 * 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 * 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 /**\n * Delegates Keyboard arrow navigation to the DateNavigationService.\n */\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n if (event && this.focusedDay) {\n switch (normalizeKey(event.key)) {\n case Keys.ArrowUp:\n event.preventDefault();\n this._dateNavigationService.incrementFocusDay(-1 * NO_OF_DAYS_IN_A_WEEK);\n break;\n case Keys.ArrowDown:\n event.preventDefault();\n this._dateNavigationService.incrementFocusDay(NO_OF_DAYS_IN_A_WEEK);\n break;\n case Keys.ArrowLeft:\n event.preventDefault();\n this._dateNavigationService.incrementFocusDay(-1);\n break;\n case Keys.ArrowRight:\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 * 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","<table class=\"calendar-table\">\n <tr class=\"calendar-row weekdays\">\n <th *ngFor=\"let day of localeDays\" class=\"calendar-cell weekday\" role=\"heading\" [attr.aria-label]=\"day.day\">\n {{day.narrow}}\n </th>\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 * TODO:\n * Using core functions like:\n * - pluckPixelValue\n * - getCssPropertyValue\n *\n * to get the value of the design token.\n *\n * Note: Memoization/Cache usage possible.\n */\n\n// iPad mini screen width\n// http://stephen.io/mediaqueries/#iPadMini\nexport const DATEPICKER_ENABLE_BREAKPOINT = 768;\nexport const SMALL_BREAKPOINT = 576;\nexport const MEDIUM_BREAKPOINT = 768;\nexport const LARGE_BREAKPOINT = 992;\nexport const EXTRA_LARGE_BREAKPOINT = 1200;\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 private _isUserAgentMobile = false;\n private _innerWidth: number;\n\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 /**\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { 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 position: ClrPopoverPosition = ClrPopoverPositions['bottom-left'];\n\n private _currentView: DatepickerViewEnum = DatepickerViewEnum.DAYVIEW;\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { AfterViewInit, Component, ElementRef, HostListener } from '@angular/core';\n\nimport { Keys } from '../../utils/enums/keys.enum';\nimport { normalizeKey } from '../../utils/focus/key-focus/util';\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 /**\n * Keeps track of the current focused month.\n */\n private _focusedMonthIndex: number;\n\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 * 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 * Focuses on the current calendar month when the View is initialized.\n */\n ngAfterViewInit() {\n this._datepickerFocusService.focusCell(this._elRef);\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 key = normalizeKey(event.key);\n if (key === Keys.ArrowUp && this._focusedMonthIndex > 0) {\n event.preventDefault();\n this._focusedMonthIndex--;\n this._datepickerFocusService.focusCell(this._elRef);\n } else if (key === Keys.ArrowDown && this._focusedMonthIndex < 11) {\n event.preventDefault();\n this._focusedMonthIndex++;\n this._datepickerFocusService.focusCell(this._elRef);\n } else if (key === Keys.ArrowRight && this._focusedMonthIndex < 6) {\n event.preventDefault();\n this._focusedMonthIndex = this._focusedMonthIndex + 6;\n this._datepickerFocusService.focusCell(this._elRef);\n } else if (key === Keys.ArrowLeft && this._focusedMonthIndex > 5) {\n event.preventDefault();\n this._focusedMonthIndex = this._focusedMonthIndex - 6;\n this._datepickerFocusService.focusCell(this._elRef);\n }\n }\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 * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 yearRange: number[] = [];\n\n constructor(private readonly year: number) {\n this.generateYearRange();\n }\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 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 * 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 * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { AfterViewInit, Component, ElementRef, HostListener } from '@angular/core';\n\nimport { Keys } from '../../utils/enums/keys.enum';\nimport { normalizeKey } from '../../utils/focus/key-focus/util';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\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';\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 /**\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 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 }\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 * Focuses on the current calendar year when the View is initialized.\n */\n ngAfterViewInit() {\n this._datepickerFocusService.focusCell(this._elRef);\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 key = normalizeKey(event.key);\n if (key === Keys.ArrowUp) {\n event.preventDefault();\n this.incrementFocusYearBy(-1);\n } else if (key === Keys.ArrowDown) {\n event.preventDefault();\n this.incrementFocusYearBy(1);\n } else if (key === Keys.ArrowRight) {\n event.preventDefault();\n this.incrementFocusYearBy(5);\n } else if (key === Keys.ArrowLeft) {\n event.preventDefault();\n this.incrementFocusYearBy(-5);\n }\n }\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 // 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 }\n\n /**\n * Updates the YearRangeModel to the next decade.\n */\n nextDecade(): void {\n this.yearRangeModel = this.yearRangeModel.nextDecade();\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 * 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 * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { DateNavigationService } from './providers/date-navigation.service';\nimport { LocaleHelperService } from './providers/locale-helper.service';\nimport { ViewManagerService } from './providers/view-manager.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 * 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 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 * 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\" [attr.title]=\"commonStrings.keys.datepickerNextMonth\"></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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\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 '[attr.aria-label]': 'commonStrings.keys.datepickerDialogLabel',\n role: 'dialog',\n },\n})\nexport class ClrDatepickerViewManager {\n constructor(public commonStrings: ClrCommonStringsService, 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-2023 VMware, Inc. All Rights Reserved.\n* This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { AfterViewInit, Component, ElementRef, Input, Optional, Renderer2, ViewChild } from '@angular/core';\nimport { startWith } from 'rxjs/operators';\n\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 { ClrPopoverHostDirective } from '../../utils/popover/popover-host.directive';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { ClrAbstractContainer } from '../common/abstract-container';\nimport { IfControlStateService } from '../common/if-control-state/if-control-state.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';\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 { LocaleHelperService } from './providers/locale-helper.service';\nimport { ViewManagerService } from './providers/view-manager.service';\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 [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 cdkTrapFocus\n ></clr-datepicker-view-manager>\n </div>\n <cds-icon\n *ngIf=\"showInvalid\"\n class=\"clr-validate-icon\"\n shape=\"exclamation-circle\"\n status=\"danger\"\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 LocaleHelperService,\n ControlClassService,\n FocusService,\n NgControlService,\n DateIOService,\n DateNavigationService,\n DatepickerEnabledService,\n DateFormControlService,\n ViewManagerService,\n IfControlStateService,\n ],\n hostDirectives: [ClrPopoverHostDirective],\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 private toggleButton: ElementRef;\n\n constructor(\n protected renderer: Renderer2,\n private toggleService: ClrPopoverToggleService,\n private dateNavigationService: DateNavigationService,\n private datepickerEnabledService: DatepickerEnabledService,\n private dateFormControlService: DateFormControlService,\n private dateIOService: DateIOService,\n public commonStrings: ClrCommonStringsService,\n private focusService: FocusService,\n private viewManagerService: ViewManagerService,\n protected override controlClassService: ControlClassService,\n @Optional() protected override layoutService: LayoutService,\n protected override ngControlService: NgControlService,\n protected override 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 @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\n @ViewChild('actionButton')\n set actionButton(button: ElementRef) {\n this.toggleButton = button;\n }\n\n get popoverPosition(): ClrPopoverPosition {\n return this.viewManagerService.position;\n }\n\n get open() {\n return this.toggleService.open;\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 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 this.subscriptions.push(this.listenForDateChanges());\n }\n\n /**\n * Return the label for the toggle button.\n * If there's a selected date, the date is included in the label.\n */\n private getToggleButtonLabel(day: DayModel): string {\n if (day) {\n const formattedDate = this.dateIOService.toLocaleDisplayFormatString(day.toDate());\n\n return this.commonStrings.parse(this.commonStrings.keys.datepickerToggleChangeDateLabel, {\n SELECTED_DATE: formattedDate,\n });\n }\n return this.commonStrings.keys.datepickerToggleChooseDateLabel;\n }\n\n private listenForDateChanges() {\n // because date-input.ts initializes the input in ngAfterViewInit,\n // using a databound attribute to change the button labels results in ExpressionChangedAfterItHasBeenCheckedError.\n // so instead, update the attribute directly on the element\n return this.dateNavigationService.selectedDayChange\n .pipe(startWith(this.dateNavigationService.selectedDay))\n .subscribe(day => {\n if (this.isEnabled) {\n const label = this.getToggleButtonLabel(day);\n const toggleEl = this.toggleButton.nativeElement;\n this.renderer.setAttribute(toggleEl, 'aria-label', label);\n this.renderer.setAttribute(toggleEl, 'title', label);\n }\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { of } from 'rxjs';\nimport { filter, switchMap } from 'rxjs/operators';\n\nimport { isBooleanAttributeSet } from '../../utils/component/is-boolean-attribute-set';\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';\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 static ngAcceptInputType_date: Date | null | string;\n\n @Input() placeholder: string;\n @Output('clrDateChange') dateChange = new EventEmitter<Date>(false);\n\n protected override index = 1;\n\n private initialClrDateInputValue: Date;\n private previousDateChange: Date;\n\n constructor(\n viewContainerRef: ViewContainerRef,\n injector: Injector,\n protected override el: ElementRef,\n protected override 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 @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 this.triggerControlValidation();\n }\n\n @Input()\n set max(dateString: string) {\n this.dateIOService.setMaxDate(dateString);\n this.triggerControlValidation();\n }\n\n get disabled() {\n if (this.dateFormControlService) {\n return this.dateFormControlService.disabled;\n }\n return null;\n }\n\n @Input('disabled')\n @HostBinding('disabled')\n set disabled(value: boolean | string) {\n if (this.dateFormControlService) {\n this.dateFormControlService.setDisabled(isBooleanAttributeSet(value));\n }\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 override 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 override triggerValidation() {\n super.triggerValidation();\n this.setFocus(false);\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 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 triggerControlValidation() {\n if (this.datepickerHasFormControl()) {\n // Set `emitEvent` to false to prevent unnecessary value change event. Status change event will be emitted by `setErrors` below.\n this.control.control?.updateValueAndValidity({ emitEvent: false });\n this.control.control?.setErrors(this.control.control.errors);\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\n\nimport { DateIOService } from './providers/date-io.service';\n\n@Directive({\n selector: '[clrDate]',\n providers: [{ provide: NG_VALIDATORS, useExisting: ClrDateInputValidator, multi: true }],\n})\nexport class ClrDateInputValidator implements Validator {\n constructor(@Optional() private dateIOService: DateIOService) {}\n\n validate(control: AbstractControl): ValidationErrors {\n if (this.dateIOService) {\n const value = this.dateIOService.getDateValueFromDateString(control.value);\n const minDate = this.dateIOService.disabledDates.minDate.toDate();\n const maxDate = this.dateIOService.disabledDates.maxDate.toDate();\n\n if (value && value < this.dateIOService.disabledDates.minDate.toDate()) {\n return { min: { min: minDate.toLocaleDateString(), actual: value.toLocaleDateString() } };\n } else if (value && value > this.dateIOService.disabledDates.maxDate.toDate()) {\n return { max: { max: maxDate.toLocaleDateString(), actual: value.toLocaleDateString() } };\n }\n }\n\n return null;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 {\n angleIcon,\n calendarIcon,\n checkCircleIcon,\n ClarityIcons,\n eventIcon,\n exclamationCircleIcon,\n} from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { CdkTrapFocusModule } from '../../utils/cdk/cdk-trap-focus.module';\nimport { ClrConditionalModule } from '../../utils/conditional/conditional.module';\nimport { ClrHostWrappingModule } from '../../utils/host-wrapping/host-wrapping.module';\nimport { ClrPopoverModuleNext } from '../../utils/popover/popover.module';\nimport { ClrCommonFormsModule } from '../common/common.module';\nimport { ClrCalendar } from './calendar';\nimport { ClrDateContainer } from './date-container';\nimport { ClrDateInput } from './date-input';\nimport { ClrDateInputValidator } from './date-input.validator';\nimport { ClrDatepickerViewManager } from './datepicker-view-manager';\nimport { ClrDay } from './day';\nimport { ClrDaypicker } from './daypicker';\nimport { ClrMonthpicker } from './monthpicker';\nimport { ClrYearpicker } from './yearpicker';\n\nexport const CLR_DATEPICKER_DIRECTIVES: Type<any>[] = [\n ClrDay,\n ClrDateContainer,\n ClrDateInput,\n ClrDateInputValidator,\n ClrDatepickerViewManager,\n ClrMonthpicker,\n ClrYearpicker,\n ClrDaypicker,\n ClrCalendar,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n CdkTrapFocusModule,\n ClrHostWrappingModule,\n ClrConditionalModule,\n ClrPopoverModuleNext,\n ClrIconModule,\n ClrCommonFormsModule,\n ],\n declarations: [CLR_DATEPICKER_DIRECTIVES],\n exports: [CLR_DATEPICKER_DIRECTIVES],\n})\nexport class ClrDatepickerModule {\n constructor() {\n ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon, angleIcon, eventIcon, calendarIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrAbstractContainer } from '../common/abstract-container';\nimport { IfControlStateService } from '../common/if-control-state/if-control-state.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\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 status=\"info\" class=\"clr-password-eye-icon\" [attr.shape]=\"show ? 'eye-hide' : 'eye'\"></cds-icon>\n <span class=\"clr-sr-only\">\n {{ show ? hidePasswordText(label?.labelText) : showPasswordText(label?.labelText) }}\n </span>\n </button>\n </div>\n <cds-icon\n *ngIf=\"showInvalid\"\n class=\"clr-validate-icon\"\n shape=\"exclamation-circle\"\n status=\"danger\"\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\n private _toggle = true;\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 @Input('clrToggle')\n get clrToggle() {\n return this._toggle;\n }\n set clrToggle(state: boolean) {\n this._toggle = state;\n if (!state) {\n this.show = false;\n }\n }\n\n toggle() {\n this.show = !this.show;\n this.toggleService.next(this.show);\n }\n\n showPasswordText(label: string) {\n return this.commonStrings.parse(this.commonStrings.keys.passwordShow, { LABEL: label });\n }\n\n hidePasswordText(label: string) {\n return this.commonStrings.parse(this.commonStrings.keys.passwordHide, { LABEL: label });\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { NgControl } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { FocusService } from '../common/providers/focus.service';\nimport { WrappedFormControl } from '../common/wrapped-control';\nimport { ClrPasswordContainer, TOGGLE_SERVICE } from './password-container';\n\n@Directive({\n selector: '[clrPassword]',\n host: { '[class.clr-input]': 'true' },\n})\nexport class ClrPassword extends WrappedFormControl<ClrPasswordContainer> implements OnInit, OnDestroy {\n protected override 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 override triggerValidation() {\n super.triggerValidation();\n if (this.focusService) {\n this.focusService.focused = false;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\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})\nexport class ClrPasswordModule {\n constructor() {\n ClarityIcons.addIcons(eyeHideIcon, eyeIcon, exclamationCircleIcon, checkCircleIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrLabel } from '../common/label';\nimport { ControlIdService } from '../common/providers/control-id.service';\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 }) label: ClrLabel;\n\n ngOnInit() {\n if (this.label) {\n this.label.disableGrid();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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({\n selector: '[clrRadio]',\n})\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrAbstractContainer } from '../common/abstract-container';\nimport { IfControlStateService } from '../common/if-control-state/if-control-state.service';\nimport { ContainerIdService } from '../common/providers/container-id.service';\nimport { ControlClassService } from '../common/providers/control-class.service';\nimport { LayoutService } from '../common/providers/layout.service';\nimport { NgControlService } from '../common/providers/ng-control.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 shape=\"exclamation-circle\"\n status=\"danger\"\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 role: string;\n\n @ContentChildren(ClrRadio, { descendants: true }) radios: QueryList<ClrRadio>;\n\n private inline = false;\n\n constructor(\n @Optional() protected override layoutService: LayoutService,\n protected override controlClassService: ControlClassService,\n protected override ngControlService: NgControlService,\n protected override 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 get clrInline() {\n return this.inline;\n }\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\n override ngAfterContentInit() {\n this.setAriaRoles();\n }\n\n private setAriaRoles() {\n this.role = this.radios.length ? 'group' : null;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrHostWrappingModule } from '../../utils/host-wrapping/host-wrapping.module';\nimport { ClrCommonFormsModule } from '../common/common.module';\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})\nexport class ClrRadioModule {\n constructor() {\n ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrAbstractContainer } from '../common/abstract-container';\nimport { IfControlStateService } from '../common/if-control-state/if-control-state.service';\nimport { ControlClassService } from '../common/providers/control-class.service';\nimport { ControlIdService } from '../common/providers/control-id.service';\nimport { LayoutService } from '../common/providers/layout.service';\nimport { NgControlService } from '../common/providers/ng-control.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 shape=\"exclamation-circle\"\n status=\"danger\"\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 private lastRangeProgressFillWidth: string;\n\n constructor(\n @Optional() layoutService: LayoutService,\n controlClassService: ControlClassService,\n ngControlService: NgControlService,\n private renderer: Renderer2,\n private idService: ControlIdService,\n protected override ifControlStateService: IfControlStateService\n ) {\n super(ifControlStateService, layoutService, controlClassService, ngControlService);\n }\n\n @Input('clrRangeHasProgress')\n get hasProgress() {\n return this._hasProgress;\n }\n set hasProgress(val: boolean) {\n const valBool = !!val;\n if (valBool !== this._hasProgress) {\n this._hasProgress = valBool;\n }\n }\n\n getRangeProgressFillWidth(): string {\n const input = this.selectRangeElement();\n\n if (!input) {\n return this.lastRangeProgressFillWidth;\n }\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 this.lastRangeProgressFillWidth = (valueAsPercent * inputWidth) / 100 + 'px';\n\n return this.lastRangeProgressFillWidth;\n }\n\n private selectRangeElement() {\n try {\n return this.renderer.selectRootElement('[clrRange]#' + this.idService.id);\n } catch {\n return undefined;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrRangeContainer } from './range-container';\n\n@Directive({\n selector: '[clrRange]',\n host: { '[class.clr-range]': 'true' },\n})\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\n\nimport { ClrIconModule } from '../../icon/icon.module';\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})\nexport class ClrRangeModule {\n constructor() {\n ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrAbstractContainer } from '../common/abstract-container';\nimport { IfControlStateService } from '../common/if-control-state/if-control-state.service';\nimport { ControlClassService } from '../common/providers/control-class.service';\nimport { ControlIdService } from '../common/providers/control-id.service';\nimport { LayoutService } from '../common/providers/layout.service';\nimport { NgControlService } from '../common/providers/ng-control.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 shape=\"exclamation-circle\"\n status=\"danger\"\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 }) multiple: SelectMultipleControlValueAccessor;\n private multi = false;\n\n constructor(\n @Optional() protected override layoutService: LayoutService,\n protected override controlClassService: ControlClassService,\n protected override ngControlService: NgControlService,\n protected override 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrSelectContainer } from './select-container';\n\n@Directive({\n selector: '[clrSelect]',\n host: { '[class.clr-select]': 'true' },\n})\nexport class ClrSelect extends WrappedFormControl<ClrSelectContainer> {\n protected override 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\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})\nexport class ClrSelectModule {\n constructor() {\n ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { IfControlStateService } from '../common/if-control-state/if-control-state.service';\nimport { ControlClassService } from '../common/providers/control-class.service';\nimport { ControlIdService } from '../common/providers/control-id.service';\nimport { NgControlService } from '../common/providers/ng-control.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 shape=\"exclamation-circle\"\n status=\"danger\"\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrTextareaContainer } from './textarea-container';\n\n@Directive({\n selector: '[clrTextarea]',\n host: { '[class.clr-textarea]': 'true' },\n})\nexport class ClrTextarea extends WrappedFormControl<ClrTextareaContainer> {\n protected override 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\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})\nexport class ClrTextareaModule {\n constructor() {\n ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrComboboxModule } from './combobox/combobox.module';\nimport { ClrCommonFormsModule } from './common/common.module';\nimport { ClrDatalistModule } from './datalist/datalist.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 { ClrRangeModule } from './range/range.module';\nimport { ClrSelectModule } from './select/select.module';\nimport { ClrTextareaModule } from './textarea/textarea.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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { CdkDrag } from '@angular/cdk/drag-drop';\nimport { Directive, NgModule } from '@angular/core';\n\n/**\n * This is just a copy of CdkDrag so it can be used independent of the rest of the CdkDragDropModule.\n */\n@Directive({\n selector: '[cdkDrag]',\n})\nexport class CdkDragModule_CdkDrag extends CdkDrag {}\n\n/**\n * This module allows us to avoid importing all of CdkDragDropModule which results in a smaller application bundle.\n */\n@NgModule({\n declarations: [CdkDragModule_CdkDrag],\n exports: [CdkDragModule_CdkDrag],\n})\nexport class CdkDragModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, EventEmitter, Input, NgZone, OnDestroy, Output, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[clrOutsideClick]',\n})\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\n\nimport { OutsideClick } from './outside-click';\n\nexport * from './outside-click';\n\nexport const OUSTIDE_CLICK_DIRECTIVES: Type<any>[] = [OutsideClick];\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { OUSTIDE_CLICK_DIRECTIVES } from './index';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [OUSTIDE_CLICK_DIRECTIVES],\n exports: [OUSTIDE_CLICK_DIRECTIVES],\n})\nexport class ClrOutsideClickModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 abstract class CustomFilter {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 * This is the lock, to only emit once all the changes have finished processing\n */\n private nbChanges = 0;\n\n /**\n * The Observable that lets other classes subscribe to global state changes\n */\n private _change = new Subject<void>();\n\n // We do not want to expose the Subject itself, but the Observable which is read-only\n get change(): Observable<void> {\n return this._change.asObservable();\n }\n\n changeStart() {\n this.nbChanges++;\n }\n\n changeDone() {\n if (--this.nbChanges === 0) {\n this._change.next();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { StateDebouncer } from './state-debouncer.provider';\n\n@Injectable()\nexport class Page {\n activated = false;\n\n /**\n * Page size, a value of 0 means no pagination\n */\n private _size = 0;\n\n /**\n * Total items (needed to guess the last page)\n */\n private _totalItems?: number;\n\n /**\n * Last page\n */\n private _last: number;\n\n /**\n * Current page\n */\n private _current = 1;\n\n /**\n * The Observable that lets other classes subscribe to page changes\n */\n private _change = new Subject<number>();\n\n private preventEmit = false;\n private _sizeChange = new Subject<number>();\n\n constructor(private stateDebouncer: StateDebouncer) {}\n\n get size(): number {\n return this._size;\n }\n 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 get totalItems(): number {\n return this._totalItems || 0; // remains 0 if not set to avoid breaking change\n }\n 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 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 set last(page: number) {\n this._last = page;\n }\n\n // We do not want to expose the Subject itself, but the Observable which is read-only\n get change(): Observable<number> {\n return this._change.asObservable();\n }\n\n get sizeChange(): Observable<number> {\n return this._sizeChange.asObservable();\n }\n\n get current(): number {\n return this._current;\n }\n 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 * Index of the first item displayed on the current page, starting at 0, -1 if none displayed\n */\n 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 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 * Moves to the previous page if it exists\n */\n previous() {\n if (this.current > 1) {\n this.current--;\n }\n }\n\n /**\n * Moves to the next page if it exists\n */\n next() {\n if (this.current < this.last) {\n this.current++;\n }\n }\n\n /**\n * Resets the page size to 0\n */\n resetPageSize(preventEmit = false): void {\n this.preventEmit = preventEmit;\n this.size = 0;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrDatagridFilterInterface } from '../interfaces/filter.interface';\nimport { Page } from './page';\nimport { StateDebouncer } from './state-debouncer.provider';\n\n@Injectable()\nexport class FiltersProvider<T = any> {\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\n /**\n * List of all filters, whether they're active or not\n */\n private _all: RegisteredFilter<T, ClrDatagridFilterInterface<T>>[] = [];\n\n constructor(private _page: Page, private stateDebouncer: StateDebouncer) {}\n\n // We do not want to expose the Subject itself, but the Observable which is read-only\n get change(): Observable<ClrDatagridFilterInterface<T>[]> {\n return this._change.asObservable();\n }\n\n /**\n * Tests if at least one filter is currently active\n */\n 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 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 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 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, OnDestroy } from '@angular/core';\n\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 /**\n * @NOTEe Type `any` is set here to be able to pass templateStrictMode\n */\n registered: any;\n\n constructor(private filters: FiltersProvider<T>) {}\n\n get filter(): F {\n return this.registered && this.registered.filter;\n }\n\n ngOnDestroy(): void {\n this.deleteFilter();\n }\n\n 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 deleteFilter() {\n if (this.registered) {\n this.registered.unregister();\n delete this.registered;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n PLATFORM_ID,\n ViewChild,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { uniqueIdFactory } from '../../utils/id-generator/id-generator.service';\nimport { ClrAlignment } from '../../utils/popover/enums/alignment.enum';\nimport { ClrAxis } from '../../utils/popover/enums/axis.enum';\nimport { ClrSide } from '../../utils/popover/enums/side.enum';\nimport { ClrPopoverPosition } from '../../utils/popover/interfaces/popover-position.interface';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\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';\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 }],\n template: `\n <button\n class=\"datagrid-filter-toggle\"\n type=\"button\"\n #anchor\n [attr.aria-label]=\"toggleButtonAriaLabel\"\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 cdkTrapFocus\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, OnChanges, OnDestroy\n{\n @Output('clrDgFilterOpenChange') openChange = new EventEmitter<boolean>(false);\n\n ariaExpanded = false;\n popoverId = uniqueIdFactory();\n toggleButtonAriaLabel: string;\n\n // Smart Popover\n smartPosition: ClrPopoverPosition = {\n axis: ClrAxis.VERTICAL,\n side: ClrSide.AFTER,\n anchor: ClrAlignment.END,\n content: ClrAlignment.END,\n };\n\n @ViewChild('anchor', { read: ElementRef }) anchor: ElementRef;\n\n private _open = false;\n private subs: Subscription[] = [];\n\n constructor(\n _filters: FiltersProvider<T>,\n public commonStrings: ClrCommonStringsService,\n private smartToggleService: ClrPopoverToggleService,\n @Inject(PLATFORM_ID) private platformId: any,\n private elementRef: ElementRef<HTMLElement>\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 @Input('clrDgFilterOpen')\n get open() {\n return this._open;\n }\n 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 @Input('clrDgFilter')\n 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 get active() {\n return !!this.filter && this.filter.isActive();\n }\n\n ngOnChanges() {\n this.setToggleButtonAriaLabel();\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this.subs.forEach(sub => sub.unsubscribe());\n }\n\n /**\n * This is not in a getter to prevent \"expression has changed after it was checked\" errors.\n * And it's more performant this way since it only runs on change.\n */\n private setToggleButtonAriaLabel() {\n const columnElement = this.elementRef.nativeElement?.closest('clr-dg-column');\n const columnTitleElement = columnElement?.querySelector('.datagrid-column-title');\n\n const columnTitle = columnTitleElement?.textContent.trim().toLocaleLowerCase();\n\n this.toggleButtonAriaLabel = this.commonStrings.parse(this.commonStrings.keys.datagridFilterAriaLabel, {\n COLUMN: columnTitle || '',\n });\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 * 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 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { 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 (propValue === undefined) {\n return false;\n }\n if (low !== null && (typeof propValue !== 'number' || propValue < low)) {\n return false;\n }\n if (high !== null && (typeof propValue !== 'number' || propValue > high)) {\n return false;\n }\n return true;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, Subject } from 'rxjs';\n\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 /**\n * The Observable required as part of the Filter interface\n */\n private _changes = new Subject<[number, number]>();\n\n /**\n * Internal values and accessor\n */\n private _low: number | null = null;\n private _high: number | null = null;\n\n constructor(public filterFn: ClrDatagridNumericFilterInterface<T>) {}\n\n // We do not want to expose the Subject itself, but the Observable which is read-only\n get changes(): Observable<[number, number]> {\n return this._changes.asObservable();\n }\n\n get value(): [number, number] {\n return [this._low, this._high];\n }\n 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 get low() {\n return this._low;\n }\n 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 get high() {\n return this._high;\n }\n 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 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 /**\n * Indicates if the filter is currently active, (at least one input is set)\n */\n isActive(): boolean {\n return this._low !== null || this.high !== null;\n }\n\n /**\n * Tests if an item matches a search text\n */\n 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 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { AfterViewInit, Component, ElementRef, EventEmitter, Input, NgZone, Output, ViewChild } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { DomAdapter } from '../../../../utils/dom-adapter/dom-adapter';\nimport { ClrCommonStringsService } from '../../../../utils/i18n/common-strings.service';\nimport { ClrPopoverToggleService } from '../../../../utils/popover/providers/popover-toggle.service';\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 { DatagridFilterRegistrar } from '../../utils/datagrid-filter-registrar';\nimport { DatagridNumericFilterImpl } from './datagrid-numeric-filter-impl';\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 autocomplete=\"off\"\n name=\"low\"\n [(ngModel)]=\"low\"\n [placeholder]=\"minPlaceholderValue\"\n [attr.aria-label]=\"minPlaceholderValue\"\n />\n <span class=\"datagrid-filter-input-spacer\"></span>\n <input\n class=\"datagrid-numeric-filter-input\"\n #input_high\n type=\"number\"\n autocomplete=\"off\"\n name=\"high\"\n [(ngModel)]=\"high\"\n [placeholder]=\"maxPlaceholderValue\"\n [attr.aria-label]=\"maxPlaceholderValue\"\n />\n </clr-dg-filter>\n `,\n})\nexport class DatagridNumericFilter<T = any>\n extends DatagridFilterRegistrar<T, DatagridNumericFilterImpl<T>>\n implements CustomFilter, AfterViewInit\n{\n @Input('clrFilterMinPlaceholder') minPlaceholder: string;\n @Input('clrFilterMaxPlaceholder') maxPlaceholder: string;\n\n @Output('clrFilterValueChange') filterValueChange = new EventEmitter();\n\n /**\n * Indicates if the filter dropdown is open\n */\n open = false;\n\n /**\n * We need the actual input element to automatically focus on it\n */\n @ViewChild('input_low') input: ElementRef;\n\n /**\n * We grab the ClrDatagridFilter we wrap to register this StringFilter to it.\n */\n @ViewChild(ClrDatagridFilter) filterContainer: ClrDatagridFilter<T>;\n\n private initFilterValues: [number, number];\n private subscriptions: Subscription[] = [];\n\n constructor(\n filters: FiltersProvider<T>,\n private domAdapter: DomAdapter,\n public commonStrings: ClrCommonStringsService,\n private popoverToggleService: ClrPopoverToggleService,\n private ngZone: NgZone\n ) {\n super(filters);\n }\n\n /**\n * Common setter for the input values\n */\n @Input('clrFilterValue')\n get value() {\n return [this.filter.low, this.filter.high];\n }\n 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 /**\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 get maxPlaceholderValue() {\n return this.maxPlaceholder || this.commonStrings.keys.maxValue;\n }\n\n get minPlaceholderValue() {\n return this.minPlaceholder || this.commonStrings.keys.minValue;\n }\n\n 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 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 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 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 ngAfterViewInit() {\n this.subscriptions.push(\n this.popoverToggleService.openChange.subscribe(openChange => {\n this.open = openChange;\n // Note: this is being run outside of the Angular zone because `element.focus()` doesn't require\n // running change detection.\n this.ngZone.runOutsideAngular(() => {\n // The animation frame in used because when this executes, the input isn't displayed.\n // Note: `element.focus()` causes re-layout and this may lead to frame drop on slower devices.\n // `setTimeout` is a macrotask and macrotasks are executed within the current rendering frame.\n // Animation tasks are executed within the next rendering frame.\n requestAnimationFrame(() => {\n this.domAdapter.focus(this.input.nativeElement);\n });\n });\n })\n );\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this.subscriptions.forEach(sub => {\n sub.unsubscribe();\n });\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, Subject } from 'rxjs';\n\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 /**\n * The Observable required as part of the Filter interface\n */\n private _changes = new Subject<string>();\n\n /**\n * Input value converted to lowercase\n */\n private _lowerCaseValue = '';\n\n /**\n * Raw input value\n */\n private _rawValue = '';\n\n constructor(public filterFn: ClrDatagridStringFilterInterface<T>) {}\n\n // We do not want to expose the Subject itself, but the Observable which is read-only\n get changes(): Observable<string> {\n return this._changes.asObservable();\n }\n\n get lowerCaseValue() {\n return this._lowerCaseValue;\n }\n\n 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 get value(): string {\n return this._rawValue;\n }\n /**\n * Common setter for the input value\n */\n 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 isActive(): boolean {\n return !!this.value;\n }\n\n /**\n * Tests if an item matches a search text\n */\n 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 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { DomAdapter } from '../../../../utils/dom-adapter/dom-adapter';\nimport { ClrCommonStringsService } from '../../../../utils/i18n/common-strings.service';\nimport { ClrPopoverToggleService } from '../../../../utils/popover/providers/popover-toggle.service';\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 { DatagridFilterRegistrar } from '../../utils/datagrid-filter-registrar';\nimport { DatagridStringFilterImpl } from './datagrid-string-filter-impl';\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 autocomplete=\"off\"\n name=\"search\"\n [(ngModel)]=\"value\"\n class=\"clr-input\"\n [attr.aria-label]=\"placeholderValue\"\n [placeholder]=\"placeholderValue\"\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 /**\n * Provide a way to pass external placeholder and aria-label to the filter input\n */\n @Input('clrFilterPlaceholder') placeholder: string;\n\n @Output('clrFilterValueChange') filterValueChange = new EventEmitter();\n\n /**\n * Indicates if the filter dropdown is open\n */\n open = false;\n\n /**\n * We need the actual input element to automatically focus on it\n */\n @ViewChild('input') input: ElementRef;\n\n /**\n * We grab the ClrDatagridFilter we wrap to register this StringFilter to it.\n */\n @ViewChild(ClrDatagridFilter) filterContainer: ClrDatagridFilter<T>;\n\n private initFilterValue: string;\n private subs: Subscription[] = [];\n\n constructor(\n filters: FiltersProvider<T>,\n private domAdapter: DomAdapter,\n public commonStrings: ClrCommonStringsService,\n private smartToggleService: ClrPopoverToggleService,\n private ngZone: NgZone\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 * Common setter for the input value\n */\n @Input('clrFilterValue')\n get value() {\n return this.filter.value;\n }\n 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 get placeholderValue() {\n return this.placeholder || this.commonStrings.keys.filterItems;\n }\n\n ngAfterViewInit() {\n this.subs.push(\n this.smartToggleService.openChange.subscribe(openChange => {\n this.open = openChange;\n // Note: this is being run outside of the Angular zone because `element.focus()` doesn't require\n // running change detection.\n this.ngZone.runOutsideAngular(() => {\n // The animation frame in used because when this executes, the input isn't displayed.\n // Note: `element.focus()` causes re-layout and this may lead to frame drop on slower devices.\n // `setTimeout` is a macrotask and macrotasks are executed within the current rendering frame.\n // Animation tasks are executed within the next rendering frame.\n requestAnimationFrame(() => {\n this.domAdapter.focus(this.input.nativeElement);\n });\n });\n })\n );\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this.subs.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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({\n selector: 'clr-datagrid',\n})\nexport class DatagridWillyWonka extends WillyWonka {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 /**\n * false means no rows with action\n */\n get hasActionableRow(): boolean {\n return this.actionableCount > 0;\n }\n\n register() {\n this.actionableCount++;\n }\n\n unregister() {\n this.actionableCount--;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { RowActionService } from '../providers/row-action-service';\nimport { DatagridWillyWonka } from './datagrid-willy-wonka';\n\n@Directive({\n selector: 'clr-datagrid, clr-dg-row',\n})\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 } from '@angular/core';\n\nimport { Keys } from '../utils/enums/keys.enum';\nimport { normalizeKey } from '../utils/focus/key-focus/util';\n\nexport interface Closable {\n close(): void;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ModalStackService {\n private readonly modalStack: Closable[] = [];\n private readonly keyUpEventListener = this.onKeyUp.bind(this);\n\n constructor(@Inject(PLATFORM_ID) private readonly platformId: unknown) {}\n\n trackModalOpen(openedModal: Closable) {\n if (this.modalStack.includes(openedModal) === false) {\n this.modalStack.unshift(openedModal);\n }\n\n if (isPlatformBrowser(this.platformId)) {\n document.body.addEventListener('keyup', this.keyUpEventListener);\n }\n }\n\n trackModalClose(closedModal: Closable) {\n const closedModalIndex = this.modalStack.indexOf(closedModal);\n\n if (closedModalIndex > -1) {\n this.modalStack.splice(closedModalIndex, 1);\n }\n\n if (this.modalStack.length === 0 && isPlatformBrowser(this.platformId)) {\n document.body.removeEventListener('keyup', this.keyUpEventListener);\n }\n }\n\n private onKeyUp(event: KeyboardEvent) {\n if (this.modalStack.length && normalizeKey(event.key) === Keys.Escape) {\n // We blur the active element because escaping with an input element in focus could cause\n // an ExpressionChangedAfterItHasBeenCheckedError for the touched state. (CDE-1662)\n (document.activeElement as HTMLElement).blur();\n\n this.modalStack[0].close();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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\nimport { ModalStackService } from '../../../modal/modal-stack.service';\n\n@Injectable()\nexport class DetailService {\n id: string;\n\n private toggleState = false;\n private cache: any;\n private button: HTMLButtonElement;\n private _enabled = false;\n private _state = new BehaviorSubject<boolean | null>(this.toggleState);\n\n constructor(private readonly modalStackService: ModalStackService) {}\n\n get enabled(): boolean {\n return this._enabled;\n }\n set enabled(state: boolean) {\n this._enabled = state;\n }\n\n get state() {\n return this.cache;\n }\n\n get stateChange(): Observable<boolean | null> {\n return this._state.asObservable();\n }\n\n get isOpen() {\n return this.toggleState === true;\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 this.modalStackService.trackModalOpen(this);\n }\n\n close() {\n this.toggleState = false;\n this._state.next(this.toggleState);\n this.modalStackService.trackModalClose(this);\n if (this.button) {\n this.button.focus();\n this.button = null;\n }\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 isRowOpen(item: any) {\n return !!(this.toggleState && this.cache === item);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { DetailService } from './detail.service';\n\n@Injectable()\nexport class ExpandableRowsCount {\n private expandableCount = 0;\n\n constructor(private detailService: DetailService) {}\n\n /**\n * false means no rows with action\n * check if details are on, and disable rows entirely\n */\n get hasExpandableRow(): boolean {\n return !this.detailService.enabled && this.expandableCount > 0;\n }\n\n register() {\n this.expandableCount++;\n }\n\n unregister() {\n this.expandableCount--;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ExpandableRowsCount } from '../providers/global-expandable-rows';\nimport { DatagridWillyWonka } from './datagrid-willy-wonka';\n\n@Directive({\n selector: 'clr-datagrid, clr-dg-row',\n})\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { 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 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrDatagridComparatorInterface } from '../interfaces/comparator.interface';\nimport { StateDebouncer } from './state-debouncer.provider';\n\n@Injectable()\nexport class Sort<T = any> {\n /**\n * Currently active comparator\n */\n private _comparator: ClrDatagridComparatorInterface<T>;\n\n /**\n * Ascending order if false, descending if true\n */\n private _reverse = false;\n\n /**\n * The Observable that lets other classes subscribe to sort changes\n */\n private _change = new Subject<Sort<T>>();\n\n constructor(private stateDebouncer: StateDebouncer) {}\n\n get comparator(): ClrDatagridComparatorInterface<T> {\n return this._comparator;\n }\n set comparator(value: ClrDatagridComparatorInterface<T>) {\n this.stateDebouncer.changeStart();\n this._comparator = value;\n this.emitChange();\n this.stateDebouncer.changeDone();\n }\n\n get reverse(): boolean {\n return this._reverse;\n }\n set reverse(value: boolean) {\n this.stateDebouncer.changeStart();\n this._reverse = value;\n this.emitChange();\n this.stateDebouncer.changeDone();\n }\n\n // We do not want to expose the Subject itself, but the Observable which is read-only\n 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 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 clear() {\n this.comparator = null;\n }\n\n /**\n * Compares two objects according to the current comparator\n */\n compare(a: T, b: T): number {\n return (this.reverse ? -1 : 1) * this.comparator.compare(a, b);\n }\n\n private emitChange() {\n this._change.next(this);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 = new Subject<DatagridRenderStep>();\n\n private alreadySized = false;\n\n get renderStep(): Observable<DatagridRenderStep> {\n return this._renderStep.asObservable();\n }\n\n filterRenderSteps(step: DatagridRenderStep) {\n return this.renderStep.pipe(filter(testStep => step === testStep));\n }\n\n 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, Injectable } from '@angular/core';\n\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 // is it within the maximum resize range to the left\n isWithinMaxResizeRange: boolean;\n\n private widthBeforeResize: number;\n private _resizedBy = 0;\n\n constructor(private el: ElementRef, private domAdapter: DomAdapter, private organizer: DatagridRenderOrganizer) {}\n\n get resizedBy() {\n return this._resizedBy;\n }\n\n get minColumnWidth() {\n return this.domAdapter.minWidth(this.el.nativeElement) || MIN_COLUMN_WIDTH;\n }\n\n get maxResizeRange() {\n return this.widthBeforeResize - this.minColumnWidth;\n }\n\n get widthAfterResize(): number {\n return this.widthBeforeResize + this._resizedBy;\n }\n\n startResize(): void {\n this._resizedBy = 0;\n this.isWithinMaxResizeRange = true;\n this.widthBeforeResize = this.domAdapter.clientRect(this.el.nativeElement).width;\n }\n\n endResize(): void {\n this.organizer.resize();\n }\n\n 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 } 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 constructor(@Inject(PLATFORM_ID) private platformId: any) {}\n\n get tableRef(): HTMLElement {\n return this._tableRef;\n }\n set tableRef(element: HTMLElement) {\n this._tableRef = element;\n }\n\n 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { AfterViewInit, Component, ElementRef, Inject, NgZone, OnDestroy, Renderer2, ViewChild } from '@angular/core';\n\nimport { Keys } from '../../utils/enums/keys.enum';\nimport { normalizeKey } from '../../utils/focus/key-focus/util';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { uniqueIdFactory } 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 cdkDrag\n cdkDragLockAxis=\"x\"\n (cdkDragStarted)=\"showTracker()\"\n (cdkDragMoved)=\"moveTracker($event.distance.x)\"\n (cdkDragEnded)=\"hideTracker(); $event.source._dragRef.reset()\"\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})\nexport class ClrDatagridColumnSeparator implements AfterViewInit, OnDestroy {\n columnSeparatorId = uniqueIdFactory();\n\n private resizeStartedOnKeyDown = false;\n private isWithinMaxResizeRange: boolean;\n private unlisteners: (() => void)[] = [];\n\n @ViewChild('resizeTracker') private resizeTrackerRef: ElementRef;\n @ViewChild('columnHandle') private columnHandleRef: ElementRef;\n\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 ) {}\n\n get descriptionId(): string {\n return `${this.columnSeparatorId}-aria-describedby`;\n }\n\n private get resizeTrackerEl() {\n return this.resizeTrackerRef.nativeElement;\n }\n\n private get columnHandleEl() {\n return this.columnHandleRef.nativeElement;\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 ngOnDestroy() {\n this.unlisteners.forEach(unlistener => unlistener());\n }\n\n 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 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 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.columnHandleEl, '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 event.stopPropagation();\n this.moveTracker(this.columnResizerService.resizedBy - KEYBOARD_RESIZE_LENGTH);\n } else if (this.isArrowRightKeyEvent(event)) {\n event.stopPropagation();\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 normalizeKey(event.key) === Keys.ArrowLeft;\n }\n\n private isArrowRightKeyEvent(event: KeyboardEvent) {\n return normalizeKey(event.key) === Keys.ArrowRight;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { HostWrapper } from '../../utils/host-wrapping/host-wrapper';\nimport { ClrPopoverHostDirective } from '../../utils/popover/popover-host.directive';\nimport { DatagridPropertyComparator } from './built-in/comparators/datagrid-property-comparator';\nimport { DatagridNumericFilterImpl } from './built-in/filters/datagrid-numeric-filter-impl';\nimport { DatagridPropertyNumericFilter } from './built-in/filters/datagrid-property-numeric-filter';\nimport { DatagridPropertyStringFilter } from './built-in/filters/datagrid-property-string-filter';\nimport { DatagridStringFilterImpl } from './built-in/filters/datagrid-string-filter-impl';\nimport { ClrDatagridSortOrder } from './enums/sort-order.enum';\nimport { ClrDatagridComparatorInterface } from './interfaces/comparator.interface';\nimport { ClrDatagridFilterInterface } from './interfaces/filter.interface';\nimport { CustomFilter } from './providers/custom-filter';\nimport { DetailService } from './providers/detail.service';\nimport { FiltersProvider } from './providers/filters';\nimport { Sort } from './providers/sort';\nimport { DatagridFilterRegistrar } from './utils/datagrid-filter-registrar';\nimport { WrappedColumn } from './wrapped-column';\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 [clrFilterPlaceholder]=\"filterStringPlaceholder\"\n [clrDgStringFilter]=\"registered\"\n [(clrFilterValue)]=\"filterValue\"\n ></clr-dg-string-filter>\n\n <clr-dg-numeric-filter\n *ngIf=\"field && !customFilter && colType == 'number'\"\n [clrFilterMaxPlaceholder]=\"filterNumberMaxPlaceholder\"\n [clrFilterMinPlaceholder]=\"filterNumberMinPlaceholder\"\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 hostDirectives: [ClrPopoverHostDirective],\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 @Input('clrFilterStringPlaceholder') filterStringPlaceholder: string;\n @Input('clrFilterNumberMaxPlaceholder') filterNumberMaxPlaceholder: string;\n @Input('clrFilterNumberMinPlaceholder') filterNumberMinPlaceholder: string;\n\n @Output('clrDgSortOrderChange') sortOrderChange = new EventEmitter<ClrDatagridSortOrder>();\n @Output('clrFilterValueChange') filterValueChange = new EventEmitter();\n\n showSeparator = true;\n\n /**\n * A custom filter for this column that can be provided in the projected content\n */\n customFilter = false;\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 private _colType: 'string' | 'number' = 'string';\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\n /**\n * ClrDatagridComparatorInterface to use when sorting the column\n */\n private _sortBy: ClrDatagridComparatorInterface<T>;\n\n /**\n * Indicates how the column is currently sorted\n */\n private _sortOrder: ClrDatagridSortOrder = ClrDatagridSortOrder.UNSORTED;\n\n private _sortDirection: 'up' | 'down' | null;\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 private wrappedInjector: Injector;\n\n /**\n * Subscription to the sort service changes\n */\n private subscriptions: Subscription[] = [];\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 ) {\n super(filters);\n this.subscriptions.push(this.listenForSortingChanges());\n this.subscriptions.push(this.listenForDetailPaneChanges());\n }\n\n // TODO: We might want to make this an enum in the future\n @Input('clrDgColType')\n get colType() {\n return this._colType;\n }\n set colType(value: 'string' | 'number') {\n this._colType = value;\n }\n\n @Input('clrDgField')\n get field() {\n return this._field;\n }\n 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 @Input('clrDgSortBy')\n get sortBy() {\n return this._sortBy;\n }\n 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 @Input('clrDgSortOrder')\n get sortOrder() {\n return this._sortOrder;\n }\n 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 @Input('clrFilterValue')\n 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 @ContentChild(CustomFilter)\n set projectedFilter(custom: any) {\n if (custom) {\n this.deleteFilter();\n this.customFilter = true;\n }\n }\n\n /**\n * Indicates if the column is sortable\n */\n get sortable(): boolean {\n return !!this._sortBy;\n }\n\n 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 get sortDirection(): 'up' | 'down' | null {\n return this._sortDirection;\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 get filterValue() {\n if (this.filter instanceof DatagridStringFilterImpl || this.filter instanceof DatagridNumericFilterImpl) {\n return this.filter.value;\n }\n return null;\n }\n 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 get _view() {\n return this.wrappedInjector.get(WrappedColumn, this.vcr).columnView;\n }\n\n ngOnInit() {\n this.wrappedInjector = new HostWrapper(WrappedColumn, this.vcr);\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 override ngOnDestroy() {\n super.ngOnDestroy();\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n /**\n * Sorts the datagrid based on this column\n */\n 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.sortOrderChange.emit(this._sortOrder);\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 this._sortDirection = null;\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","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, 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\nexport type ClrDatagridItemsTrackByFunction<T> = (item: T) => any;\n\n@Injectable()\nexport class Items<T = any> {\n /**\n * Indicates if the data is currently loading\n */\n loading = false;\n\n /**\n * New tracking function to identify objects. If provided, this will be used instead of `iteratorTrackBy`.\n */\n datagridTrackBy: ClrDatagridItemsTrackByFunction<T>;\n\n /**\n * Subscriptions to the other providers changes.\n */\n private _filtersSub: Subscription;\n private _sortSub: Subscription;\n private _pageSub: Subscription;\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\n /**\n * List of all items in the datagrid\n */\n private _all: T[];\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\n /**\n * The Observable that lets other classes subscribe to items changes\n */\n private _change = new Subject<T[]>();\n\n private _allChanges = new Subject<T[]>();\n\n constructor(private _filters: FiltersProvider<T>, private _sort: Sort<T>, private _page: Page) {}\n\n get smart(): boolean {\n return this._smart;\n }\n\n get all() {\n return this._all;\n }\n 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 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 // We do not want to expose the Subject itself, but the Observable which is read-only\n get change(): Observable<T[]> {\n return this._change.asObservable();\n }\n\n 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 * Tracking function to identify objects. Default is reference equality.\n *\n * @deprecated in v15 and scheduled for removal in v17 (CDE-71)\n */\n iteratorTrackBy: TrackByFunction<T> = (_index, item) => item;\n\n /**\n * Cleans up our subscriptions to other providers\n */\n 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 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 * Manually recompute the list of displayed items\n */\n refresh() {\n if (this.smart) {\n this._filterItems();\n }\n }\n\n canTrackBy(): boolean {\n // all items are needed unless `datagridTrackBy` is set because `iteratorTrackBy` requires the item's index\n return !!this.datagridTrackBy || Array.isArray(this.all);\n }\n\n trackBy(item: T, index?: number) {\n if (this.datagridTrackBy) {\n return this.datagridTrackBy(item);\n } else if (Array.isArray(this.all)) {\n index = index ?? this.all.indexOf(item);\n return this.iteratorTrackBy(index, item);\n } else {\n throw new Error('improper call to Items#trackBy');\n }\n }\n\n private emitChange() {\n this._change.next(this.displayed);\n }\n\n private emitAllChanges(items: T[]): void {\n this._allChanges.next(items);\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { NgForOf, NgForOfContext } from '@angular/common';\nimport {\n Directive,\n DoCheck,\n Input,\n IterableDiffer,\n IterableDiffers,\n OnDestroy,\n TemplateRef,\n TrackByFunction,\n ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { Items } from './providers/items';\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 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 @Input('clrDgItemsOf')\n 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.iteratorTrackBy = value;\n this.iterableProxy.ngForTrackBy = value;\n }\n\n /**\n * Asserts the correct type of the template context that the directive will render.\n * See https://angular.io/guide/structural-directives#typing-the-directives-context\n *\n * The presence of this method is a signal to the Ivy template type-check compiler that the\n * structural directive renders its template with a specific context type.\n */\n static ngTemplateContextGuard<T>(_dir: ClrDatagridItems<T>, _ctx: unknown): _ctx is NgForOfContext<T> {\n return true;\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { 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\" class=\"datagrid-placeholder-content\"><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 get emptyDatagrid() {\n return !this.items.loading && (!this.items.displayed || this.items.displayed.length === 0);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 SignpostIdService {\n private _id = new Subject<string>();\n\n get id(): Observable<string> {\n return this._id.asObservable();\n }\n\n setId(id: string) {\n this._id.next(id);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { Directive, ElementRef, HostListener, Inject, OnDestroy, PLATFORM_ID } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.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 ariaExpanded = false;\n ariaControl: string;\n isOpen: boolean;\n\n private document: Document;\n private subscriptions: Subscription[] = [];\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 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 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","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 } from '@angular/core';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrPopoverHostDirective } from '../../utils/popover/popover-host.directive';\nimport { SignpostFocusManager } from './providers/signpost-focus-manager.service';\nimport { SignpostIdService } from './providers/signpost-id.service';\nimport { ClrSignpostTrigger } from './signpost-trigger';\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-icon 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: [SignpostFocusManager, SignpostIdService],\n hostDirectives: [ClrPopoverHostDirective],\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 /**********\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 useCustomTrigger = false;\n\n constructor(public commonStrings: ClrCommonStringsService) {}\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, 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 private wrappedInjector: Injector;\n\n constructor(private vcr: ViewContainerRef) {}\n\n get _view() {\n return this.wrappedInjector.get(WrappedCell, this.vcr).cellView;\n }\n\n ngOnInit() {\n this.wrappedInjector = new HostWrapper(WrappedCell, this.vcr);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 private _replace = new BehaviorSubject(false);\n private _animate = new Subject<boolean>();\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 override get expanded(): boolean {\n return this._expanded;\n }\n override 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 get replace(): Observable<boolean> {\n return this._replace.asObservable();\n }\n\n get animate(): Observable<boolean> {\n return this._animate.asObservable();\n }\n\n override loadingStateChange(state: ClrLoadingState) {\n super.loadingStateChange(state);\n if (state !== ClrLoadingState.LOADING) {\n this._animate.next();\n }\n }\n\n setReplace(replaceValue: boolean) {\n this._replace.next(replaceValue);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { SelectionType } from '../enums/selection-type';\nimport { FiltersProvider } from './filters';\nimport { Items } from './items';\n\nlet nbSelection = 0;\n\n@Injectable()\nexport class Selection<T = any> {\n id: string;\n preserveSelection = false;\n\n /**\n * Last selection, for use in range selection.\n */\n rangeStart: T;\n\n /**\n * Shift key state, for use in range selection.\n */\n shiftPressed = false;\n\n /** @deprecated since 2.0, remove in 3.0 */\n rowSelectionMode = false;\n\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 private valueCollector = new Subject<T[]>();\n private _selectionType: SelectionType = SelectionType.None;\n\n /**\n * The current selection\n */\n private _current: T[];\n\n /**\n * The current selection in single selection type\n */\n private _currentSingle: T;\n\n /**\n * The Observable that lets other classes subscribe to selection changes\n */\n private _change = new Subject<T[] | T>();\n\n /**\n * Subscriptions to the other providers changes.\n */\n private subscriptions: Subscription[] = [];\n\n constructor(private _items: Items<T>, private _filters: FiltersProvider<T>) {\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 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.canTrackBy()) {\n this.prevSingleSelectionRef = this._items.trackBy(this.currentSingle);\n }\n }\n\n updatedItems.forEach((item, index) => {\n const ref = this._items.trackBy(item, index);\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 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.canTrackBy()) {\n this.prevSelectionRefs = [];\n this.current.forEach(item => {\n this.prevSelectionRefs.push(this._items.trackBy(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 = this._items.trackBy(item, index);\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 = this._items.trackBy(item, index);\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 get selectionType(): SelectionType {\n return this._selectionType;\n }\n 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 get current(): T[] {\n return this._current;\n }\n set current(value: T[]) {\n this.updateCurrent(value, true);\n }\n\n get currentSingle(): T {\n return this._currentSingle;\n }\n set currentSingle(value: T) {\n if (value === this._currentSingle) {\n return;\n }\n\n this._currentSingle = value;\n if (this._items.canTrackBy() && value) {\n this.prevSingleSelectionRef = this._items.trackBy(value);\n }\n this.emitChange();\n }\n\n // We do not want to expose the Subject itself, but the Observable which is read-only\n get change(): Observable<T[] | T> {\n return this._change.asObservable();\n }\n\n private get _selectable(): boolean {\n return this._selectionType === SelectionType.Multi || this._selectionType === SelectionType.Single;\n }\n\n clearSelection(): void {\n this._current = [];\n this.prevSelectionRefs = [];\n this.prevSingleSelectionRef = null;\n this._currentSingle = null;\n this.emitChange();\n }\n\n /**\n * Cleans up our subscriptions to other providers\n */\n destroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n updateCurrent(value: T[], emit: boolean) {\n this._current = value;\n\n if (emit) {\n this.valueCollector.next(value);\n }\n }\n\n /**\n * Checks if an item is currently selected\n */\n 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 or deselects an item\n */\n 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 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 * Lock and unlock item\n */\n lockItem(item: T, lock: boolean) {\n if (this.canItBeLocked()) {\n const ref = this._items.trackBy(item);\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 searching into lockedRefs for entry\n */\n isLocked(item: T): boolean {\n /**\n * The check for selectionType will boost the performance 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(item);\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 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 * Selects an item\n */\n private selectItem(item: T): void {\n this.current = this.current.concat(item);\n if (this._items.canTrackBy()) {\n // Push selected ref onto array\n this.prevSelectionRefs.push(this._items.trackBy(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 (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 * Make sure that it could be locked\n */\n private canItBeLocked(): boolean {\n return this._selectionType !== SelectionType.None && this._items.canTrackBy();\n }\n\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}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { BehaviorSubject, Observable, 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 protected _view = new BehaviorSubject(DatagridDisplayMode.DISPLAY);\n\n private subscriptions: Subscription[] = [];\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 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\n\nimport { Selection } from './providers/selection';\n\n@Directive({\n selector: '.datagrid-select',\n})\nexport class ClrDatagridSelectionCellDirective {\n constructor(private readonly selection: Selection) {}\n\n @HostListener('click', ['$event'])\n private onSelectionCellClick(event: MouseEvent & { target: HTMLElement }) {\n // We want to effectively expand the selection click target to the entire selection cell.\n\n // If row selection is enabled, do nothing because the entire selection cell is already clickable.\n if (this.selection.rowSelectionMode) {\n return;\n }\n\n // If click was outside the label/input, forward the click to the input.\n if (event.target.tagName !== 'LABEL' && event.target.tagName !== 'INPUT') {\n event.target.querySelector('input').click();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Inject,\n Injector,\n Input,\n Output,\n QueryList,\n Renderer2,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { combineLatest, ReplaySubject, Subscription } from 'rxjs';\n\nimport { ClrExpandableAnimation } from '../../utils/animations/expandable-animation/expandable-animation';\nimport { IfExpandService } from '../../utils/conditional/if-expanded.service';\nimport { HostWrapper } from '../../utils/host-wrapping/host-wrapper';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { LoadingListener } from '../../utils/loading/loading-listener';\nimport { ClrDatagridCell } from './datagrid-cell';\nimport { DatagridIfExpandService } from './datagrid-if-expanded.service';\nimport { DatagridDisplayMode } from './enums/display-mode.enum';\nimport { SelectionType } from './enums/selection-type';\nimport { DetailService } from './providers/detail.service';\nimport { DisplayModeService } from './providers/display-mode.service';\nimport { ExpandableRowsCount } from './providers/global-expandable-rows';\nimport { Items } from './providers/items';\nimport { RowActionService } from './providers/row-action-service';\nimport { Selection } from './providers/selection';\nimport { WrappedRow } from './wrapped-row';\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 @Output('clrDgSelectedChange') selectedChanged = new EventEmitter<boolean>(false);\n @Output('clrDgExpandedChange') expandedChange = new EventEmitter<boolean>(false);\n\n id: string;\n radioId: string;\n checkboxId: string;\n expandableId: string;\n replaced: boolean;\n displayCells = false;\n expandAnimationTrigger = false;\n\n /* reference to the enum so that template can access */\n SELECTION_TYPE = SelectionType;\n\n /**\n * @internal\n */\n itemChanges = new ReplaySubject<T>(1);\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 @ViewChild(ClrExpandableAnimation) expandAnimation: ClrExpandableAnimation;\n @ViewChild('detailButton') detailButton: ElementRef;\n @ViewChild('stickyCells', { read: ViewContainerRef }) _stickyCells: ViewContainerRef;\n @ViewChild('scrollableCells', { read: ViewContainerRef }) _scrollableCells: ViewContainerRef;\n @ViewChild('calculatedCells', { read: ViewContainerRef }) _calculatedCells: ViewContainerRef;\n\n private _item: T;\n private _selected = false;\n private _detailOpenLabel = '';\n private _detailCloseLabel = '';\n private _rowAriaLabel = '';\n private wrappedInjector: Injector;\n private subscriptions: Subscription[] = [];\n\n // By default, every item is selectable; it becomes not selectable only if it's explicitly set to false\n private _selectable: boolean | string = true;\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 private items: Items,\n @Inject(DOCUMENT) private document: any\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 /**\n * Model of the row, to use for selection\n */\n @Input('clrDgItem')\n get item(): T {\n return this._item;\n }\n set item(item: T) {\n this._item = item;\n this.itemChanges.next(item);\n this.clrDgSelectable = this._selectable;\n }\n\n @Input('clrDgSelectable')\n get clrDgSelectable() {\n return !this.selection.isLocked(this.item);\n }\n set clrDgSelectable(value: boolean | string) {\n if (this.item) {\n this.selection.lockItem(this.item, value === 'false' || value === false);\n }\n // Store this value locally, to be initialized when item is initialized\n this._selectable = value;\n }\n\n /**\n * Indicates if the row is selected\n */\n @Input('clrDgSelected')\n 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 set selected(value: boolean | string) {\n if (this.selection.selectionType === SelectionType.None) {\n this._selected = value as boolean;\n } else {\n if (value && this.selection.selectionType === SelectionType.Multi) {\n this.rangeSelect();\n } else {\n this.selection.rangeStart = null;\n }\n this.selection.setSelected(this.item, value as boolean);\n }\n }\n\n @Input('clrDgExpanded')\n get expanded() {\n return this.expand.expanded;\n }\n set expanded(value: boolean | string) {\n this.expand.expanded = value as boolean;\n }\n\n @Input()\n get clrDgDetailOpenLabel(): string {\n return this._detailOpenLabel ? this._detailOpenLabel : this.commonStrings.keys.open;\n }\n set clrDgDetailOpenLabel(label: string) {\n this._detailOpenLabel = label;\n }\n\n @Input()\n get clrDgDetailCloseLabel(): string {\n return this._detailCloseLabel ? this._detailCloseLabel : this.commonStrings.keys.close;\n }\n set clrDgDetailCloseLabel(label: string) {\n this._detailCloseLabel = label;\n }\n\n // CDE-151: Rename this field to clrDgRowSelectionLabel in v16\n @Input()\n get clrDgRowAriaLabel(): string {\n return this._rowAriaLabel ? this._rowAriaLabel : this.commonStrings.keys.select;\n }\n set clrDgRowAriaLabel(label: string) {\n this._rowAriaLabel = label;\n }\n\n get _view() {\n return this.wrappedInjector.get(WrappedRow, this.vcr).rowView;\n }\n\n ngOnInit() {\n this.wrappedInjector = new HostWrapper(WrappedRow, this.vcr);\n this.selection.lockItem(this.item, this.clrDgSelectable === false);\n }\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 ngOnDestroy() {\n this.subscriptions.forEach((sub: Subscription) => sub.unsubscribe());\n }\n\n toggle(selected = !this.selected) {\n if (selected !== this.selected) {\n this.selected = selected;\n this.selectedChanged.emit(selected);\n }\n }\n\n 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 /**\n * The default behavior in Chrome and Firefox for shift-clicking on a label is to perform text-selection.\n * This prevents our intended range-selection, because this text-selection overrides our shift-click event.\n * We need to clear the stored selection range when shift-clicking. This will override the mostly unused shift-click\n * selection browser functionality, which is inconsistently implemented in browsers anyway.\n */\n clearRanges(event: MouseEvent) {\n if (event.shiftKey) {\n this.document.getSelection().removeAllRanges();\n // Firefox is too persistent about its text-selection behaviour. So we need to add a preventDefault();\n // We should not try to enforce this on the other browsers, though, because their toggle cycle does not get canceled by\n // the preventDefault() and they toggle the checkbox second time, effectively retrurning it to not-selected.\n if (window.navigator.userAgent.indexOf('Firefox') !== -1) {\n event.preventDefault();\n this.toggle(true);\n }\n }\n }\n\n /**\n * @deprecated related to clrDgRowSelection, which is deprecated\n */\n protected selectRow(selected = !this.selected, $event) {\n // The label also captures clicks that bubble up to the row event listener, causing\n // this handler to run twice. This exits early to prevent toggling the checkbox twice.\n if ($event.target.tagName === 'LABEL') {\n return;\n }\n if (this.selection.selectionType === this.SELECTION_TYPE.Single) {\n this.selection.currentSingle = this.item;\n } else {\n this.toggle(selected);\n }\n }\n\n private rangeSelect() {\n const items = this.items.displayed;\n if (!items) {\n return;\n }\n const startIx = items.indexOf(this.selection.rangeStart);\n if (\n this.selection.rangeStart &&\n this.selection.current.includes(this.selection.rangeStart) &&\n this.selection.shiftPressed &&\n startIx !== -1\n ) {\n const endIx = items.indexOf(this.item);\n // Using Set to remove duplicates\n const newSelection = new Set(\n this.selection.current.concat(items.slice(Math.min(startIx, endIx), Math.max(startIx, endIx) + 1))\n );\n this.selection.clearSelection();\n this.selection.current.push(...newSelection);\n } else {\n // page number has changed or\n // no Shift was pressed or\n // rangeStart not yet set\n this.selection.rangeStart = this.item;\n }\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<div\n class=\"datagrid-row-clickable\"\n *ngIf=\"selection.rowSelectionMode\"\n (mousedown)=\"clearRanges($event)\"\n (click)=\"selectRow(!selected, $event)\"\n>\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</div>\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 <clr-checkbox-wrapper>\n <input\n type=\"checkbox\"\n clrCheckbox\n [ngModel]=\"selected\"\n (ngModelChange)=\"toggle($event)\"\n [id]=\"checkboxId\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\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\" (click)=\"clearRanges($event)\">\n <span class=\"clr-sr-only\">{{clrDgRowAriaLabel || commonStrings.keys.select}}</span>\n </label>\n </clr-checkbox-wrapper>\n </div>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <clr-radio-wrapper>\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 [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n />\n <label class=\"clr-control-label clr-col-null\" [for]=\"radioId\">\n <span class=\"clr-sr-only\">{{ clrDgRowAriaLabel || commonStrings.keys.select }}</span>\n </label>\n </clr-radio-wrapper>\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\n *ngIf=\"detailService.enabled\"\n class=\"datagrid-detail-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\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.isRowOpen(item) ? 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 } from 'rxjs';\n\nimport { ALL_COLUMN_CHANGES } from '../enums/column-changes.enum';\nimport { ColumnState, ColumnStateDiff } from '../interfaces/column-state.interface';\n\n@Injectable()\nexport class ColumnsService {\n columns: BehaviorSubject<ColumnState>[] = [];\n\n private _cache: ColumnState[] = [];\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 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 // 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { map } from 'rxjs/operators';\n\nimport { DatagridPropertyComparator } from '../built-in/comparators/datagrid-property-comparator';\nimport { ClrDatagridStateInterface } from '../interfaces/state.interface';\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 /**\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 constructor(\n private filters: FiltersProvider<T>,\n private sort: Sort<T>,\n private page: Page,\n private debouncer: StateDebouncer\n ) {}\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, NgZone, OnDestroy } from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nexport function getTabableItems(el: HTMLElement) {\n const tabableSelector = [\n 'a[href]',\n 'area[href]',\n 'input:not([disabled])',\n 'button:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'iframe',\n 'object',\n 'embed',\n '*[tabindex]',\n '*[contenteditable=true]',\n '[role=button]:not([disabled])',\n ].join(',');\n return Array.from(el.querySelectorAll(tabableSelector)) as HTMLElement[];\n}\n\nexport interface KeyNavigationGridConfig {\n keyGrid: string;\n keyGridRows: string;\n keyGridCells: string;\n}\n\n@Injectable()\nexport class KeyNavigationGridController implements OnDestroy {\n private host: HTMLElement;\n private config: KeyNavigationGridConfig;\n private listenersAdded = false;\n private destroy$ = new Subject<void>();\n\n constructor(private zone: NgZone) {\n this.config = {\n keyGridRows: '[role=row]:not(.datagrid-placeholder)',\n keyGridCells:\n '[role=gridcell]:not(.datagrid-hidden-column):not(.datagrid-placeholder-content), [role=columnheader]:not(.datagrid-hidden-column):not(.datagrid-placeholder-content), .datagrid-detail-caret',\n keyGrid: '[role=grid]',\n };\n }\n\n private get grid() {\n return this.host?.querySelector(this.config.keyGrid);\n }\n\n private get rows() {\n return this.host?.querySelectorAll(this.config.keyGridRows) as NodeListOf<HTMLElement>;\n }\n\n private get cells() {\n return this.host?.querySelectorAll(this.config.keyGridCells) as NodeListOf<HTMLElement>;\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n addListeners() {\n if (this.listenersAdded) {\n return;\n }\n\n this.zone.runOutsideAngular(() => {\n fromEvent(this.grid, 'mousedown')\n .pipe(takeUntil(this.destroy$))\n .subscribe((e: MouseEvent) => {\n // preserve right click for context menus & keyboard mouse control https://apple.stackexchange.com/questions/32715/how-do-i-open-the-context-menu-from-a-mac-keyboard\n if (e.buttons === 1 && !e.ctrlKey) {\n const activeCell = this.cells\n ? Array.from(this.cells).find(\n c => c === e.target || c === (e.target as HTMLElement).closest(this.config.keyGridCells)\n )\n : null;\n if (activeCell) {\n this.setActiveCell(activeCell);\n }\n }\n });\n\n fromEvent(this.grid, 'keydown')\n .pipe(takeUntil(this.destroy$))\n .subscribe((e: KeyboardEvent) => {\n // Skip column resize events\n if (\n (e.target as HTMLElement).classList.contains('drag-handle') &&\n (e.code === 'ArrowLeft' || e.code === 'ArrowRight')\n ) {\n return;\n }\n if (\n e.code === 'ArrowUp' ||\n e.code === 'ArrowDown' ||\n e.code === 'ArrowLeft' ||\n e.code === 'ArrowRight' ||\n e.code === 'End' ||\n e.code === 'Home' ||\n e.code === 'PageUp' ||\n e.code === 'PageDown'\n ) {\n const { x, y } = this.getNextItemCoordinate(e);\n const activeItem = this.rows\n ? (Array.from(this.rows[y].querySelectorAll(this.config.keyGridCells))[x] as HTMLElement)\n : null;\n if (activeItem) {\n this.setActiveCell(activeItem);\n }\n e.preventDefault();\n }\n });\n });\n this.listenersAdded = true;\n }\n\n initializeKeyGrid(host: HTMLElement) {\n this.host = host;\n this.addListeners();\n this.resetKeyGrid();\n }\n\n resetKeyGrid() {\n this.cells?.forEach((i: HTMLElement) => i.setAttribute('tabindex', '-1'));\n const firstCell = this.cells ? this.cells[0] : null;\n firstCell?.setAttribute('tabindex', '0');\n }\n\n private setActiveCell(activeCell: HTMLElement) {\n const prior = this.cells ? Array.from(this.cells).find(c => c.getAttribute('tabindex') === '0') : null;\n\n if (prior) {\n prior.setAttribute('tabindex', '-1');\n }\n\n activeCell.setAttribute('tabindex', '0');\n\n const items = getTabableItems(activeCell);\n const item = activeCell.getAttribute('role') !== 'columnheader' && items[0] ? items[0] : activeCell;\n item.focus();\n }\n\n private getNextItemCoordinate(e: any) {\n let currentCell = this.cells ? Array.from(this.cells).find(i => i.getAttribute('tabindex') === '0') : null;\n if (e.code === 'Tab') {\n currentCell = document.activeElement as HTMLElement;\n }\n const currentRow = this.rows && currentCell ? Array.from(this.rows).find(r => r.contains(currentCell)) : null;\n const numOfRows = this.rows ? this.rows.length - 1 : 0;\n const numOfColumns = this.cells ? this.cells.length / this.rows.length - 1 : 0;\n\n let x =\n currentRow && currentCell\n ? Array.from(currentRow.querySelectorAll(this.config.keyGridCells)).indexOf(currentCell)\n : 0;\n let y = currentRow && currentCell && this.rows ? Array.from(this.rows).indexOf(currentRow) : 0;\n\n const dir = this.host.dir;\n const inlineStart = dir === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n const inlineEnd = dir === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n\n const itemsPerPage =\n Math.floor(this.host?.querySelector('.datagrid').clientHeight / this.rows[0].clientHeight) - 1 || 0;\n\n if (e.code === 'ArrowUp' && y !== 0) {\n y = y - 1;\n } else if (e.code === 'ArrowDown' && y < numOfRows) {\n y = y + 1;\n } else if (e.code === inlineStart && x !== 0) {\n x = x - 1;\n } else if (e.code === inlineEnd && x < numOfColumns) {\n x = x + 1;\n } else if (e.code === 'End') {\n x = numOfColumns;\n\n if (e.ctrlKey) {\n y = numOfRows;\n }\n } else if (e.code === 'Home') {\n x = 0;\n\n if (e.ctrlKey) {\n y = 0;\n }\n } else if (e.code === 'PageUp') {\n y = y - itemsPerPage > 0 ? y - itemsPerPage : 0;\n } else if (e.code === 'PageDown') {\n y = y + itemsPerPage < numOfRows ? y + itemsPerPage : numOfRows;\n }\n\n return { x, y };\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n Output,\n QueryList,\n Renderer2,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { combineLatest, fromEvent, merge, of, Subscription } from 'rxjs';\nimport { debounceTime, switchMap } from 'rxjs/operators';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { uniqueIdFactory } from '../../utils/id-generator/id-generator.service';\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 { SelectionType } from './enums/selection-type';\nimport { ClrDatagridStateInterface } from './interfaces/state.interface';\nimport { ColumnsService } from './providers/columns.service';\nimport { DetailService } from './providers/detail.service';\nimport { DisplayModeService } from './providers/display-mode.service';\nimport { FiltersProvider } from './providers/filters';\nimport { ExpandableRowsCount } from './providers/global-expandable-rows';\nimport { ClrDatagridItemsTrackByFunction, 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 { KeyNavigationGridController } from './utils/key-navigation-grid.controller';\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 StateProvider,\n TableSizeService,\n ColumnsService,\n DisplayModeService,\n KeyNavigationGridController,\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 @Input() clrDgSingleSelectionAriaLabel: string = this.commonStrings.keys.singleSelectionAriaLabel;\n @Input() clrDgSingleActionableAriaLabel: string = this.commonStrings.keys.singleActionableAriaLabel;\n @Input() clrDetailExpandableAriaLabel: string = this.commonStrings.keys.detailExpandableAriaLabel;\n\n // Allows disabling of the auto focus on page/state changes (excludes focus management inside of popups)\n @Input() clrDgDisablePageFocus = false;\n\n @Output('clrDgSelectedChange') selectedChanged = new EventEmitter<T[]>(false);\n @Output('clrDgSingleSelectedChange') singleSelectedChanged = new EventEmitter<T>(false);\n\n /**\n * Output emitted whenever the data needs to be refreshed, based on user action or external ones\n */\n @Output('clrDgRefresh') refresh = new EventEmitter<ClrDatagridStateInterface<T>>(false);\n\n /**\n * We grab the smart iterator from projected content\n */\n @ContentChild(ClrDatagridItems) iterator: ClrDatagridItems<T>;\n\n /**\n * Custom placeholder detection\n */\n @ContentChild(ClrDatagridPlaceholder) placeholder: ClrDatagridPlaceholder<T>;\n\n /**\n * Hideable Column data source / detection.\n */\n @ContentChildren(ClrDatagridColumn) 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 @ContentChildren(ClrDatagridRow) rows: QueryList<ClrDatagridRow<T>>;\n\n @ViewChild('datagridTable', { read: ElementRef }) datagridTable: ElementRef;\n @ViewChild('scrollableColumns', { read: ViewContainerRef }) scrollableColumns: ViewContainerRef;\n @ViewChild('projectedDisplayColumns', { read: ViewContainerRef }) _projectedDisplayColumns: ViewContainerRef;\n @ViewChild('projectedCalculationColumns', { read: ViewContainerRef }) _projectedCalculationColumns: ViewContainerRef;\n @ViewChild('displayedRows', { read: ViewContainerRef }) _displayedRows: ViewContainerRef;\n @ViewChild('calculationRows', { read: ViewContainerRef }) _calculationRows: ViewContainerRef;\n\n selectAllId: string;\n\n /* reference to the enum so that template can access */\n SELECTION_TYPE = SelectionType;\n\n /**\n * Subscriptions to all the services and queries changes\n */\n private _subscriptions: Subscription[] = [];\n\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(DOCUMENT) private document: any,\n private el: ElementRef,\n private page: Page,\n public commonStrings: ClrCommonStringsService,\n private columnsService: ColumnsService,\n private keyNavigation: KeyNavigationGridController,\n private zone: NgZone\n ) {\n const datagridId = uniqueIdFactory();\n\n this.selectAllId = 'clr-dg-select-all-' + datagridId;\n this.detailService.id = datagridId;\n }\n\n /**\n * Freezes the datagrid while data is loading\n */\n @Input('clrDgLoading')\n get loading(): boolean {\n return this.items.loading;\n }\n set loading(value: boolean) {\n this.items.loading = value;\n }\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 /**\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 @Input()\n set clrDgPreserveSelection(state: boolean) {\n this.selection.preserveSelection = state;\n }\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 @Input('clrDgItemsTrackBy')\n set trackBy(value: ClrDatagridItemsTrackByFunction<T>) {\n this.items.datagridTrackBy = value;\n }\n\n /**\n * Indicates if all currently displayed items are selected\n */\n get allSelected() {\n return this.selection.isAllSelected();\n }\n 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 ngAfterContentInit() {\n if (!this.items.smart) {\n this.items.all = this.rows.map((row: ClrDatagridRow<T>) => row.item);\n }\n\n const rowItemsChanges = this.rows.changes.pipe(\n switchMap((rows: ClrDatagridRow<T>[]) =>\n merge(\n // immediate update\n of(rows.map(row => row.item)),\n // subsequent updates once per tick\n combineLatest(rows.map(row => row.itemChanges)).pipe(debounceTime(0))\n )\n )\n );\n\n this._subscriptions.push(\n rowItemsChanges.subscribe(all => {\n if (!this.items.smart) {\n this.items.all = all;\n }\n }),\n this.rows.changes.subscribe(() => {\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.items.canTrackBy()\n ? this.rows.find(row => this.items.trackBy(row.item) === this.items.trackBy(this.detailService.state))\n : undefined;\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 this.keyNavigation.initializeKeyGrid(this.el.nativeElement);\n\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 // Reinitialize arrow key navigation on page changes\n this.page.change.subscribe(() => {\n this.keyNavigation.resetKeyGrid();\n if (!this.clrDgDisablePageFocus) {\n this.datagridTable.nativeElement.focus();\n }\n }),\n // Reinitialize arrow key navigation on hide/unhide columns\n combineLatest(this.columnsService.columns).subscribe(() => this.keyNavigation?.resetKeyGrid()),\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 // We need to preserve shift state, so it can be used on selection change, regardless of the input event\n // that triggered the change. This helps us to easily resolve the k/b only case together with the mouse selection case.\n this.zone.runOutsideAngular(() => {\n this._subscriptions.push(\n fromEvent(this.document.body, 'keydown').subscribe((event: KeyboardEvent) => {\n if (event.key === 'Shift') {\n this.selection.shiftPressed = true;\n }\n }),\n fromEvent(this.document.body, 'keyup').subscribe((event: KeyboardEvent) => {\n if (event.key === 'Shift') {\n this.selection.shiftPressed = false;\n }\n })\n );\n });\n }\n\n ngOnDestroy() {\n this._subscriptions.forEach((sub: Subscription) => sub.unsubscribe());\n }\n\n resize(): void {\n this.organizer.resize();\n }\n\n /**\n * Public method to re-trigger the computation of displayed items manually\n */\n dataChanged() {\n this.items.refresh();\n }\n}\n","<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software 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 (keydown.space)=\"allSelected = !allSelected; $event.preventDefault()\"\n >\n <div class=\"clr-checkbox-wrapper\">\n <!-- We need to move focus and space-key handling to the parent because of keyboard arrow key navigation,\n which is not able to transfer focus directly on the input when focused with the tab key -->\n <input\n type=\"checkbox\"\n [id]=\"selectAllId\"\n [(ngModel)]=\"allSelected\"\n [attr.aria-label]=\"commonStrings.keys.selectAll\"\n tabindex=\"-1\"\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 './key-focus';\nexport * from './key-focus-item';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 EventEmitter,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n Output,\n PLATFORM_ID,\n ViewChild,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrKeyFocus } from '../../utils/focus/key-focus';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { uniqueIdFactory } from '../../utils/id-generator/id-generator.service';\nimport { ClrAlignment } from '../../utils/popover/enums/alignment.enum';\nimport { ClrAxis } from '../../utils/popover/enums/axis.enum';\nimport { ClrSide } from '../../utils/popover/enums/side.enum';\nimport { ClrPopoverPosition } from '../../utils/popover/interfaces/popover-position.interface';\nimport { ClrPopoverHostDirective } from '../../utils/popover/popover-host.directive';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { RowActionService } from './providers/row-action-service';\n\nlet clrDgActionId = 0;\n\n@Component({\n selector: 'clr-dg-action-overflow',\n hostDirectives: [ClrPopoverHostDirective],\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]=\"buttonLabel || commonStrings.keys.rowActions\"\n clrPopoverAnchor\n clrPopoverOpenCloseButton\n >\n <cds-icon shape=\"ellipsis-vertical\" [attr.title]=\"buttonLabel || commonStrings.keys.rowActions\"></cds-icon>\n </button>\n\n <div\n class=\"datagrid-action-overflow\"\n [id]=\"popoverId\"\n [attr.aria-hidden]=\"!open\"\n [attr.id]=\"popoverId\"\n clrKeyFocus\n cdkTrapFocus\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 @Input('clrDgActionOverflowButtonLabel') buttonLabel: string;\n\n @Output('clrDgActionOverflowOpenChange') openChange = new EventEmitter<boolean>(false);\n\n popoverId = uniqueIdFactory();\n\n smartPosition: ClrPopoverPosition = {\n axis: ClrAxis.HORIZONTAL,\n side: ClrSide.AFTER,\n anchor: ClrAlignment.CENTER,\n content: ClrAlignment.CENTER,\n };\n\n @ViewChild(ClrKeyFocus) private readonly keyFocus: ClrKeyFocus;\n\n private _open = false;\n private subscriptions: Subscription[] = [];\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 ) {\n this.rowActionService.register();\n this.subscriptions.push(\n this.smartToggleService.openChange.subscribe(openState => {\n this.open = openState;\n }),\n this.smartToggleService.popoverVisible.subscribe(visible => {\n if (visible) {\n this.initializeFocus();\n }\n })\n );\n this.popoverId = 'clr-action-menu' + clrDgActionId++;\n }\n\n @Input('clrDgActionOverflowOpen')\n get open() {\n return this._open;\n }\n 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 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 initializeFocus(): void {\n if (isPlatformBrowser(this.platformId)) {\n const buttons = Array.from(document.querySelectorAll<HTMLButtonElement>('button.action-item'));\n\n if (buttons.length) {\n this.keyFocus.current = 0;\n this.keyFocus.focusableItems = buttons;\n\n this.keyFocus.focusCurrent();\n }\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 file prevents an import cycle.\n */\n\nimport { TrackByFunction } from '@angular/core';\n\nimport { ColumnState } from './interfaces/column-state.interface';\n\nexport const columnToggleTrackByFn: TrackByFunction<ColumnState> = index => index;\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, Optional, TrackByFunction } from '@angular/core';\n\nimport { columnToggleTrackByFn } from './datagrid-column-toggle-trackby';\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 /**\n * This is a workaround to prevent the items `trackBy` function from\n * being replaced when the \"manage columns\" button is clicked. This is\n * not a complete solution. If there is another `ngForTrackBy` function\n * within the datagrid in application code, it could sill replace the\n * items `trackBy` function whether it is the row iterator or not.\n */\n if (value === columnToggleTrackByFn) {\n return;\n }\n\n if (this._items) {\n this._items.iteratorTrackBy = value;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, Output } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { DatagridColumnChanges } from './enums/column-changes.enum';\nimport { ColumnState } from './interfaces/column-state.interface';\nimport { ColumnsService } from './providers/columns.service';\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 {{ commonStrings.keys.selectAll }}\n </button>\n `,\n})\nexport class ClrDatagridColumnToggleButton {\n private allSelected: Subject<boolean> = new EventEmitter();\n\n constructor(public commonStrings: ClrCommonStringsService, private columnsService: ColumnsService) {}\n\n @Output('clrAllSelected')\n get clrAllSelected(): Observable<boolean> {\n return this.allSelected.asObservable();\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 private hideableColumns(): BehaviorSubject<ColumnState>[] {\n return this.columnsService.columns.filter(column => column.value.hideable);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, OnDestroy, ViewChild } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { uniqueIdFactory } from '../../utils/id-generator/id-generator.service';\nimport { ClrAlignment } from '../../utils/popover/enums/alignment.enum';\nimport { ClrAxis } from '../../utils/popover/enums/axis.enum';\nimport { ClrSide } from '../../utils/popover/enums/side.enum';\nimport { ClrPopoverPosition } from '../../utils/popover/interfaces/popover-position.interface';\nimport { ClrPopoverHostDirective } from '../../utils/popover/popover-host.directive';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { columnToggleTrackByFn } from './datagrid-column-toggle-trackby';\nimport { DatagridColumnChanges } from './enums/column-changes.enum';\nimport { ColumnState } from './interfaces/column-state.interface';\nimport { ColumnsService } from './providers/columns.service';\n\n@Component({\n selector: 'clr-dg-column-toggle',\n template: `\n <button\n role=\"button\"\n type=\"button\"\n class=\"btn btn-sm column-toggle--action\"\n clrPopoverAnchor\n clrPopoverOpenCloseButton\n [attr.aria-controls]=\"popoverId\"\n [attr.aria-owns]=\"popoverId\"\n [attr.aria-expanded]=\"openState\"\n >\n {{ commonStrings.keys.pickColumns }}\n </button>\n <div\n class=\"column-switch\"\n role=\"dialog\"\n [attr.aria-label]=\"commonStrings.keys.showColumnsMenuDescription\"\n [id]=\"popoverId\"\n cdkTrapFocus\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 <h2>{{ commonStrings.keys.showColumns }}</h2>\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 >\n <cds-icon shape=\"window-close\" aria-hidden=\"true\" [attr.title]=\"commonStrings.keys.close\"></cds-icon>\n <span class=\"clr-sr-only\">{{ commonStrings.keys.close }}</span>\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 <clr-dg-column-toggle-button (clrAllSelected)=\"allColumnsSelected()\"></clr-dg-column-toggle-button>\n </div>\n </div>\n `,\n host: { '[class.column-switch-wrapper]': 'true', '[class.active]': 'openState' },\n hostDirectives: [ClrPopoverHostDirective],\n})\nexport class ClrDatagridColumnToggle implements OnDestroy {\n popoverId = uniqueIdFactory();\n openState: boolean;\n\n // Smart Popover\n smartPosition: ClrPopoverPosition = {\n axis: ClrAxis.VERTICAL,\n side: ClrSide.BEFORE,\n anchor: ClrAlignment.START,\n content: ClrAlignment.START,\n };\n\n // Without tracking the checkboxes get rerendered on model update, which leads\n // to loss of focus after checkbox toggle.\n readonly trackByFn = columnToggleTrackByFn;\n\n private _allColumnsVisible: boolean;\n private subscription: Subscription;\n\n @ViewChild('allSelected', { read: ElementRef }) private allSelectedElement: ElementRef<HTMLElement>;\n\n constructor(\n public commonStrings: ClrCommonStringsService,\n private columnsService: ColumnsService,\n popoverToggleService: ClrPopoverToggleService\n ) {\n this.subscription = popoverToggleService.openChange.subscribe(change => (this.openState = change));\n }\n\n get allColumnsVisible(): boolean {\n return this._allColumnsVisible;\n }\n set allColumnsVisible(value: boolean) {\n this._allColumnsVisible = value;\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 ngOnDestroy() {\n this.subscription.unsubscribe();\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","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { DetailService } from './providers/detail.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\" cdkFocusInitial tabindex=\"-1\" [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 shape=\"times\"></cds-icon>\n </button>\n </div>\n `,\n})\nexport class ClrDatagridDetailHeader {\n constructor(public detailService: DetailService, public commonStrings: ClrCommonStringsService) {}\n\n get titleId() {\n return `${this.detailService.id}-title`;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 } from '@angular/core';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrDatagridDetailHeader } from './datagrid-detail-header';\nimport { DetailService } from './providers/detail.service';\n\n@Component({\n selector: 'clr-dg-detail',\n host: {\n '[class.datagrid-detail-pane]': 'true',\n },\n // We put the *ngIf on the cdkTrapFocus 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 cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\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) header: ClrDatagridDetailHeader;\n\n constructor(public detailService: DetailService, public commonStrings: ClrCommonStringsService) {}\n\n close(): void {\n this.detailService.close();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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-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-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\n\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({\n selector: '[clrIfExpanded]',\n})\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrCommonStringsService } from '../../utils';\nimport { SelectionType } from './enums/selection-type';\nimport { ColumnsService } from './providers/columns.service';\nimport { DetailService } from './providers/detail.service';\nimport { Selection } from './providers/selection';\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 <span class=\"clr-sr-only\">{{ commonStrings.keys.selectedRows }}</span>\n </clr-checkbox-wrapper>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!detailService.isOpen\">\n <clr-dg-column-toggle *ngIf=\"hasHideableColumns\"></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 /* reference to the enum so that template can access */\n SELECTION_TYPE = SelectionType;\n\n constructor(\n public selection: Selection<T>,\n public detailService: DetailService,\n private columnsService: ColumnsService,\n public commonStrings: ClrCommonStringsService\n ) {}\n\n get hasHideableColumns(): boolean {\n return this.columnsService.hasHideableColumns;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\n\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { DatagridColumnChanges } from './enums/column-changes.enum';\nimport { ColumnState } from './interfaces/column-state.interface';\nimport { COLUMN_STATE } from './providers/column-state.provider';\nimport { ColumnsService } from './providers/columns.service';\n\n@Directive({\n selector: '[clrDgHideableColumn]',\n})\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 @Output('clrDgHiddenChange') hiddenChange = new EventEmitter<boolean>();\n\n /**\n *\n * @description\n * Used to initialize the column with either hidden or visible state.\n *\n */\n private _hidden: boolean;\n\n private subscriptions: Subscription[] = [];\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 /**\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 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { DetailService } from './providers/detail.service';\n\n@Directive({\n selector: '[clrIfDetail]',\n})\nexport class ClrIfDetail implements OnInit, OnDestroy {\n @Output('clrIfDetailChange') stateChange = new EventEmitter<any>(null);\n\n private subscriptions: Subscription[] = [];\n private skip = false; // This keeps us from resetting the input and calling the toggle twice\n private embeddedViewRef: EmbeddedViewRef<any>;\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 @Input('clrIfDetail')\n set state(model: any) {\n if (!this.skip) {\n this.detailService.toggle(model);\n }\n this.skip = false;\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 ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n private togglePanel(showPanel: boolean) {\n let stateChangeParams = null;\n\n if (showPanel === true) {\n const embeddedViewContext = { $implicit: this.detailService.state };\n\n if (this.embeddedViewRef) {\n this.embeddedViewRef.context = embeddedViewContext;\n } else {\n this.embeddedViewRef = this.viewContainer.createEmbeddedView(this.templateRef, embeddedViewContext);\n }\n\n this.skip = true;\n stateChangeParams = this.detailService.state;\n } else {\n this.viewContainer.clear();\n this.embeddedViewRef = null;\n }\n\n this.stateChange.emit(stateChangeParams);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { uniqueIdFactory } from '../../utils/id-generator/id-generator.service';\nimport { Page } from './providers/page';\n\n@Component({\n selector: 'clr-dg-page-size',\n template: `\n <label [for]=\"pageSizeOptionsId\"><ng-content></ng-content></label>\n <div class=\"clr-select-wrapper\">\n <select [id]=\"pageSizeOptionsId\" [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 @Input('clrPageSizeOptionsId') pageSizeOptionsId = uniqueIdFactory();\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrDatagridPageSize } from './datagrid-page-size';\nimport { DetailService } from './providers/detail.service';\nimport { Page } from './providers/page';\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 <span class=\"clr-sr-only\">{{ commonStrings.keys.firstPage }}</span>\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 <span class=\"clr-sr-only\">{{ commonStrings.keys.previousPage }}</span>\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)=\"verifyCurrentPage($event)\"\n [attr.aria-label]=\"commonStrings.keys.currentPage\"\n />\n <ng-template #readOnly>\n <span>{{ page.current }}</span>\n </ng-template>\n\n &nbsp;/&nbsp;<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 <span class=\"clr-sr-only\">{{ commonStrings.keys.nextPage }}</span>\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 <span class=\"clr-sr-only\">{{ commonStrings.keys.lastPage }}</span>\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 <span class=\"clr-sr-only\">{{ commonStrings.keys.previousPage }}</span>\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 <span class=\"clr-sr-only\">{{ commonStrings.keys.nextPage }}</span>\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 @Input('clrDgPageInputDisabled') disableCurrentPageInput: boolean;\n\n @Output('clrDgPageChange') currentChanged = new EventEmitter<number>(false);\n\n @ContentChild(ClrDatagridPageSize) _pageSizeComponent: ClrDatagridPageSize;\n\n @ViewChild('currentPageInput') currentPageInputRef: ElementRef;\n\n /**\n * Subscription to the page service changes\n */\n private _pageSubscription: Subscription;\n\n constructor(public page: Page, public commonStrings: ClrCommonStringsService, public detailService: DetailService) {\n this.page.activated = true;\n }\n\n /**\n * Page size\n */\n @Input('clrDgPageSize')\n get pageSize(): number {\n return this.page.size;\n }\n set pageSize(size: number) {\n // todo(v16): Remove this check. The property type used to be `string | number`. I kept this check to maintain the no-op if you pass a string.\n if (typeof size === 'number') {\n this.page.size = size;\n }\n }\n\n /**\n * Total items (needed to guess the last page)\n */\n @Input('clrDgTotalItems')\n get totalItems(): number {\n return this.page.totalItems;\n }\n set totalItems(total: number) {\n // todo(v16): Remove this check. The property type used to be `string | number`. I kept this check to maintain the no-op if you pass a string.\n if (typeof total === 'number') {\n this.page.totalItems = total;\n }\n }\n\n /**\n * Last page\n */\n @Input('clrDgLastPage')\n get lastPage(): number {\n return this.page.last;\n }\n set lastPage(last: number) {\n // todo(v16): Remove this check. The property type used to be `string | number`. I kept this check to maintain the no-op if you pass a string.\n if (typeof last === 'number') {\n this.page.last = last;\n }\n }\n\n /**\n * Current page\n */\n @Input('clrDgPage')\n get currentPage(): number {\n return this.page.current;\n }\n set currentPage(page: number) {\n // todo(v16): Remove this check. The property type used to be `string | number`. I kept this check to maintain the no-op if you pass a string.\n if (typeof page === 'number') {\n this.page.current = page;\n }\n }\n\n /**\n * Index of the first item displayed on the current page, starting at 0, -1 if none displayed\n */\n 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 get lastItem(): number {\n return this.page.lastItem;\n }\n\n /**\n * Conditionally adds page numbers before and after the current page\n */\n 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 * 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 ngOnDestroy() {\n this.page.resetPageSize(true);\n if (this._pageSubscription) {\n this._pageSubscription.unsubscribe();\n }\n }\n\n /**\n * Moves to the previous page if it exists\n */\n previous() {\n this.page.previous();\n }\n\n /**\n * Moves to the next page if it exists\n */\n next() {\n this.page.next();\n }\n\n verifyCurrentPage(event: any): void {\n const parsed = parseInt(event.target.value, 10);\n if (parsed !== this.page.current) {\n event.target.value = this.page.current;\n }\n }\n\n /**\n * We only update the pagination's current page on enter.\n */\n 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, OnDestroy, QueryList } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrDatagridCell } from './datagrid-cell';\nimport { DatagridIfExpandService } from './datagrid-if-expanded.service';\nimport { SelectionType } from './enums/selection-type';\nimport { ExpandableRowsCount } from './providers/global-expandable-rows';\nimport { RowActionService } from './providers/row-action-service';\nimport { Selection } from './providers/selection';\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 }}\n {{ commonStrings.keys.datagridExpandableRowsHelperText }}\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 role: 'gridcell',\n },\n})\nexport class ClrDatagridRowDetail implements AfterContentInit, OnDestroy {\n @Input('clrRowDetailBeginningAriaText') _beginningOfExpandableContentAriaText: string;\n @Input('clrRowDetailEndAriaText') _endOfExpandableContentAriaText: string;\n\n replacedRow = false;\n\n /* reference to the enum so that template can access it */\n SELECTION_TYPE = SelectionType;\n\n @ContentChildren(ClrDatagridCell) cells: QueryList<ClrDatagridCell>;\n\n private subscriptions: Subscription[] = [];\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 @Input('clrDgReplace')\n set replace(value: boolean) {\n this.expand.setReplace(!!value);\n }\n\n get beginningOfExpandableContentAriaText() {\n return (\n this._beginningOfExpandableContentAriaText ||\n `${this.commonStrings.keys.datagridExpandableBeginningOf} \n ${this.commonStrings.keys.datagridExpandableRowContent}`\n );\n }\n\n get endOfExpandableContentAriaText() {\n return (\n this._endOfExpandableContentAriaText ||\n `${this.commonStrings.keys.datagridExpandableEndOf} \n ${this.commonStrings.keys.datagridExpandableRowContent}`\n );\n }\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","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, Renderer2 } from '@angular/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { ALL_COLUMN_CHANGES, DatagridColumnChanges } from '../enums/column-changes.enum';\nimport { DatagridRenderStep } from '../enums/render-step.enum';\nimport { ColumnState } from '../interfaces/column-state.interface';\nimport { HIDDEN_COLUMN_CLASS, STRICT_WIDTH_CLASS } from './constants';\nimport { DatagridRenderOrganizer } from './render-organizer';\n\n@Directive({\n selector: 'clr-dg-cell',\n})\nexport class DatagridCellRenderer implements OnDestroy {\n private runAllChanges: DatagridColumnChanges[];\n private stateSubscription: Subscription;\n private subscriptions: Subscription[] = [];\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 // @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 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, EventEmitter, Inject, OnDestroy, Output, Renderer2 } from '@angular/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { DomAdapter } from '../../../utils/dom-adapter/dom-adapter';\nimport { DatagridColumnChanges } from '../enums/column-changes.enum';\nimport { DatagridRenderStep } from '../enums/render-step.enum';\nimport { ColumnState } from '../interfaces/column-state.interface';\nimport { ColumnResizerService } from '../providers/column-resizer.service';\nimport { COLUMN_STATE, COLUMN_STATE_PROVIDER } from '../providers/column-state.provider';\nimport { ColumnsService } from '../providers/columns.service';\nimport { HIDDEN_COLUMN_CLASS, STRICT_WIDTH_CLASS } from './constants';\nimport { DatagridRenderOrganizer } from './render-organizer';\n\n@Directive({\n selector: 'clr-dg-column',\n providers: [ColumnResizerService, COLUMN_STATE_PROVIDER],\n})\nexport class DatagridHeaderRenderer implements OnDestroy {\n @Output('clrDgColumnResize') resizeEmitter = new EventEmitter<number>();\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 private subscriptions: Subscription[] = [];\n\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 ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n getColumnWidthState(): Partial<ColumnState> {\n const strictWidth = this.detectStrictWidth();\n return {\n width: this.computeWidth(strictWidth),\n strictWidth: strictWidth,\n };\n }\n\n setColumnState(index: number) {\n this.columnsService.columns[index] = this.columnState;\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 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\n\nimport { DomAdapter } from '../../../utils/dom-adapter/dom-adapter';\n\n@Injectable()\nexport class NoopDomAdapter implements DomAdapter {\n userDefinedWidth(_element: any): number {\n return 0;\n }\n\n scrollBarWidth(_element: any) {\n return 0;\n }\n\n scrollWidth(_element: any) {\n return 0;\n }\n\n computedHeight(_element: any): number {\n return 0;\n }\n\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 minWidth(_element: any): number {\n return 0;\n }\n\n focus(_element: any): void {\n // Do nothing\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, ContentChildren, Directive, OnDestroy, QueryList } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ColumnsService } from '../providers/columns.service';\nimport { DatagridCellRenderer } from './cell-renderer';\n\n@Directive({\n selector: 'clr-dg-row, clr-dg-row-detail',\n})\nexport class DatagridRowRenderer implements AfterContentInit, OnDestroy {\n @ContentChildren(DatagridCellRenderer) private cells: QueryList<DatagridCellRenderer>;\n\n private subscriptions: Subscription[] = [];\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 ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 AfterContentInit,\n AfterViewChecked,\n AfterViewInit,\n ContentChildren,\n Directive,\n ElementRef,\n NgZone,\n OnDestroy,\n PLATFORM_ID,\n QueryList,\n Renderer2,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { DomAdapter } from '../../../utils/dom-adapter/dom-adapter';\nimport { DatagridColumnChanges } from '../enums/column-changes.enum';\nimport { DatagridRenderStep } from '../enums/render-step.enum';\nimport { ColumnStateDiff } from '../interfaces/column-state.interface';\nimport { ColumnsService } from '../providers/columns.service';\nimport { DetailService } from '../providers/detail.service';\nimport { Items } from '../providers/items';\nimport { Page } from '../providers/page';\nimport { TableSizeService } from '../providers/table-size.service';\nimport { DatagridHeaderRenderer } from './header-renderer';\nimport { NoopDomAdapter } from './noop-dom-adapter';\nimport { DatagridRenderOrganizer } from './render-organizer';\nimport { DatagridRowRenderer } from './row-renderer';\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 @ContentChildren(DatagridHeaderRenderer) private headers: QueryList<DatagridHeaderRenderer>;\n @ContentChildren(DatagridRowRenderer, { descendants: true }) private rows: QueryList<DatagridRowRenderer>; // if expandable row is expanded initially, query its cells too.\n\n private _heightSet = false;\n private shouldStabilizeColumns = true;\n private subscriptions: Subscription[] = [];\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 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 private ngZone: NgZone\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 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 this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this.computeDatagridHeight();\n });\n });\n }\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n 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 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 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 /**\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 /**\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 * 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\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\nimport { ClrFormsModule } from '../../forms/forms.module';\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrSpinnerModule } from '../../progress/spinner/spinner.module';\nimport { ClrExpandableAnimationModule } from '../../utils/animations/expandable-animation/expandable-animation.module';\nimport { CdkDragModule } from '../../utils/cdk/cdk-drag.module';\nimport { CdkTrapFocusModule } from '../../utils/cdk/cdk-trap-focus.module';\nimport { ClrConditionalModule } from '../../utils/conditional/conditional.module';\nimport { ClrKeyFocusModule } from '../../utils/focus/key-focus/key-focus.module';\nimport { ClrLoadingModule } from '../../utils/loading/loading.module';\nimport { ClrOutsideClickModule } from '../../utils/outside-click/outside-click.module';\nimport { ClrPopoverModuleNext } from '../../utils/popover/popover.module';\nimport { DatagridNumericFilter } from './built-in/filters/datagrid-numeric-filter';\nimport { DatagridStringFilter } from './built-in/filters/datagrid-string-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 { ClrDatagridDetail } from './datagrid-detail';\nimport { ClrDatagridDetailBody } from './datagrid-detail-body';\nimport { ClrDatagridDetailHeader } from './datagrid-detail-header';\nimport { DatagridDetailRegisterer } from './datagrid-detail-registerer';\nimport { ClrDatagridFilter } from './datagrid-filter';\nimport { ClrDatagridFooter } from './datagrid-footer';\nimport { ClrDatagridHideableColumn } from './datagrid-hideable-column';\nimport { ClrIfDetail } from './datagrid-if-detail';\nimport { ClrDatagridItems } from './datagrid-items';\nimport { ClrDatagridItemsTrackBy } from './datagrid-items-trackby';\nimport { ClrDatagridPageSize } from './datagrid-page-size';\nimport { ClrDatagridPagination } from './datagrid-pagination';\nimport { ClrDatagridPlaceholder } from './datagrid-placeholder';\nimport { ClrDatagridRow } from './datagrid-row';\nimport { ClrDatagridRowDetail } from './datagrid-row-detail';\nimport { ClrDatagridSelectionCellDirective } from './datagrid-selection-cell.directive';\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';\n\nexport const CLR_DATAGRID_DIRECTIVES: Type<any>[] = [\n // Core\n ClrDatagrid,\n ClrDatagridActionBar,\n ClrDatagridActionOverflow,\n ClrDatagridCell,\n ClrDatagridColumn,\n ClrDatagridColumnSeparator,\n ClrDatagridDetail,\n ClrDatagridDetailBody,\n ClrDatagridDetailHeader,\n ClrDatagridFilter,\n ClrDatagridFooter,\n ClrDatagridHideableColumn,\n ClrDatagridItems,\n ClrDatagridItemsTrackBy,\n ClrDatagridPageSize,\n ClrDatagridPagination,\n ClrDatagridPlaceholder,\n ClrDatagridRow,\n ClrDatagridRowDetail,\n ClrDatagridSelectionCellDirective,\n ClrIfDetail,\n DatagridDetailRegisterer,\n WrappedCell,\n WrappedColumn,\n WrappedRow,\n\n // Renderers\n DatagridCellRenderer,\n DatagridHeaderRenderer,\n DatagridMainRenderer,\n DatagridRowRenderer,\n\n // Chocolate\n ActionableOompaLoompa,\n DatagridWillyWonka,\n ExpandableOompaLoompa,\n\n // Built-in shortcuts\n DatagridNumericFilter,\n DatagridStringFilter,\n];\n\nconst CLR_DATAGRID_INTERNAL_DIRECTIVES = [ClrDatagridColumnToggle, ClrDatagridColumnToggleButton];\n\n@NgModule({\n imports: [\n CommonModule,\n CdkDragModule,\n CdkTrapFocusModule,\n ClrIconModule,\n ClrFormsModule,\n FormsModule,\n ClrLoadingModule,\n ClrConditionalModule,\n ClrOutsideClickModule,\n ClrExpandableAnimationModule,\n ClrSpinnerModule,\n ClrPopoverModuleNext,\n ClrKeyFocusModule,\n ],\n declarations: [CLR_DATAGRID_DIRECTIVES, CLR_DATAGRID_INTERNAL_DIRECTIVES],\n exports: [CLR_DATAGRID_DIRECTIVES],\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, Directive, Input, OnInit } from '@angular/core';\n\nimport { uniqueIdFactory } from '../../utils/id-generator/id-generator.service';\n\n@Directive({\n selector: 'clr-stack-content',\n})\nexport class ClrStackViewCustomTags {\n // No behavior\n // The only purpose is to \"declare\" the tag in Angular\n}\n\n@Component({\n selector: 'clr-stack-label',\n template: '<ng-content></ng-content>',\n host: {\n '[attr.id]': 'id',\n },\n})\nexport class ClrStackViewLabel implements OnInit {\n private _generatedId: string = null;\n\n private _id: string = null;\n\n @Input()\n get id() {\n return this._id;\n }\n set id(val: string) {\n if (typeof val === 'string' && val !== '') {\n this._id = val;\n } else {\n this._id = this._generatedId + '';\n }\n }\n\n ngOnInit() {\n this._generatedId = 'clr-stack-label-' + uniqueIdFactory();\n\n if (!this.id) {\n this._id = this._generatedId + '';\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 ContentChild,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Optional,\n Output,\n SkipSelf,\n} from '@angular/core';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { uniqueIdFactory } from '../../utils/id-generator/id-generator.service';\nimport { ClrStackViewLabel } from './stack-view-custom-tags';\n\n@Component({\n selector: 'clr-stack-block',\n template: `\n <!-- The 'preventDefault' for the space keydown event prevents the page\n from scrolling when a stack block is toggled via the space key. -->\n <div\n class=\"stack-block-label\"\n (click)=\"toggleExpand($event)\"\n (keyup.enter)=\"toggleExpand($event)\"\n (keyup.space)=\"toggleExpand($event)\"\n (keydown.space)=\"preventDefaultIfNotInputEvent($event)\"\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 >\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\">\n <div\n [style.height]=\"expanded ? 'auto' : 0\"\n role=\"region\"\n *ngIf=\"expanded\"\n [attr.id]=\"getStackChildrenId()\"\n [attr.aria-labelledby]=\"labelledById\"\n >\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: {\n '[class.stack-block]': 'true',\n '[attr.role]': '\"heading\"',\n '[attr.aria-level]': 'headingLevel',\n },\n})\nexport class ClrStackBlock implements OnInit {\n @Input('clrSbExpanded') @HostBinding('class.stack-block-expanded') expanded = false;\n @Input('clrSbExpandable') @HostBinding('class.stack-block-expandable') expandable = false;\n\n /**\n * Depth of the stack view starting from 1 for first level\n */\n @Input('clrStackViewLevel') ariaLevel: number;\n\n @Output('clrSbExpandedChange') expandedChange = new EventEmitter<boolean>(false);\n\n @ContentChild(ClrStackViewLabel) stackBlockTitle: any;\n\n focused = false;\n uniqueId = uniqueIdFactory();\n\n private _changedChildren = 0;\n private _fullyInitialized = false;\n private _changed = false;\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 public commonStrings: ClrCommonStringsService\n ) {\n if (parent) {\n parent.addChild();\n }\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 @HostBinding('class.stack-block-changed')\n get getChangedValue(): boolean {\n return this._changed || (this._changedChildren > 0 && !this.expanded);\n }\n\n @HostBinding('class.on-focus')\n get onStackLabelFocus(): boolean {\n return this.expandable && !this.expanded && this.focused;\n }\n\n get labelledById() {\n return this.stackBlockTitle.id;\n }\n\n get headingLevel() {\n if (this.ariaLevel) {\n return this.ariaLevel + '';\n }\n\n return this.parent ? '4' : '3';\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 get ariaExpanded(): string {\n if (!this.expandable) {\n return null;\n } else {\n return this.expanded ? 'true' : 'false';\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(event?: Event): void {\n if (eventIsInputEvent(event)) {\n return;\n }\n\n if (this.expandable) {\n this.expanded = !this.expanded;\n this.expandedChange.emit(this.expanded);\n }\n }\n\n getStackChildrenId() {\n return this.expanded ? `clr-stack-children-${this.uniqueId}` : null;\n }\n\n protected preventDefaultIfNotInputEvent(event: Event) {\n if (eventIsInputEvent(event)) {\n return;\n }\n\n event.preventDefault();\n }\n}\n\nfunction eventIsInputEvent(event?: Event) {\n const targetElement = event?.target as HTMLElement;\n\n return targetElement?.tagName === 'INPUT';\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { uniqueIdFactory } 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 uniqueId = uniqueIdFactory();\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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-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 * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrStackView } from './stack-view';\n\n@Component({\n selector: 'clr-stack-header',\n template: `\n <div class=\"stack-header\">\n <h4 class=\"stack-title\"><ng-content></ng-content></h4>\n\n <span class=\"stack-actions\">\n <ng-content select=\".stack-action\"></ng-content>\n </span>\n </div>\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\nimport { angleIcon, ClarityIcons } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrExpandableAnimationModule } from '../../utils/animations/expandable-animation/expandable-animation.module';\nimport { ClrStackBlock } from './stack-block';\nimport { ClrStackContentInput } from './stack-content-input';\nimport { ClrStackHeader } from './stack-header';\nimport { ClrStackView } from './stack-view';\nimport { ClrStackViewCustomTags, ClrStackViewLabel } from './stack-view-custom-tags';\n\nexport const CLR_STACK_VIEW_DIRECTIVES: Type<any>[] = [\n ClrStackView,\n ClrStackHeader,\n ClrStackBlock,\n ClrStackContentInput,\n ClrStackViewLabel,\n ClrStackViewCustomTags,\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, SkipSelf, TemplateRef } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { RecursiveTreeNodeModel } from './models/recursive-tree-node.model';\nimport { ClrRecursiveForOfContext } from './recursive-for-of';\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 = new Subject<void>();\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { RecursiveTreeNodeModel } from './models/recursive-tree-node.model';\nimport { TreeNodeModel } from './models/tree-node.model';\nimport { ClrRecursiveForOfContext } from './recursive-for-of';\nimport { TreeFeaturesService } from './tree-features.service';\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 // 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 subscription: Subscription;\n\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 getContext(node: TreeNodeModel<T>): ClrRecursiveForOfContext<T> {\n return {\n $implicit: node.model,\n clrModel: node,\n };\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { BehaviorSubject } from 'rxjs';\n\nimport { ClrSelectedState } from './selected-state.enum';\n\nexport abstract class TreeNodeModel<T> {\n nodeId: string;\n expanded: boolean;\n model: T | null;\n textContent: string;\n loading$ = new BehaviorSubject(false);\n selected = new BehaviorSubject(ClrSelectedState.UNSELECTED);\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\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 get loading() {\n return this._loading;\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 /*\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 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 * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { TreeFeaturesService } from '../tree-features.service';\nimport { AsyncArray, isPromise } from './async-array';\nimport { TreeNodeModel } from './tree-node.model';\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 parent: RecursiveTreeNodeModel<T> | null;\n\n private subscription: Subscription;\n private childrenFetched = false;\n private _children: RecursiveTreeNodeModel<T>[] = [];\n\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 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 override destroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n super.destroy();\n }\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","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { AsyncArray } from './models/async-array';\nimport { RecursiveTreeNodeModel } from './models/recursive-tree-node.model';\nimport { TreeNodeModel } from './models/tree-node.model';\nimport { TreeFeaturesService } from './tree-features.service';\n\nexport interface ClrRecursiveForOfContext<T> {\n $implicit: T;\n clrModel: TreeNodeModel<T>;\n}\n\n@Directive({\n selector: '[clrRecursiveFor][clrRecursiveForOf]',\n})\nexport class ClrRecursiveForOf<T> implements OnChanges, OnDestroy {\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 constructor(\n private template: TemplateRef<ClrRecursiveForOfContext<T>>,\n private featuresService: TreeFeaturesService<T>,\n private cdr: ChangeDetectorRef\n ) {}\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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\nimport { TreeNodeModel } from './models/tree-node.model';\n\n@Injectable()\nexport class TreeFocusManagerService<T> {\n rootNodeModels: TreeNodeModel<T>[];\n\n private focusedNodeId: string;\n private _focusRequest = new Subject<string>();\n private _focusChange = new Subject<string>();\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 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 focusNodeStartsWith(searchString: string, model: TreeNodeModel<T>): void {\n this.focusNode(this.findClosestNodeStartsWith(searchString, model));\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 private findDescendentNodeStartsWith(searchString: string, model: TreeNodeModel<T>): TreeNodeModel<T> {\n if (model.expanded && model.children.length > 0) {\n for (const childModel of model.children) {\n const found = this.findNodeStartsWith(searchString, childModel);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n private findSiblingNodeStartsWith(searchString: string, model: TreeNodeModel<T>): TreeNodeModel<T> {\n const siblings = this.findSiblings(model);\n const selfIndex = siblings.indexOf(model);\n\n // Look from sibling nodes\n for (let i = selfIndex + 1; i < siblings.length; i++) {\n const siblingModel = siblings[i];\n const found = this.findNodeStartsWith(searchString, siblingModel);\n if (found) {\n return found;\n }\n }\n return null;\n }\n\n private findRootNodeStartsWith(searchString: string, model: TreeNodeModel<T>): TreeNodeModel<T> {\n for (const rootModel of this.rootNodeModels) {\n // Don't look from a parent yet\n if (model.parent && model.parent === rootModel) {\n continue;\n }\n\n const found = this.findNodeStartsWith(searchString, rootModel);\n if (found) {\n return found;\n }\n }\n return null;\n }\n\n private findNodeStartsWith(searchString: string, model: TreeNodeModel<T>): TreeNodeModel<T> {\n if (!model) {\n return null;\n }\n\n if (model.textContent.startsWith(searchString)) {\n return model;\n }\n\n return this.findDescendentNodeStartsWith(searchString, model);\n }\n\n private findClosestNodeStartsWith(searchString: string, model: TreeNodeModel<T>): TreeNodeModel<T> {\n if (!model) {\n return null;\n }\n\n const foundFromDescendents = this.findDescendentNodeStartsWith(searchString, model);\n\n if (foundFromDescendents) {\n return foundFromDescendents;\n }\n\n const foundFromSiblings = this.findSiblingNodeStartsWith(searchString, model);\n\n if (foundFromSiblings) {\n return foundFromSiblings;\n }\n\n const foundFromRootNodes = this.findRootNodeStartsWith(searchString, model);\n\n if (foundFromRootNodes) {\n return foundFromRootNodes;\n }\n // Now look from its own direct parent\n return this.findNodeStartsWith(searchString, model.parent);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 // Override for a more precise type\n parent: DeclarativeTreeNodeModel<T> | null;\n children: DeclarativeTreeNodeModel<T>[];\n\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 destroy() {\n if (this.parent) {\n this.parent._removeChild(this);\n }\n super.destroy();\n }\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","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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<HTMLElement>) {}\n\n get active() {\n return this.el.nativeElement.classList.contains('active');\n }\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, state, style, transition, trigger } from '@angular/animations';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\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 { Subject, Subscription } from 'rxjs';\nimport { debounceTime, filter } from 'rxjs/operators';\n\nimport { IfExpandService } from '../../utils/conditional/if-expanded.service';\nimport { Keys } from '../../utils/enums/keys.enum';\nimport { isKeyEitherLetterOrNumber, normalizeKey, preventArrowKeyScroll } from '../../utils/focus/key-focus/util';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { uniqueIdFactory } 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 { TREE_FEATURES_PROVIDER, TreeFeaturesService } 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// If the user types multiple keys without allowing 200ms to pass between them,\n// then those keys are sent together in one request.\nconst TREE_TYPE_AHEAD_TIMEOUT = 200;\n\n@Component({\n selector: 'clr-tree-node',\n templateUrl: './tree-node.html',\n providers: [TREE_FEATURES_PROVIDER, IfExpandService, { provide: LoadingListener, useExisting: IfExpandService }],\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 '[class.clr-tree-node]': 'true',\n },\n})\nexport class ClrTreeNode<T> implements OnInit, AfterContentInit, AfterViewInit, OnDestroy {\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 @Output('clrSelectedChange') selectedChange = new EventEmitter<ClrSelectedState>(false);\n @Output('clrExpandedChange') expandedChange = new EventEmitter<boolean>();\n\n STATES = ClrSelectedState;\n isModelLoading = false;\n nodeId = uniqueIdFactory();\n contentContainerTabindex = -1;\n _model: TreeNodeModel<T>;\n\n private skipEmitChange = false;\n private typeAheadKeyBuffer = '';\n private typeAheadKeyEvent = new Subject<string>();\n private subscriptions: Subscription[] = [];\n\n @ViewChild('contentContainer', { read: ElementRef, static: true }) private contentContainer: ElementRef;\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 }) private treeNodeLinkList: QueryList<ClrTreeNodeLink>;\n\n constructor(\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 private elementRef: ElementRef<HTMLElement>,\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 @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 // 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 @Input('clrForTypeAhead')\n set clrForTypeAhead(value: string) {\n this._model.textContent = trimAndLowerCase(value || this.elementRef.nativeElement.textContent);\n }\n\n get ariaSelected(): boolean {\n if (this.isSelectable()) {\n return this._model.selected.value === ClrSelectedState.SELECTED;\n } else if (this.treeNodeLink?.active) {\n return true;\n } else {\n return null;\n }\n }\n\n get treeNodeLink() {\n return this.treeNodeLinkList && this.treeNodeLinkList.first;\n }\n\n private get isParent() {\n return this._model.children && this._model.children.length > 0;\n }\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 ngAfterContentInit() {\n this.subscriptions.push(\n this.typeAheadKeyEvent.pipe(debounceTime(TREE_TYPE_AHEAD_TIMEOUT)).subscribe((bufferedKeys: string) => {\n this.focusManager.focusNodeStartsWith(bufferedKeys, this._model);\n // reset once bufferedKeys are used\n this.typeAheadKeyBuffer = '';\n })\n );\n }\n\n ngAfterViewInit() {\n if (!this._model.textContent) {\n this._model.textContent = trimAndLowerCase(this.elementRef.nativeElement.textContent);\n }\n }\n\n ngOnDestroy() {\n this._model.destroy();\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n isExpandable() {\n if (typeof this.expandable !== 'undefined') {\n return this.expandable;\n }\n return !!this.expandService.expandable || this.isParent;\n }\n\n isSelectable() {\n return this.featuresService.selectable;\n }\n\n focusTreeNode(): void {\n const containerEl = this.contentContainer.nativeElement;\n if (isPlatformBrowser(this.platformId) && document.activeElement !== containerEl) {\n this.setTabIndex(0);\n containerEl.focus();\n containerEl.scrollIntoView({ block: 'nearest', inline: 'nearest' });\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 (normalizeKey(event.key)) {\n case Keys.ArrowUp:\n this.focusManager.focusNodeAbove(this._model);\n break;\n case Keys.ArrowDown:\n this.focusManager.focusNodeBelow(this._model);\n break;\n case Keys.ArrowRight:\n this.expandOrFocusFirstChild();\n break;\n case Keys.ArrowLeft:\n this.collapseOrFocusParent();\n break;\n case Keys.Home:\n event.preventDefault();\n this.focusManager.focusFirstVisibleNode();\n break;\n case Keys.End:\n event.preventDefault();\n this.focusManager.focusLastVisibleNode();\n break;\n case Keys.Enter:\n this.toggleExpandOrTriggerDefault();\n break;\n case Keys.Space:\n case Keys.Spacebar:\n // to prevent scrolling on space key in this specific case\n event.preventDefault();\n this.toggleExpandOrTriggerDefault();\n break;\n default:\n if (this._model.textContent && isKeyEitherLetterOrNumber(event)) {\n this.typeAheadKeyBuffer += event.key;\n this.typeAheadKeyEvent.next(this.typeAheadKeyBuffer);\n return;\n }\n break;\n }\n\n // if non-letter keys are pressed, do reset.\n this.typeAheadKeyBuffer = '';\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 private toggleExpandOrTriggerDefault() {\n if (this.isExpandable() && !this.isSelectable()) {\n this.expandService.expanded = !this.expanded;\n } else {\n this.triggerDefaultAction();\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.isParent) {\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.isSelectable()) {\n this._model.toggleSelection(this.featuresService.eager);\n }\n }\n }\n}\n\nfunction trimAndLowerCase(value: string) {\n return value.toLocaleLowerCase().trim();\n}\n","<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software 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\">\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </label>\n </div>\n <div class=\"clr-treenode-content\" (mousedown)=\"focusTreeNode()\" *ngIf=\"!featuresService.selectable\">\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </div>\n\n <ng-template #treenodeContent>\n <ng-content></ng-content>\n <div class=\"clr-sr-only\" *ngIf=\"featuresService.selectable || ariaSelected\">\n <span *ngIf=\"ariaSelected\"> selected</span>\n <span *ngIf=\"!ariaSelected\"> unselected</span>\n </div>\n </ng-template>\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 Input,\n NgZone,\n OnDestroy,\n QueryList,\n Renderer2,\n} from '@angular/core';\nimport { fromEvent, Subscription } from 'rxjs';\n\nimport { TREE_FEATURES_PROVIDER, TreeFeaturesService } from './tree-features.service';\nimport { TreeFocusManagerService } from './tree-focus-manager.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 tabindex: '0',\n '[attr.role]': '\"tree\"',\n '[attr.aria-multiselectable]': 'isMultiSelectable',\n },\n})\nexport class ClrTree<T> implements AfterContentInit, OnDestroy {\n @ContentChildren(ClrTreeNode) private rootNodes: QueryList<ClrTreeNode<T>>;\n\n private subscriptions: Subscription[] = [];\n\n constructor(\n public featuresService: TreeFeaturesService<T>,\n private focusManagerService: TreeFocusManagerService<T>,\n { nativeElement }: ElementRef<HTMLElement>,\n renderer: Renderer2,\n ngZone: NgZone\n ) {\n const subscription = ngZone.runOutsideAngular(() =>\n fromEvent(nativeElement, 'focusin').subscribe((event: FocusEvent) => {\n if (event.target === 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 // when the first child gets focus,\n // tree should no longer have tabindex of 0.\n renderer.removeAttribute(nativeElement, 'tabindex');\n }\n })\n );\n\n this.subscriptions.push(subscription);\n }\n\n @Input('clrLazy')\n set lazy(value: boolean) {\n this.featuresService.eager = !value;\n }\n\n get isMultiSelectable() {\n return this.featuresService.selectable && this.rootNodes.length > 0;\n }\n\n ngAfterContentInit() {\n this.setRootNodes();\n this.subscriptions.push(\n this.rootNodes.changes.subscribe(() => {\n this.setRootNodes();\n })\n );\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\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","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { angleIcon, ClarityIcons } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrLoadingModule } from '../../utils/loading/loading.module';\nimport { RecursiveChildren } from './recursive-children';\nimport { ClrRecursiveForOf } from './recursive-for-of';\nimport { ClrTree } from './tree';\nimport { ClrTreeNode } from './tree-node';\nimport { ClrTreeNodeLink } from './tree-node-link';\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrDatagridModule } from './datagrid/datagrid.module';\nimport { ClrStackViewModule } from './stack-view/stack-view.module';\nimport { ClrTreeViewModule } from './tree-view/tree-view.module';\n\n@NgModule({\n exports: [ClrDatagridModule, ClrStackViewModule, ClrTreeViewModule],\n})\nexport class ClrDataModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, OnDestroy, Optional, PLATFORM_ID, Renderer2, SkipSelf } from '@angular/core';\nimport { Observable, of, ReplaySubject } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\n\nimport { ArrowKeyDirection } from '../../../utils/focus/arrow-key-direction.enum';\nimport { FocusService } from '../../../utils/focus/focus.service';\nimport { customFocusableItemProvider } from '../../../utils/focus/focusable-item/custom-focusable-item-provider';\nimport { FocusableItem } from '../../../utils/focus/focusable-item/focusable-item';\nimport { Linkers } from '../../../utils/focus/focusable-item/linkers';\nimport { wrapObservable } from '../../../utils/focus/wrap-observable';\nimport { uniqueIdFactory } from '../../../utils/id-generator/id-generator.service';\nimport { ClrPopoverToggleService } from '../../../utils/popover/providers/popover-toggle.service';\n\n@Injectable()\nexport class DropdownFocusHandler implements OnDestroy, FocusableItem {\n id = uniqueIdFactory();\n focusBackOnTriggerWhenClosed = false;\n\n right?: Observable<FocusableItem>;\n down?: Observable<FocusableItem>;\n up?: Observable<FocusableItem>;\n\n private _trigger: HTMLElement;\n private _container: HTMLElement;\n private children: ReplaySubject<FocusableItem[]>;\n private _unlistenFuncs: (() => void)[] = [];\n\n constructor(\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 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 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 escape 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 escape keydown\n this._unlistenFuncs.push(\n this.renderer.listen(el, 'keydown.escape', 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 escape key is pressed\n this._unlistenFuncs.push(\n this.renderer.listen(el, 'keydown.escape', 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.focusBackOnTriggerWhenClosed = false;\n this.toggleService.open = false;\n })\n );\n }\n }\n\n ngOnDestroy() {\n this._unlistenFuncs.forEach((unlisten: () => void) => unlisten());\n this.focusService.detachListeners();\n }\n\n /**\n * If the dropdown was opened by clicking on the trigger, we automatically move to the first item\n */\n moveToFirstItemWhenOpen() {\n const subscription = 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 this._unlistenFuncs.push(() => subscription.unsubscribe());\n }\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 const subscription = 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.focusBackOnTriggerWhenClosed) {\n this.focus();\n }\n }\n this.focusBackOnTriggerWhenClosed = open;\n });\n\n this._unlistenFuncs.push(() => subscription.unsubscribe());\n }\n\n focus() {\n if (this.trigger && isPlatformBrowser(this.platformId)) {\n this.trigger.focus();\n }\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 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 private openAndGetChildren() {\n return wrapObservable(this.children, () => (this.toggleService.open = true));\n }\n\n private closeAndGetThis() {\n return wrapObservable(of(this), () => (this.toggleService.open = false));\n }\n}\n\nexport const DROPDOWN_FOCUS_HANDLER_PROVIDER = customFocusableItemProvider(DropdownFocusHandler);\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, SkipSelf } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class RootDropdownService {\n private _changes = 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, Component, Input, OnDestroy, Optional, SkipSelf } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { FOCUS_SERVICE_PROVIDER } from '../../utils/focus/focus.service';\nimport { ClrPopoverHostDirective } from '../../utils/popover/popover-host.directive';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { DROPDOWN_FOCUS_HANDLER_PROVIDER, DropdownFocusHandler } from './providers/dropdown-focus-handler.service';\nimport { ROOT_DROPDOWN_PROVIDER, RootDropdownService } from './providers/dropdown.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: [ROOT_DROPDOWN_PROVIDER, FOCUS_SERVICE_PROVIDER, DROPDOWN_FOCUS_HANDLER_PROVIDER],\n hostDirectives: [ClrPopoverHostDirective],\n})\nexport class ClrDropdown implements OnDestroy {\n @Input('clrCloseMenuOnItemClick') isMenuClosable = true;\n\n private subscriptions: Subscription[] = [];\n\n constructor(\n @SkipSelf()\n @Optional()\n public parent: ClrDropdown,\n public toggleService: ClrPopoverToggleService,\n public focusHandler: DropdownFocusHandler,\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 ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\n\nimport { uniqueIdFactory } from '../../id-generator/id-generator.service';\nimport { FocusableItem } from './focusable-item';\n\n@Injectable()\nexport class BasicFocusableItem implements FocusableItem {\n id = uniqueIdFactory();\n disabled = false;\n\n constructor(\n private el: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n @Inject(PLATFORM_ID) private platformId: any\n ) {\n renderer.setAttribute(el.nativeElement, 'id', this.id);\n renderer.setAttribute(el.nativeElement, 'tabindex', '-1');\n }\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 {\n provide: FocusableItem,\n useClass: BasicFocusableItem,\n },\n];\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, Input } from '@angular/core';\n\nimport { BASIC_FOCUSABLE_ITEM_PROVIDER } from '../../utils/focus/focusable-item/basic-focusable-item.service';\nimport { FocusableItem } from '../../utils/focus/focusable-item/focusable-item';\nimport { ClrDropdown } from './dropdown';\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.id]': 'dropdownItemId',\n },\n providers: [BASIC_FOCUSABLE_ITEM_PROVIDER],\n})\nexport class ClrDropdownItem {\n constructor(\n private dropdown: ClrDropdown,\n private _dropdownService: RootDropdownService,\n private focusableItem: FocusableItem\n ) {}\n\n @Input('clrDisabled')\n get disabled() {\n return this.focusableItem.disabled;\n }\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 /**\n * Let you overwrite the focusable auto increment id.\n */\n @Input('id')\n get dropdownItemId() {\n return this.focusableItem.id;\n }\n set dropdownItemId(value: string) {\n this.focusableItem.id = value;\n }\n\n @HostListener('click')\n private onDropdownItemClick(): void {\n // Move focus back to the root dropdown trigger.\n // This is done BEFORE the dropdown is closed so that focus gets moved properly if a modal is opened.\n if (this.dropdown.isMenuClosable && !this.disabled && this.dropdown.toggleService.open) {\n const rootDropdown = this.findRootDropdown();\n\n rootDropdown.focusHandler.focus();\n // Prevent moving focus back to the trigger when the dropdown menu is closed.\n // Without this line, focus could be \"stolen\" from a modal that was opened from a dropdown item.\n rootDropdown.focusHandler.focusBackOnTriggerWhenClosed = false;\n }\n\n // Ensure that the dropdown is closed after custom dropdown item click event handlers have run.\n setTimeout(() => {\n if (this.dropdown.isMenuClosable && !this.disabled) {\n this._dropdownService.closeMenus();\n }\n });\n }\n\n @HostListener('keydown.space', ['$event'])\n private onSpaceKeydown($event: KeyboardEvent) {\n this.stopImmediatePropagationIfDisabled($event);\n }\n\n @HostListener('keydown.enter', ['$event'])\n private onEnterKeydown($event: KeyboardEvent) {\n this.stopImmediatePropagationIfDisabled($event);\n }\n\n private stopImmediatePropagationIfDisabled($event: Event) {\n if (this.disabled) {\n $event.preventDefault(); // prevent click event\n $event.stopImmediatePropagation();\n }\n }\n\n private findRootDropdown() {\n let rootDropdown = this.dropdown;\n\n while (rootDropdown.parent) {\n rootDropdown = rootDropdown.parent;\n }\n\n return rootDropdown;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\n\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 private boundOnScrollListener: any = this.emitScrollEvent.bind(this);\n\n /*\n * Containers up to the first positioned one will have an event on scroll\n */\n private scrollableElements: HTMLElement[] = [];\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 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 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 private emitScrollEvent() {\n this._scroll.next();\n }\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 AfterViewChecked,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n HostBinding,\n Injector,\n NgZone,\n OnDestroy,\n Renderer2,\n SkipSelf,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { Keys } from '../../utils/enums/keys.enum';\nimport { normalizeKey } from '../../utils/focus/key-focus/util';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { Point, Popover } from './popover';\nimport { PopoverOptions } from './popover-options.interface';\n\n@Directive()\nexport abstract class AbstractPopover implements AfterViewChecked, OnDestroy {\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 closeOnOutsideClick = false;\n\n protected el: ElementRef;\n protected toggleService: ClrPopoverToggleService;\n protected renderer: Renderer2;\n protected ngZone: NgZone;\n protected ref: ChangeDetectorRef;\n protected anchorElem: any;\n protected anchorPoint: Point;\n protected popoverPoint: Point;\n protected popoverOptions: PopoverOptions = {};\n protected ignoredElement: any;\n\n private updateAnchor = false;\n private popoverInstance: Popover;\n private subscription: Subscription;\n private documentESCListener: VoidFunction | null = null;\n\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 this.ngZone = injector.get(NgZone);\n this.ref = injector.get(ChangeDetectorRef);\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 /*\n * Fallback to hide when *clrIfOpen is not being used\n */\n @HostBinding('class.is-off-screen')\n get isOffScreen() {\n return this.toggleService.open ? false : true;\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 protected anchor() {\n this.updateAnchor = true;\n }\n\n protected release() {\n this.detachOutsideClickListener();\n this.popoverInstance.release();\n }\n\n private attachESCListener(): void {\n if (this.popoverOptions.ignoreGlobalESCListener) {\n return;\n }\n\n this.ngZone.runOutsideAngular(() => {\n this.documentESCListener = this.renderer.listen('document', 'keydown', event => {\n if (event && event.key) {\n if (normalizeKey(event.key) === Keys.Escape) {\n this.ngZone.run(() => {\n this.toggleService.open = false;\n this.ref.markForCheck();\n });\n }\n }\n });\n });\n }\n\n private detachESCListener(): void {\n if (this.documentESCListener) {\n this.documentESCListener();\n this.documentESCListener = null;\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 Inject,\n Injector,\n Input,\n OnDestroy,\n Optional,\n QueryList,\n SkipSelf,\n} from '@angular/core';\n\nimport { FocusableItem } from '../../utils/focus/focusable-item/focusable-item';\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';\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 @ContentChildren(FocusableItem) items: QueryList<FocusableItem>;\n\n private focusHandler: DropdownFocusHandler;\n\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 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 override ngOnDestroy() {\n super.ngOnDestroy();\n this.focusHandler.resetChildren();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, HostListener } from '@angular/core';\n\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\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 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrCommonStringsService } from '../../../utils/i18n/common-strings.service';\nimport { AlertInfoObject } from '../utils/alert-info-object';\nimport { ALERT_TYPES } from '../utils/alert-types';\n\n@Injectable()\nexport class AlertIconAndTypesService {\n private defaultIconShape = 'info-circle';\n private _alertIconShape = '';\n private _alertType = 'info';\n\n constructor(private commonStrings: ClrCommonStringsService) {}\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 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, Subject, Subscription } from 'rxjs';\n\nimport { ClrAlert } from '../alert';\n\n@Injectable()\nexport class MultiAlertService {\n private subscription: Subscription;\n private allAlerts: QueryList<ClrAlert>;\n private _change = new Subject<number>();\n private _current: number;\n\n /**\n * The Observable that lets other classes subscribe to changes\n */\n get changes(): Observable<number> {\n return this._change.asObservable();\n }\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 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, Component, EventEmitter, Input, OnDestroy, OnInit, Optional, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { AlertIconAndTypesService } from './providers/icon-and-types.service';\nimport { MultiAlertService } from './providers/multi-alert.service';\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 @Input('clrAlertSizeSmall') isSmall = false;\n @Input('clrAlertClosable') closable = true;\n @Input('clrAlertAppLevel') isAppLevel = false;\n @Input() clrCloseButtonAriaLabel: string = this.commonStrings.keys.alertCloseButtonAriaLabel;\n\n @Output('clrAlertClosedChange') _closedChanged = new EventEmitter<boolean>(false);\n\n _closed = false;\n\n private _hidden: boolean;\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 @Input('clrAlertType')\n get alertType(): string {\n return this.iconService.alertType;\n }\n set alertType(val: string) {\n this.iconService.alertType = val;\n }\n\n @Input('clrAlertIcon')\n set alertIconShape(value: string) {\n this.iconService.alertIconShape = value;\n }\n\n @Input('clrAlertClosed')\n set closed(value: boolean) {\n if (value && !this._closed) {\n this.close();\n } else if (!value && this._closed) {\n this.open();\n }\n }\n\n get alertClass(): string {\n return this.iconService.iconInfoFromType(this.iconService.alertType).cssClass;\n }\n\n get hidden() {\n return this._hidden;\n }\n set hidden(value: boolean) {\n if (value !== this._hidden) {\n this._hidden = value;\n this.cdr.detectChanges();\n }\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 open(): void {\n this._closed = false;\n if (this.multiAlertService) {\n this.multiAlertService.open();\n }\n this._closedChanged.emit(false);\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?.activeAlerts) {\n this.multiAlertService.close(isCurrentAlert);\n }\n this._closedChanged.emit(true);\n }\n}\n","<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { 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 role=\"img\"\n [attr.shape]=\"iconService.alertIconShape\"\n [attr.aria-label]=\"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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, OnInit, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrAlert } from './alert';\nimport { MultiAlertService } from './providers/multi-alert.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 @Output('clrCurrentAlertChange') currentAlertChange = new EventEmitter<ClrAlert>(false);\n @Output('clrCurrentAlertIndexChange') currentAlertIndexChange = new EventEmitter<number>();\n\n private multiAlertServiceChanges: Subscription;\n\n constructor(public multiAlertService: MultiAlertService, public commonStrings: ClrCommonStringsService) {}\n\n /**\n * Input/Output to support two way binding on current alert instance\n */\n @Input('clrCurrentAlert')\n get currentAlert() {\n return this.multiAlertService.currentAlert;\n }\n set currentAlert(alert: ClrAlert) {\n if (alert) {\n this.multiAlertService.currentAlert = alert;\n }\n }\n\n /**\n * Input/Output to support two way binding on current alert index\n */\n @Input('clrCurrentAlertIndex')\n get currentAlertIndex() {\n return this.multiAlertService.current;\n }\n set currentAlertIndex(index: number) {\n this.multiAlertService.current = index;\n }\n\n protected get previousAlertAriaLabel() {\n const CURRENT = this.currentAlertIndex + 1;\n return this.commonStrings.parse(this.commonStrings.keys.alertPreviousAlertAriaLabel, {\n CURRENT: (CURRENT === 1 ? this.multiAlertService.count : CURRENT - 1).toString(),\n COUNT: this.multiAlertService.count.toString(),\n });\n }\n\n protected get nextAlertAriaLabel() {\n const CURRENT = this.currentAlertIndex + 1;\n return this.commonStrings.parse(this.commonStrings.keys.alertNextAlertAriaLabel, {\n CURRENT: (CURRENT === this.multiAlertService.count ? 1 : CURRENT + 1).toString(),\n COUNT: this.multiAlertService.count.toString(),\n });\n }\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 ngOnDestroy() {\n this.multiAlertServiceChanges.unsubscribe();\n }\n\n pageUp() {\n this.multiAlertService.next();\n }\n\n pageDown() {\n this.multiAlertService.previous();\n }\n}\n","<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software 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\" type=\"button\" (click)=\"pageDown()\" [attr.aria-label]=\"previousAlertAriaLabel\">\n <cds-icon shape=\"angle\" direction=\"left\"></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\" type=\"button\" (click)=\"pageUp()\" [attr.aria-label]=\"nextAlertAriaLabel\">\n <cds-icon shape=\"angle\" direction=\"right\"></cds-icon>\n </button>\n </div>\n</div>\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 EventEmitter,\n Input,\n OnDestroy,\n Output,\n QueryList,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrAlert } from './alert';\nimport { MultiAlertService } from './providers/multi-alert.service';\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 @Output('clrCurrentAlertChange') currentAlertChange = new EventEmitter<ClrAlert>(false);\n @Output('clrCurrentAlertIndexChange') currentAlertIndexChange = new EventEmitter<number>(false);\n\n private subscriptions: Subscription[] = [];\n\n constructor(public multiAlertService: MultiAlertService) {}\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 set _inputCurrentIndex(index: number) {\n if (Number.isInteger(index) && index >= 0) {\n this.multiAlertService.current = index;\n }\n }\n\n get currentAlertIndex() {\n return this.multiAlertService.current;\n }\n set currentAlertIndex(index: number) {\n this.multiAlertService.current = index;\n }\n\n /**\n * Input/Output to support two way binding on current alert instance\n */\n @Input('clrCurrentAlert')\n get currentAlert() {\n return this.multiAlertService.currentAlert;\n }\n set currentAlert(alert: ClrAlert) {\n if (alert) {\n this.multiAlertService.currentAlert = alert;\n }\n }\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 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-2023 VMware, Inc. All Rights Reserved.\n ~ This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 {\n checkCircleIcon,\n ClarityIcons,\n exclamationCircleIcon,\n exclamationTriangleIcon,\n infoCircleIcon,\n windowCloseIcon,\n} from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrDropdownModule } from '../../popover/dropdown/dropdown.module';\nimport { ClrAlert } from './alert';\nimport { ClrAlertItem } from './alert-item';\nimport { ClrAlertText } from './alert-text';\nimport { ClrAlerts } from './alerts';\nimport { ClrAlertsPager } from './alerts-pager';\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrAlertModule } from './alert/alert.module';\n\n@NgModule({\n exports: [ClrAlertModule],\n})\nexport class ClrEmphasisModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 static NAV_LEVEL_1 = 1;\n static NAV_LEVEL_2 = 2;\n static NAV_CLOSE_ALL = 'NAV_CLOSE_ALL';\n static NAV_OPEN = 'NAV_OPEN';\n static NAV_CLOSE = 'NAV_CLOSE';\n static NAV_TOGGLE = 'NAV_TOGGLE';\n static NAV_CLASS_HAMBURGER_MENU = 'open-hamburger-menu';\n static NAV_CLASS_OVERFLOW_MENU = 'open-overflow-menu';\n static NAV_CLASS_TRIGGER_1 = 'header-hamburger-trigger';\n static NAV_CLASS_TRIGGER_2 = 'header-overflow-trigger';\n static NAV_CLASS_LEVEL_1 = 'clr-nav-level-1';\n static NAV_CLASS_LEVEL_2 = 'clr-nav-level-2';\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { 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 responsiveNavList: number[] = [];\n\n private registerNavSubject = new ReplaySubject<number[]>();\n private controlNavSubject = new Subject<ResponsiveNavControlMessage>();\n\n constructor() {\n this.closeAllNavs(); // We start with all navs closed\n }\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 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, 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({\n selector: 'clr-main-container',\n host: { '[class.main-container]': 'true' },\n})\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, OnDestroy, OnInit } from '@angular/core';\nimport { RouterLinkActive } from '@angular/router';\nimport { Subscription } from 'rxjs';\n\n@Directive({\n selector: '[clrAriaCurrentLink]',\n host: { '[attr.aria-current]': 'ariaCurrent' },\n})\nexport class ClrAriaCurrentLink implements OnInit, OnDestroy {\n ariaCurrent: string | undefined;\n private subscription: Subscription;\n\n constructor(private rla: RouterLinkActive) {}\n\n ngOnInit() {\n this.subscription = this.rla.isActiveChange.subscribe(isActive => {\n this.ariaCurrent = isActive ? 'page' : undefined;\n });\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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({\n selector: 'clr-main-container',\n})\nexport class MainContainerWillyWonka extends WillyWonka {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ResponsiveNavigationService } from '../providers/responsive-navigation.service';\nimport { MainContainerWillyWonka } from './main-container-willy-wonka';\n\n@Directive({\n selector: 'clr-header',\n})\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, HostBinding, Input, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ResponsiveNavigationService } from './providers/responsive-navigation.service';\nimport { ResponsiveNavCodes } from './responsive-nav-codes';\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]=\"responsiveNavCommonString\"\n (click)=\"openNav(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]=\"responsiveOverflowCommonString\"\n (click)=\"openNav(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 @Input() @HostBinding('attr.role') role = 'banner';\n\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 this._subscription.add(\n this.responsiveNavService.navControl\n .pipe(\n filter(\n ({ controlCode }) =>\n controlCode === ResponsiveNavCodes.NAV_CLOSE || controlCode === ResponsiveNavCodes.NAV_CLOSE_ALL\n )\n )\n .subscribe(() => {\n this.openNavLevel = null;\n })\n );\n }\n\n get responsiveNavCommonString() {\n const myCommonStrings = this.commonStrings.keys;\n if (this.openNavLevel !== this.responsiveNavCodes.NAV_LEVEL_1) {\n return myCommonStrings.responsiveNavToggleOpen;\n } else {\n return myCommonStrings.responsiveNavToggleClose;\n }\n }\n\n get responsiveOverflowCommonString() {\n const myCommonStrings = this.commonStrings.keys;\n if (this.openNavLevel !== this.responsiveNavCodes.NAV_LEVEL_2) {\n return myCommonStrings.responsiveNavOverflowOpen;\n } else {\n return myCommonStrings.responsiveNavOverflowClose;\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 /**\n * @deprecated Will be removed in with @clr/angular v15.0.0\n *\n * Use `openNav(navLevel)` instead to open the navigation and ResponsiveNavService to close it.\n */\n toggleNav(navLevel: number) {\n if (this.openNavLevel === navLevel) {\n this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_CLOSE, navLevel);\n return;\n }\n\n this.openNav(navLevel);\n }\n\n openNav(navLevel: number) {\n this.openNavLevel = navLevel;\n this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_OPEN, navLevel);\n }\n\n ngOnDestroy() {\n this._subscription.unsubscribe();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 Directive,\n ElementRef,\n HostListener,\n Inject,\n Injector,\n Input,\n OnInit,\n PLATFORM_ID,\n Renderer2,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { commonStringsDefault } from '../../utils';\nimport { LARGE_BREAKPOINT } from '../../utils/breakpoints/breakpoints';\nimport { ClrStandaloneCdkTrapFocus } from '../../utils/focus/focus-trap';\nimport { ResponsiveNavigationService } from './providers/responsive-navigation.service';\nimport { ResponsiveNavCodes } from './responsive-nav-codes';\n\nimport '@cds/core/internal-components/close-button/register.js';\n\nconst createCdsCloseButton = (document: Document, ariaLabel: string) => {\n const cdsCloseButton = document.createElement('cds-internal-close-button');\n cdsCloseButton.setAttribute('icon-size', '32');\n cdsCloseButton.setAttribute('aria-label', ariaLabel);\n cdsCloseButton.setAttribute('aria-hidden', 'true');\n cdsCloseButton.setAttribute('type', 'button');\n /**\n * The button is hidden by default based on our Desktop-first approach.\n */\n cdsCloseButton.setAttribute('hidden', 'true');\n cdsCloseButton.className = 'clr-nav-close';\n return cdsCloseButton;\n};\n\n@Directive({\n selector: '[clr-nav-level]',\n hostDirectives: [ClrStandaloneCdkTrapFocus],\n})\nexport class ClrNavLevel implements OnInit {\n @Input('clr-nav-level') _level: number;\n @Input('closeAriaLabel') closeButtonAriaLabel: string;\n\n private _isOpen = false;\n private _document: Document;\n private _subscription: Subscription;\n\n constructor(\n @Inject(PLATFORM_ID) platformId: any,\n private cdkTrapFocus: ClrStandaloneCdkTrapFocus,\n private responsiveNavService: ResponsiveNavigationService,\n private elementRef: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n injector: Injector\n ) {\n if (isPlatformBrowser(platformId)) {\n this._document = injector.get(DOCUMENT);\n }\n\n this._subscription = responsiveNavService.navControl\n .pipe(\n filter(x => x.navLevel === this.level),\n filter(\n ({ controlCode }) =>\n (controlCode === ResponsiveNavCodes.NAV_OPEN && !this.isOpen) ||\n (controlCode === ResponsiveNavCodes.NAV_CLOSE && this.isOpen)\n )\n )\n .subscribe(({ controlCode }) => {\n if (controlCode === ResponsiveNavCodes.NAV_OPEN) {\n this.open();\n return;\n }\n\n this.close();\n });\n\n this._subscription.add(\n responsiveNavService.navControl\n .pipe(filter(({ controlCode }) => controlCode === ResponsiveNavCodes.NAV_CLOSE_ALL))\n .subscribe(() => this.close())\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 get isOpen(): boolean {\n return this._isOpen;\n }\n\n ngOnInit() {\n this.cdkTrapFocus.enabled = false;\n\n if (!this.closeButtonAriaLabel) {\n this.closeButtonAriaLabel =\n this._level === ResponsiveNavCodes.NAV_LEVEL_1\n ? commonStringsDefault.responsiveNavToggleClose\n : commonStringsDefault.responsiveNavOverflowClose;\n }\n\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 ngAfterViewInit() {\n const closeButton = createCdsCloseButton(this._document, this.closeButtonAriaLabel);\n this.renderer.listen(closeButton, 'click', this.close.bind(this));\n this.renderer.insertBefore(this.elementRef.nativeElement, closeButton, this.elementRef.nativeElement.firstChild); // Adding the button at the top of the nav\n\n if (this._document.body.clientWidth < LARGE_BREAKPOINT) {\n /**\n * Close if the document body is smaller than the large breakpoint for example:\n * - Refreshing the page\n * - Browser window size is changed when opening the applicaiton\n * - Browser zoom is turned on and zoomed to a size that makes the document smaller than the large breakpoint\n */\n this.close();\n }\n }\n\n ngOnDestroy() {\n this.responsiveNavService.unregisterNav(this.level);\n this._subscription.unsubscribe();\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: Event) {\n const target = event.target as Window;\n\n if (target.innerWidth < LARGE_BREAKPOINT && this.isOpen) {\n this.close();\n return;\n }\n\n this.showNavigation();\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') && this._document.body.clientWidth < LARGE_BREAKPOINT) {\n this.close();\n return;\n }\n current = current.parentNode;\n }\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 open(): void {\n this._isOpen = true;\n this.showNavigation();\n this.cdkTrapFocus.enabled = true;\n this.showCloseButton();\n this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_OPEN, this.level);\n }\n\n close(): void {\n this._isOpen = false;\n this.hideNavigation();\n this.cdkTrapFocus.enabled = false;\n this.hideCloseButton();\n this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_CLOSE, this.level);\n }\n\n protected hideNavigation() {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'aria-hidden', 'true');\n this.renderer.setAttribute(this.elementRef.nativeElement, 'hidden', 'true');\n }\n\n protected showNavigation() {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'aria-hidden', 'false');\n this.renderer.removeAttribute(this.elementRef.nativeElement, 'hidden');\n }\n\n protected hideCloseButton() {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'aria-hidden', 'true');\n this.renderer.setAttribute(this.elementRef.nativeElement.querySelector('.clr-nav-close'), 'hidden', 'true');\n }\n\n protected showCloseButton() {\n this.renderer.setAttribute(this.elementRef.nativeElement.querySelector('.clr-nav-close'), 'aria-hidden', 'false');\n this.renderer.removeAttribute(this.elementRef.nativeElement.querySelector('.clr-nav-close'), 'hidden');\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\nimport { ClrAriaCurrentLink } from './aria-current-link';\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 ClrAriaCurrentLink,\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\n\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { TEMPLATE_REF_DIRECTIVES } from './index';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [TEMPLATE_REF_DIRECTIVES],\n exports: [TEMPLATE_REF_DIRECTIVES],\n})\nexport class ClrTemplateRefModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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({\n selector: 'clr-tabs',\n})\nexport class TabsWillyWonka extends WillyWonka {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, Inject, Optional } from '@angular/core';\n\nimport { OompaLoompa } from '../../../utils/chocolate/oompa-loompa';\nimport { IF_ACTIVE_ID, IfActiveService } from '../../../utils/conditional/if-active.service';\nimport { TabsWillyWonka } from './tabs-willy-wonka';\n\n@Directive({\n selector: '[clrTabLink], clr-tab-content',\n})\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, ViewContainerRef } from '@angular/core';\n\nimport { TabsLayout } from '../enums/tabs-layout.enum';\nimport { ClrTab } from '../tab';\n\n@Injectable()\nexport class TabsService {\n layout: TabsLayout | string = TabsLayout.HORIZONTAL;\n tabContentViewContainer: ViewContainerRef;\n\n private _children: ClrTab[] = [];\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 register(tab: ClrTab) {\n this._children.push(tab);\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","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, EmbeddedViewRef, Inject, Input, OnDestroy, TemplateRef, ViewChild } from '@angular/core';\n\nimport { IF_ACTIVE_ID, IfActiveService } from '../../utils/conditional/if-active.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-hidden]=\"!active\"\n >\n <ng-content></ng-content>\n </section>\n </ng-template>\n `,\n})\nexport class ClrTabContent implements OnDestroy {\n @Input('id') tabContentId: string;\n\n private viewRef: EmbeddedViewRef<ClrTabContent>;\n\n constructor(\n public ifActiveService: IfActiveService,\n @Inject(IF_ACTIVE_ID) public id: number,\n private tabsService: TabsService\n ) {\n if (!this.tabContentId) {\n this.tabContentId = 'clr-tab-content-' + nbTabContentComponents++;\n }\n }\n\n get active() {\n return this.ifActiveService.current === this.id;\n }\n\n get ariaLabelledBy(): string {\n return this.tabsService.children.find(tab => tab.tabContent === this)?.tabLink?.tabLinkId;\n }\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 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 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 { TabsLayout } from './enums/tabs-layout.enum';\nimport { TabsService } from './providers/tabs.service';\nimport { TABS_ID } from './tabs-id.provider';\n\nlet nbTabLinkComponents = 0;\n\n@Directive({\n selector: '[clrTabLink]',\n host: {\n '[class.btn]': 'true',\n role: 'tab',\n type: 'button',\n },\n})\nexport class ClrTabLink {\n @Input('id') @HostBinding('id') tabLinkId: string;\n\n templateRefContainer: TemplateRefContainer;\n\n private _inOverflow: boolean;\n\n constructor(\n public ifActiveService: IfActiveService,\n @Inject(IF_ACTIVE_ID) private id: number,\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 @Input('clrTabLinkInOverflow')\n get inOverflow(): boolean {\n return this._inOverflow && this.tabsService.layout !== TabsLayout.VERTICAL;\n }\n set inOverflow(inOverflow) {\n this._inOverflow = inOverflow;\n }\n\n @HostBinding('class.btn-link')\n @HostBinding('class.nav-link')\n get addLinkClasses() {\n return !this.inOverflow;\n }\n\n @HostBinding('attr.aria-controls')\n get ariaControls(): string {\n return this.tabsService.children.find(tab => tab.tabLink === this)?.tabContent?.tabContentId;\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 @HostListener('click')\n activate() {\n this.ifActiveService.current = this.id;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, Inject } from '@angular/core';\n\nimport { IF_ACTIVE_ID, IF_ACTIVE_ID_PROVIDER, IfActiveService } from '../../utils/conditional/if-active.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],\n})\nexport class ClrTab {\n @ContentChild(ClrTabLink, { static: true }) tabLink: ClrTabLink;\n @ContentChild(ClrTabContent, { static: true }) 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 get active() {\n return this.ifActiveService.current === this.id;\n }\n\n ngOnDestroy() {\n this.tabsService.unregister(this);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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-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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 HostBinding,\n Inject,\n Input,\n OnDestroy,\n QueryList,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\n\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 { ClrPopoverHostDirective } from '../../utils/popover/popover-host.directive';\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 { ClrTabOverflowContent } from './tab-overflow-content';\nimport { TABS_ID, TABS_ID_PROVIDER } from './tabs-id.provider';\n\n@Component({\n selector: 'clr-tabs',\n template: `\n <ul\n class=\"nav\"\n role=\"tablist\"\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 [attr.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.escape)=\"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 ></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, TabsService, TABS_ID_PROVIDER],\n hostDirectives: [ClrPopoverHostDirective],\n})\nexport class ClrTabs implements AfterContentInit, OnDestroy {\n tabLinkElements: HTMLElement[] = [];\n\n // in order to check focus is triggered by click\n // we are using this _mousedown flag\n _mousedown = false;\n\n @ViewChild(ClrKeyFocus, { static: true }) keyFocus: ClrKeyFocus;\n\n @ContentChildren(ClrTab) private tabs: QueryList<ClrTab>;\n\n private subscriptions: Subscription[] = [];\n private _tabOverflowEl: HTMLElement;\n private _tabLinkDirectives: ClrTabLink[] = [];\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 @Input('clrLayout')\n get layout(): TabsLayout | string {\n return this.tabsService.layout;\n }\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\n get tabLinkDirectives(): ClrTabLink[] {\n return this._tabLinkDirectives;\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 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 @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 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 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 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 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 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","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, ellipsisHorizontalIcon } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrConditionalModule } from '../../utils/conditional/conditional.module';\nimport { ClrKeyFocusModule } from '../../utils/focus/key-focus/key-focus.module';\nimport { ClrTemplateRefModule } from '../../utils/template-ref/template-ref.module';\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';\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 navGroupCount = 0;\n\n registerNavGroup() {\n this.navGroupCount++;\n }\n\n unregisterNavGroup(): void {\n this.navGroupCount--;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 = new Subject<boolean>();\n private _collapsedChanged = new Subject<boolean>();\n private _collapsed = false;\n private _collapsible = false;\n\n get animateOnCollapsed(): Observable<boolean> {\n return this._animateOnCollapsed.asObservable();\n }\n\n get collapsedChanged(): Observable<boolean> {\n return this._collapsedChanged.asObservable();\n }\n\n get collapsed(): boolean {\n return this._collapsed;\n }\n set collapsed(value: boolean) {\n value = !!value;\n if (this.collapsible && this._collapsed !== value) {\n this.updateCollapseBehavior(value);\n }\n }\n\n get collapsible(): boolean {\n return this._collapsible;\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { VerticalNavGroupRegistrationService } from './providers/vertical-nav-group-registration.service';\nimport { VerticalNavIconService } from './providers/vertical-nav-icon.service';\nimport { VerticalNavService } from './providers/vertical-nav.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 @Output('clrVerticalNavCollapsedChange') private _collapsedChanged = new EventEmitter<boolean>(true);\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 @Input('clrVerticalNavCollapsible')\n get collapsible(): boolean | string {\n return this._navService.collapsible;\n }\n set collapsible(value: boolean | string) {\n this._navService.collapsible = value as boolean;\n }\n\n @Input('clrVerticalNavCollapsed')\n get collapsed(): boolean | string {\n return this._navService.collapsed;\n }\n set collapsed(value: boolean | string) {\n this._navService.collapsed = value as boolean;\n }\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 ngOnDestroy() {\n this._sub.unsubscribe();\n }\n\n toggleByButton() {\n this.collapsed = !this.collapsed;\n }\n}\n","<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software 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 ></cds-icon>\n</button>\n<div class=\"nav-content\">\n <ng-content></ng-content>\n <button\n type=\"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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 = 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { VerticalNavGroupRegistrationService } from './providers/vertical-nav-group-registration.service';\nimport { VerticalNavGroupService } from './providers/vertical-nav-group.service';\nimport { VerticalNavService } from './providers/vertical-nav.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, 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 @Output('clrVerticalNavGroupExpandedChange') expandedChange = new EventEmitter<boolean>(true);\n\n private wasExpanded = false;\n private _subscriptions: Subscription[] = [];\n private _expandAnimationState: string = COLLAPSED_STATE;\n\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 @HostBinding('class.is-expanded')\n get expanded(): boolean {\n return this._itemExpand.expanded;\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 get expandAnimationState(): string {\n return this._expandAnimationState;\n }\n set expandAnimationState(value: string) {\n if (value !== this._expandAnimationState) {\n this._expandAnimationState = value;\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 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 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","<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software 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 class=\"nav-group-trigger\" type=\"button\" [attr.aria-expanded]=\"expanded\" (click)=\"toggleExpand()\">\n <ng-content select=\"[clrVerticalNavIcon]\"></ng-content>\n <div class=\"nav-group-text\">\n <ng-content></ng-content>\n </div>\n <cds-icon shape=\"angle\" class=\"nav-group-trigger-icon\" [attr.direction]=\"expanded ? 'down' : 'right'\"></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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, OnDestroy } from '@angular/core';\n\nimport { VerticalNavIconService } from './providers/vertical-nav-icon.service';\n\n@Directive({\n selector: '[clrVerticalNavIcon]',\n host: { class: 'nav-icon' },\n})\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, Component, ElementRef, Inject, OnDestroy, Optional } from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\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: {\n class: 'nav-link',\n },\n})\nexport class ClrVerticalNavLink implements OnDestroy {\n private destroy$ = new Subject<void>();\n\n constructor(\n host: ElementRef<HTMLElement>,\n ref: ChangeDetectorRef,\n @Optional() @Inject(VerticalNavGroupService) navGroupService: VerticalNavGroupService | null\n ) {\n // Note: since the `VerticalNavGroupService` is an optional provider, we'll setup the event\n // listener only when the `[clrVerticalLink]` is located within the `clr-vertical-nav-group`.\n navGroupService &&\n fromEvent(host.nativeElement, 'click')\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n navGroupService.expand();\n ref.markForCheck();\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { 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({\n exports: [ClrMainContainerModule, ClrNavigationModule, ClrTabsModule, ClrVerticalNavModule],\n})\nexport class ClrLayoutModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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, style, transition, trigger } from '@angular/animations';\nimport { Component, EventEmitter, HostBinding, Input, OnChanges, OnDestroy, Output, SimpleChange } from '@angular/core';\n\nimport { ClrCommonStringsService } from '../utils/i18n/common-strings.service';\nimport { uniqueIdFactory } from '../utils/id-generator/id-generator.service';\nimport { ScrollingService } from '../utils/scrolling/scrolling-service';\nimport { ModalStackService } from './modal-stack.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})\nexport class ClrModal implements OnChanges, OnDestroy {\n modalId = uniqueIdFactory();\n\n @Input('clrModalOpen') @HostBinding('class.open') _open = false;\n @Output('clrModalOpenChange') _openChanged = new EventEmitter<boolean>(false);\n\n @Input('clrModalClosable') closable = true;\n @Input('clrModalCloseButtonAriaLabel') closeButtonAriaLabel = this.commonStrings.keys.close;\n @Input('clrModalSize') size: string;\n @Input('clrModalStaticBackdrop') staticBackdrop = true;\n @Input('clrModalSkipAnimation') skipAnimation = 'false';\n\n @Input('clrModalPreventClose') stopClose = false;\n @Output('clrModalAlternateClose') altClose = new EventEmitter<boolean>(false);\n\n @Input('clrModalLabelledById') labelledBy = this.modalId;\n\n // presently this is only used by inline wizards\n @Input('clrModalOverrideScrollService') bypassScrollService = false;\n\n constructor(\n private _scrollingService: ScrollingService,\n public commonStrings: ClrCommonStringsService,\n private modalStackService: ModalStackService\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 && Object.prototype.hasOwnProperty.call(changes, '_open')) {\n if (changes._open.currentValue) {\n this._scrollingService.stopScrolling();\n this.modalStackService.trackModalOpen(this);\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 this.modalStackService.trackModalOpen(this);\n }\n\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 }\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 this.modalStackService.trackModalClose(this);\n }\n }\n}\n","<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software 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=\"modal\" *ngIf=\"_open\">\n <!--fixme: revisit when ngClass works with exit animation-->\n <div\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\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]=\"labelledBy\"\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}}\" cdkFocusInitial tabindex=\"-1\">\n <ng-content select=\".modal-title\"></ng-content>\n </div>\n <button\n type=\"button\"\n [attr.aria-label]=\"closeButtonAriaLabel || 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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({\n selector: '.modal-body',\n})\nexport class ClrModalBody implements OnDestroy {\n private tabindex = '0';\n private unlisteners: VoidFunction[] = [];\n private observer: ResizeObserver;\n\n constructor(private readonly renderer: Renderer2, private readonly host: ElementRef<HTMLElement>, ngZone: NgZone) {\n ngZone.runOutsideAngular(() => {\n this.observer = new ResizeObserver(() => this.addOrRemoveTabIndex());\n this.observer.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 this.observer.disconnect();\n this.observer = null;\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 && modalBody.clientHeight < modalBody.scrollHeight) {\n this.addTabIndex();\n } else {\n this.removeTabIndex();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, windowCloseIcon } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../icon/icon.module';\nimport { CdkTrapFocusModule } from '../utils/cdk/cdk-trap-focus.module';\nimport { ClrModal } from './modal';\nimport { ClrModalBody } from './modal-body';\n\nexport const CLR_MODAL_DIRECTIVES: Type<any>[] = [ClrModal, ClrModalBody];\n\n@NgModule({\n imports: [CommonModule, CdkTrapFocusModule, ClrIconModule],\n declarations: [CLR_MODAL_DIRECTIVES],\n exports: [CLR_MODAL_DIRECTIVES, ClrIconModule],\n})\nexport class ClrModalModule {\n constructor() {\n ClarityIcons.addIcons(windowCloseIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { Component, ElementRef, Inject, Injector, Input, OnDestroy, Optional, PLATFORM_ID } from '@angular/core';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { uniqueIdFactory } from '../../utils/id-generator/id-generator.service';\nimport { AbstractPopover } from '../common/abstract-popover';\nimport { POPOVER_HOST_ANCHOR } from '../common/popover-host-anchor.token';\nimport { SignpostFocusManager } from './providers/signpost-focus-manager.service';\nimport { SignpostIdService } from './providers/signpost-id.service';\nimport { SIGNPOST_POSITIONS } from './signpost-positions';\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\" tabindex=\"0\">\n <ng-content></ng-content>\n </div>\n </div>\n `,\n host: { '[class.signpost-content]': 'true', '[id]': 'signpostContentId' },\n})\nexport class ClrSignpostContent extends AbstractPopover implements OnDestroy {\n signpostContentId = uniqueIdFactory();\n\n private document: Document;\n private _position: string;\n\n constructor(\n injector: Injector,\n @Optional()\n @Inject(POPOVER_HOST_ANCHOR)\n parentHost: ElementRef,\n public commonStrings: ClrCommonStringsService,\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(this.signpostContentId);\n\n this.document = document;\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 get position() {\n return this._position;\n }\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 /**********\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 override ngOnDestroy() {\n super.ngOnDestroy();\n\n if (isPlatformBrowser(this.platformId) && this.el.nativeElement.contains(this.document.activeElement)) {\n this.signpostFocusManager.focusTrigger();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 = new Subject<string>();\n\n get id(): Observable<string> {\n return this._id.asObservable();\n }\n\n updateId(id: string) {\n this._id.next(id);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrPopoverToggleService } from '../../../utils/popover/providers/popover-toggle.service';\n\n@Injectable()\nexport class TooltipMouseService {\n private mouseOverTrigger: boolean;\n private mouseOverContent: boolean;\n\n constructor(private readonly toggleService: ClrPopoverToggleService) {}\n\n onMouseEnterTrigger() {\n this.mouseOverTrigger = true;\n this.toggleService.open = true;\n }\n\n onMouseLeaveTrigger() {\n this.mouseOverTrigger = false;\n this.hideIfMouseOut();\n }\n\n onMouseEnterContent() {\n this.mouseOverContent = true;\n }\n\n onMouseLeaveContent() {\n this.mouseOverContent = false;\n this.hideIfMouseOut();\n }\n\n private hideIfMouseOut() {\n // A zero timeout is used so that the code has a chance to update\n // the `mouseOverContent` property after the user moves the mouse from the trigger to the content.\n setTimeout(() => {\n if (!this.mouseOverTrigger && !this.mouseOverContent) {\n this.toggleService.open = false;\n }\n }, 0);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrPopoverHostDirective } from '../../utils/popover/popover-host.directive';\nimport { TooltipIdService } from './providers/tooltip-id.service';\nimport { TooltipMouseService } from './providers/tooltip-mouse.service';\n\n@Component({\n selector: 'clr-tooltip',\n template: `<ng-content></ng-content>`,\n host: {\n '[class.tooltip]': 'true',\n },\n providers: [TooltipIdService, TooltipMouseService],\n hostDirectives: [ClrPopoverHostDirective],\n})\nexport class ClrTooltip {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 assertNever(value: never) {\n throw new Error(`Unhandled value: ${value}`);\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, HostListener, Inject, Injector, Input, OnInit, Optional } from '@angular/core';\n\nimport { assertNever } from '../../utils/assert/assert.helpers';\nimport { uniqueIdFactory } from '../../utils/id-generator/id-generator.service';\nimport { AbstractPopover } from '../common/abstract-popover';\nimport { Point } from '../common/popover';\nimport { POPOVER_HOST_ANCHOR } from '../common/popover-host-anchor.token';\nimport { TooltipIdService } from './providers/tooltip-id.service';\nimport { TooltipMouseService } from './providers/tooltip-mouse.service';\n\nconst POSITIONS = ['bottom-left', 'bottom-right', 'top-left', 'top-right', 'right', 'left'] as const;\ntype Position = typeof POSITIONS[number];\n\nconst SIZES = ['xs', 'sm', 'md', 'lg'];\n\nconst defaultPosition = 'right';\nconst defaultSize = 'sm';\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 implements OnInit {\n private _id: string;\n private _position: string;\n private _size: string;\n\n constructor(\n injector: Injector,\n @Optional()\n @Inject(POPOVER_HOST_ANCHOR)\n parentHost: ElementRef,\n private tooltipIdService: TooltipIdService,\n private tooltipMouseService: TooltipMouseService\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 // Set the default id in case consumer does not supply a custom id.\n this.id = uniqueIdFactory();\n }\n\n @Input()\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n const id = value || '';\n\n this._id = id;\n this.tooltipIdService.updateId(id);\n }\n\n @Input('clrPosition')\n get position() {\n return this._position;\n }\n set position(value: string) {\n const oldPosition = this._position;\n const newPosition = POSITIONS.includes(value as any) ? (value as Position) : defaultPosition;\n\n this._position = newPosition;\n this.updateCssClass({ oldClass: `tooltip-${oldPosition}`, newClass: `tooltip-${newPosition}` });\n\n // set the popover values based on direction\n switch (newPosition) {\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 assertNever(newPosition);\n }\n }\n\n @Input('clrSize')\n get size() {\n return this._size;\n }\n set size(value: string) {\n const oldSize = this._size;\n const newSize = SIZES.includes(value) ? value : defaultSize;\n\n this._size = newSize;\n this.updateCssClass({ oldClass: `tooltip-${oldSize}`, newClass: `tooltip-${newSize}` });\n }\n\n ngOnInit() {\n this.size = this.size || defaultSize;\n this.position = this.position || defaultPosition;\n }\n\n @HostListener('mouseenter')\n private onMouseEnter() {\n this.tooltipMouseService.onMouseEnterContent();\n }\n\n @HostListener('mouseleave')\n private onMouseLeave() {\n this.tooltipMouseService.onMouseLeaveContent();\n }\n\n private updateCssClass({ oldClass, newClass }: { oldClass: string; newClass: string }) {\n this.renderer.removeClass(this.el.nativeElement, oldClass);\n this.renderer.addClass(this.el.nativeElement, newClass);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { Subscription } from 'rxjs';\n\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { TooltipIdService } from './providers/tooltip-id.service';\nimport { TooltipMouseService } from './providers/tooltip-mouse.service';\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 ariaDescribedBy: string;\n private subs: Subscription[] = [];\n\n constructor(\n private toggleService: ClrPopoverToggleService,\n private tooltipIdService: TooltipIdService,\n private tooltipMouseService: TooltipMouseService\n ) {\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 ngOnDestroy() {\n this.subs.forEach(sub => sub.unsubscribe());\n }\n\n @HostListener('focus')\n showTooltip(): void {\n this.toggleService.open = true;\n }\n\n @HostListener('blur')\n hideTooltip(): void {\n this.toggleService.open = false;\n }\n\n @HostListener('mouseenter')\n private onMouseEnter() {\n this.tooltipMouseService.onMouseEnterTrigger();\n }\n\n @HostListener('mouseleave')\n private onMouseLeave() {\n this.tooltipMouseService.onMouseLeaveTrigger();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrDropdownModule } from './dropdown/dropdown.module';\nimport { ClrSignpostModule } from './signpost/signpost.module';\nimport { ClrTooltipModule } from './tooltip/tooltip.module';\n\n@NgModule({\n exports: [ClrDropdownModule, ClrSignpostModule, ClrTooltipModule],\n})\nexport class ClrPopoverModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, HostBinding, Input } from '@angular/core';\n\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 @Input('clrMax') max: number | string = 100;\n @Input('clrDisplayval') displayval: string;\n\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 @Input('clrValue') value: number | string = 0;\n\n @HostBinding('attr.id') externalId = '';\n\n private _ID: string;\n private _labeled: boolean;\n private _fade: boolean;\n private _loop: boolean;\n private _success: boolean;\n private _danger: boolean;\n private _flash: boolean;\n private _flashDanger: boolean;\n\n @Input()\n get id() {\n return this._ID;\n }\n set id(value: string) {\n this._ID = value;\n this.externalId = null;\n }\n\n @HostBinding('class.progress')\n get progressClass() {\n return true;\n }\n\n @Input('clrLabeled')\n set clrLabeled(value: boolean | string) {\n this._labeled = isBooleanAttributeSet(value);\n }\n\n @HostBinding('class.labeled')\n get labeledClass() {\n return this._labeled;\n }\n\n @Input('clrFade')\n set clrFade(value: boolean | string) {\n this._fade = isBooleanAttributeSet(value);\n }\n\n @HostBinding('class.progress-fade')\n get fadeClass() {\n return this._fade;\n }\n\n @Input('clrLoop')\n set clrLoop(value: boolean | string) {\n this._loop = isBooleanAttributeSet(value);\n }\n\n @HostBinding('class.loop')\n get loopClass() {\n return this._loop;\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 @HostBinding('class.success')\n get successClass() {\n return this._success;\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 @HostBinding('class.danger')\n get dangerClass() {\n return this._danger;\n }\n\n @Input('clrFlash')\n set clrFlash(value: boolean | string) {\n this._flash = isBooleanAttributeSet(value);\n }\n\n @HostBinding('class.flash')\n get flashClass() {\n return this._flash;\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 @HostBinding('class.flash-danger')\n get flashDangerClass() {\n return this._flashDanger;\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 * Display optional text only when labeled is eneabled\n */\n displayStringValue() {\n return this._labeled;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrTimelineStepState } from '../enums/timeline-step-state.enum';\nimport { IconAttributes } from '../interface/icon-attribute.interface';\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 getAriaLabel(step: ClrTimelineStepState): string {\n return this.attributeMap.get(step).ariaLabel;\n }\n\n getIconShape(step: ClrTimelineStepState): string {\n return this.attributeMap.get(step).iconShape;\n }\n\n getIconStatus(step: ClrTimelineStepState): string {\n return this.attributeMap.get(step).iconStatus;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, HostBinding, Input } 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { 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';\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 role=\"img\"\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 @ContentChild(ClrTimelineStepTitle, { read: ElementRef }) stepTitle: ElementRef;\n\n stepTitleText: string;\n\n constructor(\n private iconAttributeService: TimelineIconAttributeService,\n @Inject(PLATFORM_ID) private platformId: any\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 ngAfterContentInit() {\n if (this.stepTitle && isPlatformBrowser(this.platformId)) {\n this.stepTitleText = this.stepTitle.nativeElement.innerText;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 buttonsReady = false;\n\n private _previousBtnClicked = new Subject<any>();\n private _nextBtnClicked = new Subject<any>();\n private _dangerBtnClicked = new Subject<any>();\n private _cancelBtnClicked = new Subject<any>();\n private _finishBtnClicked = new Subject<any>();\n private _customBtnClicked = new Subject<any>();\n\n get previousBtnClicked(): Observable<any> {\n return this._previousBtnClicked.asObservable();\n }\n\n get nextBtnClicked(): Observable<any> {\n return this._nextBtnClicked.asObservable();\n }\n\n get dangerBtnClicked(): Observable<any> {\n return this._dangerBtnClicked.asObservable();\n }\n\n get cancelBtnClicked(): Observable<any> {\n return this._cancelBtnClicked.asObservable();\n }\n\n get finishBtnClicked(): Observable<any> {\n return this._finishBtnClicked.asObservable();\n }\n\n get customBtnClicked(): Observable<any> {\n return this._customBtnClicked.asObservable();\n }\n\n 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 pages: QueryList<ClrWizardPage>;\n\n /**\n *\n * @memberof PageCollectionService\n */\n private _pagesReset = new Subject<boolean>();\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 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 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 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 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 get firstPage(): ClrWizardPage {\n if (!this.pagesCount) {\n return null;\n }\n\n return this.pagesAsArray[0];\n }\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 get pagesReset(): Observable<boolean> {\n return this._pagesReset.asObservable();\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 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 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 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 * 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 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 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 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 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 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 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 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 /**\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 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 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 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 findFirstIncompletePage(): ClrWizardPage {\n const myIncompleteIndex = this.findFirstIncompletePageIndex();\n return this.pagesAsArray[myIncompleteIndex];\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 * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, Subject } from 'rxjs';\nimport { Subscription } from 'rxjs';\n\nimport { ClrWizardPage } from '../wizard-page';\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 previousButtonSubscription: Subscription;\n\n /**\n * Is notified when a Next button is clicked in the wizard.\n *\n * @memberof WizardNavigationService\n */\n nextButtonSubscription: Subscription;\n\n /**\n * Is notified when a danger button is clicked in the wizard.\n *\n * @memberof WizardNavigationService\n */\n dangerButtonSubscription: Subscription;\n\n /**\n * Is notified when a finish button is clicked in the wizard.\n *\n * @memberof WizardNavigationService\n */\n finishButtonSubscription: Subscription;\n\n /**\n * Is notified when a Custom button is clicked in the wizard.\n *\n * @memberof WizardNavigationService\n */\n 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 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 pagesResetSubscription: Subscription;\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 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 forceForwardNavigation = false;\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 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 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 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 wizardDisableStepnav = false;\n\n /**\n * @memberof WizardNavigationService\n */\n private _currentPage: ClrWizardPage;\n\n /**\n *\n * @memberof WizardNavigationService\n */\n private _currentChanged = new Subject<ClrWizardPage>();\n\n /**\n * @memberof WizardNavigationService\n */\n private _movedToNextPage = new Subject<boolean>();\n\n /**\n * @memberof WizardNavigationService\n */\n private _wizardFinished = new Subject<boolean>();\n\n /**\n * @memberof WizardNavigationService\n */\n private _movedToPreviousPage = new Subject<boolean>();\n\n /**\n * @memberof WizardNavigationService\n */\n private _cancelWizard = new Subject<any>();\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 * 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 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 * @memberof WizardNavigationService\n */\n 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 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 get currentPageIsLast(): boolean {\n return this.pageCollection.lastPage === this.currentPage;\n }\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 * 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 get movedToNextPage(): Observable<boolean> {\n return this._movedToNextPage.asObservable();\n }\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 get wizardFinished(): Observable<boolean> {\n return this._wizardFinished.asObservable();\n }\n\n /**\n * Notifies the wizard when backwards navigation has occurred via the\n * previous button.\n *\n * @memberof WizardNavigationService\n */\n get movedToPreviousPage(): Observable<boolean> {\n return this._movedToPreviousPage.asObservable();\n }\n\n /**\n * Notifies the wizard that a user is trying to cancel it.\n *\n * @memberof WizardNavigationService\n */\n get notifyWizardCancel(): Observable<any> {\n return this._cancelWizard.asObservable();\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 * 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 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 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 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 finish(): void {\n this.checkAndCommitCurrentPage('finish');\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 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 * 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 cancel(): void {\n this._cancelWizard.next();\n }\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 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 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 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 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 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\n\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 wizardHeaderActions: QueryList<ClrWizardHeaderAction>;\n\n constructor(public navService: WizardNavigationService) {}\n\n get wizardHasHeaderActions(): boolean {\n const wizardHdrActions = this.wizardHeaderActions;\n if (!wizardHdrActions) {\n return false;\n }\n return wizardHdrActions.toArray().length > 0;\n }\n\n get currentPageHasHeaderActions(): boolean {\n return this.navService.currentPage ? this.navService.currentPage.hasHeaderActions : false;\n }\n\n get showWizardHeaderActions(): boolean {\n return !this.currentPageHasHeaderActions && this.wizardHasHeaderActions;\n }\n\n get displayHeaderActionsWrapper(): boolean {\n return this.currentPageHasHeaderActions || this.wizardHasHeaderActions;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 @Input('clrWizardHeaderActionDisabled') disabled = false;\n\n @Output('actionClicked') headerActionClicked = new EventEmitter<string>(false);\n\n get id(): string {\n return `clr-wizard-header-action-${this._id}`;\n }\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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({\n selector: '[clrPageButtons]',\n})\nexport class ClrWizardPageButtons {\n constructor(public pageButtonsTemplateRef: TemplateRef<any>) {}\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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({\n selector: '[clrPageHeaderActions]',\n})\nexport class ClrWizardPageHeaderActions {\n constructor(public pageHeaderActionsTemplateRef: TemplateRef<any>) {}\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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({\n selector: '[clrPageNavTitle]',\n})\nexport class ClrWizardPageNavTitle {\n constructor(public pageNavTitleTemplateRef: TemplateRef<any>) {}\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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, TemplateRef } from '@angular/core';\n\nimport { HeadingLevel } from './heading-level';\n\n@Directive({\n selector: '[clrPageTitle]',\n})\nexport class ClrWizardPageTitle {\n @Input('clrHeadingLevel') headingLevel: HeadingLevel;\n\n constructor(public pageTitleTemplateRef: TemplateRef<any>) {}\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 * 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 * 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') preventDefault: boolean | string = false;\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 = new EventEmitter<boolean>();\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') previousStepDisabledChange = new EventEmitter<boolean>();\n\n /**\n *\n * @memberof WizardPage\n *\n */\n @Output('clrWizardPagePreventDefaultCancelChange') stopCancelChange = new EventEmitter<boolean>();\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 = 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 = new EventEmitter<string>();\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 = new EventEmitter<ClrWizardPage>();\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 = new EventEmitter<ClrWizardPage>();\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 = new EventEmitter<ClrWizardPage>();\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 = new EventEmitter<ClrWizardPage>();\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 = new EventEmitter<ClrWizardPage>();\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 = new EventEmitter<string>();\n\n @Output('clrWizardPageCustomButton') customButtonClicked = new EventEmitter<string>();\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 }) 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 }) 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 }) _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 }) _headerActions: ClrWizardPageHeaderActions;\n\n /**\n *\n * @memberof WizardPage\n *\n */\n private _nextStepDisabled = false;\n\n /**\n *\n * @memberof WizardPage\n *\n */\n private _previousStepDisabled = false;\n\n /**\n *\n * @memberof WizardPage\n *\n */\n private _hasError = false;\n\n /**\n *\n * @memberof WizardPage\n *\n */\n private _stopCancel = false;\n\n /**\n *\n * @memberof WizardPage\n *\n */\n private _stopNext = false;\n\n /**\n *\n * @memberof WizardPage\n *\n */\n private _complete = false;\n\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 * A property 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 @Input('clrWizardPageNextDisabled')\n get nextStepDisabled(): boolean {\n return this._nextStepDisabled;\n }\n 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 * A property 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 @Input('clrWizardPagePreviousDisabled')\n get previousStepDisabled(): boolean {\n return this._previousStepDisabled;\n }\n 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 * 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 get hasError(): boolean {\n return this._hasError;\n }\n set hasError(val: boolean) {\n const valBool = !!val;\n if (valBool !== this._hasError) {\n this._hasError = valBool;\n }\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 get stopCancel(): boolean {\n return this._stopCancel;\n }\n 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 * 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 get stopNext(): boolean {\n return this._stopNext;\n }\n set stopNext(val: boolean) {\n const valBool = !!val;\n if (valBool !== this._stopNext) {\n this._stopNext = valBool;\n }\n }\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 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 get readyToComplete(): boolean {\n return !this.nextStepDisabled;\n }\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 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 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 get current(): boolean {\n return this.navService.currentPage === this;\n }\n\n 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 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 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 get title(): TemplateRef<any> {\n return this.pageTitle.pageTitleTemplateRef;\n }\n\n /**\n *\n * @memberof WizardPage\n *\n */\n 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 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 get hasHeaderActions(): boolean {\n return !!this._headerActions;\n }\n\n /**\n *\n * @memberof WizardPage\n *\n */\n 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 get hasButtons(): boolean {\n return !!this._buttons;\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 get stepItemId(): string {\n return this.pageCollection.getStepItemIdForPage(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 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 * 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 makeCurrent(): void {\n this.navService.currentPage = this;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 } from '@angular/core';\n\nimport { HeadingLevel } from './heading-level';\n\n@Directive({\n selector: 'clr-wizard-title',\n})\nexport class ClrWizardTitle {\n @Input('clrHeadingLevel') headingLevel: HeadingLevel;\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrCommonStringsService } from '../utils';\nimport { PageCollectionService } from './providers/page-collection.service';\nimport { WizardNavigationService } from './providers/wizard-navigation.service';\nimport { ClrWizardPage } from './wizard-page';\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]': 'page.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') page: ClrWizardPage;\n\n constructor(\n public navService: WizardNavigationService,\n public pageCollection: PageCollectionService,\n public commonStrings: ClrCommonStringsService\n ) {}\n\n get id(): string {\n this.pageGuard();\n return this.pageCollection.getStepItemIdForPage(this.page);\n }\n\n get stepAriaCurrent(): string {\n return this.isCurrent && 'step';\n }\n\n get isDisabled(): boolean {\n this.pageGuard();\n return this.page.disabled || this.navService.wizardStopNavigation || this.navService.wizardDisableStepnav;\n }\n\n get isCurrent(): boolean {\n this.pageGuard();\n return this.page.current;\n }\n\n get isComplete(): boolean {\n this.pageGuard();\n return this.page.completed;\n }\n\n get hasError(): boolean {\n this.pageGuard();\n return this.page.hasError && this.isComplete;\n }\n\n 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 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","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 AfterContentInit,\n Component,\n ContentChild,\n ContentChildren,\n DoCheck,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n IterableDiffers,\n OnDestroy,\n Output,\n PLATFORM_ID,\n QueryList,\n ViewChild,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { ClrCommonStringsService } from '../utils';\nimport { uniqueIdFactory } from '../utils/id-generator/id-generator.service';\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';\nimport { ClrWizardTitle } from './wizard-title';\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 aria-label for the stepnav section of the wizard. Set using `[clrWizardStepnavAriaLabel]` input.\n */\n @Input('clrWizardStepnavAriaLabel') stepnavAriaLabel = this.commonStrings.keys.wizardStepnavAriaLabel;\n\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 * 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 @Input('clrWizardPreventModalAnimation') _stopModalAnimations = false;\n\n /**\n * Emits when the wizard is opened or closed.\n * Listen via `(clrWizardOpenChange)` event.\n */\n @Output('clrWizardOpenChange') _openChanged = 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 = 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 = new EventEmitter<any>(false);\n\n /**\n * Emits when the wizard is reset. Listen via `(clrWizardOnReset)` event.\n */\n @Output('clrWizardOnReset') onReset = 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 = 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 = 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 @Output('clrWizardOnPrevious') onMovePrevious = new EventEmitter<any>(false);\n\n @ViewChild('pageTitle') pageTitle: ElementRef;\n @ContentChildren(ClrWizardPage, { descendants: true }) pages: QueryList<ClrWizardPage>;\n @ContentChildren(ClrWizardHeaderAction) headerActions: QueryList<ClrWizardHeaderAction>;\n\n _open = false;\n wizardId = uniqueIdFactory();\n\n @ContentChild(ClrWizardTitle) protected wizardTitle: ClrWizardTitle;\n\n private _forceForward = false;\n private _stopNext = false;\n private _stopCancel = false;\n private _stopNavigation = false;\n private _disableStepnav = false;\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 private commonStrings: ClrCommonStringsService,\n public navService: WizardNavigationService,\n public pageCollection: PageCollectionService,\n public buttonService: ButtonHubService,\n public headerActionService: HeaderActionService,\n private elementRef: ElementRef<HTMLElement>,\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 /**\n * Resets page completed states when navigating backwards.\n * Set using `[clrWizardForceForwardNavigation]` input.\n */\n @Input('clrWizardForceForwardNavigation')\n get forceForward(): boolean {\n return this._forceForward;\n }\n set forceForward(value: boolean) {\n this._forceForward = !!value;\n this.navService.forceForwardNavigation = value;\n }\n\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 get stopNext(): boolean {\n return this._stopNext;\n }\n set stopNext(value: boolean) {\n this._stopNext = !!value;\n this.navService.wizardHasAltNext = value;\n }\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 get stopCancel(): boolean {\n return this._stopCancel;\n }\n set stopCancel(value: boolean) {\n this._stopCancel = !!value;\n this.navService.wizardHasAltCancel = value;\n }\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 get stopNavigation(): boolean {\n return this._stopNavigation;\n }\n set stopNavigation(value: boolean) {\n this._stopNavigation = !!value;\n this.navService.wizardStopNavigation = value;\n }\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 get disableStepnav(): boolean {\n return this._disableStepnav;\n }\n set disableStepnav(value: boolean) {\n this._disableStepnav = !!value;\n this.navService.wizardDisableStepnav = value;\n }\n\n get currentPage(): ClrWizardPage {\n return this.navService.currentPage;\n }\n set currentPage(page: ClrWizardPage) {\n this.navService.goTo(page, true);\n }\n\n get isLast(): boolean {\n return this.navService.currentPageIsLast;\n }\n\n get isFirst(): boolean {\n return this.navService.currentPageIsFirst;\n }\n\n get isInline(): boolean {\n return this.elementRef.nativeElement.classList.contains('clr-wizard--inline');\n }\n\n get stopModalAnimations(): string {\n return this._stopModalAnimations ? 'true' : 'false';\n }\n\n ngAfterContentInit(): void {\n this.pageCollection.pages = this.pages;\n this.headerActionService.wizardHeaderActions = this.headerActions;\n this.initializeButtons();\n }\n\n ngDoCheck(): void {\n this.updateNavOnPageChanges();\n }\n\n 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 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 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 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 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 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 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 wizards default\n * functionality from scratch.\n */\n 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 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 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 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 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 wizards 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` components `id` input.\n */\n goTo(pageId: string): void {\n if (!pageId) {\n return;\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 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.pageTitle?.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.pageTitle?.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(() => {\n // Added to address VPAT-749:\n // When clicking on a wizard tab, focus should move to that\n // tabs content to make the wizard more accessible.\n this.pageTitle?.nativeElement.focus();\n this.currentPageChanged.emit();\n });\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-2023 VMware, Inc. All Rights Reserved.\n ~ This software 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]=\"isInline\"\n [clrModalPreventClose]=\"true\"\n (clrModalAlternateClose)=\"modalCancel()\"\n [clrModalLabelledById]=\"wizardId\"\n>\n <div class=\"modal-nav clr-wizard-stepnav-wrapper\" role=\"region\" [attr.aria-label]=\"stepnavAriaLabel\">\n <div class=\"clr-wizard-title\" id=\"{{wizardId}}\" role=\"heading\" [attr.aria-level]=\"wizardTitle.headingLevel || 1\">\n <ng-content select=\"clr-wizard-title\"></ng-content>\n </div>\n <clr-wizard-stepnav></clr-wizard-stepnav>\n </div>\n\n <div class=\"modal-title\" role=\"heading\" [attr.aria-level]=\"navService.currentPage.pageTitle.headingLevel || 2\">\n <span tabindex=\"-1\" #pageTitle 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 </div>\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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') type = '';\n\n @Input('clrWizardButtonDisabled') disabled = false;\n\n @Input('clrWizardButtonHidden') hidden = false;\n\n // EventEmitter which is emitted when a button is clicked.\n @Output('clrWizardButtonClicked') wasClicked = new EventEmitter<string>(false);\n\n constructor(public navService: WizardNavigationService, public buttonService: ButtonHubService) {}\n\n get isCancel(): boolean {\n return this.checkDefaultAndCustomType(this.type, 'cancel');\n }\n\n get isNext(): boolean {\n return this.checkDefaultAndCustomType(this.type, 'next');\n }\n\n get isPrevious(): boolean {\n return this.checkDefaultAndCustomType(this.type, 'previous');\n }\n\n get isFinish(): boolean {\n return this.checkDefaultAndCustomType(this.type, 'finish');\n }\n\n get isDanger(): boolean {\n return this.checkDefaultAndCustomType(this.type, 'danger');\n }\n\n get isPrimaryAction(): boolean {\n return this.isNext || this.isDanger || this.isFinish;\n }\n\n get _disabledAttribute(): string | null {\n if (this.isDisabled) {\n return '';\n }\n return null;\n }\n\n 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 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 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","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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';\nimport { ClrWizard } from './wizard';\nimport { ClrWizardButton } from './wizard-button';\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';\nimport { ClrWizardTitle } from './wizard-title';\n\nexport const CLR_WIZARD_DIRECTIVES: any[] = [\n ClrWizard,\n ClrWizardPage,\n ClrWizardStepnav,\n ClrWizardStepnavItem,\n ClrWizardButton,\n ClrWizardHeaderAction,\n ClrWizardTitle,\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrStepperModule } from './accordion/stepper/stepper.module';\nimport { ClrButtonModule } from './button/button.module';\nimport { ClrDataModule } from './data/data.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 { ClrProgressBarModule } from './progress/progress-bars/progress-bar.module';\nimport { ClrSpinnerModule } from './progress/spinner/spinner.module';\nimport { ClrTimelineModule } from './timeline/timeline.module';\nimport { ClrConditionalModule } from './utils/conditional/conditional.module';\nimport { ClrFocusOnViewInitModule } from './utils/focus/focus-on-view-init/focus-on-view-init.module';\nimport { ClrLoadingModule } from './utils/loading/loading.module';\nimport { ClrPopoverModuleNext } from './utils/popover/popover.module';\nimport { ClrWizardModule } from './wizard/wizard.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 ClrFocusOnViewInitModule,\n ClrButtonModule,\n ClrFormsModule,\n ClrLayoutModule,\n ClrPopoverModule,\n ClrWizardModule,\n ClrStepperModule,\n ClrSpinnerModule,\n ClrProgressBarModule,\n ClrPopoverModuleNext,\n ClrTimelineModule,\n ],\n})\nexport class ClarityModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 { ClrDatagridComparatorInterface } from './comparator.interface';\n\nexport interface ClrDatagridStateInterface<T = any> {\n page?: { from?: number; to?: number; size?: number; current?: number };\n sort?: { by: string | ClrDatagridComparatorInterface<T>; reverse: boolean };\n filters?: any[];\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 interface ClrDatagridFilterInterface<T, S = any> {\n readonly state?: S;\n\n changes: Observable<any>;\n\n isActive(): boolean;\n\n accepts(item: T): boolean;\n\n equals?(other: ClrDatagridFilterInterface<T, any>): boolean;\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 interface ClrDatagridStringFilterInterface<T> {\n accepts(item: T, search: string): boolean;\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 interface ClrDatagridNumericFilterInterface<T> {\n accepts(item: T, low: number, high: number): boolean;\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 interface ClrDatagridComparatorInterface<T> {\n compare(a: T, b: T): number;\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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-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 { ClrDatagridItemsTrackByFunction } from './providers/items';\n\nexport { ClrDatagridSelectionCellDirective as ÇlrDatagridSelectionCellDirective } from './datagrid-selection-cell.directive';\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-view.module';\nexport * from './stack-view-custom-tags';\nexport * from './stack-content-input';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 './emphasis.module';\nexport * from './alert/index';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 './date-input.validator';\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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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/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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 './icon';\nexport * from './icon.module';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-willy-wonka';\nexport * from './nav-detection-oompa-loompa';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 './chocolate/index';\nexport * from './header';\nexport * from './nav-level';\nexport * from './aria-current-link';\nexport * from './navigation.module';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 './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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 './modal';\nexport * from './modal.module';\nexport * from './modal-body';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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/index';\nexport * from './popover.module';\nexport * from './signpost/index';\nexport * from './tooltip/index';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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 type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6 | '1' | '2' | '3' | '4' | '5' | '6';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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-title';\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\nexport * from './heading-level';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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-2023 VMware, Inc. All Rights Reserved.\n * This software 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 * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.LoadingListener","i1.ClrCommonStringsService","i2.AccordionService","i3.IfExpandService","i4","i5.CdsIconCustomTag","i1.AccordionService","i1.WillyWonka","i1.AccordionWillyWonka","i2.IfExpandService","declarations","i2","i3.StepperService","i4.IfExpandService","i1.ClrStepperPanel","i2.StepperService","i1.StepperWillyWonka","i1.ClrPopoverEventsService","i2.ClrPopoverToggleService","i1.ClrPopoverPositionService","i2.ClrPopoverEventsService","i3.ClrPopoverToggleService","i1.ClrPopoverToggleService","i1.ButtonInGroupService","FocusService","i1.ClrStopEscapePropagationDirective","i1.DomAdapter","tokenFactory","i1.IfExpandService","i1.FocusService","i3.ClrCommonStringsService","i4.ClrDestroyService","i5.ButtonGroupFocusHandler","i7","i8.CdsIconCustomTag","i9.ClrPopoverAnchor","i10.ClrPopoverOpenCloseButton","i11.ClrPopoverContent","i1","counter","i1.ControlIdService","i2.ContainerIdService","i1.NgControlService","i2.LayoutService","i3.NgControlService","i1.LayoutService","i1.IfControlStateService","i3.ControlClassService","i4.NgControlService","i2.CdsIconCustomTag","i3.ClrLabel","i2.MarkControlService","i2.NgControlService","i2.ClrLabel","i2.ControlClassService","i4.IfControlStateService","i6.CdsIconCustomTag","i7.ClrLabel","i5.ComboboxContainerService","i6","i7.CdsIconCustomTag","i8.ClrLabel","OptionProxy","i2.ComboboxFocusHandler","i3.OptionSelectionService","i1.OptionSelectionService","i2.ClrCommonStringsService","i3.ComboboxFocusHandler","i4.ClrPopoverToggleService","i6.ClrSpinner","i8.ComboboxFocusHandler","i9.ClrPopoverHostDirective","i10","i11.CdsIconCustomTag","i12.ClrRovingTabindex","i13.ClrKeyFocusItem","i14.ClrPopoverAnchor","i15.ClrPopoverOpenCloseButton","i16.ClrPopoverContent","i2.ClrPopoverPositionService","i1.DatalistIdService","i1.ControlClassService","i4.FocusService","i5.IfControlStateService","i3.DatalistIdService","i1.LocaleHelperService","i1.DateNavigationService","i3.DateFormControlService","i4.ClrCommonStringsService","i2.DateNavigationService","i3.DatepickerFocusService","i4.DateIOService","i6.ClrDay","i1.ViewManagerService","i2.LocaleHelperService","i3.DateNavigationService","i4.DatepickerFocusService","i2.ViewManagerService","i3.LocaleHelperService","i6.ClrCalendar","i3","i4.ClrMonthpicker","i5.ClrYearpicker","i6.ClrDaypicker","i3.DatepickerEnabledService","i4.DateFormControlService","i5.DateIOService","i6.ClrCommonStringsService","i7.FocusService","i8.ViewManagerService","i9.ControlClassService","i10.LayoutService","i11.NgControlService","i12.IfControlStateService","i13.ClrPopoverHostDirective","i14","i15.CdkTrapFocusModule_CdkTrapFocus","i16.ClrPopoverAnchor","i17.ClrPopoverOpenCloseButton","i18.ClrPopoverContent","i19.CdsIconCustomTag","i20.ClrLabel","i21.ClrDatepickerViewManager","i8.DatepickerFocusService","i1.DateIOService","i9.ClrLabel","i6.ClrLabel","i4.ControlIdService","i1.ClrExpandableAnimation","i1.OutsideClick","i1.StateDebouncer","i1.Page","i2.StateDebouncer","i1.FiltersProvider","i4.CdkTrapFocusModule_CdkTrapFocus","i6.ClrPopoverAnchor","i7.ClrPopoverCloseButton","i8.ClrPopoverOpenCloseButton","i9.ClrPopoverContent","i2.DomAdapter","i5","i6.ClrDatagridFilter","i1.DatagridWillyWonka","i2.RowActionService","i1.ModalStackService","i1.DetailService","i2.ExpandableRowsCount","i2.DatagridRenderOrganizer","i4.CdkDragModule_CdkDrag","i1.Sort","i2.FiltersProvider","i3.DetailService","i4.ClrPopoverHostDirective","i7.ClrDatagridColumnSeparator","i8.DatagridNumericFilter","i9.DatagridStringFilter","i2.Sort","i3.Page","i1.Items","i3.SignpostIdService","i4.SignpostFocusManager","i2.ClrPopoverHostDirective","i4.CdsIconCustomTag","i5.ClrSignpostTrigger","nbRow","i1.DatagridRenderOrganizer","i1.Selection","i9","i10.CdsIconCustomTag","i11.ClrLabel","i12.ClrCheckbox","i13.ClrCheckboxWrapper","i14.ClrRadio","i15.ClrRadioWrapper","i16","i17.ClrExpandableAnimation","i18.ClrSpinner","i19.ClrDatagridSelectionCellDirective","i4.StateDebouncer","i9.Page","i10.ClrCommonStringsService","i11.ColumnsService","i12.KeyNavigationGridController","i13","i14.ClrLabel","i15","i16.ClrSpinner","i17.ClrDatagridPlaceholder","i18.ClrDatagridSelectionCellDirective","i5.CdkTrapFocusModule_CdkTrapFocus","i7.ClrPopoverAnchor","i10.ClrKeyFocus","i2.ColumnsService","i6.CdkTrapFocusModule_CdkTrapFocus","i9.ClrCheckbox","i10.ClrCheckboxWrapper","i11","i12.ClrPopoverAnchor","i13.ClrPopoverCloseButton","i14.ClrPopoverOpenCloseButton","i15.ClrPopoverContent","i16.ClrDatagridItemsTrackBy","i17.ClrDatagridColumnToggleButton","i3.CdsIconCustomTag","i1.ExpandableRowsCount","i2.DetailService","i3.ColumnsService","i7.ClrCheckbox","i8.ClrCheckboxWrapper","i9.ClrDatagridColumnToggle","i3.DatagridIfExpandService","i4.ExpandableRowsCount","i5.ClrCommonStringsService","i1.ColumnsService","i2.Items","i4.DomAdapter","i5.DetailService","i6.TableSizeService","i7.ColumnsService","i4.ClrExpandableAnimation","i1.ClrStackView","i1.TreeFeaturesService","i4.TreeFocusManagerService","i7.RecursiveChildren","i2.TreeFocusManagerService","i4.RecursiveChildren","i2.DropdownFocusHandler","i3.RootDropdownService","i1.ClrDropdown","i2.RootDropdownService","i3.FocusableItem","i1.DropdownFocusHandler","i3.DropdownFocusHandler","i1.AlertIconAndTypesService","i2.MultiAlertService","i1.MultiAlertService","i3.ClrAlertsPager","i1.ResponsiveNavigationService","i1.MainContainerWillyWonka","i2.ResponsiveNavigationService","i1.ClrStandaloneCdkTrapFocus","i3.ClrStandaloneCdkTrapFocus","i1.TemplateRefContainer","i2.IfActiveService","i2.TabsService","i1.IfActiveService","i5.ClrPopoverHostDirective","i8.ClrKeyFocus","i9.ClrTabOverflowContent","i1.VerticalNavService","i2.VerticalNavIconService","i3.VerticalNavGroupRegistrationService","i2.VerticalNavGroupRegistrationService","i3.VerticalNavGroupService","i4.VerticalNavService","i1.VerticalNavIconService","i1.ScrollingService","i3.ModalStackService","POSITIONS","i2.SignpostIdService","i3.SignpostFocusManager","i1.TooltipIdService","i2.TooltipMouseService","i2.TooltipIdService","i3.TooltipMouseService","i4.ClrSpinner","i1.PageCollectionService","i2.ButtonHubService","i1.WizardNavigationService","i2.PageCollectionService","i3.ButtonHubService","i3.ClrWizardStepnavItem","i2.WizardNavigationService","i3.PageCollectionService","i4.ButtonHubService","i5.HeaderActionService","i7.ClrModal","i8.ClrModalBody","i9.ClrWizardStepnav"],"mappings":"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"}