@clr/angular 13.9.0 → 13.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/accordion/accordion-panel.d.ts +2 -2
  2. package/accordion/stepper/stepper-panel.d.ts +2 -2
  3. package/button/button-group/button-group.d.ts +2 -2
  4. package/clarity.api.md +49 -44
  5. package/data/datagrid/datagrid-action-overflow.d.ts +2 -2
  6. package/data/datagrid/datagrid-column-separator.d.ts +1 -1
  7. package/data/datagrid/datagrid-column-toggle.d.ts +2 -6
  8. package/data/datagrid/datagrid-filter.d.ts +2 -2
  9. package/data/datagrid/datagrid.d.ts +1 -1
  10. package/data/datagrid/providers/selection.d.ts +1 -3
  11. package/data/stack-view/stack-block.d.ts +3 -3
  12. package/data/stack-view/stack-content-input.d.ts +0 -1
  13. package/data/stack-view/stack-view-custom-tags.d.ts +0 -2
  14. package/data/tree-view/tree-node.d.ts +3 -3
  15. package/esm2020/accordion/accordion-panel.mjs +9 -12
  16. package/esm2020/accordion/stepper/stepper-panel.mjs +7 -11
  17. package/esm2020/button/button-group/button-group.mjs +7 -12
  18. package/esm2020/button/button-group/button.mjs +1 -1
  19. package/esm2020/button/button-loading/loading-button.mjs +1 -1
  20. package/esm2020/data/datagrid/built-in/comparators/datagrid-property-comparator.mjs +1 -1
  21. package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter-impl.mjs +1 -1
  22. package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter.mjs +1 -1
  23. package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter-impl.mjs +1 -1
  24. package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter.mjs +1 -1
  25. package/esm2020/data/datagrid/built-in/nested-property.mjs +1 -1
  26. package/esm2020/data/datagrid/datagrid-action-overflow.mjs +8 -11
  27. package/esm2020/data/datagrid/datagrid-cell.mjs +1 -1
  28. package/esm2020/data/datagrid/datagrid-column-separator.mjs +6 -10
  29. package/esm2020/data/datagrid/datagrid-column-toggle.mjs +9 -22
  30. package/esm2020/data/datagrid/datagrid-column.mjs +1 -1
  31. package/esm2020/data/datagrid/datagrid-detail.mjs +1 -1
  32. package/esm2020/data/datagrid/datagrid-filter.mjs +7 -10
  33. package/esm2020/data/datagrid/datagrid-footer.mjs +1 -1
  34. package/esm2020/data/datagrid/datagrid-hideable-column.mjs +1 -1
  35. package/esm2020/data/datagrid/datagrid-if-detail.mjs +1 -1
  36. package/esm2020/data/datagrid/datagrid-items.mjs +1 -1
  37. package/esm2020/data/datagrid/datagrid-pagination.mjs +1 -1
  38. package/esm2020/data/datagrid/datagrid-placeholder.mjs +1 -1
  39. package/esm2020/data/datagrid/datagrid-row-detail.mjs +1 -1
  40. package/esm2020/data/datagrid/datagrid-row.mjs +1 -1
  41. package/esm2020/data/datagrid/datagrid.mjs +5 -9
  42. package/esm2020/data/datagrid/providers/column-resizer.service.mjs +1 -1
  43. package/esm2020/data/datagrid/providers/detail.service.mjs +1 -1
  44. package/esm2020/data/datagrid/providers/display-mode.service.mjs +1 -1
  45. package/esm2020/data/datagrid/providers/filters.mjs +1 -1
  46. package/esm2020/data/datagrid/providers/global-expandable-rows.mjs +1 -1
  47. package/esm2020/data/datagrid/providers/items.mjs +1 -1
  48. package/esm2020/data/datagrid/providers/page.mjs +1 -1
  49. package/esm2020/data/datagrid/providers/row-action-service.mjs +1 -1
  50. package/esm2020/data/datagrid/providers/selection.mjs +4 -5
  51. package/esm2020/data/datagrid/providers/sort.mjs +1 -1
  52. package/esm2020/data/datagrid/providers/state-debouncer.provider.mjs +1 -1
  53. package/esm2020/data/datagrid/providers/table-size.service.mjs +1 -1
  54. package/esm2020/data/datagrid/render/header-renderer.mjs +1 -1
  55. package/esm2020/data/datagrid/render/main-renderer.mjs +1 -1
  56. package/esm2020/data/datagrid/render/render-organizer.mjs +1 -1
  57. package/esm2020/data/datagrid/render/row-renderer.mjs +1 -1
  58. package/esm2020/data/datagrid/utils/datagrid-filter-registrar.mjs +1 -1
  59. package/esm2020/data/stack-view/stack-block.mjs +7 -11
  60. package/esm2020/data/stack-view/stack-content-input.mjs +7 -10
  61. package/esm2020/data/stack-view/stack-view-custom-tags.mjs +8 -13
  62. package/esm2020/data/tree-view/tree-focus-manager.service.mjs +1 -1
  63. package/esm2020/data/tree-view/tree-node.mjs +7 -20
  64. package/esm2020/emphasis/alert/alerts.mjs +1 -1
  65. package/esm2020/emphasis/alert/providers/icon-and-types.service.mjs +1 -1
  66. package/esm2020/emphasis/alert/providers/multi-alert.service.mjs +1 -1
  67. package/esm2020/forms/checkbox/checkbox-container.mjs +1 -1
  68. package/esm2020/forms/combobox/combobox.mjs +19 -20
  69. package/esm2020/forms/combobox/option-items.directive.mjs +1 -1
  70. package/esm2020/forms/combobox/option.mjs +8 -13
  71. package/esm2020/forms/combobox/options.mjs +10 -19
  72. package/esm2020/forms/combobox/providers/combobox-focus-handler.service.mjs +4 -9
  73. package/esm2020/forms/combobox/providers/option-selection.service.mjs +1 -1
  74. package/esm2020/forms/common/abstract-control.mjs +1 -1
  75. package/esm2020/forms/common/providers/container-id.service.mjs +1 -1
  76. package/esm2020/forms/common/providers/control-id.service.mjs +1 -1
  77. package/esm2020/forms/common/wrapped-control.mjs +1 -8
  78. package/esm2020/forms/datalist/providers/datalist-id.service.mjs +1 -1
  79. package/esm2020/forms/datepicker/date-container.mjs +1 -1
  80. package/esm2020/forms/datepicker/date-input.mjs +1 -1
  81. package/esm2020/forms/datepicker/date-input.validator.mjs +40 -0
  82. package/esm2020/forms/datepicker/datepicker.module.mjs +5 -1
  83. package/esm2020/forms/datepicker/day.mjs +1 -1
  84. package/esm2020/forms/datepicker/index.mjs +2 -1
  85. package/esm2020/forms/datepicker/model/calendar.model.mjs +1 -1
  86. package/esm2020/forms/datepicker/model/day.model.mjs +1 -1
  87. package/esm2020/forms/datepicker/providers/date-form-control.service.mjs +1 -1
  88. package/esm2020/forms/datepicker/providers/date-io.service.mjs +1 -1
  89. package/esm2020/forms/datepicker/providers/date-navigation.service.mjs +1 -1
  90. package/esm2020/forms/datepicker/yearpicker.mjs +1 -10
  91. package/esm2020/forms/radio/radio-container.mjs +1 -1
  92. package/esm2020/layout/nav/aria-current-link.mjs +1 -1
  93. package/esm2020/layout/nav/providers/responsive-navigation.service.mjs +1 -1
  94. package/esm2020/layout/nav/responsive-nav-codes.mjs +1 -1
  95. package/esm2020/layout/tabs/tab-content.mjs +6 -14
  96. package/esm2020/layout/tabs/tab-link.directive.mjs +6 -14
  97. package/esm2020/layout/tabs/tab.mjs +3 -4
  98. package/esm2020/layout/vertical-nav/providers/vertical-nav-group-registration.service.mjs +1 -1
  99. package/esm2020/modal/modal.mjs +9 -12
  100. package/esm2020/popover/common/abstract-popover.mjs +1 -1
  101. package/esm2020/popover/common/popover.mjs +1 -1
  102. package/esm2020/popover/dropdown/dropdown-item.mjs +1 -1
  103. package/esm2020/popover/dropdown/dropdown-trigger.mjs +1 -1
  104. package/esm2020/popover/dropdown/providers/dropdown-focus-handler.service.mjs +6 -9
  105. package/esm2020/popover/signpost/signpost-content.mjs +8 -12
  106. package/esm2020/popover/signpost/signpost-trigger.mjs +1 -1
  107. package/esm2020/popover/signpost/signpost.mjs +1 -1
  108. package/esm2020/popover/tooltip/tooltip-content.mjs +5 -9
  109. package/esm2020/popover/tooltip/tooltip-trigger.mjs +1 -1
  110. package/esm2020/popover/tooltip/tooltip.mjs +3 -18
  111. package/esm2020/timeline/providers/timeline-icon-attribute.service.mjs +1 -1
  112. package/esm2020/timeline/timeline-step.mjs +1 -1
  113. package/esm2020/utils/a11y/aria-live.service.mjs +1 -1
  114. package/esm2020/utils/chocolate/willy-wonka.mjs +1 -1
  115. package/esm2020/utils/conditional/if-active.directive.mjs +1 -1
  116. package/esm2020/utils/conditional/if-active.service.mjs +1 -1
  117. package/esm2020/utils/conditional/if-expanded.service.mjs +1 -1
  118. package/esm2020/utils/conditional/if-open.directive.mjs +1 -1
  119. package/esm2020/utils/drag-and-drop/drag-event.mjs +1 -1
  120. package/esm2020/utils/drag-and-drop/draggable/draggable.mjs +1 -1
  121. package/esm2020/utils/drag-and-drop/providers/drag-event-listener.service.mjs +1 -1
  122. package/esm2020/utils/drag-and-drop/providers/drag-handle-registrar.service.mjs +1 -1
  123. package/esm2020/utils/drag-and-drop/providers/draggable-snapshot.service.mjs +1 -1
  124. package/esm2020/utils/focus/focus.service.mjs +1 -1
  125. package/esm2020/utils/focus/focusable-item/basic-focusable-item.service.mjs +7 -11
  126. package/esm2020/utils/focus/focusable-item/custom-focusable-item-provider.mjs +1 -3
  127. package/esm2020/utils/focus-trap/focus-trap.directive.mjs +1 -1
  128. package/esm2020/utils/id-generator/id-generator.service.mjs +1 -7
  129. package/esm2020/utils/loading/loading.mjs +1 -1
  130. package/esm2020/utils/popover/popover-content.mjs +1 -1
  131. package/esm2020/utils/popover/providers/popover-events.service.mjs +1 -1
  132. package/esm2020/utils/popover/providers/popover-position.service.mjs +1 -1
  133. package/esm2020/utils/popover/providers/popover-toggle.service.mjs +1 -1
  134. package/esm2020/wizard/providers/button-hub.service.mjs +1 -1
  135. package/esm2020/wizard/providers/header-actions.service.mjs +1 -1
  136. package/esm2020/wizard/providers/page-collection.service.mjs +1 -1
  137. package/esm2020/wizard/providers/wizard-navigation.service.mjs +1 -1
  138. package/esm2020/wizard/wizard-button.mjs +1 -1
  139. package/esm2020/wizard/wizard-header-action.mjs +1 -1
  140. package/esm2020/wizard/wizard-page.mjs +1 -1
  141. package/esm2020/wizard/wizard-stepnav-item.mjs +1 -1
  142. package/esm2020/wizard/wizard.mjs +8 -23
  143. package/fesm2015/clr-angular.mjs +414 -561
  144. package/fesm2015/clr-angular.mjs.map +1 -1
  145. package/fesm2020/clr-angular.mjs +421 -560
  146. package/fesm2020/clr-angular.mjs.map +1 -1
  147. package/forms/combobox/combobox.d.ts +4 -5
  148. package/forms/combobox/option.d.ts +1 -2
  149. package/forms/combobox/options.d.ts +3 -6
  150. package/forms/combobox/providers/combobox-focus-handler.service.d.ts +2 -6
  151. package/forms/datepicker/date-input.validator.d.ts +10 -0
  152. package/forms/datepicker/datepicker.module.d.ts +14 -13
  153. package/forms/datepicker/index.d.ts +1 -0
  154. package/forms/datepicker/yearpicker.d.ts +0 -2
  155. package/layout/tabs/tab-content.d.ts +2 -5
  156. package/layout/tabs/tab-link.directive.d.ts +2 -5
  157. package/modal/modal.d.ts +1 -1
  158. package/package.json +1 -1
  159. package/popover/dropdown/providers/dropdown-focus-handler.service.d.ts +4 -7
  160. package/popover/signpost/signpost-content.d.ts +3 -3
  161. package/popover/tooltip/tooltip-content.d.ts +2 -3
  162. package/utils/focus/focusable-item/basic-focusable-item.service.d.ts +4 -7
  163. package/utils/focus/focusable-item/custom-focusable-item-provider.d.ts +1 -4
  164. package/utils/id-generator/id-generator.service.d.ts +0 -6
  165. package/wizard/wizard.d.ts +2 -2
  166. package/esm2020/utils/aria/aria.service.mjs +0 -16
  167. package/utils/aria/aria.service.d.ts +0 -8
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Directive, NgModule, Optional, Input, Injectable, InjectionToken, Component, ChangeDetectionStrategy, EventEmitter, Inject, Output, ContentChildren, PLATFORM_ID, ViewChild, HostBinding, HostListener, SkipSelf, ContentChild, ComponentFactoryResolver, ElementRef, Self, Attribute, Renderer2, LOCALE_ID, ViewContainerRef, NgZone, ChangeDetectorRef, TemplateRef } from '@angular/core';
2
+ import { Directive, NgModule, Optional, Input, Injectable, Component, ChangeDetectionStrategy, EventEmitter, Output, ContentChildren, PLATFORM_ID, Inject, ViewChild, HostBinding, HostListener, SkipSelf, ContentChild, ComponentFactoryResolver, ElementRef, Self, InjectionToken, Attribute, Renderer2, LOCALE_ID, ViewContainerRef, NgZone, ChangeDetectorRef, TemplateRef } from '@angular/core';
3
3
  import * as i5 from '@angular/common';
4
4
  import { CommonModule, isPlatformBrowser, DOCUMENT, NgForOf, getLocaleDayNames, FormStyle, TranslationWidth, getLocaleMonthNames, getLocaleFirstDayOfWeek, getLocaleDateFormat, FormatWidth } from '@angular/common';
5
5
  import { ClarityIcons, angleIcon, exclamationCircleIcon, checkCircleIcon, ellipsisHorizontalIcon, windowCloseIcon, eventIcon, calendarIcon, eyeHideIcon, eyeIcon, ellipsisVerticalIcon, viewColumnsIcon, arrowIcon, timesIcon, stepForward2Icon, angleDoubleIcon, filterGridCircleIcon, filterGridIcon, infoCircleIcon, exclamationTriangleIcon, circleIcon, dotCircleIcon, errorStandardIcon, successStandardIcon } from '@cds/core/icon';
@@ -8,7 +8,7 @@ import * as i3 from 'rxjs';
8
8
  import { Subject, BehaviorSubject, Observable, fromEvent, isObservable, of, ReplaySubject, combineLatest } from 'rxjs';
9
9
  import { trigger, transition, style, animate, keyframes, state } from '@angular/animations';
10
10
  import * as i1 from '@angular/forms';
11
- import { FormControl, FormGroup, FormsModule, SelectMultipleControlValueAccessor } from '@angular/forms';
11
+ import { FormControl, FormGroup, FormsModule, NG_VALIDATORS, SelectMultipleControlValueAccessor } from '@angular/forms';
12
12
  import * as i1$1 from '@angular/router';
13
13
  import { FocusTrapTrackerService, createId, isFocusable, isHTMLElement } from '@cds/core/internal';
14
14
  import '@cds/core/internal-components/close-button/register.js';
@@ -186,14 +186,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
186
186
  * The full license information can be found in LICENSE in the root directory of this project.
187
187
  */
188
188
  let NB_INSTANCES = 0;
189
- const UNIQUE_ID = new InjectionToken('UNIQUE_ID');
190
189
  function uniqueIdFactory() {
191
190
  return 'clr-id-' + NB_INSTANCES++;
192
191
  }
193
- const UNIQUE_ID_PROVIDER = {
194
- provide: UNIQUE_ID,
195
- useFactory: uniqueIdFactory,
196
- };
197
192
 
198
193
  /*
199
194
  * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
@@ -533,16 +528,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
533
528
  * The full license information can be found in LICENSE in the root directory of this project.
534
529
  */
