@clr/angular 18.0.0-beta.1 → 18.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/fesm2022/clr-angular-button.mjs +2 -2
  2. package/fesm2022/clr-angular-button.mjs.map +1 -1
  3. package/fesm2022/clr-angular-data-datagrid.mjs +12 -26
  4. package/fesm2022/clr-angular-data-datagrid.mjs.map +1 -1
  5. package/fesm2022/clr-angular-data-tree-view.mjs +2 -2
  6. package/fesm2022/clr-angular-data-tree-view.mjs.map +1 -1
  7. package/fesm2022/clr-angular-data.mjs +13 -27
  8. package/fesm2022/clr-angular-data.mjs.map +1 -1
  9. package/fesm2022/clr-angular-emphasis-alert.mjs +2 -2
  10. package/fesm2022/clr-angular-emphasis-alert.mjs.map +1 -1
  11. package/fesm2022/clr-angular-emphasis.mjs +2 -2
  12. package/fesm2022/clr-angular-emphasis.mjs.map +1 -1
  13. package/fesm2022/clr-angular-forms-checkbox.mjs +13 -44
  14. package/fesm2022/clr-angular-forms-checkbox.mjs.map +1 -1
  15. package/fesm2022/clr-angular-forms-combobox.mjs +94 -61
  16. package/fesm2022/clr-angular-forms-combobox.mjs.map +1 -1
  17. package/fesm2022/clr-angular-forms-common.mjs +61 -58
  18. package/fesm2022/clr-angular-forms-common.mjs.map +1 -1
  19. package/fesm2022/clr-angular-forms-datalist.mjs +2 -14
  20. package/fesm2022/clr-angular-forms-datalist.mjs.map +1 -1
  21. package/fesm2022/clr-angular-forms-datepicker.mjs +16 -24
  22. package/fesm2022/clr-angular-forms-datepicker.mjs.map +1 -1
  23. package/fesm2022/clr-angular-forms-file-input.mjs +72 -55
  24. package/fesm2022/clr-angular-forms-file-input.mjs.map +1 -1
  25. package/fesm2022/clr-angular-forms-input.mjs +4 -18
  26. package/fesm2022/clr-angular-forms-input.mjs.map +1 -1
  27. package/fesm2022/clr-angular-forms-number-input.mjs +2 -14
  28. package/fesm2022/clr-angular-forms-number-input.mjs.map +1 -1
  29. package/fesm2022/clr-angular-forms-password.mjs +2 -14
  30. package/fesm2022/clr-angular-forms-password.mjs.map +1 -1
  31. package/fesm2022/clr-angular-forms-radio.mjs +13 -44
  32. package/fesm2022/clr-angular-forms-radio.mjs.map +1 -1
  33. package/fesm2022/clr-angular-forms-range.mjs +3 -16
  34. package/fesm2022/clr-angular-forms-range.mjs.map +1 -1
  35. package/fesm2022/clr-angular-forms-select.mjs +3 -16
  36. package/fesm2022/clr-angular-forms-select.mjs.map +1 -1
  37. package/fesm2022/clr-angular-forms-textarea.mjs +4 -17
  38. package/fesm2022/clr-angular-forms-textarea.mjs.map +1 -1
  39. package/fesm2022/clr-angular-forms.mjs +258 -358
  40. package/fesm2022/clr-angular-forms.mjs.map +1 -1
  41. package/fesm2022/clr-angular-modal.mjs +2 -2
  42. package/fesm2022/clr-angular-modal.mjs.map +1 -1
  43. package/fesm2022/clr-angular-popover-common.mjs +151 -85
  44. package/fesm2022/clr-angular-popover-common.mjs.map +1 -1
  45. package/fesm2022/clr-angular-popover-dropdown.mjs +7 -4
  46. package/fesm2022/clr-angular-popover-dropdown.mjs.map +1 -1
  47. package/fesm2022/clr-angular-popover-signpost.mjs +27 -12
  48. package/fesm2022/clr-angular-popover-signpost.mjs.map +1 -1
  49. package/fesm2022/clr-angular-popover-tooltip.mjs +4 -4
  50. package/fesm2022/clr-angular-popover-tooltip.mjs.map +1 -1
  51. package/fesm2022/clr-angular-popover.mjs +186 -102
  52. package/fesm2022/clr-angular-popover.mjs.map +1 -1
  53. package/fesm2022/clr-angular-stepper.mjs +4 -4
  54. package/fesm2022/clr-angular-stepper.mjs.map +1 -1
  55. package/fesm2022/clr-angular-utils.mjs +12 -47
  56. package/fesm2022/clr-angular-utils.mjs.map +1 -1
  57. package/fesm2022/clr-angular-wizard.mjs +19 -11
  58. package/fesm2022/clr-angular-wizard.mjs.map +1 -1
  59. package/fesm2022/clr-angular.mjs +491 -548
  60. package/fesm2022/clr-angular.mjs.map +1 -1
  61. package/package.json +2 -2
  62. package/popover/common/README.md +14 -12
  63. package/types/clr-angular-data-datagrid.d.ts +0 -10
  64. package/types/clr-angular-data.d.ts +0 -10
  65. package/types/clr-angular-forms-combobox.d.ts +11 -4
  66. package/types/clr-angular-forms-common.d.ts +9 -9
  67. package/types/clr-angular-forms-datepicker.d.ts +7 -0
  68. package/types/clr-angular-forms-file-input.d.ts +5 -2
  69. package/types/clr-angular-forms.d.ts +31 -15
  70. package/types/clr-angular-popover-common.d.ts +38 -13
  71. package/types/clr-angular-popover-dropdown.d.ts +2 -1
  72. package/types/clr-angular-popover-signpost.d.ts +14 -6
  73. package/types/clr-angular-popover.d.ts +52 -18
  74. package/types/clr-angular-utils.d.ts +4 -14
  75. package/types/clr-angular-wizard.d.ts +7 -4
  76. package/types/clr-angular.d.ts +91 -59
@@ -6,27 +6,27 @@ import { ClrDataModule as ClrDataModule$1 } from '@clr/angular/data';
6
6
  import { ClrEmphasisModule as ClrEmphasisModule$1 } from '@clr/angular/emphasis';
7
7
  import { ClrFormsModule as ClrFormsModule$1 } from '@clr/angular/forms';
8
8
  import * as i5 from '@clr/angular/icon';
9
- import { ClrIcon as ClrIcon$1, ClrIconModule as ClrIconModule$1, ClarityIcons as ClarityIcons$1, ellipsisHorizontalIcon as ellipsisHorizontalIcon$1, ellipsisVerticalIcon as ellipsisVerticalIcon$1, viewColumnsIcon as viewColumnsIcon$1, windowCloseIcon as windowCloseIcon$1, arrowIcon as arrowIcon$1, timesIcon as timesIcon$1, stepForward2Icon as stepForward2Icon$1, angleDoubleIcon as angleDoubleIcon$1, filterGridCircleIcon as filterGridCircleIcon$1, filterGridIcon as filterGridIcon$1, angleIcon as angleIcon$1, errorStandardIcon as errorStandardIcon$1, helpIcon as helpIcon$1, infoStandardIcon as infoStandardIcon$1, noteIcon as noteIcon$1, successStandardIcon as successStandardIcon$1, warningStandardIcon as warningStandardIcon$1, exclamationCircleIcon as exclamationCircleIcon$1, checkCircleIcon as checkCircleIcon$1, eventIcon as eventIcon$1, calendarIcon as calendarIcon$1, folderOpenIcon as folderOpenIcon$1, minusIcon as minusIcon$1, plusIcon as plusIcon$1, eyeHideIcon as eyeHideIcon$1, eyeIcon as eyeIcon$1, infoCircleIcon as infoCircleIcon$1, circleIcon as circleIcon$1, dotCircleIcon as dotCircleIcon$1 } from '@clr/angular/icon';
9
+ import { ClrIcon as ClrIcon$1, ClrIconModule as ClrIconModule$1, ClarityIcons as ClarityIcons$1, ellipsisHorizontalIcon as ellipsisHorizontalIcon$1, ellipsisVerticalIcon as ellipsisVerticalIcon$1, viewColumnsIcon as viewColumnsIcon$1, windowCloseIcon as windowCloseIcon$1, arrowIcon as arrowIcon$1, timesIcon as timesIcon$1, stepForward2Icon as stepForward2Icon$1, angleDoubleIcon as angleDoubleIcon$1, filterGridCircleIcon as filterGridCircleIcon$1, filterGridIcon as filterGridIcon$1, angleIcon as angleIcon$1, errorStandardIcon as errorStandardIcon$1, helpIcon as helpIcon$1, infoStandardIcon as infoStandardIcon$1, noteIcon as noteIcon$1, successStandardIcon as successStandardIcon$1, warningStandardIcon as warningStandardIcon$1, eventIcon as eventIcon$1, calendarIcon as calendarIcon$1, folderOpenIcon as folderOpenIcon$1, minusIcon as minusIcon$1, plusIcon as plusIcon$1, eyeHideIcon as eyeHideIcon$1, eyeIcon as eyeIcon$1, infoCircleIcon as infoCircleIcon$1, circleIcon as circleIcon$1, dotCircleIcon as dotCircleIcon$1 } from '@clr/angular/icon';
10
10
  import { ClrLayoutModule as ClrLayoutModule$1 } from '@clr/angular/layout';
11
11
  import * as i1$3 from '@clr/angular/modal';
12
12
  import { ClrModalModule as ClrModalModule$1, ClrSidePanelModule as ClrSidePanelModule$1, ClrModal as ClrModal$1 } from '@clr/angular/modal';
13
13
  import { ClrPopoverModule as ClrPopoverModule$1 } from '@clr/angular/popover';
14
14
  import * as i2 from '@clr/angular/popover/common';
15
- import { ÇlrClrPopoverModuleNext as _lrClrPopoverModuleNext, ClrPopoverType as ClrPopoverType$1, ClrPopoverPosition as ClrPopoverPosition$1, DROPDOWN_POSITIONS as DROPDOWN_POSITIONS$1, ClrPopoverHostDirective as ClrPopoverHostDirective$1, mapPopoverKeyToPosition as mapPopoverKeyToPosition$1, POPOVER_HOST_ANCHOR as POPOVER_HOST_ANCHOR$1, ClrPopoverContent as ClrPopoverContent$1, ClrIfOpen as ClrIfOpen$1, SIGNPOST_POSITIONS as SIGNPOST_POSITIONS$1, TOOLTIP_POSITIONS as TOOLTIP_POSITIONS$1 } from '@clr/angular/popover/common';
15
+ import { ÇlrClrPopoverModuleNext as _lrClrPopoverModuleNext, ClrPopoverType as ClrPopoverType$1, ClrPopoverPosition as ClrPopoverPosition$1, DROPDOWN_POSITIONS as DROPDOWN_POSITIONS$1, ClrPopoverHostDirective as ClrPopoverHostDirective$1, mapPopoverKeyToPosition as mapPopoverKeyToPosition$1, POPOVER_HOST_ORIGIN as POPOVER_HOST_ORIGIN$1, ClrPopoverContent as ClrPopoverContent$1, ClrIfOpen as ClrIfOpen$1, SIGNPOST_POSITIONS as SIGNPOST_POSITIONS$1, TOOLTIP_POSITIONS as TOOLTIP_POSITIONS$1 } from '@clr/angular/popover/common';
16
16
  import { ClrProgressBarModule as ClrProgressBarModule$1 } from '@clr/angular/progress/progress-bars';
17
17
  import * as i14 from '@clr/angular/progress/spinner';
18
18
  import { ClrSpinnerModule as ClrSpinnerModule$1 } from '@clr/angular/progress/spinner';
19
19
  import { ClrStepperModule as ClrStepperModule$1 } from '@clr/angular/stepper';
20
20
  import { ClrTimelineModule as ClrTimelineModule$1 } from '@clr/angular/timeline';
21
21
  import * as i1$1 from '@clr/angular/utils';
22
- import { ClrLoadingModule as ClrLoadingModule$1, ClrConditionalModule as ClrConditionalModule$1, ClrFocusOnViewInitModule as ClrFocusOnViewInitModule$1, uniqueIdFactory as uniqueIdFactory$1, ClrLoadingState as ClrLoadingState$1, LoadingListener as LoadingListener$1, Linkers as Linkers$1, ClrDestroyService as ClrDestroyService$1, FOCUS_SERVICE_PROVIDER as FOCUS_SERVICE_PROVIDER$1, normalizeKey as normalizeKey$1, Keys as Keys$1, HostWrapper as HostWrapper$1, IfExpandService as IfExpandService$1, ClrExpandableAnimationDirective as ClrExpandableAnimationDirective$1, WillyWonka as WillyWonka$1, OompaLoompa as OompaLoompa$1, ClrKeyFocus as ClrKeyFocus$1, DomAdapter as DomAdapter$1, ClrIfExpanded as ClrIfExpanded$1, CdkDragModule as CdkDragModule$1, CdkTrapFocusModule as CdkTrapFocusModule$1, ClrOutsideClickModule as ClrOutsideClickModule$1, ClrExpandableAnimationModule as ClrExpandableAnimationModule$1, ClrKeyFocusModule as ClrKeyFocusModule$1, preventArrowKeyScroll as preventArrowKeyScroll$1, isKeyEitherLetterOrNumber as isKeyEitherLetterOrNumber$1, ClrHostWrappingModule as ClrHostWrappingModule$1, ArrowKeyDirection as ArrowKeyDirection$1, customFocusableItemProvider as customFocusableItemProvider$1, IF_ACTIVE_ID as IF_ACTIVE_ID$1, IF_ACTIVE_ID_PROVIDER as IF_ACTIVE_ID_PROVIDER$1, DATEPICKER_ENABLE_BREAKPOINT as DATEPICKER_ENABLE_BREAKPOINT$1, isBooleanAttributeSet as isBooleanAttributeSet$1, ClrCommonStringsService as ClrCommonStringsService$1, commonStringsDefault as commonStringsDefault$1, LARGE_BREAKPOINT as LARGE_BREAKPOINT$1, ClrStandaloneCdkTrapFocus as ClrStandaloneCdkTrapFocus$1, TemplateRefContainer as TemplateRefContainer$1, IfActiveService as IfActiveService$1, ClrTemplateRefModule as ClrTemplateRefModule$1, ScrollingService as ScrollingService$1, wrapObservable as wrapObservable$1, FocusableItem as FocusableItem$1, BASIC_FOCUSABLE_ITEM_PROVIDER as BASIC_FOCUSABLE_ITEM_PROVIDER$1, ClrPosition as ClrPosition$1, defaultAnimationTiming as defaultAnimationTiming$1, triggerAllFormControlValidation as triggerAllFormControlValidation$1 } from '@clr/angular/utils';
22
+ import { ClrLoadingModule as ClrLoadingModule$1, ClrConditionalModule as ClrConditionalModule$1, ClrFocusOnViewInitModule as ClrFocusOnViewInitModule$1, uniqueIdFactory as uniqueIdFactory$1, ClrLoadingState as ClrLoadingState$1, LoadingListener as LoadingListener$1, Linkers as Linkers$1, ClrDestroyService as ClrDestroyService$1, FOCUS_SERVICE_PROVIDER as FOCUS_SERVICE_PROVIDER$1, Keys as Keys$1, HostWrapper as HostWrapper$1, IfExpandService as IfExpandService$1, ClrExpandableAnimationDirective as ClrExpandableAnimationDirective$1, WillyWonka as WillyWonka$1, OompaLoompa as OompaLoompa$1, ClrKeyFocus as ClrKeyFocus$1, DomAdapter as DomAdapter$1, ClrIfExpanded as ClrIfExpanded$1, CdkDragModule as CdkDragModule$1, CdkTrapFocusModule as CdkTrapFocusModule$1, ClrOutsideClickModule as ClrOutsideClickModule$1, ClrExpandableAnimationModule as ClrExpandableAnimationModule$1, ClrKeyFocusModule as ClrKeyFocusModule$1, preventArrowKeyScroll as preventArrowKeyScroll$1, isKeyEitherLetterOrNumber as isKeyEitherLetterOrNumber$1, ClrHostWrappingModule as ClrHostWrappingModule$1, ArrowKeyDirection as ArrowKeyDirection$1, customFocusableItemProvider as customFocusableItemProvider$1, IF_ACTIVE_ID as IF_ACTIVE_ID$1, IF_ACTIVE_ID_PROVIDER as IF_ACTIVE_ID_PROVIDER$1, DATEPICKER_ENABLE_BREAKPOINT as DATEPICKER_ENABLE_BREAKPOINT$1, isBooleanAttributeSet as isBooleanAttributeSet$1, ClrCommonStringsService as ClrCommonStringsService$1, commonStringsDefault as commonStringsDefault$1, LARGE_BREAKPOINT as LARGE_BREAKPOINT$1, ClrStandaloneCdkTrapFocus as ClrStandaloneCdkTrapFocus$1, TemplateRefContainer as TemplateRefContainer$1, IfActiveService as IfActiveService$1, ClrTemplateRefModule as ClrTemplateRefModule$1, ScrollingService as ScrollingService$1, wrapObservable as wrapObservable$1, FocusableItem as FocusableItem$1, BASIC_FOCUSABLE_ITEM_PROVIDER as BASIC_FOCUSABLE_ITEM_PROVIDER$1, ClrPosition as ClrPosition$1, defaultAnimationTiming as defaultAnimationTiming$1, triggerAllFormControlValidation as triggerAllFormControlValidation$1 } from '@clr/angular/utils';
23
23
  import { ClrWizardModule as ClrWizardModule$1 } from '@clr/angular/wizard';
24
24
  import * as i1$2 from '@angular/common';
25
25
  import { CommonModule, isPlatformBrowser, NgForOf, getLocaleDayNames, FormStyle, TranslationWidth, getLocaleMonthNames, getLocaleFirstDayOfWeek, getLocaleDateFormat, FormatWidth } from '@angular/common';
26
26
  import * as i1 from '@angular/router';
27
27
  import { RouterModule } from '@angular/router';
28
28
  import * as i2$2 from 'rxjs';
29
- import { Subject, BehaviorSubject, fromEvent, ReplaySubject, combineLatest, merge, of, isObservable, tap, Observable, startWith as startWith$1 } from 'rxjs';
29
+ import { Subject, BehaviorSubject, fromEvent, ReplaySubject, combineLatest, merge, of, isObservable, tap, timer, switchMap as switchMap$1, Observable, startWith as startWith$1 } from 'rxjs';
30
30
  import { takeUntil, filter, delay, debounceTime, map, switchMap, startWith, take, first, tap as tap$1, distinctUntilChanged, skipUntil } from 'rxjs/operators';
31
31
  import * as i2$3 from '@angular/animations';
32
32
  import { trigger, transition, style, animate, keyframes, state, animation, useAnimation } from '@angular/animations';
@@ -581,11 +581,11 @@ class ClrButtonGroup {
581
581
  });
582
582
  }
583
583
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrButtonGroup, deps: [{ token: ButtonInGroupService }, { token: i2.ClrPopoverService }, { token: i1$1.ClrCommonStringsService }, { token: i1$1.ClrDestroyService }, { token: ButtonGroupFocusHandler }], target: i0.ɵɵFactoryTarget.Component }); }
584
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrButtonGroup, isStandalone: false, selector: "clr-button-group", inputs: { clrToggleButtonAriaLabel: "clrToggleButtonAriaLabel", menuPosition: ["clrMenuPosition", "menuPosition"] }, host: { properties: { "class.btn-group": "true" } }, providers: [ButtonInGroupService, ClrDestroyService$1, BUTTON_GROUP_FOCUS_HANDLER_PROVIDER, FOCUS_SERVICE_PROVIDER$1], queries: [{ propertyName: "buttons", predicate: ClrButton }], viewQueries: [{ propertyName: "menuToggle", first: true, predicate: ["menuToggle"], descendants: true }, { propertyName: "menu", first: true, predicate: ["menu"], descendants: true }], hostDirectives: [{ directive: i2.ClrPopoverHostDirective }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software 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@for (inlineButton of inlineButtons; track inlineButton) {\n<ng-template [ngTemplateOutlet]=\"inlineButton.templateRef\"></ng-template>\n} @if (menuButtons.length > 0) {\n<div 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 menuPosition; type: popoverType; outsideClickToClose: true; scrollToClose: true\"\n >\n @for (menuButton of menuButtons; track menuButton) {\n <ng-template [ngTemplateOutlet]=\"menuButton.templateRef\"></ng-template>\n }\n </div>\n</div>\n}\n", dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "directive", type: i2.ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { kind: "directive", type: i2.ÇlrClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { kind: "directive", type: i2.ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentAvailablePositions", "clrPopoverContentType", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }] }); }
584
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrButtonGroup, isStandalone: false, selector: "clr-button-group", inputs: { clrToggleButtonAriaLabel: "clrToggleButtonAriaLabel", menuPosition: ["clrMenuPosition", "menuPosition"] }, host: { properties: { "class.btn-group": "true" } }, providers: [ButtonInGroupService, ClrDestroyService$1, BUTTON_GROUP_FOCUS_HANDLER_PROVIDER, FOCUS_SERVICE_PROVIDER$1], queries: [{ propertyName: "buttons", predicate: ClrButton }], viewQueries: [{ propertyName: "menuToggle", first: true, predicate: ["menuToggle"], descendants: true }, { propertyName: "menu", first: true, predicate: ["menu"], descendants: true }], hostDirectives: [{ directive: i2.ClrPopoverHostDirective }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software 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@for (inlineButton of inlineButtons; track inlineButton) {\n<ng-template [ngTemplateOutlet]=\"inlineButton.templateRef\"></ng-template>\n} @if (menuButtons.length > 0) {\n<div class=\"btn-group-overflow open\" [ngClass]=\"menuPosition\">\n <button\n #menuToggle\n class=\"btn dropdown-toggle\"\n clrPopoverOrigin\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 menuPosition; type: popoverType; outsideClickToClose: true; scrollToClose: true\"\n >\n @for (menuButton of menuButtons; track menuButton) {\n <ng-template [ngTemplateOutlet]=\"menuButton.templateRef\"></ng-template>\n }\n </div>\n</div>\n}\n", dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "directive", type: i2.ClrPopoverOrigin, selector: "[clrPopoverOrigin]" }, { kind: "directive", type: i2.ÇlrClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { kind: "directive", type: i2.ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentAvailablePositions", "clrPopoverContentType", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose", "clrPopoverContentOrigin"] }] }); }
585
585
  }
586
586
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrButtonGroup, decorators: [{
587
587
  type: Component,
588
- args: [{ selector: 'clr-button-group', providers: [ButtonInGroupService, ClrDestroyService$1, BUTTON_GROUP_FOCUS_HANDLER_PROVIDER, FOCUS_SERVICE_PROVIDER$1], hostDirectives: [ClrPopoverHostDirective$1], host: { '[class.btn-group]': 'true' }, standalone: false, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software 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@for (inlineButton of inlineButtons; track inlineButton) {\n<ng-template [ngTemplateOutlet]=\"inlineButton.templateRef\"></ng-template>\n} @if (menuButtons.length > 0) {\n<div 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 menuPosition; type: popoverType; outsideClickToClose: true; scrollToClose: true\"\n >\n @for (menuButton of menuButtons; track menuButton) {\n <ng-template [ngTemplateOutlet]=\"menuButton.templateRef\"></ng-template>\n }\n </div>\n</div>\n}\n" }]
588
+ args: [{ selector: 'clr-button-group', providers: [ButtonInGroupService, ClrDestroyService$1, BUTTON_GROUP_FOCUS_HANDLER_PROVIDER, FOCUS_SERVICE_PROVIDER$1], hostDirectives: [ClrPopoverHostDirective$1], host: { '[class.btn-group]': 'true' }, standalone: false, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software 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@for (inlineButton of inlineButtons; track inlineButton) {\n<ng-template [ngTemplateOutlet]=\"inlineButton.templateRef\"></ng-template>\n} @if (menuButtons.length > 0) {\n<div class=\"btn-group-overflow open\" [ngClass]=\"menuPosition\">\n <button\n #menuToggle\n class=\"btn dropdown-toggle\"\n clrPopoverOrigin\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 menuPosition; type: popoverType; outsideClickToClose: true; scrollToClose: true\"\n >\n @for (menuButton of menuButtons; track menuButton) {\n <ng-template [ngTemplateOutlet]=\"menuButton.templateRef\"></ng-template>\n }\n </div>\n</div>\n}\n" }]
589
589
  }], ctorParameters: () => [{ type: ButtonInGroupService }, { type: i2.ClrPopoverService }, { type: i1$1.ClrCommonStringsService }, { type: i1$1.ClrDestroyService }, { type: ButtonGroupFocusHandler }], propDecorators: { clrToggleButtonAriaLabel: [{
590
590
  type: Input,
591
591
  args: ['clrToggleButtonAriaLabel']
@@ -1220,10 +1220,6 @@ class CustomFilter {
1220
1220
  * This software is released under MIT license.
1221
1221
  * The full license information can be found in LICENSE in the root directory of this project.
1222
1222
  */
1223
- // @TODO The top two are not used now, which is probably a performance drag that was broken along the way.
1224
- // There was a previous pattern to hide everything to do computation then display, for Firefox, needs revisiting.
1225
- const NO_LAYOUT_CLASS = 'datagrid-no-layout';
1226
- const COMPUTE_WIDTH_CLASS = 'datagrid-computing-columns-width';
1227
1223
  const STRICT_WIDTH_CLASS = 'datagrid-fixed-width';
1228
1224
  const HIDDEN_COLUMN_CLASS = 'datagrid-hidden-column';
1229
1225
 
@@ -2000,10 +1996,10 @@ class ClrDatagridColumnSeparator {
2000
1996
  }
2001
1997
  }
2002
1998
  isArrowLeftKeyEvent(event) {
2003
- return normalizeKey$1(event.key) === Keys$1.ArrowLeft;
1999
+ return event.key === Keys$1.ArrowLeft;
2004
2000
  }
2005
2001
  isArrowRightKeyEvent(event) {
2006
- return normalizeKey$1(event.key) === Keys$1.ArrowRight;
2002
+ return event.key === Keys$1.ArrowRight;
2007
2003
  }
2008
2004
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDatagridColumnSeparator, deps: [{ token: ColumnResizerService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: TableSizeService }, { token: i1$1.ClrCommonStringsService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
2009
2005
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrDatagridColumnSeparator, isStandalone: false, selector: "clr-dg-column-separator", host: { properties: { "class.datagrid-column-separator": "true" } }, viewQueries: [{ propertyName: "resizeTrackerRef", first: true, predicate: ["resizeTracker"], descendants: true }, { propertyName: "columnHandleRef", first: true, predicate: ["columnHandle"], descendants: true }], ngImport: i0, template: `
@@ -2815,7 +2811,7 @@ class ClrDatagridFilter extends DatagridFilterRegistrar {
2815
2811
  #anchor
2816
2812
  [attr.aria-expanded]="ariaExpanded"
2817
2813
  [attr.aria-controls]="popoverId"
2818
- clrPopoverAnchor
2814
+ clrPopoverOrigin
2819
2815
  clrPopoverOpenCloseButton
2820
2816
  [class.datagrid-filter-open]="open"
2821
2817
  [class.datagrid-filtered]="active"
@@ -2843,7 +2839,7 @@ class ClrDatagridFilter extends DatagridFilterRegistrar {
2843
2839
 
2844
2840
  <ng-content></ng-content>
2845
2841
  </div>
2846
- `, isInline: true, dependencies: [{ kind: "directive", type: i1$1.CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]" }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "directive", type: i2.ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { kind: "directive", type: i2.ÇlrClrPopoverCloseButton, selector: "[clrPopoverCloseButton]", outputs: ["clrPopoverOnCloseChange"] }, { kind: "directive", type: i2.ÇlrClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { kind: "directive", type: i2.ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentAvailablePositions", "clrPopoverContentType", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }] }); }
2842
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1$1.CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]" }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "directive", type: i2.ClrPopoverOrigin, selector: "[clrPopoverOrigin]" }, { kind: "directive", type: i2.ÇlrClrPopoverCloseButton, selector: "[clrPopoverCloseButton]", outputs: ["clrPopoverOnCloseChange"] }, { kind: "directive", type: i2.ÇlrClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { kind: "directive", type: i2.ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentAvailablePositions", "clrPopoverContentType", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose", "clrPopoverContentOrigin"] }] }); }
2847
2843
  }
2848
2844
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDatagridFilter, decorators: [{
2849
2845
  type: Component,
@@ -2858,7 +2854,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
2858
2854
  #anchor
2859
2855
  [attr.aria-expanded]="ariaExpanded"
2860
2856
  [attr.aria-controls]="popoverId"
2861
- clrPopoverAnchor
2857
+ clrPopoverOrigin
2862
2858
  clrPopoverOpenCloseButton
2863
2859
  [class.datagrid-filter-open]="open"
2864
2860
  [class.datagrid-filtered]="active"
@@ -6328,7 +6324,7 @@ class ClrDatagridActionOverflow {
6328
6324
  [attr.aria-controls]="popoverId"
6329
6325
  [attr.aria-expanded]="open"
6330
6326
  [attr.aria-label]="buttonLabel || commonStrings.keys.rowActions"
6331
- clrPopoverAnchor
6327
+ clrPopoverOrigin
6332
6328
  clrPopoverOpenCloseButton
6333
6329
  >
6334
6330
  <cds-icon shape="ellipsis-vertical" [attr.title]="buttonLabel || commonStrings.keys.rowActions"></cds-icon>
@@ -6352,7 +6348,7 @@ class ClrDatagridActionOverflow {
6352
6348
  >
6353
6349
  <ng-content></ng-content>
6354
6350
  </div>
6355
- `, isInline: true, dependencies: [{ kind: "directive", type: i1$1.CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]" }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "directive", type: i2.ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { kind: "directive", type: i2.ÇlrClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { kind: "directive", type: i2.ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentAvailablePositions", "clrPopoverContentType", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }, { kind: "component", type: i1$1.ClrKeyFocus, selector: "[clrKeyFocus]", inputs: ["clrDirection", "clrFocusOnLoad", "clrKeyFocus"], outputs: ["clrFocusChange"] }] }); }
6351
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1$1.CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]" }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "directive", type: i2.ClrPopoverOrigin, selector: "[clrPopoverOrigin]" }, { kind: "directive", type: i2.ÇlrClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { kind: "directive", type: i2.ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentAvailablePositions", "clrPopoverContentType", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose", "clrPopoverContentOrigin"] }, { kind: "component", type: i1$1.ClrKeyFocus, selector: "[clrKeyFocus]", inputs: ["clrDirection", "clrFocusOnLoad", "clrKeyFocus"], outputs: ["clrFocusChange"] }] }); }
6356
6352
  }
6357
6353
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDatagridActionOverflow, decorators: [{
6358
6354
  type: Component,
@@ -6370,7 +6366,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
6370
6366
  [attr.aria-controls]="popoverId"
6371
6367
  [attr.aria-expanded]="open"
6372
6368
  [attr.aria-label]="buttonLabel || commonStrings.keys.rowActions"
6373
- clrPopoverAnchor
6369
+ clrPopoverOrigin
6374
6370
  clrPopoverOpenCloseButton
6375
6371
  >
6376
6372
  <cds-icon shape="ellipsis-vertical" [attr.title]="buttonLabel || commonStrings.keys.rowActions"></cds-icon>
@@ -6540,7 +6536,7 @@ class ClrDatagridColumnToggle {
6540
6536
  role="button"
6541
6537
  type="button"
6542
6538
  class="btn btn-sm column-toggle-action"
6543
- clrPopoverAnchor
6539
+ clrPopoverOrigin
6544
6540
  clrPopoverOpenCloseButton
6545
6541
  [attr.aria-controls]="popoverId"
6546
6542
  [attr.aria-expanded]="openState"
@@ -6598,7 +6594,7 @@ class ClrDatagridColumnToggle {
6598
6594
  <clr-dg-column-toggle-button (clrAllSelected)="allColumnsSelected()"></clr-dg-column-toggle-button>
6599
6595
  </div>
6600
6596
  </div>
6601
- `, isInline: true, dependencies: [{ kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]" }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "directive", type: i1$4.ClrControlLabel, selector: "label", inputs: ["id", "for"] }, { kind: "directive", type: i7.ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { kind: "component", type: i7.ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }, { kind: "directive", type: i1$5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { kind: "directive", type: i2.ÇlrClrPopoverCloseButton, selector: "[clrPopoverCloseButton]", outputs: ["clrPopoverOnCloseChange"] }, { kind: "directive", type: i2.ÇlrClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { kind: "directive", type: i2.ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentAvailablePositions", "clrPopoverContentType", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }, { kind: "component", type: ClrDatagridColumnToggleButton, selector: "clr-dg-column-toggle-button", outputs: ["clrAllSelected"] }] }); }
6597
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]" }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "directive", type: i1$4.ClrControlLabel, selector: "label", inputs: ["id", "for"] }, { kind: "directive", type: i7.ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { kind: "component", type: i7.ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }, { kind: "directive", type: i1$5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.ClrPopoverOrigin, selector: "[clrPopoverOrigin]" }, { kind: "directive", type: i2.ÇlrClrPopoverCloseButton, selector: "[clrPopoverCloseButton]", outputs: ["clrPopoverOnCloseChange"] }, { kind: "directive", type: i2.ÇlrClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { kind: "directive", type: i2.ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentAvailablePositions", "clrPopoverContentType", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose", "clrPopoverContentOrigin"] }, { kind: "component", type: ClrDatagridColumnToggleButton, selector: "clr-dg-column-toggle-button", outputs: ["clrAllSelected"] }] }); }
6602
6598
  }
