{"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/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-status.enum.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/stepper-panel.html","../../../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/base-expandable-animation.ts","../../../projects/angular/src/utils/animations/expandable-animation/expandable-animation.ts","../../../projects/angular/src/utils/animations/expandable-animation/expandable-animation.directive.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/index.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/utils/focus/focusable-item/focusable-item.ts","../../../projects/angular/src/utils/focus/focusable-item/custom-focusable-item-provider.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/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/utils/focus/focusable-item/basic-focusable-item.service.ts","../../../projects/angular/src/popover/dropdown/dropdown-item.ts","../../../projects/angular/src/popover/dropdown/menu-positions.ts","../../../projects/angular/src/popover/dropdown/dropdown.module.ts","../../../projects/angular/src/popover/dropdown/index.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/popover/signpost/signpost-positions.ts","../../../projects/angular/src/popover/signpost/signpost-content.ts","../../../projects/angular/src/popover/signpost/signpost-title.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/popover/signpost/index.ts","../../../projects/angular/src/popover/tooltip/index.ts","../../../projects/angular/src/popover/index.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/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/option-group.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/layout/breadcrumbs/breadcrumbs.constants.ts","../../../projects/angular/src/layout/breadcrumbs/breadcrumb-item.ts","../../../projects/angular/src/layout/breadcrumbs/breadcrumbs.ts","../../../projects/angular/src/layout/breadcrumbs/breadcrumbs.html","../../../projects/angular/src/layout/breadcrumbs/breadcrumbs.module.ts","../../../projects/angular/src/layout/breadcrumbs/index.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/utils/breakpoints/breakpoints.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-action.directive.ts","../../../projects/angular/src/layout/tabs/tab-overflow-content.ts","../../../projects/angular/src/layout/tabs/tabs.ts","../../../projects/angular/src/layout/tabs/tabs-actions.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/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/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/forms/datepicker/providers/datepicker-enabled.service.ts","../../../projects/angular/src/forms/datepicker/date-input.ts","../../../projects/angular/src/forms/datepicker/date-end-input.ts","../../../projects/angular/src/forms/datepicker/date-single-input.ts","../../../projects/angular/src/forms/datepicker/date-start-input.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-action-buttons.ts","../../../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.validator.ts","../../../projects/angular/src/forms/datepicker/datepicker.module.ts","../../../projects/angular/src/forms/file-input/file-input.helpers.ts","../../../projects/angular/src/forms/file-input/file-messages.ts","../../../projects/angular/src/forms/file-input/file-messages-template.ts","../../../projects/angular/src/forms/file-input/file-list.ts","../../../projects/angular/src/forms/file-input/file-input-container.ts","../../../projects/angular/src/forms/file-input/file-input.ts","../../../projects/angular/src/forms/file-input/file-input-validator.ts","../../../projects/angular/src/forms/file-input/file-input-value-accessor.ts","../../../projects/angular/src/forms/file-input/file-input.module.ts","../../../projects/angular/src/forms/file-input/index.ts","../../../projects/angular/src/forms/number-input/number-input-container.ts","../../../projects/angular/src/forms/number-input/number-input.ts","../../../projects/angular/src/forms/number-input/number-input.module.ts","../../../projects/angular/src/forms/password/password-container.ts","../../../projects/angular/src/forms/password/password.ts","../../../projects/angular/src/forms/password/password.module.ts","../../../projects/angular/src/forms/radio/radio-wrapper.ts","../../../projects/angular/src/forms/radio/radio.ts","../../../projects/angular/src/forms/common/index.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/utils/key-navigation-strategies/default.ts","../../../projects/angular/src/data/datagrid/utils/key-navigation-strategies/expanded-row.ts","../../../projects/angular/src/data/datagrid/utils/key-navigation-strategies/expanded-columns-row.ts","../../../projects/angular/src/data/datagrid/utils/key-navigation-utils.ts","../../../projects/angular/src/data/datagrid/utils/key-navigation-grid.controller.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/render/constants.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/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-single-selection.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/datagrid-virtual-scroll.directive.ts","../../../projects/angular/src/data/datagrid/providers/state.provider.ts","../../../projects/angular/src/data/datagrid/render/cell-renderer.ts","../../../projects/angular/src/data/datagrid/render/row-renderer.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-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/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/number-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/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/header-renderer.ts","../../../projects/angular/src/data/datagrid/render/noop-dom-adapter.ts","../../../projects/angular/src/data/datagrid/render/main-renderer.ts","../../../projects/angular/src/data/datagrid/render/row-detail-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/progress/spinner/index.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/utils/scrolling/scrolling-service.ts","../../../projects/angular/src/modal/modal-configuration.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-host.component.ts","../../../projects/angular/src/modal/modal.module.ts","../../../projects/angular/src/modal/side-panel.ts","../../../projects/angular/src/modal/side-panel.html","../../../projects/angular/src/modal/side-panel.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/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/icon/index.ts","../../../projects/angular/src/modal/index.ts","../../../projects/angular/src/wizard/index.ts","../../../projects/angular/src/accordion/index.ts","../../../projects/angular/src/accordion/stepper/index.ts","../../../projects/angular/src/progress/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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  hasExpandTemplate = false;\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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, animation, style } from '@angular/animations';\n\nexport const defaultAnimationTiming = '0.2s ease-in-out';\nexport const defaultExpandAnimation = animation(\n  [style({ height: '{{ startHeight }}px' }), animate(defaultAnimationTiming, style({ height: '*' }))],\n  {\n    params: {\n      startHeight: 0, // default\n    },\n  }\n);\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  apply: 'Apply',\n  cancel: 'Cancel',\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  neutral: 'Neutral',\n  unknown: 'Unknown',\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  sidePanelPin: 'Pin Side Panel',\n  showColumnsMenuDescription: 'Show or hide columns menu',\n  allColumnsSelected: 'All columns selected',\n  signpostToggle: 'Signpost Toggle',\n  signpostClose: '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: '{COLUMN} filter',\n  datagridFilterLabel: '{COLUMN} filter',\n  datagridFilterDialogAriaLabel: 'Filter dialog',\n  columnSeparatorAriaLabel: 'Column resize handle',\n  columnSeparatorDescription: 'Use left or right key to resize the column',\n  fromLabel: 'From',\n  toLabel: 'To',\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  wizardStep: 'Step',\n  wizardStepCurrent: 'Current',\n  wizardStepSuccess: 'Completed',\n  wizardStepError: 'Error',\n  wizardStepnavAriaLabel: 'Wizard steps',\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  // Accordion/Stepper\n  stepComplete: 'Step {STEP} complete',\n  stepError: 'Error in step {STEP}',\n\n  // File input\n  browse: 'Browse',\n  fileCount: '{COUNT} files',\n  clearFile: 'Clear {FILE}',\n  clearFiles: 'Clear {COUNT} files',\n\n  // Tree\n  selectedTreeNode: 'selected',\n  unselectedTreeNode: 'unselected',\n\n  // Breadcrumbs\n  breadcrumbsLabel: 'breadcrumbs',\n  expandBreadcrumbsLabel: 'Expand breadcrumbs',\n};\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  Optional,\n  Output,\n  QueryList,\n  SimpleChanges,\n  SkipSelf,\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 { HeadingLevel } from '../wizard';\nimport { ClrAccordionDescription } from './accordion-description';\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  @Input('clrAccordionPanelHeadingEnabled') headingEnabled = false;\n  /**\n   * Level of the accordion/stepper heading from 1 to 6.\n   */\n  @Input('clrAccordionPanelHeadingLevel') explicitHeadingLevel: HeadingLevel;\n\n  @Output('clrAccordionPanelOpenChange') panelOpenChange = new EventEmitter<boolean>();\n\n  @ContentChildren(ClrAccordionDescription) accordionDescription: QueryList<ClrAccordionDescription>;\n\n  panel: Observable<AccordionPanelModel>;\n\n  private _id = uniqueIdFactory();\n  private _panelIndex: number;\n\n  constructor(\n    @Optional() @SkipSelf() private parent: ClrAccordionPanel,\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  get headingLevel() {\n    if (this.explicitHeadingLevel) {\n      return this.explicitHeadingLevel;\n    }\n\n    return this.parent ? 4 : 3;\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  protected stepCompleteText(panelNumber: number) {\n    return this.commonStrings.parse(this.commonStrings.keys.stepComplete, { STEP: panelNumber.toString() });\n  }\n\n  protected stepErrorText(panelNumber: number) {\n    return this.commonStrings.parse(this.commonStrings.keys.stepError, { STEP: panelNumber.toString() });\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\n      class=\"clr-accordion-header\"\n      [attr.role]=\"headingEnabled || explicitHeadingLevel ? 'heading' : null\"\n      [attr.aria-level]=\"headingEnabled || explicitHeadingLevel ? headingLevel : null\"\n    >\n      <button\n        type=\"button\"\n        class=\"clr-accordion-header-button\"\n        (click)=\"togglePanel()\"\n        [id]=\"getAccordionHeaderId(panel.templateId)\"\n        [disabled]=\"panel.disabled\"\n        [attr.aria-controls]=\"!panel.disabled && panel.open ? getAccordionContentId(panel.templateId) : null\"\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-accordion-status\">\n          <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle\"></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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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<void>();\n\n  get chocolate(): Observable<void> {\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  protected 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  private initialPanel: string;\n\n  get allPanelsCompleted(): boolean {\n    return this.panels.length && this.getNumberOfIncompletePanels() === 0 && this.getNumberOfOpenPanels() === 0;\n  }\n\n  get shouldOpenFirstPanel() {\n    return !this.initialPanel || (this._panels && Object.keys(this._panels).length && !this._panels[this.initialPanel]);\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  navigateToPreviousPanel(currentPanelId: string) {\n    this.openPreviousPanel(this._panels[currentPanelId].id);\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.initialPanel = panelId;\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  getPreviousPanel(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    if (!this.shouldOpenFirstPanel) {\n      return;\n    }\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 openPreviousPanel(currentPanelId: string) {\n    const prevPanel = this.getPreviousPanel(currentPanelId);\n\n    if (prevPanel) {\n      this._panels[currentPanelId].open = false;\n      this._panels[currentPanelId].disabled = false;\n\n      this._panels[prevPanel.id].open = true;\n      this._panels[prevPanel.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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  navigateToPreviousPanel(currentPanelId: string) {\n    this.accordion.navigateToPreviousPanel(currentPanelId);\n    this.updatePreviousStep(currentPanelId);\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 updatePreviousStep(currentPanelId: string) {\n    const prevPanel = this.accordion.getPreviousPanel(currentPanelId);\n\n    if (prevPanel) {\n      this._activeStepChanges.next(prevPanel.id);\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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: 'stepper-panel.html',\n  host: { '[class.clr-stepper-panel]': 'true' },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: stepAnimation,\n  providers: [IfExpandService],\n})\nexport class ClrStepperPanel extends ClrAccordionPanel implements OnInit {\n  @ViewChild('headerButton') headerButton: ElementRef<HTMLButtonElement>;\n  readonly AccordionStatus = AccordionStatus;\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(null, 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 (!this.formGroup.touched) {\n            return;\n          }\n\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(() => {\n          this.headerButton.nativeElement.focus();\n        })\n    );\n  }\n\n  private triggerAllFormControlValidationIfError(panel: AccordionPanelModel) {\n    if (panel.status === AccordionStatus.Error) {\n      triggerAllFormControlValidation(this.formGroup);\n    }\n  }\n}\n","<ng-container *ngIf=\"panel | async; let panel\">\n  <div [ngClass]=\"getPanelStateClasses(panel)\">\n    <div class=\"clr-accordion-header clr-stepper-header\">\n      <button\n        type=\"button\"\n        class=\"clr-accordion-header-button\"\n        (click)=\"togglePanel()\"\n        [id]=\"getAccordionHeaderId(panel.templateId)\"\n        [attr.aria-disabled]=\"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-step-status\">\n          <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle clr-step-angle\"></cds-icon>\n          <span class=\"clr-step-status-icon\">\n            <cds-icon\n              status=\"danger\"\n              *ngIf=\"panel.status === AccordionStatus.Error\"\n              shape=\"exclamation-circle\"\n              class=\"clr-step-error-icon\"\n            ></cds-icon>\n            <cds-icon\n              status=\"success\"\n              *ngIf=\"panel.status === AccordionStatus.Complete\"\n              shape=\"check-circle\"\n              class=\"clr-step-complete-icon\"\n            ></cds-icon>\n          </span>\n        </span>\n        <span class=\"clr-step-title-wrapper\">\n          <span class=\"clr-step-number\">{{panelNumber}}.</span>\n          <ng-content select=\"clr-step-title\"></ng-content>\n        </span>\n        <ng-content select=\"clr-step-description\"></ng-content>\n      </button>\n      <div class=\"clr-sr-only\" role=\"status\">\n        <ng-container *ngIf=\"panel.status === AccordionStatus.Error\"> {{ stepErrorText(panelNumber)}} </ng-container>\n        <ng-container *ngIf=\"panel.status === AccordionStatus.Complete\">\n          {{ stepCompleteText(panelNumber)}}\n        </ng-container>\n      </div>\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  Previous = 'previous',\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-success') submitButton = false;\n  @HostBinding('class.btn-link') previousButton = false;\n\n  constructor(private clrStep: ClrStepperPanel, private stepperService: StepperService) {}\n\n  ngOnInit() {\n    this.submitButton = this.type === ClrStepButtonType.Submit;\n    this.previousButton = this.type === ClrStepButtonType.Previous;\n  }\n\n  @HostListener('click')\n  navigateToNextPanel() {\n    if (this.previousButton) {\n      this.stepperService.navigateToPreviousPanel(this.clrStep.id);\n      return;\n    }\n\n    this.stepperService.navigateToNextPanel(this.clrStep.id, this.clrStep.formGroup.valid);\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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  PageDown = 'PageDown',\n  PageUp = 'PageUp',\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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<HTMLButtonElement>;\n  closeButtonRef: ElementRef<HTMLButtonElement>;\n  contentRef: ElementRef<HTMLElement>;\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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<HTMLButtonElement>) {\n    smartEventService.anchorButtonRef = element;\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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<HTMLButtonElement>,\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  private previousContentHeight: number | null = null;\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) {\n      const rootNodeOffsetHeight = this.view.rootNodes[0].offsetHeight;\n      if (\n        this.shouldRealign ||\n        (this.previousContentHeight !== null && this.previousContentHeight !== rootNodeOffsetHeight)\n      ) {\n        // Channel content-check event through the check-collector\n        this.previousContentHeight = rootNodeOffsetHeight;\n        this.checkCollector.emit();\n      }\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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      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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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';\nimport { RouterLinkActive } from '@angular/router';\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  @Input('routerLinkActive') routerLinkActiveClasses: string;\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    @Optional() private readonly routerLinkActive: RouterLinkActive,\n    @SkipSelf() @Optional() 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.routerLinkActive?.isActive ? `${this._classNames} ${this.routerLinkActiveClasses}` : 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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  /* \n    We clone the element and take its measurements from outside the grid\n    so we don't trigger reflow for the whole datagrid.\n  */\n  userDefinedWidth(element: HTMLElement): number {\n    const clonedElement = element.cloneNode(true) as HTMLElement;\n    if (clonedElement.id) {\n      clonedElement.id = clonedElement.id + '-clone';\n    }\n    clonedElement.classList.add('datagrid-cell-width-zero');\n    document.body.appendChild(clonedElement);\n    const userDefinedWidth = this.clientRect(clonedElement).width;\n    clonedElement.remove();\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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, Renderer2 } from '@angular/core';\n\nimport { DomAdapter } from '../../dom-adapter/dom-adapter';\n\n@Directive()\nexport class BaseExpandableAnimation {\n  startHeight = 0;\n\n  constructor(\n    protected element: ElementRef<HTMLElement>,\n    protected domAdapter: DomAdapter,\n    protected renderer: Renderer2\n  ) {}\n\n  updateStartHeight() {\n    this.startHeight = this.domAdapter.computedHeight(this.element.nativeElement) || 0;\n  }\n\n  initAnimationEffects() {\n    this.renderer.setStyle(this.element.nativeElement, 'overflow', 'hidden');\n  }\n\n  cleanupAnimationEffects(cancelAnimations = false) {\n    this.renderer.removeStyle(this.element.nativeElement, 'overflow');\n\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, the window was resized, etc.\n    // For optimal behavior call manually updateStartHeight() from the parent component before initiating the update.\n    this.updateStartHeight();\n    if (cancelAnimations) {\n      this.cancelElementAnimations();\n    }\n  }\n\n  private cancelElementAnimations() {\n    this.element.nativeElement.getAnimations().forEach(animation => {\n      if (animation.playState === 'finished') {\n        animation.cancel(); // clears animation-style set on the element\n      }\n    });\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AnimationEvent, transition, trigger, useAnimation } from '@angular/animations';\nimport { Component, HostBinding, HostListener, Input } from '@angular/core';\n\nimport { DomAdapter } from '../../dom-adapter/dom-adapter';\nimport { defaultExpandAnimation } from '../constants';\nimport { BaseExpandableAnimation } from './base-expandable-animation';\n\n@Component({\n  selector: 'clr-expandable-animation',\n  template: `<ng-content></ng-content>`,\n  styles: [\n    `\n      :host {\n        display: block;\n      }\n    `,\n  ],\n  animations: [trigger('expandAnimation', [transition('true <=> false', [useAnimation(defaultExpandAnimation)])])],\n  providers: [DomAdapter],\n})\nexport class ClrExpandableAnimation extends BaseExpandableAnimation {\n  @Input() clrExpandTrigger = false;\n\n  @HostBinding('@expandAnimation')\n  get expandAnimation() {\n    return { value: this.clrExpandTrigger, params: { startHeight: this.startHeight } };\n  }\n\n  @HostListener('@expandAnimation.start', ['$event'])\n  animationStart(event: AnimationEvent) {\n    if (event.fromState !== 'void') {\n      this.initAnimationEffects();\n    }\n  }\n  @HostListener('@expandAnimation.done', ['$event'])\n  animationDone(event: AnimationEvent) {\n    if (event.fromState !== 'void') {\n      this.cleanupAnimationEffects();\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AnimationBuilder, AnimationPlayer, useAnimation } from '@angular/animations';\nimport { Directive, ElementRef, Input, OnChanges, OnDestroy, Renderer2, SimpleChanges } from '@angular/core';\n\nimport { DomAdapter } from '../../dom-adapter/dom-adapter';\nimport { defaultExpandAnimation } from '../constants';\nimport { BaseExpandableAnimation } from './base-expandable-animation';\n\n@Directive({\n  selector: '[clrExpandableAnimation]',\n  providers: [DomAdapter],\n  host: {\n    '[class.clr-expandable-animation]': 'true',\n  },\n})\nexport class ClrExpandableAnimationDirective extends BaseExpandableAnimation implements OnChanges, OnDestroy {\n  @Input('clrExpandableAnimation') expanded = false;\n\n  private player: AnimationPlayer;\n\n  constructor(\n    element: ElementRef<HTMLElement>,\n    domAdapter: DomAdapter,\n    renderer: Renderer2,\n    private builder: AnimationBuilder\n  ) {\n    super(element, domAdapter, renderer);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['expanded'] && !changes['expanded'].firstChange) {\n      Promise.resolve().then(() => this.playAnimation());\n    }\n  }\n\n  ngOnDestroy() {\n    this.player?.destroy();\n  }\n\n  playAnimation() {\n    if (this.player) {\n      this.player.destroy();\n    }\n\n    this.player = this.builder\n      .build([useAnimation(defaultExpandAnimation, { params: { startHeight: this.startHeight } })])\n      .create(this.element.nativeElement);\n\n    this.player.onStart(() => this.initAnimationEffects());\n\n    this.player.onDone(() => this.cleanupAnimationEffects(true));\n\n    this.player.play();\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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';\nimport { ClrExpandableAnimationDirective } from './expandable-animation.directive';\n\nexport * from './expandable-animation';\nexport * from './base-expandable-animation';\n\nexport const EXPANDABLE_ANIMATION_DIRECTIVES: Type<any>[] = [ClrExpandableAnimation, ClrExpandableAnimationDirective];\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 = 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 = 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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<HTMLElement>,\n    private renderer: Renderer2,\n    private expand: IfExpandService\n  ) {\n    this._subscriptions.push(\n      expand.expandChange.subscribe(() => {\n        this.updateView();\n        this.expandedChange.emit(expand.expanded);\n      })\n    );\n\n    expand.hasExpandTemplate = !!template;\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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<HTMLElement>,\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 = 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            renderer.removeAttribute(el.nativeElement, 'tabindex');\n            renderer.setStyle(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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { DOCUMENT } from '@angular/common';\nimport { Directive, ElementRef, Inject, Optional } from '@angular/core';\n\n@Directive({\n  standalone: true,\n})\nexport class ClrStandaloneCdkTrapFocus extends CdkTrapFocus {\n  /**\n   * Include the constructor to forward all the dependencies to the base class\n   * as a workaround to fix Angular \"ɵɵinvalidFactoryDep\" error after upgrading storybook\n   * https://github.com/storybookjs/storybook/issues/23534\n   */\n  constructor(\n    elementRef: ElementRef<HTMLElement>,\n    focusTrapFactory: FocusTrapFactory,\n    @Optional() @Inject(DOCUMENT) document: any\n  ) {\n    super(elementRef, focusTrapFactory, document);\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n  ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n  ~ This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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      <ng-container *ngSwitchCase=\"buttonState.LOADING\">\n        <span @spinner class=\"spinner spinner-inline\"></span>\n      </ng-container>\n      <ng-container *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      </ng-container>\n      <span *ngSwitchCase=\"buttonState.DEFAULT\" @defaultButton class=\"clr-loading-btn-content\">\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<HTMLButtonElement>, 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  protected 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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    '[class.error]': '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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  private _control: NgControl;\n  private _additionalControls: NgControl[] = [];\n\n  // Observable to subscribe to the control, since its not available immediately for projected content\n  private _controlChanges = new Subject<NgControl>();\n  private _additionalControlsChanges = new Subject<NgControl[]>();\n\n  private _helpers = new Subject<Helpers>();\n\n  get control() {\n    return this._control;\n  }\n\n  get controlChanges(): Observable<NgControl> {\n    return this._controlChanges.asObservable();\n  }\n\n  get additionalControls() {\n    return this._additionalControls;\n  }\n\n  get additionalControlsChanges(): Observable<NgControl[]> {\n    return this._additionalControlsChanges.asObservable();\n  }\n\n  get hasAdditionalControls() {\n    return !!this._additionalControls?.length;\n  }\n\n  get helpersChange(): Observable<Helpers> {\n    return this._helpers.asObservable();\n  }\n\n  setControl(control: NgControl) {\n    this._control = control;\n    this._controlChanges.next(control);\n  }\n\n  addAdditionalControl(control: NgControl) {\n    this._additionalControls.push(control);\n    this._additionalControlsChanges.next(this._additionalControls);\n  }\n\n  setHelpers(state: Helpers) {\n    this._helpers.next(state);\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 { combineLatest, EMPTY, map, merge, Observable, shareReplay, startWith, Subject, switchMap } 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 {\n  readonly statusChanges: Observable<CONTROL_STATE>;\n\n  private readonly triggerStatusChangeSubject = new Subject<void>();\n\n  constructor(ngControlService: NgControlService) {\n    this.statusChanges = this.getStatusChanges(ngControlService).pipe(shareReplay(1));\n  }\n\n  triggerStatusChange() {\n    this.triggerStatusChangeSubject.next();\n  }\n\n  private getStatusChanges(ngControlService: NgControlService) {\n    return combineLatest([\n      ngControlService.controlChanges,\n      ngControlService.additionalControlsChanges.pipe(startWith<NgControl[]>([])),\n    ]).pipe(\n      switchMap(([control, additionalControls]) => {\n        if (control) {\n          const controls = [control, ...additionalControls];\n\n          return merge(\n            combineLatest(controls.map(control => control.statusChanges)),\n            this.triggerStatusChangeSubject.pipe(map(() => controls.map(control => control.status)))\n          );\n        } else {\n          return EMPTY;\n        }\n      }),\n      map(controlStatuses => {\n        // These status values are mutually exclusive, so a control\n        // cannot be both valid AND invalid or invalid AND disabled.\n        if (controlStatuses.includes(CONTROL_STATE.INVALID)) {\n          return CONTROL_STATE.INVALID;\n        } else if (controlStatuses.includes(CONTROL_STATE.VALID)) {\n          return CONTROL_STATE.VALID;\n        } else {\n          return CONTROL_STATE.NONE;\n        }\n      }),\n      startWith(CONTROL_STATE.NONE)\n    );\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 (!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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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    cdr: ChangeDetectorRef,\n    dropdownService: RootDropdownService\n  ) {\n    this.subscriptions.push(dropdownService.changes.subscribe(value => (toggleService.open = value)));\n    this.subscriptions.push(toggleService.openChange.subscribe(() => cdr.markForCheck()));\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach(sub => sub.unsubscribe());\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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: Element) {\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 && current.nodeType === Node.ELEMENT_NODE) {\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: Element): 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  Injector,\n  NgZone,\n  OnDestroy,\n  Renderer2,\n  SkipSelf,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\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/**\n * Fallback to hide when *clrIfOpen is not being used\n */\nconst isOffScreenClassName = 'is-off-screen';\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<HTMLElement>;\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  protected constructor(injector: Injector, @SkipSelf() protected parentHost: ElementRef<HTMLElement>) {\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.pipe(startWith(this.toggleService.open)).subscribe(open => {\n      if (open) {\n        this.anchor();\n        this.attachESCListener();\n        this.renderer.removeClass(this.el.nativeElement, isOffScreenClassName);\n      } else {\n        this.release();\n        this.detachESCListener();\n        this.renderer.addClass(this.el.nativeElement, isOffScreenClassName);\n      }\n    });\n    if (this.toggleService.open) {\n      this.anchor();\n      this.attachESCListener();\n    }\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 (event.target.shadowRoot) {\n      const containsNode = event.composedPath().some((element: HTMLElement) => element === this.anchorElem);\n\n      if (containsNode) {\n        return;\n      }\n    } else 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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, Renderer2 } 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@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    private el: ElementRef<HTMLElement>,\n    focusHandler: DropdownFocusHandler,\n    private renderer: Renderer2\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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: 'nearest', 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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, Input, Renderer2 } 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    private el: ElementRef,\n    private renderer: Renderer2\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 { 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<HTMLElement>,\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  }\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 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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, Input } 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\n        type=\"button\"\n        class=\"signpost-action btn btn-sm btn-icon btn-link\"\n        clrSignpostTrigger\n        [attr.aria-label]=\"signpostTriggerAriaLabel || commonStrings.keys.signpostToggle\"\n      >\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  @Input('clrSignpostTriggerAriaLabel') signpostTriggerAriaLabel: string;\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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: -16, offsetX: 0 },\n  'top-middle': { anchorPoint: Point.TOP_CENTER, popoverPoint: Point.BOTTOM_CENTER, offsetY: -16, offsetX: 0 },\n  'top-right': { anchorPoint: Point.TOP_CENTER, popoverPoint: Point.BOTTOM_LEFT, offsetY: -16, offsetX: 0 },\n  'right-top': { anchorPoint: Point.RIGHT_CENTER, popoverPoint: Point.LEFT_BOTTOM, offsetY: 0, offsetX: 16 },\n  'right-middle': { anchorPoint: Point.RIGHT_CENTER, popoverPoint: Point.LEFT_CENTER, offsetY: 0, offsetX: 16 },\n  'right-bottom': { anchorPoint: Point.RIGHT_CENTER, popoverPoint: Point.LEFT_TOP, offsetY: 0, offsetX: 16 },\n  'bottom-right': { anchorPoint: Point.BOTTOM_CENTER, popoverPoint: Point.TOP_LEFT, offsetY: 16, offsetX: 0 },\n  'bottom-middle': { anchorPoint: Point.BOTTOM_CENTER, popoverPoint: Point.TOP_CENTER, offsetY: 16, offsetX: 0 },\n  'bottom-left': { anchorPoint: Point.BOTTOM_CENTER, popoverPoint: Point.TOP_RIGHT, offsetY: 16, offsetX: 0 },\n  'left-bottom': { anchorPoint: Point.LEFT_CENTER, popoverPoint: Point.RIGHT_TOP, offsetY: 0, offsetX: -16 },\n  'left-middle': { anchorPoint: Point.LEFT_CENTER, popoverPoint: Point.RIGHT_CENTER, offsetY: 0, offsetX: -16 },\n  'left-top': { anchorPoint: Point.LEFT_CENTER, popoverPoint: Point.RIGHT_BOTTOM, offsetY: 0, offsetX: -16 },\n  default: { anchorPoint: Point.RIGHT_CENTER, popoverPoint: Point.LEFT_CENTER, offsetY: 0, offsetX: 16 },\n};\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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        <ng-content select=\"clr-signpost-title\"></ng-content>\n        <button\n          type=\"button\"\n          [attr.aria-label]=\"signpostCloseAriaLabel || 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  @Input('clrSignpostCloseAriaLabel') signpostCloseAriaLabel: string;\n\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<HTMLElement>,\n    public commonStrings: ClrCommonStringsService,\n    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    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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-signpost-title',\n  template: `<ng-content></ng-content>`,\n  host: { '[class.signpost-title]': 'true' },\n})\nexport class ClrSignpostTitle {}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 { ClrSignpostTitle } from './signpost-title';\nimport { ClrSignpostTrigger } from './signpost-trigger';\n\nexport const CLR_SIGNPOST_DIRECTIVES: Type<any>[] = [\n  ClrSignpost,\n  ClrSignpostContent,\n  ClrSignpostTrigger,\n  ClrSignpostTitle,\n];\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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<HTMLElement>,\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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    tooltipIdService: TooltipIdService,\n    private tooltipMouseService: TooltipMouseService\n  ) {\n    // The aria-described by comes from the id of content. It\n    this.subs.push(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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-title';\nexport * from './signpost-trigger';\nexport * from './signpost.module';\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  ContentChild,\n  Directive,\n  ElementRef,\n  HostBinding,\n  HostListener,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Renderer2,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrSignpost } from '../../popover';\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('id') idInput: string;\n  @HostBinding('attr.id') idAttr: string;\n\n  @Input('for') @HostBinding('attr.for') forAttr: string;\n\n  @ContentChild(ClrSignpost, { read: ElementRef }) private signpost: ElementRef;\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<HTMLLabelElement>\n  ) {}\n\n  get labelText(): string {\n    return this.el.nativeElement && this.el.nativeElement.textContent;\n  }\n\n  ngOnInit() {\n    // Prevent id attributes from being removed by the `undefined` host binding.\n    // This happens when a `label` is used outside of a control container and other use cases.\n    this.idAttr = this.idInput;\n\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(\n        this.controlIdService.idChange.subscribe(id => {\n          this.forAttr = id;\n          this.idAttr = this.idInput || `${id}-label`;\n        })\n      );\n    }\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach(sub => sub.unsubscribe());\n  }\n\n  disableGrid() {\n    this.enableGrid = false;\n  }\n\n  /**\n   * Allowing signposts inside labels to work without disabling default behavior. <label> is spreading a click event to its children so signposts get\n   * automatically closed once clicked inside a <label>.\n   * @param event\n   */\n  @HostListener('click', ['$event'])\n  private onClick(event) {\n    this.preventDefaultOnSignpostTarget(event);\n  }\n\n  private preventDefaultOnSignpostTarget(event) {\n    if (this.signpost && this.signpost.nativeElement && this.signpost.nativeElement.contains(event.target)) {\n      event.preventDefault();\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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    '[class.success]': '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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 { 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 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  additionalControls: NgControl[];\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      ifControlStateService.statusChanges.subscribe((state: CONTROL_STATE) => {\n        this.state = state;\n        // Make sure everything is updated before dispatching the values for helpers\n        setTimeout(() => {\n          this.updateHelpers();\n        });\n      })\n    );\n\n    this.subscriptions.push(\n      ngControlService.controlChanges.subscribe(control => {\n        this.control = control;\n      }),\n      ngControlService.additionalControlsChanges.subscribe(controls => {\n        this.additionalControls = controls;\n      })\n    );\n  }\n\n  /**\n   * @NOTE\n   * Helper control is a bit different than the others, it must be always visible:\n   *   -  Labels and instructions must always accompany forms and are persistent.\n   *   -  The recommendation here is to always have helper text or anything instructions visible.\n   *   -  The expectation is to have error text + helper text in the errored state. this way all users will have the helper text information always available.\n   */\n  get showHelper(): boolean {\n    /**\n     * @NOTE\n     * Saving the previous version in case something is changed. We'll return always true so we can be flexible\n     * and keep the condition per components.\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    return Boolean(this.controlHelperComponent);\n  }\n\n  get showValid(): boolean {\n    return this.touched && this.state === CONTROL_STATE.VALID && this.successMessagePresent;\n  }\n\n  get showInvalid(): boolean {\n    return this.touched && this.state === CONTROL_STATE.INVALID && this.errorMessagePresent;\n  }\n\n  protected get successMessagePresent() {\n    return !!this.controlSuccessComponent;\n  }\n\n  protected get errorMessagePresent() {\n    return !!this.controlErrorComponent;\n  }\n\n  private get touched() {\n    return !!(this.control?.touched || this.additionalControls?.some(control => 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 { 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> 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 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 { 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> implements OnInit, DoCheck, OnDestroy {\n  _id: string;\n\n  protected controlIdService: ControlIdService;\n  protected ngControlService: NgControlService;\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  private additionalDiffer = new Map<NgControl, KeyValueDiffer<any, any>>();\n  private ngControl: NgControl | null;\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 | null,\n    protected renderer: Renderer2,\n    protected el: ElementRef<HTMLElement>\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\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  private get hasAdditionalControls() {\n    return this.additionalDiffer.size > 0;\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 && this._ngControl) {\n      if (!this.ngControlService.control) {\n        this.ngControl = this._ngControl;\n        this.ngControlService.setControl(this.ngControl);\n        this.differ = this.differs.find(this._ngControl).create();\n      } else {\n        this.ngControl = this.ngControlService.control;\n        this.ngControlService.addAdditionalControl(this._ngControl);\n        this.additionalDiffer.set(this._ngControl, this.differs.find(this._ngControl).create());\n      }\n    }\n  }\n\n  ngDoCheck() {\n    this.triggerDoCheck(this.differ, this.ngControl);\n    if (this.hasAdditionalControls) {\n      for (const [ngControl, differ] of this.additionalDiffer) {\n        this.triggerDoCheck(differ, ngControl);\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 triggerDoCheck(differ, ngControl) {\n    if (differ) {\n      const changes = differ.diff(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  private markAsTouched(): void {\n    if (this.ngControl) {\n      this.ngControl.control.markAsTouched();\n      this.ngControl.control.updateValueAndValidity();\n    }\n    if (this.ngControlService && this.ngControlService.hasAdditionalControls) {\n      this.ngControlService.additionalControls?.forEach((ngControl: NgControl) => {\n        ngControl.control.markAsTouched();\n        ngControl.control.updateValueAndValidity();\n      });\n    }\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    const elementId = this.containerIdService?.id || this.controlIdService?.id;\n    /**\n     * If ContainerIdService or ControlIdService are missing don't try to guess\n     * Don't set anything.\n     */\n    if (!elementId) {\n      return null;\n    }\n\n    /**\n     * As the helper text is now always visible. If we have error/success then we should use both ids.\n     */\n    const describedByIds = [`${elementId}-${CONTROL_SUFFIX.HELPER}`];\n    if (helpers.showInvalid) {\n      describedByIds.push(`${elementId}-${CONTROL_SUFFIX.ERROR}`);\n    } else if (helpers.showValid) {\n      describedByIds.push(`${elementId}-${CONTROL_SUFFIX.SUCCESS}`);\n    }\n    return describedByIds.join(' ');\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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<HTMLElement>\n  ) {\n    super(vcr, ClrControlContainer, injector, control, renderer, el);\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  protected additionalControls: NgControl[];\n\n  protected constructor(\n    @Optional() protected ifControlStateService: IfControlStateService,\n    @Optional() protected ngControlService: NgControlService\n  ) {\n    if (ngControlService) {\n      this.subscriptions.push(\n        ngControlService.controlChanges.subscribe(control => {\n          this.control = control;\n        }),\n        ngControlService.additionalControlsChanges.subscribe(controls => {\n          this.additionalControls = controls;\n        })\n      );\n    }\n\n    if (ifControlStateService) {\n      this.subscriptions.push(\n        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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 && this.control.invalid) {\n      this.displayError(this.control.hasError(this.error));\n    } else if (this.error && !!this.additionalControls?.length) {\n      const invalidControl = this.additionalControls?.filter(control => control.hasError(this.error))[0];\n      this.displayError(!!invalidControl, invalidControl);\n    } else {\n      this.displayError(CONTROL_STATE.INVALID === state);\n    }\n  }\n\n  private displayError(invalid: boolean, control = this.control) {\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: 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 = control.getError(this.error);\n      }\n    } else {\n      this.container.clear();\n      this.displayedContent = false;\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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, forwardRef, Inject, InjectionToken, OnDestroy, OnInit } from '@angular/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { ClrLabel } from '../common/label';\nimport { ControlIdService } from '../common/providers/control-id.service';\nimport { ClrCheckbox } from './checkbox';\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-checkbox-wrapper-disabled]': 'checkbox?.controlDisabled',\n    '[class.clr-toggle-wrapper]': 'toggle',\n  },\n  providers: [ControlIdService, IS_TOGGLE_PROVIDER],\n})\nexport class ClrCheckboxWrapper implements OnInit, OnDestroy {\n  @ContentChild(ClrLabel, { static: true }) label: ClrLabel;\n  @ContentChild(forwardRef(() => ClrCheckbox), { static: true }) checkbox: ClrCheckbox;\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  host: {\n    '[attr.role]': 'toggle !== null ? \"switch\" : null',\n  },\n})\nexport class ClrCheckbox extends WrappedFormControl<ClrCheckboxWrapper> {\n  constructor(\n    vcr: ViewContainerRef,\n    injector: Injector,\n    @Self()\n    @Optional()\n    private control: NgControl,\n    renderer: Renderer2,\n    el: ElementRef<HTMLInputElement>,\n    @Attribute('clrToggle') private toggle: string\n  ) {\n    super(vcr, ClrCheckboxWrapper, injector, control, renderer, el);\n  }\n\n  get controlDisabled() {\n    return this.control?.disabled;\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 *ngIf=\"showHelper\" class=\"clr-subtext-wrapper\">\n        <ng-content select=\"clr-control-helper\"></ng-content>\n      </div>\n      <div *ngIf=\"showInvalid || showValid\" class=\"clr-subtext-wrapper\">\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]': 'allCheckboxesDisabled',\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  protected get allCheckboxesDisabled() {\n    return (\n      this.control?.disabled &&\n      (!this.additionalControls?.length || this.additionalControls.every(control => control.disabled))\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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<HTMLElement>, @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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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<HTMLElement>) {}\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.emit();\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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<HTMLElement>, 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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<HTMLElement>;\n\n  constructor(\n    ifControlStateService: IfControlStateService,\n    @Optional() layoutService: LayoutService,\n    controlClassService: ControlClassService,\n    ngControlService: NgControlService,\n    private containerService: ComboboxContainerService,\n    private el: ElementRef<HTMLElement>\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  el: HTMLElement;\n\n  constructor(public id: string, public value: T) {}\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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<HTMLElement>,\n    public commonStrings: ClrCommonStringsService,\n    private focusHandler: ComboboxFocusHandler<T>,\n    private optionSelectionService: OptionSelectionService<T>\n  ) {\n    this.optionProxy.el = 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', ['$event'])\n  onClick(event: MouseEvent) {\n    event.stopPropagation();\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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\" [id]=\"noResultsElementId\" role=\"option\">\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    public el: ElementRef<HTMLElement>,\n    public commonStrings: ClrCommonStringsService,\n    private focusHandler: ComboboxFocusHandler<T>,\n    private toggleService: ClrPopoverToggleService,\n    @Optional()\n    @Inject(POPOVER_HOST_ANCHOR)\n    parentHost: ElementRef<HTMLElement>,\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, { descendants: true })\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  get noResultsElementId() {\n    return `${this.optionsId}-no-results`;\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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<HTMLInputElement>;\n  @ViewChild('trigger') trigger: ElementRef<HTMLButtonElement>;\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<HTMLElement>,\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    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?.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(event) {\n    if (!event.relatedTarget || !this.options.el?.nativeElement.contains(event.relatedTarget)) {\n      this.onTouchedCallback?.();\n      this.triggerValidation();\n      this.focused = false;\n    }\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 : this.options?.noResultsElementId;\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 = this.control?.control.touched && 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-2025 Broadcom. All Rights Reserved.\n  ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n  ~ This software 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 && multiSelectModel.length > 0\"\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    class=\"clr-combobox-pills\"\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  <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($event)\"\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\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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    vcr: ViewContainerRef\n  ) {\n    this.iterableProxy = new NgForOf<T>(vcr, template, 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  get hasResults() {\n    // explicity return `undefined` instead of `false` if the answer is not known\n    return this.filteredItems ? this.filteredItems.length : undefined;\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  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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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, Input } from '@angular/core';\n\nimport { uniqueIdFactory } from '../../utils/id-generator/id-generator.service';\nimport { ClrOptionItems } from './option-items.directive';\n\n@Component({\n  selector: 'clr-option-group',\n  host: {\n    '[attr.role]': '\"group\"',\n    '[attr.aria-labelledby]': 'labelId',\n    '[style.display]': 'clrOptionItems.hasResults ? undefined : \"none\"',\n  },\n  template: `\n    <span [id]=\"labelId\" class=\"clr-option-group-label\" role=\"presentation\">{{ label }}</span>\n    <ng-content></ng-content>\n  `,\n})\nexport class ClrOptionGroup<T> {\n  @Input('clrOptionGroupLabel') label: string;\n\n  @ContentChild(ClrOptionItems) protected clrOptionItems: ClrOptionItems<T>;\n\n  protected labelId = uniqueIdFactory();\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 { ClrOptionGroup } from './option-group';\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: [\n    ClrCombobox,\n    ClrComboboxContainer,\n    ClrOptions,\n    ClrOption,\n    ClrOptionGroup,\n    ClrOptionSelected,\n    ClrOptionItems,\n  ],\n  exports: [\n    ClrCommonFormsModule,\n    ClrCombobox,\n    ClrComboboxContainer,\n    ClrOptions,\n    ClrOption,\n    ClrOptionGroup,\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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        <div class=\"clr-input-group\">\n          <ng-content select=\"[clrInputPrefix]\"></ng-content>\n          <ng-content select=\"[clrInput]\"></ng-content>\n          <ng-content select=\"[clrInputSuffix]\"></ng-content>\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: [IfControlStateService, NgControlService, ControlIdService, ControlClassService],\n})\nexport class ClrInputContainer extends ClrAbstractContainer {}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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<HTMLInputElement>\n  ) {\n    super(vcr, ClrInputContainer, injector, control, renderer, el);\n    if (this.el.nativeElement.getAttribute('type') === 'number') {\n      console.warn(`Warning: Inputs of type \"number\" should utilize the number-input component for proper handling.\\n\n  Example usage:\n  <clr-number-input-container>\n    <label>Number Input</label>\n    <input clrNumberInput type=\"number\"/>\n  </clr-number-input-container>\n      `);\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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    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    focusService: FocusService,\n    protected override ifControlStateService: IfControlStateService\n  ) {\n    super(ifControlStateService, layoutService, controlClassService, ngControlService);\n\n    this.subscriptions.push(focusService.focusChange.subscribe(state => (this.focus = state)));\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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<HTMLInputElement>,\n    private datalistIdService: DatalistIdService\n  ) {\n    super(vcr, ClrDatalistContainer, injector, control, renderer, el);\n\n    if (!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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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 MAX_DISPLAY_ITEMS = 3;\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-breadcrumb-item',\n  template: '<ng-content />',\n  host: {\n    class: 'clr-breadcrumb-item',\n    '[attr.role]': '\"list-item\"',\n  },\n})\nexport class ClrBreadcrumbItem {}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { MAX_DISPLAY_ITEMS } from './breadcrumbs.constants';\nimport { BreadcrumbItem } from './model/breadcrumbs.model';\n\n@Component({\n  selector: 'clr-breadcrumbs',\n  templateUrl: './breadcrumbs.html',\n  styleUrls: ['./_breadcrumbs.clarity.scss'],\n  host: {\n    class: 'clr-breadcrumb',\n    '[attr.aria-label]': 'commonStrings.keys.breadcrumbsLabel',\n    '[attr.role]': '\"navigation\"',\n  },\n})\nexport class ClrBreadcrumbs {\n  isExpanded = false;\n  @Input() items: BreadcrumbItem[] = [];\n  @Output() clrBreadcrumbItemClick: EventEmitter<BreadcrumbItem> = new EventEmitter<BreadcrumbItem>();\n\n  protected limit: number = MAX_DISPLAY_ITEMS;\n  protected max: number = MAX_DISPLAY_ITEMS;\n\n  constructor(protected commonStrings: ClrCommonStringsService) {}\n\n  protected expand() {\n    this.isExpanded = true;\n    this.limit = this.items?.length;\n  }\n\n  protected handleItemClick(breadcrumb: BreadcrumbItem) {\n    this.clrBreadcrumbItemClick.emit(breadcrumb);\n  }\n}\n","<div *ngIf=\"items?.length\" role=\"list\" class=\"clr-breadcrumb-menu\">\n  <clr-breadcrumb-item *ngIf=\"items.length > max && !isExpanded\">\n    <button\n      [attr.aria-label]=\"commonStrings.keys.expandBreadcrumbsLabel\"\n      class=\"btn btn-link btn-sm clr-breadcrumb-expand\"\n      (click)=\"expand()\"\n      (keydown)=\"expand()\"\n    >\n      <cds-icon shape=\"ellipsis-horizontal\"></cds-icon>\n    </button>\n  </clr-breadcrumb-item>\n  <clr-breadcrumb-item *ngFor=\"let breadcrumb of items | slice: -limit : items.length; let isLastItem=last\">\n    <span *ngIf=\"isLastItem; else breadcrumbLinks\" aria-current=\"page\">{{ breadcrumb.label }}</span>\n\n    <ng-template #breadcrumbLinks>\n      <a\n        *ngIf=\"breadcrumb.routerLink\"\n        [routerLink]=\"breadcrumb.routerLink\"\n        [queryParams]=\"breadcrumb.queryParams\"\n        [target]=\"breadcrumb.target || '_self'\"\n        (click)=\"handleItemClick(breadcrumb)\"\n      >\n        {{ breadcrumb.label }}\n      </a>\n      <a\n        *ngIf=\"breadcrumb.href\"\n        [href]=\"breadcrumb.href\"\n        [target]=\"breadcrumb.target || '_self'\"\n        (click)=\"handleItemClick(breadcrumb)\"\n      >\n        {{ breadcrumb.label }}\n      </a>\n    </ng-template>\n  </clr-breadcrumb-item>\n</div>\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 { RouterModule } from '@angular/router';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrHostWrappingModule } from '../../utils/host-wrapping/host-wrapping.module';\nimport { ClrBreadcrumbItem } from './breadcrumb-item';\nimport { ClrBreadcrumbs } from './breadcrumbs';\n\n@NgModule({\n  declarations: [ClrBreadcrumbs, ClrBreadcrumbItem],\n  exports: [ClrBreadcrumbs],\n  imports: [CommonModule, ClrIconModule, ClrHostWrappingModule, RouterModule],\n})\nexport class ClrBreadcrumbsModule {}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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 './breadcrumbs';\nexport * from './breadcrumb-item';\nexport * from './breadcrumbs.module';\nexport * from './model/breadcrumbs.model';\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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<HTMLElement>, 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 = responsiveNavService.registeredNavs.subscribe({\n      next: (navLevelList: number[]) => {\n        this.initializeNavTriggers(navLevelList);\n      },\n    });\n\n    this._subscription.add(\n      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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 { ClarityIcons, timesIcon } from '@cds/core/icon';\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\nconst createCloseButton = (document: Document, ariaLabel: string) => {\n  ClarityIcons.addIcons(timesIcon);\n\n  const closeButton = document.createElement('button');\n  closeButton.setAttribute('aria-label', ariaLabel);\n  closeButton.setAttribute('aria-hidden', 'true');\n  closeButton.innerHTML = `\n    <cds-icon\n      inner-offset=\"1\"\n      shape=\"times\"\n      size=\"32\"\n    ></cds-icon>\n  `;\n  /**\n   * The button is hidden by default based on our Desktop-first approach.\n   */\n  closeButton.setAttribute('hidden', 'true');\n  closeButton.className = 'clr-nav-close';\n  return closeButton;\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 = createCloseButton(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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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.tabLink.id === this.id)?.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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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) readonly id: number,\n    public el: ElementRef<HTMLElement>,\n    cfr: ComponentFactoryResolver,\n    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 = cfr.resolveComponentFactory(TemplateRefContainer);\n    this.templateRefContainer = viewContainerRef.createComponent(factory, undefined, undefined, [\n      [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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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: '[clrTabAction]',\n  host: {\n    tabindex: '0',\n  },\n})\nexport class ClrTabAction {}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 { ClrTabAction } from './tab-action.directive';\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      <ng-content select=\"clr-tabs-actions\"></ng-content>\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(ClrTabAction, { read: ElementRef, descendants: true }) tabsActions: QueryList<ElementRef>;\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<HTMLElement>) {\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    this.subscriptions.push(this.listedForTabsActionsChanges());\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    const isTabsAction = this.tabsActions.some(action =>\n      (action.nativeElement as HTMLElement).contains(event.target as HTMLElement)\n    );\n    if (\n      event.target === tabOverflowTrigger ||\n      tabOverflowTrigger.contains(event.target as HTMLElement) ||\n      isTabsAction\n    ) {\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 setTabLinkElements() {\n    this._tabLinkDirectives = this.tabs.map(tab => tab.tabLink);\n    this.tabLinkElements = this._tabLinkDirectives.map(tab => tab.el.nativeElement);\n    if (this.tabsActions) {\n      this.tabLinkElements.push(...this.tabsActions.map(action => action.nativeElement));\n    }\n  }\n\n  private listenForTabLinkChanges() {\n    return this.tabs.changes\n      .pipe(startWith(this.tabs.map(tab => tab.tabLink)))\n      .subscribe(() => this.setTabLinkElements());\n  }\n\n  private listedForTabsActionsChanges() {\n    return this.tabsActions.changes.subscribe(() => this.setTabLinkElements());\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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\nexport type ClrTabsActionsPosition = 'left' | 'right';\n\n@Component({\n  selector: 'clr-tabs-actions',\n  template: `\n    <div class=\"tabs-actions-wrapper\">\n      <ng-content></ng-content>\n    </div>\n  `,\n  host: {\n    '[class.tabs-actions]': 'true',\n  },\n})\nexport class ClrTabsActions {\n  @Input()\n  @HostBinding('attr.position')\n  position: ClrTabsActionsPosition = 'right';\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 { ClrTabAction } from './tab-action.directive';\nimport { ClrTabContent } from './tab-content';\nimport { ClrTabLink } from './tab-link.directive';\nimport { ClrTabOverflowContent } from './tab-overflow-content';\nimport { ClrTabs } from './tabs';\nimport { ClrTabsActions } from './tabs-actions';\n\nexport const CLR_TABS_DIRECTIVES: Type<any>[] = [\n  ClrTabContent,\n  ClrTab,\n  ClrTabs,\n  ClrTabOverflowContent,\n  ClrTabLink,\n  ClrTabAction,\n  ClrTabsActions,\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 { uniqueIdFactory } from '../../utils/id-generator/id-generator.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  @Input('clrVerticalNavToggleLabel') toggleLabel: string;\n  contentId = uniqueIdFactory();\n\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 = _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-2025 Broadcom. All Rights Reserved.\n  ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n  ~ This software 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-controls]=\"contentId\"\n  [attr.aria-expanded]=\"ariaExpanded\"\n  [attr.aria-label]=\"toggleLabel || 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 [id]=\"contentId\" 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-controls]=\"contentId\"\n    [attr.aria-label]=\"toggleLabel || commonStrings.keys.verticalNavToggle\"\n    *ngIf=\"collapsible && collapsed\"\n  ></button>\n</div>\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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    navGroupService: VerticalNavGroupService,\n    private _navService: VerticalNavService,\n    public commonStrings: ClrCommonStringsService\n  ) {\n    _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      _itemExpand.expandChange.subscribe(value => {\n        if (value && this.expandAnimationState === COLLAPSED_STATE) {\n          if (_navService.collapsed) {\n            _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      _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      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-2025 Broadcom. All Rights Reserved.\n  ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n  ~ This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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    _verticalNavIconService.registerIcon();\n  }\n\n  ngOnDestroy() {\n    this._verticalNavIconService.unregisterIcon();\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 { ClrBreadcrumbsModule } from './breadcrumbs';\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, ClrBreadcrumbsModule],\n})\nexport class ClrLayoutModule {}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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 './tabs-actions';\nexport * from './tab';\nexport * from './tab-content';\nexport * from './tab-overflow-content';\nexport * from './tab-link.directive';\nexport * from './tab-action.directive';\nexport * from './tabs.module';\n\nexport { ClrTabsActionsPosition } from './tabs-actions';\nexport { TabsWillyWonka as ÇlrTabsWillyWonka } from './chocolate/tabs-willy-wonka';\nexport { ActiveOompaLoompa as ÇlrActiveOompaLoompa } from './chocolate/active-oompa-loompa';\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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';\nexport * from './breadcrumbs/index';\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { DOCUMENT } from '@angular/common';\nimport { Directive, ElementRef, Inject, NgModule, Optional } 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   * Include the constructor to forward all the dependencies to the base class\n   * as a workaround to fix Angular \"ɵɵinvalidFactoryDep\" error after upgrading storybook\n   * https://github.com/storybookjs/storybook/issues/23534\n   */\n  constructor(\n    elementRef: ElementRef<HTMLElement>,\n    focusTrapFactory: FocusTrapFactory,\n    @Optional() @Inject(DOCUMENT) document: any\n  ) {\n    super(elementRef, focusTrapFactory, document);\n  }\n}\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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    public isRangeStartDay: boolean = false,\n    public isRangeEndDay: 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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(undefined, {\n      weekday: 'long',\n      month: 'long',\n      day: 'numeric',\n      year: 'numeric',\n    });\n  }\n\n  /**\n   * Compares the dates and returns boolean value based on the value passed\n   */\n  isBefore(day: DayModel, dayInclusive = false) {\n    return dayInclusive\n      ? this.toDate().getTime() <= day?.toDate().getTime()\n      : this.toDate().getTime() < day?.toDate().getTime();\n  }\n\n  /**\n   * Compares the dates and returns boolean value based on the value passed\n   */\n  isAfter(day: DayModel, dayInclusive = false) {\n    return dayInclusive\n      ? this.toDate().getTime() >= day?.toDate().getTime()\n      : this.toDate().getTime() > day?.toDate().getTime();\n  }\n\n  private pad(num: number): string {\n    return num < 10 ? `0${num}` : `${num}`;\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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    public selectedDay: DayModel,\n    public selectedEndDay: 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   * Updates the selected day in the calendar\n   */\n  updateSelectedDay(day: DayModel | undefined): void {\n    this.setSelectedDay(this.selectedDay, false);\n    this.selectedDay = day;\n    this.setSelectedDay(day, true);\n  }\n\n  /**\n   * Updates the selected end day in the calendar\n   */\n  updateSelectedEndDay(day: DayModel | undefined): void {\n    this.setSelectedDay(this.selectedEndDay, false);\n    this.selectedEndDay = day;\n    this.setSelectedDay(day, true);\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    this.setSelectedDay(this.selectedDay, true);\n    this.setSelectedDay(this.selectedEndDay, true);\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.selectedEndDay && this.isDayInCalendarView(this.selectedEndDay)) {\n      this.setFocusableFlag(this.selectedEndDay, true);\n      this.focusableDay = this.selectedEndDay.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  private setSelectedDay(day: DayModel, flag: boolean) {\n    if (day && this.isDayInCalendarView(day)) {\n      this.currMonthDayViews[day?.date - 1].isSelected = flag;\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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   * Returns CalendarModel of the previous year.\n   */\n  previousYear(): CalendarModel {\n    return new CalendarModel(this.year - 1, this.month);\n  }\n\n  /**\n   * Returns CalendarModel of the next year.\n   */\n  nextYear(): CalendarModel {\n    return new CalendarModel(this.year + 1, this.month);\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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, tap } from 'rxjs';\nimport { Subject } from 'rxjs';\n\nimport { DateRangeInput } from '../interfaces/date-range.interface';\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  persistedDate: DayModel;\n  persistedEndDate: DayModel;\n  selectedDay: DayModel;\n  selectedEndDay: DayModel;\n  focusedDay: DayModel;\n  hoveredDay: DayModel;\n  hoveredMonth: number;\n  hoveredYear: number;\n  isRangePicker = false;\n  hasActionButtons = false;\n\n  private _displayedCalendar: CalendarModel;\n  private _todaysFullDate: Date = new Date();\n  private _today: DayModel;\n  private _selectedDayChange = new Subject<DayModel>();\n  private _selectedEndDayChange = new Subject<DayModel>();\n  private _displayedCalendarChange = new Subject<void>();\n  private _focusOnCalendarChange = new Subject<void>();\n  private _refreshCalendarView = 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  get selectedEndDayChange(): Observable<DayModel> {\n    return this._selectedEndDayChange.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().pipe(tap((day: DayModel) => (this.focusedDay = day)));\n  }\n\n  /**\n   * This observable lets the subscriber know that the displayed calendar has changed.\n   */\n  get refreshCalendarView(): Observable<void> {\n    return this._refreshCalendarView.asObservable();\n  }\n\n  /**\n   * Notifies that the selected day has changed so that the date can be emitted to the user.\n   */\n  notifySelectedDayChanged(dayObject: DayModel | DateRangeInput, { emitEvent } = { emitEvent: true }): void {\n    if (this.isRangePicker) {\n      const { startDate, endDate } = dayObject as DateRangeInput;\n      if (startDate && endDate) {\n        this.setSelectedDay(startDate, emitEvent);\n        this.setSelectedEndDay(endDate, emitEvent);\n      } else {\n        if (endDate !== null) {\n          this.setSelectedEndDay(endDate, emitEvent);\n        }\n        if (startDate !== null) {\n          this.setSelectedDay(startDate, emitEvent);\n        }\n      }\n    } else {\n      const day = dayObject as DayModel;\n      this.setSelectedDay(day, emitEvent);\n    }\n    this._refreshCalendarView.next();\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 next year.\n   */\n  moveToNextYear(): void {\n    this.setDisplayedCalendar(this._displayedCalendar.nextYear());\n  }\n\n  /**\n   * Moves the displayed calendar to the previous year.\n   */\n  moveToPreviousYear(): void {\n    this.setDisplayedCalendar(this._displayedCalendar.previousYear());\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  moveToSpecificMonth(day: DayModel) {\n    if (!this.displayedCalendar.isDayInCalendar(day)) {\n      this.setDisplayedCalendar(new CalendarModel(day.year, day.month));\n    }\n  }\n\n  incrementFocusDay(value: number): void {\n    this.hoveredDay = 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  resetSelectedDay() {\n    this.selectedDay = this.persistedDate;\n    this.selectedEndDay = this.persistedEndDate;\n  }\n\n  convertDateToDayModel(date: Date): DayModel {\n    return new DayModel(date.getFullYear(), date.getMonth(), date.getDate());\n  }\n\n  private setSelectedDay(dayModel: DayModel | undefined, emitEvent): void {\n    this.selectedDay = dayModel;\n    if (emitEvent) {\n      this._selectedDayChange.next(dayModel);\n    }\n  }\n\n  private setSelectedEndDay(dayModel: DayModel | undefined, emitEvent): void {\n    this.selectedEndDay = dayModel;\n    if (emitEvent) {\n      this._selectedEndDayChange.next(dayModel);\n    }\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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<HTMLElement>): void {\n    this._ngZone.runOutsideAngular(() => {\n      this.ngZoneIsStableInBrowser().subscribe(() => {\n        const focusEl = elRef.nativeElement.querySelector<HTMLElement>('[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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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, DateRangeOption } 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 dateRangeOptions;\n  private localeDisplayFormat: InputDateDisplayFormat = LITTLE_ENDIAN;\n  private delimiters: [string, string] = ['/', '/'];\n\n  constructor(localeHelperService: LocaleHelperService) {\n    this.cldrLocaleDateFormat = 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  setRangeOptions(rangeOptions: DateRangeOption[]) {\n    const validatedRangeOption = this.validateDateRangeOptions(rangeOptions);\n    this.dateRangeOptions = validatedRangeOption || [];\n  }\n\n  getRangeOptions() {\n    return this.dateRangeOptions;\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 validateDateRangeOptions(rangeOptions: DateRangeOption[]): DateRangeOption[] {\n    const validOptions = [];\n    rangeOptions?.forEach((rangeOption: DateRangeOption) => {\n      if (\n        rangeOption?.value?.length !== 2 ||\n        Object.prototype.toString.call(rangeOption?.value[0]) !== '[object Date]' ||\n        Object.prototype.toString.call(rangeOption?.value[1]) !== '[object Date]'\n      ) {\n        return;\n      }\n      validOptions.push(rangeOption);\n    });\n    return validOptions;\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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, HostListener, Input, Output } from '@angular/core';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { DayViewModel } from './model/day-view.model';\nimport { DayModel } from './model/day.model';\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      [class.in-range]=\"isInRange()\"\n      [class.is-start-range]=\"isRangeStartDay\"\n      [class.is-end-range]=\"isRangeEndDay\"\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  @Output('selectDay') onSelectDay = new EventEmitter<DayModel>();\n\n  private _dayView: DayViewModel;\n\n  constructor(private _dateNavigationService: DateNavigationService, private commonStrings: ClrCommonStringsService) {}\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  get isRangeStartDay(): boolean {\n    return (\n      this._dateNavigationService.isRangePicker &&\n      this.dayView?.dayModel?.toComparisonString() === this._dateNavigationService.selectedDay?.toComparisonString()\n    );\n  }\n\n  get isRangeEndDay(): boolean {\n    return (\n      this._dateNavigationService.isRangePicker &&\n      this.dayView?.dayModel?.toComparisonString() === this._dateNavigationService.selectedEndDay?.toComparisonString()\n    );\n  }\n\n  /**\n   * Calls the DateNavigationService to update the hovered day value of the calendar\n   */\n  @HostListener('mouseenter')\n  hoverListener(): void {\n    if (!this.dayView.isDisabled) {\n      this._dateNavigationService.hoveredDay = this.dayView.dayModel;\n    }\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    if (this.dayView.isDisabled) {\n      return;\n    }\n    const day: DayModel = this.dayView.dayModel;\n    this.onSelectDay.emit(day);\n  }\n\n  /**\n   * Applicable only to date range picker\n   * Compares whether the day is in between the start and end date range\n   */\n  isInRange(): boolean {\n    if (!this._dateNavigationService.isRangePicker) {\n      return false;\n    }\n    if (this._dateNavigationService.selectedDay && this._dateNavigationService.selectedEndDay) {\n      return (\n        this._dayView.dayModel?.isAfter(this._dateNavigationService.selectedDay) &&\n        this._dayView.dayModel?.isBefore(this._dateNavigationService.selectedEndDay)\n      );\n    } else if (this._dateNavigationService.selectedDay && !this._dateNavigationService.selectedEndDay) {\n      return (\n        this._dayView.dayModel?.isAfter(this._dateNavigationService.selectedDay) &&\n        this._dayView.dayModel?.isBefore(this._dateNavigationService.hoveredDay, true)\n      );\n    } else {\n      return false;\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { DateRangeInput } from './interfaces/date-range.interface';\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 { DateFormControlService } from './providers/date-form-control.service';\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<HTMLElement>,\n    private _dateFormControlService: DateFormControlService,\n    private _toggleService: ClrPopoverToggleService\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 selectedEndDay(): DayModel {\n    return this._dateNavigationService.selectedEndDay;\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  setSelectedDay(day: DayModel) {\n    const hasActionButtons = this._dateNavigationService.hasActionButtons;\n    const selectedDates: DayModel | DateRangeInput = this.updateCalendarViewModal(day);\n    this._dateNavigationService.notifySelectedDayChanged(selectedDates, { emitEvent: !hasActionButtons });\n    if (!hasActionButtons) {\n      this._dateFormControlService.markAsDirty();\n      this.validateAndCloseDatePicker();\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    this._subs.push(\n      this._dateNavigationService.refreshCalendarView.subscribe(() => {\n        this.refreshCalendarViewModal();\n      })\n    );\n  }\n\n  private validateAndCloseDatePicker() {\n    if (\n      (this._dateNavigationService.isRangePicker &&\n        this._dateNavigationService.selectedDay &&\n        this._dateNavigationService.selectedEndDay) ||\n      (!this._dateNavigationService.isRangePicker && this._dateNavigationService.selectedDay)\n    ) {\n      this._toggleService.open = false;\n    }\n  }\n\n  private updateCalendarViewModal(day: DayModel): DayModel | DateRangeInput {\n    const startDate = this.calendarViewModel.selectedDay || null,\n      isRangePicker = this._dateNavigationService.isRangePicker;\n    let endDate = this.calendarViewModel.selectedEndDay || null;\n\n    if (isRangePicker) {\n      if (!startDate || (!!startDate && !!endDate) || (!!startDate && day?.isBefore(startDate))) {\n        this.calendarViewModel.updateSelectedDay(day);\n        if (endDate) {\n          endDate = undefined;\n          this.calendarViewModel.updateSelectedEndDay(endDate);\n        }\n      } else {\n        this.calendarViewModel.updateSelectedEndDay(day);\n      }\n    } else {\n      this.calendarViewModel.updateSelectedDay(day);\n    }\n\n    return isRangePicker\n      ? { startDate: this.calendarViewModel.selectedDay, endDate: this.calendarViewModel.selectedEndDay }\n      : this.calendarViewModel.selectedDay;\n  }\n\n  private refreshCalendarViewModal() {\n    this.calendarViewModel.updateSelectedDay(this._dateNavigationService.selectedDay);\n    if (this._dateNavigationService.isRangePicker) {\n      this.calendarViewModel.updateSelectedEndDay(this._dateNavigationService.selectedEndDay);\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.selectedEndDay,\n      this.focusedDay,\n      this.today,\n      this._localeHelperService.firstDayOfWeek,\n      this._dateIOService.disabledDates\n    );\n  }\n}\n","<table class=\"calendar-table\" role=\"presentation\">\n  <tr class=\"calendar-row weekdays\">\n    <th *ngFor=\"let day of localeDays\" class=\"calendar-cell weekday\">\n      <span [attr.aria-label]=\"day.day\">{{day.narrow}}</span>\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\" (selectDay)=\"setSelectedDay($event)\"></clr-day>\n    </td>\n  </tr>\n</table>\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 (_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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  forwardRef,\n  HostBinding,\n  HostListener,\n  Inject,\n  Injector,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional,\n  PLATFORM_ID,\n  Renderer2,\n  Self,\n  ViewContainerRef,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { filter } 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()\nexport abstract class ClrDateInputBase\n  extends WrappedFormControl<ClrDateContainer>\n  implements OnInit, AfterViewInit, OnDestroy\n{\n  static ngAcceptInputType_date: Date | null | string;\n\n  @Input() placeholder: string;\n\n  protected override index = 1;\n\n  private initialClrDateInputValue: Date;\n  private previousDateChange: Date;\n\n  protected abstract dateChange: EventEmitter<Date>;\n\n  constructor(\n    viewContainerRef: ViewContainerRef,\n    injector: Injector,\n    protected override el: ElementRef<HTMLInputElement>,\n    protected override renderer: Renderer2,\n    @Self()\n    @Optional()\n    protected control: NgControl,\n    @Optional() @Inject(forwardRef(() => ClrDateContainer)) private container: ClrDateContainer,\n    @Optional() protected dateIOService: DateIOService,\n    @Optional() protected 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    protected datepickerFocusService: DatepickerFocusService\n  ) {\n    super(viewContainerRef, ClrDateContainer, injector, control, renderer, el);\n  }\n\n  get disabled() {\n    if (this.dateFormControlService) {\n      return this.dateFormControlService.disabled || !!this.control?.control?.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  protected abstract get userSelectedDayChange(): Observable<DayModel>;\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  protected datepickerHasFormControl() {\n    return !!this.control;\n  }\n\n  protected setDate(date: Date | string) {\n    if (typeof date === 'string') {\n      date = new Date(date);\n    }\n\n    if (this.previousDateChange !== date) {\n      this.updateDate(date);\n    }\n\n    if (!this.initialClrDateInputValue) {\n      this.initialClrDateInputValue = date;\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 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      const dayModel = date ? new DayModel(date.getFullYear(), date.getMonth(), date.getDate()) : null;\n\n      this.updateDayModel(dayModel);\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      this.validateDateRange();\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 listenForControlValueChanges() {\n    if (this.datepickerHasFormControl()) {\n      return this.control.valueChanges\n        .pipe(\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    } else {\n      return null;\n    }\n  }\n\n  private listenForUserSelectedDayChanges() {\n    return this.userSelectedDayChange.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 && !this.dateNavigationService.isRangePicker))\n      .subscribe(() => this.datepickerFocusService.focusInput(this.el.nativeElement));\n  }\n\n  /**\n   * In case of date range error, both start & end date field validation has to be triggered\n   * if either of the field gets updated\n   */\n  private validateDateRange() {\n    if (this.dateNavigationService.isRangePicker) {\n      const primaryControl = this.ngControlService?.control;\n      const additionalControls = this.ngControlService?.additionalControls;\n      const isValid = this.dateNavigationService.selectedDay?.isBefore(this.dateNavigationService.selectedEndDay, true);\n      if (\n        isValid &&\n        (primaryControl?.hasError('range') || additionalControls?.some(control => control.hasError('range')))\n      ) {\n        primaryControl.control?.updateValueAndValidity({ emitEvent: false });\n        additionalControls.forEach((ngControl: NgControl) => {\n          ngControl?.control?.updateValueAndValidity({ emitEvent: false });\n        });\n      }\n    }\n  }\n\n  protected abstract updateDayModel(dayModel: DayModel): void;\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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, HostBinding, Input, Output } from '@angular/core';\n\nimport { ClrDateInputBase } from './date-input';\nimport { DayModel } from './model/day.model';\nimport { DatepickerFocusService } from './providers/datepicker-focus.service';\n\n@Directive({\n  selector: '[clrEndDate]',\n  host: {\n    '[class.clr-input]': 'true',\n  },\n  providers: [DatepickerFocusService],\n})\nexport class ClrEndDateInput extends ClrDateInputBase {\n  @Output('clrEndDateChange') override dateChange = new EventEmitter<Date>(false);\n\n  @Input('inputWidth') inputWidth = 13;\n\n  @Input('clrEndDate')\n  set date(date: Date | string) {\n    this.setDate(date);\n  }\n\n  @HostBinding('attr.size')\n  get inputSize() {\n    return this.inputWidth;\n  }\n\n  protected override get userSelectedDayChange() {\n    return this.dateNavigationService.selectedEndDayChange;\n  }\n\n  triggerControlInputValidation() {\n    if (this.datepickerHasFormControl()) {\n      this.control.control?.updateValueAndValidity({ emitEvent: false });\n      this.control.control?.setErrors(this.control.control.errors);\n    }\n  }\n\n  protected override updateDayModel(dayModel: DayModel) {\n    this.dateNavigationService.persistedEndDate = this.dateNavigationService.selectedEndDay = dayModel;\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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, Output } from '@angular/core';\n\nimport { ClrDateInputBase } from './date-input';\nimport { DayModel } from './model/day.model';\nimport { DatepickerFocusService } from './providers/datepicker-focus.service';\n\n@Directive({\n  selector: '[clrDate]',\n  host: {\n    '[class.clr-input]': 'true',\n  },\n  providers: [DatepickerFocusService],\n})\nexport class ClrDateInput extends ClrDateInputBase {\n  @Output('clrDateChange') override dateChange = new EventEmitter<Date>(false);\n\n  @Input('clrDate')\n  set date(date: Date | string) {\n    this.setDate(date);\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  protected override get userSelectedDayChange() {\n    return this.dateNavigationService.selectedDayChange;\n  }\n\n  protected override updateDayModel(dayModel: DayModel) {\n    this.dateNavigationService.persistedDate = this.dateNavigationService.selectedDay = dayModel;\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","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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, HostBinding, Input, Output } from '@angular/core';\n\nimport { ClrDateInputBase } from './date-input';\nimport { DayModel } from './model/day.model';\nimport { DatepickerFocusService } from './providers/datepicker-focus.service';\n\n@Directive({\n  selector: '[clrStartDate]',\n  host: {\n    '[class.clr-input]': 'true',\n    '[style.text-align]': \"'right'\",\n  },\n  providers: [DatepickerFocusService],\n})\nexport class ClrStartDateInput extends ClrDateInputBase {\n  @Output('clrStartDateChange') override dateChange = new EventEmitter<Date>(false);\n\n  @Input('inputWidth') inputWidth = 13;\n\n  @Input('clrStartDate')\n  set date(date: Date | string) {\n    this.setDate(date);\n  }\n\n  @HostBinding('attr.size')\n  get inputSize() {\n    return this.inputWidth;\n  }\n\n  protected override get userSelectedDayChange() {\n    return this.dateNavigationService.selectedDayChange;\n  }\n\n  triggerControlInputValidation() {\n    if (this.datepickerHasFormControl()) {\n      this.control.control?.updateValueAndValidity({ emitEvent: false });\n      this.control.control?.setErrors(this.control.control.errors);\n    }\n  }\n\n  protected override updateDayModel(dayModel: DayModel) {\n    this.dateNavigationService.persistedDate = this.dateNavigationService.selectedDay = dayModel;\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 { ClrCommonStringsService } from '../../utils';\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@Component({\n  selector: 'clr-monthpicker',\n  template: `\n    <div class=\"calendar-header in-monthpicker\">\n      <div class=\"year-view-switcher\">\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)=\"previousYear()\"\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)=\"currentYear()\"\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)=\"nextYear()\"\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    <div class=\"months\">\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]=\"isSelected(monthIndex)\"\n        [class.is-start-range]=\"getIsRangeStartMonth(monthIndex)\"\n        [class.is-end-range]=\"getIsRangeEndMonth(monthIndex)\"\n        [class.in-range]=\"isInRange(monthIndex)\"\n        [attr.tabindex]=\"getTabIndex(monthIndex)\"\n        [class.is-today]=\"calendarYear === currentCalendarYear && monthIndex === currentCalendarMonth\"\n        (mouseenter)=\"onHover(monthIndex)\"\n      >\n        {{ month }}\n      </button>\n    </div>\n  `,\n  host: {\n    '[class.monthpicker]': 'true',\n    role: 'application',\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 _localeHelperService: LocaleHelperService,\n    private _dateNavigationService: DateNavigationService,\n    private _datepickerFocusService: DatepickerFocusService,\n    private _elRef: ElementRef,\n    private _viewManagerService: ViewManagerService,\n    public commonStrings: ClrCommonStringsService\n  ) {\n    this._focusedMonthIndex = this.calendarMonthIndex;\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   * Gets the month value of the Calendar.\n   */\n  get calendarMonthIndex(): number {\n    return this._dateNavigationService.displayedCalendar.month;\n  }\n\n  /**\n   * Gets the year which the user is currently on.\n   */\n  get calendarEndMonthIndex(): number {\n    return this._dateNavigationService.selectedEndDay?.month;\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 year value of the calendar.\n   */\n  get calendarYear(): number {\n    return this._dateNavigationService.displayedCalendar.year;\n  }\n\n  get currentCalendarYear(): number {\n    return new Date().getFullYear();\n  }\n\n  get currentCalendarMonth(): number {\n    return new Date().getMonth();\n  }\n\n  getIsRangeStartMonth(monthIndex: number): boolean {\n    return (\n      this._dateNavigationService.isRangePicker &&\n      this.calendarYear === this._dateNavigationService.selectedDay?.year &&\n      monthIndex === this._dateNavigationService.selectedDay?.month\n    );\n  }\n\n  getIsRangeEndMonth(monthIndex: number): boolean {\n    return (\n      this._dateNavigationService.isRangePicker &&\n      this.calendarYear === this._dateNavigationService.selectedEndDay?.year &&\n      monthIndex === this._dateNavigationService.selectedEndDay?.month\n    );\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   * 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 > 1) {\n        event.preventDefault();\n        this._focusedMonthIndex -= 2;\n        this._datepickerFocusService.focusCell(this._elRef);\n      } else if (key === Keys.ArrowDown && this._focusedMonthIndex < 10) {\n        event.preventDefault();\n        this._focusedMonthIndex += 2;\n        this._datepickerFocusService.focusCell(this._elRef);\n      } else if (key === Keys.ArrowRight && this._focusedMonthIndex < 11) {\n        event.preventDefault();\n        this._focusedMonthIndex++;\n        this._datepickerFocusService.focusCell(this._elRef);\n      } else if (key === Keys.ArrowLeft && this._focusedMonthIndex > 0) {\n        event.preventDefault();\n        this._focusedMonthIndex--;\n        this._datepickerFocusService.focusCell(this._elRef);\n      }\n    }\n  }\n\n  isSelected(monthIndex: number): boolean {\n    return (\n      (this._dateNavigationService.selectedDay?.year === this.calendarYear &&\n        monthIndex === this._dateNavigationService.selectedDay?.month) ||\n      (this._dateNavigationService.selectedEndDay?.year === this.calendarYear &&\n        monthIndex === this.calendarEndMonthIndex)\n    );\n  }\n\n  /**\n   * Calls the DateNavigationService to update the hovered month value of the calendar\n   */\n  onHover(monthIndex: number): void {\n    this._dateNavigationService.hoveredMonth = monthIndex;\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   * Calls the DateNavigationService to move to the next month.\n   */\n  nextYear(): void {\n    this._dateNavigationService.moveToNextYear();\n  }\n\n  /**\n   * Calls the DateNavigationService to move to the previous month.\n   */\n  previousYear(): void {\n    this._dateNavigationService.moveToPreviousYear();\n  }\n\n  /**\n   * Calls the DateNavigationService to move to the current month.\n   */\n  currentYear(): void {\n    this._dateNavigationService.moveToCurrentMonth();\n  }\n\n  /**\n   * Applicable only to date range picker\n   * Compares the month passed is in between the start and end date range\n   */\n  isInRange(monthIndex: number): boolean {\n    if (!this._dateNavigationService.isRangePicker) {\n      return false;\n    }\n    if (this._dateNavigationService.selectedDay && this._dateNavigationService.selectedEndDay) {\n      return (\n        (this.calendarYear === this._dateNavigationService.selectedDay.year &&\n          monthIndex > this._dateNavigationService.selectedDay.month &&\n          this.calendarYear === this._dateNavigationService.selectedEndDay.year &&\n          monthIndex < this._dateNavigationService.selectedEndDay.month) ||\n        (this._dateNavigationService.selectedDay.year !== this._dateNavigationService.selectedEndDay.year &&\n          this.calendarYear === this._dateNavigationService.selectedDay.year &&\n          monthIndex > this._dateNavigationService.selectedDay.month) ||\n        (this._dateNavigationService.selectedDay.year !== this._dateNavigationService.selectedEndDay.year &&\n          this.calendarYear === this._dateNavigationService.selectedEndDay.year &&\n          monthIndex < this._dateNavigationService.selectedEndDay.month) ||\n        (this.calendarYear > this._dateNavigationService.selectedDay.year &&\n          this.calendarYear < this._dateNavigationService.selectedEndDay.year)\n      );\n    } else if (this._dateNavigationService.selectedDay && !this._dateNavigationService.selectedEndDay) {\n      return (\n        (this.calendarYear === this._dateNavigationService.selectedDay.year &&\n          monthIndex > this._dateNavigationService.selectedDay.month &&\n          monthIndex < this._dateNavigationService.hoveredMonth) ||\n        (this.calendarYear > this._dateNavigationService.selectedDay.year &&\n          monthIndex < this._dateNavigationService.hoveredMonth)\n      );\n    } else {\n      return false;\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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=\"calendar-header\">\n      <div class=\"calendar-pickers\">\n        <button class=\"calendar-btn yearpicker-trigger year-range\" type=\"button\" (click)=\"changeToDayView()\">\n          {{ yearRangeModel.yearRange[0] }} - {{ yearRangeModel.yearRange[yearRangeModel.yearRange.length - 1] }}\n        </button>\n      </div>\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\n            shape=\"angle\"\n            direction=\"left\"\n            [attr.title]=\"commonStrings.keys.datepickerPreviousDecade\"\n          ></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>\n\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 === selectedStartYear || year === selectedEndYear\"\n        [class.is-start-range]=\"getIsRangeStartYear(year)\"\n        [class.is-end-range]=\"getIsRangeEndYear(year)\"\n        [class.in-range]=\"isInRange(year)\"\n        [class.is-today]=\"isCurrentCalendarYear(year)\"\n        (click)=\"changeYear(year)\"\n        (mouseenter)=\"onHover(year)\"\n      >\n        {{ year }}\n      </button>\n    </div>\n  `,\n  host: {\n    '[class.yearpicker]': 'true',\n    role: 'application',\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<HTMLElement>,\n    public commonStrings: ClrCommonStringsService\n  ) {\n    this.yearRangeModel = new YearRangeModel(this.calendarYear);\n    this._focusedYear = this.calendarYear;\n  }\n\n  get selectedStartYear(): number {\n    return this._dateNavigationService.selectedDay?.year;\n  }\n\n  get selectedEndYear(): number {\n    return this._dateNavigationService.selectedEndDay?.year;\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  isCurrentCalendarYear(year: number): boolean {\n    return year === new Date().getFullYear();\n  }\n\n  getIsRangeStartYear(year: number): boolean {\n    return this._dateNavigationService.isRangePicker && year === this._dateNavigationService.selectedDay?.year;\n  }\n\n  getIsRangeEndYear(year: number): boolean {\n    return this._dateNavigationService.isRangePicker && year === this._dateNavigationService.selectedEndDay?.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(-2);\n      } else if (key === Keys.ArrowDown) {\n        event.preventDefault();\n        this.incrementFocusYearBy(2);\n      } else if (key === Keys.ArrowRight) {\n        event.preventDefault();\n        this.incrementFocusYearBy(1);\n      } else if (key === Keys.ArrowLeft) {\n        event.preventDefault();\n        this.incrementFocusYearBy(-1);\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   * Calls the DateNavigationService to update the hovered year value of the calendar\n   */\n  onHover(year: number): void {\n    this._dateNavigationService.hoveredYear = year;\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 if (this.yearRangeModel.inRange(this.selectedEndYear)) {\n        this._focusedYear = this.selectedEndYear;\n      } else {\n        this._focusedYear = this.yearRangeModel.middleYear;\n      }\n    }\n    return this._focusedYear === year ? 0 : -1;\n  }\n\n  /**\n   * Applicable only to date range picker\n   * Compares the year passed is in between the start and end date range\n   */\n  isInRange(year: number): boolean {\n    if (!this._dateNavigationService.isRangePicker) {\n      return false;\n    }\n    if (this._dateNavigationService.selectedDay?.year && this.selectedEndYear) {\n      return year > this.selectedStartYear && year < this.selectedEndYear;\n    } else if (this._dateNavigationService.selectedDay?.year && !this.selectedEndYear) {\n      return year > this.selectedStartYear && year < this._dateNavigationService.hoveredYear;\n    } else {\n      return false;\n    }\n  }\n\n  changeToDayView() {\n    this._viewManagerService.changeToDayView();\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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', role: 'application' },\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { DateFormControlService } from './providers/date-form-control.service';\nimport { DateNavigationService } from './providers/date-navigation.service';\n\n@Component({\n  selector: 'clr-datepicker-actions',\n  template: `\n    <button class=\"btn btn-outline\" (click)=\"cancel()\">{{ commonStrings.keys.cancel }}</button>\n    <button class=\"btn btn-primary\" (click)=\"apply()\">{{ commonStrings.keys.apply }}</button>\n  `,\n  host: {\n    '[class.datepicker-actions]': 'true',\n  },\n})\nexport class ClrDatepickerActions {\n  constructor(\n    protected commonStrings: ClrCommonStringsService,\n    private toggleService: ClrPopoverToggleService,\n    private dateNavigationService: DateNavigationService,\n    private dateFormControlService: DateFormControlService\n  ) {}\n\n  protected apply() {\n    if (\n      this.dateNavigationService.isRangePicker &&\n      this.dateNavigationService.selectedDay &&\n      this.dateNavigationService.selectedEndDay\n    ) {\n      this.dateNavigationService.notifySelectedDayChanged({\n        startDate: this.dateNavigationService.selectedDay,\n        endDate: this.dateNavigationService.selectedEndDay,\n      });\n      this.dateFormControlService.markAsDirty();\n    } else if (!this.dateNavigationService.isRangePicker && this.dateNavigationService.selectedDay) {\n      this.dateNavigationService.notifySelectedDayChanged(this.dateNavigationService.selectedDay);\n      this.dateFormControlService.markAsDirty();\n    }\n    this.toggleService.open = false;\n  }\n\n  protected cancel() {\n    this.dateNavigationService.resetSelectedDay();\n    this.toggleService.open = false;\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 { DateIOService } from './providers/date-io.service';\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-datepicker-view-manager',\n  templateUrl: './datepicker-view-manager.html',\n  providers: [DatepickerFocusService],\n  host: {\n    '[class.datepicker]': 'true',\n    '[class.has-range-option]': 'hasRangeOptions',\n    '[class.has-action-buttons]': 'hasActionButtons',\n    '[attr.aria-modal]': 'true',\n    '[attr.aria-label]': 'commonStrings.keys.datepickerDialogLabel',\n    role: 'dialog',\n  },\n})\nexport class ClrDatepickerViewManager {\n  constructor(\n    public commonStrings: ClrCommonStringsService,\n    private viewManagerService: ViewManagerService,\n    private dateNavigationService: DateNavigationService,\n    private dateIOService: DateIOService\n  ) {}\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  get hasRangeOptions() {\n    return !!this.dateNavigationService?.isRangePicker && !!this.dateRangeOptions?.length;\n  }\n\n  protected get hasActionButtons() {\n    return this.dateNavigationService.hasActionButtons;\n  }\n\n  protected get dateRangeOptions() {\n    return this.dateIOService.getRangeOptions();\n  }\n\n  onRangeOptionSelect(selectedRange) {\n    const startDate = this.dateNavigationService.convertDateToDayModel(selectedRange?.value[0]),\n      endDate = this.dateNavigationService.convertDateToDayModel(selectedRange?.value[1]);\n    this.dateNavigationService.notifySelectedDayChanged({ startDate, endDate }, { emitEvent: !this.hasActionButtons });\n    this.dateNavigationService.moveToSpecificMonth(startDate);\n  }\n}\n","<!--\n  ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n  ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n  ~ This software is released under MIT license.\n  ~ The full license information can be found in LICENSE in the root directory of this project.\n-->\n\n<ng-container *ngIf=\"hasRangeOptions; else calendarView\">\n  <clr-vertical-nav class=\"clr-date-range-picker-nav\">\n    <ng-container *ngFor=\"let option of dateRangeOptions\">\n      <a\n        clrVerticalNavLink\n        href=\"javascript:void(0)\"\n        [attr.aria-label]=\"option?.label\"\n        tabindex=\"0\"\n        (keyup.enter)=\"onRangeOptionSelect(option)\"\n        (click)=\"onRangeOptionSelect(option)\"\n      >\n        {{option.label}}\n      </a>\n    </ng-container>\n  </clr-vertical-nav>\n\n  <ng-container *ngTemplateOutlet=\"calendarView\"></ng-container>\n</ng-container>\n\n<ng-template #calendarView>\n  <div class=\"datepicker-view-manager\">\n    <clr-monthpicker *ngIf=\"isMonthView\"></clr-monthpicker>\n    <clr-yearpicker *ngIf=\"isYearView\"></clr-yearpicker>\n    <clr-daypicker *ngIf=\"isDayView\"></clr-daypicker>\n    <clr-datepicker-actions *ngIf=\"hasActionButtons\"></clr-datepicker-actions>\n  </div>\n</ng-template>\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  ContentChild,\n  ElementRef,\n  Input,\n  Optional,\n  Renderer2,\n  ViewChild,\n} 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 { ClrEndDateInput } from './date-end-input';\nimport { ClrDateInput } from './date-single-input';\nimport { ClrStartDateInput } from './date-start-input';\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, clr-date-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-input-wrapper\" clrPopoverAnchor>\n        <div class=\"clr-input-group\" [class.clr-focus]=\"focus\">\n          <!-- render range inputs only if using clr-date-range-container -->\n          <ng-container *ngIf=\"isRangePicker\">\n            <ng-content select=\"[clrStartDate]\"></ng-content>\n            <span class=\"date-range-separator\">-</span>\n            <ng-content select=\"[clrEndDate]\"></ng-content>\n          </ng-container>\n          <!-- no *ngIf for the singe-date input because it breaks the \"auto-wrapped\" date picker -->\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  @ContentChild(ClrDateInput) private readonly clrDateInput: ClrDateInput;\n  @ContentChild(ClrStartDateInput) private readonly clrStartDateInput: ClrStartDateInput;\n  @ContentChild(ClrEndDateInput) private readonly clrEndDateInput: ClrEndDateInput;\n\n  private toggleButton: ElementRef<HTMLButtonElement>;\n\n  constructor(\n    protected renderer: Renderer2,\n    protected elem: ElementRef,\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    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      focusService.focusChange.subscribe(state => {\n        this.focus = state;\n      })\n    );\n\n    this.subscriptions.push(\n      toggleService.openChange.subscribe(() => {\n        dateFormControlService.markAsTouched();\n      })\n    );\n\n    if (dateNavigationService) {\n      const tagName = elem.nativeElement.tagName.toLowerCase();\n      dateNavigationService.hasActionButtons = dateNavigationService.isRangePicker =\n        tagName === 'clr-date-range-container';\n    }\n  }\n\n  /**\n   * For date range picker actions buttons are shown by default\n   */\n  @Input('showActionButtons')\n  set showActionButtons(flag: boolean) {\n    if (this.dateNavigationService.isRangePicker && !flag) {\n      console.error('Error! The date range picker requires action buttons, [showActionButtons] cannot be turned off.');\n    } else {\n      this.dateNavigationService.hasActionButtons = flag;\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  @Input()\n  set rangeOptions(rangeOptions) {\n    this.dateIOService.setRangeOptions(rangeOptions);\n  }\n\n  @Input()\n  set min(dateString: string) {\n    if (this.dateNavigationService.isRangePicker) {\n      this.dateIOService.setMinDate(dateString);\n      this.clrStartDateInput?.triggerControlInputValidation();\n      this.clrEndDateInput?.triggerControlInputValidation();\n    } else {\n      console.error(\n        'Error! The date container [min] input only works for date range pickers. Use the native `min` attribute/property for single-date inputs.'\n      );\n    }\n  }\n\n  @Input()\n  set max(dateString: string) {\n    if (this.dateNavigationService.isRangePicker) {\n      this.dateIOService.setMaxDate(dateString);\n      this.clrStartDateInput?.triggerControlInputValidation();\n      this.clrEndDateInput?.triggerControlInputValidation();\n    } else {\n      console.error(\n        'Error! The date container [max] input only works for date range pickers. Use the native `max` attribute/property for single-date inputs.'\n      );\n    }\n  }\n\n  @ViewChild('actionButton')\n  set actionButton(button: ElementRef<HTMLButtonElement>) {\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  protected get isRangePicker(): boolean {\n    return this.dateNavigationService.isRangePicker;\n  }\n\n  ngAfterViewInit(): void {\n    this.dateRangeStructuralChecks();\n    this.subscriptions.push(\n      this.toggleService.openChange.subscribe(open => {\n        if (open) {\n          this.initializeCalendar();\n        } else {\n          this.toggleButton.nativeElement.focus();\n          this.dateNavigationService.resetSelectedDay();\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  private dateRangeStructuralChecks() {\n    if (this.dateNavigationService.isRangePicker) {\n      if (this.clrDateInput) {\n        console.error('Error! clr-date-range-container must contain clrStartDate and clrEndDate inputs');\n      }\n      if (!this.clrStartDateInput) {\n        console.error('Error! clr-date-range-container must contain clrStartDate input');\n      }\n      if (!this.clrEndDateInput) {\n        console.error('Error! clr-date-range-container must contain clrEndDate input');\n      }\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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';\nimport { DateNavigationService } from './providers/date-navigation.service';\n\n@Directive({\n  selector: '[clrDate], [clrStartDate], [clrEndDate]',\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 < minDate) {\n        return { min: { min: minDate.toLocaleDateString(), actual: value.toLocaleDateString() } };\n      } else if (value && value > maxDate) {\n        return { max: { max: maxDate.toLocaleDateString(), actual: value.toLocaleDateString() } };\n      }\n    }\n\n    return null;\n  }\n}\n\n@Directive({\n  selector: '[clrStartDate]',\n  providers: [{ provide: NG_VALIDATORS, useExisting: ClrStartDateInputValidator, multi: true }],\n})\nexport class ClrStartDateInputValidator implements Validator {\n  constructor(\n    @Optional() private dateIOService: DateIOService,\n    @Optional() private dateNavigationService: DateNavigationService\n  ) {}\n\n  validate(control: AbstractControl): ValidationErrors {\n    if (this.dateIOService) {\n      const value = this.dateIOService.getDateValueFromDateString(control.value);\n      const endDate = this.dateNavigationService?.selectedEndDay?.toDate();\n\n      if (value && endDate && value > endDate) {\n        return { range: { startDate: value, endDate } };\n      }\n    }\n\n    return null;\n  }\n}\n\n@Directive({\n  selector: '[clrEndDate]',\n  providers: [{ provide: NG_VALIDATORS, useExisting: ClrEndDateInputValidator, multi: true }],\n})\nexport class ClrEndDateInputValidator implements Validator {\n  constructor(\n    @Optional() private dateIOService: DateIOService,\n    @Optional() private dateNavigationService: DateNavigationService\n  ) {}\n\n  validate(control: AbstractControl): ValidationErrors {\n    if (this.dateIOService) {\n      const value = this.dateIOService.getDateValueFromDateString(control.value);\n      const startDate = this.dateNavigationService?.selectedDay?.toDate();\n\n      if (value && startDate && value < startDate) {\n        return { range: { startDate, endDate: value } };\n      }\n    }\n\n    return null;\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 { ClrVerticalNavModule } from '../../layout';\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 { ClrEndDateInput } from './date-end-input';\nimport { ClrDateInputValidator, ClrEndDateInputValidator, ClrStartDateInputValidator } from './date-input.validator';\nimport { ClrDateInput } from './date-single-input';\nimport { ClrStartDateInput } from './date-start-input';\nimport { ClrDatepickerActions } from './datepicker-action-buttons';\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  ClrStartDateInput,\n  ClrEndDateInput,\n  ClrStartDateInputValidator,\n  ClrEndDateInputValidator,\n  ClrDatepickerViewManager,\n  ClrMonthpicker,\n  ClrYearpicker,\n  ClrDaypicker,\n  ClrCalendar,\n  ClrDatepickerActions,\n];\n\n@NgModule({\n  imports: [\n    CommonModule,\n    CdkTrapFocusModule,\n    ClrHostWrappingModule,\n    ClrConditionalModule,\n    ClrPopoverModuleNext,\n    ClrIconModule,\n    ClrCommonFormsModule,\n    ClrVerticalNavModule,\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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 buildFileList(files: File[]) {\n  const dataTransfer = new DataTransfer();\n\n  for (const file of files) {\n    dataTransfer.items.add(file);\n  }\n\n  return dataTransfer.files;\n}\n\nexport function selectFiles(fileInputElement: HTMLInputElement, files: File[] | FileList) {\n  fileInputElement.files = files instanceof FileList ? files : buildFileList(files);\n  fileInputElement.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));\n}\n\nexport function clearFiles(fileInputElement: HTMLInputElement) {\n  fileInputElement.value = '';\n  fileInputElement.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 } from '@angular/core';\n\nimport { ClrFileMessagesTemplateContext } from './file-messages-template';\n\nexport const CLR_FILE_MESSAGES_TEMPLATE_CONTEXT = new InjectionToken<ClrFileMessagesTemplateContext>(\n  'ClrFileMessagesTemplateContext'\n);\n\n@Component({\n  selector: 'clr-file-info',\n  template: `<ng-content></ng-content>`,\n  host: {\n    '[class.clr-subtext]': 'true',\n  },\n})\nexport class ClrFileInfo {}\n\n@Component({\n  selector: 'clr-file-success',\n  // We check for success here so that consumers don't have to.\n  template: `<ng-content *ngIf=\"context.success\"></ng-content>`,\n  host: {\n    '[style.display]': 'context.success ? \"inline-block\" : \"none\"',\n    '[class.clr-subtext]': 'true',\n    '[class.success]': 'true',\n  },\n})\nexport class ClrFileSuccess {\n  protected readonly context: ClrFileMessagesTemplateContext = inject(CLR_FILE_MESSAGES_TEMPLATE_CONTEXT);\n}\n\n@Component({\n  selector: 'clr-file-error',\n  // The host should have an `*ngIf` or `@if` that checks for the relevant error.\n  template: `<ng-content></ng-content>`,\n  host: {\n    '[class.clr-subtext]': 'true',\n    '[class.error]': 'true',\n  },\n})\nexport class ClrFileError {}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { inject, TemplateRef } from '@angular/core';\nimport { Directive } from '@angular/core';\n\nimport { ClrFileAcceptError, ClrFileMaxFileSizeError, ClrFileMinFileSizeError } from './file-input-validator-errors';\n\nexport interface ClrSingleFileValidationErrors {\n  accept?: ClrFileAcceptError;\n  minFileSize?: ClrFileMinFileSizeError;\n  maxFileSize?: ClrFileMaxFileSizeError;\n}\n\nexport interface ClrFileMessagesTemplateContext {\n  $implicit: File;\n  success: boolean;\n  errors: ClrSingleFileValidationErrors;\n}\n\n@Directive({\n  selector: 'ng-template[clr-file-messages]',\n})\nexport class ClrFileMessagesTemplate {\n  readonly templateRef: TemplateRef<ClrFileMessagesTemplateContext> = inject(TemplateRef);\n\n  static ngTemplateContextGuard(\n    directive: ClrFileMessagesTemplate,\n    context: unknown\n  ): context is ClrFileMessagesTemplateContext {\n    return true;\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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, Injector } from '@angular/core';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { NgControlService } from '../common/providers/ng-control.service';\nimport { ClrFileInputContainer } from './file-input-container';\nimport { ClrFileListValidationErrors } from './file-input-validator-errors';\nimport { selectFiles } from './file-input.helpers';\nimport { CLR_FILE_MESSAGES_TEMPLATE_CONTEXT } from './file-messages';\nimport {\n  ClrFileMessagesTemplate,\n  ClrFileMessagesTemplateContext,\n  ClrSingleFileValidationErrors,\n} from './file-messages-template';\n\n@Component({\n  selector: 'clr-file-list',\n  template: `\n    <ng-container *ngFor=\"let file of files\">\n      <div\n        *ngIf=\"createFileMessagesTemplateContext(file); let fileMessagesTemplateContext\"\n        role=\"listitem\"\n        class=\"clr-file-list-item\"\n        [ngClass]=\"{\n          'clr-error': !fileMessagesTemplateContext.success,\n          'clr-success': fileMessagesTemplateContext.success\n        }\"\n      >\n        <div class=\"clr-file-label-and-status-icon\">\n          <span class=\"label clr-file-label\">\n            {{ file.name }}\n            <button\n              class=\"btn btn-sm btn-link-neutral btn-icon clr-file-clear-button\"\n              [attr.aria-label]=\"getClearFileLabel(file.name)\"\n              (click)=\"clearFile(file)\"\n            >\n              <cds-icon shape=\"times\"></cds-icon>\n            </button>\n          </span>\n\n          <cds-icon\n            class=\"clr-validate-icon\"\n            [attr.shape]=\"fileMessagesTemplateContext.success ? 'check-circle' : 'exclamation-circle'\"\n            [attr.status]=\"fileMessagesTemplateContext.success ? 'success' : 'danger'\"\n            aria-hidden=\"true\"\n          ></cds-icon>\n        </div>\n\n        <ng-container\n          *ngIf=\"fileMessagesTemplate\"\n          [ngTemplateOutlet]=\"fileMessagesTemplate.templateRef\"\n          [ngTemplateOutletContext]=\"fileMessagesTemplateContext\"\n          [ngTemplateOutletInjector]=\"createFileMessagesTemplateInjector(fileMessagesTemplateContext)\"\n        ></ng-container>\n      </div>\n    </ng-container>\n  `,\n  host: {\n    '[attr.role]': '\"list\"',\n    '[class.clr-file-list]': 'true',\n  },\n})\nexport class ClrFileList {\n  @ContentChild(ClrFileMessagesTemplate) protected readonly fileMessagesTemplate: ClrFileMessagesTemplate;\n\n  private readonly injector = inject(Injector);\n  private readonly commonStrings = inject(ClrCommonStringsService);\n  private readonly ngControlService = inject(NgControlService, { optional: true });\n  private readonly fileInputContainer = inject(ClrFileInputContainer, { optional: true });\n\n  constructor() {\n    if (!this.ngControlService || !this.fileInputContainer) {\n      throw new Error('The clr-file-list component can only be used within a clr-file-input-container.');\n    }\n  }\n\n  protected get files() {\n    if (!this.fileInputContainer.fileInput) {\n      return [];\n    }\n\n    const fileInputElement = this.fileInputContainer.fileInput.elementRef.nativeElement;\n\n    return Array.from(fileInputElement.files).sort((a, b) => a.name.localeCompare(b.name));\n  }\n\n  protected getClearFileLabel(filename: string) {\n    return this.commonStrings.parse(this.commonStrings.keys.clearFile, {\n      FILE: filename,\n    });\n  }\n\n  protected clearFile(fileToRemove: File) {\n    if (!this.fileInputContainer.fileInput) {\n      return;\n    }\n\n    const fileInputElement = this.fileInputContainer.fileInput.elementRef.nativeElement;\n    const files = Array.from(fileInputElement.files);\n    const newFiles = files.filter(file => file !== fileToRemove);\n\n    selectFiles(fileInputElement, newFiles);\n    this.fileInputContainer.focusBrowseButton();\n  }\n\n  protected createFileMessagesTemplateContext(file: File): ClrFileMessagesTemplateContext {\n    const fileInputErrors: ClrFileListValidationErrors = this.ngControlService.control.errors || {};\n\n    const errors: ClrSingleFileValidationErrors = {\n      accept: fileInputErrors.accept?.find(error => error.name === file.name),\n      minFileSize: fileInputErrors.minFileSize?.find(error => error.name === file.name),\n      maxFileSize: fileInputErrors.maxFileSize?.find(error => error.name === file.name),\n    };\n\n    const success = Object.values(errors).every(error => !error);\n\n    return { $implicit: file, success, errors };\n  }\n\n  protected createFileMessagesTemplateInjector(fileMessagesTemplateContext: ClrFileMessagesTemplateContext) {\n    return Injector.create({\n      parent: this.injector,\n      providers: [{ provide: CLR_FILE_MESSAGES_TEMPLATE_CONTEXT, useValue: fileMessagesTemplateContext }],\n    });\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ContentChild, ElementRef, forwardRef, inject, Input, ViewChild } from '@angular/core';\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 { NgControlService } from '../common/providers/ng-control.service';\nimport { ClrFileInput } from './file-input';\nimport { selectFiles } from './file-input.helpers';\nimport { ClrFileList } from './file-list';\nimport { ClrFileError, ClrFileSuccess } from './file-messages';\n\n@Component({\n  selector: 'clr-file-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-file-input-wrapper\">\n        <ng-content select=\"[clrFileInput]\"></ng-content>\n\n        <!-- file input to handle adding new files to selection when file list is present (prevent replacing selected files on the main file input) -->\n        <input\n          *ngIf=\"fileList\"\n          #fileListFileInput\n          type=\"file\"\n          class=\"clr-file-input\"\n          tabindex=\"-1\"\n          aria-hidden=\"true\"\n          [accept]=\"accept\"\n          [multiple]=\"multiple\"\n          [disabled]=\"disabled\"\n          (change)=\"addFilesToSelection(fileListFileInput.files)\"\n        />\n\n        <button\n          #browseButton\n          type=\"button\"\n          class=\"btn btn-sm clr-file-input-browse-button\"\n          [attr.aria-describedby]=\"browseButtonDescribedBy\"\n          [disabled]=\"disabled\"\n          (click)=\"browse()\"\n        >\n          <cds-icon shape=\"folder-open\"></cds-icon>\n          <span class=\"clr-file-input-browse-button-text\">{{ browseButtonText }}</span>\n        </button>\n        <button\n          *ngIf=\"!fileList && fileInput?.selection?.fileCount\"\n          type=\"button\"\n          class=\"btn btn-sm clr-file-input-clear-button\"\n          [attr.aria-label]=\"fileInput?.selection?.clearFilesButtonLabel\"\n          (click)=\"clearSelectedFiles()\"\n        >\n          <cds-icon shape=\"times\" status=\"neutral\"></cds-icon>\n        </button>\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\n      <!-- If this is present, this file input becomes an \"advanced\" file input. -->\n      <ng-container>\n        <div class=\"clr-file-list-break\"></div>\n        <ng-content select=\"clr-file-list\"></ng-content>\n      </ng-container>\n    </div>\n  `,\n  host: {\n    '[class.clr-form-control]': 'true',\n    '[class.clr-form-control-disabled]': 'disabled',\n    '[class.clr-row]': 'addGrid()',\n  },\n  providers: [IfControlStateService, NgControlService, ControlIdService, ControlClassService],\n})\nexport class ClrFileInputContainer extends ClrAbstractContainer {\n  @Input('clrButtonLabel') customButtonLabel: string;\n\n  @ContentChild(forwardRef(() => ClrFileInput)) readonly fileInput: ClrFileInput;\n  @ContentChild(forwardRef(() => ClrFileList)) protected readonly fileList: ClrFileList;\n\n  @ViewChild('browseButton') private browseButtonElementRef: ElementRef<HTMLButtonElement>;\n  @ViewChild('fileListFileInput') private fileListFileInputElementRef: ElementRef<HTMLInputElement>;\n\n  // These are for the \"message present\" override properties\n  @ContentChild(ClrFileSuccess) private readonly fileSuccessComponent: ClrFileSuccess;\n  @ContentChild(ClrFileError) private readonly fileErrorComponent: ClrFileError;\n\n  private readonly commonStrings = inject(ClrCommonStringsService);\n\n  protected get accept() {\n    return this.fileInput.elementRef.nativeElement.accept;\n  }\n\n  protected get multiple() {\n    return this.fileInput.elementRef.nativeElement.multiple;\n  }\n\n  protected get disabled() {\n    return this.fileInput.elementRef.nativeElement.disabled || (this.control && this.control.disabled);\n  }\n\n  protected get browseButtonText() {\n    const selectionButtonLabel = this.fileList ? undefined : this.fileInput?.selection?.buttonLabel;\n\n    return selectionButtonLabel || this.customButtonLabel || this.commonStrings.keys.browse;\n  }\n\n  protected get browseButtonDescribedBy() {\n    return `${this.label?.forAttr} ${this.fileInput.elementRef.nativeElement.getAttribute('aria-describedby')}`;\n  }\n\n  protected override get successMessagePresent() {\n    return super.successMessagePresent || !!this.fileSuccessComponent;\n  }\n\n  protected override get errorMessagePresent() {\n    return super.errorMessagePresent || !!this.fileErrorComponent;\n  }\n\n  focusBrowseButton() {\n    this.browseButtonElementRef.nativeElement.focus();\n  }\n\n  protected browse() {\n    const fileInputElementRef =\n      this.fileList && this.multiple ? this.fileListFileInputElementRef : this.fileInput.elementRef;\n\n    fileInputElementRef.nativeElement.click();\n  }\n\n  protected clearSelectedFiles() {\n    this.fileInput.elementRef.nativeElement.value = '';\n    this.fileInput.elementRef.nativeElement.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));\n\n    this.focusBrowseButton();\n  }\n\n  protected addFilesToSelection(newFiles: FileList) {\n    if (!newFiles.length) {\n      return;\n    }\n\n    // start with new files\n    const mergedFiles = [...newFiles];\n\n    // add existing files if a new file doesn't have the same name\n    for (const existingFile of this.fileInput.elementRef.nativeElement.files) {\n      if (!mergedFiles.some(file => file.name === existingFile.name)) {\n        mergedFiles.push(existingFile);\n      }\n    }\n\n    // update file selection\n    selectFiles(this.fileInput.elementRef.nativeElement, mergedFiles);\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  HostBinding,\n  HostListener,\n  Injector,\n  Optional,\n  Renderer2,\n  Self,\n  ViewContainerRef,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\nimport { ClrCommonStringsService } from '../../utils';\nimport { WrappedFormControl } from '../common/wrapped-control';\nimport { ClrFileInputContainer } from './file-input-container';\n\nexport interface ClrFileInputSelection {\n  fileCount: number;\n  buttonLabel: string;\n  clearFilesButtonLabel: string;\n}\n\n@Directive({\n  selector: 'input[type=\"file\"][clrFileInput]',\n  host: {\n    tabindex: '-1', // Remove the hidden file `input` element from the tab order because the browse `button` replaces it.\n    'aria-hidden': 'true', // Remove the hidden file `input` element from the accessibility tree because the browse `button` replaces it.\n    '[class.clr-file-input]': 'true',\n  },\n})\nexport class ClrFileInput extends WrappedFormControl<ClrFileInputContainer> {\n  selection: ClrFileInputSelection = undefined;\n\n  constructor(\n    injector: Injector,\n    renderer: Renderer2,\n    viewContainerRef: ViewContainerRef,\n    readonly elementRef: ElementRef<HTMLInputElement>,\n    @Self() @Optional() private readonly control: NgControl,\n    private readonly commonStrings: ClrCommonStringsService\n  ) {\n    super(viewContainerRef, ClrFileInputContainer, injector, control, renderer, elementRef);\n  }\n\n  @HostBinding('disabled')\n  protected get disabled() {\n    return this.elementRef.nativeElement.disabled || (this.control && this.control.disabled);\n  }\n\n  @HostListener('change')\n  private handleChange() {\n    this.updateSelection();\n  }\n\n  private updateSelection() {\n    const files = this.elementRef.nativeElement.files;\n    let selectionButtonLabel: string;\n    let clearFilesButtonLabel: string;\n\n    if (files?.length === 1) {\n      const filename = files[0].name;\n\n      selectionButtonLabel = filename;\n\n      clearFilesButtonLabel = this.commonStrings.parse(this.commonStrings.keys.clearFile, {\n        FILE: filename,\n      });\n    } else if (files?.length > 1) {\n      const fileCount = files.length.toString();\n\n      selectionButtonLabel = this.commonStrings.parse(this.commonStrings.keys.fileCount, {\n        COUNT: fileCount,\n      });\n\n      clearFilesButtonLabel = this.commonStrings.parse(this.commonStrings.keys.clearFiles, {\n        COUNT: fileCount,\n      });\n    }\n\n    this.selection = {\n      fileCount: files.length,\n      buttonLabel: selectionButtonLabel,\n      clearFilesButtonLabel,\n    };\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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, Input } from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\n\nimport { ClrFileListValidationErrors } from './file-input-validator-errors';\n\n@Directive({\n  selector: 'input[type=\"file\"][clrFileInput]',\n  providers: [{ provide: NG_VALIDATORS, useExisting: ClrFileInputValidator, multi: true }],\n})\nexport class ClrFileInputValidator implements Validator {\n  @Input('clrMinFileSize') minFileSize: number;\n  @Input('clrMaxFileSize') maxFileSize: number;\n\n  constructor(private readonly elementRef: ElementRef<HTMLInputElement>) {}\n\n  validate(control: AbstractControl<FileList>): ValidationErrors {\n    const files = control.value;\n    const fileInputElement = this.elementRef.nativeElement;\n\n    const errors: ClrFileListValidationErrors = {};\n\n    // required validation (native attribute)\n    if (fileInputElement.required && files?.length === 0) {\n      errors.required = true;\n    }\n\n    const accept = fileInputElement.accept ? fileInputElement.accept.split(',').map(type => type.trim()) : null;\n\n    if (files?.length > 0 && (accept || this.minFileSize || this.maxFileSize)) {\n      for (let i = 0; i < files.length; i++) {\n        const file = files.item(i);\n\n        // accept validation (native attribute)\n        if (accept && accept.length) {\n          if (!this.validateAccept(file, accept)) {\n            errors.accept = errors.accept || [];\n            errors.accept.push({\n              name: file.name,\n              accept,\n              type: file.type || '',\n              extension: this.getSuffixByDepth(file.name, 2), // last up to 2 parts for reporting\n            });\n          }\n        }\n\n        // min file validation (custom input)\n        if (this.minFileSize && file.size < this.minFileSize) {\n          errors.minFileSize = errors.minFileSize || [];\n          errors.minFileSize.push({ name: file.name, minFileSize: this.minFileSize, actualFileSize: file.size });\n        }\n\n        // max file validation (custom input)\n        if (this.maxFileSize && file.size > this.maxFileSize) {\n          errors.maxFileSize = errors.maxFileSize || [];\n          errors.maxFileSize.push({ name: file.name, maxFileSize: this.maxFileSize, actualFileSize: file.size });\n        }\n      }\n    }\n\n    return Object.keys(errors).length ? errors : null;\n  }\n\n  private getSuffixByDepth(filename: string, depth: number): string {\n    const match = filename.toLowerCase().match(new RegExp(`(\\\\.[^.]+){1,${depth}}$`, 'i'));\n    return match ? match[0] : '';\n  }\n\n  private validateAccept(file: File, acceptList: string[]): boolean {\n    const name = file.name.toLowerCase();\n    const type = (file.type || '').toLowerCase();\n\n    for (const entryRaw of acceptList) {\n      const entry = entryRaw.trim().toLowerCase();\n      if (!entry) {\n        continue;\n      }\n\n      // Extension check\n      if (entry.startsWith('.')) {\n        const depth = (entry.match(/\\./g) || []).length;\n        if (this.getSuffixByDepth(name, depth) === entry) {\n          return true;\n        }\n        continue;\n      }\n\n      // MIME check\n      if (entry.endsWith('/*')) {\n        const prefix = entry.slice(0, entry.length - 1); // keep trailing slash\n        if (type.startsWith(prefix)) {\n          return true;\n        }\n      } else if (entry.includes('/') && type === entry) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { clearFiles, selectFiles } from './file-input.helpers';\n\n@Directive({\n  selector: 'input[type=\"file\"][clrFileInput]',\n  providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: ClrFileInputValueAccessor, multi: true }],\n})\nexport class ClrFileInputValueAccessor implements ControlValueAccessor {\n  constructor(private readonly elementRef: ElementRef<HTMLInputElement>) {}\n\n  writeValue(value: FileList) {\n    if (value !== undefined && value !== null && !(value instanceof FileList)) {\n      throw new Error('The value of a file input control must be a FileList.');\n    }\n\n    if (value) {\n      selectFiles(this.elementRef.nativeElement, value);\n    } else if (this.elementRef.nativeElement.files.length) {\n      clearFiles(this.elementRef.nativeElement);\n    }\n  }\n\n  registerOnChange(fn: (value: FileList) => void) {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void) {\n    this.onTouched = fn;\n  }\n\n  @HostListener('change')\n  private handleChange() {\n    this.onTouched();\n    this.onChange(this.elementRef.nativeElement.files);\n  }\n\n  // eslint-disable-next-line  @typescript-eslint/no-empty-function\n  private onChange = (_value: FileList) => {};\n\n  // eslint-disable-next-line  @typescript-eslint/no-empty-function\n  private onTouched = () => {};\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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, folderOpenIcon } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrCommonFormsModule } from '../common/common.module';\nimport { ClrFileInput } from './file-input';\nimport { ClrFileInputContainer } from './file-input-container';\nimport { ClrFileInputValidator } from './file-input-validator';\nimport { ClrFileInputValueAccessor } from './file-input-value-accessor';\nimport { ClrFileList } from './file-list';\nimport { ClrFileError, ClrFileInfo, ClrFileSuccess } from './file-messages';\nimport { ClrFileMessagesTemplate } from './file-messages-template';\n\n@NgModule({\n  imports: [CommonModule, ClrIconModule, ClrCommonFormsModule],\n  declarations: [\n    ClrFileInput,\n    ClrFileInputContainer,\n    ClrFileInputValidator,\n    ClrFileInputValueAccessor,\n    ClrFileList,\n    ClrFileMessagesTemplate,\n    ClrFileInfo,\n    ClrFileSuccess,\n    ClrFileError,\n  ],\n  exports: [\n    ClrCommonFormsModule,\n    ClrFileInput,\n    ClrFileInputContainer,\n    ClrFileInputValidator,\n    ClrFileInputValueAccessor,\n    ClrFileList,\n    ClrFileMessagesTemplate,\n    ClrFileInfo,\n    ClrFileSuccess,\n    ClrFileError,\n  ],\n})\nexport class ClrFileInputModule {\n  constructor() {\n    ClarityIcons.addIcons(folderOpenIcon);\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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 './file-input';\nexport * from './file-input-validator';\nexport * from './file-input-validator-errors';\nexport * from './file-input-value-accessor';\nexport * from './file-input-container';\nexport * from './file-list';\nexport * from './file-messages-template';\nexport * from './file-messages';\nexport * from './file-input.module';\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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, forwardRef, 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 { ClrNumberInput } from './number-input';\n\n@Component({\n  selector: 'clr-number-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-number-input-wrapper\">\n        <div class=\"clr-input-group\" [class.clr-focus]=\"focus\" (focusout)=\"focusOut()\">\n          <ng-content select=\"[clrNumberInput]\"></ng-content>\n          <div class=\"clr-input-group-actions\">\n            <button\n              type=\"button\"\n              class=\"clr-input-group-icon-action\"\n              (click)=\"input.stepDown()\"\n              [disabled]=\"control?.disabled\"\n            >\n              <cds-icon shape=\"minus\" size=\"sm\"></cds-icon>\n            </button>\n            <div class=\"clr-number-input-separator\"></div>\n            <button\n              type=\"button\"\n              class=\"clr-input-group-icon-action\"\n              (click)=\"input.stepUp()\"\n              [disabled]=\"control?.disabled\"\n            >\n              <cds-icon shape=\"plus\" size=\"sm\"></cds-icon>\n            </button>\n          </div>\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-form-control-readonly]': 'input.readonly',\n    '[class.clr-row]': 'addGrid()',\n  },\n  providers: [FocusService, IfControlStateService, NgControlService, ControlIdService, ControlClassService],\n})\nexport class ClrNumberInputContainer extends ClrAbstractContainer {\n  focus = false;\n\n  @ContentChild(forwardRef(() => ClrNumberInput)) protected readonly input: ClrNumberInput;\n\n  constructor(\n    controlClassService: ControlClassService,\n    @Optional() layoutService: LayoutService,\n    ngControlService: NgControlService,\n    focusService: FocusService,\n    protected override ifControlStateService: IfControlStateService\n  ) {\n    super(ifControlStateService, layoutService, controlClassService, ngControlService);\n\n    this.subscriptions.push(focusService.focusChange.subscribe(state => (this.focus = state)));\n  }\n\n  focusOut() {\n    this.input.dispatchBlur();\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  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 { ClrNumberInputContainer } from './number-input-container';\n\n@Directive({\n  selector: 'input[type=\"number\"][clrNumberInput]',\n  host: { '[class.clr-input]': 'true', '[class.clr-number-input]': 'true' },\n})\nexport class ClrNumberInput extends WrappedFormControl<ClrNumberInputContainer> {\n  protected override index = 1;\n\n  constructor(\n    @Optional() private focusService: FocusService,\n    vcr: ViewContainerRef,\n    injector: Injector,\n    @Self()\n    @Optional()\n    private control: NgControl,\n    renderer: Renderer2,\n    protected override el: ElementRef<HTMLInputElement>\n  ) {\n    super(vcr, ClrNumberInputContainer, injector, control, renderer, el);\n\n    if (!focusService) {\n      throw new Error('clrNumberInput requires being wrapped in <clr-number-input-container>');\n    }\n  }\n\n  get readonly() {\n    return this.el.nativeElement.getAttribute('readonly') !== null;\n  }\n\n  @HostListener('focus')\n  triggerFocus() {\n    if (!this.readonly && this.focusService) {\n      this.focusService.focused = true;\n    }\n  }\n\n  @HostListener('blur')\n  override triggerValidation() {\n    if (!this.readonly) {\n      super.triggerValidation();\n      if (this.focusService) {\n        this.focusService.focused = false;\n      }\n    }\n  }\n\n  stepUp(): void {\n    this.el.nativeElement.stepUp();\n    this.dispatchStepChangeEvents();\n    this.control.control.markAllAsTouched();\n  }\n\n  stepDown(): void {\n    this.el.nativeElement.stepDown();\n    this.dispatchStepChangeEvents();\n    this.control.control.markAllAsTouched();\n  }\n\n  dispatchBlur() {\n    this.el.nativeElement.dispatchEvent(new Event('blur', { bubbles: true, cancelable: true }));\n  }\n\n  private dispatchStepChangeEvents() {\n    this.el.nativeElement.dispatchEvent(new Event('input', { bubbles: true, cancelable: true }));\n    this.el.nativeElement.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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, minusIcon, plusIcon } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrCommonFormsModule } from '../common/common.module';\nimport { ClrNumberInput } from './number-input';\nimport { ClrNumberInputContainer } from './number-input-container';\n\n@NgModule({\n  imports: [CommonModule, FormsModule, ClrIconModule, ClrCommonFormsModule],\n  declarations: [ClrNumberInput, ClrNumberInputContainer],\n  exports: [ClrCommonFormsModule, ClrNumberInput, ClrNumberInputContainer],\n})\nexport class ClrNumberInputModule {\n  constructor() {\n    ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon, minusIcon, plusIcon);\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 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      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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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<HTMLInputElement>,\n    @Optional() private focusService: FocusService,\n    @Optional()\n    @Inject(TOGGLE_SERVICE)\n    toggleService: BehaviorSubject<boolean>\n  ) {\n    super(vcr, ClrPasswordContainer, injector, control, renderer, el);\n\n    if (!focusService) {\n      throw new Error('clrPassword requires being wrapped in <clr-password-container>');\n    }\n\n    this.subscriptions.push(\n      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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 { 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 OnInit {\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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<HTMLInputElement>\n  ) {\n    super(vcr, ClrRadioWrapper, injector, control, renderer, el);\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  ContentChild,\n  ContentChildren,\n  ElementRef,\n  Input,\n  Optional,\n  QueryList,\n} from '@angular/core';\n\nimport { uniqueIdFactory } from '../../utils/id-generator/id-generator.service';\nimport { ClrLabel } from '../common';\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 *ngIf=\"showHelper\" class=\"clr-subtext-wrapper\">\n        <ng-content select=\"clr-control-helper\"></ng-content>\n      </div>\n      <div *ngIf=\"showValid || showInvalid\" class=\"clr-subtext-wrapper\">\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    '[attr.aria-labelledby]': 'ariaLabelledBy',\n  },\n  providers: [NgControlService, IfControlStateService, ControlClassService, ContainerIdService],\n})\nexport class ClrRadioContainer extends ClrAbstractContainer implements AfterContentInit {\n  role: string;\n  ariaLabelledBy: string;\n\n  @ContentChildren(ClrRadio, { descendants: true }) radios: QueryList<ClrRadio>;\n  @ContentChild(ClrLabel, { read: ElementRef, static: true }) groupLabel: ElementRef<HTMLElement>;\n\n  private inline = false;\n  private _generatedId = uniqueIdFactory();\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    this.setAriaLabelledBy();\n  }\n\n  private setAriaRoles() {\n    this.role = this.radios.length ? 'radiogroup' : null;\n  }\n\n  private setAriaLabelledBy() {\n    const _id = this.groupLabel?.nativeElement.getAttribute('id');\n    if (!_id) {\n      this.groupLabel?.nativeElement.setAttribute('id', this._generatedId);\n      this.ariaLabelledBy = this.radios.length ? this._generatedId : null;\n    } else {\n      this.ariaLabelledBy = this.radios.length ? _id : null;\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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<HTMLInputElement>\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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<HTMLSelectElement>\n  ) {\n    super(vcr, ClrSelectContainer, injector, control, renderer, el);\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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<HTMLTextAreaElement>\n  ) {\n    super(vcr, ClrTextareaContainer, injector, control, renderer, el);\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 { ClrFileInputModule } from './file-input';\nimport { ClrInputModule } from './input/input.module';\nimport { ClrNumberInputModule } from './number-input/number-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    ClrFileInputModule,\n    ClrInputModule,\n    ClrPasswordModule,\n    ClrRadioModule,\n    ClrSelectModule,\n    ClrTextareaModule,\n    ClrRangeModule,\n    ClrDatalistModule,\n    ClrNumberInputModule,\n  ],\n})\nexport class ClrFormsModule {}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directionality } from '@angular/cdk/bidi';\nimport { CDK_DRAG_CONFIG, CDK_DROP_LIST, CdkDrag, DragDrop, DragDropConfig } from '@angular/cdk/drag-drop';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  ChangeDetectorRef,\n  Directive,\n  ElementRef,\n  Inject,\n  NgModule,\n  NgZone,\n  Optional,\n  ViewContainerRef,\n} 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   * Include the constructor to forward all the dependencies to the base class\n   * as a workaround to fix Angular \"ɵɵinvalidFactoryDep\" error after upgrading storybook\n   * https://github.com/storybookjs/storybook/issues/23534\n   */\n  constructor(\n    elementRef: ElementRef<HTMLElement>,\n    @Optional() @Inject(CDK_DROP_LIST) dropContainer: any,\n    @Optional() @Inject(DOCUMENT) document: any,\n    ngZone: NgZone,\n    viewContainerRef: ViewContainerRef,\n    @Optional() @Inject(CDK_DRAG_CONFIG) config: DragDropConfig,\n    dir: Directionality,\n    dragDrop: DragDrop,\n    changeDetectorRef: ChangeDetectorRef\n  ) {\n    super(elementRef, dropContainer, document, ngZone, viewContainerRef, config, dir, dragDrop, changeDetectorRef);\n  }\n}\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  protected 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { KeyNavigationGridStrategyInterface } from '../../interfaces/key-nav-grid-strategy.interface';\nimport { CellCoordinates } from '../key-navigation-grid.controller';\nimport { KeyNavigationUtils } from '../key-navigation-utils';\n\nexport class DefaultKeyNavigationStrategy implements KeyNavigationGridStrategyInterface {\n  constructor(protected utils: KeyNavigationUtils) {}\n\n  keyUp(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    if (currentCellCoords.y === 0) {\n      return nextCellCoords;\n    }\n\n    nextCellCoords.y = currentCellCoords.y - 1;\n\n    const isActionCell = this.utils.isActionCell(currentCellCoords);\n\n    if (\n      this.utils.isSingleCellExpandedRow(nextCellCoords.y) &&\n      !isActionCell &&\n      this.utils.isDetailsRow(nextCellCoords.y)\n    ) {\n      nextCellCoords.x = 0;\n    } else if (this.utils.isDetailsRow(nextCellCoords.y)) {\n      if (isActionCell) {\n        nextCellCoords.y = nextCellCoords.y - 1;\n      } else {\n        nextCellCoords.x = nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n      }\n    }\n\n    return nextCellCoords;\n  }\n\n  keyDown(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;\n    if (currentCellCoords.y >= numOfRows) {\n      return nextCellCoords;\n    }\n\n    const isActionCell = this.utils.isActionCell(currentCellCoords);\n    nextCellCoords.y = currentCellCoords.y + 1;\n\n    if (!isActionCell && this.utils.isRowReplaced(nextCellCoords.y)) {\n      nextCellCoords.y = nextCellCoords.y + 1;\n\n      nextCellCoords.x = this.utils.isSingleCellExpandedRow(nextCellCoords.y)\n        ? 0\n        : nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n    }\n\n    return nextCellCoords;\n  }\n\n  keyLeft(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    if (currentCellCoords.x === 0) {\n      return nextCellCoords;\n    }\n\n    nextCellCoords.x = currentCellCoords.x - 1;\n\n    return nextCellCoords;\n  }\n\n  keyRight(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    // calculate numOfColumns based on header cells.\n    const numOfColumns = this.utils.rows?.length - 1 ? this.utils.getCellsForRow(0).length - 1 : 0;\n\n    nextCellCoords.x = currentCellCoords.x < numOfColumns ? nextCellCoords.x + 1 : nextCellCoords.x;\n\n    return nextCellCoords;\n  }\n\n  keyEnd(currentCellCoords: CellCoordinates, ctrlKey: boolean) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n    const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;\n\n    // calculate X based on header cells.\n    nextCellCoords.x = numOfRows ? this.utils.getCellsForRow(0).length - 1 : 0;\n\n    if (ctrlKey) {\n      nextCellCoords.y = numOfRows;\n\n      if (this.utils.isDetailsRow(nextCellCoords.y)) {\n        nextCellCoords.x = this.utils.getCellsForRow(nextCellCoords.y).length - 1;\n      }\n    }\n\n    return nextCellCoords;\n  }\n\n  keyHome(currentCellCoords: CellCoordinates, ctrlKey: boolean) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    nextCellCoords.x = 0;\n\n    if (ctrlKey) {\n      nextCellCoords.y = 0;\n    }\n\n    return nextCellCoords;\n  }\n\n  keyPageUp(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n    const itemsPerPage = this.utils.itemsPerPage;\n\n    nextCellCoords.y = currentCellCoords.y - itemsPerPage > 0 ? currentCellCoords.y - itemsPerPage + 1 : 1;\n\n    if (!this.utils.isActionCell(currentCellCoords)) {\n      if (this.utils.isDetailsRow(nextCellCoords.y)) {\n        nextCellCoords.x = this.utils.isSingleCellExpandedRow(nextCellCoords.y)\n          ? 0\n          : nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n      } else if (this.utils.isRowReplaced(nextCellCoords.y)) {\n        nextCellCoords.y = nextCellCoords.y + 1;\n\n        nextCellCoords.x = this.utils.isSingleCellExpandedRow(nextCellCoords.y)\n          ? 0\n          : nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n      }\n    } else {\n      if (this.utils.isDetailsRow(nextCellCoords.y)) {\n        nextCellCoords.y = nextCellCoords.y - 1;\n      }\n    }\n\n    return nextCellCoords;\n  }\n\n  keyPageDown(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n    const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;\n    const itemsPerPage = this.utils.itemsPerPage;\n\n    nextCellCoords.y = currentCellCoords.y + itemsPerPage >= numOfRows ? numOfRows : currentCellCoords.y + itemsPerPage;\n\n    if (this.utils.isActionCell(currentCellCoords) && this.utils.isDetailsRow(nextCellCoords.y)) {\n      nextCellCoords.y = nextCellCoords.y - 1;\n    } else if (this.utils.isDetailsRow(nextCellCoords.y) && this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {\n      nextCellCoords.x = 0;\n    } else if (this.utils.isDetailsRow(nextCellCoords.y)) {\n      nextCellCoords.x = nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n    } else if (this.utils.isRowReplaced(nextCellCoords.y)) {\n      nextCellCoords.y = nextCellCoords.y + 1;\n      nextCellCoords.x = this.utils.isSingleCellExpandedRow(nextCellCoords.y)\n        ? 0\n        : nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n    }\n\n    return nextCellCoords;\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CellCoordinates } from '../key-navigation-grid.controller';\nimport { DefaultKeyNavigationStrategy } from './default';\n\nexport class ExpandedRowKeyNavigationStrategy extends DefaultKeyNavigationStrategy {\n  override keyUp(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    if (currentCellCoords.y === 0) {\n      return nextCellCoords;\n    }\n\n    nextCellCoords.y = currentCellCoords.y - 1;\n\n    if (!this.utils.isActionCell(currentCellCoords)) {\n      if (this.utils.isRowReplaced(currentCellCoords.y)) {\n        nextCellCoords.y = nextCellCoords.y - 1;\n      }\n\n      switch (true) {\n        case this.utils.isDetailsRow(nextCellCoords.y):\n          nextCellCoords.x = 0;\n          break;\n        case this.utils.isDetailsRow(currentCellCoords.y) === false:\n          nextCellCoords.x = currentCellCoords.x;\n          break;\n        default:\n          nextCellCoords.x = this.utils.actionCellCount(nextCellCoords.y);\n      }\n    } else if (this.utils.isDetailsRow(nextCellCoords.y) && nextCellCoords.y > 0) {\n      nextCellCoords.y = nextCellCoords.y - 1;\n    }\n\n    return nextCellCoords;\n  }\n\n  override keyDown(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;\n    if (currentCellCoords.y >= numOfRows) {\n      return nextCellCoords;\n    }\n\n    nextCellCoords.y = currentCellCoords.y + 1;\n\n    if (!this.utils.isActionCell(currentCellCoords)) {\n      if (this.utils.isRowReplaced(nextCellCoords.y)) {\n        nextCellCoords.y = nextCellCoords.y + 1;\n      }\n\n      if (this.utils.isDetailsRow(nextCellCoords.y)) {\n        nextCellCoords.x = 0;\n      } else {\n        nextCellCoords.x = this.utils.actionCellCount(nextCellCoords.y);\n      }\n    } else {\n      nextCellCoords.y = nextCellCoords.y < numOfRows ? nextCellCoords.y + 1 : nextCellCoords.y;\n    }\n\n    return nextCellCoords;\n  }\n\n  override keyLeft(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    if (!this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isRowReplaced(currentCellCoords.y)) {\n      return super.keyLeft(currentCellCoords);\n    }\n\n    if (currentCellCoords.x !== 0) {\n      nextCellCoords.x = currentCellCoords.x - 1;\n    } else if (!this.utils.isActionCell(currentCellCoords)) {\n      nextCellCoords.y = currentCellCoords.y - 1;\n      nextCellCoords.x = this.utils.actionCellCount(nextCellCoords.y) - 1;\n    }\n\n    return nextCellCoords;\n  }\n\n  override keyRight(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    if (!this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isRowReplaced(currentCellCoords.y)) {\n      return super.keyRight(currentCellCoords);\n    }\n\n    // calculate numOfColumns based on header cells.\n    const numOfColumns = this.utils.rows?.length - 1 ? this.utils.getCellsForRow(0).length - 1 : 0;\n\n    if (currentCellCoords.x >= numOfColumns) {\n      return nextCellCoords;\n    }\n\n    if (\n      this.utils.isActionCell(currentCellCoords) &&\n      currentCellCoords.x === this.utils.actionCellCount(currentCellCoords.x) - 1 &&\n      this.utils.isRowReplaced(currentCellCoords.y) &&\n      !this.utils.isDetailsRow(currentCellCoords.y)\n    ) {\n      nextCellCoords.y = currentCellCoords.y + 1;\n      nextCellCoords.x = 0;\n    } else {\n      nextCellCoords.x = currentCellCoords.x + 1;\n    }\n\n    return nextCellCoords;\n  }\n\n  override keyEnd(currentCellCoords: CellCoordinates, ctrlKey: boolean) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    if ((!this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isRowReplaced(currentCellCoords.y)) || ctrlKey) {\n      return super.keyEnd(currentCellCoords, ctrlKey);\n    }\n\n    nextCellCoords.x = this.utils.getCellsForRow(currentCellCoords.y).length - 1;\n\n    return nextCellCoords;\n  }\n\n  override keyHome(currentCellCoords: CellCoordinates, ctrlKey: boolean) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    if (!this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isRowReplaced(currentCellCoords.y)) {\n      return super.keyHome(currentCellCoords, ctrlKey);\n    }\n\n    nextCellCoords.x = 0;\n    nextCellCoords.y = currentCellCoords.y - 1;\n\n    if (ctrlKey) {\n      nextCellCoords.y = 0;\n    }\n\n    return nextCellCoords;\n  }\n\n  override keyPageUp(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n    const itemsPerPage = this.utils.itemsPerPage;\n\n    nextCellCoords.y = currentCellCoords.y - itemsPerPage > 0 ? currentCellCoords.y - itemsPerPage + 1 : 1;\n\n    if (!this.utils.isActionCell(currentCellCoords)) {\n      if (this.utils.isRowReplaced(nextCellCoords.y)) {\n        if (!this.utils.isDetailsRow(nextCellCoords.y)) {\n          nextCellCoords.y = nextCellCoords.y + 1;\n          nextCellCoords.x = 0;\n        }\n      } else if (!this.utils.isDetailsRow(currentCellCoords.y)) {\n        if (this.utils.isDetailsRow(nextCellCoords.y)) {\n          nextCellCoords.x = 0;\n        }\n      } else if (this.utils.isDetailsRow(currentCellCoords.y)) {\n        if (!this.utils.isDetailsRow(nextCellCoords.y)) {\n          nextCellCoords.x = this.utils.actionCellCount(nextCellCoords.y);\n        }\n      }\n    } else if (this.utils.isDetailsRow(nextCellCoords.y)) {\n      nextCellCoords.y = nextCellCoords.y - 1;\n    }\n\n    return nextCellCoords;\n  }\n\n  override keyPageDown(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;\n    const itemsPerPage = this.utils.itemsPerPage;\n\n    nextCellCoords.y = currentCellCoords.y + itemsPerPage >= numOfRows ? numOfRows : currentCellCoords.y + itemsPerPage;\n\n    if (!this.utils.isActionCell(currentCellCoords)) {\n      if (this.utils.isRowReplaced(nextCellCoords.y)) {\n        if (nextCellCoords.y < numOfRows && !this.utils.isDetailsRow(nextCellCoords.y)) {\n          nextCellCoords.y = nextCellCoords.y + 1;\n        }\n      } else if (this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {\n        nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);\n      } else if (this.utils.isDetailsRow(nextCellCoords.y)) {\n        nextCellCoords.x = 0;\n      }\n    } else if (this.utils.isDetailsRow(nextCellCoords.y)) {\n      nextCellCoords.y = nextCellCoords.y - 1;\n    }\n\n    return nextCellCoords;\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CellCoordinates } from '../key-navigation-grid.controller';\nimport { ExpandedRowKeyNavigationStrategy } from './expanded-row';\n\nexport class ExpandedColumnsRowKeyNavigationStrategy extends ExpandedRowKeyNavigationStrategy {\n  override keyUp(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    if (currentCellCoords.y === 0) {\n      return nextCellCoords;\n    }\n\n    nextCellCoords.y = currentCellCoords.y - 1;\n\n    if (this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {\n      return super.keyUp(currentCellCoords);\n    }\n\n    const isActionCell = this.utils.isActionCell(currentCellCoords);\n\n    if (isActionCell && this.utils.isDetailsRow(nextCellCoords.y)) {\n      nextCellCoords.y = nextCellCoords.y - 1;\n    } else if (this.utils.isRowReplaced(nextCellCoords.y)) {\n      nextCellCoords.y = nextCellCoords.y - 1;\n\n      if (!this.utils.isDetailsRow(nextCellCoords.y)) {\n        nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);\n      }\n    } else if (this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {\n      nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);\n    } else if (!isActionCell && this.utils.isDetailsRow(nextCellCoords.y)) {\n      nextCellCoords.x = currentCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n    }\n\n    return nextCellCoords;\n  }\n\n  override keyDown(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;\n    const numOfColumns = numOfRows ? this.utils.getCellsForRow(0).length - 1 : 0;\n\n    if (currentCellCoords.y >= numOfRows) {\n      return nextCellCoords;\n    }\n\n    nextCellCoords.y = currentCellCoords.y + 1;\n\n    if (this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {\n      return super.keyDown(currentCellCoords);\n    }\n\n    if (!this.utils.isActionCell(currentCellCoords)) {\n      if (this.utils.isRowReplaced(nextCellCoords.y)) {\n        nextCellCoords.y = nextCellCoords.y < numOfRows ? nextCellCoords.y + 1 : nextCellCoords.y - 1;\n      } else if (this.utils.getCellsForRow(currentCellCoords.y).length > numOfColumns) {\n        nextCellCoords.x = currentCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n      } else {\n        nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);\n      }\n    } else {\n      nextCellCoords.y = nextCellCoords.y < numOfRows ? nextCellCoords.y + 1 : nextCellCoords.y - 1;\n    }\n\n    return nextCellCoords;\n  }\n\n  override keyLeft(currentCellCoords: CellCoordinates) {\n    return super.keyLeft(currentCellCoords);\n  }\n\n  override keyRight(currentCellCoords: CellCoordinates) {\n    return super.keyRight(currentCellCoords);\n  }\n\n  override keyEnd(currentCellCoords: CellCoordinates, ctrlKey: boolean) {\n    return super.keyEnd(currentCellCoords, ctrlKey);\n  }\n\n  override keyHome(currentCellCoords: CellCoordinates, ctrlKey: boolean) {\n    return super.keyHome(currentCellCoords, ctrlKey);\n  }\n\n  override keyPageUp(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n    const itemsPerPage = this.utils.itemsPerPage;\n\n    nextCellCoords.y = currentCellCoords.y - itemsPerPage > 0 ? currentCellCoords.y - itemsPerPage + 1 : 1;\n\n    if (this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {\n      return super.keyPageUp(currentCellCoords);\n    }\n\n    if (!this.utils.isActionCell(currentCellCoords)) {\n      if (this.utils.isRowReplaced(nextCellCoords.y)) {\n        if (!this.utils.isDetailsRow(nextCellCoords.y)) {\n          nextCellCoords.y = nextCellCoords.y + 1;\n          nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);\n        }\n      } else if (this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {\n        nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);\n      } else if (this.utils.isDetailsRow(nextCellCoords.y)) {\n        nextCellCoords.x = currentCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n      }\n    } else if (this.utils.isDetailsRow(nextCellCoords.y)) {\n      nextCellCoords.y = nextCellCoords.y - 1;\n    }\n\n    return nextCellCoords;\n  }\n\n  override keyPageDown(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;\n    const itemsPerPage = this.utils.itemsPerPage;\n\n    nextCellCoords.y = currentCellCoords.y + itemsPerPage >= numOfRows ? numOfRows : currentCellCoords.y + itemsPerPage;\n\n    if (this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {\n      return super.keyPageDown(currentCellCoords);\n    }\n\n    if (!this.utils.isActionCell(currentCellCoords)) {\n      if (this.utils.isRowReplaced(nextCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {\n        if (nextCellCoords.y < numOfRows) {\n          nextCellCoords.y = nextCellCoords.y + 1;\n          nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);\n        }\n      } else if (this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {\n        nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);\n      } else if (this.utils.isDetailsRow(nextCellCoords.y)) {\n        nextCellCoords.x = currentCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n      }\n    } else if (this.utils.isDetailsRow(nextCellCoords.y)) {\n      nextCellCoords.y = nextCellCoords.y - 1;\n    }\n\n    return nextCellCoords;\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Keys } from '../../../utils/enums/keys.enum';\nimport { KeyNavigationGridStrategyInterface } from '../interfaces/key-nav-grid-strategy.interface';\nimport { CellCoordinates, KeyNavigationGridConfig } from './key-navigation-grid.controller';\nimport { DefaultKeyNavigationStrategy } from './key-navigation-strategies/default';\nimport { ExpandedColumnsRowKeyNavigationStrategy } from './key-navigation-strategies/expanded-columns-row';\nimport { ExpandedRowKeyNavigationStrategy } from './key-navigation-strategies/expanded-row';\n\nexport class KeyNavigationUtils {\n  constructor(public host: HTMLElement, public config: KeyNavigationGridConfig) {}\n\n  get grid() {\n    return this.host?.querySelector(this.config.keyGrid);\n  }\n\n  get rows() {\n    return this.host?.querySelectorAll(this.config.keyGridRows) as NodeListOf<HTMLElement>;\n  }\n\n  get cells() {\n    return this.host?.querySelectorAll(this.config.keyGridCells) as NodeListOf<HTMLElement>;\n  }\n\n  get currentCellCoordinates() {\n    const currentCell = this.cells ? Array.from(this.cells).find(i => i.getAttribute('tabindex') === '0') : null;\n    const currentRow: HTMLElement = currentCell ? currentCell.closest(this.config.keyGridRows) : null;\n\n    const coordinates: CellCoordinates = {\n      x:\n        currentRow && currentCell\n          ? Array.from(currentRow.querySelectorAll(this.config.keyGridCells)).indexOf(currentCell)\n          : 0,\n      y: currentRow && currentCell && this.rows ? Array.from(this.rows).indexOf(currentRow) : 0,\n    };\n\n    return coordinates;\n  }\n\n  get averageRowHeight() {\n    const heightSum = Array.from(this.rows.values()).reduce((sum, row) => {\n      return sum + row.clientHeight;\n    }, 0);\n\n    return Math.round(heightSum / this.rows.length);\n  }\n\n  get itemsPerPage() {\n    return Math.floor(this.host?.querySelector('.datagrid').clientHeight / this.averageRowHeight) - 1 || 0;\n  }\n\n  setAriaRowIndexTo(cellCoords: CellCoordinates) {\n    let ariaRowIndex = this.rows[cellCoords.y].getAttribute('aria-rowindex');\n\n    if (!ariaRowIndex) {\n      ariaRowIndex = this.rows[cellCoords.y - 1].getAttribute('aria-rowindex');\n    }\n\n    cellCoords.ariaRowIndex = ariaRowIndex;\n  }\n\n  getNextItemCoordinate(e: KeyboardEvent) {\n    const currentCellCoords = this.currentCellCoordinates;\n    const strategy = this.getNavStrategy(currentCellCoords);\n\n    const inlineStart = this.host.dir === 'rtl' ? Keys.ArrowRight : Keys.ArrowLeft;\n    const inlineEnd = this.host.dir === 'rtl' ? Keys.ArrowLeft : Keys.ArrowRight;\n\n    switch (e.key) {\n      case Keys.ArrowUp:\n        return strategy.keyUp(currentCellCoords);\n      case Keys.ArrowDown:\n        return strategy.keyDown(currentCellCoords);\n      case inlineStart:\n        return strategy.keyLeft(currentCellCoords);\n      case inlineEnd:\n        return strategy.keyRight(currentCellCoords);\n      case Keys.Home:\n        return strategy.keyHome(currentCellCoords, e.ctrlKey);\n      case Keys.End:\n        return strategy.keyEnd(currentCellCoords, e.ctrlKey);\n      case Keys.PageUp:\n        return strategy.keyPageUp(currentCellCoords);\n      case Keys.PageDown:\n        return strategy.keyPageDown(currentCellCoords);\n      default:\n        return currentCellCoords;\n    }\n  }\n\n  getCellsForRow(index: number) {\n    return this.rows[index].querySelectorAll(this.config.keyGridCells);\n  }\n\n  isExpandedRow(index: number) {\n    const selectedElement: HTMLElement = this.rows[index].querySelector('.datagrid-row-detail');\n\n    return selectedElement ? selectedElement.style.display !== 'none' : false;\n  }\n\n  isDetailsRow(index: number) {\n    return this.rows[index].classList.contains('datagrid-row-detail');\n  }\n\n  isRowReplaced(index: number) {\n    return !!this.rows[index].closest('clr-dg-row.datagrid-row-replaced');\n  }\n\n  isSingleCellExpandedRow(index: number) {\n    return this.rows[index]?.querySelectorAll(this.config.keyGridCells).length === 1;\n  }\n\n  actionCellCount(index: number) {\n    return this.actionCellsAsArray(index).length;\n  }\n\n  actionCellsAsArray(index: number) {\n    return Array.from(\n      this.rows[index].querySelectorAll('.datagrid-row-sticky .datagrid-cell, .datagrid-row-sticky .datagrid-column')\n    );\n  }\n\n  isActionCell(cellCoords: CellCoordinates) {\n    return !!this.actionCellsAsArray(cellCoords.y)[cellCoords.x];\n  }\n\n  createNextCellCoords(cellCoords: CellCoordinates): CellCoordinates {\n    return {\n      x: cellCoords.x,\n      y: cellCoords.y,\n    };\n  }\n\n  private getNavStrategy(currentCellCoords: CellCoordinates): KeyNavigationGridStrategyInterface {\n    switch (true) {\n      case this.isSingleCellExpandedRow(currentCellCoords.y):\n        return new ExpandedRowKeyNavigationStrategy(this);\n      case this.isDetailsRow(currentCellCoords.y):\n      case this.isExpandedRow(currentCellCoords.y):\n        return new ExpandedColumnsRowKeyNavigationStrategy(this);\n      default:\n        return new DefaultKeyNavigationStrategy(this);\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { EventEmitter, Injectable, NgZone, OnDestroy } from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { Keys } from '../../../utils/enums/keys.enum';\nimport { KeyNavigationUtils } from './key-navigation-utils';\n\nconst actionableItemSelectors = [\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  '[contenteditable=true]',\n  '[role=button]:not([disabled])',\n];\n\nexport function getTabbableItems(el: HTMLElement) {\n  const tabbableItemSelectors = [...actionableItemSelectors, '[tabindex=\"0\"]:not([disabled])'];\n  const tabbableSelector = tabbableItemSelectors.join(',');\n  return Array.from(el.querySelectorAll(tabbableSelector)) as HTMLElement[];\n}\n\nfunction isActionableItem(el: HTMLElement) {\n  const actionableSelector = actionableItemSelectors.join(',');\n  return el.matches(actionableSelector);\n}\n\nexport interface KeyNavigationGridConfig {\n  keyGrid: string;\n  keyGridRows: string;\n  keyGridCells: string;\n}\n\nexport interface CellCoordinates {\n  x: number;\n  y: number;\n  ariaRowIndex?: string;\n}\n\n@Injectable()\nexport class KeyNavigationGridController implements OnDestroy {\n  nextCellCoordsEmitter = new EventEmitter<CellCoordinates>(false);\n\n  skipItemFocus = false;\n  preventScrollOnFocus = false;\n\n  config: KeyNavigationGridConfig = {\n    keyGridRows: '[role=row]:not(.datagrid-placeholder):not([style*=\"display: none\"])',\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  private keyNavUtils: KeyNavigationUtils;\n  private listenersAdded = false;\n  private destroy$ = new Subject<void>();\n\n  constructor(private zone: NgZone) {}\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.keyNavUtils.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.keyNavUtils.cells\n              ? Array.from(this.keyNavUtils.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              if (!isActionableItem(e.target as HTMLElement)) {\n                this.focusElement(activeCell);\n              }\n            }\n          }\n        });\n\n      fromEvent(this.keyNavUtils.grid, 'wheel')\n        .pipe(takeUntil(this.destroy$))\n        .subscribe(() => {\n          this.nextCellCoordsEmitter.emit(null);\n        });\n\n      fromEvent(this.keyNavUtils.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.key === Keys.ArrowLeft || e.key === Keys.ArrowRight)\n          ) {\n            return;\n          }\n          if (\n            e.key === Keys.ArrowUp ||\n            e.key === Keys.ArrowDown ||\n            e.key === Keys.ArrowLeft ||\n            e.key === Keys.ArrowRight ||\n            e.key === Keys.End ||\n            e.key === Keys.Home ||\n            e.key === Keys.PageUp ||\n            e.key === Keys.PageDown\n          ) {\n            const nextCellCoords = this.keyNavUtils.getNextItemCoordinate(e);\n\n            if (\n              nextCellCoords.y > 0 &&\n              (e.key === Keys.ArrowUp || e.key === Keys.ArrowDown || e.key === Keys.PageUp || e.key === Keys.PageDown)\n            ) {\n              this.keyNavUtils.setAriaRowIndexTo(nextCellCoords);\n\n              this.nextCellCoordsEmitter.emit(nextCellCoords);\n            }\n\n            const activeItem = this.keyNavUtils.rows\n              ? (Array.from(this.keyNavUtils.getCellsForRow(nextCellCoords.y))[nextCellCoords.x] as HTMLElement)\n              : null;\n\n            if (activeItem) {\n              this.setActiveCell(activeItem);\n              this.focusElement(activeItem, {\n                preventScroll: this.preventScrollOnFocus && !!nextCellCoords.ariaRowIndex,\n              });\n            }\n\n            e.preventDefault();\n          }\n        });\n    });\n    this.listenersAdded = true;\n  }\n\n  initializeKeyGrid(host: HTMLElement) {\n    this.keyNavUtils = new KeyNavigationUtils(host, this.config);\n    this.addListeners();\n    this.resetKeyGrid();\n  }\n\n  resetKeyGrid() {\n    this.keyNavUtils.cells?.forEach((i: HTMLElement) => i.setAttribute('tabindex', '-1'));\n    const firstCell = this.keyNavUtils.cells ? this.keyNavUtils.cells[0] : null;\n    firstCell?.setAttribute('tabindex', '0');\n  }\n\n  setActiveCell(activeCell: HTMLElement) {\n    const prior = this.keyNavUtils.cells\n      ? Array.from(this.keyNavUtils.cells).find(c => c.getAttribute('tabindex') === '0')\n      : null;\n\n    if (prior) {\n      prior.setAttribute('tabindex', '-1');\n    }\n\n    activeCell.setAttribute('tabindex', '0');\n  }\n\n  focusElement(activeCell: HTMLElement, options: FocusOptions = { preventScroll: false }) {\n    if (this.skipItemFocus) {\n      return;\n    }\n\n    let elementToFocus: HTMLElement;\n\n    if (activeCell.getAttribute('role') === 'columnheader') {\n      elementToFocus = activeCell;\n    } else {\n      const tabbableElements = getTabbableItems(activeCell);\n      elementToFocus = tabbableElements.length ? tabbableElements[0] : activeCell;\n    }\n\n    elementToFocus.focus(options);\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  OnDestroy,\n  Optional,\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';\nimport { KeyNavigationGridController } from './utils/key-navigation-grid.controller';\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-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, OnDestroy\n{\n  @Output('clrDgFilterOpenChange') openChange = new EventEmitter<boolean>(false);\n\n  ariaExpanded = false;\n  popoverId = uniqueIdFactory();\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<HTMLButtonElement>;\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    @Optional() private keyNavigation: KeyNavigationGridController\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      if (this.keyNavigation) {\n        this.keyNavigation.skipItemFocus = open;\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  override ngOnDestroy(): void {\n    super.ngOnDestroy();\n    this.subs.forEach(sub => sub.unsubscribe());\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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      <div class=\"datagrid-numeric-filter-form\">\n        <clr-number-input-container>\n          <label class=\"clr-control-label\">{{ fromLabelValue }}</label>\n          <input\n            clrNumberInput\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        </clr-number-input-container>\n        <clr-number-input-container>\n          <label class=\"clr-control-label\">{{ toLabelValue }}</label>\n          <input\n            clrNumberInput\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-number-input-container>\n      </div>\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  @Input('clrFilterFromLabel') fromLabel: string;\n  @Input('clrFilterToLabel') toLabel: 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<HTMLInputElement>;\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 fromLabelValue() {\n    return this.fromLabel || this.commonStrings.keys.fromLabel;\n  }\n\n  get toLabelValue() {\n    return this.toLabel || this.commonStrings.keys.toLabel;\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  NgZone,\n  OnChanges,\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      <clr-input-container>\n        <label>{{ labelValue }}</label>\n        <input\n          #input\n          type=\"text\"\n          autocomplete=\"off\"\n          name=\"search\"\n          [(ngModel)]=\"value\"\n          clrInput\n          [attr.aria-label]=\"placeholderValue\"\n          [placeholder]=\"placeholderValue\"\n        />\n      </clr-input-container>\n    </clr-dg-filter>\n  `,\n})\nexport class DatagridStringFilter<T = any>\n  extends DatagridFilterRegistrar<T, DatagridStringFilterImpl<T>>\n  implements CustomFilter, AfterViewInit, OnChanges, 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  @Input('clrFilterLabel') label: 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<HTMLInputElement>;\n\n  /**\n   * We grab the ClrDatagridFilter we wrap to register this StringFilter to it.\n   */\n  @ViewChild(ClrDatagridFilter) filterContainer: ClrDatagridFilter<T>;\n\n  labelValue = '';\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 elementRef: ElementRef<HTMLElement>,\n    private cdr: ChangeDetectorRef,\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  ngOnChanges() {\n    setTimeout(() => {\n      this.setFilterLabel();\n      this.cdr.markForCheck();\n    });\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   */\n  private setFilterLabel() {\n    if (this.label) {\n      this.labelValue = this.label;\n\n      return;\n    }\n\n    const columnElement = this.elementRef.nativeElement?.closest('clr-dg-column');\n    const columnTitleElement = columnElement?.querySelector('.datagrid-column-title');\n\n    this.labelValue = this.commonStrings.parse(this.commonStrings.keys.datagridFilterLabel, {\n      COLUMN: columnTitleElement?.textContent.trim() || '',\n    });\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 preventScroll = false;\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 preventFocusScroll(): boolean {\n    return this.preventScroll;\n  }\n  set preventFocusScroll(preventScroll: boolean) {\n    this.preventScroll = preventScroll;\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.returnFocus();\n    this._state.next(this.toggleState);\n    this.modalStackService.trackModalClose(this);\n  }\n\n  returnFocus() {\n    if (this.button) {\n      this.button.focus({ preventScroll: this.preventFocusScroll });\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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\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 AfterViewInit, OnDestroy {\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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); // NOT USED\n    this.alreadySized = true;\n    this._renderStep.next(DatagridRenderStep.CALCULATE_MODE_OFF);\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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(\n    private el: ElementRef<HTMLElement>,\n    private domAdapter: DomAdapter,\n    private organizer: DatagridRenderOrganizer\n  ) {}\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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<HTMLElement>) {\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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<HTMLElement>;\n  @ViewChild('columnHandle') private columnHandleRef: ElementRef<HTMLElement>;\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  ElementRef,\n  EventEmitter,\n  Injector,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n  ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrCommonStringsService } from '../../utils';\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 { HIDDEN_COLUMN_CLASS } from './render/constants';\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\" #titleContainer>\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\" #titleContainer>\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  @ViewChild('titleContainer', { read: ElementRef }) titleContainer: ElementRef<HTMLElement>;\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  private _showSeparator = true;\n\n  constructor(\n    private el: ElementRef<HTMLElement>,\n    private _sort: Sort<T>,\n    filters: FiltersProvider<T>,\n    private vcr: ViewContainerRef,\n    private detailService: DetailService,\n    private changeDetectorRef: ChangeDetectorRef,\n    private commonStrings: ClrCommonStringsService\n  ) {\n    super(filters);\n    this.subscriptions.push(this.listenForSortingChanges());\n    this.subscriptions.push(this.listenForDetailPaneChanges());\n  }\n\n  get isHidden() {\n    return this.el.nativeElement.classList.contains(HIDDEN_COLUMN_CLASS);\n  }\n\n  get showSeparator() {\n    return this._showSeparator;\n  }\n  set showSeparator(value: boolean) {\n    this._showSeparator = value;\n    this.changeDetectorRef.markForCheck();\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 if (comparator) {\n      this._sortBy = comparator;\n    } else if (this.field) {\n      this._sortBy = new DatagridPropertyComparator(this.field);\n    } else {\n      delete this._sortBy;\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      case ClrDatagridSortOrder.ASC:\n        this.sort(false);\n        break;\n      case ClrDatagridSortOrder.DESC:\n        this.sort(true);\n        break;\n      // the Unsorted case happens when the current state is neither Asc or Desc\n      case ClrDatagridSortOrder.UNSORTED:\n      default:\n        this._sort.clear();\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      case ClrDatagridSortOrder.ASC:\n        return 'ascending';\n      case ClrDatagridSortOrder.DESC:\n        return 'descending';\n      case ClrDatagridSortOrder.UNSORTED:\n      default:\n        return 'none';\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  ngAfterViewInit() {\n    this.setFilterToggleAriaLabel();\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      }\n    });\n  }\n\n  private setFilterToggleAriaLabel() {\n    const filterToggle = this.el.nativeElement.querySelector('.datagrid-filter-toggle');\n    if (filterToggle) {\n      filterToggle.ariaLabel = this.commonStrings.parse(this.commonStrings.keys.datagridFilterAriaLabel, {\n        COLUMN: this?.titleContainer?.nativeElement.textContent.trim().toLocaleLowerCase(),\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\nimport { 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   * 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.\n   */\n  trackBy: ClrDatagridItemsTrackByFunction<T> = 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  smartenDown() {\n    this._smart = false;\n\n    this.destroy();\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  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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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    vcr: ViewContainerRef\n  ) {\n    items.smartenUp();\n    this.iterableProxy = new NgForOf<T>(vcr, template, 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.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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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\">\n      <div class=\"datagrid-placeholder-image\" *ngIf=\"emptyDatagrid\"></div>\n      <span 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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\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 AfterViewInit, OnDestroy {\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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<void>();\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<void> {\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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\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 AfterViewInit, OnDestroy {\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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, IterableDiffer, IterableDiffers, TrackByFunction } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { debounceTime, delay } from 'rxjs/operators';\n\nimport { SelectionType } from '../enums/selection-type';\nimport { FiltersProvider } from './filters';\nimport { ClrDatagridItemsTrackByFunction, 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 lockedRefs: T[] = []; // Ref of locked items\n  private _currentSelectionRefs: T[] = [];\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  /**\n   * Differ to track changes of multi selection.\n   */\n  private _differ!: IterableDiffer<T>;\n  private trackBy: ClrDatagridItemsTrackByFunction<T>;\n\n  constructor(private _items: Items<T>, filters: FiltersProvider<T>, private differs: IterableDiffers) {\n    this.id = 'clr-dg-selection' + nbSelection++;\n    this.trackBy = _items.trackBy;\n    this._differ = differs.find(this._current || []).create<T>(this.trackBy as TrackByFunction<T>);\n\n    this.subscriptions.push(\n      filters.change.subscribe(() => {\n        if (!this._selectable || this.preserveSelection) {\n          return;\n        }\n        this.clearSelection();\n      })\n    );\n\n    this.subscriptions.push(\n      _items.allChanges.pipe(delay(0)).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            updatedItems.forEach(item => {\n              const ref = _items.trackBy(item);\n              // If one of the updated items is the previously selectedSingle, set it as the new one\n              if (this.currentSingleSelectionRef === 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 (_items.smart && !newSingle) {\n              selectionUpdated = true;\n            }\n\n            if (selectionUpdated) {\n              this.currentSingle = newSingle;\n            }\n            break;\n          }\n\n          case SelectionType.Multi: {\n            let leftOver: any[] = this.current.slice();\n            let selectionUpdated = false;\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 => {\n              const ref = _items.trackBy(item);\n              if (this.lockedRefs.indexOf(ref) > -1) {\n                updateLockedRef.push(ref);\n              }\n            });\n\n            // TODO: revisit this when we work on https://github.com/vmware/clarity/issues/2342\n            // currently, the selection is cleared when filter is applied, so the logic inside\n            // the if statement below results in broken behavior.\n            if (leftOver.length > 0) {\n              updatedItems.forEach(item => {\n                const ref = _items.trackBy(item);\n                // Look in current selected refs array if item is selected, and update actual value\n                const selectedIndex = this.currentSelectionRefs.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 (_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              if (selectionUpdated) {\n                this.current = leftOver;\n              }\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 ([SelectionType.None, SelectionType.Single].includes(value)) {\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    this.updateCurrentSelectionRefs();\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    this._currentSingle = value;\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  // Refs of currently selected items\n  private get currentSelectionRefs(): T[] {\n    return this._currentSelectionRefs;\n  }\n\n  // Ref of currently selected item\n  private get currentSingleSelectionRef(): T {\n    return this._currentSingle && this._items.trackBy(this._currentSingle);\n  }\n\n  checkForChanges(): void {\n    const changes = this._differ.diff(this._current);\n    // @TODO move the trackBy from items to selection as it's used only here and is not needed in items\n    if (this.trackBy !== this._items.trackBy) {\n      this.trackBy = this._items.trackBy;\n    }\n    if (changes) {\n      this.updateCurrentSelectionRefs();\n    }\n  }\n\n  clearSelection(): void {\n    this._current = [];\n    this._currentSelectionRefs = [];\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    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    const ref = this._items.trackBy(item);\n    if (this._selectionType === SelectionType.Single) {\n      return this.currentSingleSelectionRef === ref;\n    } else if (this._selectionType === SelectionType.Multi) {\n      return this.currentSelectionRefs.indexOf(ref) >= 0;\n    }\n    return false;\n  }\n\n  /**\n   * Selects or deselects an item\n   */\n  setSelected(item: T, selected: boolean) {\n    const ref = this._items.trackBy(item);\n    const index = this.currentSelectionRefs ? this.currentSelectionRefs.indexOf(ref) : -1;\n\n    switch (this._selectionType) {\n      case SelectionType.None:\n        break;\n      case SelectionType.Single:\n        if (selected) {\n          this.currentSingle = item;\n        }\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 => {\n      const ref = this._items.trackBy(item);\n      return this.currentSelectionRefs.indexOf(ref) > -1;\n    });\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 ref = this._items.trackBy(item);\n        const currentIndex = this.currentSelectionRefs.indexOf(ref);\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.isSelected(item) && 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  }\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.currentSelectionRefs.length) {\n      // Keep selected refs array in sync\n      const removedItems = this.currentSelectionRefs[indexOfItem];\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;\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  private updateCurrentSelectionRefs() {\n    this._currentSelectionRefs = this._current?.map(item => this._items.trackBy(item)) || [];\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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, forwardRef, Input, Renderer2 } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Directive({\n  selector: 'input[type=radio][clrDgSingleSelectionRadio]',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => ClrDatagridSingleSelectionValueAccessor),\n      multi: true,\n    },\n  ],\n  host: {\n    '(change)': 'onChange(value)',\n    '(blur)': 'onTouched()',\n  },\n  standalone: false,\n})\nexport class ClrDatagridSingleSelectionValueAccessor implements ControlValueAccessor {\n  @Input() value;\n  @Input() clrDgItemsTrackBy!: (value: any) => unknown;\n\n  private state: any;\n\n  constructor(private renderer: Renderer2, private elementRef: ElementRef<HTMLInputElement>) {}\n\n  // eslint-disable-next-line  @typescript-eslint/no-empty-function\n  onChange: (value: any) => void = () => {};\n  // eslint-disable-next-line  @typescript-eslint/no-empty-function\n  onTouched: () => void = () => {};\n\n  registerOnChange(fn: (value: any) => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.renderer.setProperty(this.elementRef.nativeElement, 'disabled', isDisabled);\n  }\n\n  writeValue(value: any): void {\n    this.state = value;\n    this.updateChecked();\n  }\n\n  private keyOf(value: any): unknown {\n    if (value && this.clrDgItemsTrackBy) {\n      return this.clrDgItemsTrackBy(value);\n    }\n    return value;\n  }\n\n  private updateChecked(): void {\n    const model = this.keyOf(this.state);\n    const value = this.keyOf(this.value);\n    this.renderer.setProperty(this.elementRef.nativeElement, 'checked', model === value);\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  TemplateRef,\n  ViewChild,\n  ViewContainerRef,\n} from '@angular/core';\nimport { combineLatest, ReplaySubject, Subscription } from 'rxjs';\n\nimport { ClrExpandableAnimationDirective } from '../../utils/animations/expandable-animation/expandable-animation.directive';\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-row-skeleton]': 'skeletonLoading',\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  @Input('clrDgDetailDisabled') detailDisabled = false;\n  @Input('clrDgDetailHidden') detailHidden = false;\n  @Input('clrDgSkeletonLoading') skeletonLoading = 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(ClrExpandableAnimationDirective) expandAnimation: ClrExpandableAnimationDirective;\n  @ViewChild('detailButton') detailButton: ElementRef<HTMLButtonElement>;\n  @ViewChild('stickyCells', { read: ViewContainerRef }) _stickyCells: ViewContainerRef;\n  @ViewChild('scrollableCells', { read: ViewContainerRef }) _scrollableCells: ViewContainerRef;\n  @ViewChild('calculatedCells', { read: ViewContainerRef }) _calculatedCells: ViewContainerRef;\n  @ViewChild('fixedCellTemplate') _fixedCellTemplate: TemplateRef<any>;\n\n  private _item: T;\n  private _selected = false;\n  private _detailOpenLabel = '';\n  private _detailCloseLabel = '';\n  private _rowSelectionLabel = '';\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    renderer: Renderer2,\n    public el: ElementRef<HTMLElement>,\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(expand.replace, expand.expandChange).subscribe(([expandReplaceValue, expandChangeValue]) => {\n        if (expandReplaceValue && expandChangeValue) {\n          // replaced and expanding\n          this.replaced = true;\n          renderer.addClass(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          renderer.removeClass(el.nativeElement, 'datagrid-row-replaced');\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 clrDgRowSelectionLabel(): string {\n    return this._rowSelectionLabel ? this._rowSelectionLabel : this.commonStrings.keys.select;\n  }\n  set clrDgRowSelectionLabel(label: string) {\n    this._rowSelectionLabel = label;\n  }\n\n  get _view() {\n    return this.wrappedInjector.get(WrappedRow, this.vcr).rowView;\n  }\n\n  get trackBy() {\n    return this.items.trackBy;\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          // Inserts a fixed cell if any of these conditions are true.\n          const fixedCellConditions = [\n            this.selection.selectionType !== this.SELECTION_TYPE.None,\n            this.rowActionService.hasActionableRow,\n            this.globalExpandable.hasExpandableRow,\n            this.detailService.enabled,\n          ];\n          fixedCellConditions\n            .filter(Boolean)\n            .forEach(() => this._calculatedCells.insert(this._fixedCellTemplate.createEmbeddedView(null)));\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 (this.selection.rowSelectionMode && 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 (!this.selection.rowSelectionMode || $event.target.tagName === 'LABEL' || !this._selectable) {\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.current = [...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","<div\n  role=\"row\"\n  [id]=\"id\"\n  class=\"datagrid-row-master datagrid-row-flex\"\n  [clrExpandableAnimation]=\"expandAnimationTrigger\"\n  (mousedown)=\"clearRanges($event)\"\n  (click)=\"selectRow(!selected, $event)\"\n  [class.datagrid-row-clickable]=\"selection.rowSelectionMode\"\n  [class.datagrid-row-detail-open]=\"detailService.isRowOpen(item)\"\n>\n  <div class=\"datagrid-row-sticky\">\n    <!-- Sticky elements here -->\n    <ng-container #stickyCells>\n      <div\n        *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n        class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n        [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n        role=\"gridcell\"\n      >\n        <div class=\"clr-checkbox-wrapper\">\n          <input\n            tabindex=\"-1\"\n            type=\"checkbox\"\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\">{{clrDgRowSelectionLabel || commonStrings.keys.select}}</span>\n          </label>\n        </div>\n      </div>\n      <div\n        *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n        class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n        [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n        role=\"gridcell\"\n      >\n        <clr-radio-wrapper>\n          <input\n            tabindex=\"-1\"\n            type=\"radio\"\n            clrRadio\n            clrDgSingleSelectionRadio\n            [clrDgItemsTrackBy]=\"trackBy\"\n            [id]=\"radioId\"\n            [name]=\"selection.id + '-radio'\"\n            [value]=\"item\"\n            [(ngModel)]=\"selection.currentSingle\"\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\">{{ clrDgRowSelectionLabel || 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            tabindex=\"-1\"\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]=\"expand.hasExpandTemplate && !expand.expanded ? null : 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          tabindex=\"-1\"\n          (click)=\"detailService.toggle(item, detailButton)\"\n          type=\"button\"\n          #detailButton\n          class=\"datagrid-detail-caret-button\"\n          [disabled]=\"detailDisabled\"\n          *ngIf=\"!detailHidden\"\n          [class.is-open]=\"detailService.isRowOpen(item)\"\n          [attr.aria-label]=\"detailService.isRowOpen(item) ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n          [attr.aria-expanded]=\"detailService.isRowOpen(item)\"\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<!--\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-container #calculatedCells></ng-container>\n\n<ng-template #fixedCellTemplate>\n  <div class=\"datagrid-fixed-column datagrid-cell\" role=\"gridcell\"></div>\n</ng-template>\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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  INITIALIZE,\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) && key !== DatagridColumnChanges.INITIALIZE); // extracts only integer keys\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  columnsStateChange: BehaviorSubject<ColumnState> = new BehaviorSubject(null);\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  get visibleColumns(): ColumnState[] {\n    return this.columnStates.filter(state => !state.hidden);\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      const cachedState = { ...state, changes: ALL_COLUMN_CHANGES };\n      this.columns[index].next(cachedState);\n      this.columnsStateChange.next(cachedState);\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    const changedState = { ...column.value, ...diff };\n    column.next(changedState);\n    this.columnsStateChange.next(changedState);\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { _RecycleViewRepeaterStrategy, _VIEW_REPEATER_STRATEGY, ListRange } from '@angular/cdk/collections';\nimport {\n  CdkFixedSizeVirtualScroll,\n  CdkVirtualForOf,\n  CdkVirtualForOfContext,\n  CdkVirtualScrollable,\n  CdkVirtualScrollableElement,\n  CdkVirtualScrollViewport,\n  FixedSizeVirtualScrollStrategy,\n  ScrollDispatcher,\n  ViewportRuler,\n  VIRTUAL_SCROLL_STRATEGY,\n  VirtualScrollStrategy,\n} from '@angular/cdk/scrolling';\nimport {\n  AfterViewInit,\n  VERSION as ANGULAR_VERSION,\n  ChangeDetectorRef,\n  Directive,\n  DoCheck,\n  ElementRef,\n  EmbeddedViewRef,\n  EnvironmentInjector,\n  EventEmitter,\n  forwardRef,\n  Inject,\n  inject,\n  Injector,\n  Input,\n  IterableDiffers,\n  NgZone,\n  OnDestroy,\n  Output,\n  Renderer2,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrDatagrid } from './datagrid';\nimport { ClrDatagridVirtualScrollRangeInterface } from './interfaces/virtual-scroll-data-range.interface';\nimport { ColumnsService } from './providers/columns.service';\nimport { Items } from './providers/items';\n\ntype CdkVirtualForInputKey =\n  | 'cdkVirtualForOf'\n  | 'cdkVirtualForTrackBy'\n  | 'cdkVirtualForTemplate'\n  | 'cdkVirtualForTemplateCacheSize';\n\ntype CdkVirtualForInputs<T> = Partial<Pick<CdkVirtualForOf<T>, CdkVirtualForInputKey>>;\n\ntype CdkFixedSizeVirtualScrollInputs = Pick<CdkFixedSizeVirtualScroll, 'itemSize' | 'minBufferPx' | 'maxBufferPx'>;\n\n@Directive({\n  selector: '[clrVirtualScroll],[ClrVirtualScroll]',\n  providers: [Items],\n})\nexport class ClrDatagridVirtualScrollDirective<T> implements AfterViewInit, DoCheck, OnDestroy {\n  @Output() renderedRangeChange = new EventEmitter<ListRange>();\n  @Input('clrVirtualPersistItems') persistItems = true;\n\n  private shouldUpdateAriaRowIndexes = false;\n\n  private _isUserProvidedItemSize = false;\n  private _itemSize = 33;\n  private _minBufferPx = 200;\n  private _maxBufferPx = 400;\n\n  private readonly datagridElementRef: ElementRef<HTMLElement>;\n\n  private gridRoleElement: HTMLElement | null | undefined;\n  private readonly virtualScrollStrategy: FixedSizeVirtualScrollStrategy;\n  private virtualScrollViewport: CdkVirtualScrollViewport;\n  private cdkVirtualFor: CdkVirtualForOf<T>;\n  private subscriptions: Subscription[] = [];\n  private topIndex = 0;\n\n  // @deprecated remove the mutation observer when `datagrid-compact` class is deleted\n  private mutationChanges: MutationObserver = new MutationObserver((mutations: MutationRecord[]) => {\n    mutations.forEach((mutation: MutationRecord) => {\n      // it is possible this to be called twice because the old class is removed and the new added\n      if (\n        !this._isUserProvidedItemSize &&\n        (mutation.target as HTMLElement).classList.contains('datagrid-compact') &&\n        this.itemSize > 25\n      ) {\n        this.updateItemSize(25);\n      }\n    });\n  });\n\n  private viewRepeater = new _RecycleViewRepeaterStrategy<T, T, CdkVirtualForOfContext<T>>();\n  private cdkVirtualForInputs: CdkVirtualForInputs<T> = {\n    cdkVirtualForTrackBy: index => index,\n  };\n  private _totalItems: number;\n\n  constructor(\n    private readonly changeDetectorRef: ChangeDetectorRef,\n    private iterableDiffers: IterableDiffers,\n    private items: Items<T>,\n    private readonly ngZone: NgZone,\n    private readonly renderer2: Renderer2,\n    private readonly templateRef: TemplateRef<CdkVirtualForOfContext<T>>,\n    private readonly viewContainerRef: ViewContainerRef,\n    private readonly directionality: Directionality,\n    private readonly scrollDispatcher: ScrollDispatcher,\n    private readonly viewportRuler: ViewportRuler,\n    @Inject(forwardRef(() => ClrDatagrid)) private readonly datagrid: ClrDatagrid,\n    private columnsService: ColumnsService,\n    private readonly injector: EnvironmentInjector\n  ) {\n    items.smartenUp();\n    datagrid.detailService.preventFocusScroll = true;\n\n    this.datagridElementRef = datagrid.el;\n\n    // default\n    this.cdkVirtualForTemplateCacheSize = 20;\n\n    const cellHeightToken = window.getComputedStyle(document.body).getPropertyValue('--clr-table-cell-height');\n    const cellHeightValue = +/calc\\(([0-9]+) \\* calc\\(\\(1rem \\/ 20\\) \\* 1\\)\\)/.exec(cellHeightToken)?.[1];\n\n    const borderWidthToken = window.getComputedStyle(document.body).getPropertyValue('--clr-table-borderwidth');\n    const borderWidthValue = +/calc\\(([0-9]+) \\* \\(1rem \\/ 20\\)\\)/.exec(borderWidthToken)?.[1];\n\n    // initially rowHeightValue is calculated based on `--clr-table-row-height` that had a discreet value.\n    // currently `--clr-table-row-height` is calculated based on `--clr-table-cell-height` + `--clr-table-borderwidth`\n    const rowHeightValue = cellHeightValue + borderWidthValue;\n\n    if (rowHeightValue && this.itemSize > rowHeightValue) {\n      this.updateItemSize(rowHeightValue);\n    }\n\n    this.mutationChanges.observe(this.datagridElementRef.nativeElement, {\n      attributeFilter: ['class'],\n      attributeOldValue: true,\n    });\n\n    this.virtualScrollStrategy = new FixedSizeVirtualScrollStrategy(this.itemSize, this.minBufferPx, this.maxBufferPx);\n  }\n\n  get totalContentHeight() {\n    return this.virtualScrollViewport?._totalContentHeight || '';\n  }\n\n  @Input('clrVirtualRowsOf')\n  get cdkVirtualForOf() {\n    return this.cdkVirtualForInputs.cdkVirtualForOf;\n  }\n  set cdkVirtualForOf(value: CdkVirtualForInputs<T>['cdkVirtualForOf']) {\n    this.cdkVirtualForInputs.cdkVirtualForOf = value;\n    this.items.all = value as T[];\n    this.updateCdkVirtualForInputs();\n  }\n\n  @Input('clrVirtualRowsTrackBy')\n  get cdkVirtualForTrackBy() {\n    return this.cdkVirtualForInputs.cdkVirtualForTrackBy;\n  }\n  set cdkVirtualForTrackBy(value: CdkVirtualForInputs<T>['cdkVirtualForTrackBy']) {\n    this.cdkVirtualForInputs.cdkVirtualForTrackBy = value;\n    this.updateCdkVirtualForInputs();\n  }\n\n  @Input('clrVirtualRowsTemplate')\n  get cdkVirtualForTemplate() {\n    return this?.cdkVirtualForInputs?.cdkVirtualForTemplate;\n  }\n  set cdkVirtualForTemplate(value: CdkVirtualForInputs<T>['cdkVirtualForTemplate']) {\n    this.cdkVirtualForInputs.cdkVirtualForTemplate = value;\n    this.updateCdkVirtualForInputs();\n  }\n\n  @Input('clrVirtualRowsTemplateCacheSize')\n  get cdkVirtualForTemplateCacheSize() {\n    return this.cdkVirtualForInputs.cdkVirtualForTemplateCacheSize;\n  }\n  set cdkVirtualForTemplateCacheSize(value: CdkVirtualForInputs<T>['cdkVirtualForTemplateCacheSize']) {\n    this.cdkVirtualForInputs.cdkVirtualForTemplateCacheSize = coerceNumberProperty(value);\n    this.updateCdkVirtualForInputs();\n  }\n\n  @Input('clrVirtualRowsItemSize')\n  get itemSize() {\n    return this._itemSize;\n  }\n  set itemSize(value: CdkFixedSizeVirtualScrollInputs['itemSize']) {\n    this._isUserProvidedItemSize = true;\n    this.updateItemSize(value);\n  }\n\n  @Input('clrVirtualRowsMinBufferPx')\n  get minBufferPx() {\n    return this._minBufferPx;\n  }\n  set minBufferPx(value: CdkFixedSizeVirtualScrollInputs['minBufferPx']) {\n    this._minBufferPx = coerceNumberProperty(value);\n    this.updateFixedSizeVirtualScrollInputs();\n  }\n\n  @Input('clrVirtualRowsMaxBufferPx')\n  get maxBufferPx() {\n    return this._maxBufferPx;\n  }\n  set maxBufferPx(value: CdkFixedSizeVirtualScrollInputs['maxBufferPx']) {\n    this._maxBufferPx = coerceNumberProperty(value);\n    this.updateFixedSizeVirtualScrollInputs();\n  }\n\n  @Input('clrVirtualDataRange')\n  set dataRange(range: ClrDatagridVirtualScrollRangeInterface<T>) {\n    if (!range) {\n      return;\n    }\n\n    if (this.items.smart) {\n      this.items.smartenDown();\n    }\n\n    this.totalItems = range.total;\n\n    this.updateDataRange(range.skip, range.data);\n  }\n\n  get totalItems() {\n    return this._totalItems;\n  }\n\n  private set totalItems(value: number) {\n    this._totalItems = value;\n  }\n\n  ngAfterViewInit() {\n    this.injector.runInContext(() => {\n      this.virtualScrollViewport = this.createVirtualScrollViewportForDatagrid(\n        this.changeDetectorRef,\n        this.ngZone,\n        this.renderer2,\n        this.directionality,\n        this.scrollDispatcher,\n        this.viewportRuler,\n        this.datagridElementRef,\n        this.virtualScrollStrategy\n      );\n\n      this.cdkVirtualFor = createCdkVirtualForOfDirective(\n        this.viewContainerRef,\n        this.templateRef,\n        this.iterableDiffers,\n        this.viewRepeater,\n        this.virtualScrollViewport,\n        this.ngZone\n      );\n\n      this.virtualScrollViewport.ngOnInit();\n    });\n\n    this.gridRoleElement = this.datagridElementRef.nativeElement.querySelector<HTMLElement>('[role=\"grid\"]');\n\n    this.updateCdkVirtualForInputs();\n\n    this.subscriptions.push(\n      this.items.change.subscribe(newItems => {\n        if (this.items.smart) {\n          this.cdkVirtualFor.cdkVirtualForOf = newItems;\n        }\n        this.shouldUpdateAriaRowIndexes = true;\n      }),\n      this.cdkVirtualFor.dataStream.subscribe(data => {\n        this.updateAriaRowCount(data.length);\n      }),\n      this.virtualScrollViewport.scrolledIndexChange.subscribe(index => {\n        this.topIndex = index;\n      }),\n      this.virtualScrollViewport.renderedRangeStream.subscribe(renderedRange => {\n        this.renderedRangeChange.emit(renderedRange);\n        this.shouldUpdateAriaRowIndexes = true;\n      }),\n      this.datagrid.refresh.subscribe(datagridState => {\n        if (datagridState.filters) {\n          this.scrollToIndex(0);\n        }\n      }),\n      this.columnsService.columnsStateChange.subscribe(() => {\n        this.viewRepeater.detach();\n      })\n    );\n  }\n\n  ngDoCheck() {\n    this.cdkVirtualFor?.ngDoCheck();\n    if (this.shouldUpdateAriaRowIndexes) {\n      this.updateAriaRowIndexes();\n\n      this.shouldUpdateAriaRowIndexes = false;\n    }\n  }\n\n  ngOnDestroy() {\n    this.cdkVirtualFor?.ngOnDestroy();\n    this.virtualScrollViewport?.ngOnDestroy();\n    this.mutationChanges?.disconnect();\n    this.subscriptions.forEach(subscription => {\n      subscription.unsubscribe();\n    });\n  }\n\n  scrollUp(offset: number, behavior: ScrollBehavior = 'auto') {\n    this.scrollToIndex(this.topIndex - offset, behavior);\n  }\n\n  scrollDown(offset: number, behavior: ScrollBehavior = 'auto') {\n    this.scrollToIndex(this.topIndex + offset, behavior);\n  }\n\n  scrollToIndex(index: number, behavior: ScrollBehavior = 'auto') {\n    this.virtualScrollViewport?.scrollToIndex(index, behavior);\n  }\n\n  private updateItemSize(value: CdkFixedSizeVirtualScrollInputs['itemSize']) {\n    this._itemSize = coerceNumberProperty(value);\n    this.updateFixedSizeVirtualScrollInputs();\n  }\n\n  private updateDataRange(skip: number, data: T[]) {\n    let items = this.cdkVirtualForOf as T[];\n\n    if (!this.persistItems || !items || items?.length !== this.totalItems) {\n      items = Array(this.totalItems);\n    }\n\n    items.splice(skip, data.length, ...data);\n\n    this.cdkVirtualForOf = Array.from(items);\n  }\n\n  private updateCdkVirtualForInputs() {\n    if (this.cdkVirtualFor) {\n      for (const cdkVirtualForInputKey of Object.keys(this.cdkVirtualForInputs) as CdkVirtualForInputKey[]) {\n        if (this.cdkVirtualFor[cdkVirtualForInputKey] !== this.cdkVirtualForInputs[cdkVirtualForInputKey]) {\n          (this.cdkVirtualFor as any)[cdkVirtualForInputKey] = this.cdkVirtualForInputs[cdkVirtualForInputKey];\n        }\n      }\n    }\n  }\n\n  private updateFixedSizeVirtualScrollInputs() {\n    if (this.virtualScrollStrategy) {\n      this.virtualScrollStrategy.updateItemAndBufferSize(this.itemSize, this.minBufferPx, this.maxBufferPx);\n    }\n  }\n\n  private updateAriaRowCount(rowCount: number) {\n    this.gridRoleElement?.setAttribute('aria-rowcount', rowCount.toString());\n  }\n\n  private updateAriaRowIndexes() {\n    for (let i = 0; i < this.viewContainerRef.length; i++) {\n      const viewRef = this.viewContainerRef.get(i) as EmbeddedViewRef<CdkVirtualForOfContext<T>>;\n\n      const rootElements: HTMLElement[] = viewRef.rootNodes;\n      const datagridRowElement = rootElements.find(rowElement => rowElement.tagName === 'CLR-DG-ROW');\n      const rowRoleElement = datagridRowElement?.querySelector('[role=\"row\"]');\n\n      const newAriaRowIndex = (viewRef.context.index + 1).toString();\n      if (rowRoleElement?.getAttribute('aria-rowindex') !== newAriaRowIndex) {\n        // aria-rowindex should start with one, not zero, so we have to add one to the zero-based index\n        rowRoleElement?.setAttribute('aria-rowindex', newAriaRowIndex);\n      }\n    }\n  }\n\n  private createVirtualScrollViewportForDatagrid(\n    changeDetectorRef: ChangeDetectorRef,\n    ngZone: NgZone,\n    renderer2: Renderer2,\n    directionality: Directionality,\n    scrollDispatcher: ScrollDispatcher,\n    viewportRuler: ViewportRuler,\n    datagridElementRef: ElementRef<HTMLElement>,\n    virtualScrollStrategy: FixedSizeVirtualScrollStrategy\n  ) {\n    const datagridContentElement = datagridElementRef.nativeElement.querySelector<HTMLElement>('.datagrid-content');\n    const datagridRowsElement = datagridElementRef.nativeElement.querySelector<HTMLElement>('.datagrid-rows');\n\n    const virtualScrollViewport = createCdkVirtualScrollViewport(\n      new ElementRef(datagridContentElement),\n      new ElementRef(datagridRowsElement),\n      changeDetectorRef,\n      ngZone,\n      renderer2,\n      virtualScrollStrategy,\n      directionality,\n      scrollDispatcher,\n      viewportRuler,\n      null as any as CdkVirtualScrollableElement\n    );\n\n    return virtualScrollViewport;\n  }\n}\n\nfunction createCdkVirtualScrollViewport(\n  datagridDivElementRef: ElementRef<HTMLElement>,\n  contentWrapper: ElementRef<HTMLElement>,\n  changeDetectorRef: ChangeDetectorRef,\n  ngZone: NgZone,\n  renderer2: Renderer2,\n  virtualScrollStrategy: VirtualScrollStrategy,\n  directionality: Directionality,\n  scrollDispatcher: ScrollDispatcher,\n  viewportRuler: ViewportRuler,\n  scrollable: CdkVirtualScrollable\n) {\n  let viewPort: CdkVirtualScrollViewport;\n  if (+ANGULAR_VERSION.major < 19) {\n    viewPort = new CdkVirtualScrollViewport(\n      datagridDivElementRef,\n      changeDetectorRef,\n      ngZone,\n      virtualScrollStrategy,\n      directionality,\n      scrollDispatcher,\n      viewportRuler,\n      scrollable\n    );\n  } else {\n    const virtualScrollViewportInjector = Injector.create({\n      parent: inject(EnvironmentInjector),\n      providers: [\n        { provide: ElementRef, useValue: datagridDivElementRef },\n        { provide: ChangeDetectorRef, useValue: changeDetectorRef },\n        { provide: NgZone, useValue: ngZone },\n        { provide: Renderer2, useValue: renderer2 },\n        { provide: VIRTUAL_SCROLL_STRATEGY, useValue: virtualScrollStrategy },\n        { provide: Directionality, useValue: directionality },\n        { provide: ScrollDispatcher, useValue: scrollDispatcher },\n        { provide: ViewportRuler, useValue: viewportRuler },\n        { provide: CdkVirtualScrollable, useValue: scrollable },\n        { provide: CdkVirtualScrollViewport, useClass: CdkVirtualScrollViewport },\n      ],\n    });\n\n    viewPort = virtualScrollViewportInjector.get(CdkVirtualScrollViewport);\n  }\n  viewPort._contentWrapper = contentWrapper;\n  return viewPort;\n}\n\nfunction createCdkVirtualForOfDirective<T>(\n  viewContainerRef: ViewContainerRef,\n  templateRef: TemplateRef<CdkVirtualForOfContext<T>>,\n  iterableDiffers: IterableDiffers,\n  viewRepeater: _RecycleViewRepeaterStrategy<T, T, CdkVirtualForOfContext<T>>,\n  virtualScrollViewport: CdkVirtualScrollViewport,\n  ngZone: NgZone\n) {\n  if (+ANGULAR_VERSION.major < 19) {\n    return new CdkVirtualForOf<T>(\n      viewContainerRef,\n      templateRef,\n      iterableDiffers,\n      viewRepeater,\n      virtualScrollViewport,\n      ngZone\n    );\n  } else {\n    const virtualScrollViewportInjector = Injector.create({\n      parent: inject(EnvironmentInjector),\n      providers: [{ provide: CdkVirtualScrollViewport, useValue: virtualScrollViewport }],\n    });\n\n    const cdkVirtualForInjector = Injector.create({\n      parent: virtualScrollViewportInjector,\n      providers: [\n        { provide: ViewContainerRef, useValue: viewContainerRef },\n        { provide: TemplateRef, useValue: templateRef },\n        { provide: IterableDiffers, useValue: iterableDiffers },\n        { provide: _VIEW_REPEATER_STRATEGY, useValue: viewRepeater },\n        { provide: NgZone, useValue: ngZone },\n        { provide: CdkVirtualForOf, useClass: CdkVirtualForOf },\n      ],\n    });\n\n    return cdkVirtualForInjector.get(CdkVirtualForOf);\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 { Subscription } from 'rxjs';\n\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 stateSubscription: Subscription;\n  private subscriptions: Subscription[] = [];\n\n  constructor(private el: ElementRef<HTMLElement>, private renderer: Renderer2, organizer: DatagridRenderOrganizer) {\n    this.subscriptions.push(\n      organizer.filterRenderSteps(DatagridRenderStep.CLEAR_WIDTHS).subscribe(() => this.clearWidth())\n    );\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach(sub => sub.unsubscribe());\n    if (this.stateSubscription) {\n      this.stateSubscription.unsubscribe();\n    }\n  }\n\n  resetState(state: ColumnState) {\n    this.setWidth(state);\n    this.setHidden(state);\n  }\n\n  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  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  private clearWidth() {\n    this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);\n    this.renderer.setStyle(this.el.nativeElement, 'width', null);\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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';\nimport { DatagridRowDetailRenderer } from './row-detail-renderer';\n\n@Directive({\n  selector: 'clr-dg-row',\n})\nexport class DatagridRowRenderer implements AfterContentInit, OnDestroy {\n  @ContentChildren(DatagridCellRenderer) cells: QueryList<DatagridCellRenderer>;\n  expandableRows: DatagridRowDetailRenderer[] = [];\n\n  private subscriptions: Subscription[] = [];\n\n  constructor(private columnsService: ColumnsService) {}\n\n  ngAfterContentInit() {\n    this.setCellsState(); // case #3 and #4\n    this.subscriptions.push(\n      this.cells.changes.subscribe(() => {\n        this.setCellsState(); // 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  setCellsState() {\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.resetState(this.columnsService.columns[index].value);\n        }\n      });\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  DoCheck,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  NgZone,\n  OnDestroy,\n  Output,\n  QueryList,\n  Renderer2,\n  TemplateRef,\n  ViewChild,\n  ViewChildren,\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 { ClrDatagridVirtualScrollDirective } from './datagrid-virtual-scroll.directive';\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 { CellCoordinates, 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    '[class.datagrid-virtual-scroll]': '!!virtualScroll',\n  },\n})\nexport class ClrDatagrid<T = any> implements AfterContentInit, AfterViewInit, OnDestroy, DoCheck {\n  @Input('clrLoadingMoreItems') loadingMoreItems: boolean;\n\n  @Input() clrDgSingleSelectionAriaLabel: string = this.commonStrings.keys.singleSelectionAriaLabel;\n  @Input() clrDgSingleActionableAriaLabel: string = this.commonStrings.keys.singleActionableAriaLabel;\n  @Input() clrDetailExpandableAriaLabel: string = this.commonStrings.keys.detailExpandableAriaLabel;\n\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   * The application can provide custom select all logic.\n   */\n  @Input('clrDgCustomSelectAllEnabled') customSelectAllEnabled = false;\n  @Output('clrDgCustomSelectAll') customSelectAll = new EventEmitter<boolean>();\n\n  /**\n   * Expose virtual scroll directive for applications to access its public methods\n   */\n  @ContentChildren(ClrDatagridVirtualScrollDirective) _virtualScroll: QueryList<ClrDatagridVirtualScrollDirective<any>>;\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, { emitDistinctChangesOnly: false }) rows: QueryList<ClrDatagridRow<T>>;\n\n  @ViewChild('datagrid', { read: ElementRef }) datagrid: ElementRef<HTMLElement>;\n  @ViewChild('datagridTable', { read: ElementRef }) datagridTable: ElementRef<HTMLElement>;\n  @ViewChild('datagridHeader', { read: ElementRef }) datagridHeader: ElementRef<HTMLElement>;\n  @ViewChild('contentWrapper', { read: ElementRef, static: true }) contentWrapper: ElementRef<HTMLElement>;\n  @ViewChild('rowsWrapper', { read: ElementRef, static: true }) rowsWrapper: ElementRef<HTMLElement>;\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  @ViewChild('fixedColumnTemplate') _fixedColumnTemplate: TemplateRef<any>;\n  @ViewChildren('stickyHeader', { emitDistinctChangesOnly: true }) stickyHeaders: QueryList<ElementRef>;\n\n  selectAllId: string;\n  activeCellCoords: CellCoordinates;\n\n  /* reference to the enum so that template can access */\n  SELECTION_TYPE = SelectionType;\n\n  @ViewChild('selectAllCheckbox') private selectAllCheckbox: ElementRef<HTMLInputElement>;\n\n  /**\n   * Subscriptions to all the services and queries changes\n   */\n  private _subscriptions: Subscription[] = [];\n  private _virtualScrollSubscriptions: Subscription[] = [];\n\n  private cachedRowsHeight = 0;\n  private cachedContentHeight = 0;\n  private resizeObserver: ResizeObserver = new ResizeObserver(entries => {\n    requestAnimationFrame(() => {\n      this.handleResizeChanges(entries);\n    });\n  });\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    public el: ElementRef<HTMLElement>,\n    private page: Page,\n    public commonStrings: ClrCommonStringsService,\n    public keyNavigation: KeyNavigationGridController,\n    private zone: NgZone\n  ) {\n    const datagridId = uniqueIdFactory();\n\n    this.selectAllId = 'clr-dg-select-all-' + datagridId;\n    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.trackBy = 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    if (this.customSelectAllEnabled) {\n      this.customSelectAll.emit(value);\n    } else {\n      /**\n       * This is a setter but we ignore the value.\n       * It's strange, but it lets us have an indeterminate state where only\n       * some of the items are selected.\n       */\n      this.selection.toggleAll();\n    }\n  }\n\n  get virtualScroll(): ClrDatagridVirtualScrollDirective<any> {\n    return this._virtualScroll?.get(0);\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._virtualScroll.changes.subscribe(() => {\n        this.toggleVirtualScrollSubscriptions();\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        this.updateDetailState();\n\n        // retain active cell when navigating with Up/Down Arrows, PageUp and PageDown buttons in virtual scroller\n        if (this.virtualScroll && this.activeCellCoords) {\n          this.zone.runOutsideAngular(() => {\n            const row = Array.from(this.rows).find(row => {\n              return row.el.nativeElement.children[0].ariaRowIndex === this.activeCellCoords.ariaRowIndex;\n            });\n\n            if (!row) {\n              return;\n            }\n\n            const activeCell = row.el.nativeElement.querySelectorAll(this.keyNavigation.config.keyGridCells)[\n              this.activeCellCoords.x\n            ] as HTMLElement;\n\n            this.keyNavigation.setActiveCell(activeCell);\n            this.keyNavigation.focusElement(activeCell, { preventScroll: true });\n          });\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    this.updateDetailState();\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.stickyHeaders.changes.subscribe(() => this.resize()),\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      // 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          // Inserts a fixed column if any of these conditions are true.\n          const fixedColumnConditions = [\n            this.rowActionService.hasActionableRow,\n            this.selection.selectionType !== this.SELECTION_TYPE.None,\n            this.expandableRows.hasExpandableRow || this.detailService.enabled,\n          ];\n          fixedColumnConditions\n            .filter(Boolean)\n            .forEach(() =>\n              this._projectedCalculationColumns.insert(this._fixedColumnTemplate.createEmbeddedView(null))\n            );\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    if (this.virtualScroll) {\n      this.toggleVirtualScrollSubscriptions();\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  ngDoCheck() {\n    // we track for changes on selection.current because it can happen with pushing items\n    // instead of overriding the variable\n    this.selection.checkForChanges();\n  }\n\n  ngOnDestroy() {\n    this._subscriptions.forEach((sub: Subscription) => sub.unsubscribe());\n    this._virtualScrollSubscriptions.forEach((sub: Subscription) => sub.unsubscribe());\n    this.resizeObserver.disconnect();\n  }\n\n  toggleAllSelected($event: any) {\n    $event.preventDefault();\n    this.selectAllCheckbox?.nativeElement.click();\n  }\n\n  resize(): void {\n    this.organizer.resize();\n  }\n\n  /**\n   * Checks the state of detail panel and if it's opened then\n   * find the matching row and trigger the detail panel\n   */\n  updateDetailState() {\n    // Try to update only when there is something cached and its open.\n    if (this.detailService.state && this.detailService.isOpen) {\n      const row = this.rows.find(row => this.items.trackBy(row.item) === this.items.trackBy(this.detailService.state));\n\n      /**\n       * Reopen updated row or close it\n       */\n      if (row) {\n        this.detailService.open(row.item, row.detailButton.nativeElement);\n        // always keep open when virtual scroll is available otherwise close it\n      } else if (!this.virtualScroll) {\n        // Using setTimeout to make sure the inner cycles in rows are done\n        setTimeout(() => {\n          this.detailService.close();\n        });\n      }\n    }\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  private toggleVirtualScrollSubscriptions() {\n    const hasVirtualScroll = !!this.virtualScroll;\n\n    // the virtual scroll will handle the scrolling\n    this.keyNavigation.preventScrollOnFocus = hasVirtualScroll;\n\n    if (hasVirtualScroll && this._virtualScrollSubscriptions.length === 0) {\n      // TODO: use `resizeObserver` for all datagrid variants\n      this.resizeObserver.observe(this.contentWrapper.nativeElement);\n      this.resizeObserver.observe(this.rowsWrapper.nativeElement);\n\n      this._virtualScrollSubscriptions.push(\n        fromEvent(this.contentWrapper.nativeElement, 'scroll').subscribe(() => {\n          if (this.datagridHeader.nativeElement.scrollLeft !== this.contentWrapper.nativeElement.scrollLeft) {\n            this.datagridHeader.nativeElement.scrollLeft = this.contentWrapper.nativeElement.scrollLeft;\n          }\n        }),\n        fromEvent(this.datagridHeader.nativeElement, 'scroll').subscribe(() => {\n          if (this.datagridHeader.nativeElement.scrollLeft !== this.contentWrapper.nativeElement.scrollLeft) {\n            this.contentWrapper.nativeElement.scrollLeft = this.datagridHeader.nativeElement.scrollLeft;\n          }\n        }),\n        this.keyNavigation.nextCellCoordsEmitter.subscribe(cellCoords => {\n          if (!cellCoords?.ariaRowIndex) {\n            this.activeCellCoords = null;\n            return;\n          }\n\n          if (cellCoords.ariaRowIndex === this.activeCellCoords?.ariaRowIndex) {\n            this.activeCellCoords = cellCoords;\n            return;\n          }\n\n          this.activeCellCoords = cellCoords;\n\n          // aria-rowindex is always + 1. Check virtual scroller updateAriaRowIndexes method.\n          const rowIndex = Number(cellCoords.ariaRowIndex) - 1;\n\n          this.virtualScroll.scrollToIndex(rowIndex);\n        })\n      );\n    } else if (!hasVirtualScroll) {\n      this.resizeObserver.disconnect();\n      this._virtualScrollSubscriptions.forEach((sub: Subscription) => sub.unsubscribe());\n      this._virtualScrollSubscriptions = [];\n    }\n  }\n\n  private handleResizeChanges(entries: ResizeObserverEntry[]) {\n    const rowsWrapper = this.rowsWrapper.nativeElement;\n\n    for (const entry of entries) {\n      if (entry.target === this.contentWrapper.nativeElement) {\n        this.cachedContentHeight = entry.contentRect.height;\n      }\n      if (entry.target === rowsWrapper) {\n        this.cachedRowsHeight = entry.contentRect.height;\n      }\n    }\n\n    const scrollClass = 'datagrid-scrollbar-visible';\n\n    if (this.cachedRowsHeight > this.cachedContentHeight) {\n      this.renderer.addClass(rowsWrapper, scrollClass);\n    } else {\n      this.renderer.removeClass(rowsWrapper, scrollClass);\n    }\n  }\n}\n","<!--\n  ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n  ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n  ~ This software 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\" #datagridHeader>\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                    #stickyHeader\n                    role=\"columnheader\"\n                    class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n                    *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n                    (keydown.space)=\"toggleAllSelected($event)\"\n                  >\n                    <div *ngIf=\"!virtualScroll || customSelectAllEnabled\" 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                        #selectAllCheckbox\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                    #stickyHeader\n                    role=\"columnheader\"\n                    class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n                    *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n                  >\n                    <div class=\"clr-sr-only\">{{clrDgSingleSelectionAriaLabel}}</div>\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                    #stickyHeader\n                    role=\"columnheader\"\n                    class=\"datagrid-column datagrid-row-actions datagrid-fixed-column\"\n                    *ngIf=\"rowActionService.hasActionableRow\"\n                  >\n                    <div class=\"clr-sr-only\">{{clrDgSingleActionableAriaLabel}}</div>\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                    #stickyHeader\n                    role=\"columnheader\"\n                    class=\"datagrid-column datagrid-expandable-caret datagrid-fixed-column\"\n                    *ngIf=\"expandableRows.hasExpandableRow || detailService.enabled\"\n                  >\n                    <div class=\"clr-sr-only\">{{clrDetailExpandableAriaLabel}}</div>\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 *ngIf=\"virtualScroll\" class=\"datagrid-row-sticky datagrid-row-sticky-scroll\">\n                  <div class=\"datagrid-column\"></div>\n                </div>\n              </div>\n            </div>\n          </div>\n\n          <div class=\"datagrid-content\" [class.datagrid-content-virtual]=\"virtualScroll\" #contentWrapper>\n            <div\n              *ngIf=\"virtualScroll\"\n              class=\"datagrid-content-virtual-spacer\"\n              [style.height]=\"virtualScroll?.totalContentHeight\"\n            ></div>\n            <div role=\"presentation\" #rowsWrapper class=\"datagrid-rows\">\n              <clr-dg-row class=\"datagrid-row-loading\" *ngIf=\"loadingMoreItems\">\n                <clr-dg-cell>\n                  <clr-spinner clrMedium></clr-spinner>\n                  <span>{{ commonStrings.keys.loading }}</span>\n                </clr-dg-cell>\n              </clr-dg-row>\n\n              <ng-container #displayedRows></ng-container>\n\n              <clr-dg-row class=\"datagrid-row-loading\" *ngIf=\"loadingMoreItems\">\n                <clr-dg-cell>\n                  <clr-spinner clrMedium></clr-spinner>\n                  <span>{{ commonStrings.keys.loading }}</span>\n                </clr-dg-cell>\n              </clr-dg-row>\n\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      </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<ng-template #fixedColumnTemplate>\n  <div class=\"datagrid-column datagrid-fixed-column\"></div>\n</ng-template>\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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, EventEmitter, Inject, Input, OnDestroy, Output, PLATFORM_ID, ViewChild } 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      tabindex=\"-1\"\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 smartToggleService: ClrPopoverToggleService\n  ) {\n    rowActionService.register();\n    this.subscriptions.push(\n      smartToggleService.openChange.subscribe(openState => {\n        this.open = openState;\n      }),\n      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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-expanded]=\"openState\"\n      [attr.aria-haspopup]=\"'menu'\"\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 = false;\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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, ViewChild } 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 #title class=\"datagrid-detail-header-title\" 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-icon 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 implements AfterViewInit {\n  @ViewChild('title') title: ElementRef<HTMLElement>;\n\n  constructor(public detailService: DetailService, public commonStrings: ClrCommonStringsService) {}\n\n  get titleId() {\n    return `${this.detailService.id}-title`;\n  }\n\n  ngAfterViewInit(): void {\n    this.title.nativeElement.focus();\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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, Input } 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]=\"!header\"\n      class=\"datagrid-detail-pane-content\"\n      *ngIf=\"detailService.isOpen\"\n      role=\"dialog\"\n      [id]=\"detailService.id\"\n      aria-modal=\"true\"\n      [attr.aria-labelledby]=\"labelledBy\"\n      [attr.aria-label]=\"label\"\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  @Input('clrDetailAriaLabelledBy') ariaLabelledBy: string;\n  @Input('clrDetailAriaLabel') ariaLabel: string;\n\n  @ContentChild(ClrDatagridDetailHeader) header: ClrDatagridDetailHeader;\n\n  constructor(public detailService: DetailService, public commonStrings: ClrCommonStringsService) {}\n\n  get labelledBy(): string {\n    if (this.ariaLabelledBy) {\n      return this.header ? `${this.header.titleId} ${this.ariaLabelledBy}` : this.ariaLabelledBy;\n    } else if (this.ariaLabel) {\n      // If aria-label is set by the end user, do not set aria-labelledby\n      return null;\n    } else {\n      return this.header?.titleId || '';\n    }\n  }\n\n  get label(): string {\n    if (!this.ariaLabelledBy) {\n      return this.ariaLabel || null;\n    } else {\n      return null;\n    }\n  }\n\n  close(): void {\n    this.detailService.close();\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 (expandableRowsCount) {\n      expandableRowsCount.register();\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.expandableRowsCount) {\n      this.expandableRowsCount.unregister();\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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    viewContainerRef: ViewContainerRef,\n    private columnsService: ColumnsService,\n    @Optional()\n    @Inject(COLUMN_STATE)\n    private columnState: BehaviorSubject<ColumnState>\n  ) {\n    viewContainerRef.createEmbeddedView(titleTemplateRef);\n\n    if (!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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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    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  get viewContext() {\n    return { $implicit: this.detailService.state };\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      if (!this.embeddedViewRef) {\n        // Create a context forward `Proxy` that will always bind to the user-specified context,\n        // without having to re-assign it whenever changes.\n        const viewContext = this._createContextForwardProxy();\n        this.embeddedViewRef = this.viewContainer.createEmbeddedView(this.templateRef, viewContext);\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   * For a given outlet instance, we create a proxy object that delegates\n   * to the user-specified context. This allows changing, or swapping out\n   * the context object completely without having to destroy/re-create the view.\n   */\n  private _createContextForwardProxy() {\n    return new Proxy(\n      {},\n      {\n        set: (_target, prop, newValue) => {\n          if (!this.viewContext) {\n            return false;\n          }\n          return Reflect.set(this.viewContext, prop, newValue);\n        },\n        get: (_target, prop, receiver) => {\n          if (!this.viewContext) {\n            return undefined;\n          }\n          return Reflect.get(this.viewContext, prop, receiver);\n        },\n      }\n    );\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-group';\nexport * from './option-items.directive';\nexport * from './option-selected.directive';\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-single-input';\nexport * from './date-start-input';\nexport * from './date-end-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';\nexport * from './datepicker-action-buttons';\n\nexport * from './datepicker.module';\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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 './number-input';\nexport * from './number-input-container';\nexport * from './number-input.module';\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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 './file-input/index';\nexport * from './input/index';\nexport * from './number-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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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, ViewChild } from '@angular/core';\n\nimport { ClrLabel } from '../../forms';\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  @ViewChild(ClrLabel, { static: true })\n  set label(label: ClrLabel) {\n    if (label) {\n      label.disableGrid();\n    }\n  }\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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        <div class=\"pagination-pages\">\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        </div>\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<HTMLInputElement>;\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    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.toString();\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-container *ngIf=\"this.cells?.length > 0\" [ngTemplateOutlet]=\"noCells\"></ng-container>\n\n    <ng-container *ngIf=\"this.cells?.length === 0\">\n      <clr-dg-cell class=\"datagrid-container\">\n        <ng-container [ngTemplateOutlet]=\"noCells\"></ng-container>\n      </clr-dg-cell>\n    </ng-container>\n\n    <ng-template #noCells>\n      <ng-content></ng-content>\n    </ng-template>\n    <div class=\"clr-sr-only\">{{ endOfExpandableContentAriaText }}</div>\n  `,\n  host: {\n    '[class.datagrid-row-flex]': 'true',\n    '[class.datagrid-row-detail]': 'true',\n    '[attr.id]': 'expand.expandableId',\n    role: 'row',\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} ${this.commonStrings.keys.datagridExpandableRowContent}`\n    );\n  }\n\n  get endOfExpandableContentAriaText() {\n    return (\n      this._endOfExpandableContentAriaText ||\n      `${this.commonStrings.keys.datagridExpandableEndOf} ${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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 { 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<HTMLElement>,\n    private renderer: Renderer2,\n    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      organizer.filterRenderSteps(DatagridRenderStep.CLEAR_WIDTHS).subscribe(() => this.clearWidth())\n    );\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  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  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  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","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  ChangeDetectorRef,\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 { ClrDatagrid } from '../datagrid';\nimport { DatagridColumnChanges } from '../enums/column-changes.enum';\nimport { DatagridRenderStep } from '../enums/render-step.enum';\nimport { ColumnState, 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 { KeyNavigationGridController } from '../utils/key-navigation-grid.controller';\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) private rows: QueryList<DatagridRowRenderer>;\n\n  private _heightSet = false;\n  private shouldStabilizeColumns = true;\n  private subscriptions: Subscription[] = [];\n  private intersectionObserver: IntersectionObserver = null;\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 datagrid: ClrDatagrid,\n    private organizer: DatagridRenderOrganizer,\n    private items: Items,\n    private page: Page,\n    private el: ElementRef<HTMLElement>,\n    private renderer: Renderer2,\n    detailService: DetailService,\n    private tableSizeService: TableSizeService,\n    private columnsService: ColumnsService,\n    private ngZone: NgZone,\n    private keyNavigation: KeyNavigationGridController,\n    private changeDetectorRef: ChangeDetectorRef\n  ) {\n    this.subscriptions.push(\n      organizer.filterRenderSteps(DatagridRenderStep.COMPUTE_COLUMN_WIDTHS).subscribe(() => this.computeHeadersWidth())\n    );\n\n    this.subscriptions.push(\n      page.sizeChange.subscribe(() => {\n        if (this._heightSet) {\n          this.resetDatagridHeight();\n        }\n      })\n    );\n    this.subscriptions.push(detailService.stateChange.subscribe(state => this.toggleDetailPane(state)));\n    this.subscriptions.push(items.change.subscribe(() => (this.shouldStabilizeColumns = true)));\n  }\n\n  ngOnInit() {\n    this.columnsService.columnsStateChange.subscribe(change => this.columnStateChanged(change));\n    // Datagrid used in other components like Accordion, Tabs or wrapped in onPush component which have their content\n    // hidden by default gets initialised without being visible and breakes rendering cycle.\n    // Should run only the first time if the datagrid is not visible on first initialization.\n    if (this.el.nativeElement.offsetParent === null) {\n      this.intersectionObserver = new IntersectionObserver(([entry]) => {\n        if ((this.el.nativeElement.offsetParent || entry.isIntersecting) && this.columnsSizesStable) {\n          this.columnsSizesStable = false;\n          this.changeDetectorRef.markForCheck();\n          this.intersectionObserver.disconnect();\n        }\n      });\n      this.intersectionObserver.observe(this.el.nativeElement);\n    }\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\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    this.intersectionObserver?.disconnect();\n  }\n\n  toggleDetailPane(state: boolean) {\n    if (this.headers) {\n      if (state && !this.columnsService.hasCache()) {\n        this.columnsService.cache();\n        this.columnsService.visibleColumns.forEach((header, index) => {\n          if (index > 0) {\n            this.columnsService.emitStateChangeAt(header.columnIndex, {\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    // Sets columnIndex for each column\n    this.columnsService.columns.forEach((column, index) => {\n      this.columnsService.emitStateChange(column, { changes: [DatagridColumnChanges.INITIALIZE], columnIndex: index });\n    });\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    const height = window.getComputedStyle(this.el.nativeElement).height;\n    this.renderer.setStyle(this.el.nativeElement, 'height', height);\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    const headerWidths = this.headers.map(header => {\n      return header.getColumnWidthState();\n    });\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        ...headerWidths[index],\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  private columnStateChanged(state: ColumnState) {\n    // eslint-disable-next-line eqeqeq\n    if (!this.headers || state.columnIndex == null) {\n      return;\n    }\n    const columnIndex = state.columnIndex;\n    if (state.changes && state.changes.length) {\n      state.changes.forEach(change => {\n        switch (change) {\n          case DatagridColumnChanges.WIDTH:\n            this.headers.get(columnIndex).setWidth(state);\n            this.rows.forEach(row => {\n              if (row?.cells.length === this.columnsService.columns.length) {\n                row.cells.get(columnIndex).setWidth(state);\n                row.expandableRows.forEach(expandableRow => {\n                  expandableRow.cells.get(columnIndex)?.setWidth(state);\n                });\n              }\n            });\n            break;\n          case DatagridColumnChanges.HIDDEN:\n            this.headers.get(columnIndex).setHidden(state);\n            this.rows.forEach(row => {\n              if (row.cells && row.cells.length) {\n                row.cells.get(columnIndex).setHidden(state);\n\n                row.expandableRows.forEach(expandableRow => {\n                  expandableRow.cells.get(columnIndex)?.setHidden(state);\n                });\n              }\n            });\n            this.updateColumnSeparatorsVisibility();\n            this.keyNavigation.resetKeyGrid();\n            break;\n          case DatagridColumnChanges.INITIALIZE:\n            if (state.hideable && state.hidden) {\n              this.headers.get(columnIndex).setHidden(state);\n              this.rows.forEach(row => {\n                row.setCellsState();\n                row.expandableRows.forEach(expandableRow => {\n                  expandableRow.setCellsState();\n                });\n              });\n            }\n            break;\n          default:\n            break;\n        }\n      });\n    }\n  }\n\n  /**\n   * Triggers a whole re-rendring cycle to set column sizes, if needed.\n   */\n  private stabilizeColumns() {\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  private updateColumnSeparatorsVisibility() {\n    const visibleColumns = this.datagrid.columns.filter(column => !column.isHidden);\n    visibleColumns.forEach((column, index) => {\n      if (index === visibleColumns.length - 1) {\n        column.showSeparator = false;\n      } else if (!column.showSeparator) {\n        column.showSeparator = true;\n      }\n    });\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 { ColumnsService } from '../providers/columns.service';\nimport { DatagridRowRenderer } from './row-renderer';\n\n@Directive({\n  selector: 'clr-dg-row-detail',\n})\nexport class DatagridRowDetailRenderer extends DatagridRowRenderer implements OnDestroy {\n  constructor(private parentRow: DatagridRowRenderer, columnsService: ColumnsService) {\n    super(columnsService);\n    parentRow.expandableRows.push(this);\n  }\n\n  override ngOnDestroy() {\n    this.parentRow.expandableRows = [];\n    super.ngOnDestroy();\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 { 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 { ClrDatagridSingleSelectionValueAccessor } from './datagrid-single-selection.directive';\nimport { ClrDatagridVirtualScrollDirective } from './datagrid-virtual-scroll.directive';\nimport { DatagridCellRenderer } from './render/cell-renderer';\nimport { DatagridHeaderRenderer } from './render/header-renderer';\nimport { DatagridMainRenderer } from './render/main-renderer';\nimport { DatagridRowDetailRenderer } from './render/row-detail-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  ClrDatagridPageSize,\n  ClrDatagridPagination,\n  ClrDatagridPlaceholder,\n  ClrDatagridRow,\n  ClrDatagridRowDetail,\n  ClrDatagridSelectionCellDirective,\n  ClrDatagridVirtualScrollDirective,\n  ClrIfDetail,\n  DatagridDetailRegisterer,\n  WrappedCell,\n  WrappedColumn,\n  WrappedRow,\n  ClrDatagridSingleSelectionValueAccessor,\n\n  // Renderers\n  DatagridCellRenderer,\n  DatagridHeaderRenderer,\n  DatagridMainRenderer,\n  DatagridRowDetailRenderer,\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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\" [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\n    ? ['INPUT', 'TEXTAREA', 'BUTTON', 'A', 'SELECT', 'OPTION'].includes(targetElement.tagName)\n    : false;\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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]': 'role', // 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  role: string;\n\n  constructor(public featuresService: TreeFeaturesService<T>, @Optional() private expandService: IfExpandService) {\n    if (expandService) {\n      this.subscription = expandService.expandChange.subscribe(value => {\n        if (!value && this.parent && !featuresService.eager && 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  ngAfterContentInit() {\n    this.setAriaRoles();\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  private setAriaRoles() {\n    this.role = this.parent ? 'group' : null;\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  private _disabled: boolean;\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  get disabled() {\n    // when both parameters are undefined, double negative is needed to cast to false, otherwise will return undefined.\n    return !!(this._disabled || this.parent?.disabled);\n  }\n  set disabled(value: boolean) {\n    this._disabled = value;\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 => {\n        if (!child.disabled) {\n          child.setSelected(state, false, true);\n        }\n      });\n    }\n    if (propagateUp && this.parent) {\n      this.parent._updateSelectionFromChildren();\n    }\n  }\n\n  toggleSelection(propagate: boolean) {\n    if (this.disabled) {\n      return;\n    }\n\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          if (child.disabled) {\n            continue;\n          }\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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    '[class.disabled]': 'this._model.disabled',\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<HTMLElement>;\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 (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('clrDisabled')\n  get disabled(): boolean {\n    return this._model.disabled;\n  }\n  set disabled(value: boolean) {\n    this._model.disabled = value;\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._model.disabled = this.disabled;\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.toString());\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.disabled) {\n      return;\n    }\n\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.disabled) {\n      return;\n    }\n\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.disabled) {\n      return;\n    }\n\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-2025 Broadcom. All Rights Reserved.\n  ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n  ~ This software 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  [class.clr-form-control-disabled]=\"disabled\"\n  [attr.aria-disabled]=\"disabled\"\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    [disabled]=\"disabled\"\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      [disabled]=\"disabled\"\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\" (mouseup)=\"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> {{ariaSelected ? commonStrings.keys.selectedTreeNode : commonStrings.keys.unselectedTreeNode}}</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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  },\n})\nexport class ClrTree<T> implements AfterContentInit, OnDestroy {\n  @ContentChildren(ClrTreeNode) private rootNodes: QueryList<ClrTreeNode<T>>;\n\n  private subscriptions: Subscription[] = [];\n  private _isMultiSelectable = false;\n\n  constructor(\n    public featuresService: TreeFeaturesService<T>,\n    private focusManagerService: TreeFocusManagerService<T>,\n    private renderer: Renderer2,\n    private el: ElementRef<HTMLElement>,\n    ngZone: NgZone\n  ) {\n    const subscription = ngZone.runOutsideAngular(() =>\n      fromEvent(el.nativeElement, 'focusin').subscribe((event: FocusEvent) => {\n        if (event.target === el.nativeElement) {\n          // After discussing with the team, I've made it so that when the tree receives focus, the first visible node will be focused.\n          // This will prevent from the page scrolling abruptly to the first selected node if it exist in a deeply nested tree.\n          focusManagerService.focusFirstVisibleNode();\n          // when the first child gets focus,\n          // tree should no longer have tabindex of 0.\n          renderer.removeAttribute(el.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._isMultiSelectable;\n  }\n\n  ngAfterContentInit() {\n    this.setRootNodes();\n    this.subscriptions.push(\n      this.rootNodes.changes.subscribe(() => {\n        this.setMultiSelectable();\n\n        this.setRootNodes();\n      })\n    );\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach(sub => sub.unsubscribe());\n  }\n\n  private setMultiSelectable() {\n    if (this.featuresService.selectable && this.rootNodes.length > 0) {\n      this._isMultiSelectable = true;\n      this.renderer.setAttribute(this.el.nativeElement, 'aria-multiselectable', 'true');\n    } else {\n      this._isMultiSelectable = false;\n      this.renderer.removeAttribute(this.el.nativeElement, 'aria-multiselectable');\n    }\n  }\n\n  private setRootNodes(): void {\n    // if node has no parent, it's a root node\n    // for recursive tree, this.rootNodes registers also nested children\n    // so we have to use filter to extract the ones that are truly root nodes\n    this.focusManagerService.rootNodeModels = this.rootNodes.map(node => node._model).filter(node => !node.parent);\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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', 'neutral', 'unknown', 'loading'];\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-standard';\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 = 'warning-standard';\n        returnObj.cssClass = 'alert-warning';\n        returnObj.title = this.commonStrings.keys.warning;\n        break;\n      case 'danger':\n        returnObj.shape = 'error-standard';\n        returnObj.cssClass = 'alert-danger';\n        returnObj.title = this.commonStrings.keys.danger;\n        break;\n      case 'success':\n        returnObj.shape = 'success-standard';\n        returnObj.cssClass = 'alert-success';\n        returnObj.title = this.commonStrings.keys.success;\n        break;\n      case 'neutral':\n        returnObj.shape = 'note';\n        returnObj.cssClass = 'alert-neutral';\n        returnObj.title = this.commonStrings.keys.neutral;\n        break;\n      case 'unknown':\n        returnObj.shape = 'help';\n        returnObj.cssClass = 'alert-neutral';\n        returnObj.title = this.commonStrings.keys.unknown;\n        break;\n      case 'loading':\n        returnObj.shape = 'loading';\n        returnObj.cssClass = 'alert-neutral';\n        returnObj.title = this.commonStrings.keys.unknown;\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  Renderer2,\n} 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})\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  private _isLightweight = false;\n  private _origAlertType: string;\n\n  constructor(\n    private iconService: AlertIconAndTypesService,\n    private cdr: ChangeDetectorRef,\n    @Optional() private multiAlertService: MultiAlertService,\n    private commonStrings: ClrCommonStringsService,\n    private renderer: Renderer2,\n    private hostElement: ElementRef<HTMLElement>\n  ) {}\n\n  @Input('clrAlertLightweight')\n  get isLightweight(): boolean {\n    return this._isLightweight;\n  }\n  set isLightweight(val: boolean) {\n    this._isLightweight = val;\n\n    this.configAlertType(this._origAlertType);\n  }\n\n  @Input('clrAlertType')\n  get alertType(): string {\n    return this.iconService.alertType;\n  }\n  set alertType(val: string) {\n    this._origAlertType = val;\n\n    this.configAlertType(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\n      // CDE-1249 @HostBinding('class.alert-hidden') decoration will raise error in console https://angular.io/errors/NG0100\n      if (this._hidden) {\n        this.renderer.addClass(this.hostElement.nativeElement, 'alert-hidden');\n      } else {\n        this.renderer.removeClass(this.hostElement.nativeElement, 'alert-hidden');\n      }\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  configAlertType(val: string) {\n    this.iconService.alertType = val;\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-2025 Broadcom. All Rights Reserved.\n  ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n  ~ This software 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-sm]=\"isSmall\"\n  [class.alert-lightweight]=\"isLightweight\"\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=\"times\"></cds-icon>\n  </button>\n</div>\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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      <clr-spinner class=\"alert-spinner\" clrInline *ngIf=\"iconService.alertIconShape === 'loading'\"></clr-spinner>\n      <cds-icon\n        class=\"alert-icon\"\n        role=\"img\"\n        *ngIf=\"iconService.alertIconShape !== 'loading'\"\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n  ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n  ~ This software 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\" [attr.title]=\"commonStrings.keys.previous\"></cds-icon>\n    </button>\n  </div>\n  <div class=\"alerts-pager-text\">{{this.multiAlertService.current+1}} / {{this.multiAlertService.count}}</div>\n  <div class=\"alerts-page-up\">\n    <button class=\"alerts-pager-button\" type=\"button\" (click)=\"pageUp()\" [attr.aria-label]=\"nextAlertAriaLabel\">\n      <cds-icon shape=\"angle\" direction=\"right\" [attr.title]=\"commonStrings.keys.next\"></cds-icon>\n    </button>\n  </div>\n</div>\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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    '[class.alert-neutral]': \"this.currentAlertType == 'neutral'\",\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-2025 Broadcom. All Rights Reserved.\n  ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n  ~ This software is released under MIT license.\n  ~ The full license information can be found in LICENSE in the root directory of this project.\n  -->\n<div class=\"alerts-wrapper\">\n  <clr-alerts-pager *ngIf=\"multiAlertService.count > 1\" [clrCurrentAlertIndex]=\"currentAlertIndex\"></clr-alerts-pager>\n  <ng-content select=\"clr-alert\"></ng-content>\n</div>\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  ClarityIcons,\n  errorStandardIcon,\n  helpIcon,\n  infoStandardIcon,\n  noteIcon,\n  successStandardIcon,\n  warningStandardIcon,\n  windowCloseIcon,\n} from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrDropdownModule } from '../../popover/dropdown/dropdown.module';\nimport { ClrSpinnerModule } from '../../progress/spinner';\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, ClrSpinnerModule],\n  declarations: [CLR_ALERT_DIRECTIVES],\n  exports: [CLR_ALERT_DIRECTIVES],\n})\nexport class ClrAlertModule {\n  constructor() {\n    ClarityIcons.addIcons(\n      errorStandardIcon,\n      helpIcon,\n      infoStandardIcon,\n      noteIcon,\n      successStandardIcon,\n      warningStandardIcon,\n      windowCloseIcon\n    );\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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({ providedIn: 'root' })\nexport class ClrModalConfigurationService {\n  fadeMove = 'fadeDown';\n  backdrop = true;\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 {\n  Component,\n  ContentChild,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Output,\n  SimpleChange,\n  TemplateRef,\n  ViewChild,\n} 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 { ClrModalConfigurationService } from './modal-configuration.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('fadeMove', [\n      transition('* => fadeDown', [\n        style({ opacity: 0, transform: 'translate(0, -25%)' }),\n        animate('0.2s ease-in-out'),\n      ]),\n      transition('fadeDown => *', [\n        animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(0, -25%)' })),\n      ]),\n      transition('* => fadeLeft', [style({ opacity: 0, transform: 'translate(25%, 0)' }), animate('0.2s ease-in-out')]),\n      transition('fadeLeft => *', [animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(25%, 0)' }))]),\n      transition('* => fadeUp', [style({ opacity: 0, transform: 'translate(0, 50%)' }), animate('0.2s ease-in-out')]),\n      transition('fadeUp => *', [animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(0, 50%)' }))]),\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  @ViewChild('title') title: ElementRef<HTMLElement>;\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 = 'md';\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: string;\n\n  // presently this is only used by inline wizards\n  @Input('clrModalOverrideScrollService') bypassScrollService = false;\n\n  // Provide raw modal content. This is used by the wizard so that the same template can be rendered with and without a modal.\n  @ContentChild('clrInternalModalContentTemplate') protected readonly modalContentTemplate: TemplateRef<any>;\n\n  @ViewChild('body') private readonly bodyElementRef: ElementRef<HTMLElement>;\n\n  constructor(\n    private _scrollingService: ScrollingService,\n    public commonStrings: ClrCommonStringsService,\n    private modalStackService: ModalStackService,\n    private configuration: ClrModalConfigurationService\n  ) {}\n\n  get fadeMove(): string {\n    return this.skipAnimation ? '' : this.configuration.fadeMove;\n  }\n  set fadeMove(move: string) {\n    this.configuration.fadeMove = move;\n  }\n\n  get backdrop(): boolean {\n    return this.configuration.backdrop;\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  backdropClick(): void {\n    if (this.staticBackdrop) {\n      this.title.nativeElement.focus();\n      return;\n    }\n\n    this.close();\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  scrollTop() {\n    this.bodyElementRef.nativeElement.scrollTo(0, 0);\n  }\n}\n","<!--\n  ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n  ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n  ~ This software 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 *ngIf=\"_open\" class=\"modal\" [class.modal-full-screen]=\"size == 'full-screen'\">\n  <!--fixme: revisit when ngClass works with exit animation-->\n  <div\n    cdkTrapFocus\n    [cdkTrapFocusAutoCapture]=\"true\"\n    [@fadeMove]=\"fadeMove\"\n    (@fadeMove.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 || modalId\"\n  >\n    <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n    <!-- This wizard is tightly coupled to the modal styles, so changes here could require changes in the wizard. -->\n    <div *ngIf=\"!modalContentTemplate; else modalContentTemplate\" class=\"modal-content-wrapper\">\n      <div class=\"modal-content\">\n        <div class=\"modal-header--accessible\">\n          <ng-content select=\".leading-button\"></ng-content>\n          <div class=\"modal-title-wrapper\" #title [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 #body 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  <div [@fade] *ngIf=\"backdrop\" class=\"modal-backdrop\" aria-hidden=\"true\" (click)=\"backdropClick()\"></div>\n</div>\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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(host.nativeElement);\n\n      this.unlisteners.push(\n        renderer.listen(host.nativeElement, 'mouseup', () => {\n          // set the tabindex binding back when click is completed with mouseup\n          this.addOrRemoveTabIndex();\n        }),\n        renderer.listen(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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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: '[clrModalHost]',\n  host: { '[class.clr-modal-host]': 'true' },\n  template: `\n    <div class=\"clr-modal-host-scrollable\">\n      <ng-content></ng-content>\n    </div>\n  `,\n})\nexport class ClrModalHostComponent {}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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';\nimport { ClrModalHostComponent } from './modal-host.component';\n\nexport const CLR_MODAL_DIRECTIVES: Type<any>[] = [ClrModal, ClrModalBody, ClrModalHostComponent];\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewChild,\n} from '@angular/core';\n\nimport { ClrCommonStringsService } from '../utils';\nimport { ClrModal } from './modal';\nimport { ClrModalConfigurationService } from './modal-configuration.service';\n\n@Component({\n  selector: 'clr-side-panel',\n  templateUrl: 'side-panel.html',\n  host: {\n    '[class.side-panel]': 'true',\n  },\n})\nexport class ClrSidePanel implements OnInit, OnDestroy {\n  @Output('clrSidePanelOpenChange') openChange = new EventEmitter<boolean>(false);\n  @Input('clrSidePanelCloseButtonAriaLabel') closeButtonAriaLabel: string | undefined;\n  @Input('clrSidePanelSkipAnimation') skipAnimation = false;\n  @Input('clrSidePanelLabelledById') labelledById: string;\n  @Input('clrSidePanelStaticBackdrop') staticBackdrop = false;\n  @Input('clrSidePanelClosable') closable = true;\n  @Input('clrSidePanelPreventClose') preventClose = false;\n  @Output('clrSidePanelAlternateClose') altClose = new EventEmitter<boolean>(false);\n\n  private _pinnable = false;\n  private _pinned = false;\n  private originalStopClose: boolean;\n  private _position = 'right';\n  private _modal: ClrModal;\n  private __open = false;\n\n  private _size = 'md';\n\n  constructor(\n    private element: ElementRef<HTMLElement>,\n    private configuration: ClrModalConfigurationService,\n    public commonStrings: ClrCommonStringsService\n  ) {}\n\n  @Input('clrSidePanelOpen')\n  get _open(): boolean {\n    return this.__open;\n  }\n  set _open(open: boolean) {\n    if (open !== this.__open) {\n      this.__open = open;\n      if (this.pinned) {\n        this.updateModalState();\n      }\n    }\n  }\n\n  @Input('clrSidePanelSize')\n  get size(): string {\n    return this._size;\n  }\n\n  set size(value: string) {\n    if (!value) {\n      value = 'md';\n    }\n    if (this._size !== value) {\n      this._size = value;\n      if (this.pinned) {\n        this.updateModalState();\n      }\n    }\n  }\n\n  @Input('clrSidePanelPosition')\n  get position(): string {\n    return this._position;\n  }\n\n  set position(position: string) {\n    if (position && position !== this._position) {\n      this._position = position;\n      if (this._position === 'right') {\n        this.configuration.fadeMove = 'fadeLeft';\n      } else if (this._position === 'bottom') {\n        this.configuration.fadeMove = 'fadeUp';\n      }\n    }\n  }\n\n  @Input('clrSidePanelPinned')\n  get pinned(): boolean {\n    return this._pinned;\n  }\n\n  set pinned(pinned: boolean) {\n    this._pinned = pinned;\n    if (this.modal) {\n      this.updateModalState();\n    }\n  }\n\n  @Input()\n  get clrSidePanelBackdrop(): boolean {\n    return this.configuration.backdrop;\n  }\n\n  set clrSidePanelBackdrop(backdrop: boolean) {\n    if (backdrop !== undefined) {\n      this.configuration.backdrop = backdrop;\n    }\n  }\n\n  @Input()\n  get clrSidePanelPinnable(): boolean {\n    return this._pinnable;\n  }\n\n  set clrSidePanelPinnable(pinnable: boolean) {\n    this._pinnable = pinnable;\n  }\n\n  @ViewChild(ClrModal)\n  private get modal(): ClrModal {\n    return this._modal;\n  }\n\n  private set modal(modal: ClrModal) {\n    this._modal = modal;\n    this.originalStopClose = this.modal.stopClose;\n    this.updateModalState();\n  }\n\n  private get hostElement(): HTMLElement {\n    return (this.element.nativeElement as HTMLElement).closest('.clr-modal-host') || document.body;\n  }\n\n  @HostBinding('class.side-panel-bottom')\n  private get bottomPositionCssClass() {\n    return this.position === 'bottom';\n  }\n\n  ngOnInit(): void {\n    this.configuration.fadeMove = 'fadeLeft';\n    if (this.position === 'bottom') {\n      this.configuration.fadeMove = 'fadeUp';\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.cleanupPinnedClasses();\n  }\n\n  handleModalOpen(open: boolean) {\n    if (open) {\n      this.updateModalState();\n    } else {\n      this.cleanupPinnedClasses();\n    }\n    this.openChange.emit(open);\n  }\n\n  open() {\n    this.modal.open();\n  }\n\n  close() {\n    this.modal.close();\n  }\n\n  togglePinned() {\n    this.pinned = !this.pinned;\n  }\n\n  @HostListener('document:pointerup', ['$event'])\n  private documentClick(event: Event) {\n    if (\n      !this.element.nativeElement.contains(event.target as Node) &&\n      this.modal._open &&\n      !this.configuration.backdrop\n    ) {\n      this.modal.close();\n    }\n  }\n\n  private updateModalState() {\n    if (!this.modal) {\n      return;\n    }\n    if (this.pinned) {\n      this.modal.stopClose = true;\n      this.updatePinnedClasses();\n    } else {\n      this.modal.stopClose = this.originalStopClose;\n      this.cleanupPinnedClasses();\n    }\n  }\n\n  private cleanupPinnedClasses() {\n    [this.hostElement, document.body].forEach(host => {\n      host.classList.forEach(className => {\n        if (className.startsWith('clr-side-panel-pinned-')) {\n          host.classList.remove(className);\n        }\n      });\n    });\n  }\n\n  private updatePinnedClasses() {\n    this.cleanupPinnedClasses();\n    this.hostElement.classList.add(`clr-side-panel-pinned-${this.position}-${this.size}`);\n  }\n}\n","<clr-modal\n  [clrModalOpen]=\"_open\"\n  (clrModalOpenChange)=\"handleModalOpen($event)\"\n  [clrModalCloseButtonAriaLabel]=\"closeButtonAriaLabel\"\n  [clrModalSize]=\"size\"\n  [clrModalSkipAnimation]=\"skipAnimation\"\n  [clrModalStaticBackdrop]=\"staticBackdrop\"\n  [clrModalLabelledById]=\"labelledById\"\n  [clrModalPreventClose]=\"preventClose\"\n  [clrModalClosable]=\"closable\"\n  (clrModalAlternateClose)=\"altClose.emit($event)\"\n  [clrModalOverrideScrollService]=\"true\"\n>\n  <button\n    type=\"button\"\n    [attr.aria-label]=\"commonStrings.keys.sidePanelPin\"\n    class=\"leading-button pinnable\"\n    *ngIf=\"clrSidePanelPinnable\"\n    (click)=\"togglePinned()\"\n  >\n    <cds-icon [attr.shape]=\"pinned ? 'unpin' : 'pin'\"></cds-icon>\n  </button>\n  <div class=\"modal-title\"><ng-content select=\".side-panel-title\"></ng-content></div>\n  <div class=\"modal-body\"><ng-content select=\".side-panel-body\"></ng-content></div>\n  <div class=\"modal-footer\"><ng-content select=\".side-panel-footer\"></ng-content></div>\n</clr-modal>\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 { CdkTrapFocusModule } from '../utils/cdk/cdk-trap-focus.module';\nimport { ClrModalModule } from './modal.module';\nimport { ClrSidePanel } from './side-panel';\n\nexport const CLR_SIDEPANEL_DIRECTIVES: Type<any>[] = [ClrSidePanel];\n\n@NgModule({\n  imports: [CommonModule, CdkTrapFocusModule, ClrIconModule, ClrModalModule],\n  declarations: [CLR_SIDEPANEL_DIRECTIVES],\n  exports: [CLR_SIDEPANEL_DIRECTIVES, ClrModalModule, ClrIconModule],\n})\nexport class ClrSidePanelModule {}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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  @Input('clrColor') color: 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 _flash: boolean;\n  private _flashDanger: boolean;\n  private _compact: 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('clrCompact')\n  set clrCompact(value: boolean | string) {\n    this._compact = isBooleanAttributeSet(value);\n  }\n\n  @HostBinding('class.compact')\n  get compactClass() {\n    return this._compact;\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  @HostBinding('class.warning')\n  get warningClass() {\n    return this.color === 'warning';\n  }\n\n  @HostBinding('class.success')\n  get successClass() {\n    return this.color === 'success';\n  }\n\n  @HostBinding('class.danger')\n  get dangerClass() {\n    return this.color === '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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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', '[attr.role]': '\"list\"' },\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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', '[attr.role]': '\"listitem\"' },\n})\nexport class ClrTimelineStep {\n  @Input('clrState') state: ClrTimelineStepState = ClrTimelineStepState.NOT_STARTED;\n\n  @ContentChild(ClrTimelineStepTitle, { read: ElementRef }) stepTitle: ElementRef<HTMLElement>;\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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<void>();\n  private _nextBtnClicked = new Subject<void>();\n  private _dangerBtnClicked = new Subject<void>();\n  private _cancelBtnClicked = new Subject<void>();\n  private _finishBtnClicked = new Subject<void>();\n  private _customBtnClicked = new Subject<string>();\n\n  get previousBtnClicked(): Observable<void> {\n    return this._previousBtnClicked.asObservable();\n  }\n\n  get nextBtnClicked(): Observable<void> {\n    return this._nextBtnClicked.asObservable();\n  }\n\n  get dangerBtnClicked(): Observable<void> {\n    return this._dangerBtnClicked.asObservable();\n  }\n\n  get cancelBtnClicked(): Observable<void> {\n    return this._cancelBtnClicked.asObservable();\n  }\n\n  get finishBtnClicked(): Observable<void> {\n    return this._finishBtnClicked.asObservable();\n  }\n\n  get customBtnClicked(): Observable<string> {\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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<void>();\n\n  /**\n   * @memberof WizardNavigationService\n   */\n  private _movedToPreviousPage = new Subject<boolean>();\n\n  /**\n   * @memberof WizardNavigationService\n   */\n  private _cancelWizard = new Subject<void>();\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 = 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 = buttonService.nextBtnClicked.subscribe(() => {\n      this.checkAndCommitCurrentPage('next');\n    });\n\n    this.dangerButtonSubscription = buttonService.dangerBtnClicked.subscribe(() => {\n      this.checkAndCommitCurrentPage('danger');\n    });\n\n    this.finishButtonSubscription = buttonService.finishBtnClicked.subscribe(() => {\n      this.checkAndCommitCurrentPage('finish');\n    });\n\n    this.customButtonSubscription = buttonService.customBtnClicked.subscribe((type: string) => {\n      if (!this.wizardStopNavigation) {\n        this.currentPage.customButtonClicked.emit(type);\n      }\n    });\n\n    this.cancelButtonSubscription = 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 = 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<void> {\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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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, OnDestroy, OnInit } from '@angular/core';\nimport { startWith, Subscription, tap } from 'rxjs';\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      [attr.aria-labelledby]=\"labelledby\"\n    >\n      <div class=\"clr-wizard-stepnav-link-icon\">\n        <cds-icon\n          *ngIf=\"icon; let icon\"\n          [id]=\"stepIconId\"\n          role=\"img\"\n          class=\"clr-wizard-stepnav-link-icon\"\n          [attr.shape]=\"icon.shape\"\n          [attr.aria-label]=\"icon.label\"\n        ></cds-icon>\n      </div>\n\n      <span [id]=\"stepTextId\" class=\"clr-sr-only\">{{ commonStrings.keys.wizardStep }}</span>\n      <div [id]=\"stepNumberId\" class=\"clr-wizard-stepnav-link-page-number\">\n        <ng-content></ng-content>\n      </div>\n      <span [id]=\"stepTitleId\" class=\"clr-wizard-stepnav-link-title\">\n        <ng-template [ngTemplateOutlet]=\"page.navTitle\"></ng-template>\n      </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 implements OnInit, OnDestroy {\n  @Input('page') page: ClrWizardPage;\n\n  private subscription: Subscription;\n\n  /**\n   * This is used to prevent the steps from scrolling as the user clicks on the steps.\n   */\n  private skipNextScroll = false;\n\n  constructor(\n    public navService: WizardNavigationService,\n    public pageCollection: PageCollectionService,\n    public commonStrings: ClrCommonStringsService,\n    private readonly elementRef: ElementRef<HTMLElement>\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  protected get stepIconId() {\n    return `${this.id}-step-icon`;\n  }\n\n  protected get stepTextId() {\n    return `${this.id}-step-text`;\n  }\n\n  protected get stepNumberId() {\n    return `${this.id}-step-number`;\n  }\n\n  protected get stepTitleId() {\n    return `${this.id}-step-title`;\n  }\n\n  protected get labelledby() {\n    const textIds = [this.stepTextId, this.stepNumberId, this.stepTitleId];\n    const allIds = this.isComplete ? [this.stepIconId, ...textIds] : textIds;\n\n    return allIds.join(' ');\n  }\n\n  protected get icon(): { shape: string; label: string } | null {\n    if (this.isCurrent) {\n      return {\n        shape: 'dot-circle',\n        label: this.commonStrings.keys.wizardStepCurrent || this.commonStrings.keys.timelineStepCurrent,\n      };\n    } else if (this.hasError) {\n      return {\n        shape: 'error-standard',\n        label: this.commonStrings.keys.wizardStepError || this.commonStrings.keys.timelineStepError,\n      };\n    } else if (this.isComplete) {\n      return {\n        shape: 'success-standard',\n        label: this.commonStrings.keys.wizardStepSuccess || this.commonStrings.keys.timelineStepSuccess,\n      };\n    } else {\n      return null;\n    }\n  }\n\n  ngOnInit() {\n    this.subscription = this.ensureCurrentStepIsScrolledIntoView().subscribe();\n  }\n\n  ngOnDestroy() {\n    this.subscription?.unsubscribe();\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.skipNextScroll = true;\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  private ensureCurrentStepIsScrolledIntoView() {\n    // Don't use \"smooth\" scrolling when the wizard is first opened to avoid a delay in scrolling the current step into view.\n    // The current step when the wizard is opened might not be the first step. For example, the wizard can be closed and re-opened.\n    let scrollBehavior: ScrollBehavior = 'auto';\n\n    return this.navService.currentPageChanged.pipe(\n      startWith(this.navService.currentPage),\n      tap(currentPage => {\n        if (!this.skipNextScroll && currentPage === this.page) {\n          this.elementRef.nativeElement.scrollIntoView({ behavior: scrollBehavior, block: 'center', inline: 'center' });\n        }\n\n        scrollBehavior = 'smooth';\n        this.skipNextScroll = false;\n      })\n    );\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, Input } from '@angular/core';\n\nimport { PageCollectionService } from './providers/page-collection.service';\n\n@Component({\n  selector: 'clr-wizard-stepnav',\n  template: `\n    <nav [attr.aria-label]=\"label\">\n      <ol class=\"clr-wizard-stepnav-list\">\n        <li\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        </li>\n      </ol>\n    </nav>\n  `,\n  host: { class: 'clr-wizard-stepnav' },\n})\nexport class ClrWizardStepnav {\n  @Input() label: string;\n\n  constructor(public pageService: PageCollectionService) {}\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 { ClrModal } from '../modal/modal';\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.wizard-in-page]': 'inPage',\n    '[class.wizard-in-page--fill-content-area]': 'inPage && inPageFillContentArea',\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   * Enable \"in page\" wizard. Set using `[clrWizardInPage]` input.\n   */\n  @Input('clrWizardInPage') inPage = false;\n\n  /**\n   * Make an \"in page\" wizard fill the `.content-area`. Set using `[clrWizardInPageFillContentArea]` input.\n   * If you can't use this option, you will likely need to provide custom CSS to set the wizard's height and margins.\n   */\n  @Input('clrWizardInPageFillContentArea') inPageFillContentArea = false;\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<HTMLElement>;\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  @ViewChild('body') private readonly bodyElementRef: ElementRef<HTMLElement>;\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  @ViewChild(ClrModal) private readonly modal: ClrModal;\n\n  constructor(\n    @Inject(PLATFORM_ID) private platformId: any,\n    public 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(): boolean {\n    return this._stopModalAnimations;\n  }\n\n  ngAfterContentInit(): void {\n    this.pageCollection.pages = this.pages;\n    this.headerActionService.wizardHeaderActions = this.headerActions;\n\n    if (this.inPage) {\n      this.open();\n    }\n\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 wizard’s 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 wizard’s default\n   * checks and event emissions.\n   *\n   * The format of the expected ID parameter can be found in the return of the\n   * ClrWizardPage.id getter, usually prefixed with `clr-wizard-page-` and then either a\n   * numeric ID or the ID specified for the `ClrWizardPage` component’s `id` input.\n   */\n  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.emit();\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      // scroll to top of page in case there is long page content\n      this.bodyElementRef?.nativeElement.scrollTo(0, 0);\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-2025 Broadcom. All Rights Reserved.\n  ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n  ~ This software is released under MIT license.\n  ~ The full license information can be found in LICENSE in the root directory of this project.\n  -->\n\n<ng-container *ngIf=\"inPage; then wizardTemplate; else wizardModalTemplate\"></ng-container>\n\n<ng-template #wizardModalTemplate>\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    <ng-template #clrInternalModalContentTemplate>\n      <ng-container [ngTemplateOutlet]=\"wizardTemplate\"></ng-container>\n    </ng-template>\n  </clr-modal>\n</ng-template>\n\n<!-- This template is tightly coupled to the modal styles. -->\n<ng-template #wizardTemplate>\n  <div class=\"modal-content-wrapper\">\n    <div class=\"modal-nav clr-wizard-stepnav-wrapper\" role=\"region\">\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 [label]=\"stepnavAriaLabel\"></clr-wizard-stepnav>\n    </div>\n\n    <div class=\"modal-content\">\n      <div class=\"modal-header--accessible\">\n        <div class=\"modal-title-wrapper\" #title cdkFocusInitial tabindex=\"-1\">\n          <div\n            class=\"modal-title\"\n            role=\"heading\"\n            [attr.aria-level]=\"navService.currentPage?.pageTitle.headingLevel || 2\"\n          >\n            <span tabindex=\"-1\" #pageTitle class=\"modal-title-text\">\n              <ng-template [ngTemplateOutlet]=\"navService.currentPageTitle\"></ng-template>\n            </span>\n          </div>\n        </div>\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        <button\n          *ngIf=\"closable && !inPage\"\n          type=\"button\"\n          class=\"close\"\n          [attr.aria-label]=\"commonStrings.keys.close\"\n          (click)=\"modalCancel()\"\n        >\n          <cds-icon shape=\"window-close\"></cds-icon>\n        </button>\n      </div>\n      <div #body class=\"modal-body-wrapper\">\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>\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    </div>\n  </div>\n</ng-template>\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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, successStandardIcon } 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, successStandardIcon);\n  }\n}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is 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 { ClrSidePanelModule } from './modal/side-panel.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    ClrSidePanelModule,\n    ClrStepperModule,\n    ClrSpinnerModule,\n    ClrProgressBarModule,\n    ClrPopoverModuleNext,\n    ClrTimelineModule,\n  ],\n})\nexport class ClarityModule {}\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-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';\nexport * from './interfaces/virtual-scroll-data-range.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 { ClrDatagridVirtualScrollDirective as ÇlrDatagridVirtualScrollDirective } from './datagrid-virtual-scroll.directive';\nexport { ClrDatagridSingleSelectionValueAccessor as ÇlrDatagridSingleSelectionValueAccessor } from './datagrid-single-selection.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 { DatagridRowDetailRenderer as ÇlrDatagridRowDetailRenderer } from './render/row-detail-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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-configuration.service';\nexport * from './modal-host.component';\nexport * from './side-panel.module';\nexport * from './modal-body';\nexport * from './side-panel';\n","/*\n * Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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-2025 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software 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","i2.ButtonInGroupService","i3","FocusService","i1.ClrStopEscapePropagationDirective","i1.DomAdapter","tokenFactory","i1.IfExpandService","i1.FocusService","i1.ButtonInGroupService","i3.ClrCommonStringsService","i4.ClrDestroyService","i5.ButtonGroupFocusHandler","i7","i8.CdsIconCustomTag","i9.ClrPopoverAnchor","i10.ClrPopoverOpenCloseButton","i11.ClrPopoverContent","counter","i1.ControlIdService","i2.ContainerIdService","startWith","map","i1.NgControlService","i2.DropdownFocusHandler","i3.RootDropdownService","i4.ClrPopoverHostDirective","i1.DropdownFocusHandler","i1.ClrDropdown","i3.DropdownFocusHandler","i2.RootDropdownService","i3.FocusableItem","i2.SignpostIdService","i3.SignpostFocusManager","i2.ClrPopoverHostDirective","i4.CdsIconCustomTag","i5.ClrSignpostTrigger","POSITIONS","i1.TooltipIdService","i2.TooltipMouseService","i2.TooltipIdService","i3.TooltipMouseService","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","i3.CdsIconCustomTag","i5.ClrBreadcrumbItem","i1.ResponsiveNavigationService","i1.MainContainerWillyWonka","i2.ResponsiveNavigationService","i1.ClrStandaloneCdkTrapFocus","i3.ClrStandaloneCdkTrapFocus","i1.TemplateRefContainer","i2.IfActiveService","i2.TabsService","i1.IfActiveService","i4.ClrCommonStringsService","i5.ClrPopoverHostDirective","i8.ClrKeyFocus","i9.ClrTabOverflowContent","i1.VerticalNavService","i2.VerticalNavIconService","i3.VerticalNavGroupRegistrationService","i2.VerticalNavGroupRegistrationService","i3.VerticalNavGroupService","i4.VerticalNavService","i5.ClrCommonStringsService","i1.VerticalNavIconService","tap","i1.LocaleHelperService","i1.DateNavigationService","i2.DateNavigationService","i3.DatepickerFocusService","i4.DateIOService","i5.DateFormControlService","i6.ClrPopoverToggleService","i8.ClrDay","i2.DateIOService","i3.DateNavigationService","i4.DatepickerEnabledService","i6.FocusService","i7.DatepickerFocusService","i4.ViewManagerService","i2.ViewManagerService","i1.ViewManagerService","i3.LocaleHelperService","i6.ClrCalendar","i4.DateFormControlService","i6.ClrVerticalNav","i7.ClrVerticalNavLink","i8.ClrMonthpicker","i9.ClrYearpicker","i10.ClrDaypicker","i11.ClrDatepickerActions","i3.DatepickerEnabledService","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","i1.DateIOService","i9.ClrLabel","i6.ClrLabel","i4.ControlIdService","i1.ClrExpandableAnimation","i2.ClrExpandableAnimationDirective","i1.OutsideClick","i1.StateDebouncer","i1.Page","i2.StateDebouncer","i1.FiltersProvider","i4.KeyNavigationGridController","i5.CdkTrapFocusModule_CdkTrapFocus","i7.ClrPopoverAnchor","i8.ClrPopoverCloseButton","i9.ClrPopoverOpenCloseButton","i10.ClrPopoverContent","i2.DomAdapter","i5.ClrLabel","i6.ClrNumberInput","i7.ClrNumberInputContainer","i8","i9.ClrDatagridFilter","i6.ClrInput","i7.ClrInputContainer","i1.DatagridWillyWonka","i2.RowActionService","i1.ModalStackService","i1.DetailService","i2.ExpandableRowsCount","i2.DatagridRenderOrganizer","i4.CdkDragModule_CdkDrag","i1.Sort","i2.FiltersProvider","i3.DetailService","i8.ClrDatagridColumnSeparator","i9.DatagridNumericFilter","i10.DatagridStringFilter","i2.Sort","i3.Page","i1.Items","nbRow","i1.DatagridRenderOrganizer","i1.Selection","i9","i10.CdsIconCustomTag","i11.ClrLabel","i12.ClrRadio","i13.ClrRadioWrapper","i15.ClrExpandableAnimationDirective","i16.ClrSpinner","i17.ClrDatagridSelectionCellDirective","i18.ClrDatagridSingleSelectionValueAccessor","i4.ColumnsService","ANGULAR_VERSION","i4.StateDebouncer","i1.ColumnsService","switchMap","i9.Page","i10.ClrCommonStringsService","i11.KeyNavigationGridController","i12","i13.ClrLabel","i15.ClrSpinner","i16.ClrDatagridCell","i17.ClrDatagridPlaceholder","i18.ClrDatagridRow","i19.ClrDatagridSelectionCellDirective","i20.DatagridCellRenderer","i21.DatagridRowRenderer","i22.ActionableOompaLoompa","i23.ExpandableOompaLoompa","i8.ClrPopoverOpenCloseButton","i9.ClrPopoverContent","i10.ClrKeyFocus","i2.ColumnsService","i6.CdkTrapFocusModule_CdkTrapFocus","i9.ClrCheckbox","i10.ClrCheckboxWrapper","i11","i12.ClrPopoverAnchor","i13.ClrPopoverCloseButton","i14.ClrPopoverOpenCloseButton","i15.ClrPopoverContent","i16.ClrDatagridColumnToggleButton","i4.CdkTrapFocusModule_CdkTrapFocus","i1.ExpandableRowsCount","i2.DetailService","i3.ColumnsService","i7.ClrCheckbox","i8.ClrCheckboxWrapper","i9.ClrDatagridColumnToggle","i3.DatagridIfExpandService","i4.ExpandableRowsCount","i7.ClrDatagridCell","i8.DatagridCellRenderer","i1.ClrDatagrid","i3.Items","i4.Page","i5.DetailService","i6.TableSizeService","i7.ColumnsService","i8.KeyNavigationGridController","i1.DatagridRowRenderer","i4.ClrExpandableAnimation","i1.ClrStackView","i1.TreeFeaturesService","i4.TreeFocusManagerService","i7.RecursiveChildren","i2.TreeFocusManagerService","i4.RecursiveChildren","i1.AlertIconAndTypesService","i2.MultiAlertService","i4.ClrSpinner","i1.MultiAlertService","i3.ClrAlertsPager","i1.ScrollingService","i3.ModalStackService","i4.ClrModalConfigurationService","i1.ClrModalConfigurationService","i5.ClrModal","i6.ClrModalBody","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.CdsIconCustomTag","i10.ClrWizardStepnav"],"mappings":"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"}