535
530
  class ClrAccordionPanel {
536
- constructor(commonStrings, accordionService, ifExpandService, _id) {
531
+ constructor(commonStrings, accordionService, ifExpandService) {
537
532
  this.commonStrings = commonStrings;
538
533
  this.accordionService = accordionService;
539
534
  this.ifExpandService = ifExpandService;
540
- this._id = _id;
541
535
  this.disabled = false;
542
536
  this.panelOpen = false;
543
537
  this.panelOpenChange = new EventEmitter();
544
538
  this.AccordionStatus = AccordionStatus;
545
539
  this.isAccordion = true;
540
+ this._id = uniqueIdFactory();
546
541
  }
547
542
  get id() {
548
543
  return this._id;
@@ -600,15 +595,12 @@ class ClrAccordionPanel {
600
595
  }
601
596
  }
602
597
  }
603
- ClrAccordionPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrAccordionPanel, deps: [{ token: ClrCommonStringsService }, { token: AccordionService }, { token: IfExpandService }, { token: UNIQUE_ID }], target: i0.ɵɵFactoryTarget.Component });
604
- ClrAccordionPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrAccordionPanel, selector: "clr-accordion-panel", inputs: { disabled: ["clrAccordionPanelDisabled", "disabled"], panelOpen: ["clrAccordionPanelOpen", "panelOpen"] }, outputs: { panelOpenChange: "clrAccordionPanelOpenChange" }, host: { properties: { "class.clr-accordion-panel": "true" } }, providers: [IfExpandService, UNIQUE_ID_PROVIDER], queries: [{ propertyName: "accordionDescription", predicate: ClrAccordionDescription }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"panel | async; let panel\">\n <div *ngIf=\"panel.status !== AccordionStatus.Inactive\" aria-live=\"assertive\" class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n </div>\n\n <div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-accordion-header\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [disabled]=\"isAccordion && panel.disabled\"\n [attr.aria-disabled]=\"!isAccordion && panel.disabled\"\n [attr.aria-controls]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-expanded]=\"panel.open\"\n [class.clr-accordion-header-has-description]=\"(accordionDescription.changes | async)?.length || accordionDescription.length\"\n #headerButton\n >\n <span class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n <ng-container *ngIf=\"panel.status === AccordionStatus.Complete\">{{commonStrings.keys.success}}</ng-container>\n </span>\n <span class=\"clr-accordion-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle\"></cds-icon>\n <span class=\"clr-accordion-number\"></span>\n <cds-icon status=\"danger\" shape=\"exclamation-circle\" class=\"clr-accordion-error-icon\"></cds-icon>\n <cds-icon status=\"success\" shape=\"check-circle\" class=\"clr-accordion-complete-icon\"></cds-icon>\n </span>\n <ng-content select=\"clr-accordion-title, clr-step-title\"></ng-content>\n <ng-content select=\"clr-accordion-description, clr-step-description\"></ng-content>\n </button>\n </div>\n <div\n @skipInitialRender\n role=\"region\"\n [id]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-hidden]=\"!panel.open\"\n [attr.aria-labelledby]=\"getAccordionHeaderId(panel.templateId)\"\n >\n <div\n *ngIf=\"panel.open\"\n @toggle\n (@toggle.done)=\"collapsePanelOnAnimationDone(panel)\"\n class=\"clr-accordion-content\"\n >\n <div class=\"clr-accordion-inner-content\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n", directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: CdsIconCustomTag, selector: "cds-icon" }], pipes: { "async": i5.AsyncPipe }, animations: panelAnimation, changeDetection: i0.ChangeDetectionStrategy.OnPush });
598
+ ClrAccordionPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrAccordionPanel, deps: [{ token: ClrCommonStringsService }, { token: AccordionService }, { token: IfExpandService }], target: i0.ɵɵFactoryTarget.Component });
599
+ ClrAccordionPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrAccordionPanel, selector: "clr-accordion-panel", inputs: { disabled: ["clrAccordionPanelDisabled", "disabled"], panelOpen: ["clrAccordionPanelOpen", "panelOpen"] }, outputs: { panelOpenChange: "clrAccordionPanelOpenChange" }, host: { properties: { "class.clr-accordion-panel": "true" } }, providers: [IfExpandService], queries: [{ propertyName: "accordionDescription", predicate: ClrAccordionDescription }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"panel | async; let panel\">\n <div *ngIf=\"panel.status !== AccordionStatus.Inactive\" aria-live=\"assertive\" class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n </div>\n\n <div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-accordion-header\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [disabled]=\"isAccordion && panel.disabled\"\n [attr.aria-disabled]=\"!isAccordion && panel.disabled\"\n [attr.aria-controls]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-expanded]=\"panel.open\"\n [class.clr-accordion-header-has-description]=\"(accordionDescription.changes | async)?.length || accordionDescription.length\"\n #headerButton\n >\n <span class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n <ng-container *ngIf=\"panel.status === AccordionStatus.Complete\">{{commonStrings.keys.success}}</ng-container>\n </span>\n <span class=\"clr-accordion-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle\"></cds-icon>\n <span class=\"clr-accordion-number\"></span>\n <cds-icon status=\"danger\" shape=\"exclamation-circle\" class=\"clr-accordion-error-icon\"></cds-icon>\n <cds-icon status=\"success\" shape=\"check-circle\" class=\"clr-accordion-complete-icon\"></cds-icon>\n </span>\n <ng-content select=\"clr-accordion-title, clr-step-title\"></ng-content>\n <ng-content select=\"clr-accordion-description, clr-step-description\"></ng-content>\n </button>\n </div>\n <div\n @skipInitialRender\n role=\"region\"\n [id]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-hidden]=\"!panel.open\"\n [attr.aria-labelledby]=\"getAccordionHeaderId(panel.templateId)\"\n >\n <div\n *ngIf=\"panel.open\"\n @toggle\n (@toggle.done)=\"collapsePanelOnAnimationDone(panel)\"\n class=\"clr-accordion-content\"\n >\n <div class=\"clr-accordion-inner-content\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n", directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: CdsIconCustomTag, selector: "cds-icon" }], pipes: { "async": i5.AsyncPipe }, animations: panelAnimation, changeDetection: i0.ChangeDetectionStrategy.OnPush });
605
600
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrAccordionPanel, decorators: [{
606
601
  type: Component,
607
- args: [{ selector: 'clr-accordion-panel', host: { '[class.clr-accordion-panel]': 'true' }, changeDetection: ChangeDetectionStrategy.OnPush, animations: panelAnimation, providers: [IfExpandService, UNIQUE_ID_PROVIDER], template: "<ng-container *ngIf=\"panel | async; let panel\">\n <div *ngIf=\"panel.status !== AccordionStatus.Inactive\" aria-live=\"assertive\" class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n </div>\n\n <div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-accordion-header\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [disabled]=\"isAccordion && panel.disabled\"\n [attr.aria-disabled]=\"!isAccordion && panel.disabled\"\n [attr.aria-controls]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-expanded]=\"panel.open\"\n [class.clr-accordion-header-has-description]=\"(accordionDescription.changes | async)?.length || accordionDescription.length\"\n #headerButton\n >\n <span class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n <ng-container *ngIf=\"panel.status === AccordionStatus.Complete\">{{commonStrings.keys.success}}</ng-container>\n </span>\n <span class=\"clr-accordion-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle\"></cds-icon>\n <span class=\"clr-accordion-number\"></span>\n <cds-icon status=\"danger\" shape=\"exclamation-circle\" class=\"clr-accordion-error-icon\"></cds-icon>\n <cds-icon status=\"success\" shape=\"check-circle\" class=\"clr-accordion-complete-icon\"></cds-icon>\n </span>\n <ng-content select=\"clr-accordion-title, clr-step-title\"></ng-content>\n <ng-content select=\"clr-accordion-description, clr-step-description\"></ng-content>\n </button>\n </div>\n <div\n @skipInitialRender\n role=\"region\"\n [id]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-hidden]=\"!panel.open\"\n [attr.aria-labelledby]=\"getAccordionHeaderId(panel.templateId)\"\n >\n <div\n *ngIf=\"panel.open\"\n @toggle\n (@toggle.done)=\"collapsePanelOnAnimationDone(panel)\"\n class=\"clr-accordion-content\"\n >\n <div class=\"clr-accordion-inner-content\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n" }]
608
- }], ctorParameters: function () { return [{ type: ClrCommonStringsService }, { type: AccordionService }, { type: IfExpandService }, { type: undefined, decorators: [{
609
- type: Inject,
610
- args: [UNIQUE_ID]
611
- }] }]; }, propDecorators: { disabled: [{
602
+ args: [{ selector: 'clr-accordion-panel', host: { '[class.clr-accordion-panel]': 'true' }, changeDetection: ChangeDetectionStrategy.OnPush, animations: panelAnimation, providers: [IfExpandService], template: "<ng-container *ngIf=\"panel | async; let panel\">\n <div *ngIf=\"panel.status !== AccordionStatus.Inactive\" aria-live=\"assertive\" class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n </div>\n\n <div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-accordion-header\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [disabled]=\"isAccordion && panel.disabled\"\n [attr.aria-disabled]=\"!isAccordion && panel.disabled\"\n [attr.aria-controls]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-expanded]=\"panel.open\"\n [class.clr-accordion-header-has-description]=\"(accordionDescription.changes | async)?.length || accordionDescription.length\"\n #headerButton\n >\n <span class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n <ng-container *ngIf=\"panel.status === AccordionStatus.Complete\">{{commonStrings.keys.success}}</ng-container>\n </span>\n <span class=\"clr-accordion-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle\"></cds-icon>\n <span class=\"clr-accordion-number\"></span>\n <cds-icon status=\"danger\" shape=\"exclamation-circle\" class=\"clr-accordion-error-icon\"></cds-icon>\n <cds-icon status=\"success\" shape=\"check-circle\" class=\"clr-accordion-complete-icon\"></cds-icon>\n </span>\n <ng-content select=\"clr-accordion-title, clr-step-title\"></ng-content>\n <ng-content select=\"clr-accordion-description, clr-step-description\"></ng-content>\n </button>\n </div>\n <div\n @skipInitialRender\n role=\"region\"\n [id]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-hidden]=\"!panel.open\"\n [attr.aria-labelledby]=\"getAccordionHeaderId(panel.templateId)\"\n >\n <div\n *ngIf=\"panel.open\"\n @toggle\n (@toggle.done)=\"collapsePanelOnAnimationDone(panel)\"\n class=\"clr-accordion-content\"\n >\n <div class=\"clr-accordion-inner-content\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n" }]
603
+ }], ctorParameters: function () { return [{ type: ClrCommonStringsService }, { type: AccordionService }, { type: IfExpandService }]; }, propDecorators: { disabled: [{
612
604
  type: Input,
613
605
  args: ['clrAccordionPanelDisabled']
614
606
  }], panelOpen: [{
@@ -1051,8 +1043,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
1051
1043
  * The full license information can be found in LICENSE in the root directory of this project.
1052
1044
  */
1053
1045
  class ClrStepperPanel extends ClrAccordionPanel {
1054
- constructor(platformId, commonStrings, formGroupName, ngModelGroup, stepperService, ifExpandService, id) {
1055
- super(commonStrings, stepperService, ifExpandService, id);
1046
+ constructor(platformId, commonStrings, formGroupName, ngModelGroup, stepperService, ifExpandService) {
1047
+ super(commonStrings, stepperService, ifExpandService);
1056
1048
  this.platformId = platformId;
1057
1049
  this.commonStrings = commonStrings;
1058
1050
  this.formGroupName = formGroupName;
@@ -1098,11 +1090,11 @@ class ClrStepperPanel extends ClrAccordionPanel {
1098
1090
  }
1099
1091
  }
1100
1092
  }
1101
- ClrStepperPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrStepperPanel, deps: [{ token: PLATFORM_ID }, { token: ClrCommonStringsService }, { token: i1.FormGroupName, optional: true }, { token: i1.NgModelGroup, optional: true }, { token: StepperService }, { token: IfExpandService }, { token: UNIQUE_ID }], target: i0.ɵɵFactoryTarget.Component });
1102
- ClrStepperPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrStepperPanel, selector: "clr-stepper-panel", host: { properties: { "class.clr-accordion-panel": "true" } }, providers: [IfExpandService, UNIQUE_ID_PROVIDER], viewQueries: [{ propertyName: "headerButton", first: true, predicate: ["headerButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"panel | async; let panel\">\n <div *ngIf=\"panel.status !== AccordionStatus.Inactive\" aria-live=\"assertive\" class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n </div>\n\n <div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-accordion-header\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [disabled]=\"isAccordion && panel.disabled\"\n [attr.aria-disabled]=\"!isAccordion && panel.disabled\"\n [attr.aria-controls]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-expanded]=\"panel.open\"\n [class.clr-accordion-header-has-description]=\"(accordionDescription.changes | async)?.length || accordionDescription.length\"\n #headerButton\n >\n <span class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n <ng-container *ngIf=\"panel.status === AccordionStatus.Complete\">{{commonStrings.keys.success}}</ng-container>\n </span>\n <span class=\"clr-accordion-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle\"></cds-icon>\n <span class=\"clr-accordion-number\"></span>\n <cds-icon status=\"danger\" shape=\"exclamation-circle\" class=\"clr-accordion-error-icon\"></cds-icon>\n <cds-icon status=\"success\" shape=\"check-circle\" class=\"clr-accordion-complete-icon\"></cds-icon>\n </span>\n <ng-content select=\"clr-accordion-title, clr-step-title\"></ng-content>\n <ng-content select=\"clr-accordion-description, clr-step-description\"></ng-content>\n </button>\n </div>\n <div\n @skipInitialRender\n role=\"region\"\n [id]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-hidden]=\"!panel.open\"\n [attr.aria-labelledby]=\"getAccordionHeaderId(panel.templateId)\"\n >\n <div\n *ngIf=\"panel.open\"\n @toggle\n (@toggle.done)=\"collapsePanelOnAnimationDone(panel)\"\n class=\"clr-accordion-content\"\n >\n <div class=\"clr-accordion-inner-content\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n", directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: CdsIconCustomTag, selector: "cds-icon" }], pipes: { "async": i5.AsyncPipe }, animations: stepAnimation, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1093
+ ClrStepperPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrStepperPanel, deps: [{ token: PLATFORM_ID }, { token: ClrCommonStringsService }, { token: i1.FormGroupName, optional: true }, { token: i1.NgModelGroup, optional: true }, { token: StepperService }, { token: IfExpandService }], target: i0.ɵɵFactoryTarget.Component });
1094
+ ClrStepperPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrStepperPanel, selector: "clr-stepper-panel", host: { properties: { "class.clr-accordion-panel": "true" } }, providers: [IfExpandService], viewQueries: [{ propertyName: "headerButton", first: true, predicate: ["headerButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"panel | async; let panel\">\n <div *ngIf=\"panel.status !== AccordionStatus.Inactive\" aria-live=\"assertive\" class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n </div>\n\n <div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-accordion-header\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [disabled]=\"isAccordion && panel.disabled\"\n [attr.aria-disabled]=\"!isAccordion && panel.disabled\"\n [attr.aria-controls]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-expanded]=\"panel.open\"\n [class.clr-accordion-header-has-description]=\"(accordionDescription.changes | async)?.length || accordionDescription.length\"\n #headerButton\n >\n <span class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n <ng-container *ngIf=\"panel.status === AccordionStatus.Complete\">{{commonStrings.keys.success}}</ng-container>\n </span>\n <span class=\"clr-accordion-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle\"></cds-icon>\n <span class=\"clr-accordion-number\"></span>\n <cds-icon status=\"danger\" shape=\"exclamation-circle\" class=\"clr-accordion-error-icon\"></cds-icon>\n <cds-icon status=\"success\" shape=\"check-circle\" class=\"clr-accordion-complete-icon\"></cds-icon>\n </span>\n <ng-content select=\"clr-accordion-title, clr-step-title\"></ng-content>\n <ng-content select=\"clr-accordion-description, clr-step-description\"></ng-content>\n </button>\n </div>\n <div\n @skipInitialRender\n role=\"region\"\n [id]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-hidden]=\"!panel.open\"\n [attr.aria-labelledby]=\"getAccordionHeaderId(panel.templateId)\"\n >\n <div\n *ngIf=\"panel.open\"\n @toggle\n (@toggle.done)=\"collapsePanelOnAnimationDone(panel)\"\n class=\"clr-accordion-content\"\n >\n <div class=\"clr-accordion-inner-content\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n", directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: CdsIconCustomTag, selector: "cds-icon" }], pipes: { "async": i5.AsyncPipe }, animations: stepAnimation, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1103
1095
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrStepperPanel, decorators: [{
1104
1096
  type: Component,
1105
- args: [{ selector: 'clr-stepper-panel', host: { '[class.clr-accordion-panel]': 'true' }, changeDetection: ChangeDetectionStrategy.OnPush, animations: stepAnimation, providers: [IfExpandService, UNIQUE_ID_PROVIDER], template: "<ng-container *ngIf=\"panel | async; let panel\">\n <div *ngIf=\"panel.status !== AccordionStatus.Inactive\" aria-live=\"assertive\" class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n </div>\n\n <div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-accordion-header\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [disabled]=\"isAccordion && panel.disabled\"\n [attr.aria-disabled]=\"!isAccordion && panel.disabled\"\n [attr.aria-controls]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-expanded]=\"panel.open\"\n [class.clr-accordion-header-has-description]=\"(accordionDescription.changes | async)?.length || accordionDescription.length\"\n #headerButton\n >\n <span class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n <ng-container *ngIf=\"panel.status === AccordionStatus.Complete\">{{commonStrings.keys.success}}</ng-container>\n </span>\n <span class=\"clr-accordion-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle\"></cds-icon>\n <span class=\"clr-accordion-number\"></span>\n <cds-icon status=\"danger\" shape=\"exclamation-circle\" class=\"clr-accordion-error-icon\"></cds-icon>\n <cds-icon status=\"success\" shape=\"check-circle\" class=\"clr-accordion-complete-icon\"></cds-icon>\n </span>\n <ng-content select=\"clr-accordion-title, clr-step-title\"></ng-content>\n <ng-content select=\"clr-accordion-description, clr-step-description\"></ng-content>\n </button>\n </div>\n <div\n @skipInitialRender\n role=\"region\"\n [id]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-hidden]=\"!panel.open\"\n [attr.aria-labelledby]=\"getAccordionHeaderId(panel.templateId)\"\n >\n <div\n *ngIf=\"panel.open\"\n @toggle\n (@toggle.done)=\"collapsePanelOnAnimationDone(panel)\"\n class=\"clr-accordion-content\"\n >\n <div class=\"clr-accordion-inner-content\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n" }]
1097
+ args: [{ selector: 'clr-stepper-panel', host: { '[class.clr-accordion-panel]': 'true' }, changeDetection: ChangeDetectionStrategy.OnPush, animations: stepAnimation, providers: [IfExpandService], template: "<ng-container *ngIf=\"panel | async; let panel\">\n <div *ngIf=\"panel.status !== AccordionStatus.Inactive\" aria-live=\"assertive\" class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n </div>\n\n <div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-accordion-header\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [disabled]=\"isAccordion && panel.disabled\"\n [attr.aria-disabled]=\"!isAccordion && panel.disabled\"\n [attr.aria-controls]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-expanded]=\"panel.open\"\n [class.clr-accordion-header-has-description]=\"(accordionDescription.changes | async)?.length || accordionDescription.length\"\n #headerButton\n >\n <span class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n <ng-container *ngIf=\"panel.status === AccordionStatus.Complete\">{{commonStrings.keys.success}}</ng-container>\n </span>\n <span class=\"clr-accordion-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle\"></cds-icon>\n <span class=\"clr-accordion-number\"></span>\n <cds-icon status=\"danger\" shape=\"exclamation-circle\" class=\"clr-accordion-error-icon\"></cds-icon>\n <cds-icon status=\"success\" shape=\"check-circle\" class=\"clr-accordion-complete-icon\"></cds-icon>\n </span>\n <ng-content select=\"clr-accordion-title, clr-step-title\"></ng-content>\n <ng-content select=\"clr-accordion-description, clr-step-description\"></ng-content>\n </button>\n </div>\n <div\n @skipInitialRender\n role=\"region\"\n [id]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-hidden]=\"!panel.open\"\n [attr.aria-labelledby]=\"getAccordionHeaderId(panel.templateId)\"\n >\n <div\n *ngIf=\"panel.open\"\n @toggle\n (@toggle.done)=\"collapsePanelOnAnimationDone(panel)\"\n class=\"clr-accordion-content\"\n >\n <div class=\"clr-accordion-inner-content\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n" }]
1106
1098
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
1107
1099
  type: Inject,
1108
1100
  args: [PLATFORM_ID]
@@ -1110,10 +1102,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
1110
1102
  type: Optional
1111
1103
  }] }, { type: i1.NgModelGroup, decorators: [{
1112
1104
  type: Optional
1113
- }] }, { type: StepperService }, { type: IfExpandService }, { type: undefined, decorators: [{
1114
- type: Inject,
1115
- args: [UNIQUE_ID]
1116
- }] }]; }, propDecorators: { headerButton: [{
1105
+ }] }, { type: StepperService }, { type: IfExpandService }]; }, propDecorators: { headerButton: [{
1117
1106
  type: ViewChild,
1118
1107
  args: ['headerButton']
1119
1108
  }] } });
@@ -2619,12 +2608,12 @@ ClrPopoverPositions['left-bottom'] = {
2619
2608
  * The full license information can be found in LICENSE in the root directory of this project.
2620
2609
  */
2621
2610
  class ClrButtonGroup {
2622
- constructor(buttonGroupNewService, toggleService, popoverId, commonStrings, destroy$) {
2611
+ constructor(buttonGroupNewService, toggleService, commonStrings, destroy$) {
2623
2612
  this.buttonGroupNewService = buttonGroupNewService;
2624
2613
  this.toggleService = toggleService;
2625
- this.popoverId = popoverId;
2626
2614
  this.commonStrings = commonStrings;
2627
2615
  this.destroy$ = destroy$;
2616
+ this.popoverId = uniqueIdFactory();
2628
2617
  this.popoverPosition = ClrPopoverPositions['bottom-left'];
2629
2618
  this.inlineButtons = [];
2630
2619
  this.menuButtons = [];
@@ -2709,10 +2698,9 @@ class ClrButtonGroup {
2709
2698
  this.popoverPosition = ClrPopoverPositions[this._menuPosition];
2710
2699
  }
2711
2700
  }
2712
- ClrButtonGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrButtonGroup, deps: [{ token: ButtonInGroupService }, { token: ClrPopoverToggleService }, { token: UNIQUE_ID }, { token: ClrCommonStringsService }, { token: ClrDestroyService }], target: i0.ɵɵFactoryTarget.Component });
2701
+ ClrButtonGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrButtonGroup, deps: [{ token: ButtonInGroupService }, { token: ClrPopoverToggleService }, { token: ClrCommonStringsService }, { token: ClrDestroyService }], target: i0.ɵɵFactoryTarget.Component });
2713
2702
  ClrButtonGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrButtonGroup, selector: "clr-button-group", inputs: { menuPosition: ["clrMenuPosition", "menuPosition"] }, host: { properties: { "class.btn-group": "true" } }, providers: [
2714
2703
  ButtonInGroupService,
2715
- UNIQUE_ID_PROVIDER,
2716
2704
  ClrPopoverToggleService,
2717
2705
  ClrPopoverEventsService,
2718
2706
  ClrPopoverPositionService,
@@ -2722,16 +2710,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
2722
2710
  type: Component,
2723
2711
  args: [{ selector: 'clr-button-group', providers: [
2724
2712
  ButtonInGroupService,
2725
- UNIQUE_ID_PROVIDER,
2726
2713
  ClrPopoverToggleService,
2727
2714
  ClrPopoverEventsService,
2728
2715
  ClrPopoverPositionService,
2729
2716
  ClrDestroyService,
2730
2717
  ], host: { '[class.btn-group]': 'true' }, template: "<!--\n ~ Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<ng-container *ngFor=\"let inlineButton of inlineButtons\">\n <ng-template [ngTemplateOutlet]=\"inlineButton.templateRef\"></ng-template>\n</ng-container>\n<ng-container *ngIf=\"menuButtons.length > 0\">\n <div class=\"btn-group-overflow open\" [ngClass]=\"menuPosition\" #anchor>\n <button\n class=\"btn dropdown-toggle\"\n clrPopoverAnchor\n clrPopoverOpenCloseButton\n [attr.aria-controls]=\"popoverId\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-label]=\"commonStrings.keys.rowActions\"\n >\n <cds-icon shape=\"ellipsis-horizontal\" [attr.title]=\"commonStrings.keys.more\"></cds-icon>\n </button>\n <div\n role=\"menu\"\n class=\"dropdown-menu clr-button-group-menu\"\n [id]=\"popoverId\"\n [attr.id]=\"popoverId\"\n [attr.aria-hidden]=\"!open\"\n *clrPopoverContent=\"open at popoverPosition; outsideClickToClose: true; scrollToClose: true\"\n >\n <ng-template [ngTemplateOutlet]=\"ref\"></ng-template>\n </div>\n </div>\n</ng-container>\n<ng-template #ref>\n <ng-container *ngFor=\"let menuButton of menuButtons\">\n <ng-template [ngTemplateOutlet]=\"menuButton.templateRef\"></ng-template>\n </ng-container>\n</ng-template>\n" }]
2731
- }], ctorParameters: function () { return [{ type: ButtonInGroupService }, { type: ClrPopoverToggleService }, { type: undefined, decorators: [{
2732
- type: Inject,
2733
- args: [UNIQUE_ID]
2734
- }] }, { type: ClrCommonStringsService }, { type: ClrDestroyService }]; }, propDecorators: { buttons: [{
2718
+ }], ctorParameters: function () { return [{ type: ButtonInGroupService }, { type: ClrPopoverToggleService }, { type: ClrCommonStringsService }, { type: ClrDestroyService }]; }, propDecorators: { buttons: [{
2735
2719
  type: ContentChildren,
2736
2720
  args: [ClrButton]
2737
2721
  }], menuPosition: [{
@@ -3728,13 +3712,6 @@ class WrappedFormControl {
3728
3712
  }
3729
3713
  triggerValidation() {
3730
3714
  if (this.ifControlStateService) {
3731
- /**
3732
- * For some reason the <input type="number" /> on blur ngControl doesn't set the control to 'touched'
3733
- * This one is a workaround to provide the control to be 'touched' on blur and fix #4480.
3734
- */
3735
- if (this.ngControl && !this.ngControl.touched) {
3736
- this.markAsTouched();
3737
- }
3738
3715
  this.ifControlStateService.triggerStatusChange();
3739
3716
  }
3740
3717
  }
@@ -5210,20 +5187,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
5210
5187
  */
5211
5188
  const POPOVER_HOST_ANCHOR = new InjectionToken('POPOVER_HOST_ANCHOR');
5212
5189
 
5213
- /*
5214
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
5215
- * This software is released under MIT license.
5216
- * The full license information can be found in LICENSE in the root directory of this project.
5217
- */
5218
- // TODO: if we find more components that could use this, consider moving this to utils
5219
- class AriaService {
5220
- }
5221
- AriaService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AriaService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5222
- AriaService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AriaService });
5223
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AriaService, decorators: [{
5224
- type: Injectable
5225
- }] });
5226
-
5227
5190
  /*
5228
5191
  * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
5229
5192
  * This software is released under MIT license.
@@ -5607,7 +5570,6 @@ class FocusableItem {
5607
5570
  */
5608
5571
  function customFocusableItemProvider(implementation) {
5609
5572
  return [
5610
- UNIQUE_ID_PROVIDER,
5611
5573
  implementation,
5612
5574
  {
5613
5575
  provide: FocusableItem,
@@ -5720,8 +5682,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
5720
5682
  * The full license information can be found in LICENSE in the root directory of this project.
5721
5683
  */
5722
5684
  class ComboboxFocusHandler {
5723
- constructor(id, rendererFactory, toggleService, selectionService, platformId) {
5724
- this.id = id;
5685
+ constructor(rendererFactory, toggleService, selectionService, platformId) {
5725
5686
  this.toggleService = toggleService;
5726
5687
  this.selectionService = selectionService;
5727
5688
  this.platformId = platformId;
@@ -5899,14 +5860,11 @@ class ComboboxFocusHandler {
5899
5860
  this.optionData = options;
5900
5861
  }
5901
5862
  }
5902
- ComboboxFocusHandler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ComboboxFocusHandler, deps: [{ token: UNIQUE_ID }, { token: i0.RendererFactory2 }, { token: ClrPopoverToggleService }, { token: OptionSelectionService }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
5863
+ ComboboxFocusHandler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ComboboxFocusHandler, deps: [{ token: i0.RendererFactory2 }, { token: ClrPopoverToggleService }, { token: OptionSelectionService }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
5903
5864
  ComboboxFocusHandler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ComboboxFocusHandler });
5904
5865
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ComboboxFocusHandler, decorators: [{
5905
5866
  type: Injectable
5906
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
5907
- type: Inject,
5908
- args: [UNIQUE_ID]
5909
- }] }, { type: i0.RendererFactory2 }, { type: ClrPopoverToggleService }, { type: OptionSelectionService }, { type: undefined, decorators: [{
5867
+ }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }, { type: ClrPopoverToggleService }, { type: OptionSelectionService }, { type: undefined, decorators: [{
5910
5868
  type: Inject,
5911
5869
  args: [PLATFORM_ID]
5912
5870
  }] }]; } });
@@ -5924,13 +5882,238 @@ class OptionData {
5924
5882
  }
5925
5883
  }
5926
5884
 