6603
6599
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDatagridColumnToggle, decorators: [{
6604
6600
  type: Component,
@@ -6609,7 +6605,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
6609
6605
  role="button"
6610
6606
  type="button"
6611
6607
  class="btn btn-sm column-toggle-action"
6612
- clrPopoverAnchor
6608
+ clrPopoverOrigin
6613
6609
  clrPopoverOpenCloseButton
6614
6610
  [attr.aria-controls]="popoverId"
6615
6611
  [attr.aria-expanded]="openState"
@@ -8061,16 +8057,6 @@ class DatagridMainRenderer {
8061
8057
  }
8062
8058
  return false;
8063
8059
  }
8064
- /**
8065
- * Computes the height of the datagrid.
8066
- *
8067
- * NOTE: We had to choose to set the height instead of the min-height because
8068
- * IE 11 requires the height on the parent for the children flex grow/shrink properties to work.
8069
- * When we used min-height, 1 1 auto doesn't used to work in IE11 :-(
8070
- * But this doesn't affect the fix. It works in both fixed & variable height datagrids.
8071
- *
8072
- * Refer: http://stackoverflow.com/questions/24396205/flex-grow-not-working-in-internet-explorer-11-0
8073
- */
8074
8060
  computeDatagridHeight() {
8075
8061
  const height = window.getComputedStyle(this.el.nativeElement).height;
8076
8062
  this.renderer.setStyle(this.el.nativeElement, 'height', height);
@@ -9097,7 +9083,7 @@ class ClrTreeNode {
9097
9083
  // By default, pressing arrow key makes AT focus go into the nested content of the item.
9098
9084
  preventArrowKeyScroll$1(event);
9099
9085
  // https://www.w3.org/TR/wai-aria-practices-1.1/#keyboard-interaction-22
9100
- switch (normalizeKey$1(event.key)) {
9086
+ switch (event.key) {
9101
9087
  case Keys$1.ArrowUp:
9102
9088
  this.focusManager.focusNodeAbove(this._model);
9103
9089
  break;
@@ -10509,8 +10495,8 @@ class ClrAlerts {
10509
10495
  }
10510
10496
  ngAfterContentInit() {
10511
10497
  this.subscriptions.push(this.multiAlertService.changes.subscribe(index => {
10512
- this.currentAlertIndexChange.next(index);
10513
- this.currentAlertChange.next(this.multiAlertService.currentAlert);
10498
+ this.currentAlertIndexChange.emit(index);
10499
+ this.currentAlertChange.emit(this.multiAlertService.currentAlert);
10514
10500
  }));
10515
10501
  }
10516
10502
  ngOnDestroy() {
@@ -10864,16 +10850,25 @@ class ClrControlError extends ClrAbstractControl {
10864
10850
  this.controlIdSuffix = CONTROL_SUFFIX.ERROR;
10865
10851
  }
10866
10852
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrControlError, deps: [{ token: ControlIdService, optional: true }, { token: ContainerIdService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
10867
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrControlError, isStandalone: false, selector: "clr-control-error", host: { properties: { "class.clr-subtext": "true", "class.error": "true", "attr.id": "id" } }, usesInheritance: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
10853
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrControlError, isStandalone: false, selector: "clr-control-error", host: { properties: { "class.clr-subtext-wrapper": "true", "attr.id": "id" } }, usesInheritance: true, ngImport: i0, template: `
10854
+ <cds-icon class="clr-validate-icon" shape="error-standard" status="danger" aria-hidden="true"></cds-icon>
10855
+ <span class="clr-subtext error">
10856
+ <ng-content></ng-content>
10857
+ </span>
10858
+ `, isInline: true, dependencies: [{ kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }] }); }
10868
10859
  }
10869
10860
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrControlError, decorators: [{
10870
10861
  type: Component,
10871
10862
  args: [{
10872
10863
  selector: 'clr-control-error',
10873
- template: `<ng-content></ng-content>`,
10864
+ template: `
10865
+ <cds-icon class="clr-validate-icon" shape="error-standard" status="danger" aria-hidden="true"></cds-icon>
10866
+ <span class="clr-subtext error">
10867
+ <ng-content></ng-content>
10868
+ </span>
10869
+ `,
10874
10870
  host: {
10875
- '[class.clr-subtext]': 'true',
10876
- '[class.error]': 'true',
10871
+ '[class.clr-subtext-wrapper]': 'true',
10877
10872
  '[attr.id]': 'id',
10878
10873
  },
10879
10874
  standalone: false,
@@ -10917,6 +10912,49 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
10917
10912
  type: Optional
10918
10913
  }] }] });
10919
10914
 
10915
+ /*
10916
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
10917
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
10918
+ * This software is released under MIT license.
10919
+ * The full license information can be found in LICENSE in the root directory of this project.
10920
+ */
10921
+ class ClrControlSuccess extends ClrAbstractControl {
10922
+ constructor(controlIdService, containerIdService) {
10923
+ super(controlIdService, containerIdService);
10924
+ this.controlIdService = controlIdService;
10925
+ this.containerIdService = containerIdService;
10926
+ this.controlIdSuffix = CONTROL_SUFFIX.SUCCESS;
10927
+ }
10928
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrControlSuccess, deps: [{ token: ControlIdService, optional: true }, { token: ContainerIdService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
10929
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrControlSuccess, isStandalone: false, selector: "clr-control-success", host: { properties: { "class.clr-subtext-wrapper": "true", "attr.id": "id" } }, usesInheritance: true, ngImport: i0, template: `
10930
+ <cds-icon class="clr-validate-icon" shape="success-standard" status="success" aria-hidden="true"></cds-icon>
10931
+ <span class="clr-subtext success">
10932
+ <ng-content></ng-content>
10933
+ </span>
10934
+ `, isInline: true, dependencies: [{ kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }] }); }
10935
+ }
10936
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrControlSuccess, decorators: [{
10937
+ type: Component,
10938
+ args: [{
10939
+ selector: 'clr-control-success',
10940
+ template: `
10941
+ <cds-icon class="clr-validate-icon" shape="success-standard" status="success" aria-hidden="true"></cds-icon>
10942
+ <span class="clr-subtext success">
10943
+ <ng-content></ng-content>
10944
+ </span>
10945
+ `,
10946
+ host: {
10947
+ '[class.clr-subtext-wrapper]': 'true',
10948
+ '[attr.id]': 'id',
10949
+ },
10950
+ standalone: false,
10951
+ }]
10952
+ }], ctorParameters: () => [{ type: ControlIdService, decorators: [{
10953
+ type: Optional
10954
+ }] }, { type: ContainerIdService, decorators: [{
10955
+ type: Optional
10956
+ }] }] });
10957
+
10920
10958
  /*
10921
10959
  * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
10922
10960
  * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
@@ -10946,10 +10984,7 @@ class LayoutService {
10946
10984
  this.minLabelSize = 1;
10947
10985
  this.maxLabelSize = 12;
10948
10986
  this.layout = ClrFormLayout.HORIZONTAL;
10949
- // This is basically a replacement for Object.values(), which IE11 and Node <9 don't support :(
10950
- // String enums cannot be reverse-mapped, meaning ClrFormLayout['COMPACT'] does not return 'compact' so
10951
- // this exists to deal with this little caveat to get the list of the values as an array.
10952
- this.layoutValues = Object.keys(ClrFormLayout).map(key => ClrFormLayout[key]);
10987
+ this.layoutValues = Object.values(ClrFormLayout);
10953
10988
  this._labelSize = 2;
10954
10989
  }
10955
10990
  get labelSize() {
@@ -11117,40 +11152,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
11117
11152
  args: ['click', ['$event']]
11118
11153
  }] } });
11119
11154
 
11120
- /*
11121
- * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
11122
- * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
11123
- * This software is released under MIT license.
11124
- * The full license information can be found in LICENSE in the root directory of this project.
11125
- */
11126
- class ClrControlSuccess extends ClrAbstractControl {
11127
- constructor(controlIdService, containerIdService) {
11128
- super(controlIdService, containerIdService);
11129
- this.controlIdService = controlIdService;
11130
- this.containerIdService = containerIdService;
11131
- this.controlIdSuffix = CONTROL_SUFFIX.SUCCESS;
11132
- }
11133
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrControlSuccess, deps: [{ token: ControlIdService, optional: true }, { token: ContainerIdService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
11134
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrControlSuccess, isStandalone: false, selector: "clr-control-success", host: { properties: { "class.clr-subtext": "true", "class.success": "true", "attr.id": "id" } }, usesInheritance: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
11135
- }
11136
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrControlSuccess, decorators: [{
11137
- type: Component,
11138
- args: [{
11139
- selector: 'clr-control-success',
11140
- template: `<ng-content></ng-content>`,
11141
- host: {
11142
- '[class.clr-subtext]': 'true',
11143
- '[class.success]': 'true',
11144
- '[attr.id]': 'id',
11145
- },
11146
- standalone: false,
11147
- }]
11148
- }], ctorParameters: () => [{ type: ControlIdService, decorators: [{
11149
- type: Optional
11150
- }] }, { type: ContainerIdService, decorators: [{
11151
- type: Optional
11152
- }] }] });
11153
-
11154
11155
  /*
11155
11156
  * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
11156
11157
  * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
@@ -11347,12 +11348,6 @@ class ClrControlContainer extends ClrAbstractContainer {
11347
11348
  <div class="clr-control-container" [ngClass]="controlClass()">
11348
11349
  <div class="clr-input-wrapper">
11349
11350
  <ng-content></ng-content>
11350
- @if (showInvalid) {
11351
- <cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
11352
- }
11353
- @if (showValid) {
11354
- <cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
11355
- }
11356
11351
  </div>
11357
11352
  @if (showHelper) {
11358
11353
  <ng-content select="clr-control-helper"></ng-content>
@@ -11364,7 +11359,7 @@ class ClrControlContainer extends ClrAbstractContainer {
11364
11359
  <ng-content select="clr-control-success"></ng-content>
11365
11360
  }
11366
11361
  </div>
11367
- `, isInline: true, dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "directive", type: ClrControlLabel, selector: "label", inputs: ["id", "for"] }] }); }
11362
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: ClrControlLabel, selector: "label", inputs: ["id", "for"] }] }); }
11368
11363
  }
11369
11364
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrControlContainer, decorators: [{
11370
11365
  type: Component,
@@ -11378,12 +11373,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
11378
11373
  <div class="clr-control-container" [ngClass]="controlClass()">
11379
11374
  <div class="clr-input-wrapper">
11380
11375
  <ng-content></ng-content>
11381
- @if (showInvalid) {
11382
- <cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
11383
- }
11384
- @if (showValid) {
11385
- <cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
11386
- }
11387
11376
  </div>
11388
11377
  @if (showHelper) {
11389
11378
  <ng-content select="clr-control-helper"></ng-content>
@@ -11867,7 +11856,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
11867
11856
  */
11868
11857
  class ClrCommonFormsModule {
11869
11858
  constructor() {
11870
- ClarityIcons$1.addIcons(exclamationCircleIcon$1, checkCircleIcon$1);
11859
+ ClarityIcons$1.addIcons(successStandardIcon$1, errorStandardIcon$1);
11871
11860
  }
11872
11861
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrCommonFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
11873
11862
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrCommonFormsModule, declarations: [ClrControlLabel,
@@ -12125,29 +12114,14 @@ class ClrCheckboxContainer extends ClrAbstractContainer$1 {
12125
12114
  <ng-content select="clr-control-helper"></ng-content>
12126
12115
  </div>
12127
12116
  }
12128
- @if (showInvalid || showValid) {
12129
- <div class="clr-subtext-wrapper">
12130
- @if (showInvalid) {
12131
- <cds-icon
12132
- class="clr-validate-icon"
12133
- shape="exclamation-circle"
12134
- status="danger"
12135
- aria-hidden="true"
12136
- ></cds-icon>
12137
- }
12138
- @if (showValid) {
12139
- <cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
12140
- }
12141
- @if (showInvalid) {
12142
- <ng-content select="clr-control-error"></ng-content>
12143
- }
12144
- @if (showValid) {
12145
- <ng-content select="clr-control-success"></ng-content>
12146
- }
12147
- </div>
12117
+ @if (showInvalid) {
12118
+ <ng-content select="clr-control-error"></ng-content>
12119
+ }
12120
+ @if (showValid) {
12121
+ <ng-content select="clr-control-success"></ng-content>
12148
12122
  }
12149
12123
  </div>
12150
- `, isInline: true, dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "directive", type: i1$4.ClrControlLabel, selector: "label", inputs: ["id", "for"] }] }); }
12124
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$4.ClrControlLabel, selector: "label", inputs: ["id", "for"] }] }); }
12151
12125
  }
12152
12126
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrCheckboxContainer, decorators: [{
12153
12127
  type: Component,
@@ -12165,26 +12139,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
12165
12139
  <ng-content select="clr-control-helper"></ng-content>
12166
12140
  </div>
12167
12141
  }
12168
- @if (showInvalid || showValid) {
12169
- <div class="clr-subtext-wrapper">
12170
- @if (showInvalid) {
12171
- <cds-icon
12172
- class="clr-validate-icon"
12173
- shape="exclamation-circle"
12174
- status="danger"
12175
- aria-hidden="true"
12176
- ></cds-icon>
12177
- }
12178
- @if (showValid) {
12179
- <cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
12180
- }
12181
- @if (showInvalid) {
12182
- <ng-content select="clr-control-error"></ng-content>
12183
- }
12184
- @if (showValid) {
12185
- <ng-content select="clr-control-success"></ng-content>
12186
- }
12187
- </div>
12142
+ @if (showInvalid) {
12143
+ <ng-content select="clr-control-error"></ng-content>
12144
+ }
12145
+ @if (showValid) {
12146
+ <ng-content select="clr-control-success"></ng-content>
12188
12147
  }
12189
12148
  </div>
12190
12149
  `,
@@ -12214,7 +12173,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
12214
12173
  */
12215
12174
  class ClrCheckboxModule {
12216
12175
  constructor() {
12217
- ClarityIcons$1.addIcons(exclamationCircleIcon$1, checkCircleIcon$1);
12176
+ ClarityIcons$1.addIcons(successStandardIcon$1, errorStandardIcon$1);
12218
12177
  }
12219
12178
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrCheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
12220
12179
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrCheckboxModule, declarations: [ClrCheckbox, ClrCheckboxContainer, ClrCheckboxWrapper], imports: [CommonModule, ClrIcon$1, ClrCommonFormsModule$1, ClrHostWrappingModule$1], exports: [ClrCommonFormsModule$1, ClrCheckbox, ClrCheckboxContainer, ClrCheckboxWrapper] }); }
@@ -12282,12 +12241,6 @@ class ClrComboboxContainer extends ClrAbstractContainer$1 {
12282
12241
  }
12283
12242
  <div class="clr-control-container" [ngClass]="controlClass()" #controlContainer>
12284
12243
  <ng-content select="clr-combobox"></ng-content>
12285
- @if (showInvalid) {
12286
- <cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
12287
- }
12288
- @if (showValid) {
12289
- <cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
12290
- }
12291
12244
  @if (showHelper) {
12292
12245
  <ng-content select="clr-control-helper"></ng-content>
12293
12246
  }
@@ -12298,7 +12251,7 @@ class ClrComboboxContainer extends ClrAbstractContainer$1 {
12298
12251
  <ng-content select="clr-control-success"></ng-content>
12299
12252
  }
12300
12253
  </div>
12301
- `, isInline: true, dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "directive", type: i1$4.ClrControlLabel, selector: "label", inputs: ["id", "for"] }] }); }
12254
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$4.ClrControlLabel, selector: "label", inputs: ["id", "for"] }] }); }
12302
12255
  }
12303
12256
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrComboboxContainer, decorators: [{
12304
12257
  type: Component,
@@ -12311,12 +12264,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
12311
12264
  }
12312
12265
  <div class="clr-control-container" [ngClass]="controlClass()" #controlContainer>
12313
12266
  <ng-content select="clr-combobox"></ng-content>
12314
- @if (showInvalid) {
12315
- <cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
12316
- }
12317
- @if (showValid) {
12318
- <cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
12319
- }
12320
12267
  @if (showHelper) {
12321
12268
  <ng-content select="clr-control-helper"></ng-content>
12322
12269
  }
@@ -12350,20 +12297,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
12350
12297
  * This software is released under MIT license.
12351
12298
  * The full license information can be found in LICENSE in the root directory of this project.
12352
12299
  */
12353
- class MultiSelectComboboxModel {
12300
+ class ComboboxModel {
12301
+ constructor() {
12302
+ this.identityFn = (item) => item;
12303
+ }
12304
+ }
12305
+
12306
+ /*
12307
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
12308
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
12309
+ * This software is released under MIT license.
12310
+ * The full license information can be found in LICENSE in the root directory of this project.
12311
+ */
12312
+ class MultiSelectComboboxModel extends ComboboxModel {
12354
12313
  containsItem(item) {
12355
- if (this.model) {
12356
- if (this.displayField && typeof item === 'object') {
12357
- const includes = this.model.some(modelItem => {
12358
- return modelItem[this.displayField] === item[this.displayField];
12359
- });
12360
- return includes;
12361
- }
12362
- else {
12363
- return this.model.includes(item);
12364
- }
12314
+ if (!this.model) {
12315
+ return false;
12365
12316
  }
12366
- return false;
12317
+ return this.model.some(m => this.identityFn(m) === this.identityFn(item));
12367
12318
  }
12368
12319
  select(item) {
12369
12320
  this.addItem(item);
@@ -12426,7 +12377,7 @@ class MultiSelectComboboxModel {
12426
12377
  if (this.model === null || this.model === undefined) {
12427
12378
  return;
12428
12379
  }
12429
- const index = this.model.indexOf(item);
12380
+ const index = this.model.findIndex(m => this.identityFn(m) === this.identityFn(item));
12430
12381
  if (index > -1) {
12431
12382
  this.model.splice(index, 1);
12432
12383
  }
@@ -12443,9 +12394,9 @@ class MultiSelectComboboxModel {
12443
12394
  * This software is released under MIT license.
12444
12395
  * The full license information can be found in LICENSE in the root directory of this project.
12445
12396
  */
12446
- class SingleSelectComboboxModel {
12397
+ class SingleSelectComboboxModel extends ComboboxModel {
12447
12398
  containsItem(item) {
12448
- return this.model === item;
12399
+ return this.model !== null && this.identityFn(this.model) === this.identityFn(item);
12449
12400
  }
12450
12401
  select(item) {
12451
12402
  this.model = item;
@@ -12539,6 +12490,7 @@ class OptionSelectionService {
12539
12490
  this._currentInput = '';
12540
12491
  this._inputChanged = new BehaviorSubject('');
12541
12492
  this._selectionChanged = new ReplaySubject(1);
12493
+ this._identityFn = (item) => item;
12542
12494
  this.inputChanged = this._inputChanged.asObservable();
12543
12495
  }
12544
12496
  get displayField() {
@@ -12569,6 +12521,15 @@ class OptionSelectionService {
12569
12521
  get multiselectable() {
12570
12522
  return this.selectionModel instanceof MultiSelectComboboxModel;
12571
12523
  }
12524
+ get identityFn() {
12525
+ return this._identityFn;
12526
+ }
12527
+ set identityFn(value) {
12528
+ this._identityFn = value || ((item) => item);
12529
+ if (this.selectionModel) {
12530
+ this.selectionModel.identityFn = this._identityFn;
12531
+ }
12532
+ }
12572
12533
  select(item) {
12573
12534
  if (item === null || item === undefined || this.selectionModel.containsItem(item)) {
12574
12535
  return;
@@ -12595,13 +12556,12 @@ class OptionSelectionService {
12595
12556
  this.selectionModel.unselect(item);
12596
12557
  this._selectionChanged.next(this.selectionModel);
12597
12558
  }
12598
- // TODO: Add support for trackBy and compareFn
12599
12559
  setSelectionValue(value) {
12600
- // NOTE: Currently we assume that no 2 options will have the same value
12601
- // but Eudes and I discussed that this is a possibility but we will handle
12602
- // this later
12603
- // if selection is undefined, or its value hasn't changed, or changing from null <-> undefined, that's not really changing so we return
12604
- if (!this.selectionModel || this.selectionModel.model === value || (!this.selectionModel.model && !value)) {
12560
+ if (!this.selectionModel) {
12561
+ return;
12562
+ }
12563
+ const current = this.selectionModel.model;
12564
+ if (this.valuesEqualByIdentity(current, value)) {
12605
12565
  return;
12606
12566
  }
12607
12567
  this.selectionModel.model = value;
@@ -12615,6 +12575,39 @@ class OptionSelectionService {
12615
12575
  }
12616
12576
  return value;
12617
12577
  }
12578
+ valuesEqualByIdentity(current, value) {
12579
+ if (current === value) {
12580
+ return true;
12581
+ }
12582
+ // Check if both are null or undefined or empty string.
12583
+ if ((current === null || current === undefined || current === '') &&
12584
+ (value === null || value === undefined || value === '')) {
12585
+ return true;
12586
+ }
12587
+ // Check if one is null or undefined or empty string and the other is not.
12588
+ if (current === null ||
12589
+ current === undefined ||
12590
+ current === '' ||
12591
+ value === null ||
12592
+ value === undefined ||
12593
+ value === '') {
12594
+ return false;
12595
+ }
12596
+ if (this.multiselectable) {
12597
+ const cur = current;
12598
+ const val = value;
12599
+ if (cur.length !== val.length) {
12600
+ return false;
12601
+ }
12602
+ // We only consider values equal if they are ordered the same way.
12603
+ const curIds = cur.map(this._identityFn);
12604
+ const valIds = val.map(this._identityFn);
12605
+ return curIds.every((id, i) => id === valIds[i]);
12606
+ }
12607
+ else {
12608
+ return this._identityFn(current) === this._identityFn(value);
12609
+ }
12610
+ }
12618
12611
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: OptionSelectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
12619
12612
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: OptionSelectionService }); }
12620
12613
  }
@@ -12739,7 +12732,7 @@ class ComboboxFocusHandler {
12739
12732
  // this service is only interested in keys that may move the focus
12740
12733
  handleTextInput(event) {
12741
12734
  let preventDefault = false;
12742
- const key = normalizeKey$1(event.key);
12735
+ const key = event.key;
12743
12736
  if (event) {
12744
12737
  switch (key) {
12745
12738
  case Keys$1.Enter:
@@ -12796,18 +12789,12 @@ class ComboboxFocusHandler {
12796
12789
  this.renderer.listen(el, 'blur', event => {
12797
12790
  if (this.focusOutOfComponent(event)) {
12798
12791
  this.popoverService.open = false;
12799
- // Workaround for popover close-on-outside-click timing issues in Edge browser
12800
- if (this.componentCdRef) {
12801
- this.componentCdRef.detectChanges();
12802
- }
12803
12792
  }
12804
12793
  });
12805
12794
  }
12806
12795
  }
12807
12796
  focusOutOfComponent(event) {
12808
- // event.relatedTarget is null in IE11. In that case we use document.activeElement
12809
- // which points to the element that becomes active as the blur event occurs on the input.
12810
- const target = (event.relatedTarget || document.activeElement);
12797
+ const target = event.relatedTarget;
12811
12798
  return !(this.textInput.contains(target) || this.trigger.contains(target) || this.listbox.contains(target));
12812
12799
  }
12813
12800
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ComboboxFocusHandler, deps: [{ token: i0.RendererFactory2 }, { token: i2.ClrPopoverService }, { token: OptionSelectionService }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -12999,7 +12986,7 @@ class ClrOptions {
12999
12986
  loadingStateChange(state) {
13000
12987
  this.loading = state === ClrLoadingState$1.LOADING;
13001
12988
  }
13002
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrOptions, deps: [{ token: OptionSelectionService }, { token: IF_ACTIVE_ID$1 }, { token: i0.ElementRef }, { token: i1$1.ClrCommonStringsService }, { token: ComboboxFocusHandler }, { token: i2.ClrPopoverService }, { token: POPOVER_HOST_ANCHOR$1, optional: true }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
12989
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrOptions, deps: [{ token: OptionSelectionService }, { token: IF_ACTIVE_ID$1 }, { token: i0.ElementRef }, { token: i1$1.ClrCommonStringsService }, { token: ComboboxFocusHandler }, { token: i2.ClrPopoverService }, { token: POPOVER_HOST_ORIGIN$1, optional: true }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
13003
12990
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrOptions, isStandalone: false, selector: "clr-options", inputs: { optionsId: ["id", "optionsId"] }, host: { properties: { "class.clr-combobox-options": "true", "class.clr-combobox-options-hidden": "emptyOptions && editable", "attr.role": "\"listbox\"", "id": "optionsId" } }, providers: [{ provide: LoadingListener$1, useExisting: ClrOptions }], queries: [{ propertyName: "items", predicate: ClrOption, descendants: true }], ngImport: i0, template: `
13004
12991
  @if (optionSelectionService.loading) {
13005
12992
  <div class="clr-combobox-options-loading">
@@ -13069,7 +13056,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
13069
13056
  type: Optional
13070
13057
  }, {
13071
13058
  type: Inject,
13072
- args: [POPOVER_HOST_ANCHOR$1]
13059
+ args: [POPOVER_HOST_ORIGIN$1]
13073
13060
  }] }, { type: undefined, decorators: [{
13074
13061
  type: Inject,
13075
13062
  args: [DOCUMENT]
@@ -13116,8 +13103,7 @@ class ClrCombobox extends WrappedFormControl$1 {
13116
13103
  control.valueAccessor = this;
13117
13104
  }
13118
13105
  // default to SingleSelectComboboxModel, in case the optional input [ClrMulti] isn't used
13119
- optionSelectionService.selectionModel = new SingleSelectComboboxModel();
13120
- this.updateControlValue();
13106
+ this.multiSelect = false;
13121
13107
  }
13122
13108
  get editable() {
13123
13109
  return this.optionSelectionService.editable;
@@ -13125,6 +13111,9 @@ class ClrCombobox extends WrappedFormControl$1 {
13125
13111
  set editable(value) {
13126
13112
  this.optionSelectionService.editable = value;
13127
13113
  }
13114
+ set identityFn(value) {
13115
+ this.optionSelectionService.identityFn = value;
13116
+ }
13128
13117
  get multiSelect() {
13129
13118
  return this.optionSelectionService.multiselectable;
13130
13119
  }
@@ -13137,6 +13126,7 @@ class ClrCombobox extends WrappedFormControl$1 {
13137
13126
  // since the initial call to writeValue (caused by [ngModel] input) should happen after this
13138
13127
  this.optionSelectionService.selectionModel = new SingleSelectComboboxModel();
13139
13128
  }
13129
+ this.optionSelectionService.selectionModel.identityFn = this.optionSelectionService.identityFn;
13140
13130
  this.updateControlValue();
13141
13131
  }
13142
13132
  // Override the id of WrappedFormControl, as we want to move it to the embedded input.
@@ -13196,7 +13186,6 @@ class ClrCombobox extends WrappedFormControl$1 {
13196
13186
  }
13197
13187
  }
13198
13188
  ngAfterViewInit() {
13199
- this.focusHandler.componentCdRef = this.cdr;
13200
13189
  this.focusHandler.textInput = this.textbox.nativeElement;
13201
13190
  this.focusHandler.trigger = this.trigger.nativeElement;
13202
13191
  // The text input is the actual element we are wrapping
@@ -13360,13 +13349,13 @@ class ClrCombobox extends WrappedFormControl$1 {
13360
13349
  return [this.optionSelectionService.selectionModel.model];
13361
13350
  }
13362
13351
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrCombobox, deps: [{ token: i0.ViewContainerRef }, { token: i0.Injector }, { token: i1$5.NgControl, optional: true, self: true }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: OptionSelectionService }, { token: i1$1.ClrCommonStringsService }, { token: i2.ClrPopoverService }, { token: ComboboxContainerService, optional: true }, { token: PLATFORM_ID }, { token: ComboboxFocusHandler }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
13363
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrCombobox, isStandalone: false, selector: "clr-combobox", inputs: { placeholder: "placeholder", editable: ["clrEditable", "editable"], multiSelect: ["clrMulti", "multiSelect"] }, outputs: { clrInputChange: "clrInputChange", clrOpenChange: "clrOpenChange", clrSelectionChange: "clrSelectionChange" }, host: { listeners: { "keydown": "onKeyUp($event)" }, properties: { "class.aria-required": "true", "class.clr-combobox": "true", "class.clr-combobox-disabled": "control?.disabled" } }, providers: [
13352
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrCombobox, isStandalone: false, selector: "clr-combobox", inputs: { placeholder: "placeholder", editable: ["clrEditable", "editable"], identityFn: ["clrComboboxIdentityFn", "identityFn"], multiSelect: ["clrMulti", "multiSelect"] }, outputs: { clrInputChange: "clrInputChange", clrOpenChange: "clrOpenChange", clrSelectionChange: "clrSelectionChange" }, host: { listeners: { "keydown": "onKeyUp($event)" }, properties: { "class.aria-required": "true", "class.clr-combobox": "true", "class.clr-combobox-disabled": "control?.disabled" } }, providers: [
13364
13353
  OptionSelectionService,
13365
13354
  { provide: LoadingListener$1, useExisting: ClrCombobox },
13366
13355
  IF_ACTIVE_ID_PROVIDER$1,
13367
13356
  FOCUS_SERVICE_PROVIDER$1,
13368
13357
  COMBOBOX_FOCUS_HANDLER_PROVIDER,
13369
- ], queries: [{ propertyName: "optionSelected", first: true, predicate: ClrOptionSelected, descendants: true }, { propertyName: "options", first: true, predicate: ClrOptions, descendants: true }], viewQueries: [{ propertyName: "textbox", first: true, predicate: ["textboxInput"], descendants: true }, { propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }], usesInheritance: true, hostDirectives: [{ directive: i2.ClrPopoverHostDirective }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software 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\nwidth of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverAnchor\n (click)=\"onWrapperClick($event)\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"(control?.control.touched && control?.invalid)\"\n [class.disabled]=\"control?.disabled\"\n>\n @if (multiSelect && optionSelectionService.selectionModel.model && multiSelectModel.length > 0) {\n <span\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 @for (item of multiSelectModel; track item; let i = $index) {\n <span class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n @if (optionSelected) {\n <ng-container\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n ></ng-container>\n }\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 }\n </span>\n }\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 (change)=\"onChange()\"\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 #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.\nAdditionally 'outsideClickToClose' has complex handling that's necessary\nto be manual due to the component architecture -->\n<div role=\"dialog\" *clrPopoverContent=\"openState; at popoverPosition; type: popoverType;\">\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "component", type: i1$1.ClrRovingTabindex, selector: "[clrRovingTabindex]", inputs: ["clrRovingTabindex", "clrRovingTabindexDisabled"] }, { kind: "directive", type: i1$1.ClrKeyFocusItem, selector: "[clrKeyFocusItem]" }, { kind: "directive", type: i2.ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { kind: "directive", type: i2.ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentAvailablePositions", "clrPopoverContentType", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }] }); }
13358
+ ], queries: [{ propertyName: "optionSelected", first: true, predicate: ClrOptionSelected, descendants: true }, { propertyName: "options", first: true, predicate: ClrOptions, descendants: true }], viewQueries: [{ propertyName: "textbox", first: true, predicate: ["textboxInput"], descendants: true }, { propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }], usesInheritance: true, hostDirectives: [{ directive: i2.ClrPopoverHostDirective }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software 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\nwidth of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverOrigin\n (click)=\"onWrapperClick($event)\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"(control?.control.touched && control?.invalid)\"\n [class.disabled]=\"control?.disabled\"\n>\n @if (multiSelect && optionSelectionService.selectionModel.model && multiSelectModel.length > 0) {\n <span\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 @for (item of multiSelectModel; track item; let i = $index) {\n <span class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n @if (optionSelected) {\n <ng-container\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n ></ng-container>\n }\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 }\n </span>\n }\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 (change)=\"onChange()\"\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 #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.\n'outsideClickToClose' has complex handling that's necessary\nto be manual due to the component architecture -->\n<div role=\"dialog\" *clrPopoverContent=\"openState; at popoverPosition; type: popoverType;\">\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "component", type: i1$1.ClrRovingTabindex, selector: "[clrRovingTabindex]", inputs: ["clrRovingTabindex", "clrRovingTabindexDisabled"] }, { kind: "directive", type: i1$1.ClrKeyFocusItem, selector: "[clrKeyFocusItem]" }, { kind: "directive", type: i2.ClrPopoverOrigin, selector: "[clrPopoverOrigin]" }, { kind: "directive", type: i2.ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentAvailablePositions", "clrPopoverContentType", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose", "clrPopoverContentOrigin"] }] }); }
13370
13359
  }
13371
13360
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrCombobox, decorators: [{
13372
13361
  type: Component,
@@ -13380,7 +13369,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
13380
13369
  '[class.aria-required]': 'true',
13381
13370
  '[class.clr-combobox]': 'true',
13382
13371
  '[class.clr-combobox-disabled]': 'control?.disabled',
13383
- }, standalone: false, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software 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\nwidth of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverAnchor\n (click)=\"onWrapperClick($event)\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"(control?.control.touched && control?.invalid)\"\n [class.disabled]=\"control?.disabled\"\n>\n @if (multiSelect && optionSelectionService.selectionModel.model && multiSelectModel.length > 0) {\n <span\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 @for (item of multiSelectModel; track item; let i = $index) {\n <span class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n @if (optionSelected) {\n <ng-container\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n ></ng-container>\n }\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 }\n </span>\n }\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 (change)=\"onChange()\"\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 #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.\nAdditionally 'outsideClickToClose' has complex handling that's necessary\nto be manual due to the component architecture -->\n<div role=\"dialog\" *clrPopoverContent=\"openState; at popoverPosition; type: popoverType;\">\n <ng-content></ng-content>\n</div>\n" }]
13372
+ }, standalone: false, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software 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\nwidth of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverOrigin\n (click)=\"onWrapperClick($event)\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"(control?.control.touched && control?.invalid)\"\n [class.disabled]=\"control?.disabled\"\n>\n @if (multiSelect && optionSelectionService.selectionModel.model && multiSelectModel.length > 0) {\n <span\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 @for (item of multiSelectModel; track item; let i = $index) {\n <span class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n @if (optionSelected) {\n <ng-container\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n ></ng-container>\n }\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 }\n </span>\n }\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 (change)=\"onChange()\"\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 #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.\n'outsideClickToClose' has complex handling that's necessary\nto be manual due to the component architecture -->\n<div role=\"dialog\" *clrPopoverContent=\"openState; at popoverPosition; type: popoverType;\">\n <ng-content></ng-content>\n</div>\n" }]
13384
13373
  }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.Injector }, { type: i1$5.NgControl, decorators: [{
13385
13374
  type: Self
13386
13375
  }, {
@@ -13417,6 +13406,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
13417
13406
  }], editable: [{
13418
13407
  type: Input,
13419
13408
  args: ['clrEditable']
13409
+ }], identityFn: [{
13410
+ type: Input,
13411
+ args: ['clrComboboxIdentityFn']
13420
13412
  }], multiSelect: [{
13421
13413
  type: Input,
13422
13414
  args: ['clrMulti']
@@ -13578,7 +13570,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
13578
13570
  */
13579
13571
  class ClrComboboxModule {
13580
13572
  constructor() {
13581
- ClarityIcons$1.addIcons(exclamationCircleIcon$1, checkCircleIcon$1, angleIcon$1, windowCloseIcon$1);
13573
+ ClarityIcons$1.addIcons(successStandardIcon$1, errorStandardIcon$1, angleIcon$1, windowCloseIcon$1);
13582
13574
  }
13583
13575
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrComboboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
13584
13576
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrComboboxModule, declarations: [ClrCombobox,
@@ -13764,12 +13756,6 @@ class ClrDatalistContainer extends ClrAbstractContainer$1 {
13764
13756
  <ng-content select="datalist"></ng-content>
13765
13757
  <cds-icon shape="angle" class="clr-datalist-caret" direction="down" (click)="showPicker(datalist)"></cds-icon>
13766
13758
  </div>
13767
- @if (showInvalid) {
13768
- <cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
13769
- }
13770
- @if (showValid) {
13771
- <cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
13772
- }
13773
13759
  </div>
13774
13760
  @if (showHelper) {
13775
13761
  <ng-content select="clr-control-helper"></ng-content>
@@ -13799,12 +13785,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
13799
13785
  <ng-content select="datalist"></ng-content>
13800
13786
  <cds-icon shape="angle" class="clr-datalist-caret" direction="down" (click)="showPicker(datalist)"></cds-icon>
13801
13787
  </div>
13802
- @if (showInvalid) {
13803
- <cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
13804
- }
13805
- @if (showValid) {
13806
- <cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
13807
- }
13808
13788
  </div>
13809
13789
  @if (showHelper) {
13810
13790
  <ng-content select="clr-control-helper"></ng-content>
@@ -13891,7 +13871,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
13891
13871
  */
13892
13872
  class ClrDatalistModule {
13893
13873
  constructor() {
13894
- ClarityIcons$1.addIcons(exclamationCircleIcon$1, checkCircleIcon$1);
13874
+ ClarityIcons$1.addIcons(successStandardIcon$1, errorStandardIcon$1);
13895
13875
  }
13896
13876
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDatalistModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
13897
13877
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrDatalistModule, declarations: [ClrDatalist, ClrDatalistInput, ClrDatalistContainer], imports: [CommonModule, ClrInputModule$1, ClrIcon$1], exports: [ClrDatalist, ClrDatalistInput, ClrDatalistContainer] }); }
@@ -14214,10 +14194,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
14214
14194
  */
14215
14195
  class DateIOService {
14216
14196
  constructor(localeHelperService) {
14197
+ /**
14198
+ * This is the default range. It approximates the beginning of time to the end of time.
14199
+ * The disabled dates are the dates that are not allowed to be selected.
14200
+ * The min date is the earliest date that can be selected.
14201
+ * The max date is the latest date that can be selected.
14202
+ * Unless a minDate or maxDate is set with the native HTML5 api the range is all dates
14203
+ */
14217
14204
  this.disabledDates = {
14218
- // This is the default range. It approximates the beginning of time to the end of time.
14219
- // Unless a minDate or maxDate is set with the native HTML5 api the range is all dates
14220
- // TODO: turn this into an Array of min/max ranges that allow configuration of multiple ranges.
14221
14205
  minDate: new DayModel(0, 0, 1),
14222
14206
  maxDate: new DayModel(9999, 11, 31),
14223
14207
  };
@@ -14872,7 +14856,7 @@ class ClrMonthpicker {
14872
14856
  // the logic is fairly simple and it didn't make sense for me
14873
14857
  // to create extra observables just to move this logic to the service.
14874
14858
  if (event) {
14875
- const key = normalizeKey$1(event.key);
14859
+ const key = event.key;
14876
14860
  if (key === Keys$1.ArrowUp && this._focusedMonthIndex > 1) {
14877
14861
  event.preventDefault();
14878
14862
  this._focusedMonthIndex -= 2;
@@ -15219,7 +15203,7 @@ class ClrYearpicker {
15219
15203
  // the logic is fairly simple and it didn't make sense for me
15220
15204
  // to create extra observables just to move this logic to the service.
15221
15205
  if (event) {
15222
- const key = normalizeKey$1(event.key);
15206
+ const key = event.key;
15223
15207
  if (key === Keys$1.ArrowUp) {
15224
15208
  event.preventDefault();
15225
15209
  this.incrementFocusYearBy(-2);
@@ -15866,7 +15850,7 @@ class ClrCalendar {
15866
15850
  */
15867
15851
  onKeyDown(event) {
15868
15852
  if (event && this.focusedDay) {
15869
- switch (normalizeKey$1(event.key)) {
15853
+ switch (event.key) {
15870
15854
  case Keys$1.ArrowUp:
15871
15855
  event.preventDefault();
15872
15856
  this._dateNavigationService.incrementFocusDay(-1 * NO_OF_DAYS_IN_A_WEEK);
@@ -16336,7 +16320,7 @@ class ClrDateContainer extends ClrAbstractContainer$1 {
16336
16320
  <label></label>
16337
16321
  }
16338
16322
  <div class="clr-control-container" [ngClass]="controlClass()">
16339
- <div class="clr-input-wrapper" clrPopoverAnchor>
16323
+ <div class="clr-input-wrapper" clrPopoverOrigin>
16340
16324
  <div class="clr-input-group" [class.clr-focus]="focus">
16341
16325
  <!-- render range inputs only if using clr-date-range-container -->
16342
16326
  @if (isRangePicker) {
@@ -16368,12 +16352,6 @@ class ClrDateContainer extends ClrAbstractContainer$1 {
16368
16352
  cdkTrapFocus
16369
16353
  ></clr-datepicker-view-manager>
16370
16354
  </div>
16371
- @if (showInvalid) {
16372
- <cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
16373
- }
16374
- @if (showValid) {
16375
- <cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
16376
- }
16377
16355
  </div>
16378
16356
  @if (showHelper) {
16379
16357
  <ng-content select="clr-control-helper"></ng-content>
@@ -16385,7 +16363,7 @@ class ClrDateContainer extends ClrAbstractContainer$1 {
16385
16363
  <ng-content select="clr-control-success"></ng-content>
16386
16364
  }
16387
16365
  </div>
16388
- `, isInline: true, dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]" }, { kind: "directive", type: i2.ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { kind: "directive", type: i2.ÇlrClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { kind: "directive", type: i2.ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentAvailablePositions", "clrPopoverContentType", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "directive", type: i1$4.ClrControlLabel, selector: "label", inputs: ["id", "for"] }, { kind: "component", type: ClrDatepickerViewManager, selector: "clr-datepicker-view-manager" }] }); }
16366
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]" }, { kind: "directive", type: i2.ClrPopoverOrigin, selector: "[clrPopoverOrigin]" }, { kind: "directive", type: i2.ÇlrClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { kind: "directive", type: i2.ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentAvailablePositions", "clrPopoverContentType", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose", "clrPopoverContentOrigin"] }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "directive", type: i1$4.ClrControlLabel, selector: "label", inputs: ["id", "for"] }, { kind: "component", type: ClrDatepickerViewManager, selector: "clr-datepicker-view-manager" }] }); }
16389
16367
  }
16390
16368
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDateContainer, decorators: [{
16391
16369
  type: Component,
@@ -16397,7 +16375,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
16397
16375
  <label></label>
16398
16376
  }
16399
16377
  <div class="clr-control-container" [ngClass]="controlClass()">
16400
- <div class="clr-input-wrapper" clrPopoverAnchor>
16378
+ <div class="clr-input-wrapper" clrPopoverOrigin>
16401
16379
  <div class="clr-input-group" [class.clr-focus]="focus">
16402
16380
  <!-- render range inputs only if using clr-date-range-container -->
16403
16381
  @if (isRangePicker) {
@@ -16429,12 +16407,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
16429
16407
  cdkTrapFocus
16430
16408
  ></clr-datepicker-view-manager>
16431
16409
  </div>
16432
- @if (showInvalid) {
16433
- <cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
16434
- }
16435
- @if (showValid) {
16436
- <cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
16437
- }
16438
16410
  </div>
16439
16411
  @if (showHelper) {
16440
16412
  <ng-content select="clr-control-helper"></ng-content>
@@ -17047,7 +17019,7 @@ const CLR_DATEPICKER_DIRECTIVES = [
17047
17019
  ];
17048
17020
  class ClrDatepickerModule {
17049
17021
  constructor() {
17050
- ClarityIcons$1.addIcons(exclamationCircleIcon$1, checkCircleIcon$1, angleIcon$1, eventIcon$1, calendarIcon$1);
17022
+ ClarityIcons$1.addIcons(successStandardIcon$1, errorStandardIcon$1, angleIcon$1, eventIcon$1, calendarIcon$1);
17051
17023
  }
17052
17024
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
17053
17025
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrDatepickerModule, declarations: [ClrDateInput,
@@ -17149,15 +17121,23 @@ function clearFiles(fileInputElement) {
17149
17121
  const CLR_FILE_MESSAGES_TEMPLATE_CONTEXT = new InjectionToken('ClrFileMessagesTemplateContext');
17150
17122
  class ClrFileInfo {
17151
17123
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrFileInfo, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
17152
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrFileInfo, isStandalone: false, selector: "clr-file-info", host: { properties: { "class.clr-subtext": "true" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
17124
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrFileInfo, isStandalone: false, selector: "clr-file-info", host: { properties: { "class.clr-subtext-wrapper": "true" } }, ngImport: i0, template: `
17125
+ <span class="clr-subtext">
17126
+ <ng-content></ng-content>
17127
+ </span>
17128
+ `, isInline: true }); }
17153
17129
  }
17154
17130
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrFileInfo, decorators: [{
17155
17131
  type: Component,
17156
17132
  args: [{
17157
17133
  selector: 'clr-file-info',
17158
- template: `<ng-content></ng-content>`,
17134
+ template: `
17135
+ <span class="clr-subtext">
17136
+ <ng-content></ng-content>
17137
+ </span>
17138
+ `,
17159
17139
  host: {
17160
- '[class.clr-subtext]': 'true',
17140
+ '[class.clr-subtext-wrapper]': 'true',
17161
17141
  },
17162
17142
  standalone: false,
17163
17143
  }]
@@ -17167,39 +17147,57 @@ class ClrFileSuccess {
17167
17147
  this.context = inject(CLR_FILE_MESSAGES_TEMPLATE_CONTEXT);
17168
17148
  }
17169
17149
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrFileSuccess, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
17170
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrFileSuccess, isStandalone: false, selector: "clr-file-success", host: { properties: { "style.display": "context.success ? \"inline-block\" : \"none\"", "class.clr-subtext": "true", "class.success": "true" } }, ngImport: i0, template: `@if (context.success) {
17171
- <ng-content></ng-content>
17172
- }`, isInline: true }); }
17150
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrFileSuccess, isStandalone: false, selector: "clr-file-success", host: { properties: { "style.display": "context.success ? \"flex\" : \"none\"", "class.clr-subtext-wrapper": "true" } }, ngImport: i0, template: `
17151
+ @if (context.success) {
17152
+ <cds-icon class="clr-validate-icon" shape="success-standard" status="success" aria-hidden="true"></cds-icon>
17153
+ <span class="clr-subtext success">
17154
+ <ng-content></ng-content>
17155
+ </span>
17156
+ }
17157
+ `, isInline: true, dependencies: [{ kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }] }); }
17173
17158
  }
17174
17159
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrFileSuccess, decorators: [{
17175
17160
  type: Component,
17176
17161
  args: [{
17177
17162
  selector: 'clr-file-success',
17178
17163
  // We check for success here so that consumers don't have to.
17179
- template: `@if (context.success) {
17180
- <ng-content></ng-content>
17181
- }`,
17164
+ template: `
17165
+ @if (context.success) {
17166
+ <cds-icon class="clr-validate-icon" shape="success-standard" status="success" aria-hidden="true"></cds-icon>
17167
+ <span class="clr-subtext success">
17168
+ <ng-content></ng-content>
17169
+ </span>
17170
+ }
17171
+ `,
17182
17172
  host: {
17183
- '[style.display]': 'context.success ? "inline-block" : "none"',
17184
- '[class.clr-subtext]': 'true',
17185
- '[class.success]': 'true',
17173
+ '[style.display]': 'context.success ? "flex" : "none"',
17174
+ '[class.clr-subtext-wrapper]': 'true',
17186
17175
  },
17187
17176
  standalone: false,
17188
17177
  }]
17189
17178
  }] });
17190
17179
  class ClrFileError {
17191
17180
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrFileError, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
17192
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrFileError, isStandalone: false, selector: "clr-file-error", host: { properties: { "class.clr-subtext": "true", "class.error": "true" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
17181
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrFileError, isStandalone: false, selector: "clr-file-error", host: { properties: { "class.clr-subtext-wrapper": "true" } }, ngImport: i0, template: `
17182
+ <cds-icon class="clr-validate-icon" shape="error-standard" status="danger" aria-hidden="true"></cds-icon>
17183
+ <span class="clr-subtext error">
17184
+ <ng-content></ng-content>
17185
+ </span>
17186
+ `, isInline: true, dependencies: [{ kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }] }); }
17193
17187
  }
17194
17188
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrFileError, decorators: [{
17195
17189
  type: Component,
17196
17190
  args: [{
17197
17191
  selector: 'clr-file-error',
17198
- // The host should have an `@if` or `@if` that checks for the relevant error.
17199
- template: `<ng-content></ng-content>`,
17192
+ // The host should have an `*ngIf` or `@if` that checks for the relevant error.
17193
+ template: `
17194
+ <cds-icon class="clr-validate-icon" shape="error-standard" status="danger" aria-hidden="true"></cds-icon>
17195
+ <span class="clr-subtext error">
17196
+ <ng-content></ng-content>
17197
+ </span>
17198
+ `,
17200
17199
  host: {
17201
- '[class.clr-subtext]': 'true',
17202
- '[class.error]': 'true',
17200
+ '[class.clr-subtext-wrapper]': 'true',
17203
17201
  },
17204
17202
  standalone: false,
17205
17203
  }]
@@ -17237,6 +17235,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
17237
17235
  */
17238
17236
  class ClrFileList {
17239
17237
  constructor() {
17238
+ this.injectorCache = new Map();
17239
+ this.contextCache = new Map();
17240
17240
  this.injector = inject(Injector);
17241
17241
  this.commonStrings = inject(ClrCommonStringsService$1);
17242
17242
  this.ngControlService = inject(NgControlService$1, { optional: true });
@@ -17275,7 +17275,17 @@ class ClrFileList {
17275
17275
  maxFileSize: fileInputErrors.maxFileSize?.find(error => error.name === file.name),
17276
17276
  };
17277
17277
  const success = Object.values(errors).every(error => !error);
17278
- return { $implicit: file, success, errors };
17278
+ const cached = this.contextCache.get(file);
17279
+ if (cached && cached.success === success && this.errorsEqual(cached.errors, errors)) {
17280
+ return cached;
17281
+ }
17282
+ // new context is made and old reference replaced
17283
+ const context = { $implicit: file, success, errors };
17284
+ this.contextCache.set(file, context);
17285
+ // new injector is made and old reference replaced
17286
+ const injector = this.createFileMessagesTemplateInjector(context);
17287
+ this.injectorCache.set(file, injector);
17288
+ return context;
17279
17289
  }
17280
17290
  createFileMessagesTemplateInjector(fileMessagesTemplateContext) {
17281
17291
  return Injector.create({
@@ -17283,6 +17293,9 @@ class ClrFileList {
17283
17293
  providers: [{ provide: CLR_FILE_MESSAGES_TEMPLATE_CONTEXT, useValue: fileMessagesTemplateContext }],
17284
17294
  });
17285
17295
  }
17296
+ errorsEqual(a, b) {
17297
+ return a.accept === b.accept && a.minFileSize === b.minFileSize && a.maxFileSize === b.maxFileSize;
17298
+ }
17286
17299
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrFileList, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
17287
17300
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrFileList, isStandalone: false, selector: "clr-file-list", host: { properties: { "attr.role": "\"list\"", "class.clr-file-list": "true" } }, queries: [{ propertyName: "fileMessagesTemplate", first: true, predicate: ClrFileMessagesTemplate, descendants: true }], ngImport: i0, template: `
17288
17301
  @for (file of files; track file) {
@@ -17306,18 +17319,12 @@ class ClrFileList {
17306
17319
  <cds-icon shape="times"></cds-icon>
17307
17320
  </button>
17308
17321
  </span>
17309
- <cds-icon
17310
- class="clr-validate-icon"
17311
- [shape]="fileMessagesTemplateContext.success ? 'check-circle' : 'exclamation-circle'"
17312
- [status]="fileMessagesTemplateContext.success ? 'success' : 'danger'"
17313
- aria-hidden="true"
17314
- ></cds-icon>
17315
17322
  </div>
17316
17323
  @if (fileMessagesTemplate) {
17317
17324
  <ng-container
17318
17325
  [ngTemplateOutlet]="fileMessagesTemplate.templateRef"
17319
17326
  [ngTemplateOutletContext]="fileMessagesTemplateContext"
17320
- [ngTemplateOutletInjector]="createFileMessagesTemplateInjector(fileMessagesTemplateContext)"
17327
+ [ngTemplateOutletInjector]="injectorCache.get(file)"
17321
17328
  ></ng-container>
17322
17329
  }
17323
17330
  </div>
@@ -17351,18 +17358,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
17351
17358
  <cds-icon shape="times"></cds-icon>
17352
17359
  </button>
17353
17360
  </span>
17354
- <cds-icon
17355
- class="clr-validate-icon"
17356
- [shape]="fileMessagesTemplateContext.success ? 'check-circle' : 'exclamation-circle'"
17357
- [status]="fileMessagesTemplateContext.success ? 'success' : 'danger'"
17358
- aria-hidden="true"
17359
- ></cds-icon>
17360
17361
  </div>
17361
17362
  @if (fileMessagesTemplate) {
17362
17363
  <ng-container
17363
17364
  [ngTemplateOutlet]="fileMessagesTemplate.templateRef"
17364
17365
  [ngTemplateOutletContext]="fileMessagesTemplateContext"
17365
- [ngTemplateOutletInjector]="createFileMessagesTemplateInjector(fileMessagesTemplateContext)"
17366
+ [ngTemplateOutletInjector]="injectorCache.get(file)"
17366
17367
  ></ng-container>
17367
17368
  }
17368
17369
  </div>
@@ -17486,12 +17487,6 @@ class ClrFileInputContainer extends ClrAbstractContainer$1 {
17486
17487
  <cds-icon shape="times" status="neutral"></cds-icon>
17487
17488
  </button>
17488
17489
  }
17489
- @if (showInvalid) {
17490
- <cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
17491
- }
17492
- @if (showValid) {
17493
- <cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
17494
- }
17495
17490
  </div>
17496
17491
  @if (showHelper) {
17497
17492
  <ng-content select="clr-control-helper"></ng-content>
@@ -17560,12 +17555,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
17560
17555
  <cds-icon shape="times" status="neutral"></cds-icon>
17561
17556
  </button>
17562
17557
  }
17563
- @if (showInvalid) {
17564
- <cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
17565
- }
17566
- @if (showValid) {
17567
- <cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
17568
- }
17569
17558
  </div>
17570
17559
  @if (showHelper) {
17571
17560
  <ng-content select="clr-control-helper"></ng-content>
@@ -17849,7 +17838,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
17849
17838
  */
17850
17839
  class ClrFileInputModule {
17851
17840
  constructor() {
17852
- ClarityIcons$1.addIcons(folderOpenIcon$1);
17841
+ ClarityIcons$1.addIcons(folderOpenIcon$1, successStandardIcon$1, errorStandardIcon$1);
17853
17842
  }
17854
17843
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrFileInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
17855
17844
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrFileInputModule, declarations: [ClrFileInput,
@@ -17929,12 +17918,6 @@ class ClrInputContainer extends ClrAbstractContainer$1 {
17929
17918
  <ng-content select="[clrInput]"></ng-content>
17930
17919
  <ng-content select="[clrInputSuffix]"></ng-content>
17931
17920
  </div>
17932
- @if (showInvalid) {
17933
- <cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
17934
- }
17935
- @if (showValid) {
17936
- <cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
17937
- }
17938
17921
  </div>
17939
17922
  @if (showHelper) {
17940
17923
  <ng-content select="clr-control-helper"></ng-content>
@@ -17946,7 +17929,7 @@ class ClrInputContainer extends ClrAbstractContainer$1 {
17946
17929
  <ng-content select="clr-control-success"></ng-content>
17947
17930
  }
17948
17931
  </div>
17949
- `, isInline: true, dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "directive", type: i1$4.ClrControlLabel, selector: "label", inputs: ["id", "for"] }] }); }
17932
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$4.ClrControlLabel, selector: "label", inputs: ["id", "for"] }] }); }
17950
17933
  }
17951
17934
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrInputContainer, decorators: [{
17952
17935
  type: Component,
@@ -17964,12 +17947,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
17964
17947
  <ng-content select="[clrInput]"></ng-content>
17965
17948
  <ng-content select="[clrInputSuffix]"></ng-content>
17966
17949
  </div>
17967
- @if (showInvalid) {
17968
- <cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
17969
- }
17970
- @if (showValid) {
17971
- <cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
17972
- }
17973
17950
  </div>
17974
17951
  @if (showHelper) {
17975
17952
  <ng-content select="clr-control-helper"></ng-content>
@@ -18036,8 +18013,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
18036
18013
  */
18037
18014
  class ClrInputModule {
18038
18015
  constructor() {
18039
- ClarityIcons$1.addIcons(exclamationCircleIcon$1, checkCircleIcon$1 // caret
18040
- );
18016
+ ClarityIcons$1.addIcons(successStandardIcon$1, errorStandardIcon$1);
18041
18017
  }
18042
18018
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
18043
18019
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrInputModule, declarations: [ClrInput, ClrInputContainer], imports: [CommonModule, FormsModule, ClrIcon$1, ClrCommonFormsModule$1], exports: [ClrCommonFormsModule$1, ClrInput, ClrInputContainer] }); }
@@ -18104,12 +18080,6 @@ class ClrNumberInputContainer extends ClrAbstractContainer$1 {
18104
18080
  </button>
18105
18081
  </div>
18106
18082
  </div>
18107
- @if (showInvalid) {
18108
- <cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
18109
- }
18110
- @if (showValid) {
18111
- <cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
18112
- }
18113
18083
  </div>
18114
18084
  @if (showHelper) {
18115
18085
  <ng-content select="clr-control-helper"></ng-content>
@@ -18156,12 +18126,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
18156
18126
  </button>
18157
18127
  </div>
18158
18128
  </div>
18159
- @if (showInvalid) {
18160
- <cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
18161
- }
18162
- @if (showValid) {
18163
- <cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
18164
- }
18165
18129
  </div>
18166
18130
  @if (showHelper) {
18167
18131
  <ng-content select="clr-control-helper"></ng-content>
@@ -18269,7 +18233,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
18269
18233
  */
18270
18234
  class ClrNumberInputModule {
18271
18235
  constructor() {
18272
- ClarityIcons$1.addIcons(exclamationCircleIcon$1, checkCircleIcon$1, minusIcon$1, plusIcon$1);
18236
+ ClarityIcons$1.addIcons(successStandardIcon$1, errorStandardIcon$1, minusIcon$1, plusIcon$1);
18273
18237
  }
18274
18238
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrNumberInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
18275
18239
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrNumberInputModule, declarations: [ClrNumberInput, ClrNumberInputContainer], imports: [CommonModule, FormsModule, ClrIcon$1, ClrCommonFormsModule$1], exports: [ClrCommonFormsModule$1, ClrNumberInput, ClrNumberInputContainer] }); }
@@ -18354,12 +18318,6 @@ class ClrPasswordContainer extends ClrAbstractContainer$1 {
18354
18318
  </button>
18355
18319
  }
18356
18320
  </div>
18357
- @if (showInvalid) {
18358
- <cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
18359
- }
18360
- @if (showValid) {
18361
- <cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
18362
- }
18363
18321
  </div>
18364
18322
  @if (showHelper) {
18365
18323
  <ng-content select="clr-control-helper"></ng-content>
@@ -18395,12 +18353,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
18395
18353
  </button>
18396
18354
  }
18397
18355
  </div>
18398
- @if (showInvalid) {
18399
- <cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
18400
- }
18401
- @if (showValid) {
18402
- <cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
18403
- }
18404
18356
  </div>
18405
18357
  @if (showHelper) {
18406
18358
  <ng-content select="clr-control-helper"></ng-content>
@@ -18494,7 +18446,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
18494
18446
  */
18495
18447
  class ClrPasswordModule {
18496
18448
  constructor() {
18497
- ClarityIcons$1.addIcons(eyeHideIcon$1, eyeIcon$1, exclamationCircleIcon$1, checkCircleIcon$1);
18449
+ ClarityIcons$1.addIcons(eyeHideIcon$1, eyeIcon$1, successStandardIcon$1, errorStandardIcon$1);
18498
18450
  }
18499
18451
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPasswordModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
18500
18452
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrPasswordModule, declarations: [ClrPassword, ClrPasswordContainer], imports: [CommonModule, FormsModule, ClrIcon$1, ClrCommonFormsModule$1], exports: [ClrCommonFormsModule$1, ClrPassword, ClrPasswordContainer] }); }
@@ -18646,29 +18598,14 @@ class ClrRadioContainer extends ClrAbstractContainer$1 {
18646
18598
  <ng-content select="clr-control-helper"></ng-content>
18647
18599
  </div>
18648
18600
  }
18649
- @if (showValid || showInvalid) {
18650
- <div class="clr-subtext-wrapper">
18651
- @if (showInvalid) {
18652
- <cds-icon
18653
- class="clr-validate-icon"
18654
- shape="exclamation-circle"
18655
- status="danger"
18656
- aria-hidden="true"
18657
- ></cds-icon>
18658
- }
18659
- @if (showValid) {
18660
- <cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
18661
- }
18662
- @if (showInvalid) {
18663
- <ng-content select="clr-control-error"></ng-content>
18664
- }
18665
- @if (showValid) {
18666
- <ng-content select="clr-control-success"></ng-content>
18667
- }
18668
- </div>
18601
+ @if (showInvalid) {
18602
+ <ng-content select="clr-control-error"></ng-content>
18603
+ }
18604
+ @if (showValid) {
18605
+ <ng-content select="clr-control-success"></ng-content>
18669
18606
  }
18670
18607
  </div>
18671
- `, isInline: true, dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$4.ClrControlLabel, selector: "label", inputs: ["id", "for"] }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }] }); }
18608
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$4.ClrControlLabel, selector: "label", inputs: ["id", "for"] }] }); }
18672
18609
  }
18673
18610
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrRadioContainer, decorators: [{
18674
18611
  type: Component,
@@ -18686,26 +18623,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
18686
18623
  <ng-content select="clr-control-helper"></ng-content>
18687
18624
  </div>
18688
18625
  }
18689
- @if (showValid || showInvalid) {
18690
- <div class="clr-subtext-wrapper">
18691
- @if (showInvalid) {
18692
- <cds-icon
18693
- class="clr-validate-icon"
18694
- shape="exclamation-circle"
18695
- status="danger"
18696
- aria-hidden="true"
18697
- ></cds-icon>
18698
- }
18699
- @if (showValid) {
18700
- <cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
18701
- }
18702
- @if (showInvalid) {
18703
- <ng-content select="clr-control-error"></ng-content>
18704
- }
18705
- @if (showValid) {
18706
- <ng-content select="clr-control-success"></ng-content>
18707
- }
18708
- </div>
18626
+ @if (showInvalid) {
18627
+ <ng-content select="clr-control-error"></ng-content>
18628
+ }
18629
+ @if (showValid) {
18630
+ <ng-content select="clr-control-success"></ng-content>
18709
18631
  }
18710
18632
  </div>
18711
18633
  `,
@@ -18739,7 +18661,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
18739
18661
  */
18740
18662
  class ClrRadioModule {
18741
18663
  constructor() {
18742
- ClarityIcons$1.addIcons(exclamationCircleIcon$1, checkCircleIcon$1);
18664
+ ClarityIcons$1.addIcons(successStandardIcon$1, errorStandardIcon$1);
18743
18665
  }
18744
18666
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrRadioModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
18745
18667
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrRadioModule, declarations: [ClrRadio, ClrRadioContainer, ClrRadioWrapper], imports: [CommonModule, ClrCommonFormsModule$1, ClrHostWrappingModule$1, ClrIcon$1], exports: [ClrCommonFormsModule$1, ClrRadio, ClrRadioContainer, ClrRadioWrapper] }); }
@@ -18789,12 +18711,6 @@ class ClrSelectContainer extends ClrAbstractContainer$1 {
18789
18711
  <div class="clr-control-container" [ngClass]="controlClass()">
18790
18712
  <div [ngClass]="wrapperClass()">
18791
18713
  <ng-content select="[clrSelect]"></ng-content>
18792
- @if (showInvalid) {
18793
- <cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
18794
- }
18795
- @if (showValid) {
18796
- <cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
18797
- }
18798
18714
  </div>
18799
18715
  @if (showHelper) {
18800
18716
  <ng-content select="clr-control-helper"></ng-content>
@@ -18806,7 +18722,7 @@ class ClrSelectContainer extends ClrAbstractContainer$1 {
18806
18722
  <ng-content select="clr-control-success"></ng-content>
18807
18723
  }
18808
18724
  </div>
18809
- `, isInline: true, dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "directive", type: i1$4.ClrControlLabel, selector: "label", inputs: ["id", "for"] }] }); }
18725
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$4.ClrControlLabel, selector: "label", inputs: ["id", "for"] }] }); }
18810
18726
  }
18811
18727
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrSelectContainer, decorators: [{
18812
18728
  type: Component,
@@ -18820,12 +18736,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
18820
18736
  <div class="clr-control-container" [ngClass]="controlClass()">
18821
18737
  <div [ngClass]="wrapperClass()">
18822
18738
  <ng-content select="[clrSelect]"></ng-content>
18823
- @if (showInvalid) {
18824
- <cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
18825
- }
18826
- @if (showValid) {
18827
- <cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
18828
- }
18829
18739
  </div>
18830
18740
  @if (showHelper) {
18831
18741
  <ng-content select="clr-control-helper"></ng-content>
@@ -18888,7 +18798,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
18888
18798
  */
18889
18799
  class ClrSelectModule {
18890
18800
  constructor() {
18891
- ClarityIcons$1.addIcons(exclamationCircleIcon$1, checkCircleIcon$1);
18801
+ ClarityIcons$1.addIcons(successStandardIcon$1, errorStandardIcon$1);
18892
18802
  }
18893
18803
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
18894
18804
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrSelectModule, declarations: [ClrSelect, ClrSelectContainer], imports: [CommonModule, FormsModule, ClrIcon$1, ClrCommonFormsModule$1], exports: [ClrCommonFormsModule$1, ClrSelect, ClrSelectContainer] }); }
@@ -18926,12 +18836,6 @@ class ClrTextareaContainer extends ClrAbstractContainer$1 {
18926
18836
  <div class="clr-control-container" [ngClass]="controlClass()">
18927
18837
  <div class="clr-textarea-wrapper">
18928
18838
  <ng-content select="[clrTextarea]"></ng-content>
18929
- @if (showInvalid) {
18930
- <cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
18931
- }
18932
- @if (showValid) {
18933
- <cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
18934
- }
18935
18839
  </div>
18936
18840
  @if (showHelper) {
18937
18841
  <ng-content select="clr-control-helper"></ng-content>
@@ -18943,7 +18847,7 @@ class ClrTextareaContainer extends ClrAbstractContainer$1 {
18943
18847
  <ng-content select="clr-control-success"></ng-content>
18944
18848
  }
18945
18849
  </div>
18946
- `, isInline: true, dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "directive", type: i1$4.ClrControlLabel, selector: "label", inputs: ["id", "for"] }] }); }
18850
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$4.ClrControlLabel, selector: "label", inputs: ["id", "for"] }] }); }
18947
18851
  }
18948
18852
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrTextareaContainer, decorators: [{
18949
18853
  type: Component,
@@ -18957,12 +18861,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
18957
18861
  <div class="clr-control-container" [ngClass]="controlClass()">
18958
18862
  <div class="clr-textarea-wrapper">
18959
18863
  <ng-content select="[clrTextarea]"></ng-content>
18960
- @if (showInvalid) {
18961
- <cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
18962
- }
18963
- @if (showValid) {
18964
- <cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
18965
- }
18966
18864
  </div>
18967
18865
  @if (showHelper) {
18968
18866
  <ng-content select="clr-control-helper"></ng-content>
@@ -19020,7 +18918,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
19020
18918
  */
19021
18919
  class ClrTextareaModule {
19022
18920
  constructor() {
19023
- ClarityIcons$1.addIcons(exclamationCircleIcon$1, checkCircleIcon$1);
18921
+ ClarityIcons$1.addIcons(successStandardIcon$1, errorStandardIcon$1);
19024
18922
  }
19025
18923
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrTextareaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
19026
18924
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrTextareaModule, declarations: [ClrTextarea, ClrTextareaContainer], imports: [CommonModule, FormsModule, ClrIcon$1, ClrCommonFormsModule$1], exports: [ClrCommonFormsModule$1, ClrTextarea, ClrTextareaContainer] }); }
@@ -19101,12 +18999,6 @@ class ClrRangeContainer extends ClrAbstractContainer$1 {
19101
18999
  @if (hasProgress) {
19102
19000
  <span class="fill-input" [style.width]="getRangeProgressFillWidth()"></span>
19103
19001
  }
19104
- @if (showInvalid) {
19105
- <cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
19106
- }
19107
- @if (showValid) {
19108
- <cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
19109
- }
19110
19002
  </div>
19111
19003
  @if (showHelper) {
19112
19004
  <ng-content select="clr-control-helper"></ng-content>
@@ -19118,7 +19010,7 @@ class ClrRangeContainer extends ClrAbstractContainer$1 {
19118
19010
  <ng-content select="clr-control-success"></ng-content>
19119
19011
  }
19120
19012
  </div>
19121
- `, isInline: true, dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$4.ClrControlLabel, selector: "label", inputs: ["id", "for"] }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }] }); }
19013
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$4.ClrControlLabel, selector: "label", inputs: ["id", "for"] }] }); }
19122
19014
  }