5885
+ /*
5886
+ * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
5887
+ * This software is released under MIT license.
5888
+ * The full license information can be found in LICENSE in the root directory of this project.
5889
+ */
5890
+ class ClrOption {
5891
+ constructor(elRef, commonStrings, focusHandler, optionSelectionService) {
5892
+ this.elRef = elRef;
5893
+ this.commonStrings = commonStrings;
5894
+ this.focusHandler = focusHandler;
5895
+ this.optionSelectionService = optionSelectionService;
5896
+ // A proxy with only the necessary data to be used for a11y and the focus handler service.
5897
+ this.optionProxy = new OptionData(null, null);
5898
+ this.optionProxy.el = this.elRef.nativeElement;
5899
+ }
5900
+ set optionId(id) {
5901
+ this._id = id;
5902
+ this.optionProxy.id = this._id;
5903
+ }
5904
+ get optionId() {
5905
+ return this._id;
5906
+ }
5907
+ set value(value) {
5908
+ this._value = value;
5909
+ this.optionProxy.value = value;
5910
+ }
5911
+ get value() {
5912
+ return this._value;
5913
+ }
5914
+ get selected() {
5915
+ return (this.optionSelectionService.selectionModel && this.optionSelectionService.selectionModel.containsItem(this.value));
5916
+ }
5917
+ ngOnInit() {
5918
+ if (!this._id) {
5919
+ this._id = 'clr-option-' + uniqueIdFactory();
5920
+ this.optionProxy.id = this._id;
5921
+ }
5922
+ }
5923
+ onClick() {
5924
+ if (this.optionSelectionService.multiselectable) {
5925
+ this.optionSelectionService.toggle(this.value);
5926
+ }
5927
+ else {
5928
+ this.optionSelectionService.select(this.value);
5929
+ }
5930
+ // As the popover stays open in multi-select mode now, we have to take focus back to the input
5931
+ // This way we achieve two things:
5932
+ // - do not lose focus
5933
+ // - we're still able to use onBlur for "outside-click" handling
5934
+ this.focusHandler.focusInput();
5935
+ }
5936
+ get focusClass() {
5937
+ return this.focusHandler.pseudoFocus.containsItem(this.optionProxy);
5938
+ }
5939
+ }
5940
+ ClrOption.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrOption, deps: [{ token: i0.ElementRef }, { token: ClrCommonStringsService }, { token: ComboboxFocusHandler }, { token: OptionSelectionService }], target: i0.ɵɵFactoryTarget.Component });
5941
+ ClrOption.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrOption, selector: "clr-option", inputs: { optionId: ["id", "optionId"], value: ["clrValue", "value"] }, host: { listeners: { "click": "onClick()" }, properties: { "class.clr-combobox-option": "true", "attr.role": "\"option\"", "attr.tabindex": "-1", "attr.id": "optionId", "class.active": "this.selected", "class.clr-focus": "this.focusClass" } }, ngImport: i0, template: `
5942
+ <ng-content></ng-content>
5943
+ <span *ngIf="selected" class="clr-sr-only">{{ commonStrings.keys.comboboxSelected }}</span>
5944
+ `, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
5945
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrOption, decorators: [{
5946
+ type: Component,
5947
+ args: [{
5948
+ selector: 'clr-option',
5949
+ template: `
5950
+ <ng-content></ng-content>
5951
+ <span *ngIf="selected" class="clr-sr-only">{{ commonStrings.keys.comboboxSelected }}</span>
5952
+ `,
5953
+ host: {
5954
+ '[class.clr-combobox-option]': 'true',
5955
+ '[attr.role]': '"option"',
5956
+ // Do not remove. Or click-selection will not work.
5957
+ '[attr.tabindex]': '-1',
5958
+ '[attr.id]': 'optionId',
5959
+ },
5960
+ }]
5961
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ClrCommonStringsService }, { type: ComboboxFocusHandler }, { type: OptionSelectionService }]; }, propDecorators: { optionId: [{
5962
+ type: Input,
5963
+ args: ['id']
5964
+ }], value: [{
5965
+ type: Input,
5966
+ args: ['clrValue']
5967
+ }], selected: [{
5968
+ type: HostBinding,
5969
+ args: ['class.active']
5970
+ }], onClick: [{
5971
+ type: HostListener,
5972
+ args: ['click']
5973
+ }], focusClass: [{
5974
+ type: HostBinding,
5975
+ args: ['class.clr-focus']
5976
+ }] } });
5977
+
5978
+ /*
5979
+ * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
5980
+ * This software is released under MIT license.
5981
+ * The full license information can be found in LICENSE in the root directory of this project.
5982
+ */
5983
+ let nbOptionsComponents = 0;
5984
+ class ClrOptions {
5985
+ constructor(optionSelectionService, id, el, commonStrings, focusHandler, toggleService, parentHost, document) {
5986
+ this.optionSelectionService = optionSelectionService;
5987
+ this.id = id;
5988
+ this.el = el;
5989
+ this.commonStrings = commonStrings;
5990
+ this.focusHandler = focusHandler;
5991
+ this.toggleService = toggleService;
5992
+ this.document = document;
5993
+ this.loading = false;
5994
+ this.subscriptions = [];
5995
+ if (!parentHost) {
5996
+ throw new Error('clr-options should only be used inside of a clr-combobox');
5997
+ }
5998
+ if (!this.optionsId) {
5999
+ this.optionsId = 'clr-options-' + nbOptionsComponents++;
6000
+ }
6001
+ }
6002
+ searchText(input) {
6003
+ return this.commonStrings.parse(this.commonStrings.keys.comboboxSearching, { INPUT: input });
6004
+ }
6005
+ /**
6006
+ * Tests if the list of options is empty, meaning it doesn't contain any items
6007
+ */
6008
+ get emptyOptions() {
6009
+ return !this.optionSelectionService.loading && this.items.length === 0;
6010
+ }
6011
+ set items(items) {
6012
+ this._items = items;
6013
+ this.focusHandler.addOptionValues(this._items.map(option => option.optionProxy));
6014
+ }
6015
+ get items() {
6016
+ return this._items;
6017
+ }
6018
+ loadingStateChange(state) {
6019
+ this.loading = state === ClrLoadingState.LOADING;
6020
+ }
6021
+ ngAfterViewInit() {
6022
+ this.focusHandler.listbox = this.el.nativeElement;
6023
+ this.subscriptions.push(fromEvent(this.document, 'scroll', { capture: true }).subscribe(event => {
6024
+ if (this.toggleService.open &&
6025
+ event.target !== this.el.nativeElement &&
6026
+ event.target !== this.focusHandler.textInput) {
6027
+ this.toggleService.open = false;
6028
+ }
6029
+ }), this.items.changes.subscribe(() => {
6030
+ setTimeout(() => {
6031
+ this.focusHandler.focusFirstActive();
6032
+ });
6033
+ }));
6034
+ }
6035
+ ngOnDestroy() {
6036
+ this.subscriptions.forEach(sub => sub.unsubscribe());
6037
+ }
6038
+ }
6039
+ ClrOptions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrOptions, deps: [{ token: OptionSelectionService }, { token: IF_ACTIVE_ID }, { token: i0.ElementRef }, { token: ClrCommonStringsService }, { token: ComboboxFocusHandler }, { token: ClrPopoverToggleService }, { token: POPOVER_HOST_ANCHOR, optional: true }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
6040
+ ClrOptions.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrOptions, selector: "clr-options", inputs: { optionsId: ["id", "optionsId"] }, host: { properties: { "class.clr-combobox-options": "true", "attr.role": "\"listbox\"", "id": "optionsId" } }, providers: [{ provide: LoadingListener, useExisting: ClrOptions }], queries: [{ propertyName: "items", predicate: ClrOption }], ngImport: i0, template: `
6041
+ <div *ngIf="optionSelectionService.loading" class="clr-combobox-options-loading">
6042
+ <clr-spinner clrInline>
6043
+ {{ commonStrings.keys.loading }}
6044
+ </clr-spinner>
6045
+ <span class="clr-combobox-options-text">
6046
+ {{ searchText(optionSelectionService.currentInput) }}
6047
+ </span>
6048
+ </div>
6049
+
6050
+ <!-- Rendered if data set is empty -->
6051
+ <div *ngIf="emptyOptions">
6052
+ <span class="clr-combobox-options-empty-text">
6053
+ {{ commonStrings.keys.comboboxNoResults }}
6054
+ </span>
6055
+ </div>
6056
+
6057
+ <!--Option Groups and Options will be projected here-->
6058
+ <ng-content></ng-content>
6059
+ `, isInline: true, components: [{ type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
6060
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrOptions, decorators: [{
6061
+ type: Component,
6062
+ args: [{
6063
+ selector: 'clr-options',
6064
+ template: `
6065
+ <div *ngIf="optionSelectionService.loading" class="clr-combobox-options-loading">
6066
+ <clr-spinner clrInline>
6067
+ {{ commonStrings.keys.loading }}
6068
+ </clr-spinner>
6069
+ <span class="clr-combobox-options-text">
6070
+ {{ searchText(optionSelectionService.currentInput) }}
6071
+ </span>
6072
+ </div>
6073
+
6074
+ <!-- Rendered if data set is empty -->
6075
+ <div *ngIf="emptyOptions">
6076
+ <span class="clr-combobox-options-empty-text">
6077
+ {{ commonStrings.keys.comboboxNoResults }}
6078
+ </span>
6079
+ </div>
6080
+
6081
+ <!--Option Groups and Options will be projected here-->
6082
+ <ng-content></ng-content>
6083
+ `,
6084
+ providers: [{ provide: LoadingListener, useExisting: ClrOptions }],
6085
+ host: {
6086
+ '[class.clr-combobox-options]': 'true',
6087
+ '[attr.role]': '"listbox"',
6088
+ '[id]': 'optionsId',
6089
+ },
6090
+ }]
6091
+ }], ctorParameters: function () { return [{ type: OptionSelectionService }, { type: undefined, decorators: [{
6092
+ type: Inject,
6093
+ args: [IF_ACTIVE_ID]
6094
+ }] }, { type: i0.ElementRef }, { type: ClrCommonStringsService }, { type: ComboboxFocusHandler }, { type: ClrPopoverToggleService }, { type: i0.ElementRef, decorators: [{
6095
+ type: Optional
6096
+ }, {
6097
+ type: Inject,
6098
+ args: [POPOVER_HOST_ANCHOR]
6099
+ }] }, { type: undefined, decorators: [{
6100
+ type: Inject,
6101
+ args: [DOCUMENT]
6102
+ }] }]; }, propDecorators: { optionsId: [{
6103
+ type: Input,
6104
+ args: ['id']
6105
+ }], items: [{
6106
+ type: ContentChildren,
6107
+ args: [ClrOption]
6108
+ }] } });
6109
+
5927
6110
  /*
5928
6111
  * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
5929
6112
  * This software is released under MIT license.
5930
6113
  * The full license information can be found in LICENSE in the root directory of this project.
5931
6114
  */
5932
6115
  class ClrCombobox extends WrappedFormControl {
5933
- constructor(vcr, injector, control, renderer, el, optionSelectionService, commonStrings, toggleService, positionService, controlStateService, containerService, platformId, ariaService, focusHandler, cdr) {
6116
+ constructor(vcr, injector, control, renderer, el, optionSelectionService, commonStrings, toggleService, positionService, controlStateService, containerService, platformId, focusHandler, cdr) {
5934
6117
  super(vcr, ClrComboboxContainer, injector, control, renderer, el);
5935
6118
  this.control = control;
5936
6119
  this.renderer = renderer;
@@ -5942,7 +6125,6 @@ class ClrCombobox extends WrappedFormControl {
5942
6125
  this.controlStateService = controlStateService;
5943
6126
  this.containerService = containerService;
5944
6127
  this.platformId = platformId;
5945
- this.ariaService = ariaService;
5946
6128
  this.focusHandler = focusHandler;
5947
6129
  this.cdr = cdr;
5948
6130
  this.index = 1;
@@ -6030,10 +6212,10 @@ class ClrCombobox extends WrappedFormControl {
6030
6212
  return this.optionSelectionService.multiselectable;
6031
6213
  }
6032
6214
  get ariaControls() {
6033
- return this.ariaService.ariaControls;
6215
+ return this.options?.optionsId;
6034
6216
  }
6035
6217
  get ariaOwns() {
6036
- return this.ariaService.ariaOwns;
6218
+ return this.options?.optionsId;
6037
6219
  }
6038
6220
  get ariaDescribedBySelection() {
6039
6221
  return 'selection-' + this.id;
@@ -6171,20 +6353,19 @@ class ClrCombobox extends WrappedFormControl {
6171
6353
  this.el = this.textbox;
6172
6354
  }
6173
6355
  }
6174
- ClrCombobox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrCombobox, deps: [{ token: i0.ViewContainerRef }, { token: i0.Injector }, { token: i1.NgControl, optional: true, self: true }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: OptionSelectionService }, { token: ClrCommonStringsService }, { token: ClrPopoverToggleService }, { token: ClrPopoverPositionService }, { token: IfControlStateService, optional: true }, { token: ComboboxContainerService, optional: true }, { token: PLATFORM_ID }, { token: AriaService }, { token: ComboboxFocusHandler }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
6356
+ ClrCombobox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrCombobox, deps: [{ token: i0.ViewContainerRef }, { token: i0.Injector }, { token: i1.NgControl, optional: true, self: true }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: OptionSelectionService }, { token: ClrCommonStringsService }, { token: ClrPopoverToggleService }, { token: ClrPopoverPositionService }, { token: IfControlStateService, optional: true }, { token: ComboboxContainerService, optional: true }, { token: PLATFORM_ID }, { token: ComboboxFocusHandler }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
6175
6357
  ClrCombobox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrCombobox, selector: "clr-combobox", inputs: { placeholder: "placeholder", 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: [
6176
6358
  ClrPopoverToggleService,
6177
6359
  { provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef },
6178
6360
  OptionSelectionService,
6179
6361
  { provide: LoadingListener, useExisting: ClrCombobox },
6180
6362
  IF_ACTIVE_ID_PROVIDER,
6181
- AriaService,
6182
6363
  FOCUS_SERVICE_PROVIDER,
6183
6364
  COMBOBOX_FOCUS_HANDLER_PROVIDER,
6184
6365
  ClrPopoverToggleService,
6185
6366
  ClrPopoverEventsService,
6186
6367
  ClrPopoverPositionService,
6187
- ], queries: [{ propertyName: "optionSelected", first: true, predicate: ClrOptionSelected, descendants: true }], viewQueries: [{ propertyName: "textbox", first: true, predicate: ["textboxInput"], descendants: true }, { propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!--\n* Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n* This software is released under MIT license.\n* The full license information can be found in LICENSE in the root directory of this project.\n-->\n\n<!-- The (click) handler is needed to auto-focus on input field which can not currently occupy the whole\n width of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverAnchor\n (click)=\"focusInput()\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"invalid\"\n>\n <span\n *ngIf=\"multiSelect && optionSelectionService.selectionModel.model\"\n role=\"grid\"\n clrRovingTabindex\n [clrRovingTabindexDisabled]=\"control?.disabled\"\n clrDirection=\"both\"\n [attr.aria-label]=\"getSelectionAriaLabel()\"\n [attr.aria-disabled]=\"control?.disabled? true: null\"\n >\n <span *ngFor=\"let item of multiSelectModel; let i = index\" class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n <ng-container\n *ngIf=\"optionSelected\"\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n ></ng-container>\n </span>\n </span>\n <span role=\"gridcell\">\n <button\n clrKeyFocusItem\n type=\"button\"\n class=\"clr-combobox-remove-btn\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxDelete + ' ' + optionSelectionService.selectionModel.toString(displayField, i)\"\n (click)=\"unselect(item)\"\n >\n <cds-icon shape=\"window-close\" size=\"12\"></cds-icon>\n </button>\n </span>\n </span>\n </span>\n\n <span class=\"clr-combobox-input-wrapper\" role=\"combobox\">\n <input\n #textboxInput\n type=\"text\"\n [id]=\"inputId()\"\n class=\"clr-input clr-combobox-input\"\n [(ngModel)]=\"searchText\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n [attr.aria-expanded]=\"openState\"\n [attr.aria-owns]=\"ariaOwns\"\n aria-haspopup=\"listbox\"\n aria-autocomplete=\"list\"\n autocomplete=\"off\"\n [attr.aria-invalid]=\"control?.invalid? true: null\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-activedescendant]=\"getActiveDescendant()\"\n [attr.placeholder]=\"placeholder\"\n />\n </span>\n\n <!-- No click handler, as it uses the handler on the .clr-combobox-wrapper -->\n <button\n clrPopoverOpenCloseButton\n #trigger\n type=\"button\"\n class=\"clr-combobox-trigger\"\n tabindex=\"-1\"\n [disabled]=\"control?.disabled || null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxOpen\"\n >\n <cds-icon shape=\"angle\" direction=\"down\" size=\"12\"></cds-icon>\n </button>\n\n <div class=\"clr-focus-indicator\" [class.clr-focus]=\"focused\"></div>\n</div>\n\n<!-- Both close handlers are handled manually due to issues in Edge browser.\n Additionally 'outsideClickToClose' has complex handling that's necessary\n to be manual due to the component architecture -->\n<div role=\"dialog\" *clrPopoverContent=\"openState at smartPosition; outsideClickToClose: false; scrollToClose: false\">\n <ng-content></ng-content>\n</div>\n", components: [{ type: ClrRovingTabindex, selector: "[clrRovingTabindex]", inputs: ["clrRovingTabindex", "clrRovingTabindexDisabled"] }], directives: [{ type: ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: ClrKeyFocusItem, selector: "[clrKeyFocusItem]" }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: CdsIconCustomTag, selector: "cds-icon" }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: ClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { type: ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }] });
6368
+ ], 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, ngImport: i0, template: "<!--\n* Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n* This software is released under MIT license.\n* The full license information can be found in LICENSE in the root directory of this project.\n-->\n\n<!-- The (click) handler is needed to auto-focus on input field which can not currently occupy the whole\n width of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverAnchor\n (click)=\"focusInput()\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"invalid\"\n>\n <span\n *ngIf=\"multiSelect && optionSelectionService.selectionModel.model\"\n role=\"grid\"\n clrRovingTabindex\n [clrRovingTabindexDisabled]=\"control?.disabled\"\n clrDirection=\"both\"\n [attr.aria-label]=\"getSelectionAriaLabel()\"\n [attr.aria-disabled]=\"control?.disabled? true: null\"\n >\n <span *ngFor=\"let item of multiSelectModel; let i = index\" class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n <ng-container\n *ngIf=\"optionSelected\"\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n ></ng-container>\n </span>\n </span>\n <span role=\"gridcell\">\n <button\n clrKeyFocusItem\n type=\"button\"\n class=\"clr-combobox-remove-btn\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxDelete + ' ' + optionSelectionService.selectionModel.toString(displayField, i)\"\n (click)=\"unselect(item)\"\n >\n <cds-icon shape=\"window-close\" size=\"12\"></cds-icon>\n </button>\n </span>\n </span>\n </span>\n\n <span class=\"clr-combobox-input-wrapper\" role=\"combobox\">\n <input\n #textboxInput\n type=\"text\"\n [id]=\"inputId()\"\n class=\"clr-input clr-combobox-input\"\n [(ngModel)]=\"searchText\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n [attr.aria-expanded]=\"openState\"\n [attr.aria-owns]=\"ariaOwns\"\n aria-haspopup=\"listbox\"\n aria-autocomplete=\"list\"\n autocomplete=\"off\"\n [attr.aria-invalid]=\"control?.invalid? true: null\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-activedescendant]=\"getActiveDescendant()\"\n [attr.placeholder]=\"placeholder\"\n />\n </span>\n\n <!-- No click handler, as it uses the handler on the .clr-combobox-wrapper -->\n <button\n clrPopoverOpenCloseButton\n #trigger\n type=\"button\"\n class=\"clr-combobox-trigger\"\n tabindex=\"-1\"\n [disabled]=\"control?.disabled || null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxOpen\"\n >\n <cds-icon shape=\"angle\" direction=\"down\" size=\"12\"></cds-icon>\n </button>\n\n <div class=\"clr-focus-indicator\" [class.clr-focus]=\"focused\"></div>\n</div>\n\n<!-- Both close handlers are handled manually due to issues in Edge browser.\n Additionally 'outsideClickToClose' has complex handling that's necessary\n to be manual due to the component architecture -->\n<div role=\"dialog\" *clrPopoverContent=\"openState at smartPosition; outsideClickToClose: false; scrollToClose: false\">\n <ng-content></ng-content>\n</div>\n", components: [{ type: ClrRovingTabindex, selector: "[clrRovingTabindex]", inputs: ["clrRovingTabindex", "clrRovingTabindexDisabled"] }], directives: [{ type: ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: ClrKeyFocusItem, selector: "[clrKeyFocusItem]" }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: CdsIconCustomTag, selector: "cds-icon" }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: ClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { type: ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }] });
6188
6369
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrCombobox, decorators: [{
6189
6370
  type: Component,
6190
6371
  args: [{ selector: 'clr-combobox', providers: [
@@ -6193,153 +6374,57 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
6193
6374
  OptionSelectionService,
6194
6375
  { provide: LoadingListener, useExisting: ClrCombobox },
6195
6376
  IF_ACTIVE_ID_PROVIDER,
6196
- AriaService,
6197
6377
  FOCUS_SERVICE_PROVIDER,
6198
6378
  COMBOBOX_FOCUS_HANDLER_PROVIDER,
6199
6379
  ClrPopoverToggleService,
6200
6380
  ClrPopoverEventsService,
6201
- ClrPopoverPositionService,
6202
- ], host: {
6203
- '[class.aria-required]': 'true',
6204
- '[class.clr-combobox]': 'true',
6205
- '[class.clr-combobox-disabled]': 'control?.disabled',
6206
- }, template: "<!--\n* Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n* This software is released under MIT license.\n* The full license information can be found in LICENSE in the root directory of this project.\n-->\n\n<!-- The (click) handler is needed to auto-focus on input field which can not currently occupy the whole\n width of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverAnchor\n (click)=\"focusInput()\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"invalid\"\n>\n <span\n *ngIf=\"multiSelect && optionSelectionService.selectionModel.model\"\n role=\"grid\"\n clrRovingTabindex\n [clrRovingTabindexDisabled]=\"control?.disabled\"\n clrDirection=\"both\"\n [attr.aria-label]=\"getSelectionAriaLabel()\"\n [attr.aria-disabled]=\"control?.disabled? true: null\"\n >\n <span *ngFor=\"let item of multiSelectModel; let i = index\" class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n <ng-container\n *ngIf=\"optionSelected\"\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n ></ng-container>\n </span>\n </span>\n <span role=\"gridcell\">\n <button\n clrKeyFocusItem\n type=\"button\"\n class=\"clr-combobox-remove-btn\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxDelete + ' ' + optionSelectionService.selectionModel.toString(displayField, i)\"\n (click)=\"unselect(item)\"\n >\n <cds-icon shape=\"window-close\" size=\"12\"></cds-icon>\n </button>\n </span>\n </span>\n </span>\n\n <span class=\"clr-combobox-input-wrapper\" role=\"combobox\">\n <input\n #textboxInput\n type=\"text\"\n [id]=\"inputId()\"\n class=\"clr-input clr-combobox-input\"\n [(ngModel)]=\"searchText\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n [attr.aria-expanded]=\"openState\"\n [attr.aria-owns]=\"ariaOwns\"\n aria-haspopup=\"listbox\"\n aria-autocomplete=\"list\"\n autocomplete=\"off\"\n [attr.aria-invalid]=\"control?.invalid? true: null\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-activedescendant]=\"getActiveDescendant()\"\n [attr.placeholder]=\"placeholder\"\n />\n </span>\n\n <!-- No click handler, as it uses the handler on the .clr-combobox-wrapper -->\n <button\n clrPopoverOpenCloseButton\n #trigger\n type=\"button\"\n class=\"clr-combobox-trigger\"\n tabindex=\"-1\"\n [disabled]=\"control?.disabled || null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxOpen\"\n >\n <cds-icon shape=\"angle\" direction=\"down\" size=\"12\"></cds-icon>\n </button>\n\n <div class=\"clr-focus-indicator\" [class.clr-focus]=\"focused\"></div>\n</div>\n\n<!-- Both close handlers are handled manually due to issues in Edge browser.\n Additionally 'outsideClickToClose' has complex handling that's necessary\n to be manual due to the component architecture -->\n<div role=\"dialog\" *clrPopoverContent=\"openState at smartPosition; outsideClickToClose: false; scrollToClose: false\">\n <ng-content></ng-content>\n</div>\n" }]
6207
- }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.Injector }, { type: i1.NgControl, decorators: [{
6208
- type: Self
6209
- }, {
6210
- type: Optional
6211
- }] }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: OptionSelectionService }, { type: ClrCommonStringsService }, { type: ClrPopoverToggleService }, { type: ClrPopoverPositionService }, { type: IfControlStateService, decorators: [{
6212
- type: Optional
6213
- }] }, { type: ComboboxContainerService, decorators: [{
6214
- type: Optional
6215
- }] }, { type: undefined, decorators: [{
6216
- type: Inject,
6217
- args: [PLATFORM_ID]
6218
- }] }, { type: AriaService }, { type: ComboboxFocusHandler }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { textbox: [{
6219
- type: ViewChild,
6220
- args: ['textboxInput']
6221
- }], trigger: [{
6222
- type: ViewChild,
6223
- args: ['trigger']
6224
- }], optionSelected: [{
6225
- type: ContentChild,
6226
- args: [ClrOptionSelected]
6227
- }], placeholder: [{
6228
- type: Input,
6229
- args: ['placeholder']
6230
- }], multiSelect: [{
6231
- type: Input,
6232
- args: ['clrMulti']
6233
- }], onKeyUp: [{
6234
- type: HostListener,
6235
- args: ['keydown', ['$event']]
6236
- }], clrInputChange: [{
6237
- type: Output,
6238
- args: ['clrInputChange']
6239
- }], clrOpenChange: [{
6240
- type: Output,
6241
- args: ['clrOpenChange']
6242
- }], clrSelectionChange: [{
6243
- type: Output,
6244
- args: ['clrSelectionChange']
6245
- }] } });
6246
-
6247
- /*
6248
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
6249
- * This software is released under MIT license.
6250
- * The full license information can be found in LICENSE in the root directory of this project.
6251
- */
6252
- class ClrOption {
6253
- constructor(elRef, commonStrings, focusHandler, optionSelectionService, autoId) {
6254
- this.elRef = elRef;
6255
- this.commonStrings = commonStrings;
6256
- this.focusHandler = focusHandler;
6257
- this.optionSelectionService = optionSelectionService;
6258
- this.autoId = autoId;
6259
- // A proxy with only the necessary data to be used for a11y and the focus handler service.
6260
- this.optionProxy = new OptionData(null, null);
6261
- this.optionProxy.el = this.elRef.nativeElement;
6262
- }
6263
- set optionId(id) {
6264
- this._id = id;
6265
- this.optionProxy.id = this._id;
6266
- }
6267
- get optionId() {
6268
- return this._id;
6269
- }
6270
- set value(value) {
6271
- this._value = value;
6272
- this.optionProxy.value = value;
6273
- }
6274
- get value() {
6275
- return this._value;
6276
- }
6277
- get selected() {
6278
- return (this.optionSelectionService.selectionModel && this.optionSelectionService.selectionModel.containsItem(this.value));
6279
- }
6280
- ngOnInit() {
6281
- if (!this._id) {
6282
- this._id = 'clr-option-' + this.autoId;
6283
- this.optionProxy.id = this._id;
6284
- }
6285
- }
6286
- onClick() {
6287
- if (this.optionSelectionService.multiselectable) {
6288
- this.optionSelectionService.toggle(this.value);
6289
- }
6290
- else {
6291
- this.optionSelectionService.select(this.value);
6292
- }
6293
- // As the popover stays open in multi-select mode now, we have to take focus back to the input
6294
- // This way we achieve two things:
6295
- // - do not lose focus
6296
- // - we're still able to use onBlur for "outside-click" handling
6297
- this.focusHandler.focusInput();
6298
- }
6299
- get focusClass() {
6300
- return this.focusHandler.pseudoFocus.containsItem(this.optionProxy);
6301
- }
6302
- }
6303
- ClrOption.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrOption, deps: [{ token: i0.ElementRef }, { token: ClrCommonStringsService }, { token: ComboboxFocusHandler }, { token: OptionSelectionService }, { token: UNIQUE_ID }], target: i0.ɵɵFactoryTarget.Component });
6304
- ClrOption.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrOption, selector: "clr-option", inputs: { optionId: ["id", "optionId"], value: ["clrValue", "value"] }, host: { listeners: { "click": "onClick()" }, properties: { "class.clr-combobox-option": "true", "attr.role": "\"option\"", "attr.tabindex": "-1", "attr.id": "optionId", "class.active": "this.selected", "class.clr-focus": "this.focusClass" } }, providers: [UNIQUE_ID_PROVIDER], ngImport: i0, template: `
6305
- <ng-content></ng-content>
6306
- <span *ngIf="selected" class="clr-sr-only">{{ commonStrings.keys.comboboxSelected }}</span>
6307
- `, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
6308
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrOption, decorators: [{
6309
- type: Component,
6310
- args: [{
6311
- selector: 'clr-option',
6312
- template: `
6313
- <ng-content></ng-content>
6314
- <span *ngIf="selected" class="clr-sr-only">{{ commonStrings.keys.comboboxSelected }}</span>
6315
- `,
6316
- providers: [UNIQUE_ID_PROVIDER],
6317
- host: {
6318
- '[class.clr-combobox-option]': 'true',
6319
- '[attr.role]': '"option"',
6320
- // Do not remove. Or click-selection will not work.
6321
- '[attr.tabindex]': '-1',
6322
- '[attr.id]': 'optionId',
6323
- },
6324
- }]
6325
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ClrCommonStringsService }, { type: ComboboxFocusHandler }, { type: OptionSelectionService }, { type: undefined, decorators: [{
6381
+ ClrPopoverPositionService,
6382
+ ], host: {
6383
+ '[class.aria-required]': 'true',
6384
+ '[class.clr-combobox]': 'true',
6385
+ '[class.clr-combobox-disabled]': 'control?.disabled',
6386
+ }, template: "<!--\n* Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n* This software is released under MIT license.\n* The full license information can be found in LICENSE in the root directory of this project.\n-->\n\n<!-- The (click) handler is needed to auto-focus on input field which can not currently occupy the whole\n width of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverAnchor\n (click)=\"focusInput()\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"invalid\"\n>\n <span\n *ngIf=\"multiSelect && optionSelectionService.selectionModel.model\"\n role=\"grid\"\n clrRovingTabindex\n [clrRovingTabindexDisabled]=\"control?.disabled\"\n clrDirection=\"both\"\n [attr.aria-label]=\"getSelectionAriaLabel()\"\n [attr.aria-disabled]=\"control?.disabled? true: null\"\n >\n <span *ngFor=\"let item of multiSelectModel; let i = index\" class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n <ng-container\n *ngIf=\"optionSelected\"\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n ></ng-container>\n </span>\n </span>\n <span role=\"gridcell\">\n <button\n clrKeyFocusItem\n type=\"button\"\n class=\"clr-combobox-remove-btn\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxDelete + ' ' + optionSelectionService.selectionModel.toString(displayField, i)\"\n (click)=\"unselect(item)\"\n >\n <cds-icon shape=\"window-close\" size=\"12\"></cds-icon>\n </button>\n </span>\n </span>\n </span>\n\n <span class=\"clr-combobox-input-wrapper\" role=\"combobox\">\n <input\n #textboxInput\n type=\"text\"\n [id]=\"inputId()\"\n class=\"clr-input clr-combobox-input\"\n [(ngModel)]=\"searchText\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n [attr.aria-expanded]=\"openState\"\n [attr.aria-owns]=\"ariaOwns\"\n aria-haspopup=\"listbox\"\n aria-autocomplete=\"list\"\n autocomplete=\"off\"\n [attr.aria-invalid]=\"control?.invalid? true: null\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-activedescendant]=\"getActiveDescendant()\"\n [attr.placeholder]=\"placeholder\"\n />\n </span>\n\n <!-- No click handler, as it uses the handler on the .clr-combobox-wrapper -->\n <button\n clrPopoverOpenCloseButton\n #trigger\n type=\"button\"\n class=\"clr-combobox-trigger\"\n tabindex=\"-1\"\n [disabled]=\"control?.disabled || null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxOpen\"\n >\n <cds-icon shape=\"angle\" direction=\"down\" size=\"12\"></cds-icon>\n </button>\n\n <div class=\"clr-focus-indicator\" [class.clr-focus]=\"focused\"></div>\n</div>\n\n<!-- Both close handlers are handled manually due to issues in Edge browser.\n Additionally 'outsideClickToClose' has complex handling that's necessary\n to be manual due to the component architecture -->\n<div role=\"dialog\" *clrPopoverContent=\"openState at smartPosition; outsideClickToClose: false; scrollToClose: false\">\n <ng-content></ng-content>\n</div>\n" }]
6387
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.Injector }, { type: i1.NgControl, decorators: [{
6388
+ type: Self
6389
+ }, {
6390
+ type: Optional
6391
+ }] }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: OptionSelectionService }, { type: ClrCommonStringsService }, { type: ClrPopoverToggleService }, { type: ClrPopoverPositionService }, { type: IfControlStateService, decorators: [{
6392
+ type: Optional
6393
+ }] }, { type: ComboboxContainerService, decorators: [{
6394
+ type: Optional
6395
+ }] }, { type: undefined, decorators: [{
6326
6396
  type: Inject,
6327
- args: [UNIQUE_ID]
6328
- }] }]; }, propDecorators: { optionId: [{
6397
+ args: [PLATFORM_ID]
6398
+ }] }, { type: ComboboxFocusHandler }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { textbox: [{
6399
+ type: ViewChild,
6400
+ args: ['textboxInput']
6401
+ }], trigger: [{
6402
+ type: ViewChild,
6403
+ args: ['trigger']
6404
+ }], optionSelected: [{
6405
+ type: ContentChild,
6406
+ args: [ClrOptionSelected]
6407
+ }], options: [{
6408
+ type: ContentChild,
6409
+ args: [ClrOptions]
6410
+ }], placeholder: [{
6329
6411
  type: Input,
6330
- args: ['id']
6331
- }], value: [{
6412
+ args: ['placeholder']
6413
+ }], multiSelect: [{
6332
6414
  type: Input,
6333
- args: ['clrValue']
6334
- }], selected: [{
6335
- type: HostBinding,
6336
- args: ['class.active']
6337
- }], onClick: [{
6415
+ args: ['clrMulti']
6416
+ }], onKeyUp: [{
6338
6417
  type: HostListener,
6339
- args: ['click']
6340
- }], focusClass: [{
6341
- type: HostBinding,
6342
- args: ['class.clr-focus']
6418
+ args: ['keydown', ['$event']]
6419
+ }], clrInputChange: [{
6420
+ type: Output,
6421
+ args: ['clrInputChange']
6422
+ }], clrOpenChange: [{
6423
+ type: Output,
6424
+ args: ['clrOpenChange']
6425
+ }], clrSelectionChange: [{
6426
+ type: Output,
6427
+ args: ['clrSelectionChange']
6343
6428
  }] } });