19123
19015
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrRangeContainer, decorators: [{
19124
19016
  type: Component,
@@ -19135,12 +19027,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
19135
19027
  @if (hasProgress) {
19136
19028
  <span class="fill-input" [style.width]="getRangeProgressFillWidth()"></span>
19137
19029
  }
19138
- @if (showInvalid) {
19139
- <cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
19140
- }
19141
- @if (showValid) {
19142
- <cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
19143
- }
19144
19030
  </div>
19145
19031
  @if (showHelper) {
19146
19032
  <ng-content select="clr-control-helper"></ng-content>
@@ -19202,7 +19088,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
19202
19088
  */
19203
19089
  class ClrRangeModule {
19204
19090
  constructor() {
19205
- ClarityIcons$1.addIcons(exclamationCircleIcon$1, checkCircleIcon$1);
19091
+ ClarityIcons$1.addIcons(successStandardIcon$1, errorStandardIcon$1);
19206
19092
  }
19207
19093
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrRangeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
19208
19094
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrRangeModule, declarations: [ClrRange, ClrRangeContainer], imports: [CommonModule, ClrCommonFormsModule$1, ClrHostWrappingModule$1, ClrIcon$1], exports: [ClrCommonFormsModule$1, ClrRange, ClrRangeContainer] }); }
@@ -28750,7 +28636,7 @@ class ModalStackService {
28750
28636
  }
28751
28637
  }
28752
28638
  onKeyUp(event) {
28753
- if (this.modalStack.length && normalizeKey$1(event.key) === Keys$1.Escape) {
28639
+ if (this.modalStack.length && event.key === Keys$1.Escape) {
28754
28640
  // We blur the active element because escaping with an input element in focus could cause
28755
28641
  // an ExpressionChangedAfterItHasBeenCheckedError for the touched state. (CDE-1662)
28756
28642
  document.activeElement.blur();
@@ -29497,6 +29383,9 @@ class ClrDropdown {
29497
29383
  this.subscriptions.push(dropdownService.changes.subscribe(value => (popoverService.open = value)));
29498
29384
  this.subscriptions.push(popoverService.openChange.subscribe(() => cdr.markForCheck()));
29499
29385
  }
29386
+ openAtPoint(point) {
29387
+ this.popoverService.openAtPoint(point);
29388
+ }
29500
29389
  ngOnDestroy() {
29501
29390
  this.subscriptions.forEach(sub => sub.unsubscribe());
29502
29391
  }
@@ -29571,7 +29460,7 @@ class ClrDropdownMenu {
29571
29460
  ngOnDestroy() {
29572
29461
  this.focusHandler.resetChildren();
29573
29462
  }
29574
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDropdownMenu, deps: [{ token: POPOVER_HOST_ANCHOR$1, optional: true }, { token: ClrDropdownMenu, optional: true, skipSelf: true }, { token: DropdownFocusHandler }, { token: i0.ElementRef }, { token: i2.ClrPopoverService }, { token: i2.ClrPopoverContent }], target: i0.ɵɵFactoryTarget.Component }); }
29463
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDropdownMenu, deps: [{ token: POPOVER_HOST_ORIGIN$1, optional: true }, { token: ClrDropdownMenu, optional: true, skipSelf: true }, { token: DropdownFocusHandler }, { token: i0.ElementRef }, { token: i2.ClrPopoverService }, { token: i2.ClrPopoverContent }], target: i0.ɵɵFactoryTarget.Component }); }
29575
29464
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrDropdownMenu, isStandalone: false, selector: "clr-dropdown-menu", inputs: { position: ["clrPosition", "position"] }, host: { properties: { "class.dropdown-menu": "true", "attr.role": "\"menu\"", "class.is-off-screen": "this.isOffScreen" } }, queries: [{ propertyName: "items", predicate: FocusableItem$1 }], hostDirectives: [{ directive: i2.ClrPopoverContent }], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
29576
29465
  }
29577
29466
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDropdownMenu, decorators: [{
@@ -29590,7 +29479,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
29590
29479
  type: Optional
29591
29480
  }, {
29592
29481
  type: Inject,
29593
- args: [POPOVER_HOST_ANCHOR$1]
29482
+ args: [POPOVER_HOST_ORIGIN$1]
29594
29483
  }] }, { type: ClrDropdownMenu, decorators: [{
29595
29484
  type: Optional
29596
29485
  }, {
@@ -29621,7 +29510,7 @@ class ClrDropdownTrigger {
29621
29510
  this.isRootLevelToggle = false;
29622
29511
  }
29623
29512
  focusHandler.trigger = el.nativeElement;
29624
- popoverService.anchorElementRef = el;
29513
+ popoverService.origin = el;
29625
29514
  }
29626
29515
  get active() {
29627
29516
  return this.popoverService.open;
@@ -29794,14 +29683,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
29794
29683
  * The full license information can be found in LICENSE in the root directory of this project.
29795
29684
  */
29796
29685
 
29797
- /*
29798
- * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
29799
- * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
29800
- * This software is released under MIT license.
29801
- * The full license information can be found in LICENSE in the root directory of this project.
29802
- */
29803
- // Popovers might need to ignore click events on an element
29804
- // (eg: popover opens on focus on an input field. Clicks should be ignored in this case)
29805
29686
  class ClrPopoverService {
29806
29687
  constructor() {
29807
29688
  this.panelClass = [];
@@ -29813,6 +29694,12 @@ class ClrPopoverService {
29813
29694
  this._updatePosition = new Subject();
29814
29695
  this._popoverVisible = new Subject();
29815
29696
  }
29697
+ get originElement() {
29698
+ return this.origin instanceof ElementRef ? this.origin : null;
29699
+ }
29700
+ get originPoint() {
29701
+ return this.origin && 'x' in this.origin && 'y' in this.origin ? this.origin : null;
29702
+ }
29816
29703
  get openChange() {
29817
29704
  return this._openChange.asObservable();
29818
29705
  }
@@ -29860,6 +29747,18 @@ class ClrPopoverService {
29860
29747
  this.openEvent = event;
29861
29748
  this.open = !this.open;
29862
29749
  }
29750
+ /**
29751
+ * Opens the popover at a specific screen coordinate.
29752
+ * Useful for context menus where the popover should appear at the cursor position.
29753
+ */
29754
+ openAtPoint(point) {
29755
+ if (this._open) {
29756
+ this._open = false;
29757
+ this._openChange.next(false);
29758
+ }
29759
+ this.origin = point;
29760
+ this.open = true;
29761
+ }
29863
29762
  popoverVisibleEmit(visible) {
29864
29763
  this._popoverVisible.next(visible);
29865
29764
  }
@@ -29872,8 +29771,8 @@ class ClrPopoverService {
29872
29771
  focusCloseButton() {
29873
29772
  this.closeButtonRef.nativeElement?.focus();
29874
29773
  }
29875
- focusAnchor() {
29876
- this.anchorElementRef?.nativeElement?.focus({ preventScroll: true });
29774
+ focusOrigin() {
29775
+ this.originElement?.nativeElement?.focus({ preventScroll: true });
29877
29776
  }
29878
29777
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
29879
29778
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverService }); }
@@ -30009,52 +29908,52 @@ function getOffset(key, type) {
30009
29908
  };
30010
29909
  }
30011
29910
  }
30012
- const STANDARD_ANCHORS = {
29911
+ const STANDARD_ORIGINS = {
30013
29912
  // TOP
30014
- [ClrPopoverPosition.TOP_RIGHT]: { anchor: ClrPosition$1.TOP_CENTER, content: ClrPosition$1.BOTTOM_LEFT },
30015
- [ClrPopoverPosition.TOP_MIDDLE]: { anchor: ClrPosition$1.TOP_CENTER, content: ClrPosition$1.BOTTOM_CENTER },
30016
- [ClrPopoverPosition.TOP_LEFT]: { anchor: ClrPosition$1.TOP_CENTER, content: ClrPosition$1.BOTTOM_RIGHT },
29913
+ [ClrPopoverPosition.TOP_RIGHT]: { origin: ClrPosition$1.TOP_CENTER, content: ClrPosition$1.BOTTOM_LEFT },
29914
+ [ClrPopoverPosition.TOP_MIDDLE]: { origin: ClrPosition$1.TOP_CENTER, content: ClrPosition$1.BOTTOM_CENTER },
29915
+ [ClrPopoverPosition.TOP_LEFT]: { origin: ClrPosition$1.TOP_CENTER, content: ClrPosition$1.BOTTOM_RIGHT },
30017
29916
  // LEFT
30018
- [ClrPopoverPosition.LEFT]: { anchor: ClrPosition$1.LEFT_CENTER, content: ClrPosition$1.RIGHT_TOP },
30019
- [ClrPopoverPosition.LEFT_TOP]: { anchor: ClrPosition$1.LEFT_CENTER, content: ClrPosition$1.RIGHT_BOTTOM },
30020
- [ClrPopoverPosition.LEFT_MIDDLE]: { anchor: ClrPosition$1.LEFT_CENTER, content: ClrPosition$1.RIGHT_CENTER },
30021
- [ClrPopoverPosition.LEFT_BOTTOM]: { anchor: ClrPosition$1.LEFT_CENTER, content: ClrPosition$1.RIGHT_TOP },
29917
+ [ClrPopoverPosition.LEFT]: { origin: ClrPosition$1.LEFT_CENTER, content: ClrPosition$1.RIGHT_TOP },
29918
+ [ClrPopoverPosition.LEFT_TOP]: { origin: ClrPosition$1.LEFT_CENTER, content: ClrPosition$1.RIGHT_BOTTOM },
29919
+ [ClrPopoverPosition.LEFT_MIDDLE]: { origin: ClrPosition$1.LEFT_CENTER, content: ClrPosition$1.RIGHT_CENTER },
29920
+ [ClrPopoverPosition.LEFT_BOTTOM]: { origin: ClrPosition$1.LEFT_CENTER, content: ClrPosition$1.RIGHT_TOP },
30022
29921
  // RIGHT
30023
- [ClrPopoverPosition.RIGHT]: { anchor: ClrPosition$1.RIGHT_CENTER, content: ClrPosition$1.LEFT_TOP },
30024
- [ClrPopoverPosition.RIGHT_TOP]: { anchor: ClrPosition$1.RIGHT_CENTER, content: ClrPosition$1.LEFT_BOTTOM },
30025
- [ClrPopoverPosition.RIGHT_MIDDLE]: { anchor: ClrPosition$1.RIGHT_CENTER, content: ClrPosition$1.LEFT_CENTER },
30026
- [ClrPopoverPosition.RIGHT_BOTTOM]: { anchor: ClrPosition$1.RIGHT_CENTER, content: ClrPosition$1.LEFT_TOP },
29922
+ [ClrPopoverPosition.RIGHT]: { origin: ClrPosition$1.RIGHT_CENTER, content: ClrPosition$1.LEFT_TOP },
29923
+ [ClrPopoverPosition.RIGHT_TOP]: { origin: ClrPosition$1.RIGHT_CENTER, content: ClrPosition$1.LEFT_BOTTOM },
29924
+ [ClrPopoverPosition.RIGHT_MIDDLE]: { origin: ClrPosition$1.RIGHT_CENTER, content: ClrPosition$1.LEFT_CENTER },
29925
+ [ClrPopoverPosition.RIGHT_BOTTOM]: { origin: ClrPosition$1.RIGHT_CENTER, content: ClrPosition$1.LEFT_TOP },
30027
29926
  // BOTTOM
30028
- [ClrPopoverPosition.BOTTOM_RIGHT]: { anchor: ClrPosition$1.BOTTOM_CENTER, content: ClrPosition$1.TOP_LEFT },
30029
- [ClrPopoverPosition.BOTTOM_MIDDLE]: { anchor: ClrPosition$1.BOTTOM_CENTER, content: ClrPosition$1.TOP_CENTER },
30030
- [ClrPopoverPosition.BOTTOM_LEFT]: { anchor: ClrPosition$1.BOTTOM_CENTER, content: ClrPosition$1.TOP_RIGHT },
29927
+ [ClrPopoverPosition.BOTTOM_RIGHT]: { origin: ClrPosition$1.BOTTOM_CENTER, content: ClrPosition$1.TOP_LEFT },
29928
+ [ClrPopoverPosition.BOTTOM_MIDDLE]: { origin: ClrPosition$1.BOTTOM_CENTER, content: ClrPosition$1.TOP_CENTER },
29929
+ [ClrPopoverPosition.BOTTOM_LEFT]: { origin: ClrPosition$1.BOTTOM_CENTER, content: ClrPosition$1.TOP_RIGHT },
30031
29930
  };
30032
- const DROPDOWN_ANCHORS = {
29931
+ const DROPDOWN_ORIGINS = {
30033
29932
  // TOP
30034
- [ClrPopoverPosition.TOP_RIGHT]: { anchor: ClrPosition$1.TOP_RIGHT, content: ClrPosition$1.BOTTOM_RIGHT },
30035
- [ClrPopoverPosition.TOP_LEFT]: { anchor: ClrPosition$1.TOP_LEFT, content: ClrPosition$1.BOTTOM_LEFT },
29933
+ [ClrPopoverPosition.TOP_RIGHT]: { origin: ClrPosition$1.TOP_RIGHT, content: ClrPosition$1.BOTTOM_RIGHT },
29934
+ [ClrPopoverPosition.TOP_LEFT]: { origin: ClrPosition$1.TOP_LEFT, content: ClrPosition$1.BOTTOM_LEFT },
30036
29935
  // LEFT
30037
- [ClrPopoverPosition.LEFT_TOP]: { anchor: ClrPosition$1.LEFT_TOP, content: ClrPosition$1.TOP_RIGHT },
30038
- [ClrPopoverPosition.LEFT_BOTTOM]: { anchor: ClrPosition$1.LEFT_BOTTOM, content: ClrPosition$1.BOTTOM_RIGHT },
29936
+ [ClrPopoverPosition.LEFT_TOP]: { origin: ClrPosition$1.LEFT_TOP, content: ClrPosition$1.TOP_RIGHT },
29937
+ [ClrPopoverPosition.LEFT_BOTTOM]: { origin: ClrPosition$1.LEFT_BOTTOM, content: ClrPosition$1.BOTTOM_RIGHT },
30039
29938
  // RIGHT
30040
- [ClrPopoverPosition.RIGHT_TOP]: { anchor: ClrPosition$1.RIGHT_TOP, content: ClrPosition$1.LEFT_TOP },
30041
- [ClrPopoverPosition.RIGHT_BOTTOM]: { anchor: ClrPosition$1.RIGHT_BOTTOM, content: ClrPosition$1.LEFT_BOTTOM },
29939
+ [ClrPopoverPosition.RIGHT_TOP]: { origin: ClrPosition$1.RIGHT_TOP, content: ClrPosition$1.LEFT_TOP },
29940
+ [ClrPopoverPosition.RIGHT_BOTTOM]: { origin: ClrPosition$1.RIGHT_BOTTOM, content: ClrPosition$1.LEFT_BOTTOM },
30042
29941
  // BOTTOM
30043
- [ClrPopoverPosition.BOTTOM_RIGHT]: { anchor: ClrPosition$1.BOTTOM_LEFT, content: ClrPosition$1.TOP_RIGHT },
30044
- [ClrPopoverPosition.BOTTOM_LEFT]: { anchor: ClrPosition$1.BOTTOM_RIGHT, content: ClrPosition$1.TOP_LEFT },
29942
+ [ClrPopoverPosition.BOTTOM_RIGHT]: { origin: ClrPosition$1.BOTTOM_LEFT, content: ClrPosition$1.TOP_RIGHT },
29943
+ [ClrPopoverPosition.BOTTOM_LEFT]: { origin: ClrPosition$1.BOTTOM_RIGHT, content: ClrPosition$1.TOP_LEFT },
30045
29944
  };
30046
29945
  function mapPopoverKeyToPosition(key, type) {
30047
29946
  let offset = getOffset(key, type);
30048
- const defaultPosition = { anchor: ClrPosition$1.BOTTOM_LEFT, content: ClrPosition$1.TOP_LEFT };
30049
- const { anchor, content } = (type === ClrPopoverType.DROPDOWN ? DROPDOWN_ANCHORS[key] : STANDARD_ANCHORS[key]) ?? defaultPosition;
29947
+ const defaultPosition = { origin: ClrPosition$1.BOTTOM_LEFT, content: ClrPosition$1.TOP_LEFT };
29948
+ const { origin, content } = (type === ClrPopoverType.DROPDOWN ? DROPDOWN_ORIGINS[key] : STANDARD_ORIGINS[key]) ?? defaultPosition;
30050
29949
  return {
30051
- ...getAnchorPosition(anchor),
29950
+ ...getOriginPosition(origin),
30052
29951
  ...getContentPosition(content),
30053
29952
  ...offset,
30054
29953
  panelClass: key,
30055
29954
  };
30056
29955
  }
30057
- function getAnchorPosition(key) {
29956
+ function getOriginPosition(key) {
30058
29957
  switch (key) {
30059
29958
  // TOP Positions
30060
29959
  case ClrPosition$1.TOP_LEFT:
@@ -30273,11 +30172,19 @@ class ClrPopoverContent {
30273
30172
  set scrollToClose(scrollToClose) {
30274
30173
  this._scrollToClose = !!scrollToClose;
30275
30174
  }
30175
+ set contentOrigin(origin) {
30176
+ if (origin instanceof Element) {
30177
+ this.popoverService.origin = new ElementRef(origin);
30178
+ }
30179
+ else {
30180
+ this.popoverService.origin = origin;
30181
+ }
30182
+ }
30276
30183
  get positionStrategy() {
30277
30184
  return this.overlay
30278
30185
  .position()
30279
- .flexibleConnectedTo(this.popoverService.anchorElementRef)
30280
- .setOrigin(this.popoverService.anchorElementRef)
30186
+ .flexibleConnectedTo(this.popoverService.origin)
30187
+ .setOrigin(this.popoverService.origin)
30281
30188
  .withPush(true)
30282
30189
  .withPositions([this.preferredPosition, ...this._availablePositions])
30283
30190
  .withFlexibleDimensions(true);
@@ -30320,13 +30227,38 @@ class ClrPopoverContent {
30320
30227
  }), this.popoverService.updatePositionChange().subscribe(() => {
30321
30228
  this.overlayRef?.updatePosition();
30322
30229
  }), this.overlayRef.keydownEvents().subscribe(event => {
30323
- if (event && event.key && normalizeKey$1(event.key) === Keys$1.Escape && !hasModifierKey(event)) {
30230
+ if (event && event.key && event.key === Keys$1.Escape && !hasModifierKey(event)) {
30324
30231
  event.preventDefault();
30325
30232
  this.closePopover();
30326
30233
  }
30327
- }), this.overlayRef.outsidePointerEvents().subscribe(event => {
30234
+ }), this.popoverService.originPoint
30235
+ ? this.createPointBasedOutsideClickSubscription()
30236
+ : this.createElementBasedOutsideClickSubscription());
30237
+ }
30238
+ /**
30239
+ * Point-based origins (context menus) delay the subscription to avoid the
30240
+ * mouseup from the same right-click that opened the popover.
30241
+ */
30242
+ createPointBasedOutsideClickSubscription() {
30243
+ return timer(500)
30244
+ .pipe(switchMap$1(() => this.overlayRef.outsidePointerEvents()))
30245
+ .subscribe(event => {
30246
+ if (this.elementRef?.nativeElement?.contains(event.target)) {
30247
+ return;
30248
+ }
30249
+ if (this._outsideClickClose) {
30250
+ this.closePopover();
30251
+ }
30252
+ });
30253
+ }
30254
+ /**
30255
+ * Element-based origins close on outside clicks and suppress toggle-button
30256
+ * re-clicks so the popover doesn't immediately reopen.
30257
+ */
30258
+ createElementBasedOutsideClickSubscription() {
30259
+ return this.overlayRef.outsidePointerEvents().subscribe(event => {
30328
30260
  // web components (cds-icon) register as outside pointer events, so if the event target is inside the content panel return early
30329
- if (this.elementRef && this.elementRef.nativeElement.contains(event.target)) {
30261
+ if (this.elementRef?.nativeElement?.contains(event.target)) {
30330
30262
  return;
30331
30263
  }
30332
30264
  // Check if the same element that opened the popover is the same element triggering the outside pointer events (toggle button)
@@ -30340,7 +30272,7 @@ class ClrPopoverContent {
30340
30272
  if (this._outsideClickClose || isToggleButton) {
30341
30273
  this.closePopover();
30342
30274
  }
30343
- }));
30275
+ });
30344
30276
  }
30345
30277
  resetPosition() {
30346
30278
  if (this.overlayRef) {
@@ -30354,11 +30286,13 @@ class ClrPopoverContent {
30354
30286
  }
30355
30287
  this.removeOverlay();
30356
30288
  this.popoverService.open = false;
30357
- const shouldFocusTrigger = this.popoverType !== ClrPopoverType.TOOLTIP &&
30358
- (document.activeElement === document.body ||
30359
- document.activeElement === this.popoverService.anchorElementRef?.nativeElement);
30360
- if (shouldFocusTrigger) {
30361
- this.popoverService.focusAnchor();
30289
+ if (this.popoverService.originElement) {
30290
+ const shouldFocusTrigger = this.popoverType !== ClrPopoverType.TOOLTIP &&
30291
+ (document.activeElement === document.body ||
30292
+ document.activeElement === this.popoverService.originElement.nativeElement);
30293
+ if (shouldFocusTrigger) {
30294
+ this.popoverService.focusOrigin();
30295
+ }
30362
30296
  }
30363
30297
  }
30364
30298
  showOverlay() {
@@ -30376,15 +30310,17 @@ class ClrPopoverContent {
30376
30310
  this.domPortal = new DomPortal(this.elementRef);
30377
30311
  this.overlayRef.attach(this.domPortal);
30378
30312
  }
30379
- this.popoverService?.anchorElementRef?.nativeElement.scrollIntoView({
30380
- behavior: 'instant',
30381
- block: 'nearest',
30382
- inline: 'nearest',
30383
- });
30384
- this.setupIntersectionObserver();
30313
+ if (this.popoverService.originElement) {
30314
+ this.popoverService.originElement.nativeElement.scrollIntoView({
30315
+ behavior: 'instant',
30316
+ block: 'nearest',
30317
+ inline: 'nearest',
30318
+ });
30319
+ this.setupIntersectionObserver();
30320
+ }
30385
30321
  setTimeout(() => {
30386
30322
  // Get Scrollable Parents
30387
- this.listenToMouseEvents();
30323
+ this.listenToScrollEvents();
30388
30324
  this.popoverService.popoverVisibleEmit(true);
30389
30325
  if (this.elementRef?.nativeElement?.focus) {
30390
30326
  this.elementRef.nativeElement.focus();
@@ -30431,30 +30367,46 @@ class ClrPopoverContent {
30431
30367
  return scrollableParents;
30432
30368
  }
30433
30369
  /**
30434
- * Uses IntersectionObserver to detect when the anchor leaves the screen.
30370
+ * Uses IntersectionObserver to detect when the origin element leaves the screen.
30435
30371
  * This handles the "Close on Scroll" logic much cheaper than getBoundingClientRect.
30436
30372
  */
30437
30373
  setupIntersectionObserver() {
30438
- if (!this.popoverService.anchorElementRef || this.intersectionObserver) {
30374
+ if (!this.popoverService.originElement || this.intersectionObserver) {
30439
30375
  return;
30440
30376
  }
30441
30377
  this.intersectionObserver = new IntersectionObserver(entries => {
30442
30378
  entries.forEach(entry => {
30443
- // If the anchor is no longer visible (scrolled out of view)
30379
+ // If the origin is no longer visible (scrolled out of view)
30444
30380
  if (!entry.isIntersecting && this.popoverService.open) {
30445
30381
  this.zone.run(() => this.closePopover());
30446
30382
  }
30447
30383
  });
30448
30384
  }, { root: null, threshold: 0.8 });
30449
- this.intersectionObserver.observe(this.popoverService.anchorElementRef.nativeElement);
30385
+ this.intersectionObserver.observe(this.popoverService.originElement.nativeElement);
30450
30386
  }
30451
- //Align the popover on scrolling
30452
- listenToMouseEvents() {
30387
+ listenToScrollEvents() {
30453
30388
  if (!isPlatformBrowser(this.platformId)) {
30454
30389
  return;
30455
30390
  }
30456
- const anchor = this.getRootPopover(this)?.popoverService?.anchorElementRef?.nativeElement;
30457
- const scrollableParents = this.getScrollableParents(anchor);
30391
+ if (this.popoverService.originPoint) {
30392
+ this.listenToScrollForPointOrigin();
30393
+ }
30394
+ else {
30395
+ this.listenToScrollForElementOrigin();
30396
+ }
30397
+ }
30398
+ // Point origins have no scrollable parent chain — close on any scroll.
30399
+ listenToScrollForPointOrigin() {
30400
+ this.zone.runOutsideAngular(() => {
30401
+ this.subscriptions.push(fromEvent(window, 'scroll', { passive: true, capture: true }).subscribe(() => {
30402
+ this.zone.run(() => this.closePopover());
30403
+ }));
30404
+ });
30405
+ }
30406
+ // Element origins track ancestor scroll containers to reposition or close.
30407
+ listenToScrollForElementOrigin() {
30408
+ const originEl = this.getRootPopover(this)?.popoverService?.originElement?.nativeElement;
30409
+ const scrollableParents = this.getScrollableParents(originEl);
30458
30410
  this.zone.runOutsideAngular(() => {
30459
30411
  this.subscriptions.push(merge(...scrollableParents.map(parent => fromEvent(parent, 'scroll', { passive: true }))).subscribe(() => {
30460
30412
  if (this._scrollToClose) {
@@ -30472,7 +30424,7 @@ class ClrPopoverContent {
30472
30424
  return popover;
30473
30425
  }
30474
30426
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverContent, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i0.TemplateRef, optional: true }, { token: i1$8.OverlayContainer }, { token: ClrPopoverContent, optional: true, skipSelf: true }, { token: i1$8.Overlay }, { token: ClrPopoverService }, { token: i0.NgZone }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Directive }); }
30475
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrPopoverContent, isStandalone: true, selector: "[clrPopoverContent]", inputs: { open: ["clrPopoverContent", "open"], contentAt: ["clrPopoverContentAt", "contentAt"], availablePositions: ["clrPopoverContentAvailablePositions", "availablePositions"], contentType: ["clrPopoverContentType", "contentType"], outsideClickClose: ["clrPopoverContentOutsideClickToClose", "outsideClickClose"], scrollToClose: ["clrPopoverContentScrollToClose", "scrollToClose"] }, ngImport: i0 }); }
30427
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrPopoverContent, isStandalone: true, selector: "[clrPopoverContent]", inputs: { open: ["clrPopoverContent", "open"], contentAt: ["clrPopoverContentAt", "contentAt"], availablePositions: ["clrPopoverContentAvailablePositions", "availablePositions"], contentType: ["clrPopoverContentType", "contentType"], outsideClickClose: ["clrPopoverContentOutsideClickToClose", "outsideClickClose"], scrollToClose: ["clrPopoverContentScrollToClose", "scrollToClose"], contentOrigin: ["clrPopoverContentOrigin", "contentOrigin"] }, ngImport: i0 }); }
30476
30428
  }
30477
30429
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverContent, decorators: [{
30478
30430
  type: Directive,
@@ -30509,6 +30461,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
30509
30461
  }], scrollToClose: [{
30510
30462
  type: Input,
30511
30463
  args: ['clrPopoverContentScrollToClose']
30464
+ }], contentOrigin: [{
30465
+ type: Input,
30466
+ args: ['clrPopoverContentOrigin']
30512
30467
  }] } });
30513
30468
 
30514
30469
  /*
@@ -30517,19 +30472,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
30517
30472
  * This software is released under MIT license.
30518
30473
  * The full license information can be found in LICENSE in the root directory of this project.
30519
30474
  */
30520
- class ClrPopoverAnchor {
30475
+ class ClrPopoverOrigin {
30521
30476
  constructor(popoverService, element) {
30522
- popoverService.anchorElementRef = element;
30477
+ popoverService.origin = element;
30523
30478
  }
30524
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverAnchor, deps: [{ token: ClrPopoverService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
30525
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrPopoverAnchor, isStandalone: false, selector: "[clrPopoverAnchor]", host: { properties: { "class.clr-anchor": "true" } }, ngImport: i0 }); }
30479
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverOrigin, deps: [{ token: ClrPopoverService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
30480
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrPopoverOrigin, isStandalone: false, selector: "[clrPopoverOrigin]", host: { properties: { "class.clr-popover-origin": "true" } }, ngImport: i0 }); }
30526
30481
  }
30527
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverAnchor, decorators: [{
30482
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverOrigin, decorators: [{
30528
30483
  type: Directive,
30529
30484
  args: [{
30530
- selector: '[clrPopoverAnchor]',
30485
+ selector: '[clrPopoverOrigin]',
30531
30486
  host: {
30532
- '[class.clr-anchor]': 'true',
30487
+ '[class.clr-popover-origin]': 'true',
30533
30488
  },
30534
30489
  standalone: false,
30535
30490
  }]
@@ -30541,7 +30496,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
30541
30496
  * This software is released under MIT license.
30542
30497
  * The full license information can be found in LICENSE in the root directory of this project.
30543
30498
  */
30544
- const POPOVER_HOST_ANCHOR = new InjectionToken('POPOVER_HOST_ANCHOR');
30499
+ const POPOVER_HOST_ORIGIN = new InjectionToken('POPOVER_HOST_ORIGIN');
30545
30500
 
30546
30501
  /*
30547
30502
  * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
@@ -30591,13 +30546,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
30591
30546
  */
30592
30547
  class ClrPopoverHostDirective {
30593
30548
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverHostDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
30594
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrPopoverHostDirective, isStandalone: true, providers: [ClrPopoverService, { provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef }], hostDirectives: [{ directive: ClrStopEscapePropagationDirective }], ngImport: i0 }); }
30549
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrPopoverHostDirective, isStandalone: true, providers: [ClrPopoverService, { provide: POPOVER_HOST_ORIGIN, useExisting: ElementRef }], hostDirectives: [{ directive: ClrStopEscapePropagationDirective }], ngImport: i0 }); }
30595
30550
  }
30596
30551
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverHostDirective, decorators: [{
30597
30552
  type: Directive,
30598
30553
  args: [{
30599
30554
  standalone: true,
30600
- providers: [ClrPopoverService, { provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef }],
30555
+ providers: [ClrPopoverService, { provide: POPOVER_HOST_ORIGIN, useExisting: ElementRef }],
30601
30556
  hostDirectives: [ClrStopEscapePropagationDirective],
30602
30557
  }]
30603
30558
  }] });
@@ -30703,12 +30658,12 @@ class ClrPopoverCloseButton {
30703
30658
  this.closeChange = new EventEmitter();
30704
30659
  this.subscriptions = [];
30705
30660
  this.subscriptions.push(popoverService.openChange.pipe(filter(value => !value)).subscribe(() => {
30706
- this.closeChange.next();
30661
+ this.closeChange.emit();
30707
30662
  }));
30708
30663
  }
30709
30664
  handleClick(event) {
30710
30665
  this.popoverService.toggleWithEvent(event);
30711
- this.popoverService.focusAnchor();
30666
+ this.popoverService.focusOrigin();
30712
30667
  }
30713
30668
  ngAfterViewInit() {
30714
30669
  this.popoverService.closeButtonRef = this.elementRef;
@@ -30748,7 +30703,7 @@ class ClrPopoverOpenCloseButton {
30748
30703
  this.openCloseChange = new EventEmitter();
30749
30704
  this.subscriptions = [];
30750
30705
  this.subscriptions.push(popoverService.openChange.subscribe(change => {
30751
- this.openCloseChange.next(change);
30706
+ this.openCloseChange.emit(change);
30752
30707
  }));
30753
30708
  }
30754
30709
  handleClick(event) {
@@ -30785,15 +30740,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
30785
30740
  */
30786
30741
  class ClrPopoverModuleNext {
30787
30742
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverModuleNext, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
30788
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverModuleNext, declarations: [ClrPopoverAnchor, ClrPopoverCloseButton, ClrPopoverOpenCloseButton], imports: [ClrPopoverContent, ClrIfOpen], exports: [ClrPopoverAnchor, ClrPopoverCloseButton, ClrPopoverOpenCloseButton, ClrPopoverContent, ClrIfOpen] }); }
30743
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverModuleNext, declarations: [ClrPopoverOrigin, ClrPopoverCloseButton, ClrPopoverOpenCloseButton], imports: [ClrPopoverContent, ClrIfOpen], exports: [ClrPopoverOrigin, ClrPopoverCloseButton, ClrPopoverOpenCloseButton, ClrPopoverContent, ClrIfOpen] }); }
30789
30744
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverModuleNext }); }
30790
30745
  }
30791
30746
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverModuleNext, decorators: [{
30792
30747
  type: NgModule,
30793
30748
  args: [{
30794
30749
  imports: [ClrPopoverContent, ClrIfOpen],
30795
- declarations: [ClrPopoverAnchor, ClrPopoverCloseButton, ClrPopoverOpenCloseButton],
30796
- exports: [ClrPopoverAnchor, ClrPopoverCloseButton, ClrPopoverOpenCloseButton, ClrPopoverContent, ClrIfOpen],
30750
+ declarations: [ClrPopoverOrigin, ClrPopoverCloseButton, ClrPopoverOpenCloseButton],
30751
+ exports: [ClrPopoverOrigin, ClrPopoverCloseButton, ClrPopoverOpenCloseButton, ClrPopoverContent, ClrIfOpen],
30797
30752
  }]
30798
30753
  }] });
30799
30754
 
@@ -30892,7 +30847,7 @@ class ClrSignpostTrigger {
30892
30847
  this.document = document;
30893
30848
  }