6344
6429
 
6345
6430
  /*
@@ -6434,146 +6519,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
6434
6519
  args: ['clrOptionItemsField']
6435
6520
  }] } });
6436
6521
 
6437
- /*
6438
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
6439
- * This software is released under MIT license.
6440
- * The full license information can be found in LICENSE in the root directory of this project.
6441
- */
6442
- let nbOptionsComponents = 0;
6443
- class ClrOptions {
6444
- constructor(optionSelectionService, id, ariaService, el, commonStrings, focusHandler, toggleService, parentHost, document) {
6445
- this.optionSelectionService = optionSelectionService;
6446
- this.id = id;
6447
- this.ariaService = ariaService;
6448
- this.el = el;
6449
- this.commonStrings = commonStrings;
6450
- this.focusHandler = focusHandler;
6451
- this.toggleService = toggleService;
6452
- this.document = document;
6453
- this.loading = false;
6454
- this.subscriptions = [];
6455
- if (!parentHost) {
6456
- throw new Error('clr-options should only be used inside of a clr-combobox');
6457
- }
6458
- if (!this.optionsId) {
6459
- this.optionsId = 'clr-options-' + nbOptionsComponents++;
6460
- }
6461
- }
6462
- searchText(input) {
6463
- return this.commonStrings.parse(this.commonStrings.keys.comboboxSearching, { INPUT: input });
6464
- }
6465
- /**
6466
- * Tests if the list of options is empty, meaning it doesn't contain any items
6467
- */
6468
- get emptyOptions() {
6469
- return !this.optionSelectionService.loading && this.items.length === 0;
6470
- }
6471
- set optionsId(id) {
6472
- this.ariaService.ariaControls = id;
6473
- this.ariaService.ariaOwns = id;
6474
- }
6475
- get optionsId() {
6476
- return this.ariaService.ariaControls;
6477
- }
6478
- set items(items) {
6479
- this._items = items;
6480
- this.focusHandler.addOptionValues(this._items.map(option => option.optionProxy));
6481
- }
6482
- get items() {
6483
- return this._items;
6484
- }
6485
- loadingStateChange(state) {
6486
- this.loading = state === ClrLoadingState.LOADING;
6487
- }
6488
- ngAfterViewInit() {
6489
- this.focusHandler.listbox = this.el.nativeElement;
6490
- this.subscriptions.push(fromEvent(this.document, 'scroll', { capture: true }).subscribe(event => {
6491
- if (this.toggleService.open &&
6492
- event.target !== this.el.nativeElement &&
6493
- event.target !== this.focusHandler.textInput) {
6494
- this.toggleService.open = false;
6495
- }
6496
- }), this.items.changes.subscribe(() => {
6497
- setTimeout(() => {
6498
- this.focusHandler.focusFirstActive();
6499
- });
6500
- }));
6501
- }
6502
- ngOnDestroy() {
6503
- this.subscriptions.forEach(sub => sub.unsubscribe());
6504
- }
6505
- }
6506
- ClrOptions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrOptions, deps: [{ token: OptionSelectionService }, { token: IF_ACTIVE_ID }, { token: AriaService }, { token: i0.ElementRef }, { token: ClrCommonStringsService }, { token: ComboboxFocusHandler }, { token: ClrPopoverToggleService }, { token: POPOVER_HOST_ANCHOR, optional: true }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
6507
- ClrOptions.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrOptions, selector: "clr-options", inputs: { optionsId: ["id", "optionsId"] }, host: { properties: { "class.clr-combobox-options": "true", "attr.role": "\"listbox\"", "id": "optionsId" } }, providers: [{ provide: LoadingListener, useExisting: ClrOptions }], queries: [{ propertyName: "items", predicate: ClrOption }], ngImport: i0, template: `
6508
- <div *ngIf="optionSelectionService.loading" class="clr-combobox-options-loading">
6509
- <clr-spinner clrInline>
6510
- {{ commonStrings.keys.loading }}
6511
- </clr-spinner>
6512
- <span class="clr-combobox-options-text">
6513
- {{ searchText(optionSelectionService.currentInput) }}
6514
- </span>
6515
- </div>
6516
-
6517
- <!-- Rendered if data set is empty -->
6518
- <div *ngIf="emptyOptions">
6519
- <span class="clr-combobox-options-empty-text">
6520
- {{ commonStrings.keys.comboboxNoResults }}
6521
- </span>
6522
- </div>
6523
-
6524
- <!--Option Groups and Options will be projected here-->
6525
- <ng-content></ng-content>
6526
- `, isInline: true, components: [{ type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
6527
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrOptions, decorators: [{
6528
- type: Component,
6529
- args: [{
6530
- selector: 'clr-options',
6531
- template: `
6532
- <div *ngIf="optionSelectionService.loading" class="clr-combobox-options-loading">
6533
- <clr-spinner clrInline>
6534
- {{ commonStrings.keys.loading }}
6535
- </clr-spinner>
6536
- <span class="clr-combobox-options-text">
6537
- {{ searchText(optionSelectionService.currentInput) }}
6538
- </span>
6539
- </div>
6540
-
6541
- <!-- Rendered if data set is empty -->
6542
- <div *ngIf="emptyOptions">
6543
- <span class="clr-combobox-options-empty-text">
6544
- {{ commonStrings.keys.comboboxNoResults }}
6545
- </span>
6546
- </div>
6547
-
6548
- <!--Option Groups and Options will be projected here-->
6549
- <ng-content></ng-content>
6550
- `,
6551
- providers: [{ provide: LoadingListener, useExisting: ClrOptions }],
6552
- host: {
6553
- '[class.clr-combobox-options]': 'true',
6554
- '[attr.role]': '"listbox"',
6555
- '[id]': 'optionsId',
6556
- },
6557
- }]
6558
- }], ctorParameters: function () { return [{ type: OptionSelectionService }, { type: undefined, decorators: [{
6559
- type: Inject,
6560
- args: [IF_ACTIVE_ID]
6561
- }] }, { type: AriaService }, { type: i0.ElementRef }, { type: ClrCommonStringsService }, { type: ComboboxFocusHandler }, { type: ClrPopoverToggleService }, { type: i0.ElementRef, decorators: [{
6562
- type: Optional
6563
- }, {
6564
- type: Inject,
6565
- args: [POPOVER_HOST_ANCHOR]
6566
- }] }, { type: undefined, decorators: [{
6567
- type: Inject,
6568
- args: [DOCUMENT]
6569
- }] }]; }, propDecorators: { optionsId: [{
6570
- type: Input,
6571
- args: ['id']
6572
- }], items: [{
6573
- type: ContentChildren,
6574
- args: [ClrOption]
6575
- }] } });
6576
-
6577
6522
  /*
6578
6523
  * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
6579
6524
  * This software is released under MIT license.
@@ -8574,7 +8519,6 @@ class ClrYearpicker {
8574
8519
  this.commonStrings = commonStrings;
8575
8520
  this.yearRangeModel = new YearRangeModel(this.calendarYear);
8576
8521
  this._focusedYear = this.calendarYear;
8577
- this.updateRange(this.yearRangeModel);
8578
8522
  }
8579
8523
  /**
8580
8524
  * Gets the year which the user is currently on.
@@ -8611,7 +8555,6 @@ class ClrYearpicker {
8611
8555
  */
8612
8556
  previousDecade() {
8613
8557
  this.yearRangeModel = this.yearRangeModel.previousDecade();
8614
- this.updateRange(this.yearRangeModel);
8615
8558
  // Year in the yearpicker is not focused because while navigating to a different decade,
8616
8559
  // you want the focus to remain on the decade switcher arrows.
8617
8560
  }
@@ -8623,14 +8566,12 @@ class ClrYearpicker {
8623
8566
  this.yearRangeModel = this.yearRangeModel.currentDecade();
8624
8567
  }
8625
8568
  this._datepickerFocusService.focusCell(this._elRef);
8626
- this.updateRange(this.yearRangeModel);
8627
8569
  }
8628
8570
  /**
8629
8571
  * Updates the YearRangeModel to the next decade.
8630
8572
  */
8631
8573
  nextDecade() {
8632
8574
  this.yearRangeModel = this.yearRangeModel.nextDecade();
8633
- this.updateRange(this.yearRangeModel);
8634
8575
  // Year in the yearpicker is not focused because while navigating to a different decade,
8635
8576
  // you want the focus to remain on the decade switcher arrows.
8636
8577
  }
@@ -8675,11 +8616,6 @@ class ClrYearpicker {
8675
8616
  }
8676
8617
  }
8677
8618
  }
8678
- updateRange(yrm) {
8679
- const floor = yrm.yearRange[0];
8680
- const ceil = yrm.yearRange[yrm.yearRange.length - 1];
8681
- this.decadeRange = `${floor} to ${ceil}`;
8682
- }
8683
8619
  /**
8684
8620
  * Focuses on the current calendar year when the View is initialized.
8685
8621
  */
@@ -9398,6 +9334,42 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
9398
9334
  args: ['disabled']
9399
9335
  }] } });
9400
9336
 
9337
+ /*
9338
+ * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
9339
+ * This software is released under MIT license.
9340
+ * The full license information can be found in LICENSE in the root directory of this project.
9341
+ */
9342
+ class ClrDateInputValidator {
9343
+ constructor(dateIOService) {
9344
+ this.dateIOService = dateIOService;
9345
+ }
9346
+ validate(control) {
9347
+ if (this.dateIOService) {
9348
+ const value = this.dateIOService.getDateValueFromDateString(control.value);
9349
+ const minDate = this.dateIOService.disabledDates.minDate.toDate();
9350
+ const maxDate = this.dateIOService.disabledDates.maxDate.toDate();
9351
+ if (value && value < this.dateIOService.disabledDates.minDate.toDate()) {
9352
+ return { min: { min: minDate.toLocaleDateString(), actual: value.toLocaleDateString() } };
9353
+ }
9354
+ else if (value && value > this.dateIOService.disabledDates.maxDate.toDate()) {
9355
+ return { max: { max: maxDate.toLocaleDateString(), actual: value.toLocaleDateString() } };
9356
+ }
9357
+ }
9358
+ return null;
9359
+ }
9360
+ }
9361
+ ClrDateInputValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrDateInputValidator, deps: [{ token: DateIOService, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
9362
+ ClrDateInputValidator.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: ClrDateInputValidator, selector: "[clrDate]", providers: [{ provide: NG_VALIDATORS, useExisting: ClrDateInputValidator, multi: true }], ngImport: i0 });
9363
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrDateInputValidator, decorators: [{
9364
+ type: Directive,
9365
+ args: [{
9366
+ selector: '[clrDate]',
9367
+ providers: [{ provide: NG_VALIDATORS, useExisting: ClrDateInputValidator, multi: true }],
9368
+ }]
9369
+ }], ctorParameters: function () { return [{ type: DateIOService, decorators: [{
9370
+ type: Optional
9371
+ }] }]; } });
9372
+
9401
9373
  /*
9402
9374
  * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
9403
9375
  * This software is released under MIT license.
@@ -9407,6 +9379,7 @@ const CLR_DATEPICKER_DIRECTIVES = [
9407
9379
  ClrDay,
9408
9380
  ClrDateContainer,
9409
9381
  ClrDateInput,
9382
+ ClrDateInputValidator,
9410
9383
  ClrDatepickerViewManager,
9411
9384
  ClrMonthpicker,
9412
9385
  ClrYearpicker,
@@ -9422,6 +9395,7 @@ ClrDatepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", vers
9422
9395
  ClrDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrDatepickerModule, declarations: [ClrDay,
9423
9396
  ClrDateContainer,
9424
9397
  ClrDateInput,
9398
+ ClrDateInputValidator,
9425
9399
  ClrDatepickerViewManager,
9426
9400
  ClrMonthpicker,
9427
9401
  ClrYearpicker,
@@ -9435,6 +9409,7 @@ ClrDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", ver
9435
9409
  ClrCommonFormsModule], exports: [ClrDay,
9436
9410
  ClrDateContainer,
9437
9411
  ClrDateInput,
9412
+ ClrDateInputValidator,
9438
9413
  ClrDatepickerViewManager,
9439
9414
  ClrMonthpicker,
9440
9415
  ClrYearpicker,
@@ -12002,14 +11977,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
12002
11977
  * since it can be anything (not just a text input).
12003
11978
  */
12004
11979
  class ClrDatagridFilter extends DatagridFilterRegistrar {
12005
- constructor(_filters, commonStrings, smartToggleService, platformId, popoverId) {
11980
+ constructor(_filters, commonStrings, smartToggleService, platformId) {
12006
11981
  super(_filters);
12007
11982
  this.commonStrings = commonStrings;
12008
11983
  this.smartToggleService = smartToggleService;
12009
11984
  this.platformId = platformId;
12010
- this.popoverId = popoverId;
12011
11985
  this.subs = [];
12012
11986
  this.ariaExpanded = false;
11987
+ this.popoverId = uniqueIdFactory();
12013
11988
  // Smart Popover
12014
11989
  this.smartPosition = {
12015
11990
  axis: ClrAxis.VERTICAL,
@@ -12053,8 +12028,8 @@ class ClrDatagridFilter extends DatagridFilterRegistrar {
12053
12028
  this.subs.forEach(sub => sub.unsubscribe());
12054
12029
  }
12055
12030
  }
12056
- ClrDatagridFilter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrDatagridFilter, deps: [{ token: FiltersProvider }, { token: ClrCommonStringsService }, { token: ClrPopoverToggleService }, { token: PLATFORM_ID }, { token: UNIQUE_ID }], target: i0.ɵɵFactoryTarget.Component });
12057
- ClrDatagridFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrDatagridFilter, selector: "clr-dg-filter", inputs: { open: ["clrDgFilterOpen", "open"], customFilter: ["clrDgFilter", "customFilter"] }, outputs: { openChange: "clrDgFilterOpenChange" }, providers: [{ provide: CustomFilter, useExisting: ClrDatagridFilter }, UNIQUE_ID_PROVIDER], viewQueries: [{ propertyName: "anchor", first: true, predicate: ["anchor"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: `
12031
+ ClrDatagridFilter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrDatagridFilter, deps: [{ token: FiltersProvider }, { token: ClrCommonStringsService }, { token: ClrPopoverToggleService }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });
12032
+ ClrDatagridFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrDatagridFilter, selector: "clr-dg-filter", inputs: { open: ["clrDgFilterOpen", "open"], customFilter: ["clrDgFilter", "customFilter"] }, outputs: { openChange: "clrDgFilterOpenChange" }, providers: [{ provide: CustomFilter, useExisting: ClrDatagridFilter }], viewQueries: [{ propertyName: "anchor", first: true, predicate: ["anchor"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: `
12058
12033
  <button
12059
12034
  class="datagrid-filter-toggle"
12060
12035
  type="button"
@@ -12096,7 +12071,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
12096
12071
  args: [{
12097
12072
  selector: 'clr-dg-filter',
12098
12073
  // We register this component as a CustomFilter, for the parent column to detect it.
12099
- providers: [{ provide: CustomFilter, useExisting: ClrDatagridFilter }, UNIQUE_ID_PROVIDER],
12074
+ providers: [{ provide: CustomFilter, useExisting: ClrDatagridFilter }],
12100
12075
  template: `
12101
12076
  <button
12102
12077
  class="datagrid-filter-toggle"
@@ -12138,9 +12113,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
12138
12113
  }], ctorParameters: function () { return [{ type: FiltersProvider }, { type: ClrCommonStringsService }, { type: ClrPopoverToggleService }, { type: undefined, decorators: [{
12139
12114
  type: Inject,
12140
12115
  args: [PLATFORM_ID]
12141
- }] }, { type: undefined, decorators: [{
12142
- type: Inject,
12143
- args: [UNIQUE_ID]
12144
12116
  }] }]; }, propDecorators: { anchor: [{
12145
12117
  type: ViewChild,
12146
12118
  args: ['anchor', { read: ElementRef }]
@@ -13280,14 +13252,14 @@ const KEYBOARD_RESIZE_LENGTH = 12;
13280
13252
  class ClrDatagridColumnSeparator {
13281
13253
  // Every column draggable separator should have its own unique ID
13282
13254
  // in order to not conflict with other draggables/droppables.
13283
- constructor(columnResizerService, renderer, ngZone, tableSizeService, commonString, document, columnSeparatorId) {
13255
+ constructor(columnResizerService, renderer, ngZone, tableSizeService, commonString, document) {
13284
13256
  this.columnResizerService = columnResizerService;
13285
13257
  this.renderer = renderer;
13286
13258
  this.ngZone = ngZone;
13287
13259
  this.tableSizeService = tableSizeService;
13288
13260
  this.commonString = commonString;
13289
13261
  this.document = document;
13290
- this.columnSeparatorId = columnSeparatorId;
13262
+ this.columnSeparatorId = uniqueIdFactory();
13291
13263
  this.resizeStartedOnKeyDown = false;
13292
13264
  this.unlisteners = [];
13293
13265
  }
@@ -13373,8 +13345,8 @@ class ClrDatagridColumnSeparator {
13373
13345
  this.unlisteners.forEach(unlistener => unlistener());
13374
13346
  }
13375
13347
  }
13376
- ClrDatagridColumnSeparator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrDatagridColumnSeparator, deps: [{ token: ColumnResizerService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: TableSizeService }, { token: ClrCommonStringsService }, { token: DOCUMENT }, { token: UNIQUE_ID }], target: i0.ɵɵFactoryTarget.Component });
13377
- ClrDatagridColumnSeparator.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrDatagridColumnSeparator, selector: "clr-dg-column-separator", host: { properties: { "class.datagrid-column-separator": "true" } }, providers: [UNIQUE_ID_PROVIDER], viewQueries: [{ propertyName: "resizeTrackerRef", first: true, predicate: ["resizeTracker"], descendants: true }, { propertyName: "columnHandleRef", first: true, predicate: ["columnHandle"], descendants: true }], ngImport: i0, template: `
13348
+ ClrDatagridColumnSeparator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrDatagridColumnSeparator, deps: [{ token: ColumnResizerService }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: TableSizeService }, { token: ClrCommonStringsService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
13349
+ ClrDatagridColumnSeparator.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrDatagridColumnSeparator, 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: `
13378
13350
  <button
13379
13351
  type="button"
13380
13352
  class="datagrid-column-handle"
@@ -13417,14 +13389,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
13417
13389
  host: {
13418
13390
  '[class.datagrid-column-separator]': 'true',
13419
13391
  },
13420
- providers: [UNIQUE_ID_PROVIDER],
13421
13392
  }]
13422
13393
  }], ctorParameters: function () { return [{ type: ColumnResizerService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: TableSizeService }, { type: ClrCommonStringsService }, { type: undefined, decorators: [{
13423
13394
  type: Inject,
13424
13395
  args: [DOCUMENT]
13425
- }] }, { type: undefined, decorators: [{
13426
- type: Inject,
13427
- args: [UNIQUE_ID]
13428
13396
  }] }]; }, propDecorators: { resizeTrackerRef: [{
13429
13397
  type: ViewChild,
13430
13398
  args: ['resizeTracker']
@@ -14525,10 +14493,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
14525
14493
  */
14526
14494
  let nbSelection = 0;
14527
14495
  class Selection {
14528
- constructor(_items, _filters, _zone) {
14496
+ constructor(_items, _filters) {
14529
14497
  this._items = _items;
14530
14498
  this._filters = _filters;
14531
- this._zone = _zone;
14532
14499
  this.preserveSelection = false;
14533
14500
  this.prevSelectionRefs = []; // Refs of selected items
14534
14501
  this.lockedRefs = []; // Ref of locked items
@@ -14883,11 +14850,11 @@ class Selection {
14883
14850
  }
14884
14851
  }
14885
14852
  }
14886
- Selection.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: Selection, deps: [{ token: Items }, { token: FiltersProvider }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
14853
+ Selection.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: Selection, deps: [{ token: Items }, { token: FiltersProvider }], target: i0.ɵɵFactoryTarget.Injectable });
14887
14854
  Selection.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: Selection });
14888
14855
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: Selection, decorators: [{
14889
14856
  type: Injectable
14890
- }], ctorParameters: function () { return [{ type: Items }, { type: FiltersProvider }, { type: i0.NgZone }]; } });
14857
+ }], ctorParameters: function () { return [{ type: Items }, { type: FiltersProvider }]; } });
14891
14858
 
14892
14859
  /*
14893
14860
  * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
@@ -15498,7 +15465,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
15498
15465
  * The full license information can be found in LICENSE in the root directory of this project.
15499
15466
  */
15500
15467
  class ClrDatagrid {
15501
- constructor(organizer, items, expandableRows, selection, rowActionService, stateProvider, displayMode, renderer, detailService, datagridId, document, el, page, commonStrings, columnsService, keyNavigation, zone) {
15468
+ constructor(organizer, items, expandableRows, selection, rowActionService, stateProvider, displayMode, renderer, detailService, document, el, page, commonStrings, columnsService, keyNavigation, zone) {
15502
15469
  this.organizer = organizer;
15503
15470
  this.items = items;
15504
15471
  this.expandableRows = expandableRows;
@@ -15532,6 +15499,7 @@ class ClrDatagrid {
15532
15499
  * Subscriptions to all the services and queries changes
15533
15500
  */
15534
15501
  this._subscriptions = [];
15502
+ const datagridId = uniqueIdFactory();
15535
15503
  this.selectAllId = 'clr-dg-select-all-' + datagridId;
15536
15504
  this.detailService.id = datagridId;
15537
15505
  }
@@ -15720,7 +15688,7 @@ class ClrDatagrid {
15720
15688
  this.organizer.resize();
15721
15689
  }
15722
15690
  }
15723
- ClrDatagrid.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrDatagrid, deps: [{ token: DatagridRenderOrganizer }, { token: Items }, { token: ExpandableRowsCount }, { token: Selection }, { token: RowActionService }, { token: StateProvider }, { token: DisplayModeService }, { token: i0.Renderer2 }, { token: DetailService }, { token: UNIQUE_ID }, { token: DOCUMENT }, { token: i0.ElementRef }, { token: Page }, { token: ClrCommonStringsService }, { token: ColumnsService }, { token: KeyNavigationGridController }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
15691
+ ClrDatagrid.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrDatagrid, deps: [{ token: DatagridRenderOrganizer }, { token: Items }, { token: ExpandableRowsCount }, { token: Selection }, { token: RowActionService }, { token: StateProvider }, { token: DisplayModeService }, { token: i0.Renderer2 }, { token: DetailService }, { token: DOCUMENT }, { token: i0.ElementRef }, { token: Page }, { token: ClrCommonStringsService }, { token: ColumnsService }, { token: KeyNavigationGridController }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
15724
15692
  ClrDatagrid.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrDatagrid, selector: "clr-datagrid", inputs: { loading: ["clrDgLoading", "loading"], selected: ["clrDgSelected", "selected"], singleSelected: ["clrDgSingleSelected", "singleSelected"], clrDgSingleSelectionAriaLabel: "clrDgSingleSelectionAriaLabel", clrDgSingleActionableAriaLabel: "clrDgSingleActionableAriaLabel", clrDetailExpandableAriaLabel: "clrDetailExpandableAriaLabel", clrDgDisablePageFocus: "clrDgDisablePageFocus", clrDgPreserveSelection: "clrDgPreserveSelection", rowSelectionMode: ["clrDgRowSelection", "rowSelectionMode"] }, outputs: { refresh: "clrDgRefresh", selectedChanged: "clrDgSelectedChange", singleSelectedChanged: "clrDgSingleSelectedChange" }, host: { properties: { "class.datagrid-host": "true", "class.datagrid-detail-open": "detailService.isOpen" } }, providers: [
15725
15693
  Selection,
15726
15694
  Sort,
@@ -15732,7 +15700,6 @@ ClrDatagrid.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "
15732
15700
  ExpandableRowsCount,
15733
15701
  StateDebouncer,
15734
15702
  DetailService,
15735
- UNIQUE_ID_PROVIDER,
15736
15703
  StateProvider,
15737
15704
  TableSizeService,
15738
15705
  ColumnsService,
@@ -15752,7 +15719,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
15752
15719
  ExpandableRowsCount,
15753
15720
  StateDebouncer,
15754
15721
  DetailService,
15755
- UNIQUE_ID_PROVIDER,
15756
15722
  StateProvider,
15757
15723
  TableSizeService,
15758
15724
  ColumnsService,
@@ -15763,9 +15729,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
15763
15729
  '[class.datagrid-detail-open]': 'detailService.isOpen',
15764
15730
  }, template: "<!--\n ~ Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<ng-content select=\"clr-dg-action-bar\"></ng-content>\n<div class=\"datagrid-outer-wrapper\">\n <div class=\"datagrid-inner-wrapper\">\n <div class=\"datagrid\" #datagrid [attr.aria-hidden]=\"detailService.isOpen ? true : null\">\n <div class=\"datagrid-table-wrapper\">\n <div role=\"grid\" class=\"datagrid-table\" tabindex=\"-1\" #datagridTable>\n <div role=\"rowgroup\" class=\"datagrid-header\">\n <div role=\"row\" class=\"datagrid-row\">\n <div class=\"datagrid-row-master datagrid-row-flex\">\n <div class=\"datagrid-row-sticky\">\n <!--header for datagrid where you can select multiple rows -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n (keydown.space)=\"allSelected = !allSelected; $event.preventDefault()\"\n >\n <div class=\"clr-checkbox-wrapper\">\n <!-- We need to move focus and space-key handling to the parent because of keyboard arrow key navigation,\n which is not able to transfer focus directly on the input when focused with the tab key -->\n <input\n type=\"checkbox\"\n [id]=\"selectAllId\"\n [(ngModel)]=\"allSelected\"\n [attr.aria-label]=\"commonStrings.keys.selectAll\"\n tabindex=\"-1\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"selectAllId\" class=\"clr-control-label clr-col-null\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.selectAll}}</span>\n </label>\n </div>\n\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for datagrid where you can select one row only -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n [attr.aria-label]=\"clrDgSingleSelectionAriaLabel\"\n >\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for single row action; only displayType if we have at least one actionable row in datagrid -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-row-actions datagrid-fixed-column\"\n *ngIf=\"rowActionService.hasActionableRow\"\n [attr.aria-label]=\"clrDgSingleActionableAriaLabel\"\n >\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for carets; only displayType if we have at least one expandable row in datagrid -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-expandable-caret datagrid-fixed-column\"\n *ngIf=\"expandableRows.hasExpandableRow || detailService.enabled\"\n [attr.aria-label]=\"clrDetailExpandableAriaLabel\"\n >\n <div class=\"datagrid-column-separator\"></div>\n </div>\n </div>\n <div class=\"datagrid-row-scrollable\">\n <ng-container #projectedDisplayColumns></ng-container>\n </div>\n </div>\n </div>\n </div>\n <ng-container #displayedRows></ng-container>\n <!-- Custom placeholder overrides the default empty one -->\n <ng-content select=\"clr-dg-placeholder\"></ng-content>\n <clr-dg-placeholder *ngIf=\"!placeholder\"></clr-dg-placeholder>\n </div>\n </div>\n </div>\n <ng-content select=\"clr-dg-footer\"></ng-content>\n <div class=\"datagrid-spinner\" *ngIf=\"loading\">\n <clr-spinner clrMedium>Loading</clr-spinner>\n </div>\n </div>\n <ng-content select=\"[clrIfDetail],clr-dg-detail\"></ng-content>\n</div>\n\n<div class=\"datagrid-calculation-table\">\n <div class=\"datagrid-calculation-header\">\n <ng-container #projectedCalculationColumns></ng-container>\n </div>\n <ng-container #calculationRows></ng-container>\n</div>\n" }]
15765
15731
  }], ctorParameters: function () { return [{ type: DatagridRenderOrganizer }, { type: Items }, { type: ExpandableRowsCount }, { type: Selection }, { type: RowActionService }, { type: StateProvider }, { type: DisplayModeService }, { type: i0.Renderer2 }, { type: DetailService }, { type: undefined, decorators: [{
15766
- type: Inject,
15767
- args: [UNIQUE_ID]
15768
- }] }, { type: undefined, decorators: [{
15769
15732
  type: Inject,
15770
15733
  args: [DOCUMENT]
15771
15734
  }] }, { type: i0.ElementRef }, { type: Page }, { type: ClrCommonStringsService }, { type: ColumnsService }, { type: KeyNavigationGridController }, { type: i0.NgZone }]; }, propDecorators: { loading: [{
@@ -15862,13 +15825,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
15862
15825
  */
15863
15826
  let clrDgActionId = 0;
15864
15827
  class ClrDatagridActionOverflow {
15865
- constructor(rowActionService, commonStrings, platformId, zone, smartToggleService, popoverId) {
15828
+ constructor(rowActionService, commonStrings, platformId, zone, smartToggleService) {
15866
15829
  this.rowActionService = rowActionService;
15867
15830
  this.commonStrings = commonStrings;
15868
15831
  this.platformId = platformId;
15869
15832
  this.zone = zone;
15870
15833
  this.smartToggleService = smartToggleService;
15871
- this.popoverId = popoverId;
15872
15834
  this.subscriptions = [];
15873
15835
  this.smartPosition = {
15874
15836
  axis: ClrAxis.HORIZONTAL,
@@ -15876,6 +15838,7 @@ class ClrDatagridActionOverflow {
15876
15838
  anchor: ClrAlignment.CENTER,
15877
15839
  content: ClrAlignment.CENTER,
15878
15840
  };
15841
+ this.popoverId = uniqueIdFactory();
15879
15842
  this._open = false;
15880
15843
  this.openChange = new EventEmitter(false);
15881
15844
  this.rowActionService.register();
@@ -15921,8 +15884,8 @@ class ClrDatagridActionOverflow {
15921
15884
  }
15922
15885
  }
15923
15886
  }
15924
- ClrDatagridActionOverflow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrDatagridActionOverflow, deps: [{ token: RowActionService }, { token: ClrCommonStringsService }, { token: PLATFORM_ID }, { token: i0.NgZone }, { token: ClrPopoverToggleService }, { token: UNIQUE_ID }], target: i0.ɵɵFactoryTarget.Component });
15925
- ClrDatagridActionOverflow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrDatagridActionOverflow, selector: "clr-dg-action-overflow", inputs: { open: ["clrDgActionOverflowOpen", "open"] }, outputs: { openChange: "clrDgActionOverflowOpenChange" }, providers: [UNIQUE_ID_PROVIDER, ClrPopoverToggleService, ClrPopoverEventsService, ClrPopoverPositionService], viewQueries: [{ propertyName: "keyFocus", first: true, predicate: ClrKeyFocus, descendants: true }], ngImport: i0, template: `
15887
+ ClrDatagridActionOverflow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrDatagridActionOverflow, deps: [{ token: RowActionService }, { token: ClrCommonStringsService }, { token: PLATFORM_ID }, { token: i0.NgZone }, { token: ClrPopoverToggleService }], target: i0.ɵɵFactoryTarget.Component });
15888
+ ClrDatagridActionOverflow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrDatagridActionOverflow, selector: "clr-dg-action-overflow", inputs: { open: ["clrDgActionOverflowOpen", "open"] }, outputs: { openChange: "clrDgActionOverflowOpenChange" }, providers: [ClrPopoverToggleService, ClrPopoverEventsService, ClrPopoverPositionService], viewQueries: [{ propertyName: "keyFocus", first: true, predicate: ClrKeyFocus, descendants: true }], ngImport: i0, template: `
15926
15889
  <button
15927
15890
  class="datagrid-action-toggle"
15928
15891
  type="button"
@@ -15955,7 +15918,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
15955
15918
  type: Component,
15956
15919
  args: [{
15957
15920
  selector: 'clr-dg-action-overflow',
15958
- providers: [UNIQUE_ID_PROVIDER, ClrPopoverToggleService, ClrPopoverEventsService, ClrPopoverPositionService],
15921
+ providers: [ClrPopoverToggleService, ClrPopoverEventsService, ClrPopoverPositionService],
15959
15922
  template: `
15960
15923
  <button
15961
15924
  class="datagrid-action-toggle"
@@ -15989,10 +15952,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
15989
15952
  }], ctorParameters: function () { return [{ type: RowActionService }, { type: ClrCommonStringsService }, { type: undefined, decorators: [{
15990
15953
  type: Inject,
15991
15954
  args: [PLATFORM_ID]
15992
- }] }, { type: i0.NgZone }, { type: ClrPopoverToggleService }, { type: undefined, decorators: [{
15993
- type: Inject,
15994
- args: [UNIQUE_ID]
15995
- }] }]; }, propDecorators: { keyFocus: [{
15955
+ }] }, { type: i0.NgZone }, { type: ClrPopoverToggleService }]; }, propDecorators: { keyFocus: [{
15996
15956
  type: ViewChild,
15997
15957
  args: [ClrKeyFocus]
15998
15958
  }], open: [{
@@ -16116,14 +16076,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
16116
16076
  */
16117
16077
  /** @deprecated since 2.0, remove in 3.0 */
16118
16078
  class ClrDatagridColumnToggle {
16119
- constructor(commonStrings, columnsService, columnSwitchId, platformId, zone, popoverId, popoverToggleService) {
16079
+ constructor(commonStrings, columnsService, popoverToggleService) {
16120
16080
  this.commonStrings = commonStrings;
16121
16081
  this.columnsService = columnsService;
16122
- this.columnSwitchId = columnSwitchId;
16123
- this.platformId = platformId;
16124
- this.zone = zone;
16125
- this.popoverId = popoverId;
16126
- this.popoverToggleService = popoverToggleService;
16082
+ this.popoverId = uniqueIdFactory();
16127
16083
  // Smart Popover
16128
16084
  this.smartPosition = {
16129
16085
  axis: ClrAxis.VERTICAL,
@@ -16170,8 +16126,8 @@ class ClrDatagridColumnToggle {
16170
16126
  return index;
16171
16127
  }
16172
16128
  }
16173
- ClrDatagridColumnToggle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrDatagridColumnToggle, deps: [{ token: ClrCommonStringsService }, { token: ColumnsService }, { token: UNIQUE_ID }, { token: PLATFORM_ID }, { token: i0.NgZone }, { token: UNIQUE_ID }, { token: ClrPopoverToggleService }], target: i0.ɵɵFactoryTarget.Component });
16174
- ClrDatagridColumnToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrDatagridColumnToggle, selector: "clr-dg-column-toggle", host: { properties: { "class.column-switch-wrapper": "true", "class.active": "openState" } }, providers: [UNIQUE_ID_PROVIDER, ClrPopoverEventsService, ClrPopoverPositionService, ClrPopoverToggleService], queries: [{ propertyName: "customToggleTitle", first: true, predicate: ClrDatagridColumnToggleTitle, descendants: true }, { propertyName: "customToggleButton", first: true, predicate: ClrDatagridColumnToggleButton, descendants: true }], viewQueries: [{ propertyName: "allSelectedElement", first: true, predicate: ["allSelected"], descendants: true, read: ElementRef }], ngImport: i0, template: `
16129
+ ClrDatagridColumnToggle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrDatagridColumnToggle, deps: [{ token: ClrCommonStringsService }, { token: ColumnsService }, { token: ClrPopoverToggleService }], target: i0.ɵɵFactoryTarget.Component });
16130
+ ClrDatagridColumnToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrDatagridColumnToggle, selector: "clr-dg-column-toggle", host: { properties: { "class.column-switch-wrapper": "true", "class.active": "openState" } }, providers: [ClrPopoverEventsService, ClrPopoverPositionService, ClrPopoverToggleService], queries: [{ propertyName: "customToggleTitle", first: true, predicate: ClrDatagridColumnToggleTitle, descendants: true }, { propertyName: "customToggleButton", first: true, predicate: ClrDatagridColumnToggleButton, descendants: true }], viewQueries: [{ propertyName: "allSelectedElement", first: true, predicate: ["allSelected"], descendants: true, read: ElementRef }], ngImport: i0, template: `
16175
16131
  <button
16176
16132
  role="button"
16177
16133
  type="button"
@@ -16300,18 +16256,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
16300
16256
  </div>
16301
16257
  `,
16302
16258
  host: { '[class.column-switch-wrapper]': 'true', '[class.active]': 'openState' },
16303
- providers: [UNIQUE_ID_PROVIDER, ClrPopoverEventsService, ClrPopoverPositionService, ClrPopoverToggleService],
16259
+ providers: [ClrPopoverEventsService, ClrPopoverPositionService, ClrPopoverToggleService],
16304
16260
  }]
16305
- }], ctorParameters: function () { return [{ type: ClrCommonStringsService }, { type: ColumnsService }, { type: undefined, decorators: [{
16306
- type: Inject,
16307
- args: [UNIQUE_ID]
16308
- }] }, { type: undefined, decorators: [{
16309
- type: Inject,
16310
- args: [PLATFORM_ID]
16311
- }] }, { type: i0.NgZone }, { type: undefined, decorators: [{
16312
- type: Inject,
16313
- args: [UNIQUE_ID]
16314
- }] }, { type: ClrPopoverToggleService }]; }, propDecorators: { customToggleTitle: [{
16261
+ }], ctorParameters: function () { return [{ type: ClrCommonStringsService }, { type: ColumnsService }, { type: ClrPopoverToggleService }]; }, propDecorators: { customToggleTitle: [{
16315
16262
  type: ContentChild,
16316
16263
  args: [ClrDatagridColumnToggleTitle]
16317
16264
  }], customToggleButton: [{
@@ -18408,8 +18355,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
18408
18355
  }]
18409
18356
  }] });
18410
18357
  class ClrStackViewLabel {
18411
- constructor(uniqueId) {
18412
- this.uniqueId = uniqueId;
18358
+ constructor() {
18413
18359
  this._generatedId = null;
18414
18360
  this._id = null;
18415
18361
  }
@@ -18425,28 +18371,24 @@ class ClrStackViewLabel {
18425
18371
  return this._id;
18426
18372
  }
18427
18373
  ngOnInit() {
18428
- this._generatedId = 'clr-stack-label-' + this.uniqueId;
18374
+ this._generatedId = 'clr-stack-label-' + uniqueIdFactory();
18429
18375
  if (!this.id) {
18430
18376
  this._id = this._generatedId + '';
18431
18377
  }
18432
18378
  }
18433
18379
  }
18434
- ClrStackViewLabel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrStackViewLabel, deps: [{ token: UNIQUE_ID }], target: i0.ɵɵFactoryTarget.Component });
18435
- ClrStackViewLabel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrStackViewLabel, selector: "clr-stack-label", inputs: { id: "id" }, host: { properties: { "attr.id": "id" } }, providers: [UNIQUE_ID_PROVIDER], ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
18380
+ ClrStackViewLabel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrStackViewLabel, deps: [], target: i0.ɵɵFactoryTarget.Component });
18381
+ ClrStackViewLabel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrStackViewLabel, selector: "clr-stack-label", inputs: { id: "id" }, host: { properties: { "attr.id": "id" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true });
18436
18382
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrStackViewLabel, decorators: [{
18437
18383
  type: Component,
18438
18384
  args: [{
18439
18385
  selector: 'clr-stack-label',
18440
18386
  template: '<ng-content></ng-content>',
18441
- providers: [UNIQUE_ID_PROVIDER],
18442
18387
  host: {
18443
18388
  '[attr.id]': 'id',
18444
18389
  },
18445
18390
  }]
18446
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
18447
- type: Inject,
18448
- args: [UNIQUE_ID]
18449
- }] }]; }, propDecorators: { id: [{
18391
+ }], propDecorators: { id: [{
18450
18392
  type: Input
18451
18393
  }] } });
18452
18394
 
@@ -18461,9 +18403,8 @@ class ClrStackBlock {
18461
18403
  * querying for children StackBlocks, but this feature is not available when downgrading
18462
18404
  * the component for Angular 1.
18463
18405
  */
18464
- constructor(parent, uniqueId, commonStrings) {
18406
+ constructor(parent, commonStrings) {
18465
18407
  this.parent = parent;
18466
- this.uniqueId = uniqueId;
18467
18408
  this.commonStrings = commonStrings;
18468
18409
  this.expanded = false;
18469
18410
  this.expandedChange = new EventEmitter(false);
@@ -18472,6 +18413,7 @@ class ClrStackBlock {
18472
18413
  this._changedChildren = 0;
18473
18414
  this._fullyInitialized = false;
18474
18415
  this._changed = false;
18416
+ this.uniqueId = uniqueIdFactory();
18475
18417
  if (parent) {
18476
18418
  parent.addChild();
18477
18419
  }
@@ -18537,8 +18479,8 @@ class ClrStackBlock {
18537
18479
  return this.expanded ? `clr-stack-children-${this.uniqueId}` : null;
18538
18480
  }
18539
18481
  }
18540
- ClrStackBlock.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrStackBlock, deps: [{ token: ClrStackBlock, optional: true, skipSelf: true }, { token: UNIQUE_ID }, { token: ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component });
18541
- ClrStackBlock.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrStackBlock, selector: "clr-stack-block", inputs: { expanded: ["clrSbExpanded", "expanded"], expandable: ["clrSbExpandable", "expandable"], setChangedValue: ["clrSbNotifyChange", "setChangedValue"], ariaLevel: ["clrStackViewLevel", "ariaLevel"], ariaSetsize: ["clrStackViewSetsize", "ariaSetsize"], ariaPosinset: ["clrStackViewPosinset", "ariaPosinset"] }, outputs: { expandedChange: "clrSbExpandedChange" }, host: { properties: { "class.stack-block": "true", "attr.role": "\"heading\"", "attr.aria-level": "headingLevel", "class.stack-block-expanded": "this.expanded", "class.stack-block-expandable": "this.expandable", "class.stack-block-changed": "this.getChangedValue", "class.on-focus": "this.onStackLabelFocus" } }, providers: [UNIQUE_ID_PROVIDER], queries: [{ propertyName: "stackBlockTitle", first: true, predicate: ClrStackViewLabel, descendants: true }], ngImport: i0, template: `
18482
+ ClrStackBlock.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrStackBlock, deps: [{ token: ClrStackBlock, optional: true, skipSelf: true }, { token: ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component });
18483
+ ClrStackBlock.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrStackBlock, selector: "clr-stack-block", inputs: { expanded: ["clrSbExpanded", "expanded"], expandable: ["clrSbExpandable", "expandable"], setChangedValue: ["clrSbNotifyChange", "setChangedValue"], ariaLevel: ["clrStackViewLevel", "ariaLevel"], ariaSetsize: ["clrStackViewSetsize", "ariaSetsize"], ariaPosinset: ["clrStackViewPosinset", "ariaPosinset"] }, outputs: { expandedChange: "clrSbExpandedChange" }, host: { properties: { "class.stack-block": "true", "attr.role": "\"heading\"", "attr.aria-level": "headingLevel", "class.stack-block-expanded": "this.expanded", "class.stack-block-expandable": "this.expandable", "class.stack-block-changed": "this.getChangedValue", "class.on-focus": "this.onStackLabelFocus" } }, queries: [{ propertyName: "stackBlockTitle", first: true, predicate: ClrStackViewLabel, descendants: true }], ngImport: i0, template: `
18542
18484
  <!-- The 'preventDefault' for the space keydown event prevents the page
18543
18485
  from scrolling when a stack block is toggled via the space key. -->
18544
18486
  <div
@@ -18638,15 +18580,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
18638
18580
  '[attr.role]': '"heading"',
18639
18581
  '[attr.aria-level]': 'headingLevel',
18640
18582
  },
18641
- providers: [UNIQUE_ID_PROVIDER],
18642
18583
  }]
18643
18584
  }], ctorParameters: function () { return [{ type: ClrStackBlock, decorators: [{
18644
18585
  type: SkipSelf
18645
18586
  }, {
18646
18587
  type: Optional
18647
- }] }, { type: undefined, decorators: [{
18648
- type: Inject,
18649
- args: [UNIQUE_ID]
18650
18588
  }] }, { type: ClrCommonStringsService }]; }, propDecorators: { expanded: [{
18651
18589
  type: HostBinding,
18652
18590
  args: ['class.stack-block-expanded']
@@ -18691,11 +18629,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
18691
18629
  * The full license information can be found in LICENSE in the root directory of this project.
18692
18630
  */
18693
18631
  class ClrStackContentInput {
18694
- constructor(uniqueId) {
18695
- this.uniqueId = uniqueId;
18632
+ constructor() {
18633
+ this.uniqueId = uniqueIdFactory();
18696
18634
  }
18697
18635
  }
18698
- ClrStackContentInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrStackContentInput, deps: [{ token: UNIQUE_ID }], target: i0.ɵɵFactoryTarget.Directive });
18636
+ ClrStackContentInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrStackContentInput, deps: [], target: i0.ɵɵFactoryTarget.Directive });
18699
18637
  ClrStackContentInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: ClrStackContentInput, selector: "[clrStackInput]", host: { properties: { "class.clr-input": "true", "attr.aria-labelledby": "uniqueId" } }, ngImport: i0 });
18700
18638
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrStackContentInput, decorators: [{
18701
18639
  type: Directive,
@@ -18706,10 +18644,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
18706
18644
  '[attr.aria-labelledby]': 'uniqueId',
18707
18645
  },
18708
18646
  }]
18709
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
18710
- type: Inject,
18711
- args: [UNIQUE_ID]
18712
- }] }]; } });
18647
+ }] });
18713
18648
 
18714
18649
  /*
18715
18650
  * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
@@ -19594,8 +19529,7 @@ const LVIEW_CONTEXT_INDEX = 8;
19594
19529
  // then those keys are sent together in one request.
19595
19530
  const TREE_TYPE_AHEAD_TIMEOUT = 200;
19596
19531
  class ClrTreeNode {
19597
- constructor(nodeId, platformId, parent, forTypeAheadProvider, featuresService, expandService, commonStrings, focusManager, injector) {
19598
- this.nodeId = nodeId;
19532
+ constructor(platformId, parent, forTypeAheadProvider, featuresService, expandService, commonStrings, focusManager, injector) {
19599
19533
  this.platformId = platformId;
19600
19534
  this.forTypeAheadProvider = forTypeAheadProvider;
19601
19535
  this.featuresService = featuresService;
@@ -19605,6 +19539,7 @@ class ClrTreeNode {
19605
19539
  this.STATES = ClrSelectedState;
19606
19540
  this.skipEmitChange = false;
19607
19541
  this.isModelLoading = false;
19542
+ this.nodeId = uniqueIdFactory();
19608
19543
  this.typeAheadKeyEvent = new Subject();
19609
19544
  this.typeAheadKeyBuffer = '';
19610
19545
  this.selectedChange = new EventEmitter(false);
@@ -19819,13 +19754,8 @@ class ClrTreeNode {
19819
19754
  }
19820
19755
  }
19821
19756
  }
19822
- ClrTreeNode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTreeNode, deps: [{ token: UNIQUE_ID }, { token: PLATFORM_ID }, { token: ClrTreeNode, optional: true, skipSelf: true }, { token: ForTypeAheadProvider, optional: true, self: true }, { token: TreeFeaturesService }, { token: IfExpandService }, { token: ClrCommonStringsService }, { token: TreeFocusManagerService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
19823
- ClrTreeNode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrTreeNode, selector: "clr-tree-node", inputs: { selected: ["clrSelected", "selected"], expandable: ["clrExpandable", "expandable"], expanded: ["clrExpanded", "expanded"] }, outputs: { selectedChange: "clrSelectedChange", expandedChange: "clrExpandedChange" }, host: { properties: { "class.clr-tree-node": "true" } }, providers: [
19824
- UNIQUE_ID_PROVIDER,
19825
- TREE_FEATURES_PROVIDER,
19826
- IfExpandService,
19827
- { provide: LoadingListener, useExisting: IfExpandService },
19828
- ], queries: [{ propertyName: "treeNodeLinkList", predicate: ClrTreeNodeLink }], viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div\n #contentContainer\n role=\"treeitem\"\n class=\"clr-tree-node-content-container\"\n tabindex=\"-1\"\n [attr.aria-expanded]=\"isExpandable() ? expanded : null\"\n [attr.aria-selected]=\"ariaSelected\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"broadcastFocusOnContainer()\"\n>\n <button\n *ngIf=\"isExpandable() && !isModelLoading && !expandService.loading\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"clr-treenode-caret\"\n (click)=\"expandService.toggle();\"\n (focus)=\"focusTreeNode()\"\n >\n <cds-icon\n class=\"clr-treenode-caret-icon\"\n shape=\"angle\"\n [attr.direction]=\"expandService.expanded ? 'down' : 'right'\"\n ></cds-icon>\n </button>\n <div class=\"clr-treenode-spinner-container\" *ngIf=\"expandService.loading || isModelLoading\">\n <span class=\"clr-treenode-spinner spinner\"></span>\n </div>\n <div class=\"clr-checkbox-wrapper clr-treenode-checkbox\" *ngIf=\"featuresService.selectable\">\n <input\n aria-hidden=\"true\"\n type=\"checkbox\"\n id=\"{{nodeId}}-check\"\n class=\"clr-checkbox\"\n [checked]=\"_model.selected.value === STATES.SELECTED\"\n [indeterminate]=\"_model.selected.value === STATES.INDETERMINATE\"\n (change)=\"_model.toggleSelection(featuresService.eager)\"\n (focus)=\"focusTreeNode()\"\n tabindex=\"-1\"\n />\n <label for=\"{{nodeId}}-check\" class=\"clr-control-label\"></label>\n </div>\n <div class=\"clr-treenode-content\" (mousedown)=\"focusTreeNode()\">\n <ng-content></ng-content>\n <div class=\"clr-sr-only\" *ngIf=\"featuresService.selectable\">\n <span *ngIf=\"ariaSelected\">selected</span>\n <span *ngIf=\"!ariaSelected\">unselected</span>\n </div>\n </div>\n</div>\n<div\n class=\"clr-treenode-children\"\n [@toggleChildrenAnim]=\"expandService.expanded ? 'expanded' : 'collapsed'\"\n [attr.role]=\"isExpandable() && !featuresService.recursion ? 'group' : null\"\n>\n <ng-content select=\"clr-tree-node\"></ng-content>\n <ng-content select=\"[clrIfExpanded]\"></ng-content>\n <clr-recursive-children [parent]=\"_model\"></clr-recursive-children>\n</div>\n", components: [{ type: RecursiveChildren, selector: "clr-recursive-children", inputs: ["parent", "children"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: CdsIconCustomTag, selector: "cds-icon" }], animations: [
19757
+ ClrTreeNode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTreeNode, deps: [{ token: PLATFORM_ID }, { token: ClrTreeNode, optional: true, skipSelf: true }, { token: ForTypeAheadProvider, optional: true, self: true }, { token: TreeFeaturesService }, { token: IfExpandService }, { token: ClrCommonStringsService }, { token: TreeFocusManagerService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
19758
+ ClrTreeNode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrTreeNode, selector: "clr-tree-node", inputs: { selected: ["clrSelected", "selected"], expandable: ["clrExpandable", "expandable"], expanded: ["clrExpanded", "expanded"] }, outputs: { selectedChange: "clrSelectedChange", expandedChange: "clrExpandedChange" }, host: { properties: { "class.clr-tree-node": "true" } }, providers: [TREE_FEATURES_PROVIDER, IfExpandService, { provide: LoadingListener, useExisting: IfExpandService }], queries: [{ propertyName: "treeNodeLinkList", predicate: ClrTreeNodeLink }], viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div\n #contentContainer\n role=\"treeitem\"\n class=\"clr-tree-node-content-container\"\n tabindex=\"-1\"\n [attr.aria-expanded]=\"isExpandable() ? expanded : null\"\n [attr.aria-selected]=\"ariaSelected\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"broadcastFocusOnContainer()\"\n>\n <button\n *ngIf=\"isExpandable() && !isModelLoading && !expandService.loading\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"clr-treenode-caret\"\n (click)=\"expandService.toggle();\"\n (focus)=\"focusTreeNode()\"\n >\n <cds-icon\n class=\"clr-treenode-caret-icon\"\n shape=\"angle\"\n [attr.direction]=\"expandService.expanded ? 'down' : 'right'\"\n ></cds-icon>\n </button>\n <div class=\"clr-treenode-spinner-container\" *ngIf=\"expandService.loading || isModelLoading\">\n <span class=\"clr-treenode-spinner spinner\"></span>\n </div>\n <div class=\"clr-checkbox-wrapper clr-treenode-checkbox\" *ngIf=\"featuresService.selectable\">\n <input\n aria-hidden=\"true\"\n type=\"checkbox\"\n id=\"{{nodeId}}-check\"\n class=\"clr-checkbox\"\n [checked]=\"_model.selected.value === STATES.SELECTED\"\n [indeterminate]=\"_model.selected.value === STATES.INDETERMINATE\"\n (change)=\"_model.toggleSelection(featuresService.eager)\"\n (focus)=\"focusTreeNode()\"\n tabindex=\"-1\"\n />\n <label for=\"{{nodeId}}-check\" class=\"clr-control-label\"></label>\n </div>\n <div class=\"clr-treenode-content\" (mousedown)=\"focusTreeNode()\">\n <ng-content></ng-content>\n <div class=\"clr-sr-only\" *ngIf=\"featuresService.selectable\">\n <span *ngIf=\"ariaSelected\">selected</span>\n <span *ngIf=\"!ariaSelected\">unselected</span>\n </div>\n </div>\n</div>\n<div\n class=\"clr-treenode-children\"\n [@toggleChildrenAnim]=\"expandService.expanded ? 'expanded' : 'collapsed'\"\n [attr.role]=\"isExpandable() && !featuresService.recursion ? 'group' : null\"\n>\n <ng-content select=\"clr-tree-node\"></ng-content>\n <ng-content select=\"[clrIfExpanded]\"></ng-content>\n <clr-recursive-children [parent]=\"_model\"></clr-recursive-children>\n</div>\n", components: [{ type: RecursiveChildren, selector: "clr-recursive-children", inputs: ["parent", "children"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: CdsIconCustomTag, selector: "cds-icon" }], animations: [
19829
19759
  trigger('toggleChildrenAnim', [
19830
19760
  transition('collapsed => expanded', [style({ height: 0 }), animate(200, style({ height: '*' }))]),
19831
19761
  transition('expanded => collapsed', [style({ height: '*' }), animate(200, style({ height: 0 }))]),
@@ -19835,12 +19765,7 @@ ClrTreeNode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "
19835
19765
  ] });
19836
19766
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTreeNode, decorators: [{
19837
19767
  type: Component,
19838
- args: [{ selector: 'clr-tree-node', providers: [
19839
- UNIQUE_ID_PROVIDER,
19840
- TREE_FEATURES_PROVIDER,
19841
- IfExpandService,
19842
- { provide: LoadingListener, useExisting: IfExpandService },
19843
- ], animations: [
19768
+ args: [{ selector: 'clr-tree-node', providers: [TREE_FEATURES_PROVIDER, IfExpandService, { provide: LoadingListener, useExisting: IfExpandService }], animations: [
19844
19769
  trigger('toggleChildrenAnim', [
19845
19770
  transition('collapsed => expanded', [style({ height: 0 }), animate(200, style({ height: '*' }))]),
19846
19771
  transition('expanded => collapsed', [style({ height: '*' }), animate(200, style({ height: 0 }))]),
@@ -19851,9 +19776,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
19851
19776
  '[class.clr-tree-node]': 'true',
19852
19777
  }, template: "<!--\n ~ Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div\n #contentContainer\n role=\"treeitem\"\n class=\"clr-tree-node-content-container\"\n tabindex=\"-1\"\n [attr.aria-expanded]=\"isExpandable() ? expanded : null\"\n [attr.aria-selected]=\"ariaSelected\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"broadcastFocusOnContainer()\"\n>\n <button\n *ngIf=\"isExpandable() && !isModelLoading && !expandService.loading\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"clr-treenode-caret\"\n (click)=\"expandService.toggle();\"\n (focus)=\"focusTreeNode()\"\n >\n <cds-icon\n class=\"clr-treenode-caret-icon\"\n shape=\"angle\"\n [attr.direction]=\"expandService.expanded ? 'down' : 'right'\"\n ></cds-icon>\n </button>\n <div class=\"clr-treenode-spinner-container\" *ngIf=\"expandService.loading || isModelLoading\">\n <span class=\"clr-treenode-spinner spinner\"></span>\n </div>\n <div class=\"clr-checkbox-wrapper clr-treenode-checkbox\" *ngIf=\"featuresService.selectable\">\n <input\n aria-hidden=\"true\"\n type=\"checkbox\"\n id=\"{{nodeId}}-check\"\n class=\"clr-checkbox\"\n [checked]=\"_model.selected.value === STATES.SELECTED\"\n [indeterminate]=\"_model.selected.value === STATES.INDETERMINATE\"\n (change)=\"_model.toggleSelection(featuresService.eager)\"\n (focus)=\"focusTreeNode()\"\n tabindex=\"-1\"\n />\n <label for=\"{{nodeId}}-check\" class=\"clr-control-label\"></label>\n </div>\n <div class=\"clr-treenode-content\" (mousedown)=\"focusTreeNode()\">\n <ng-content></ng-content>\n <div class=\"clr-sr-only\" *ngIf=\"featuresService.selectable\">\n <span *ngIf=\"ariaSelected\">selected</span>\n <span *ngIf=\"!ariaSelected\">unselected</span>\n </div>\n </div>\n</div>\n<div\n class=\"clr-treenode-children\"\n [@toggleChildrenAnim]=\"expandService.expanded ? 'expanded' : 'collapsed'\"\n [attr.role]=\"isExpandable() && !featuresService.recursion ? 'group' : null\"\n>\n <ng-content select=\"clr-tree-node\"></ng-content>\n <ng-content select=\"[clrIfExpanded]\"></ng-content>\n <clr-recursive-children [parent]=\"_model\"></clr-recursive-children>\n</div>\n" }]
19853
19778
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
19854
- type: Inject,
19855
- args: [UNIQUE_ID]
19856
- }] }, { type: undefined, decorators: [{
19857
19779
  type: Inject,
19858
19780
  args: [PLATFORM_ID]
19859
19781
  }] }, { type: ClrTreeNode, decorators: [{
@@ -20063,13 +19985,13 @@ function wrapObservable(observable, onSubscribe, onUnsubscribe) {
20063
19985
  * The full license information can be found in LICENSE in the root directory of this project.
20064
19986
  */
20065
19987
  class DropdownFocusHandler {
20066
- constructor(id, renderer, parent, toggleService, focusService, platformId) {
20067
- this.id = id;
19988
+ constructor(renderer, parent, toggleService, focusService, platformId) {
20068
19989
  this.renderer = renderer;
20069
19990
  this.parent = parent;
20070
19991
  this.toggleService = toggleService;
20071
19992
  this.focusService = focusService;
20072
19993
  this.platformId = platformId;
19994
+ this.id = uniqueIdFactory();
20073
19995
  this._unlistenFuncs = [];
20074
19996
  this.focusBackOnTrigger = false;
20075
19997
  this.resetChildren();
@@ -20216,14 +20138,11 @@ class DropdownFocusHandler {
20216
20138
  this.focusService.detachListeners();
20217
20139
  }
20218
20140
  }
20219
- DropdownFocusHandler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DropdownFocusHandler, deps: [{ token: UNIQUE_ID }, { token: i0.Renderer2 }, { token: DropdownFocusHandler, optional: true, skipSelf: true }, { token: ClrPopoverToggleService }, { token: FocusService$1 }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
20141
+ DropdownFocusHandler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DropdownFocusHandler, deps: [{ token: i0.Renderer2 }, { token: DropdownFocusHandler, optional: true, skipSelf: true }, { token: ClrPopoverToggleService }, { token: FocusService$1 }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
20220
20142
  DropdownFocusHandler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DropdownFocusHandler });
20221
20143
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DropdownFocusHandler, decorators: [{
20222
20144
  type: Injectable
20223
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
20224
- type: Inject,
20225
- args: [UNIQUE_ID]
20226
- }] }, { type: i0.Renderer2 }, { type: DropdownFocusHandler, decorators: [{
20145
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: DropdownFocusHandler, decorators: [{
20227
20146
  type: SkipSelf
20228
20147
  }, {
20229
20148
  type: Optional
@@ -20322,13 +20241,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
20322
20241
  * The full license information can be found in LICENSE in the root directory of this project.
20323
20242
  */
20324
20243
  class BasicFocusableItem {
20325
- constructor(id, el, renderer, platformId) {
20326
- this.id = id;
20244
+ constructor(el, renderer, platformId) {
20327
20245
  this.el = el;
20328
20246
  this.renderer = renderer;
20329
20247
  this.platformId = platformId;
20248
+ this.id = uniqueIdFactory();
20330
20249
  this.disabled = false;
20331
- renderer.setAttribute(el.nativeElement, 'id', id);
20250
+ renderer.setAttribute(el.nativeElement, 'id', this.id);
20332
20251
  renderer.setAttribute(el.nativeElement, 'tabindex', '-1');
20333
20252
  }
20334
20253
  focus() {
@@ -20350,19 +20269,15 @@ class BasicFocusableItem {
20350
20269
  }
20351
20270
  }
20352
20271
  }
20353
- BasicFocusableItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BasicFocusableItem, deps: [{ token: UNIQUE_ID }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
20272
+ BasicFocusableItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BasicFocusableItem, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
20354
20273
  BasicFocusableItem.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BasicFocusableItem });
20355
20274
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BasicFocusableItem, decorators: [{
20356
20275
  type: Injectable
20357
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
20358
- type: Inject,
20359
- args: [UNIQUE_ID]
20360
- }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
20276
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
20361
20277
  type: Inject,
20362
20278
  args: [PLATFORM_ID]
20363
20279
  }] }]; } });
20364
20280
  const BASIC_FOCUSABLE_ITEM_PROVIDER = [
20365
- UNIQUE_ID_PROVIDER,
20366
20281
  {
20367
20282
  provide: FocusableItem,
20368
20283
  useClass: BasicFocusableItem,
@@ -22451,10 +22366,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
22451
22366
  */
22452
22367
  let nbTabContentComponents = 0;
22453
22368
  class ClrTabContent {
22454
- constructor(ifActiveService, id, ariaService, tabsService) {
22369
+ constructor(ifActiveService, id, tabsService) {
22455
22370
  this.ifActiveService = ifActiveService;
22456
22371
  this.id = id;
22457
- this.ariaService = ariaService;
22458
22372
  this.tabsService = tabsService;
22459
22373
  if (!this.tabContentId) {
22460
22374
  this.tabContentId = 'clr-tab-content-' + nbTabContentComponents++;
@@ -22467,13 +22381,7 @@ class ClrTabContent {
22467
22381
  this.viewRef = this.tabsService.tabContentViewContainer.createEmbeddedView(value);
22468
22382
  }
22469
22383
  get ariaLabelledBy() {
22470
- return this.ariaService.ariaLabelledBy;
22471
- }
22472
- get tabContentId() {
22473
- return this.ariaService.ariaControls;
22474
- }
22475
- set tabContentId(id) {
22476
- this.ariaService.ariaControls = id;
22384
+ return this.tabsService.children.find(tab => tab.tabContent === this)?.tabLink?.tabLinkId;
22477
22385
  }
22478
22386
  get active() {
22479
22387
  return this.ifActiveService.current === this.id;
@@ -22485,7 +22393,7 @@ class ClrTabContent {
22485
22393
  }
22486
22394
  }
22487
22395
  }
22488
- ClrTabContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTabContent, deps: [{ token: IfActiveService }, { token: IF_ACTIVE_ID }, { token: AriaService }, { token: TabsService }], target: i0.ɵɵFactoryTarget.Component });
22396
+ ClrTabContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTabContent, deps: [{ token: IfActiveService }, { token: IF_ACTIVE_ID }, { token: TabsService }], target: i0.ɵɵFactoryTarget.Component });
22489
22397
  ClrTabContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrTabContent, selector: "clr-tab-content", inputs: { tabContentId: ["id", "tabContentId"] }, viewQueries: [{ propertyName: "templateRef", first: true, predicate: ["tabContentProjectedRef"], descendants: true, static: true }], ngImport: i0, template: `
22490
22398
  <ng-template #tabContentProjectedRef>
22491
22399
  <section
@@ -22524,7 +22432,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
22524
22432
  }], ctorParameters: function () { return [{ type: IfActiveService }, { type: undefined, decorators: [{
22525
22433
  type: Inject,
22526
22434
  args: [IF_ACTIVE_ID]
22527
- }] }, { type: AriaService }, { type: TabsService }]; }, propDecorators: { templateRef: [{
22435
+ }] }, { type: TabsService }]; }, propDecorators: { templateRef: [{
22528
22436
  type: ViewChild,
22529
22437
  args: ['tabContentProjectedRef', { static: true }]
22530
22438
  }], tabContentId: [{
@@ -22554,10 +22462,9 @@ const TABS_ID_PROVIDER = {
22554
22462
  */
22555
22463
  let nbTabLinkComponents = 0;
22556
22464
  class ClrTabLink {
22557
- constructor(ifActiveService, id, ariaService, el, cfr, viewContainerRef, tabsService, tabsId) {
22465
+ constructor(ifActiveService, id, el, cfr, viewContainerRef, tabsService, tabsId) {
22558
22466
  this.ifActiveService = ifActiveService;
22559
22467
  this.id = id;
22560
- this.ariaService = ariaService;
22561
22468
  this.el = el;
22562
22469
  this.cfr = cfr;
22563
22470
  this.viewContainerRef = viewContainerRef;
@@ -22584,13 +22491,7 @@ class ClrTabLink {
22584
22491
  return !this.inOverflow;
22585
22492
  }
22586
22493
  get ariaControls() {
22587
- return this.ariaService.ariaControls;
22588
- }
22589
- get tabLinkId() {
22590
- return this.ariaService.ariaLabelledBy;
22591
- }
22592
- set tabLinkId(id) {
22593
- this.ariaService.ariaLabelledBy = id;
22494
+ return this.tabsService.children.find(tab => tab.tabLink === this)?.tabContent?.tabContentId;
22594
22495
  }
22595
22496
  activate() {
22596
22497
  this.ifActiveService.current = this.id;
@@ -22602,7 +22503,7 @@ class ClrTabLink {
22602
22503
  return this.active ? 0 : -1;
22603
22504
  }
22604
22505
  }
22605
- ClrTabLink.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTabLink, deps: [{ token: IfActiveService }, { token: IF_ACTIVE_ID }, { token: AriaService }, { token: i0.ElementRef }, { token: i0.ComponentFactoryResolver }, { token: i0.ViewContainerRef }, { token: TabsService }, { token: TABS_ID }], target: i0.ɵɵFactoryTarget.Directive });
22506
+ ClrTabLink.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTabLink, deps: [{ token: IfActiveService }, { token: IF_ACTIVE_ID }, { token: i0.ElementRef }, { token: i0.ComponentFactoryResolver }, { token: i0.ViewContainerRef }, { token: TabsService }, { token: TABS_ID }], target: i0.ɵɵFactoryTarget.Directive });
22606
22507
  ClrTabLink.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: ClrTabLink, selector: "[clrTabLink]", inputs: { inOverflow: ["clrTabLinkInOverflow", "inOverflow"], tabLinkId: ["id", "tabLinkId"] }, host: { attributes: { "role": "tab", "type": "button" }, listeners: { "click": "activate()" }, properties: { "class.btn": "true", "class.btn-link": "this.addLinkClasses", "class.nav-link": "this.addLinkClasses", "attr.aria-controls": "this.ariaControls", "id": "this.tabLinkId", "class.active": "this.active", "attr.aria-selected": "this.active", "attr.tabindex": "this.tabindex" } }, ngImport: i0 });
22607
22508
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTabLink, decorators: [{
22608
22509
  type: Directive,
@@ -22617,7 +22518,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
22617
22518
  }], ctorParameters: function () { return [{ type: IfActiveService }, { type: undefined, decorators: [{
22618
22519
  type: Inject,
22619
22520
  args: [IF_ACTIVE_ID]
22620
- }] }, { type: AriaService }, { type: i0.ElementRef }, { type: i0.ComponentFactoryResolver }, { type: i0.ViewContainerRef }, { type: TabsService }, { type: undefined, decorators: [{
22521
+ }] }, { type: i0.ElementRef }, { type: i0.ComponentFactoryResolver }, { type: i0.ViewContainerRef }, { type: TabsService }, { type: undefined, decorators: [{
22621
22522
  type: Inject,
22622
22523
  args: [TABS_ID]
22623
22524
  }] }]; }, propDecorators: { inOverflow: [{
@@ -22672,13 +22573,13 @@ class ClrTab {
22672
22573
  }
22673
22574
  }
22674
22575
  ClrTab.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTab, deps: [{ token: IfActiveService }, { token: IF_ACTIVE_ID }, { token: TabsService }], target: i0.ɵɵFactoryTarget.Component });
22675
- ClrTab.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrTab, selector: "clr-tab", providers: [IF_ACTIVE_ID_PROVIDER, AriaService], queries: [{ propertyName: "tabLink", first: true, predicate: ClrTabLink, descendants: true, static: true }, { propertyName: "tabContent", first: true, predicate: ClrTabContent, descendants: true, static: true }], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
22576
+ ClrTab.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrTab, selector: "clr-tab", providers: [IF_ACTIVE_ID_PROVIDER], queries: [{ propertyName: "tabLink", first: true, predicate: ClrTabLink, descendants: true, static: true }, { propertyName: "tabContent", first: true, predicate: ClrTabContent, descendants: true, static: true }], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
22676
22577
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTab, decorators: [{
22677
22578
  type: Component,
22678
22579
  args: [{
22679
22580
  selector: 'clr-tab',
22680
22581
  template: `<ng-content></ng-content>`,
22681
- providers: [IF_ACTIVE_ID_PROVIDER, AriaService],
22582
+ providers: [IF_ACTIVE_ID_PROVIDER],
22682
22583
  }]
22683
22584
  }], ctorParameters: function () { return [{ type: IfActiveService }, { type: undefined, decorators: [{
22684
22585
  type: Inject,
@@ -23564,10 +23465,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
23564
23465
  * The full license information can be found in LICENSE in the root directory of this project.
23565
23466
  */
23566
23467
  class ClrModal {
23567
- constructor(_scrollingService, commonStrings, modalId) {
23468
+ constructor(_scrollingService, commonStrings) {
23568
23469
  this._scrollingService = _scrollingService;
23569
23470
  this.commonStrings = commonStrings;
23570
- this.modalId = modalId;
23471
+ this.modalId = uniqueIdFactory();
23571
23472
  this._open = false;
23572
23473
  this._openChanged = new EventEmitter(false);
23573
23474
  this.closable = true;
@@ -23620,8 +23521,8 @@ class ClrModal {
23620
23521
  }
23621
23522
  }
23622
23523
  }
23623
- ClrModal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrModal, deps: [{ token: ScrollingService }, { token: ClrCommonStringsService }, { token: UNIQUE_ID }], target: i0.ɵɵFactoryTarget.Component });
23624
- ClrModal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrModal, selector: "clr-modal", inputs: { _open: ["clrModalOpen", "_open"], closable: ["clrModalClosable", "closable"], closeButtonAriaLabel: ["clrModalCloseButtonAriaLabel", "closeButtonAriaLabel"], size: ["clrModalSize", "size"], staticBackdrop: ["clrModalStaticBackdrop", "staticBackdrop"], skipAnimation: ["clrModalSkipAnimation", "skipAnimation"], bypassScrollService: ["clrModalOverrideScrollService", "bypassScrollService"], stopClose: ["clrModalPreventClose", "stopClose"], labelledBy: ["clrModalLabelledById", "labelledBy"] }, outputs: { _openChanged: "clrModalOpenChange", altClose: "clrModalAlternateClose" }, host: { listeners: { "body:keyup.escape": "close()" }, properties: { "class.open": "this._open" } }, providers: [UNIQUE_ID_PROVIDER], viewQueries: [{ propertyName: "focusTrap", first: true, predicate: FocusTrapDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div clrFocusTrap class=\"modal\" *ngIf=\"_open\">\n <!--fixme: revisit when ngClass works with exit animation-->\n <div\n [@fadeDown]=\"skipAnimation\"\n (@fadeDown.done)=\"fadeDone($event)\"\n class=\"modal-dialog\"\n [class.modal-sm]=\"size == 'sm'\"\n [class.modal-lg]=\"size == 'lg'\"\n [class.modal-xl]=\"size == 'xl'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!_open\"\n [attr.aria-labelledby]=\"labelledBy\"\n >\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n <div class=\"modal-content-wrapper\">\n <!-- only used in wizards -->\n <ng-content select=\".modal-nav\"></ng-content>\n\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <div class=\"modal-title-wrapper\" id=\"{{modalId}}\" clrFocusOnViewInit>\n <ng-content select=\".modal-title\"></ng-content>\n </div>\n <button\n type=\"button\"\n [attr.aria-label]=\"closeButtonAriaLabel || commonStrings.keys.close\"\n class=\"close\"\n *ngIf=\"closable\"\n (click)=\"close()\"\n >\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n </div>\n <div class=\"modal-body-wrapper\">\n <ng-content select=\".modal-body\"></ng-content>\n </div>\n <ng-content select=\".modal-footer\"></ng-content>\n </div>\n </div>\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n </div>\n\n <div [@fade] class=\"modal-backdrop\" aria-hidden=\"true\" (click)=\"staticBackdrop || close()\"></div>\n</div>\n", styles: [":host{display:none}:host.open{display:inline}\n"], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: FocusTrapDirective, selector: "[clrFocusTrap]", inputs: ["clrFocusTrap"] }, { type: ClrFocusOnViewInit, selector: "[clrFocusOnViewInit]", inputs: ["clrFocusOnViewInit"] }, { type: CdsIconCustomTag, selector: "cds-icon" }], viewProviders: [ScrollingService], animations: [
23524
+ ClrModal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrModal, deps: [{ token: ScrollingService }, { token: ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component });
23525
+ ClrModal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrModal, selector: "clr-modal", inputs: { _open: ["clrModalOpen", "_open"], closable: ["clrModalClosable", "closable"], closeButtonAriaLabel: ["clrModalCloseButtonAriaLabel", "closeButtonAriaLabel"], size: ["clrModalSize", "size"], staticBackdrop: ["clrModalStaticBackdrop", "staticBackdrop"], skipAnimation: ["clrModalSkipAnimation", "skipAnimation"], bypassScrollService: ["clrModalOverrideScrollService", "bypassScrollService"], stopClose: ["clrModalPreventClose", "stopClose"], labelledBy: ["clrModalLabelledById", "labelledBy"] }, outputs: { _openChanged: "clrModalOpenChange", altClose: "clrModalAlternateClose" }, host: { listeners: { "body:keyup.escape": "close()" }, properties: { "class.open": "this._open" } }, viewQueries: [{ propertyName: "focusTrap", first: true, predicate: FocusTrapDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div clrFocusTrap class=\"modal\" *ngIf=\"_open\">\n <!--fixme: revisit when ngClass works with exit animation-->\n <div\n [@fadeDown]=\"skipAnimation\"\n (@fadeDown.done)=\"fadeDone($event)\"\n class=\"modal-dialog\"\n [class.modal-sm]=\"size == 'sm'\"\n [class.modal-lg]=\"size == 'lg'\"\n [class.modal-xl]=\"size == 'xl'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!_open\"\n [attr.aria-labelledby]=\"labelledBy\"\n >\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n <div class=\"modal-content-wrapper\">\n <!-- only used in wizards -->\n <ng-content select=\".modal-nav\"></ng-content>\n\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <div class=\"modal-title-wrapper\" id=\"{{modalId}}\" clrFocusOnViewInit>\n <ng-content select=\".modal-title\"></ng-content>\n </div>\n <button\n type=\"button\"\n [attr.aria-label]=\"closeButtonAriaLabel || commonStrings.keys.close\"\n class=\"close\"\n *ngIf=\"closable\"\n (click)=\"close()\"\n >\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n </div>\n <div class=\"modal-body-wrapper\">\n <ng-content select=\".modal-body\"></ng-content>\n </div>\n <ng-content select=\".modal-footer\"></ng-content>\n </div>\n </div>\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n </div>\n\n <div [@fade] class=\"modal-backdrop\" aria-hidden=\"true\" (click)=\"staticBackdrop || close()\"></div>\n</div>\n", styles: [":host{display:none}:host.open{display:inline}\n"], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: FocusTrapDirective, selector: "[clrFocusTrap]", inputs: ["clrFocusTrap"] }, { type: ClrFocusOnViewInit, selector: "[clrFocusOnViewInit]", inputs: ["clrFocusOnViewInit"] }, { type: CdsIconCustomTag, selector: "cds-icon" }], viewProviders: [ScrollingService], animations: [
23625
23526
  trigger('fadeDown', [
23626
23527
  transition('* => false', [style({ opacity: 0, transform: 'translate(0, -25%)' }), animate('0.2s ease-in-out')]),
23627
23528
  transition('false => *', [animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(0, -25%)' }))]),
@@ -23651,11 +23552,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
23651
23552
  transition('void => *', [style({ opacity: 0 }), animate('0.2s ease-in-out', style({ opacity: 0.85 }))]),
23652
23553
  transition('* => void', [animate('0.2s ease-in-out', style({ opacity: 0 }))]),
23653
23554
  ]),
23654
- ], providers: [UNIQUE_ID_PROVIDER], template: "<!--\n ~ Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div clrFocusTrap class=\"modal\" *ngIf=\"_open\">\n <!--fixme: revisit when ngClass works with exit animation-->\n <div\n [@fadeDown]=\"skipAnimation\"\n (@fadeDown.done)=\"fadeDone($event)\"\n class=\"modal-dialog\"\n [class.modal-sm]=\"size == 'sm'\"\n [class.modal-lg]=\"size == 'lg'\"\n [class.modal-xl]=\"size == 'xl'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!_open\"\n [attr.aria-labelledby]=\"labelledBy\"\n >\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n <div class=\"modal-content-wrapper\">\n <!-- only used in wizards -->\n <ng-content select=\".modal-nav\"></ng-content>\n\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <div class=\"modal-title-wrapper\" id=\"{{modalId}}\" clrFocusOnViewInit>\n <ng-content select=\".modal-title\"></ng-content>\n </div>\n <button\n type=\"button\"\n [attr.aria-label]=\"closeButtonAriaLabel || commonStrings.keys.close\"\n class=\"close\"\n *ngIf=\"closable\"\n (click)=\"close()\"\n >\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n </div>\n <div class=\"modal-body-wrapper\">\n <ng-content select=\".modal-body\"></ng-content>\n </div>\n <ng-content select=\".modal-footer\"></ng-content>\n </div>\n </div>\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n </div>\n\n <div [@fade] class=\"modal-backdrop\" aria-hidden=\"true\" (click)=\"staticBackdrop || close()\"></div>\n</div>\n" }]
23655
- }], ctorParameters: function () { return [{ type: ScrollingService }, { type: ClrCommonStringsService }, { type: undefined, decorators: [{
23656
- type: Inject,
23657
- args: [UNIQUE_ID]
23658
- }] }]; }, propDecorators: { focusTrap: [{
23555
+ ], template: "<!--\n ~ Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div clrFocusTrap class=\"modal\" *ngIf=\"_open\">\n <!--fixme: revisit when ngClass works with exit animation-->\n <div\n [@fadeDown]=\"skipAnimation\"\n (@fadeDown.done)=\"fadeDone($event)\"\n class=\"modal-dialog\"\n [class.modal-sm]=\"size == 'sm'\"\n [class.modal-lg]=\"size == 'lg'\"\n [class.modal-xl]=\"size == 'xl'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!_open\"\n [attr.aria-labelledby]=\"labelledBy\"\n >\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n <div class=\"modal-content-wrapper\">\n <!-- only used in wizards -->\n <ng-content select=\".modal-nav\"></ng-content>\n\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <div class=\"modal-title-wrapper\" id=\"{{modalId}}\" clrFocusOnViewInit>\n <ng-content select=\".modal-title\"></ng-content>\n </div>\n <button\n type=\"button\"\n [attr.aria-label]=\"closeButtonAriaLabel || commonStrings.keys.close\"\n class=\"close\"\n *ngIf=\"closable\"\n (click)=\"close()\"\n >\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n </div>\n <div class=\"modal-body-wrapper\">\n <ng-content select=\".modal-body\"></ng-content>\n </div>\n <ng-content select=\".modal-footer\"></ng-content>\n </div>\n </div>\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n </div>\n\n <div [@fade] class=\"modal-backdrop\" aria-hidden=\"true\" (click)=\"staticBackdrop || close()\"></div>\n</div>\n" }]
23556
+ }], ctorParameters: function () { return [{ type: ScrollingService }, { type: ClrCommonStringsService }]; }, propDecorators: { focusTrap: [{
23659
23557
  type: ViewChild,
23660
23558
  args: [FocusTrapDirective]
23661
23559
  }], _open: [{
@@ -23826,20 +23724,20 @@ const POSITIONS$1 = [
23826
23724
  'left-top',
23827
23725
  ];
23828
23726
  class ClrSignpostContent extends AbstractPopover {
23829
- constructor(injector, parentHost, commonStrings, signpostContentId, signpostIdService, signpostFocusManager, platformId, document) {
23727
+ constructor(injector, parentHost, commonStrings, signpostIdService, signpostFocusManager, platformId, document) {
23830
23728
  super(injector, parentHost);
23831
23729
  this.commonStrings = commonStrings;
23832
- this.signpostContentId = signpostContentId;
23833
23730
  this.signpostIdService = signpostIdService;
23834
23731
  this.signpostFocusManager = signpostFocusManager;
23835
23732
  this.platformId = platformId;
23733
+ this.signpostContentId = uniqueIdFactory();
23836
23734
  if (!parentHost) {
23837
23735
  throw new Error('clr-signpost-content should only be used inside of a clr-signpost');
23838
23736
  }
23839
23737
  // Defaults
23840
23738
  this.position = 'right-middle';
23841
23739
  this.closeOnOutsideClick = true;
23842
- this.signpostIdService.setId(signpostContentId);
23740
+ this.signpostIdService.setId(this.signpostContentId);
23843
23741
  this.document = document;
23844
23742
  }
23845
23743
  /**********
@@ -23907,8 +23805,8 @@ class ClrSignpostContent extends AbstractPopover {
23907
23805
  }
23908
23806
  }
23909
23807
  }
23910
- ClrSignpostContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrSignpostContent, deps: [{ token: i0.Injector }, { token: POPOVER_HOST_ANCHOR, optional: true }, { token: ClrCommonStringsService }, { token: UNIQUE_ID }, { token: SignpostIdService }, { token: SignpostFocusManager }, { token: PLATFORM_ID }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
23911
- ClrSignpostContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrSignpostContent, selector: "clr-signpost-content", inputs: { position: ["clrPosition", "position"] }, host: { properties: { "class.signpost-content": "true", "id": "signpostContentId" } }, providers: [UNIQUE_ID_PROVIDER], usesInheritance: true, ngImport: i0, template: `
23808
+ ClrSignpostContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrSignpostContent, deps: [{ token: i0.Injector }, { token: POPOVER_HOST_ANCHOR, optional: true }, { token: ClrCommonStringsService }, { token: SignpostIdService }, { token: SignpostFocusManager }, { token: PLATFORM_ID }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
23809
+ ClrSignpostContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrSignpostContent, selector: "clr-signpost-content", inputs: { position: ["clrPosition", "position"] }, host: { properties: { "class.signpost-content": "true", "id": "signpostContentId" } }, usesInheritance: true, ngImport: i0, template: `
23912
23810
  <div class="signpost-wrap">
23913
23811
  <div class="popover-pointer"></div>
23914
23812
  <div class="signpost-content-header">
@@ -23951,17 +23849,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
23951
23849
  </div>
23952
23850
  `,
23953
23851
  host: { '[class.signpost-content]': 'true', '[id]': 'signpostContentId' },
23954
- providers: [UNIQUE_ID_PROVIDER],
23955
23852
  }]
23956
23853
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ElementRef, decorators: [{
23957
23854
  type: Optional
23958
23855
  }, {
23959
23856
  type: Inject,
23960
23857
  args: [POPOVER_HOST_ANCHOR]
23961
- }] }, { type: ClrCommonStringsService }, { type: undefined, decorators: [{
23962
- type: Inject,
23963
- args: [UNIQUE_ID]
23964
- }] }, { type: SignpostIdService }, { type: SignpostFocusManager }, { type: undefined, decorators: [{
23858
+ }] }, { type: ClrCommonStringsService }, { type: SignpostIdService }, { type: SignpostFocusManager }, { type: undefined, decorators: [{
23965
23859
  type: Inject,
23966
23860
  args: [PLATFORM_ID]
23967
23861
  }] }, { type: undefined, decorators: [{
@@ -24025,14 +23919,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
24025
23919
  class ClrTooltip {
24026
23920
  }
24027
23921
  ClrTooltip.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTooltip, deps: [], target: i0.ɵɵFactoryTarget.Component });
24028
- ClrTooltip.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrTooltip, selector: "clr-tooltip", host: { properties: { "class.tooltip": "true" } }, providers: [
24029
- ClrPopoverToggleService,
24030
- { provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef },
24031
- // TODO: consider centralizing the unique id string on a service that provides ariaAttributes that need it
24032
- // AriaService in layout/tabs/providers might be a good starting point.
24033
- UNIQUE_ID_PROVIDER,
24034
- TooltipIdService,
24035
- ], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
23922
+ ClrTooltip.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrTooltip, selector: "clr-tooltip", host: { properties: { "class.tooltip": "true" } }, providers: [ClrPopoverToggleService, { provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef }, TooltipIdService], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
24036
23923
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTooltip, decorators: [{
24037
23924
  type: Component,
24038
23925
  args: [{
@@ -24041,14 +23928,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
24041
23928
  host: {
24042
23929
  '[class.tooltip]': 'true',
24043
23930
  },
24044
- providers: [
24045
- ClrPopoverToggleService,
24046
- { provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef },
24047
- // TODO: consider centralizing the unique id string on a service that provides ariaAttributes that need it
24048
- // AriaService in layout/tabs/providers might be a good starting point.
24049
- UNIQUE_ID_PROVIDER,
24050
- TooltipIdService,
24051
- ],
23931
+ providers: [ClrPopoverToggleService, { provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef }, TooltipIdService],
24052
23932
  }]
24053
23933
  }] });
24054
23934
 
@@ -24071,9 +23951,8 @@ const SIZES = ['xs', 'sm', 'md', 'lg'];
24071
23951
  const defaultPosition = 'right';
24072
23952
  const defaultSize = 'sm';
24073
23953
  class ClrTooltipContent extends AbstractPopover {
24074
- constructor(injector, parentHost, uniqueId, tooltipIdService) {
23954
+ constructor(injector, parentHost, tooltipIdService) {
24075
23955
  super(injector, parentHost);
24076
- this.uniqueId = uniqueId;
24077
23956
  this.tooltipIdService = tooltipIdService;
24078
23957
  this._position = defaultPosition;
24079
23958
  this._size = defaultSize;
@@ -24081,7 +23960,7 @@ class ClrTooltipContent extends AbstractPopover {
24081
23960
  throw new Error('clr-tooltip-content should only be used inside of a clr-tooltip');
24082
23961
  }
24083
23962
  // Set the default id in case consumer does not supply a custom id.
24084
- this.id = uniqueId;
23963
+ this.id = uniqueIdFactory();
24085
23964
  }
24086
23965
  get id() {
24087
23966
  return this._id;
@@ -24143,7 +24022,7 @@ class ClrTooltipContent extends AbstractPopover {
24143
24022
  this.renderer.addClass(this.el.nativeElement, newClass);
24144
24023
  }
24145
24024
  }
24146
- ClrTooltipContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTooltipContent, deps: [{ token: i0.Injector }, { token: POPOVER_HOST_ANCHOR, optional: true }, { token: UNIQUE_ID }, { token: TooltipIdService }], target: i0.ɵɵFactoryTarget.Component });
24025
+ ClrTooltipContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTooltipContent, deps: [{ token: i0.Injector }, { token: POPOVER_HOST_ANCHOR, optional: true }, { token: TooltipIdService }], target: i0.ɵɵFactoryTarget.Component });
24147
24026
  ClrTooltipContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrTooltipContent, selector: "clr-tooltip-content", inputs: { id: "id", position: ["clrPosition", "position"], size: ["clrSize", "size"] }, host: { properties: { "class.tooltip-content": "true", "style.opacity": "1", "attr.role": "\"tooltip\"", "id": "id" } }, usesInheritance: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
24148
24027
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTooltipContent, decorators: [{
24149
24028
  type: Component,
@@ -24162,9 +24041,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
24162
24041
  }, {
24163
24042
  type: Inject,
24164
24043
  args: [POPOVER_HOST_ANCHOR]
24165
- }] }, { type: undefined, decorators: [{
24166
- type: Inject,
24167
- args: [UNIQUE_ID]
24168
24044
  }] }, { type: TooltipIdService }]; }, propDecorators: { id: [{
24169
24045
  type: Input
24170
24046
  }], position: [{
@@ -26762,14 +26638,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
26762
26638
  * The full license information can be found in LICENSE in the root directory of this project.
26763
26639
  */
26764
26640
  class ClrWizard {
26765
- constructor(platformId, navService, pageCollection, buttonService, headerActionService, elementRef, differs, wizardId) {
26641
+ constructor(platformId, navService, pageCollection, buttonService, headerActionService, elementRef, differs) {
26766
26642
  this.platformId = platformId;
26767
26643
  this.navService = navService;
26768
26644
  this.pageCollection = pageCollection;
26769
26645
  this.buttonService = buttonService;
26770
26646
  this.headerActionService = headerActionService;
26771
26647
  this.elementRef = elementRef;
26772
- this.wizardId = wizardId;
26773
26648
  /**
26774
26649
  * Set the modal size of the wizard. Set using `[clrWizardSize]` input.
26775
26650
  */
@@ -26829,6 +26704,7 @@ class ClrWizard {
26829
26704
  * Listen via `(clrWizardOnPrevious)` event.
26830
26705
  */
26831
26706
  this.onMovePrevious = new EventEmitter(false);
26707
+ this.wizardId = uniqueIdFactory();
26832
26708
  this.subscriptions = [];
26833
26709
  this.subscriptions.push(this.listenForNextPageChanges(), this.listenForPreviousPageChanges(), this.listenForCancelChanges(), this.listenForFinishedChanges(), this.listenForPageChanges());
26834
26710
  this.differ = differs.find([]).create(null);
@@ -27147,23 +27023,11 @@ class ClrWizard {
27147
27023
  this.wizardFinished.emit();
27148
27024
  }
27149
27025
  }
27150
- ClrWizard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrWizard, deps: [{ token: PLATFORM_ID }, { token: WizardNavigationService }, { token: PageCollectionService }, { token: ButtonHubService }, { token: HeaderActionService }, { token: i0.ElementRef }, { token: i0.IterableDiffers }, { token: UNIQUE_ID }], target: i0.ɵɵFactoryTarget.Component });
27151
- ClrWizard.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrWizard, selector: "clr-wizard", inputs: { size: ["clrWizardSize", "size"], closable: ["clrWizardClosable", "closable"], forceForward: ["clrWizardForceForwardNavigation", "forceForward"], clrWizardOpen: "clrWizardOpen", stopNext: ["clrWizardPreventDefaultNext", "stopNext"], stopCancel: ["clrWizardPreventDefaultCancel", "stopCancel"], stopNavigation: ["clrWizardPreventNavigation", "stopNavigation"], disableStepnav: ["clrWizardDisableStepnav", "disableStepnav"], _stopModalAnimations: ["clrWizardPreventModalAnimation", "_stopModalAnimations"] }, 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.lastPage": "navService.currentPageIsLast" } }, providers: [
27152
- WizardNavigationService,
27153
- PageCollectionService,
27154
- ButtonHubService,
27155
- HeaderActionService,
27156
- UNIQUE_ID_PROVIDER,
27157
- ], queries: [{ propertyName: "pages", predicate: ClrWizardPage, descendants: true }, { propertyName: "headerActions", predicate: ClrWizardHeaderAction }], viewQueries: [{ propertyName: "wizardTitle", first: true, predicate: ["wizardTitle"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<clr-modal\n [clrModalOpen]=\"_open\"\n [clrModalSize]=\"size\"\n [clrModalClosable]=\"closable\"\n [clrModalStaticBackdrop]=\"true\"\n [clrModalSkipAnimation]=\"stopModalAnimations\"\n [clrModalOverrideScrollService]=\"isStatic\"\n [clrModalPreventClose]=\"true\"\n (clrModalAlternateClose)=\"modalCancel()\"\n [clrModalLabelledById]=\"wizardId\"\n>\n <nav class=\"modal-nav clr-wizard-stepnav-wrapper\">\n <h1 class=\"clr-wizard-title\" id=\"{{wizardId}}\"><ng-content select=\"clr-wizard-title\"></ng-content></h1>\n <clr-wizard-stepnav></clr-wizard-stepnav>\n </nav>\n\n <h2 class=\"modal-title\">\n <span tabindex=\"-1\" #wizardTitle class=\"modal-title-text\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPageTitle\"></ng-template>\n </span>\n\n <div class=\"modal-header-actions-wrapper\" *ngIf=\"headerActionService.displayHeaderActionsWrapper\">\n <div *ngIf=\"headerActionService.showWizardHeaderActions\">\n <ng-content select=\"clr-wizard-header-action\"></ng-content>\n </div>\n <div *ngIf=\"headerActionService.currentPageHasHeaderActions\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.headerActions\"></ng-template>\n </div>\n </div>\n </h2>\n\n <div class=\"modal-body\">\n <main clr-wizard-pages-wrapper class=\"clr-wizard-content\">\n <ng-content></ng-content>\n </main>\n </div>\n <div class=\"modal-footer clr-wizard-footer\">\n <div class=\"clr-wizard-footer-buttons\">\n <div\n *ngIf=\"navService.currentPage && !navService.currentPage.hasButtons\"\n class=\"clr-wizard-footer-buttons-wrapper\"\n >\n <ng-content select=\"clr-wizard-button\"></ng-content>\n </div>\n <div\n *ngIf=\"navService.currentPage && navService.currentPage.hasButtons\"\n class=\"clr-wizard-footer-buttons-wrapper\"\n >\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.buttons\"></ng-template>\n </div>\n </div>\n </div>\n</clr-modal>\n", components: [{ type: ClrModal, selector: "clr-modal", inputs: ["clrModalOpen", "clrModalClosable", "clrModalCloseButtonAriaLabel", "clrModalSize", "clrModalStaticBackdrop", "clrModalSkipAnimation", "clrModalOverrideScrollService", "clrModalPreventClose", "clrModalLabelledById"], outputs: ["clrModalOpenChange", "clrModalAlternateClose"] }, { type: ClrWizardStepnav, selector: "clr-wizard-stepnav" }], directives: [{ type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: ClrModalBody, selector: ".modal-body" }] });
27026
+ ClrWizard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrWizard, deps: [{ token: PLATFORM_ID }, { token: WizardNavigationService }, { token: PageCollectionService }, { token: ButtonHubService }, { token: HeaderActionService }, { token: i0.ElementRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Component });
27027
+ ClrWizard.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrWizard, selector: "clr-wizard", inputs: { size: ["clrWizardSize", "size"], closable: ["clrWizardClosable", "closable"], forceForward: ["clrWizardForceForwardNavigation", "forceForward"], clrWizardOpen: "clrWizardOpen", stopNext: ["clrWizardPreventDefaultNext", "stopNext"], stopCancel: ["clrWizardPreventDefaultCancel", "stopCancel"], stopNavigation: ["clrWizardPreventNavigation", "stopNavigation"], disableStepnav: ["clrWizardDisableStepnav", "disableStepnav"], _stopModalAnimations: ["clrWizardPreventModalAnimation", "_stopModalAnimations"] }, 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.lastPage": "navService.currentPageIsLast" } }, providers: [WizardNavigationService, PageCollectionService, ButtonHubService, HeaderActionService], queries: [{ propertyName: "pages", predicate: ClrWizardPage, descendants: true }, { propertyName: "headerActions", predicate: ClrWizardHeaderAction }], viewQueries: [{ propertyName: "wizardTitle", first: true, predicate: ["wizardTitle"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<clr-modal\n [clrModalOpen]=\"_open\"\n [clrModalSize]=\"size\"\n [clrModalClosable]=\"closable\"\n [clrModalStaticBackdrop]=\"true\"\n [clrModalSkipAnimation]=\"stopModalAnimations\"\n [clrModalOverrideScrollService]=\"isStatic\"\n [clrModalPreventClose]=\"true\"\n (clrModalAlternateClose)=\"modalCancel()\"\n [clrModalLabelledById]=\"wizardId\"\n>\n <nav class=\"modal-nav clr-wizard-stepnav-wrapper\">\n <h1 class=\"clr-wizard-title\" id=\"{{wizardId}}\"><ng-content select=\"clr-wizard-title\"></ng-content></h1>\n <clr-wizard-stepnav></clr-wizard-stepnav>\n </nav>\n\n <h2 class=\"modal-title\">\n <span tabindex=\"-1\" #wizardTitle class=\"modal-title-text\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPageTitle\"></ng-template>\n </span>\n\n <div class=\"modal-header-actions-wrapper\" *ngIf=\"headerActionService.displayHeaderActionsWrapper\">\n <div *ngIf=\"headerActionService.showWizardHeaderActions\">\n <ng-content select=\"clr-wizard-header-action\"></ng-content>\n </div>\n <div *ngIf=\"headerActionService.currentPageHasHeaderActions\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.headerActions\"></ng-template>\n </div>\n </div>\n </h2>\n\n <div class=\"modal-body\">\n <main clr-wizard-pages-wrapper class=\"clr-wizard-content\">\n <ng-content></ng-content>\n </main>\n </div>\n <div class=\"modal-footer clr-wizard-footer\">\n <div class=\"clr-wizard-footer-buttons\">\n <div\n *ngIf=\"navService.currentPage && !navService.currentPage.hasButtons\"\n class=\"clr-wizard-footer-buttons-wrapper\"\n >\n <ng-content select=\"clr-wizard-button\"></ng-content>\n </div>\n <div\n *ngIf=\"navService.currentPage && navService.currentPage.hasButtons\"\n class=\"clr-wizard-footer-buttons-wrapper\"\n >\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.buttons\"></ng-template>\n </div>\n </div>\n </div>\n</clr-modal>\n", components: [{ type: ClrModal, selector: "clr-modal", inputs: ["clrModalOpen", "clrModalClosable", "clrModalCloseButtonAriaLabel", "clrModalSize", "clrModalStaticBackdrop", "clrModalSkipAnimation", "clrModalOverrideScrollService", "clrModalPreventClose", "clrModalLabelledById"], outputs: ["clrModalOpenChange", "clrModalAlternateClose"] }, { type: ClrWizardStepnav, selector: "clr-wizard-stepnav" }], directives: [{ type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: ClrModalBody, selector: ".modal-body" }] });
27158
27028
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrWizard, decorators: [{
27159
27029
  type: Component,
27160
- args: [{ selector: 'clr-wizard', providers: [
27161
- WizardNavigationService,
27162
- PageCollectionService,
27163
- ButtonHubService,
27164
- HeaderActionService,
27165
- UNIQUE_ID_PROVIDER,
27166
- ], host: {
27030
+ args: [{ selector: 'clr-wizard', providers: [WizardNavigationService, PageCollectionService, ButtonHubService, HeaderActionService], host: {
27167
27031
  '[class.clr-wizard]': 'true',
27168
27032
  '[class.wizard-md]': "size == 'md'",
27169
27033
  '[class.wizard-lg]': "size == 'lg'",
@@ -27173,10 +27037,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
27173
27037
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
27174
27038
  type: Inject,
27175
27039
  args: [PLATFORM_ID]
27176
- }] }, { type: WizardNavigationService }, { type: PageCollectionService }, { type: ButtonHubService }, { type: HeaderActionService }, { type: i0.ElementRef }, { type: i0.IterableDiffers }, { type: undefined, decorators: [{
27177
- type: Inject,
27178
- args: [UNIQUE_ID]
27179
- }] }]; }, propDecorators: { size: [{
27040
+ }] }, { type: WizardNavigationService }, { type: PageCollectionService }, { type: ButtonHubService }, { type: HeaderActionService }, { type: i0.ElementRef }, { type: i0.IterableDiffers }]; }, propDecorators: { size: [{
27180
27041
  type: Input,
27181
27042
  args: ['clrWizardSize']
27182
27043
  }], closable: [{
@@ -27861,5 +27722,5 @@ const CLR_MENU_POSITIONS = [
27861
27722
  * Generated bundle index. Do not edit.
27862
27723
  */
27863
27724
 
27864
- export { CLR_ALERT_DIRECTIVES, CLR_BUTTON_GROUP_DIRECTIVES, CLR_DATAGRID_DIRECTIVES, CLR_DATEPICKER_DIRECTIVES, CLR_DRAG_AND_DROP_DIRECTIVES, CLR_DROPDOWN_DIRECTIVES, 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_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, CdsIconCustomTag, ClarityModule, ClrAbstractContainer, ClrAccordion, ClrAccordionContent, ClrAccordionDescription, ClrAccordionModule, ClrAccordionPanel, ClrAccordionTitle, ClrAlert, ClrAlertItem, ClrAlertModule, ClrAlertText, ClrAlerts, ClrAlertsPager, ClrAlignment, ClrAriaCurrentLink, ClrAriaLivePoliteness, ClrAriaLiveService, ClrAxis, ClrButton, ClrButtonGroup, ClrButtonGroupModule, ClrButtonModule, ClrCalendar, ClrCheckbox, ClrCheckboxContainer, ClrCheckboxModule, ClrCheckboxWrapper, ClrCombobox, ClrComboboxContainer, ClrComboboxModule, ClrCommonFormsModule, ClrCommonStringsService, ClrConditionalModule, ClrControl, ClrControlContainer, ClrControlError, ClrControlHelper, ClrControlSuccess, ClrDataModule, ClrDatagrid, ClrDatagridActionBar, ClrDatagridActionOverflow, ClrDatagridCell, ClrDatagridColumn, ClrDatagridColumnSeparator, ClrDatagridColumnToggle, ClrDatagridColumnToggleButton, ClrDatagridColumnToggleTitle, ClrDatagridDetail, ClrDatagridDetailBody, ClrDatagridDetailHeader, ClrDatagridFilter, ClrDatagridFooter, ClrDatagridHideableColumn, ClrDatagridItems, ClrDatagridItemsTrackBy, ClrDatagridModule, ClrDatagridPageSize, ClrDatagridPagination, ClrDatagridPlaceholder, ClrDatagridRow, ClrDatagridRowDetail, ClrDatagridSortOrder, ClrDatalist, ClrDatalistContainer, ClrDatalistInput, ClrDatalistModule, ClrDateContainer, ClrDateInput, ClrDatepickerModule, ClrDatepickerViewManager, ClrDay, ClrDaypicker, ClrDestroyService, ClrDragAndDropModule, ClrDragEvent, ClrDragHandle, ClrDraggable, ClrDraggableGhost, ClrDropdown, ClrDropdownItem, ClrDropdownMenu, ClrDropdownModule, ClrDropdownTrigger, ClrDroppable, ClrEmphasisModule, ClrExpandableAnimation, ClrFocusOnViewInit, ClrFocusOnViewInitModule, ClrForTypeAhead, ClrForTypeAheadModule, ClrForm, ClrFormLayout, ClrFormsModule, ClrHeader, ClrIconCustomTag, ClrIconModule, ClrIfActive, ClrIfDetail, ClrIfDragged, ClrIfError, ClrIfExpanded, ClrIfOpen, ClrIfSuccess, ClrInput, ClrInputContainer, ClrInputModule, ClrLabel, ClrLayout, ClrLayoutModule, ClrLoading, ClrLoadingButton, ClrLoadingButtonModule, ClrLoadingModule, ClrLoadingState, ClrMainContainer, ClrMainContainerModule, ClrModal, ClrModalBody, ClrModalModule, ClrMonthpicker, ClrNavLevel, ClrNavigationModule, ClrOption, ClrOptionItems, ClrOptionSelected, ClrOptions, ClrPassword, ClrPasswordContainer, ClrPasswordModule, ClrPopoverAnchor, ClrPopoverContent, ClrPopoverEventsService, ClrPopoverModule, ClrPopoverPositionService, ClrPopoverToggleService, ClrProgressBar, ClrProgressBarModule, ClrRadio, ClrRadioContainer, ClrRadioModule, ClrRadioWrapper, ClrRange, ClrRangeContainer, ClrRangeModule, ClrRecursiveForOf, ClrSelect, ClrSelectContainer, ClrSelectModule, ClrSelectedState, ClrSide, ClrSignpost, ClrSignpostContent, ClrSignpostModule, ClrSignpostTrigger, ClrSpinner, ClrSpinnerModule, ClrStackBlock, ClrStackContentInput, ClrStackHeader, ClrStackInput, ClrStackSelect, ClrStackView, ClrStackViewCustomTags, ClrStackViewLabel, ClrStackViewModule, ClrStepButton, ClrStepButtonType, ClrStepper, ClrStepperModule, ClrStepperPanel, ClrTab, ClrTabContent, ClrTabLink, ClrTabOverflowContent, ClrTabs, ClrTabsModule, 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, ClrWizardCustomTags, ClrWizardHeaderAction, ClrWizardModule, ClrWizardPage, ClrWizardPageButtons, ClrWizardPageHeaderActions, ClrWizardPageNavTitle, ClrWizardPageTitle, ClrWizardStepnav, ClrWizardStepnavItem, ClrYearpicker, DEFAULT_BUTTON_TYPES, DatagridNumericFilter, DatagridPropertyComparator, DatagridPropertyNumericFilter, DatagridPropertyStringFilter, DatagridStringFilter, EXPANDABLE_ANIMATION_DIRECTIVES, FOCUS_ON_VIEW_INIT, FOCUS_ON_VIEW_INIT_DIRECTIVES, IS_TOGGLE, IS_TOGGLE_PROVIDER, LoadingListener, MainContainerWillyWonka, NavDetectionOompaLoompa, TOGGLE_SERVICE, TOGGLE_SERVICE_PROVIDER, ToggleServiceFactory, WrappedFormControl, collapse, commonStringsDefault, fade, fadeSlide, isToggleFactory, slide, AccordionOompaLoompa as ÇlrAccordionOompaLoompa, AccordionWillyWonka as ÇlrAccordionWillyWonka, ActionableOompaLoompa as ÇlrActionableOompaLoompa, ActiveOompaLoompa as ÇlrActiveOompaLoompa, ClrFocusTrapModule as ÇlrClrFocusTrapModule, ClrPopoverCloseButton as ÇlrClrPopoverCloseButton, ClrPopoverModuleNext as ÇlrClrPopoverModuleNext, ClrPopoverOpenCloseButton as ÇlrClrPopoverOpenCloseButton, DatagridCellRenderer as ÇlrDatagridCellRenderer, DatagridDetailRegisterer as ÇlrDatagridDetailRegisterer, DatagridHeaderRenderer as ÇlrDatagridHeaderRenderer, DatagridMainRenderer as ÇlrDatagridMainRenderer, DatagridRowRenderer as ÇlrDatagridRowRenderer, DatagridWillyWonka as ÇlrDatagridWillyWonka, ExpandableOompaLoompa as ÇlrExpandableOompaLoompa, FocusTrapDirective as ÇlrFocusTrapDirective, FocusTrapTracker as ÇlrFocusTrapTracker, StepperOompaLoompa as ÇlrStepperOompaLoompa, StepperWillyWonka as ÇlrStepperWillyWonka, TabsWillyWonka as ÇlrTabsWillyWonka, WrappedCell as ÇlrWrappedCell, WrappedColumn as ÇlrWrappedColumn, WrappedRow as ÇlrWrappedRow };
27725
+ export { CLR_ALERT_DIRECTIVES, CLR_BUTTON_GROUP_DIRECTIVES, CLR_DATAGRID_DIRECTIVES, CLR_DATEPICKER_DIRECTIVES, CLR_DRAG_AND_DROP_DIRECTIVES, CLR_DROPDOWN_DIRECTIVES, 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_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, CdsIconCustomTag, ClarityModule, ClrAbstractContainer, ClrAccordion, ClrAccordionContent, ClrAccordionDescription, ClrAccordionModule, ClrAccordionPanel, ClrAccordionTitle, ClrAlert, ClrAlertItem, ClrAlertModule, ClrAlertText, ClrAlerts, ClrAlertsPager, ClrAlignment, ClrAriaCurrentLink, ClrAriaLivePoliteness, ClrAriaLiveService, ClrAxis, ClrButton, ClrButtonGroup, ClrButtonGroupModule, ClrButtonModule, ClrCalendar, ClrCheckbox, ClrCheckboxContainer, ClrCheckboxModule, ClrCheckboxWrapper, ClrCombobox, ClrComboboxContainer, ClrComboboxModule, ClrCommonFormsModule, ClrCommonStringsService, ClrConditionalModule, ClrControl, ClrControlContainer, ClrControlError, ClrControlHelper, ClrControlSuccess, ClrDataModule, ClrDatagrid, ClrDatagridActionBar, ClrDatagridActionOverflow, ClrDatagridCell, ClrDatagridColumn, ClrDatagridColumnSeparator, ClrDatagridColumnToggle, ClrDatagridColumnToggleButton, ClrDatagridColumnToggleTitle, ClrDatagridDetail, ClrDatagridDetailBody, ClrDatagridDetailHeader, ClrDatagridFilter, ClrDatagridFooter, ClrDatagridHideableColumn, ClrDatagridItems, ClrDatagridItemsTrackBy, ClrDatagridModule, ClrDatagridPageSize, ClrDatagridPagination, ClrDatagridPlaceholder, ClrDatagridRow, ClrDatagridRowDetail, ClrDatagridSortOrder, ClrDatalist, ClrDatalistContainer, ClrDatalistInput, ClrDatalistModule, ClrDateContainer, ClrDateInput, ClrDateInputValidator, ClrDatepickerModule, ClrDatepickerViewManager, ClrDay, ClrDaypicker, ClrDestroyService, ClrDragAndDropModule, ClrDragEvent, ClrDragHandle, ClrDraggable, ClrDraggableGhost, ClrDropdown, ClrDropdownItem, ClrDropdownMenu, ClrDropdownModule, ClrDropdownTrigger, ClrDroppable, ClrEmphasisModule, ClrExpandableAnimation, ClrFocusOnViewInit, ClrFocusOnViewInitModule, ClrForTypeAhead, ClrForTypeAheadModule, ClrForm, ClrFormLayout, ClrFormsModule, ClrHeader, ClrIconCustomTag, ClrIconModule, ClrIfActive, ClrIfDetail, ClrIfDragged, ClrIfError, ClrIfExpanded, ClrIfOpen, ClrIfSuccess, ClrInput, ClrInputContainer, ClrInputModule, ClrLabel, ClrLayout, ClrLayoutModule, ClrLoading, ClrLoadingButton, ClrLoadingButtonModule, ClrLoadingModule, ClrLoadingState, ClrMainContainer, ClrMainContainerModule, ClrModal, ClrModalBody, ClrModalModule, ClrMonthpicker, ClrNavLevel, ClrNavigationModule, ClrOption, ClrOptionItems, ClrOptionSelected, ClrOptions, ClrPassword, ClrPasswordContainer, ClrPasswordModule, ClrPopoverAnchor, ClrPopoverContent, ClrPopoverEventsService, ClrPopoverModule, ClrPopoverPositionService, ClrPopoverToggleService, ClrProgressBar, ClrProgressBarModule, ClrRadio, ClrRadioContainer, ClrRadioModule, ClrRadioWrapper, ClrRange, ClrRangeContainer, ClrRangeModule, ClrRecursiveForOf, ClrSelect, ClrSelectContainer, ClrSelectModule, ClrSelectedState, ClrSide, ClrSignpost, ClrSignpostContent, ClrSignpostModule, ClrSignpostTrigger, ClrSpinner, ClrSpinnerModule, ClrStackBlock, ClrStackContentInput, ClrStackHeader, ClrStackInput, ClrStackSelect, ClrStackView, ClrStackViewCustomTags, ClrStackViewLabel, ClrStackViewModule, ClrStepButton, ClrStepButtonType, ClrStepper, ClrStepperModule, ClrStepperPanel, ClrTab, ClrTabContent, ClrTabLink, ClrTabOverflowContent, ClrTabs, ClrTabsModule, 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, ClrWizardCustomTags, ClrWizardHeaderAction, ClrWizardModule, ClrWizardPage, ClrWizardPageButtons, ClrWizardPageHeaderActions, ClrWizardPageNavTitle, ClrWizardPageTitle, ClrWizardStepnav, ClrWizardStepnavItem, ClrYearpicker, DEFAULT_BUTTON_TYPES, DatagridNumericFilter, DatagridPropertyComparator, DatagridPropertyNumericFilter, DatagridPropertyStringFilter, DatagridStringFilter, EXPANDABLE_ANIMATION_DIRECTIVES, FOCUS_ON_VIEW_INIT, FOCUS_ON_VIEW_INIT_DIRECTIVES, IS_TOGGLE, IS_TOGGLE_PROVIDER, LoadingListener, MainContainerWillyWonka, NavDetectionOompaLoompa, TOGGLE_SERVICE, TOGGLE_SERVICE_PROVIDER, ToggleServiceFactory, WrappedFormControl, collapse, commonStringsDefault, fade, fadeSlide, isToggleFactory, slide, AccordionOompaLoompa as ÇlrAccordionOompaLoompa, AccordionWillyWonka as ÇlrAccordionWillyWonka, ActionableOompaLoompa as ÇlrActionableOompaLoompa, ActiveOompaLoompa as ÇlrActiveOompaLoompa, ClrFocusTrapModule as ÇlrClrFocusTrapModule, ClrPopoverCloseButton as ÇlrClrPopoverCloseButton, ClrPopoverModuleNext as ÇlrClrPopoverModuleNext, ClrPopoverOpenCloseButton as ÇlrClrPopoverOpenCloseButton, DatagridCellRenderer as ÇlrDatagridCellRenderer, DatagridDetailRegisterer as ÇlrDatagridDetailRegisterer, DatagridHeaderRenderer as ÇlrDatagridHeaderRenderer, DatagridMainRenderer as ÇlrDatagridMainRenderer, DatagridRowRenderer as ÇlrDatagridRowRenderer, DatagridWillyWonka as ÇlrDatagridWillyWonka, ExpandableOompaLoompa as ÇlrExpandableOompaLoompa, FocusTrapDirective as ÇlrFocusTrapDirective, FocusTrapTracker as ÇlrFocusTrapTracker, StepperOompaLoompa as ÇlrStepperOompaLoompa, StepperWillyWonka as ÇlrStepperWillyWonka, TabsWillyWonka as ÇlrTabsWillyWonka, WrappedCell as ÇlrWrappedCell, WrappedColumn as ÇlrWrappedColumn, WrappedRow as ÇlrWrappedRow };
27865
27726
  //# sourceMappingURL=clr-angular.mjs.map