30894
30849
  ngOnInit() {
30895
- this.popoverService.anchorElementRef = this.el;
30850
+ this.popoverService.origin = this.el;
30896
30851
  this.signpostFocusManager.triggerEl = this.el.nativeElement;
30897
30852
  this.subscriptions.push(this.popoverService.openChange.subscribe((isOpen) => {
30898
30853
  this.ariaExpanded = isOpen;
@@ -30969,8 +30924,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
30969
30924
  *
30970
30925
  */
30971
30926
  class ClrSignpost {
30972
- constructor(commonStrings) {
30927
+ constructor(commonStrings, popoverService) {
30973
30928
  this.commonStrings = commonStrings;
30929
+ this.popoverService = popoverService;
30974
30930
  /**********
30975
30931
  * @property useCustomTrigger
30976
30932
  *
@@ -30979,6 +30935,11 @@ class ClrSignpost {
30979
30935
  *
30980
30936
  */
30981
30937
  this.useCustomTrigger = false;
30938
+ /**
30939
+ * Hides the default trigger button. Use when the signpost is opened
30940
+ * programmatically via `openAtPoint()` and no trigger icon is needed.
30941
+ */
30942
+ this.hideTrigger = false;
30982
30943
  }
30983
30944
  /**********
30984
30945
  * @property signPostTrigger
@@ -30990,9 +30951,15 @@ class ClrSignpost {
30990
30951
  set customTrigger(trigger) {
30991
30952
  this.useCustomTrigger = !!trigger;
30992
30953
  }
30993
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrSignpost, deps: [{ token: i1$1.ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component }); }
30994
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrSignpost, isStandalone: false, selector: "clr-signpost", inputs: { signpostTriggerAriaLabel: ["clrSignpostTriggerAriaLabel", "signpostTriggerAriaLabel"] }, host: { properties: { "class.signpost": "true" } }, providers: [SignpostFocusManager, SignpostIdService], queries: [{ propertyName: "customTrigger", first: true, predicate: ClrSignpostTrigger, descendants: true }], hostDirectives: [{ directive: i2.ClrPopoverHostDirective }], ngImport: i0, template: `
30995
- @if (!useCustomTrigger) {
30954
+ get showDefaultTrigger() {
30955
+ return !this.useCustomTrigger && !this.hideTrigger;
30956
+ }
30957
+ openAtPoint(point) {
30958
+ this.popoverService.openAtPoint(point);
30959
+ }
30960
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrSignpost, deps: [{ token: i1$1.ClrCommonStringsService }, { token: i2.ClrPopoverService }], target: i0.ɵɵFactoryTarget.Component }); }
30961
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrSignpost, isStandalone: false, selector: "clr-signpost", inputs: { signpostTriggerAriaLabel: ["clrSignpostTriggerAriaLabel", "signpostTriggerAriaLabel"], hideTrigger: ["clrSignpostHideTrigger", "hideTrigger"] }, host: { properties: { "class.signpost": "true" } }, providers: [SignpostFocusManager, SignpostIdService], queries: [{ propertyName: "customTrigger", first: true, predicate: ClrSignpostTrigger, descendants: true }], hostDirectives: [{ directive: i2.ClrPopoverHostDirective }], ngImport: i0, template: `
30962
+ @if (showDefaultTrigger) {
30996
30963
  <button
30997
30964
  type="button"
30998
30965
  class="signpost-action btn btn-sm btn-icon btn-link"
@@ -31011,7 +30978,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
31011
30978
  args: [{
31012
30979
  selector: 'clr-signpost',
31013
30980
  template: `
31014
- @if (!useCustomTrigger) {
30981
+ @if (showDefaultTrigger) {
31015
30982
  <button
31016
30983
  type="button"
31017
30984
  class="signpost-action btn btn-sm btn-icon btn-link"
@@ -31029,9 +30996,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
31029
30996
  hostDirectives: [ClrPopoverHostDirective$1],
31030
30997
  standalone: false,
31031
30998
  }]
31032
- }], ctorParameters: () => [{ type: i1$1.ClrCommonStringsService }], propDecorators: { signpostTriggerAriaLabel: [{
30999
+ }], ctorParameters: () => [{ type: i1$1.ClrCommonStringsService }, { type: i2.ClrPopoverService }], propDecorators: { signpostTriggerAriaLabel: [{
31033
31000
  type: Input,
31034
31001
  args: ['clrSignpostTriggerAriaLabel']
31002
+ }], hideTrigger: [{
31003
+ type: Input,
31004
+ args: ['clrSignpostHideTrigger']
31035
31005
  }], customTrigger: [{
31036
31006
  type: ContentChild,
31037
31007
  args: [ClrSignpostTrigger]
@@ -31066,8 +31036,8 @@ class ClrSignpostContent {
31066
31036
  *
31067
31037
  * @description
31068
31038
  * A setter for the position of the ClrSignpostContent popover. This is a combination of the following:
31069
- * - anchorPoint - where on the trigger to anchor the ClrSignpostContent
31070
- * - popoverPoint - where on the ClrSignpostContent container to align with the anchorPoint
31039
+ * - originPoint - where on the trigger to position the content
31040
+ * - popoverPoint - where on the content container to align with the origin
31071
31041
  * - offsetY - where on the Y axis to align the ClrSignpostContent so it meets specs
31072
31042
  * - offsetX - where on the X axis to align the ClrSignpostContent so it meets specs
31073
31043
  * There are 12 possible positions to place a ClrSignpostContent container:
@@ -31137,7 +31107,7 @@ class ClrSignpostContent {
31137
31107
  getFocusableElements(element) {
31138
31108
  return Array.from(element.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'));
31139
31109
  }
31140
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrSignpostContent, deps: [{ token: POPOVER_HOST_ANCHOR$1, optional: true }, { token: i0.ElementRef }, { token: i1$1.ClrCommonStringsService }, { token: SignpostIdService }, { token: SignpostFocusManager }, { token: PLATFORM_ID }, { token: DOCUMENT }, { token: i2.ClrPopoverService }, { token: i2.ClrPopoverContent }], target: i0.ɵɵFactoryTarget.Component }); }
31110
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrSignpostContent, deps: [{ token: POPOVER_HOST_ORIGIN$1, optional: true }, { token: i0.ElementRef }, { token: i1$1.ClrCommonStringsService }, { token: SignpostIdService }, { token: SignpostFocusManager }, { token: PLATFORM_ID }, { token: DOCUMENT }, { token: i2.ClrPopoverService }, { token: i2.ClrPopoverContent }], target: i0.ɵɵFactoryTarget.Component }); }
31141
31111
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrSignpostContent, isStandalone: false, selector: "clr-signpost-content", inputs: { signpostCloseAriaLabel: ["clrSignpostCloseAriaLabel", "signpostCloseAriaLabel"], position: ["clrPosition", "position"] }, host: { attributes: { "role": "dialog" }, listeners: { "keydown": "onKeyDown($event)" }, properties: { "class.signpost-content": "true", "id": "signpostContentId", "class.is-off-screen": "this.isOffScreen" } }, viewQueries: [{ propertyName: "closeButton", first: true, predicate: ["closeButton"], descendants: true, read: ElementRef }], hostDirectives: [{ directive: i2.ClrPopoverContent }], ngImport: i0, template: `
31142
31112
  <div class="signpost-wrap">
31143
31113
  <div class="popover-pointer"></div>
@@ -31197,7 +31167,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
31197
31167
  type: Optional
31198
31168
  }, {
31199
31169
  type: Inject,
31200
- args: [POPOVER_HOST_ANCHOR$1]
31170
+ args: [POPOVER_HOST_ORIGIN$1]
31201
31171
  }] }, { type: i0.ElementRef }, { type: i1$1.ClrCommonStringsService }, { type: SignpostIdService }, { type: SignpostFocusManager }, { type: undefined, decorators: [{
31202
31172
  type: Inject,
31203
31173
  args: [PLATFORM_ID]
@@ -31385,7 +31355,7 @@ class ClrTooltipTrigger {
31385
31355
  this.subs = [];
31386
31356
  // The aria-described by comes from the id of content. It
31387
31357
  this.subs.push(tooltipIdService.id.subscribe(tooltipId => (this.ariaDescribedBy = tooltipId)));
31388
- popoverService.anchorElementRef = element;
31358
+ popoverService.origin = element;
31389
31359
  }
31390
31360
  ngOnDestroy() {
31391
31361
  this.subs.forEach(sub => sub.unsubscribe());
@@ -31495,7 +31465,7 @@ class ClrTooltipContent {
31495
31465
  this.renderer.removeClass(this.el.nativeElement, oldClass);
31496
31466
  this.renderer.addClass(this.el.nativeElement, newClass);
31497
31467
  }
31498
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrTooltipContent, deps: [{ token: POPOVER_HOST_ANCHOR$1, optional: true }, { token: TooltipIdService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i2.ClrPopoverService }, { token: TooltipMouseService }, { token: i2.ClrPopoverContent }], target: i0.ɵɵFactoryTarget.Component }); }
31468
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrTooltipContent, deps: [{ token: POPOVER_HOST_ORIGIN$1, optional: true }, { token: TooltipIdService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i2.ClrPopoverService }, { token: TooltipMouseService }, { token: i2.ClrPopoverContent }], target: i0.ɵɵFactoryTarget.Component }); }
31499
31469
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrTooltipContent, isStandalone: false, selector: "clr-tooltip-content", inputs: { id: "id", position: ["clrPosition", "position"], size: ["clrSize", "size"] }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()" }, properties: { "class.tooltip-content": "true", "style.opacity": "1", "attr.role": "\"tooltip\"", "id": "id" } }, hostDirectives: [{ directive: i2.ClrPopoverContent }], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
31500
31470
  }
31501
31471
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrTooltipContent, decorators: [{
@@ -31516,7 +31486,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
31516
31486
  type: Optional
31517
31487
  }, {
31518
31488
  type: Inject,
31519
- args: [POPOVER_HOST_ANCHOR$1]
31489
+ args: [POPOVER_HOST_ORIGIN$1]
31520
31490
  }] }, { type: TooltipIdService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i2.ClrPopoverService }, { type: TooltipMouseService }, { type: i2.ClrPopoverContent }], propDecorators: { id: [{
31521
31491
  type: Input
31522
31492
  }], position: [{
@@ -31868,7 +31838,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
31868
31838
  /**
31869
31839
  * HostWrapper must be called in OnInit to ensure that the Views are ready. If its called in a constructor the view is
31870
31840
  * still undefined.
31871
- * TODO - make sure these comment annotations do not break ng-packgr.
31872
31841
  */
31873
31842
  class HostWrapper {
31874
31843
  constructor(containerType, vcr, index = 0) {
@@ -33120,15 +33089,6 @@ var Keys;
33120
33089
  Keys["PageDown"] = "PageDown";
33121
33090
  Keys["PageUp"] = "PageUp";
33122
33091
  })(Keys || (Keys = {}));
33123
- var IEKeys;
33124
- (function (IEKeys) {
33125
- IEKeys["ArrowUp"] = "Up";
33126
- IEKeys["ArrowDown"] = "Down";
33127
- IEKeys["ArrowRight"] = "Right";
33128
- IEKeys["ArrowLeft"] = "Left";
33129
- IEKeys["Space"] = "Spacebar";
33130
- IEKeys["Escape"] = "Esc";
33131
- })(IEKeys || (IEKeys = {}));
33132
33092
 
33133
33093
  /*
33134
33094
  * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
@@ -33136,31 +33096,8 @@ var IEKeys;
33136
33096
  * This software is released under MIT license.
33137
33097
  * The full license information can be found in LICENSE in the root directory of this project.
33138
33098
  */
33139
- function normalizeKey(key) {
33140
- if (key === Keys.ArrowUp || key === IEKeys.ArrowUp) {
33141
- return Keys.ArrowUp;
33142
- }
33143
- else if (key === Keys.ArrowDown || key === IEKeys.ArrowDown) {
33144
- return Keys.ArrowDown;
33145
- }
33146
- else if (key === Keys.ArrowRight || key === IEKeys.ArrowRight) {
33147
- return Keys.ArrowRight;
33148
- }
33149
- else if (key === Keys.ArrowLeft || key === IEKeys.ArrowLeft) {
33150
- return Keys.ArrowLeft;
33151
- }
33152
- else if (key === Keys.Space || key === IEKeys.Space) {
33153
- return Keys.Space;
33154
- }
33155
- else if (key === Keys.Escape || key === IEKeys.Escape) {
33156
- return Keys.Escape;
33157
- }
33158
- else {
33159
- return key;
33160
- }
33161
- }
33162
33099
  function preventArrowKeyScroll(event) {
33163
- const key = normalizeKey(event.key);
33100
+ const key = event.key;
33164
33101
  if (key === Keys.ArrowUp || key === Keys.ArrowDown || key === Keys.ArrowLeft || key === Keys.ArrowRight) {
33165
33102
  // prevent element container scroll
33166
33103
  // MDN references this is really the only way to prevent native browser interactions
@@ -33265,7 +33202,7 @@ class ClrKeyFocus {
33265
33202
  }
33266
33203
  focusCurrent() {
33267
33204
  this.currentItem.focus();
33268
- this.focusChange.next(this._current);
33205
+ this.focusChange.emit(this._current);
33269
33206
  }
33270
33207
  moveTo(position) {
33271
33208
  if (this.positionInRange(position)) {
@@ -33297,27 +33234,25 @@ class ClrKeyFocus {
33297
33234
  }
33298
33235
  }
33299
33236
  nextKeyPressed(event) {
33300
- const key = normalizeKey(event.key);
33301
33237
  switch (this.direction) {
33302
33238
  case ClrFocusDirection.VERTICAL:
33303
- return key === Keys.ArrowDown;
33239
+ return event.key === Keys.ArrowDown;
33304
33240
  case ClrFocusDirection.HORIZONTAL:
33305
- return key === Keys.ArrowRight;
33241
+ return event.key === Keys.ArrowRight;
33306
33242
  case ClrFocusDirection.BOTH:
33307
- return key === Keys.ArrowDown || key === Keys.ArrowRight;
33243
+ return event.key === Keys.ArrowDown || event.key === Keys.ArrowRight;
33308
33244
  default:
33309
33245
  return false;
33310
33246
  }
33311
33247
  }
33312
33248
  prevKeyPressed(event) {
33313
- const key = normalizeKey(event.key);
33314
33249
  switch (this.direction) {
33315
33250
  case ClrFocusDirection.VERTICAL:
33316
- return key === Keys.ArrowUp;
33251
+ return event.key === Keys.ArrowUp;
33317
33252
  case ClrFocusDirection.HORIZONTAL:
33318
- return key === Keys.ArrowLeft;
33253
+ return event.key === Keys.ArrowLeft;
33319
33254
  case ClrFocusDirection.BOTH:
33320
- return key === Keys.ArrowUp || key === Keys.ArrowLeft;
33255
+ return event.key === Keys.ArrowUp || event.key === Keys.ArrowLeft;
33321
33256
  default:
33322
33257
  return false;
33323
33258
  }
@@ -33982,11 +33917,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
33982
33917
  *
33983
33918
  *
33984
33919
  * Consumers tell us that they want something to display on the TOP_LEFT of the trigger and that they want the
33985
- * _content_ container to anchor/orient AT the bottom left.
33986
- * In order to calculate the position for the content I need to match up the anchor/toggle ClrPosition with the
33920
+ * _content_ container to orient AT the bottom left.
33921
+ * In order to calculate the position for the content I need to match up the origin/trigger ClrPosition with the
33987
33922
  * content ClrPosition.
33988
33923
  *
33989
- * Anchor TOP_LEFT **AT** Content BOTTOM_LEFT.
33924
+ * Origin TOP_LEFT **AT** Content BOTTOM_LEFT.
33990
33925
  * -----------
33991
33926
  * | |
33992
33927
  * | |
@@ -34668,9 +34603,7 @@ class WizardNavigationService {
34668
34603
  *
34669
34604
  * @memberof WizardNavigationService
34670
34605
  */
34671
- get currentPageChanged() {
34672
- // TODO: MAKE SURE EXTERNAL OUTPUTS SAY 'CHANGE' NOT 'CHANGED'
34673
- // A BREAKING CHANGE SO AWAITING MINOR RELEASE
34606
+ get currentPageChange() {
34674
34607
  return this._currentChanged.asObservable();
34675
34608
  }
34676
34609
  /**
@@ -36048,7 +35981,7 @@ class ClrWizardStepnavItem {
36048
35981
  // Don't use "smooth" scrolling when the wizard is first opened to avoid a delay in scrolling the current step into view.
36049
35982
  // The current step when the wizard is opened might not be the first step. For example, the wizard can be closed and re-opened.
36050
35983
  let scrollBehavior = 'auto';
36051
- return this.navService.currentPageChanged.pipe(startWith$1(this.navService.currentPage), tap(currentPage => {
35984
+ return this.navService.currentPageChange.pipe(startWith$1(this.navService.currentPage), tap(currentPage => {
36052
35985
  if (!this.skipNextScroll && currentPage === this.page) {
36053
35986
  this.elementRef.nativeElement.scrollIntoView({ behavior: scrollBehavior, block: 'center', inline: 'center' });
36054
35987
  }
@@ -36249,10 +36182,10 @@ class ClrWizard {
36249
36182
  */
36250
36183
  this.onReset = new EventEmitter(false);
36251
36184
  /**
36252
- * Emits when the current page has changed. Listen via `(clrWizardCurrentPageChanged)` event.
36185
+ * Emits when the current page has changed. Listen via `(clrWizardCurrentPageChange)` event.
36253
36186
  * output. Useful for non-blocking validation.
36254
36187
  */
36255
- this.currentPageChanged = new EventEmitter(false);
36188
+ this.currentPageChange = new EventEmitter(false);
36256
36189
  /**
36257
36190
  * Emits when the wizard moves to the next page. Listen via `(clrWizardOnNext)` event.
36258
36191
  * Can be combined with the `[clrWizardPreventDefaultNext]` input to create
@@ -36275,6 +36208,13 @@ class ClrWizard {
36275
36208
  this.subscriptions.push(this.listenForNextPageChanges(), this.listenForPreviousPageChanges(), this.listenForCancelChanges(), this.listenForFinishedChanges(), this.listenForPageChanges());
36276
36209
  this.differ = differs.find([]).create(null);
36277
36210
  }
36211
+ get title() {
36212
+ return this._title;
36213
+ }
36214
+ set title(title) {
36215
+ this._title = title;
36216
+ this.modal.title = title;
36217
+ }
36278
36218
  /**
36279
36219
  * Resets page completed states when navigating backwards.
36280
36220
  * Set using `[clrWizardForceForwardNavigation]` input.
@@ -36564,12 +36504,12 @@ class ClrWizard {
36564
36504
  return this.navService.wizardFinished.subscribe(() => this.emitWizardFinished());
36565
36505
  }
36566
36506
  listenForPageChanges() {
36567
- return this.navService.currentPageChanged.subscribe(() => {
36507
+ return this.navService.currentPageChange.subscribe(() => {
36568
36508
  // Added to address VPAT-749:
36569
36509
  // When clicking on a wizard tab, focus should move to that
36570
36510
  // tabs content to make the wizard more accessible.
36571
36511
  this.pageTitle?.nativeElement.focus();
36572
- this.currentPageChanged.emit();
36512
+ this.currentPageChange.emit();
36573
36513
  // scroll to top of page in case there is long page content
36574
36514
  this.bodyElementRef?.nativeElement.scrollTo(0, 0);
36575
36515
  });
@@ -36594,7 +36534,7 @@ class ClrWizard {
36594
36534
  this.wizardFinished.emit();
36595
36535
  }
36596
36536
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrWizard, deps: [{ token: PLATFORM_ID }, { token: i1$1.ClrCommonStringsService }, { token: WizardNavigationService }, { token: PageCollectionService }, { token: ButtonHubService }, { token: HeaderActionService }, { token: i0.ElementRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Component }); }
36597
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrWizard, isStandalone: false, selector: "clr-wizard", inputs: { stepnavAriaLabel: ["clrWizardStepnavAriaLabel", "stepnavAriaLabel"], size: ["clrWizardSize", "size"], inPage: ["clrWizardInPage", "inPage"], inPageFillContentArea: ["clrWizardInPageFillContentArea", "inPageFillContentArea"], closable: ["clrWizardClosable", "closable"], _stopModalAnimations: ["clrWizardPreventModalAnimation", "_stopModalAnimations"], forceForward: ["clrWizardForceForwardNavigation", "forceForward"], clrWizardOpen: "clrWizardOpen", stopNext: ["clrWizardPreventDefaultNext", "stopNext"], stopCancel: ["clrWizardPreventDefaultCancel", "stopCancel"], stopNavigation: ["clrWizardPreventNavigation", "stopNavigation"], disableStepnav: ["clrWizardDisableStepnav", "disableStepnav"] }, outputs: { _openChanged: "clrWizardOpenChange", onCancel: "clrWizardOnCancel", wizardFinished: "clrWizardOnFinish", onReset: "clrWizardOnReset", currentPageChanged: "clrWizardCurrentPageChanged", onMoveNext: "clrWizardOnNext", onMovePrevious: "clrWizardOnPrevious" }, host: { properties: { "class.clr-wizard": "true", "class.wizard-md": "size == 'md'", "class.wizard-lg": "size == 'lg'", "class.wizard-xl": "size == 'xl'", "class.wizard-in-page": "inPage", "class.wizard-in-page--fill-content-area": "inPage && inPageFillContentArea" } }, providers: [WizardNavigationService, PageCollectionService, ButtonHubService, HeaderActionService], queries: [{ propertyName: "wizardTitle", first: true, predicate: ClrWizardTitle, descendants: true }, { propertyName: "pages", predicate: ClrWizardPage, descendants: true }, { propertyName: "headerActions", predicate: ClrWizardHeaderAction }], viewQueries: [{ propertyName: "pageTitle", first: true, predicate: ["pageTitle"], descendants: true }, { propertyName: "bodyElementRef", first: true, predicate: ["body"], descendants: true }, { propertyName: "modal", first: true, predicate: ClrModal$1, descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n<ng-template #coreWizardContent>\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\n @if (headerActionService.displayHeaderActionsWrapper) {\n <div class=\"modal-header-actions-wrapper\">\n @if (headerActionService.showWizardHeaderActions) {\n <ng-content select=\"clr-wizard-header-action\"></ng-content>\n } @if (headerActionService.currentPageHasHeaderActions) {\n <ng-template [ngTemplateOutlet]=\"navService.currentPage?.headerActions\"></ng-template>\n }\n </div>\n } @if (closable && !inPage) {\n <button type=\"button\" class=\"close\" [attr.aria-label]=\"commonStrings.keys.close\" (click)=\"modalCancel()\">\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n }\n </div>\n\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\n <div class=\"modal-footer clr-wizard-footer\">\n <div class=\"clr-wizard-footer-buttons\">\n <div class=\"clr-wizard-footer-buttons-wrapper\">\n @if (navService.currentPage?.hasButtons) {\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.buttons\"></ng-template>\n } @else {\n <ng-content select=\"clr-wizard-button\"></ng-content>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n\n@if (inPage) {\n<ng-container [ngTemplateOutlet]=\"coreWizardContent\"></ng-container>\n} @else {\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]=\"coreWizardContent\"></ng-container>\n </ng-template>\n</clr-modal>\n}\n", dependencies: [{ kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "component", type: i1$3.ClrModal, selector: "clr-modal", inputs: ["clrModalOpen", "clrModalClosable", "clrModalCloseButtonAriaLabel", "clrModalSize", "clrModalStaticBackdrop", "clrModalSkipAnimation", "clrModalPreventClose", "clrModalLabelledById", "clrModalOverrideScrollService"], outputs: ["clrModalOpenChange", "clrModalAlternateClose"] }, { kind: "directive", type: i1$3.ClrModalBody, selector: ".modal-body" }, { kind: "component", type: ClrWizardStepnav, selector: "clr-wizard-stepnav", inputs: ["label"] }] }); }
36537
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrWizard, isStandalone: false, selector: "clr-wizard", inputs: { stepnavAriaLabel: ["clrWizardStepnavAriaLabel", "stepnavAriaLabel"], size: ["clrWizardSize", "size"], inPage: ["clrWizardInPage", "inPage"], inPageFillContentArea: ["clrWizardInPageFillContentArea", "inPageFillContentArea"], closable: ["clrWizardClosable", "closable"], _stopModalAnimations: ["clrWizardPreventModalAnimation", "_stopModalAnimations"], forceForward: ["clrWizardForceForwardNavigation", "forceForward"], clrWizardOpen: "clrWizardOpen", stopNext: ["clrWizardPreventDefaultNext", "stopNext"], stopCancel: ["clrWizardPreventDefaultCancel", "stopCancel"], stopNavigation: ["clrWizardPreventNavigation", "stopNavigation"], disableStepnav: ["clrWizardDisableStepnav", "disableStepnav"] }, outputs: { _openChanged: "clrWizardOpenChange", onCancel: "clrWizardOnCancel", wizardFinished: "clrWizardOnFinish", onReset: "clrWizardOnReset", currentPageChange: "clrWizardCurrentPageChange", onMoveNext: "clrWizardOnNext", onMovePrevious: "clrWizardOnPrevious" }, host: { properties: { "class.clr-wizard": "true", "class.wizard-md": "size == 'md'", "class.wizard-lg": "size == 'lg'", "class.wizard-xl": "size == 'xl'", "class.wizard-in-page": "inPage", "class.wizard-in-page--fill-content-area": "inPage && inPageFillContentArea" } }, providers: [WizardNavigationService, PageCollectionService, ButtonHubService, HeaderActionService], queries: [{ propertyName: "wizardTitle", first: true, predicate: ClrWizardTitle, descendants: true }, { propertyName: "pages", predicate: ClrWizardPage, descendants: true }, { propertyName: "headerActions", predicate: ClrWizardHeaderAction }], viewQueries: [{ propertyName: "pageTitle", first: true, predicate: ["pageTitle"], descendants: true }, { propertyName: "bodyElementRef", first: true, predicate: ["body"], descendants: true }, { propertyName: "modal", first: true, predicate: ClrModal$1, descendants: true }, { propertyName: "title", first: true, predicate: ["title"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n<ng-template #coreWizardContent>\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\n @if (headerActionService.displayHeaderActionsWrapper) {\n <div class=\"modal-header-actions-wrapper\">\n @if (headerActionService.showWizardHeaderActions) {\n <ng-content select=\"clr-wizard-header-action\"></ng-content>\n } @if (headerActionService.currentPageHasHeaderActions) {\n <ng-template [ngTemplateOutlet]=\"navService.currentPage?.headerActions\"></ng-template>\n }\n </div>\n } @if (closable && !inPage) {\n <button type=\"button\" class=\"close\" [attr.aria-label]=\"commonStrings.keys.close\" (click)=\"modalCancel()\">\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n }\n </div>\n\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\n <div class=\"modal-footer clr-wizard-footer\">\n <div class=\"clr-wizard-footer-buttons\">\n <div class=\"clr-wizard-footer-buttons-wrapper\">\n @if (navService.currentPage?.hasButtons) {\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.buttons\"></ng-template>\n } @else {\n <ng-content select=\"clr-wizard-button\"></ng-content>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n\n@if (inPage) {\n<ng-container [ngTemplateOutlet]=\"coreWizardContent\"></ng-container>\n} @else {\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]=\"coreWizardContent\"></ng-container>\n </ng-template>\n</clr-modal>\n}\n", dependencies: [{ kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "component", type: i1$3.ClrModal, selector: "clr-modal", inputs: ["clrModalOpen", "clrModalClosable", "clrModalCloseButtonAriaLabel", "clrModalSize", "clrModalStaticBackdrop", "clrModalSkipAnimation", "clrModalPreventClose", "clrModalLabelledById", "clrModalOverrideScrollService"], outputs: ["clrModalOpenChange", "clrModalAlternateClose"] }, { kind: "directive", type: i1$3.ClrModalBody, selector: ".modal-body" }, { kind: "component", type: ClrWizardStepnav, selector: "clr-wizard-stepnav", inputs: ["label"] }] }); }
36598
36538
  }
36599
36539
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrWizard, decorators: [{
36600
36540
  type: Component,
@@ -36639,9 +36579,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
36639
36579
  }], onReset: [{
36640
36580
  type: Output,
36641
36581
  args: ['clrWizardOnReset']
36642
- }], currentPageChanged: [{
36582
+ }], currentPageChange: [{
36643
36583
  type: Output,
36644
- args: ['clrWizardCurrentPageChanged']
36584
+ args: ['clrWizardCurrentPageChange']
36645
36585
  }], onMoveNext: [{
36646
36586
  type: Output,
36647
36587
  args: ['clrWizardOnNext']
@@ -36666,6 +36606,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
36666
36606
  }], modal: [{
36667
36607
  type: ViewChild,
36668
36608
  args: [ClrModal$1]
36609
+ }], title: [{
36610
+ type: ViewChild,
36611
+ args: ['title']
36669
36612
  }], forceForward: [{
36670
36613
  type: Input,
36671
36614
  args: ['clrWizardForceForwardNavigation']
@@ -37805,11 +37748,11 @@ class ClrStepperPanel extends CollapsiblePanel$1 {
37805
37748
  }
37806
37749
  }
37807
37750
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrStepperPanel, deps: [{ token: PLATFORM_ID }, { token: i1$1.ClrCommonStringsService }, { token: i1$5.FormGroupName, optional: true }, { token: i1$5.NgModelGroup, optional: true }, { token: StepperService }, { token: i1$1.IfExpandService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
37808
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrStepperPanel, isStandalone: false, selector: "clr-stepper-panel", host: { properties: { "class.clr-stepper-panel": "true", "class.clr-stepper-panel-disabled": "this.disabled" } }, providers: [IfExpandService$1], queries: [{ propertyName: "stepDescription", predicate: ClrStepDescription }], viewQueries: [{ propertyName: "headerButton", first: true, predicate: ["headerButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n@if (panel | async; as panel) {\n<div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-stepper-header\">\n <button\n type=\"button\"\n class=\"clr-stepper-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getHeaderId(panel.templateId)\"\n [attr.aria-disabled]=\"panel.disabled\"\n [attr.aria-controls]=\"getContentId(panel.templateId)\"\n [attr.aria-expanded]=\"panel.open\"\n [class.clr-stepper-header-has-description]=\"(stepDescription.changes | async)?.length || stepDescription.length\"\n #headerButton\n >\n <span class=\"clr-step-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-stepper-angle clr-step-angle\"></cds-icon>\n <span class=\"clr-step-status-icon\">\n @if (getPanelStatus(panel) === PanelStatus.Error) {\n <cds-icon status=\"danger\" shape=\"exclamation-circle\" class=\"clr-step-error-icon\"></cds-icon>\n } @if (getPanelStatus(panel) === PanelStatus.Complete) {\n <cds-icon status=\"success\" shape=\"check-circle\" class=\"clr-step-complete-icon\"></cds-icon>\n }\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 @if (getPanelStatus(panel) === PanelStatus.Error) { {{ stepErrorText(panelNumber)}} } @if (getPanelStatus(panel)\n === PanelStatus.Complete) { {{ stepCompleteText(panelNumber)}} }\n </div>\n </div>\n <div\n @skipInitialRender\n role=\"region\"\n class=\"clr-stepper-content-region\"\n [id]=\"getContentId(panel.templateId)\"\n [attr.aria-hidden]=\"!panel.open\"\n [attr.aria-labelledby]=\"getHeaderId(panel.templateId)\"\n >\n @if (panel.open) {\n <div @toggle (@toggle.done)=\"collapsePanelOnAnimationDone(panel)\" class=\"clr-stepper-content\">\n <div class=\"clr-stepper-inner-content\">\n <ng-content></ng-content>\n </div>\n </div>\n }\n </div>\n</div>\n}\n", dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }], animations: collapsiblePanelAnimation$1, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
37751
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrStepperPanel, isStandalone: false, selector: "clr-stepper-panel", host: { properties: { "class.clr-stepper-panel": "true", "class.clr-stepper-panel-disabled": "this.disabled" } }, providers: [IfExpandService$1], queries: [{ propertyName: "stepDescription", predicate: ClrStepDescription }], viewQueries: [{ propertyName: "headerButton", first: true, predicate: ["headerButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n@if (panel | async; as panel) {\n<div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-stepper-header\">\n <button\n type=\"button\"\n class=\"clr-stepper-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getHeaderId(panel.templateId)\"\n [attr.aria-disabled]=\"panel.disabled\"\n [attr.aria-controls]=\"getContentId(panel.templateId)\"\n [attr.aria-expanded]=\"panel.open\"\n [class.clr-stepper-header-has-description]=\"(stepDescription.changes | async)?.length || stepDescription.length\"\n #headerButton\n >\n <span class=\"clr-step-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-stepper-angle clr-step-angle\"></cds-icon>\n <span class=\"clr-step-status-icon\">\n @if (getPanelStatus(panel) === PanelStatus.Error) {\n <cds-icon status=\"danger\" shape=\"error-standard\" class=\"clr-step-error-icon\"></cds-icon>\n } @if (getPanelStatus(panel) === PanelStatus.Complete) {\n <cds-icon status=\"success\" shape=\"success-standard\" class=\"clr-step-complete-icon\"></cds-icon>\n }\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 @if (getPanelStatus(panel) === PanelStatus.Error) { {{ stepErrorText(panelNumber)}} } @if (getPanelStatus(panel)\n === PanelStatus.Complete) { {{ stepCompleteText(panelNumber)}} }\n </div>\n </div>\n <div\n @skipInitialRender\n role=\"region\"\n class=\"clr-stepper-content-region\"\n [id]=\"getContentId(panel.templateId)\"\n [attr.aria-hidden]=\"!panel.open\"\n [attr.aria-labelledby]=\"getHeaderId(panel.templateId)\"\n >\n @if (panel.open) {\n <div @toggle (@toggle.done)=\"collapsePanelOnAnimationDone(panel)\" class=\"clr-stepper-content\">\n <div class=\"clr-stepper-inner-content\">\n <ng-content></ng-content>\n </div>\n </div>\n }\n </div>\n</div>\n}\n", dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i5.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }], animations: collapsiblePanelAnimation$1, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
37809
37752
  }
37810
37753
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrStepperPanel, decorators: [{
37811
37754
  type: Component,
37812
- args: [{ selector: 'clr-stepper-panel', host: { '[class.clr-stepper-panel]': 'true' }, changeDetection: ChangeDetectionStrategy.OnPush, animations: collapsiblePanelAnimation$1, providers: [IfExpandService$1], standalone: false, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n@if (panel | async; as panel) {\n<div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-stepper-header\">\n <button\n type=\"button\"\n class=\"clr-stepper-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getHeaderId(panel.templateId)\"\n [attr.aria-disabled]=\"panel.disabled\"\n [attr.aria-controls]=\"getContentId(panel.templateId)\"\n [attr.aria-expanded]=\"panel.open\"\n [class.clr-stepper-header-has-description]=\"(stepDescription.changes | async)?.length || stepDescription.length\"\n #headerButton\n >\n <span class=\"clr-step-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-stepper-angle clr-step-angle\"></cds-icon>\n <span class=\"clr-step-status-icon\">\n @if (getPanelStatus(panel) === PanelStatus.Error) {\n <cds-icon status=\"danger\" shape=\"exclamation-circle\" class=\"clr-step-error-icon\"></cds-icon>\n } @if (getPanelStatus(panel) === PanelStatus.Complete) {\n <cds-icon status=\"success\" shape=\"check-circle\" class=\"clr-step-complete-icon\"></cds-icon>\n }\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 @if (getPanelStatus(panel) === PanelStatus.Error) { {{ stepErrorText(panelNumber)}} } @if (getPanelStatus(panel)\n === PanelStatus.Complete) { {{ stepCompleteText(panelNumber)}} }\n </div>\n </div>\n <div\n @skipInitialRender\n role=\"region\"\n class=\"clr-stepper-content-region\"\n [id]=\"getContentId(panel.templateId)\"\n [attr.aria-hidden]=\"!panel.open\"\n [attr.aria-labelledby]=\"getHeaderId(panel.templateId)\"\n >\n @if (panel.open) {\n <div @toggle (@toggle.done)=\"collapsePanelOnAnimationDone(panel)\" class=\"clr-stepper-content\">\n <div class=\"clr-stepper-inner-content\">\n <ng-content></ng-content>\n </div>\n </div>\n }\n </div>\n</div>\n}\n" }]
37755
+ args: [{ selector: 'clr-stepper-panel', host: { '[class.clr-stepper-panel]': 'true' }, changeDetection: ChangeDetectionStrategy.OnPush, animations: collapsiblePanelAnimation$1, providers: [IfExpandService$1], standalone: false, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n@if (panel | async; as panel) {\n<div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-stepper-header\">\n <button\n type=\"button\"\n class=\"clr-stepper-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getHeaderId(panel.templateId)\"\n [attr.aria-disabled]=\"panel.disabled\"\n [attr.aria-controls]=\"getContentId(panel.templateId)\"\n [attr.aria-expanded]=\"panel.open\"\n [class.clr-stepper-header-has-description]=\"(stepDescription.changes | async)?.length || stepDescription.length\"\n #headerButton\n >\n <span class=\"clr-step-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-stepper-angle clr-step-angle\"></cds-icon>\n <span class=\"clr-step-status-icon\">\n @if (getPanelStatus(panel) === PanelStatus.Error) {\n <cds-icon status=\"danger\" shape=\"error-standard\" class=\"clr-step-error-icon\"></cds-icon>\n } @if (getPanelStatus(panel) === PanelStatus.Complete) {\n <cds-icon status=\"success\" shape=\"success-standard\" class=\"clr-step-complete-icon\"></cds-icon>\n }\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 @if (getPanelStatus(panel) === PanelStatus.Error) { {{ stepErrorText(panelNumber)}} } @if (getPanelStatus(panel)\n === PanelStatus.Complete) { {{ stepCompleteText(panelNumber)}} }\n </div>\n </div>\n <div\n @skipInitialRender\n role=\"region\"\n class=\"clr-stepper-content-region\"\n [id]=\"getContentId(panel.templateId)\"\n [attr.aria-hidden]=\"!panel.open\"\n [attr.aria-labelledby]=\"getHeaderId(panel.templateId)\"\n >\n @if (panel.open) {\n <div @toggle (@toggle.done)=\"collapsePanelOnAnimationDone(panel)\" class=\"clr-stepper-content\">\n <div class=\"clr-stepper-inner-content\">\n <ng-content></ng-content>\n </div>\n </div>\n }\n </div>\n</div>\n}\n" }]
37813
37756
  }], ctorParameters: () => [{ type: undefined, decorators: [{
37814
37757
  type: Inject,
37815
37758
  args: [PLATFORM_ID]
@@ -38092,7 +38035,7 @@ const declarations = [
38092
38035
  ];
38093
38036
  class ClrStepperModule {
38094
38037
  constructor() {
38095
- ClarityIcons$1.addIcons(angleIcon$1, exclamationCircleIcon$1, checkCircleIcon$1);
38038
+ ClarityIcons$1.addIcons(angleIcon$1, successStandardIcon$1, errorStandardIcon$1);
38096
38039
  }
38097
38040
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrStepperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
38098
38041
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrStepperModule, declarations: [ClrStepper,
@@ -38767,5 +38710,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
38767
38710
  * Generated bundle index. Do not edit.
38768
38711
  */
38769
38712
 
38770
- export { ALERT_TYPES, AbstractIfState, AccordionModel, AccordionService, AccordionStrategy, ArrowKeyDirection, BASIC_FOCUSABLE_ITEM_PROVIDER, BaseExpandableAnimation, BasicFocusableItem, CHANGE_KEYS, CLR_ALERT_DIRECTIVES, CLR_BUTTON_GROUP_DIRECTIVES, CLR_DATAGRID_DIRECTIVES, CLR_DATEPICKER_DIRECTIVES, CLR_DROPDOWN_DIRECTIVES, CLR_FILE_MESSAGES_TEMPLATE_CONTEXT, CLR_ICON_DIRECTIVES, CLR_LAYOUT_DIRECTIVES, CLR_LOADING_BUTTON_DIRECTIVES, CLR_LOADING_DIRECTIVES, CLR_MENU_POSITIONS, CLR_MODAL_DIRECTIVES, CLR_NAVIGATION_DIRECTIVES, CLR_PROGRESS_BAR_DIRECTIVES, CLR_SIDEPANEL_DIRECTIVES, CLR_SIGNPOST_DIRECTIVES, CLR_SPINNER_DIRECTIVES, CLR_STACK_VIEW_DIRECTIVES, CLR_TABS_DIRECTIVES, CLR_TOOLTIP_DIRECTIVES, CLR_TREE_VIEW_DIRECTIVES, CLR_VERTICAL_NAV_DIRECTIVES, CLR_WIZARD_DIRECTIVES, CONDITIONAL_DIRECTIVES, CUSTOM_BUTTON_TYPES, CdkDragModule, CdkDragModule_CdkDrag, CdkTrapFocusModule, CdkTrapFocusModule_CdkTrapFocus, CdsIconCustomTag, ClarityIcons, ClarityModule, ClrAbstractContainer, ClrAccordion, ClrAccordionContent, ClrAccordionDescription, ClrAccordionModule, ClrAccordionPanel, ClrAccordionTitle, ClrAlert, ClrAlertItem, ClrAlertModule, ClrAlertText, ClrAlerts, ClrAlertsPager, ClrAriaCurrentLink, ClrBadge, ClrBadgeColors, ClrBreadcrumbItem, ClrBreadcrumbs, ClrBreadcrumbsModule, ClrButton, ClrButtonGroup, ClrButtonGroupModule, ClrButtonModule, ClrCalendar, ClrCheckbox, ClrCheckboxContainer, ClrCheckboxModule, ClrCheckboxWrapper, ClrCombobox, ClrComboboxContainer, ClrComboboxModule, ClrCommonFormsModule, ClrCommonStringsService, ClrConditionalModule, ClrControl, ClrControlContainer, ClrControlError, ClrControlHelper, ClrControlLabel, ClrControlSuccess, ClrDataModule, ClrDatagrid, ClrDatagridActionBar, ClrDatagridActionOverflow, ClrDatagridAriaSortOrder, ClrDatagridCell, ClrDatagridColumn, ClrDatagridColumnSeparator, ClrDatagridColumnToggle, ClrDatagridColumnToggleButton, ClrDatagridDetail, ClrDatagridDetailBody, ClrDatagridDetailHeader, ClrDatagridFilter, ClrDatagridFooter, ClrDatagridHideableColumn, ClrDatagridItems, ClrDatagridModule, ClrDatagridPageSize, ClrDatagridPagination, ClrDatagridPlaceholder, ClrDatagridRow, ClrDatagridRowDetail, ClrDatagridSortOrder, ClrDatalist, ClrDatalistContainer, ClrDatalistInput, ClrDatalistModule, ClrDateContainer, ClrDateInput, ClrDateInputBase, ClrDateInputValidator, ClrDatepickerActions, ClrDatepickerModule, ClrDatepickerViewManager, ClrDay, ClrDaypicker, ClrDestroyService, ClrDropdown, ClrDropdownItem, ClrDropdownMenu, ClrDropdownModule, ClrDropdownTrigger, ClrEmphasisModule, ClrEndDateInput, ClrEndDateInputValidator, ClrExpandableAnimation, ClrExpandableAnimationDirective, ClrExpandableAnimationModule, ClrFileError, ClrFileInfo, ClrFileInput, ClrFileInputContainer, ClrFileInputModule, ClrFileInputValidator, ClrFileInputValueAccessor, ClrFileList, ClrFileMessagesTemplate, ClrFileSuccess, ClrFocusOnViewInit, ClrFocusOnViewInitModule, ClrForm, ClrFormLayout, ClrFormsModule, ClrHeader, ClrHostWrappingModule, ClrIcon, ClrIconCustomTag, ClrIconModule, ClrIfActive, ClrIfDetail, ClrIfError, ClrIfExpanded, ClrIfOpen, ClrIfSuccess, ClrInput, ClrInputContainer, ClrInputModule, ClrKeyFocus, ClrKeyFocusItem, ClrKeyFocusModule, ClrLabel, ClrLabelColors, ClrLayout, ClrLayoutModule, ClrLoading, ClrLoadingButton, ClrLoadingButtonModule, ClrLoadingModule, ClrLoadingState, ClrMainContainer, ClrMainContainerModule, ClrModal, ClrModalBody, ClrModalConfigurationService, ClrModalHostComponent, ClrModalModule, ClrMonthpicker, ClrNavLevel, ClrNavigationModule, ClrNumberInput, ClrNumberInputContainer, ClrNumberInputModule, ClrOption, ClrOptionGroup, ClrOptionItems, ClrOptionSelected, ClrOptions, ClrOutsideClickModule, ClrPassword, ClrPasswordContainer, ClrPasswordModule, ClrPopoverAnchor, ClrPopoverContent, ClrPopoverHostDirective, ClrPopoverModule, ClrPopoverPosition, ClrPopoverService, ClrPopoverType, ClrPosition, ClrProgressBar, ClrProgressBarModule, ClrRadio, ClrRadioContainer, ClrRadioModule, ClrRadioWrapper, ClrRange, ClrRangeContainer, ClrRangeModule, ClrRecursiveForOf, ClrRovingTabindex, ClrSelect, ClrSelectContainer, ClrSelectModule, ClrSelectedState, ClrSidePanel, ClrSidePanelModule, ClrSignpost, ClrSignpostContent, ClrSignpostModule, ClrSignpostTitle, ClrSignpostTrigger, ClrSpinner, ClrSpinnerModule, ClrStackBlock, ClrStackContentInput, ClrStackHeader, ClrStackView, ClrStackViewCustomTags, ClrStackViewLabel, ClrStackViewModule, ClrStandaloneCdkTrapFocus, ClrStartDateInput, ClrStartDateInputValidator, ClrStepButton, ClrStepButtonType, ClrStepContent, ClrStepDescription, ClrStepTitle, ClrStepper, ClrStepperModule, ClrStepperPanel, ClrStopEscapePropagationDirective, ClrTab, ClrTabAction, ClrTabContent, ClrTabLink, ClrTabOverflowContent, ClrTabs, ClrTabsActions, ClrTabsModule, ClrTemplateRefModule, ClrTextarea, ClrTextareaContainer, ClrTextareaModule, ClrTimeline, ClrTimelineLayout, ClrTimelineModule, ClrTimelineStep, ClrTimelineStepDescription, ClrTimelineStepHeader, ClrTimelineStepState, ClrTimelineStepTitle, ClrTooltip, ClrTooltipContent, ClrTooltipModule, ClrTooltipTrigger, ClrTree, ClrTreeNode, ClrTreeNodeLink, ClrTreeViewModule, ClrVerticalNav, ClrVerticalNavGroup, ClrVerticalNavGroupChildren, ClrVerticalNavIcon, ClrVerticalNavLink, ClrVerticalNavModule, ClrWizard, ClrWizardButton, ClrWizardHeaderAction, ClrWizardModule, ClrWizardPage, ClrWizardPageButtons, ClrWizardPageHeaderActions, ClrWizardPageNavTitle, ClrWizardPageTitle, ClrWizardStepnav, ClrWizardStepnavItem, ClrWizardTitle, ClrYearpicker, CollapsiblePanel, CollapsiblePanelGroupModel, CollapsiblePanelModel, CollapsiblePanelService, ContainerIdService, ControlClassService, ControlIdService, DATEPICKER_ENABLE_BREAKPOINT, DEFAULT_BUTTON_TYPES, DROPDOWN_POSITIONS, DatagridNumericFilter, DatagridPropertyComparator, DatagridPropertyNumericFilter, DatagridPropertyStringFilter, DatagridStringFilter, DatalistIdService, DomAdapter, EXPANDABLE_ANIMATION_DIRECTIVES, EXTRA_LARGE_BREAKPOINT, EmptyAnchor, FOCUS_ON_VIEW_INIT, FOCUS_ON_VIEW_INIT_DIRECTIVES, FOCUS_SERVICE_PROVIDER, FocusService, FocusableItem, FormsFocusService, HostWrapper, IEKeys, IF_ACTIVE_ID, IF_ACTIVE_ID_PROVIDER, IS_TOGGLE, IS_TOGGLE_PROVIDER, IconHtmlPipe, IfActiveService, IfExpandService, Keys, LARGE_BREAKPOINT, LayoutService, Linkers, LoadingListener, MEDIUM_BREAKPOINT, MOCK_DOM_ADAPTER_PROVIDER, MainContainerWillyWonka, MarkControlService, MockDomAdapter, MockFocusableItem, ModalStackService, NavDetectionOompaLoompa, NgControlService, OUSTIDE_CLICK_DIRECTIVES, OompaLoompa, OutsideClick, POPOVER_HOST_ANCHOR, ResponsiveNavCodes, ResponsiveNavControlMessage, ResponsiveNavigationService, SIGNPOST_POSITIONS, SMALL_BREAKPOINT, ScrollingService, Selection, SelectionType, StepperPanelModel, StepperPanelStatus, StepperService, TOGGLE_SERVICE, TOGGLE_SERVICE_PROVIDER, TOOLTIP_POSITIONS, TemplateRefContainer, ToggleServiceFactory, WillyWonka, WrappedFormControl, accessibility1Icon, accessibility1IconName, accessibility2Icon, accessibility2IconName, addTextIcon, addTextIconName, administratorIcon, administratorIconName, airplaneIcon, airplaneIconName, alarmClockIcon, alarmClockIconName, alarmOffIcon, alarmOffIconName, alignBottomIcon, alignBottomIconName, alignCenterIcon, alignCenterIconName, alignLeftIcon, alignLeftIconName, alignLeftTextIcon, alignLeftTextIconName, alignMiddleIcon, alignMiddleIconName, alignRightIcon, alignRightIconName, alignRightTextIcon, alignRightTextIconName, alignTopIcon, alignTopIconName, angleDoubleIcon, angleDoubleIconName, angleIcon, angleIconName, animationIcon, animationIconName, announcementIcon, announcementIconName, applicationIcon, applicationIconName, applicationsIcon, applicationsIconName, archiveIcon, archiveIconName, arrowIcon, arrowIconName, arrowMiniIcon, arrowMiniIconName, assertNever, assignUserIcon, assignUserIconName, asteriskIcon, asteriskIconName, atomIcon, atomIconName, axisChartIcon, axisChartIconName, backupIcon, backupIconName, backupRestoreIcon, backupRestoreIconName, banIcon, banIconName, bankIcon, bankIconName, barChartIcon, barChartIconName, barCodeIcon, barCodeIconName, barsIcon, barsIconName, batteryIcon, batteryIconName, bellCurveIcon, bellCurveIconName, bellIcon, bellIconName, betaIcon, betaIconName, bicycleIcon, bicycleIconName, birthdayCakeIcon, birthdayCakeIconName, bitcoinIcon, bitcoinIconName, blockIcon, blockIconName, blockQuoteIcon, blockQuoteIconName, blocksGroupIcon, blocksGroupIconName, bluetoothIcon, bluetoothIconName, bluetoothOffIcon, bluetoothOffIconName, boatIcon, boatIconName, boldIcon, boldIconName, boltIcon, boltIconName, bookIcon, bookIconName, bookmarkIcon, bookmarkIconName, boxPlotIcon, boxPlotIconName, briefcaseIcon, briefcaseIconName, bubbleChartIcon, bubbleChartIconName, bubbleExclamationIcon, bubbleExclamationIconName, bugIcon, bugIconName, buildFileList, buildingIcon, buildingIconName, bulletListIcon, bulletListIconName, bullseyeIcon, bullseyeIconName, bundleIcon, bundleIconName, calculatorIcon, calculatorIconName, calendarIcon, calendarIconName, calendarMiniIcon, calendarMiniIconName, cameraIcon, cameraIconName, campervanIcon, campervanIconName, capacitorIcon, capacitorIconName, carIcon, carIconName, caravanIcon, caravanIconName, cdDvdIcon, cdDvdIconName, centerTextIcon, centerTextIconName, certificateIcon, certificateIconName, chartCollectionAliases, chartCollectionIcons, chatBubbleIcon, chatBubbleIconName, checkCircleIcon, checkCircleIconName, checkCircleMiniIcon, checkCircleMiniIconName, checkIcon, checkIconName, checkMiniIcon, checkMiniIconName, checkboxListIcon, checkboxListIconName, childArrowIcon, childArrowIconName, ciCdIcon, ciCdIconName, circleArrowIcon, circleArrowIconName, circleIcon, circleIconName, clearFiles, clipboardIcon, clipboardIconName, clockIcon, clockIconName, cloneIcon, cloneIconName, cloudChartIcon, cloudChartIconName, cloudIcon, cloudIconName, cloudNetworkIcon, cloudNetworkIconName, cloudScaleIcon, cloudScaleIconName, cloudTrafficIcon, cloudTrafficIconName, clrFocusServiceFactory, clusterIcon, clusterIconName, codeIcon, codeIconName, cogIcon, cogIconName, coinBagIcon, coinBagIconName, collapse, collapseCardIcon, collapseCardIconName, collapsiblePanelAnimation, collapsiblePanelExpandAnimation, colorPaletteIcon, colorPaletteIconName, colorPickerIcon, colorPickerIconName, commerceCollectionAliases, commerceCollectionIcons, commonStringsDefault, compassIcon, compassIconName, computerIcon, computerIconName, connectIcon, connectIconName, containerGroupIcon, containerGroupIconName, containerIcon, containerIconName, containerVolumeIcon, containerVolumeIconName, contractIcon, contractIconName, controlLunIcon, controlLunIconName, copyIcon, copyIconName, copyToClipboardIcon, copyToClipboardIconName, coreCollectionAliases, coreCollectionIcons, cpuIcon, cpuIconName, creditCardIcon, creditCardIconName, crosshairsIcon, crosshairsIconName, crownIcon, crownIconName, cursorArrowIcon, cursorArrowIconName, cursorHandClickIcon, cursorHandClickIconName, cursorHandGrabIcon, cursorHandGrabIconName, cursorHandIcon, cursorHandIconName, cursorHandOpenIcon, cursorHandOpenIconName, cursorMoveIcon, cursorMoveIconName, curveChartIcon, curveChartIconName, customFocusableItemProvider, dashboardIcon, dashboardIconName, dataClusterIcon, dataClusterIconName, defaultAnimationTiming, defaultExpandAnimation, deployIcon, deployIconName, detailCollapseIcon, detailCollapseIconName, detailExpandIcon, detailExpandIconName, detailsIcon, detailsIconName, devicesIcon, devicesIconName, digitalSignatureIcon, digitalSignatureIconName, disconnectIcon, disconnectIconName, displayIcon, displayIconName, dollarBillIcon, dollarBillIconName, dollarIcon, dollarIconName, dotCircleIcon, dotCircleIconName, downloadCloudIcon, downloadCloudIconName, downloadIcon, downloadIconName, dragHandleCornerIcon, dragHandleCornerIconName, dragHandleIcon, dragHandleIconName, eCheckIcon, eCheckIconName, ellipsisHorizontalIcon, ellipsisHorizontalIconName, ellipsisVerticalIcon, ellipsisVerticalIconName, employeeGroupIcon, employeeGroupIconName, employeeIcon, employeeIconName, envelopeIcon, envelopeIconName, eraserIcon, eraserIconName, errorMiniIcon, errorMiniIconName, errorStandardIcon, errorStandardIconName, essentialCollectionAliases, essentialCollectionIcons, euroIcon, euroIconName, eventIcon, eventIconName, eventMiniIcon, eventMiniIconName, exclamationCircleIcon, exclamationCircleIconName, exclamationTriangleIcon, exclamationTriangleIconName, expandCardIcon, expandCardIconName, exportIcon, exportIconName, eyeHideIcon, eyeHideIconName, eyeIcon, eyeIconName, factoryIcon, factoryIconName, fade, fadeSlide, fastForwardIcon, fastForwardIconName, ferryIcon, ferryIconName, fileGroupIcon, fileGroupIconName, fileIcon, fileIconName, fileSettingsIcon, fileSettingsIconName, fileShare2Icon, fileShare2IconName, fileShareIcon, fileShareIconName, fileZipIcon, fileZipIconName, filmStripIcon, filmStripIconName, filter2Icon, filter2IconName, filterGridCircleIcon, filterGridCircleIconName, filterGridCircleMiniIcon, filterGridCircleMiniIconName, filterGridIcon, filterGridIconName, filterGridMiniIcon, filterGridMiniIconName, filterIcon, filterIconName, filterOffIcon, filterOffIconName, firewallIcon, firewallIconName, firstAidIcon, firstAidIconName, fishIcon, fishIconName, flagIcon, flagIconName, flameIcon, flameIconName, flaskIcon, flaskIconName, floppyIcon, floppyIconName, folderIcon, folderIconName, folderOpenIcon, folderOpenIconName, fontSizeIcon, fontSizeIconName, forkingIcon, forkingIconName, formIcon, formIconName, fuelIcon, fuelIconName, gavelIcon, gavelIconName, getAnchorPosition, getConnectedPositions, getContentPosition, getPositionsArray, gridChartIcon, gridChartIconName, gridViewIcon, gridViewIconName, halfStarIcon, halfStarIconName, happyFaceIcon, happyFaceIconName, hardDiskIcon, hardDiskIconName, hardDriveDisksIcon, hardDriveDisksIconName, hardDriveIcon, hardDriveIconName, hashtagIcon, hashtagIconName, headphonesIcon, headphonesIconName, heartBrokenIcon, heartBrokenIconName, heartIcon, heartIconName, heatMapIcon, heatMapIconName, helixIcon, helixIconName, helpIcon, helpIconName, helpInfoIcon, helpInfoIconName, highlighterIcon, highlighterIconName, historyIcon, historyIconName, homeIcon, homeIconName, hostGroupIcon, hostGroupIconName, hostIcon, hostIconName, hourglassIcon, hourglassIconName, idBadgeIcon, idBadgeIconName, imageGalleryIcon, imageGalleryIconName, imageIcon, imageIconName, importIcon, importIconName, inboxIcon, inboxIconName, indentIcon, indentIconName, inductorIcon, inductorIconName, infoCircleIcon, infoCircleIconName, infoCircleMiniIcon, infoCircleMiniIconName, infoStandardIcon, infoStandardIconName, installIcon, installIconName, internetOfThingsIcon, internetOfThingsIconName, isBooleanAttributeSet, isKeyEitherLetterOrNumber, isToggleFactory, italicIcon, italicIconName, justifyTextIcon, justifyTextIconName, keyIcon, keyIconName, keyboardIcon, keyboardIconName, landscapeIcon, landscapeIconName, languageIcon, languageIconName, launchpadIcon, launchpadIconName, layersIcon, layersIconName, libraryIcon, libraryIconName, lightbulbIcon, lightbulbIconName, lineChartIcon, lineChartIconName, linkIcon, linkIconName, listIcon, listIconName, loadChartIconSet, loadCommerceIconSet, loadCoreIconSet, loadEssentialIconSet, loadMediaIconSet, loadMiniIconSet, loadSocialIconSet, loadTechnologyIconSet, loadTextEditIconSet, loadTravelIconSet, lockIcon, lockIconName, loginIcon, loginIconName, logoutIcon, logoutIconName, mapIcon, mapIconName, mapMarkerIcon, mapMarkerIconName, mapPopoverKeyToPosition, mediaChangerIcon, mediaChangerIconName, mediaCollectionAliases, mediaCollectionIcons, memoryIcon, memoryIconName, microphoneIcon, microphoneIconName, microphoneMuteIcon, microphoneMuteIconName, miniCollectionAliases, miniCollectionIcons, minusCircleIcon, minusCircleIconName, minusIcon, minusIconName, mobileIcon, mobileIconName, moonIcon, moonIconName, mouseIcon, mouseIconName, musicNoteIcon, musicNoteIconName, namespaceIcon, namespaceIconName, networkGlobeIcon, networkGlobeIconName, networkSettingsIcon, networkSettingsIconName, networkSwitchIcon, networkSwitchIconName, neutralFaceIcon, neutralFaceIconName, newIcon, newIconName, noAccessIcon, noAccessIconName, noWifiIcon, noWifiIconName, nodeGroupIcon, nodeGroupIconName, nodeIcon, nodeIconName, nodesIcon, nodesIconName, normalizeKey, noteIcon, noteIconName, numberListIcon, numberListIconName, nvmeIcon, nvmeIconName, objectsIcon, objectsIconName, onHolidayIcon, onHolidayIconName, organizationIcon, organizationIconName, outdentIcon, outdentIconName, paintRollerIcon, paintRollerIconName, panelCollapseTransition, panelExpandTransition, paperclipIcon, paperclipIconName, pasteIcon, pasteIconName, pauseIcon, pauseIconName, pdfFileIcon, pdfFileIconName, pencilIcon, pencilIconName, pesoIcon, pesoIconName, phoneHandsetIcon, phoneHandsetIconName, pictureIcon, pictureIconName, pieChartIcon, pieChartIconName, piggyBankIcon, piggyBankIconName, pinIcon, pinIconName, pinboardIcon, pinboardIconName, playIcon, playIconName, pluginIcon, pluginIconName, plusCircleIcon, plusCircleIconName, plusIcon, plusIconName, podIcon, podIconName, popOutIcon, popOutIconName, portraitIcon, portraitIconName, poundIcon, poundIconName, powerIcon, powerIconName, preventArrowKeyScroll, printerIcon, printerIconName, processOnVmIcon, processOnVmIconName, qrCodeIcon, qrCodeIconName, rackServerIcon, rackServerIconName, radarIcon, radarIconName, recycleIcon, recycleIconName, redoIcon, redoIconName, refreshIcon, refreshIconName, renderIcon, repeatIcon, repeatIconName, replayAllIcon, replayAllIconName, replayOneIcon, replayOneIconName, resistorIcon, resistorIconName, resizeIcon, resizeIconName, resourcePoolIcon, resourcePoolIconName, rewindIcon, rewindIconName, routerIcon, routerIconName, rubleIcon, rubleIconName, rulerPencilIcon, rulerPencilIconName, rupeeIcon, rupeeIconName, sadFaceIcon, sadFaceIconName, scatterPlotIcon, scatterPlotIconName, scissorsIcon, scissorsIconName, scriptExecuteIcon, scriptExecuteIconName, scriptScheduleIcon, scriptScheduleIconName, scrollIcon, scrollIconName, searchIcon, searchIconName, selectFiles, selectionTypeAttribute, shareIcon, shareIconName, shieldCheckIcon, shieldCheckIconName, shieldIcon, shieldIconName, shieldXIcon, shieldXIconName, shoppingBagIcon, shoppingBagIconName, shoppingCartIcon, shoppingCartIconName, shrinkIcon, shrinkIconName, shuffleIcon, shuffleIconName, skipInitialRenderTrigger, slide, sliderIcon, sliderIconName, snowflakeIcon, snowflakeIconName, socialCollectionAliases, socialCollectionIcons, sortByIcon, sortByIconName, squidIcon, squidIconName, ssdIcon, ssdIconName, starIcon, starIconName, stepForward2Icon, stepForward2IconName, stepForwardIcon, stepForwardIconName, stopIcon, stopIconName, storageAdapterIcon, storageAdapterIconName, storageIcon, storageIconName, storeIcon, storeIconName, strikethroughIcon, strikethroughIconName, subscriptIcon, subscriptIconName, successStandardIcon, successStandardIconName, sunIcon, sunIconName, superscriptIcon, superscriptIconName, switchIcon, switchIconName, syncIcon, syncIconName, tableIcon, tableIconName, tabletIcon, tabletIconName, tagIcon, tagIconName, tagsIcon, tagsIconName, talkBubblesIcon, talkBubblesIconName, tapeDriveIcon, tapeDriveIconName, targetIcon, targetIconName, tasksIcon, tasksIconName, technologyCollectionAliases, technologyCollectionIcons, terminalIcon, terminalIconName, textColorIcon, textColorIconName, textEditCollectionAliases, textEditCollectionIcons, textIcon, textIconName, thermometerIcon, thermometerIconName, thinClientIcon, thinClientIconName, thumbsDownIcon, thumbsDownIconName, thumbsUpIcon, thumbsUpIconName, tickChartIcon, tickChartIconName, timelineIcon, timelineIconName, timesCircleIcon, timesCircleIconName, timesIcon, timesIconName, timesMiniIcon, timesMiniIconName, tokenFactory, toolsIcon, toolsIconName, trailerIcon, trailerIconName, trashIcon, trashIconName, travelCollectionAliases, travelCollectionIcons, treeIcon, treeIconName, treeViewIcon, treeViewIconName, triggerAllFormControlValidation, truckIcon, truckIconName, twoWayArrowsIcon, twoWayArrowsIconName, unarchiveIcon, unarchiveIconName, underlineIcon, underlineIconName, undoIcon, undoIconName, uninstallIcon, uninstallIconName, uniqueIdFactory, unknownIcon, unknownIconName, unknownStatusIcon, unknownStatusIconName, unlinkIcon, unlinkIconName, unlockIcon, unlockIconName, unpinIcon, unpinIconName, updateIcon, updateIconName, uploadCloudIcon, uploadCloudIconName, uploadIcon, uploadIconName, usbIcon, usbIconName, userIcon, userIconName, usersIcon, usersIconName, videoCameraIcon, videoCameraIconName, videoGalleryIcon, videoGalleryIconName, viewCardsIcon, viewCardsIconName, viewColumnsIcon, viewColumnsIconName, viewListIcon, viewListIconName, vmBugIcon, vmBugIconName, vmBugInverseIcon, vmBugInverseIconName, vmIcon, vmIconName, vmwAppIcon, vmwAppIconName, volumeDownIcon, volumeDownIconName, volumeIcon, volumeIconName, volumeMuteIcon, volumeMuteIconName, volumeUpIcon, volumeUpIconName, walletIcon, walletIconName, wandIcon, wandIconName, warningMiniIcon, warningMiniIconName, warningStandardIcon, warningStandardIconName, wifiIcon, wifiIconName, windowCloseIcon, windowCloseIconName, windowMaxIcon, windowMaxIconName, windowMinIcon, windowMinIconName, windowRestoreIcon, windowRestoreIconName, wonIcon, wonIconName, worldIcon, worldIconName, wrapObservable, wrenchIcon, wrenchIconName, xlsFileIcon, xlsFileIconName, yenIcon, yenIconName, zoomInIcon, zoomInIconName, zoomOutIcon, zoomOutIconName, AccordionOompaLoompa as ÇlrAccordionOompaLoompa, AccordionWillyWonka as ÇlrAccordionWillyWonka, ActionableOompaLoompa as ÇlrActionableOompaLoompa, ActiveOompaLoompa as ÇlrActiveOompaLoompa, ClrPopoverCloseButton as ÇlrClrPopoverCloseButton, ClrPopoverModuleNext as ÇlrClrPopoverModuleNext, ClrPopoverOpenCloseButton as ÇlrClrPopoverOpenCloseButton, DatagridCellRenderer as ÇlrDatagridCellRenderer, DatagridDetailRegisterer as ÇlrDatagridDetailRegisterer, DatagridHeaderRenderer as ÇlrDatagridHeaderRenderer, DatagridMainRenderer as ÇlrDatagridMainRenderer, DatagridRowDetailRenderer as ÇlrDatagridRowDetailRenderer, DatagridRowRenderer as ÇlrDatagridRowRenderer, ClrDatagridSelectionCellDirective as ÇlrDatagridSelectionCellDirective, ClrDatagridSingleSelectionValueAccessor as ÇlrDatagridSingleSelectionValueAccessor, ClrDatagridVirtualScrollDirective as ÇlrDatagridVirtualScrollDirective, DatagridWillyWonka as ÇlrDatagridWillyWonka, ExpandableOompaLoompa as ÇlrExpandableOompaLoompa, StepperOompaLoompa as ÇlrStepperOompaLoompa, StepperWillyWonka as ÇlrStepperWillyWonka, TabsWillyWonka as ÇlrTabsWillyWonka, WrappedCell as ÇlrWrappedCell, WrappedColumn as ÇlrWrappedColumn, WrappedRow as ÇlrWrappedRow };
38713
+ export { ALERT_TYPES, AbstractIfState, AccordionModel, AccordionService, AccordionStrategy, ArrowKeyDirection, BASIC_FOCUSABLE_ITEM_PROVIDER, BaseExpandableAnimation, BasicFocusableItem, CHANGE_KEYS, CLR_ALERT_DIRECTIVES, CLR_BUTTON_GROUP_DIRECTIVES, CLR_DATAGRID_DIRECTIVES, CLR_DATEPICKER_DIRECTIVES, CLR_DROPDOWN_DIRECTIVES, CLR_FILE_MESSAGES_TEMPLATE_CONTEXT, CLR_ICON_DIRECTIVES, CLR_LAYOUT_DIRECTIVES, CLR_LOADING_BUTTON_DIRECTIVES, CLR_LOADING_DIRECTIVES, CLR_MENU_POSITIONS, CLR_MODAL_DIRECTIVES, CLR_NAVIGATION_DIRECTIVES, CLR_PROGRESS_BAR_DIRECTIVES, CLR_SIDEPANEL_DIRECTIVES, CLR_SIGNPOST_DIRECTIVES, CLR_SPINNER_DIRECTIVES, CLR_STACK_VIEW_DIRECTIVES, CLR_TABS_DIRECTIVES, CLR_TOOLTIP_DIRECTIVES, CLR_TREE_VIEW_DIRECTIVES, CLR_VERTICAL_NAV_DIRECTIVES, CLR_WIZARD_DIRECTIVES, CONDITIONAL_DIRECTIVES, CUSTOM_BUTTON_TYPES, CdkDragModule, CdkDragModule_CdkDrag, CdkTrapFocusModule, CdkTrapFocusModule_CdkTrapFocus, CdsIconCustomTag, ClarityIcons, ClarityModule, ClrAbstractContainer, ClrAccordion, ClrAccordionContent, ClrAccordionDescription, ClrAccordionModule, ClrAccordionPanel, ClrAccordionTitle, ClrAlert, ClrAlertItem, ClrAlertModule, ClrAlertText, ClrAlerts, ClrAlertsPager, ClrAriaCurrentLink, ClrBadge, ClrBadgeColors, ClrBreadcrumbItem, ClrBreadcrumbs, ClrBreadcrumbsModule, ClrButton, ClrButtonGroup, ClrButtonGroupModule, ClrButtonModule, ClrCalendar, ClrCheckbox, ClrCheckboxContainer, ClrCheckboxModule, ClrCheckboxWrapper, ClrCombobox, ClrComboboxContainer, ClrComboboxModule, ClrCommonFormsModule, ClrCommonStringsService, ClrConditionalModule, ClrControl, ClrControlContainer, ClrControlError, ClrControlHelper, ClrControlLabel, ClrControlSuccess, ClrDataModule, ClrDatagrid, ClrDatagridActionBar, ClrDatagridActionOverflow, ClrDatagridAriaSortOrder, ClrDatagridCell, ClrDatagridColumn, ClrDatagridColumnSeparator, ClrDatagridColumnToggle, ClrDatagridColumnToggleButton, ClrDatagridDetail, ClrDatagridDetailBody, ClrDatagridDetailHeader, ClrDatagridFilter, ClrDatagridFooter, ClrDatagridHideableColumn, ClrDatagridItems, ClrDatagridModule, ClrDatagridPageSize, ClrDatagridPagination, ClrDatagridPlaceholder, ClrDatagridRow, ClrDatagridRowDetail, ClrDatagridSortOrder, ClrDatalist, ClrDatalistContainer, ClrDatalistInput, ClrDatalistModule, ClrDateContainer, ClrDateInput, ClrDateInputBase, ClrDateInputValidator, ClrDatepickerActions, ClrDatepickerModule, ClrDatepickerViewManager, ClrDay, ClrDaypicker, ClrDestroyService, ClrDropdown, ClrDropdownItem, ClrDropdownMenu, ClrDropdownModule, ClrDropdownTrigger, ClrEmphasisModule, ClrEndDateInput, ClrEndDateInputValidator, ClrExpandableAnimation, ClrExpandableAnimationDirective, ClrExpandableAnimationModule, ClrFileError, ClrFileInfo, ClrFileInput, ClrFileInputContainer, ClrFileInputModule, ClrFileInputValidator, ClrFileInputValueAccessor, ClrFileList, ClrFileMessagesTemplate, ClrFileSuccess, ClrFocusOnViewInit, ClrFocusOnViewInitModule, ClrForm, ClrFormLayout, ClrFormsModule, ClrHeader, ClrHostWrappingModule, ClrIcon, ClrIconCustomTag, ClrIconModule, ClrIfActive, ClrIfDetail, ClrIfError, ClrIfExpanded, ClrIfOpen, ClrIfSuccess, ClrInput, ClrInputContainer, ClrInputModule, ClrKeyFocus, ClrKeyFocusItem, ClrKeyFocusModule, ClrLabel, ClrLabelColors, ClrLayout, ClrLayoutModule, ClrLoading, ClrLoadingButton, ClrLoadingButtonModule, ClrLoadingModule, ClrLoadingState, ClrMainContainer, ClrMainContainerModule, ClrModal, ClrModalBody, ClrModalConfigurationService, ClrModalHostComponent, ClrModalModule, ClrMonthpicker, ClrNavLevel, ClrNavigationModule, ClrNumberInput, ClrNumberInputContainer, ClrNumberInputModule, ClrOption, ClrOptionGroup, ClrOptionItems, ClrOptionSelected, ClrOptions, ClrOutsideClickModule, ClrPassword, ClrPasswordContainer, ClrPasswordModule, ClrPopoverContent, ClrPopoverHostDirective, ClrPopoverModule, ClrPopoverOrigin, ClrPopoverPosition, ClrPopoverService, ClrPopoverType, ClrPosition, ClrProgressBar, ClrProgressBarModule, ClrRadio, ClrRadioContainer, ClrRadioModule, ClrRadioWrapper, ClrRange, ClrRangeContainer, ClrRangeModule, ClrRecursiveForOf, ClrRovingTabindex, ClrSelect, ClrSelectContainer, ClrSelectModule, ClrSelectedState, ClrSidePanel, ClrSidePanelModule, ClrSignpost, ClrSignpostContent, ClrSignpostModule, ClrSignpostTitle, ClrSignpostTrigger, ClrSpinner, ClrSpinnerModule, ClrStackBlock, ClrStackContentInput, ClrStackHeader, ClrStackView, ClrStackViewCustomTags, ClrStackViewLabel, ClrStackViewModule, ClrStandaloneCdkTrapFocus, ClrStartDateInput, ClrStartDateInputValidator, ClrStepButton, ClrStepButtonType, ClrStepContent, ClrStepDescription, ClrStepTitle, ClrStepper, ClrStepperModule, ClrStepperPanel, ClrStopEscapePropagationDirective, ClrTab, ClrTabAction, ClrTabContent, ClrTabLink, ClrTabOverflowContent, ClrTabs, ClrTabsActions, ClrTabsModule, ClrTemplateRefModule, ClrTextarea, ClrTextareaContainer, ClrTextareaModule, ClrTimeline, ClrTimelineLayout, ClrTimelineModule, ClrTimelineStep, ClrTimelineStepDescription, ClrTimelineStepHeader, ClrTimelineStepState, ClrTimelineStepTitle, ClrTooltip, ClrTooltipContent, ClrTooltipModule, ClrTooltipTrigger, ClrTree, ClrTreeNode, ClrTreeNodeLink, ClrTreeViewModule, ClrVerticalNav, ClrVerticalNavGroup, ClrVerticalNavGroupChildren, ClrVerticalNavIcon, ClrVerticalNavLink, ClrVerticalNavModule, ClrWizard, ClrWizardButton, ClrWizardHeaderAction, ClrWizardModule, ClrWizardPage, ClrWizardPageButtons, ClrWizardPageHeaderActions, ClrWizardPageNavTitle, ClrWizardPageTitle, ClrWizardStepnav, ClrWizardStepnavItem, ClrWizardTitle, ClrYearpicker, CollapsiblePanel, CollapsiblePanelGroupModel, CollapsiblePanelModel, CollapsiblePanelService, ContainerIdService, ControlClassService, ControlIdService, DATEPICKER_ENABLE_BREAKPOINT, DEFAULT_BUTTON_TYPES, DROPDOWN_POSITIONS, DatagridNumericFilter, DatagridPropertyComparator, DatagridPropertyNumericFilter, DatagridPropertyStringFilter, DatagridStringFilter, DatalistIdService, DomAdapter, EXPANDABLE_ANIMATION_DIRECTIVES, EXTRA_LARGE_BREAKPOINT, EmptyAnchor, FOCUS_ON_VIEW_INIT, FOCUS_ON_VIEW_INIT_DIRECTIVES, FOCUS_SERVICE_PROVIDER, FocusService, FocusableItem, FormsFocusService, HostWrapper, IF_ACTIVE_ID, IF_ACTIVE_ID_PROVIDER, IS_TOGGLE, IS_TOGGLE_PROVIDER, IconHtmlPipe, IfActiveService, IfExpandService, Keys, LARGE_BREAKPOINT, LayoutService, Linkers, LoadingListener, MEDIUM_BREAKPOINT, MOCK_DOM_ADAPTER_PROVIDER, MainContainerWillyWonka, MarkControlService, MockDomAdapter, MockFocusableItem, ModalStackService, NavDetectionOompaLoompa, NgControlService, OUSTIDE_CLICK_DIRECTIVES, OompaLoompa, OutsideClick, POPOVER_HOST_ORIGIN, ResponsiveNavCodes, ResponsiveNavControlMessage, ResponsiveNavigationService, SIGNPOST_POSITIONS, SMALL_BREAKPOINT, ScrollingService, Selection, SelectionType, StepperPanelModel, StepperPanelStatus, StepperService, TOGGLE_SERVICE, TOGGLE_SERVICE_PROVIDER, TOOLTIP_POSITIONS, TemplateRefContainer, ToggleServiceFactory, WillyWonka, WrappedFormControl, accessibility1Icon, accessibility1IconName, accessibility2Icon, accessibility2IconName, addTextIcon, addTextIconName, administratorIcon, administratorIconName, airplaneIcon, airplaneIconName, alarmClockIcon, alarmClockIconName, alarmOffIcon, alarmOffIconName, alignBottomIcon, alignBottomIconName, alignCenterIcon, alignCenterIconName, alignLeftIcon, alignLeftIconName, alignLeftTextIcon, alignLeftTextIconName, alignMiddleIcon, alignMiddleIconName, alignRightIcon, alignRightIconName, alignRightTextIcon, alignRightTextIconName, alignTopIcon, alignTopIconName, angleDoubleIcon, angleDoubleIconName, angleIcon, angleIconName, animationIcon, animationIconName, announcementIcon, announcementIconName, applicationIcon, applicationIconName, applicationsIcon, applicationsIconName, archiveIcon, archiveIconName, arrowIcon, arrowIconName, arrowMiniIcon, arrowMiniIconName, assertNever, assignUserIcon, assignUserIconName, asteriskIcon, asteriskIconName, atomIcon, atomIconName, axisChartIcon, axisChartIconName, backupIcon, backupIconName, backupRestoreIcon, backupRestoreIconName, banIcon, banIconName, bankIcon, bankIconName, barChartIcon, barChartIconName, barCodeIcon, barCodeIconName, barsIcon, barsIconName, batteryIcon, batteryIconName, bellCurveIcon, bellCurveIconName, bellIcon, bellIconName, betaIcon, betaIconName, bicycleIcon, bicycleIconName, birthdayCakeIcon, birthdayCakeIconName, bitcoinIcon, bitcoinIconName, blockIcon, blockIconName, blockQuoteIcon, blockQuoteIconName, blocksGroupIcon, blocksGroupIconName, bluetoothIcon, bluetoothIconName, bluetoothOffIcon, bluetoothOffIconName, boatIcon, boatIconName, boldIcon, boldIconName, boltIcon, boltIconName, bookIcon, bookIconName, bookmarkIcon, bookmarkIconName, boxPlotIcon, boxPlotIconName, briefcaseIcon, briefcaseIconName, bubbleChartIcon, bubbleChartIconName, bubbleExclamationIcon, bubbleExclamationIconName, bugIcon, bugIconName, buildFileList, buildingIcon, buildingIconName, bulletListIcon, bulletListIconName, bullseyeIcon, bullseyeIconName, bundleIcon, bundleIconName, calculatorIcon, calculatorIconName, calendarIcon, calendarIconName, calendarMiniIcon, calendarMiniIconName, cameraIcon, cameraIconName, campervanIcon, campervanIconName, capacitorIcon, capacitorIconName, carIcon, carIconName, caravanIcon, caravanIconName, cdDvdIcon, cdDvdIconName, centerTextIcon, centerTextIconName, certificateIcon, certificateIconName, chartCollectionAliases, chartCollectionIcons, chatBubbleIcon, chatBubbleIconName, checkCircleIcon, checkCircleIconName, checkCircleMiniIcon, checkCircleMiniIconName, checkIcon, checkIconName, checkMiniIcon, checkMiniIconName, checkboxListIcon, checkboxListIconName, childArrowIcon, childArrowIconName, ciCdIcon, ciCdIconName, circleArrowIcon, circleArrowIconName, circleIcon, circleIconName, clearFiles, clipboardIcon, clipboardIconName, clockIcon, clockIconName, cloneIcon, cloneIconName, cloudChartIcon, cloudChartIconName, cloudIcon, cloudIconName, cloudNetworkIcon, cloudNetworkIconName, cloudScaleIcon, cloudScaleIconName, cloudTrafficIcon, cloudTrafficIconName, clrFocusServiceFactory, clusterIcon, clusterIconName, codeIcon, codeIconName, cogIcon, cogIconName, coinBagIcon, coinBagIconName, collapse, collapseCardIcon, collapseCardIconName, collapsiblePanelAnimation, collapsiblePanelExpandAnimation, colorPaletteIcon, colorPaletteIconName, colorPickerIcon, colorPickerIconName, commerceCollectionAliases, commerceCollectionIcons, commonStringsDefault, compassIcon, compassIconName, computerIcon, computerIconName, connectIcon, connectIconName, containerGroupIcon, containerGroupIconName, containerIcon, containerIconName, containerVolumeIcon, containerVolumeIconName, contractIcon, contractIconName, controlLunIcon, controlLunIconName, copyIcon, copyIconName, copyToClipboardIcon, copyToClipboardIconName, coreCollectionAliases, coreCollectionIcons, cpuIcon, cpuIconName, creditCardIcon, creditCardIconName, crosshairsIcon, crosshairsIconName, crownIcon, crownIconName, cursorArrowIcon, cursorArrowIconName, cursorHandClickIcon, cursorHandClickIconName, cursorHandGrabIcon, cursorHandGrabIconName, cursorHandIcon, cursorHandIconName, cursorHandOpenIcon, cursorHandOpenIconName, cursorMoveIcon, cursorMoveIconName, curveChartIcon, curveChartIconName, customFocusableItemProvider, dashboardIcon, dashboardIconName, dataClusterIcon, dataClusterIconName, defaultAnimationTiming, defaultExpandAnimation, deployIcon, deployIconName, detailCollapseIcon, detailCollapseIconName, detailExpandIcon, detailExpandIconName, detailsIcon, detailsIconName, devicesIcon, devicesIconName, digitalSignatureIcon, digitalSignatureIconName, disconnectIcon, disconnectIconName, displayIcon, displayIconName, dollarBillIcon, dollarBillIconName, dollarIcon, dollarIconName, dotCircleIcon, dotCircleIconName, downloadCloudIcon, downloadCloudIconName, downloadIcon, downloadIconName, dragHandleCornerIcon, dragHandleCornerIconName, dragHandleIcon, dragHandleIconName, eCheckIcon, eCheckIconName, ellipsisHorizontalIcon, ellipsisHorizontalIconName, ellipsisVerticalIcon, ellipsisVerticalIconName, employeeGroupIcon, employeeGroupIconName, employeeIcon, employeeIconName, envelopeIcon, envelopeIconName, eraserIcon, eraserIconName, errorMiniIcon, errorMiniIconName, errorStandardIcon, errorStandardIconName, essentialCollectionAliases, essentialCollectionIcons, euroIcon, euroIconName, eventIcon, eventIconName, eventMiniIcon, eventMiniIconName, exclamationCircleIcon, exclamationCircleIconName, exclamationTriangleIcon, exclamationTriangleIconName, expandCardIcon, expandCardIconName, exportIcon, exportIconName, eyeHideIcon, eyeHideIconName, eyeIcon, eyeIconName, factoryIcon, factoryIconName, fade, fadeSlide, fastForwardIcon, fastForwardIconName, ferryIcon, ferryIconName, fileGroupIcon, fileGroupIconName, fileIcon, fileIconName, fileSettingsIcon, fileSettingsIconName, fileShare2Icon, fileShare2IconName, fileShareIcon, fileShareIconName, fileZipIcon, fileZipIconName, filmStripIcon, filmStripIconName, filter2Icon, filter2IconName, filterGridCircleIcon, filterGridCircleIconName, filterGridCircleMiniIcon, filterGridCircleMiniIconName, filterGridIcon, filterGridIconName, filterGridMiniIcon, filterGridMiniIconName, filterIcon, filterIconName, filterOffIcon, filterOffIconName, firewallIcon, firewallIconName, firstAidIcon, firstAidIconName, fishIcon, fishIconName, flagIcon, flagIconName, flameIcon, flameIconName, flaskIcon, flaskIconName, floppyIcon, floppyIconName, folderIcon, folderIconName, folderOpenIcon, folderOpenIconName, fontSizeIcon, fontSizeIconName, forkingIcon, forkingIconName, formIcon, formIconName, fuelIcon, fuelIconName, gavelIcon, gavelIconName, getConnectedPositions, getContentPosition, getOriginPosition, getPositionsArray, gridChartIcon, gridChartIconName, gridViewIcon, gridViewIconName, halfStarIcon, halfStarIconName, happyFaceIcon, happyFaceIconName, hardDiskIcon, hardDiskIconName, hardDriveDisksIcon, hardDriveDisksIconName, hardDriveIcon, hardDriveIconName, hashtagIcon, hashtagIconName, headphonesIcon, headphonesIconName, heartBrokenIcon, heartBrokenIconName, heartIcon, heartIconName, heatMapIcon, heatMapIconName, helixIcon, helixIconName, helpIcon, helpIconName, helpInfoIcon, helpInfoIconName, highlighterIcon, highlighterIconName, historyIcon, historyIconName, homeIcon, homeIconName, hostGroupIcon, hostGroupIconName, hostIcon, hostIconName, hourglassIcon, hourglassIconName, idBadgeIcon, idBadgeIconName, imageGalleryIcon, imageGalleryIconName, imageIcon, imageIconName, importIcon, importIconName, inboxIcon, inboxIconName, indentIcon, indentIconName, inductorIcon, inductorIconName, infoCircleIcon, infoCircleIconName, infoCircleMiniIcon, infoCircleMiniIconName, infoStandardIcon, infoStandardIconName, installIcon, installIconName, internetOfThingsIcon, internetOfThingsIconName, isBooleanAttributeSet, isKeyEitherLetterOrNumber, isToggleFactory, italicIcon, italicIconName, justifyTextIcon, justifyTextIconName, keyIcon, keyIconName, keyboardIcon, keyboardIconName, landscapeIcon, landscapeIconName, languageIcon, languageIconName, launchpadIcon, launchpadIconName, layersIcon, layersIconName, libraryIcon, libraryIconName, lightbulbIcon, lightbulbIconName, lineChartIcon, lineChartIconName, linkIcon, linkIconName, listIcon, listIconName, loadChartIconSet, loadCommerceIconSet, loadCoreIconSet, loadEssentialIconSet, loadMediaIconSet, loadMiniIconSet, loadSocialIconSet, loadTechnologyIconSet, loadTextEditIconSet, loadTravelIconSet, lockIcon, lockIconName, loginIcon, loginIconName, logoutIcon, logoutIconName, mapIcon, mapIconName, mapMarkerIcon, mapMarkerIconName, mapPopoverKeyToPosition, mediaChangerIcon, mediaChangerIconName, mediaCollectionAliases, mediaCollectionIcons, memoryIcon, memoryIconName, microphoneIcon, microphoneIconName, microphoneMuteIcon, microphoneMuteIconName, miniCollectionAliases, miniCollectionIcons, minusCircleIcon, minusCircleIconName, minusIcon, minusIconName, mobileIcon, mobileIconName, moonIcon, moonIconName, mouseIcon, mouseIconName, musicNoteIcon, musicNoteIconName, namespaceIcon, namespaceIconName, networkGlobeIcon, networkGlobeIconName, networkSettingsIcon, networkSettingsIconName, networkSwitchIcon, networkSwitchIconName, neutralFaceIcon, neutralFaceIconName, newIcon, newIconName, noAccessIcon, noAccessIconName, noWifiIcon, noWifiIconName, nodeGroupIcon, nodeGroupIconName, nodeIcon, nodeIconName, nodesIcon, nodesIconName, noteIcon, noteIconName, numberListIcon, numberListIconName, nvmeIcon, nvmeIconName, objectsIcon, objectsIconName, onHolidayIcon, onHolidayIconName, organizationIcon, organizationIconName, outdentIcon, outdentIconName, paintRollerIcon, paintRollerIconName, panelCollapseTransition, panelExpandTransition, paperclipIcon, paperclipIconName, pasteIcon, pasteIconName, pauseIcon, pauseIconName, pdfFileIcon, pdfFileIconName, pencilIcon, pencilIconName, pesoIcon, pesoIconName, phoneHandsetIcon, phoneHandsetIconName, pictureIcon, pictureIconName, pieChartIcon, pieChartIconName, piggyBankIcon, piggyBankIconName, pinIcon, pinIconName, pinboardIcon, pinboardIconName, playIcon, playIconName, pluginIcon, pluginIconName, plusCircleIcon, plusCircleIconName, plusIcon, plusIconName, podIcon, podIconName, popOutIcon, popOutIconName, portraitIcon, portraitIconName, poundIcon, poundIconName, powerIcon, powerIconName, preventArrowKeyScroll, printerIcon, printerIconName, processOnVmIcon, processOnVmIconName, qrCodeIcon, qrCodeIconName, rackServerIcon, rackServerIconName, radarIcon, radarIconName, recycleIcon, recycleIconName, redoIcon, redoIconName, refreshIcon, refreshIconName, renderIcon, repeatIcon, repeatIconName, replayAllIcon, replayAllIconName, replayOneIcon, replayOneIconName, resistorIcon, resistorIconName, resizeIcon, resizeIconName, resourcePoolIcon, resourcePoolIconName, rewindIcon, rewindIconName, routerIcon, routerIconName, rubleIcon, rubleIconName, rulerPencilIcon, rulerPencilIconName, rupeeIcon, rupeeIconName, sadFaceIcon, sadFaceIconName, scatterPlotIcon, scatterPlotIconName, scissorsIcon, scissorsIconName, scriptExecuteIcon, scriptExecuteIconName, scriptScheduleIcon, scriptScheduleIconName, scrollIcon, scrollIconName, searchIcon, searchIconName, selectFiles, selectionTypeAttribute, shareIcon, shareIconName, shieldCheckIcon, shieldCheckIconName, shieldIcon, shieldIconName, shieldXIcon, shieldXIconName, shoppingBagIcon, shoppingBagIconName, shoppingCartIcon, shoppingCartIconName, shrinkIcon, shrinkIconName, shuffleIcon, shuffleIconName, skipInitialRenderTrigger, slide, sliderIcon, sliderIconName, snowflakeIcon, snowflakeIconName, socialCollectionAliases, socialCollectionIcons, sortByIcon, sortByIconName, squidIcon, squidIconName, ssdIcon, ssdIconName, starIcon, starIconName, stepForward2Icon, stepForward2IconName, stepForwardIcon, stepForwardIconName, stopIcon, stopIconName, storageAdapterIcon, storageAdapterIconName, storageIcon, storageIconName, storeIcon, storeIconName, strikethroughIcon, strikethroughIconName, subscriptIcon, subscriptIconName, successStandardIcon, successStandardIconName, sunIcon, sunIconName, superscriptIcon, superscriptIconName, switchIcon, switchIconName, syncIcon, syncIconName, tableIcon, tableIconName, tabletIcon, tabletIconName, tagIcon, tagIconName, tagsIcon, tagsIconName, talkBubblesIcon, talkBubblesIconName, tapeDriveIcon, tapeDriveIconName, targetIcon, targetIconName, tasksIcon, tasksIconName, technologyCollectionAliases, technologyCollectionIcons, terminalIcon, terminalIconName, textColorIcon, textColorIconName, textEditCollectionAliases, textEditCollectionIcons, textIcon, textIconName, thermometerIcon, thermometerIconName, thinClientIcon, thinClientIconName, thumbsDownIcon, thumbsDownIconName, thumbsUpIcon, thumbsUpIconName, tickChartIcon, tickChartIconName, timelineIcon, timelineIconName, timesCircleIcon, timesCircleIconName, timesIcon, timesIconName, timesMiniIcon, timesMiniIconName, tokenFactory, toolsIcon, toolsIconName, trailerIcon, trailerIconName, trashIcon, trashIconName, travelCollectionAliases, travelCollectionIcons, treeIcon, treeIconName, treeViewIcon, treeViewIconName, triggerAllFormControlValidation, truckIcon, truckIconName, twoWayArrowsIcon, twoWayArrowsIconName, unarchiveIcon, unarchiveIconName, underlineIcon, underlineIconName, undoIcon, undoIconName, uninstallIcon, uninstallIconName, uniqueIdFactory, unknownIcon, unknownIconName, unknownStatusIcon, unknownStatusIconName, unlinkIcon, unlinkIconName, unlockIcon, unlockIconName, unpinIcon, unpinIconName, updateIcon, updateIconName, uploadCloudIcon, uploadCloudIconName, uploadIcon, uploadIconName, usbIcon, usbIconName, userIcon, userIconName, usersIcon, usersIconName, videoCameraIcon, videoCameraIconName, videoGalleryIcon, videoGalleryIconName, viewCardsIcon, viewCardsIconName, viewColumnsIcon, viewColumnsIconName, viewListIcon, viewListIconName, vmBugIcon, vmBugIconName, vmBugInverseIcon, vmBugInverseIconName, vmIcon, vmIconName, vmwAppIcon, vmwAppIconName, volumeDownIcon, volumeDownIconName, volumeIcon, volumeIconName, volumeMuteIcon, volumeMuteIconName, volumeUpIcon, volumeUpIconName, walletIcon, walletIconName, wandIcon, wandIconName, warningMiniIcon, warningMiniIconName, warningStandardIcon, warningStandardIconName, wifiIcon, wifiIconName, windowCloseIcon, windowCloseIconName, windowMaxIcon, windowMaxIconName, windowMinIcon, windowMinIconName, windowRestoreIcon, windowRestoreIconName, wonIcon, wonIconName, worldIcon, worldIconName, wrapObservable, wrenchIcon, wrenchIconName, xlsFileIcon, xlsFileIconName, yenIcon, yenIconName, zoomInIcon, zoomInIconName, zoomOutIcon, zoomOutIconName, AccordionOompaLoompa as ÇlrAccordionOompaLoompa, AccordionWillyWonka as ÇlrAccordionWillyWonka, ActionableOompaLoompa as ÇlrActionableOompaLoompa, ActiveOompaLoompa as ÇlrActiveOompaLoompa, ClrPopoverCloseButton as ÇlrClrPopoverCloseButton, ClrPopoverModuleNext as ÇlrClrPopoverModuleNext, ClrPopoverOpenCloseButton as ÇlrClrPopoverOpenCloseButton, DatagridCellRenderer as ÇlrDatagridCellRenderer, DatagridDetailRegisterer as ÇlrDatagridDetailRegisterer, DatagridHeaderRenderer as ÇlrDatagridHeaderRenderer, DatagridMainRenderer as ÇlrDatagridMainRenderer, DatagridRowDetailRenderer as ÇlrDatagridRowDetailRenderer, DatagridRowRenderer as ÇlrDatagridRowRenderer, ClrDatagridSelectionCellDirective as ÇlrDatagridSelectionCellDirective, ClrDatagridSingleSelectionValueAccessor as ÇlrDatagridSingleSelectionValueAccessor, ClrDatagridVirtualScrollDirective as ÇlrDatagridVirtualScrollDirective, DatagridWillyWonka as ÇlrDatagridWillyWonka, ExpandableOompaLoompa as ÇlrExpandableOompaLoompa, StepperOompaLoompa as ÇlrStepperOompaLoompa, StepperWillyWonka as ÇlrStepperWillyWonka, TabsWillyWonka as ÇlrTabsWillyWonka, WrappedCell as ÇlrWrappedCell, WrappedColumn as ÇlrWrappedColumn, WrappedRow as ÇlrWrappedRow };
38771
38714
  //# sourceMappingURL=clr-angular.mjs.map