@clr/angular 13.9.0 → 13.10.0

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 (169) 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 +57 -46
  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 +12 -4
  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 +26 -13
  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-header.mjs +7 -7
  62. package/esm2020/data/stack-view/stack-view-custom-tags.mjs +8 -13
  63. package/esm2020/data/tree-view/tree-focus-manager.service.mjs +1 -1
  64. package/esm2020/data/tree-view/tree-node.mjs +7 -20
  65. package/esm2020/emphasis/alert/alerts.mjs +1 -1
  66. package/esm2020/emphasis/alert/providers/icon-and-types.service.mjs +1 -1
  67. package/esm2020/emphasis/alert/providers/multi-alert.service.mjs +1 -1
  68. package/esm2020/forms/checkbox/checkbox-container.mjs +1 -1
  69. package/esm2020/forms/combobox/combobox.mjs +19 -20
  70. package/esm2020/forms/combobox/option-items.directive.mjs +1 -1
  71. package/esm2020/forms/combobox/option.mjs +8 -13
  72. package/esm2020/forms/combobox/options.mjs +10 -19
  73. package/esm2020/forms/combobox/providers/combobox-focus-handler.service.mjs +4 -9
  74. package/esm2020/forms/combobox/providers/option-selection.service.mjs +1 -1
  75. package/esm2020/forms/common/abstract-control.mjs +1 -1
  76. package/esm2020/forms/common/providers/container-id.service.mjs +1 -1
  77. package/esm2020/forms/common/providers/control-id.service.mjs +1 -1
  78. package/esm2020/forms/common/wrapped-control.mjs +1 -8
  79. package/esm2020/forms/datalist/providers/datalist-id.service.mjs +1 -1
  80. package/esm2020/forms/datepicker/date-container.mjs +1 -1
  81. package/esm2020/forms/datepicker/date-input.mjs +1 -1
  82. package/esm2020/forms/datepicker/date-input.validator.mjs +40 -0
  83. package/esm2020/forms/datepicker/datepicker.module.mjs +5 -1
  84. package/esm2020/forms/datepicker/day.mjs +1 -1
  85. package/esm2020/forms/datepicker/index.mjs +2 -1
  86. package/esm2020/forms/datepicker/model/calendar.model.mjs +1 -1
  87. package/esm2020/forms/datepicker/model/day.model.mjs +1 -1
  88. package/esm2020/forms/datepicker/providers/date-form-control.service.mjs +1 -1
  89. package/esm2020/forms/datepicker/providers/date-io.service.mjs +1 -1
  90. package/esm2020/forms/datepicker/providers/date-navigation.service.mjs +1 -1
  91. package/esm2020/forms/datepicker/yearpicker.mjs +1 -10
  92. package/esm2020/forms/radio/radio-container.mjs +1 -1
  93. package/esm2020/layout/nav/aria-current-link.mjs +1 -1
  94. package/esm2020/layout/nav/providers/responsive-navigation.service.mjs +1 -1
  95. package/esm2020/layout/nav/responsive-nav-codes.mjs +1 -1
  96. package/esm2020/layout/tabs/tab-content.mjs +6 -14
  97. package/esm2020/layout/tabs/tab-link.directive.mjs +6 -14
  98. package/esm2020/layout/tabs/tab.mjs +3 -4
  99. package/esm2020/layout/vertical-nav/providers/vertical-nav-group-registration.service.mjs +1 -1
  100. package/esm2020/modal/modal.mjs +9 -12
  101. package/esm2020/popover/common/abstract-popover.mjs +1 -1
  102. package/esm2020/popover/common/popover.mjs +1 -1
  103. package/esm2020/popover/dropdown/dropdown-item.mjs +1 -1
  104. package/esm2020/popover/dropdown/dropdown-trigger.mjs +1 -1
  105. package/esm2020/popover/dropdown/providers/dropdown-focus-handler.service.mjs +6 -9
  106. package/esm2020/popover/signpost/signpost-content.mjs +8 -12
  107. package/esm2020/popover/signpost/signpost-trigger.mjs +1 -1
  108. package/esm2020/popover/signpost/signpost.mjs +1 -1
  109. package/esm2020/popover/tooltip/tooltip-content.mjs +9 -11
  110. package/esm2020/popover/tooltip/tooltip-trigger.mjs +1 -1
  111. package/esm2020/popover/tooltip/tooltip.mjs +3 -18
  112. package/esm2020/timeline/providers/timeline-icon-attribute.service.mjs +1 -1
  113. package/esm2020/timeline/timeline-step.mjs +1 -1
  114. package/esm2020/utils/a11y/aria-live.service.mjs +1 -1
  115. package/esm2020/utils/chocolate/willy-wonka.mjs +1 -1
  116. package/esm2020/utils/conditional/if-active.directive.mjs +1 -1
  117. package/esm2020/utils/conditional/if-active.service.mjs +1 -1
  118. package/esm2020/utils/conditional/if-expanded.service.mjs +1 -1
  119. package/esm2020/utils/conditional/if-open.directive.mjs +1 -1
  120. package/esm2020/utils/drag-and-drop/drag-event.mjs +1 -1
  121. package/esm2020/utils/drag-and-drop/draggable/draggable.mjs +1 -1
  122. package/esm2020/utils/drag-and-drop/providers/drag-event-listener.service.mjs +1 -1
  123. package/esm2020/utils/drag-and-drop/providers/drag-handle-registrar.service.mjs +1 -1
  124. package/esm2020/utils/drag-and-drop/providers/draggable-snapshot.service.mjs +1 -1
  125. package/esm2020/utils/focus/focus.service.mjs +1 -1
  126. package/esm2020/utils/focus/focusable-item/basic-focusable-item.service.mjs +7 -11
  127. package/esm2020/utils/focus/focusable-item/custom-focusable-item-provider.mjs +1 -3
  128. package/esm2020/utils/focus-trap/focus-trap.directive.mjs +1 -1
  129. package/esm2020/utils/i18n/common-strings.default.mjs +3 -3
  130. package/esm2020/utils/id-generator/id-generator.service.mjs +1 -7
  131. package/esm2020/utils/loading/loading.mjs +1 -1
  132. package/esm2020/utils/popover/popover-content.mjs +1 -1
  133. package/esm2020/utils/popover/providers/popover-events.service.mjs +1 -1
  134. package/esm2020/utils/popover/providers/popover-position.service.mjs +1 -1
  135. package/esm2020/utils/popover/providers/popover-toggle.service.mjs +1 -1
  136. package/esm2020/wizard/providers/button-hub.service.mjs +1 -1
  137. package/esm2020/wizard/providers/header-actions.service.mjs +1 -1
  138. package/esm2020/wizard/providers/page-collection.service.mjs +1 -1
  139. package/esm2020/wizard/providers/wizard-navigation.service.mjs +1 -1
  140. package/esm2020/wizard/wizard-button.mjs +1 -1
  141. package/esm2020/wizard/wizard-header-action.mjs +1 -1
  142. package/esm2020/wizard/wizard-page.mjs +1 -1
  143. package/esm2020/wizard/wizard-stepnav-item.mjs +1 -1
  144. package/esm2020/wizard/wizard.mjs +8 -23
  145. package/fesm2015/clr-angular.mjs +436 -564
  146. package/fesm2015/clr-angular.mjs.map +1 -1
  147. package/fesm2020/clr-angular.mjs +441 -562
  148. package/fesm2020/clr-angular.mjs.map +1 -1
  149. package/forms/combobox/combobox.d.ts +4 -5
  150. package/forms/combobox/option.d.ts +1 -2
  151. package/forms/combobox/options.d.ts +3 -6
  152. package/forms/combobox/providers/combobox-focus-handler.service.d.ts +2 -6
  153. package/forms/datepicker/date-input.validator.d.ts +10 -0
  154. package/forms/datepicker/datepicker.module.d.ts +14 -13
  155. package/forms/datepicker/index.d.ts +1 -0
  156. package/forms/datepicker/yearpicker.d.ts +0 -2
  157. package/layout/tabs/tab-content.d.ts +2 -5
  158. package/layout/tabs/tab-link.directive.d.ts +2 -5
  159. package/modal/modal.d.ts +1 -1
  160. package/package.json +1 -1
  161. package/popover/dropdown/providers/dropdown-focus-handler.service.d.ts +4 -7
  162. package/popover/signpost/signpost-content.d.ts +3 -3
  163. package/popover/tooltip/tooltip-content.d.ts +5 -5
  164. package/utils/focus/focusable-item/basic-focusable-item.service.d.ts +4 -7
  165. package/utils/focus/focusable-item/custom-focusable-item-provider.d.ts +1 -4
  166. package/utils/id-generator/id-generator.service.d.ts +0 -6
  167. package/wizard/wizard.d.ts +2 -2
  168. package/esm2020/utils/aria/aria.service.mjs +0 -16
  169. 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.
@@ -309,8 +304,8 @@ const commonStringsDefault = {
309
304
  singleSelectionAriaLabel: 'Single selection header',
310
305
  singleActionableAriaLabel: 'Single actionable header',
311
306
  detailExpandableAriaLabel: 'Toggle more row content',
312
- datagridFilterAriaLabel: 'Filter dialog',
313
- datagridFilterDialogAriaLabel: 'Toggle column filter',
307
+ datagridFilterAriaLabel: 'Toggle {COLUMN} filter',
308
+ datagridFilterDialogAriaLabel: 'Filter dialog',
314
309
  columnSeparatorAriaLabel: 'Column resize handle',
315
310
  columnSeparatorDescription: 'Use left or right key to resize the column',
316
311
  // Alert
@@ -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,7 +6374,6 @@ 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,
@@ -6209,137 +6389,42 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
6209
6389
  }, {
6210
6390
  type: Optional
6211
6391
  }] }, { 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: [{
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,15 @@ 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, elementRef) {
12006
11981
  super(_filters);
12007
11982
  this.commonStrings = commonStrings;
12008
11983
  this.smartToggleService = smartToggleService;
12009
11984
  this.platformId = platformId;
12010
- this.popoverId = popoverId;
11985
+ this.elementRef = elementRef;
12011
11986
  this.subs = [];
12012
11987
  this.ariaExpanded = false;
11988
+ this.popoverId = uniqueIdFactory();
12013
11989
  // Smart Popover
12014
11990
  this.smartPosition = {
12015
11991
  axis: ClrAxis.VERTICAL,
@@ -12048,18 +12024,33 @@ class ClrDatagridFilter extends DatagridFilterRegistrar {
12048
12024
  get active() {
12049
12025
  return !!this.filter && this.filter.isActive();
12050
12026
  }
12027
+ ngOnChanges() {
12028
+ this.setToggleButtonAriaLabel();
12029
+ }
12051
12030
  ngOnDestroy() {
12052
12031
  super.ngOnDestroy();
12053
12032
  this.subs.forEach(sub => sub.unsubscribe());
12054
12033
  }
12034
+ /**
12035
+ * This is not in a getter to prevent "expression has changed after it was checked" errors.
12036
+ * And it's more performant this way since it only runs on change.
12037
+ */
12038
+ setToggleButtonAriaLabel() {
12039
+ const columnElement = this.elementRef.nativeElement?.closest('clr-dg-column');
12040
+ const columnTitleElement = columnElement?.querySelector('.datagrid-column-title');
12041
+ const columnTitle = columnTitleElement?.textContent.trim().toLocaleLowerCase();
12042
+ this.toggleButtonAriaLabel = this.commonStrings.parse(this.commonStrings.keys.datagridFilterAriaLabel, {
12043
+ COLUMN: columnTitle || '',
12044
+ });
12045
+ }
12055
12046
  }
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: `
12047
+ 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: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
12048
+ 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, usesOnChanges: true, ngImport: i0, template: `
12058
12049
  <button
12059
12050
  class="datagrid-filter-toggle"
12060
12051
  type="button"
12061
12052
  #anchor
12062
- [attr.aria-label]="commonStrings.keys.datagridFilterAriaLabel"
12053
+ [attr.aria-label]="toggleButtonAriaLabel"
12063
12054
  [attr.aria-expanded]="ariaExpanded"
12064
12055
  [attr.aria-controls]="popoverId"
12065
12056
  clrPopoverAnchor
@@ -12096,13 +12087,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
12096
12087
  args: [{
12097
12088
  selector: 'clr-dg-filter',
12098
12089
  // We register this component as a CustomFilter, for the parent column to detect it.
12099
- providers: [{ provide: CustomFilter, useExisting: ClrDatagridFilter }, UNIQUE_ID_PROVIDER],
12090
+ providers: [{ provide: CustomFilter, useExisting: ClrDatagridFilter }],
12100
12091
  template: `
12101
12092
  <button
12102
12093
  class="datagrid-filter-toggle"
12103
12094
  type="button"
12104
12095
  #anchor
12105
- [attr.aria-label]="commonStrings.keys.datagridFilterAriaLabel"
12096
+ [attr.aria-label]="toggleButtonAriaLabel"
12106
12097
  [attr.aria-expanded]="ariaExpanded"
12107
12098
  [attr.aria-controls]="popoverId"
12108
12099
  clrPopoverAnchor
@@ -12138,10 +12129,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
12138
12129
  }], ctorParameters: function () { return [{ type: FiltersProvider }, { type: ClrCommonStringsService }, { type: ClrPopoverToggleService }, { type: undefined, decorators: [{
12139
12130
  type: Inject,
12140
12131
  args: [PLATFORM_ID]
12141
- }] }, { type: undefined, decorators: [{
12142
- type: Inject,
12143
- args: [UNIQUE_ID]
12144
- }] }]; }, propDecorators: { anchor: [{
12132
+ }] }, { type: i0.ElementRef }]; }, propDecorators: { anchor: [{
12145
12133
  type: ViewChild,
12146
12134
  args: ['anchor', { read: ElementRef }]
12147
12135
  }], open: [{
@@ -13280,14 +13268,14 @@ const KEYBOARD_RESIZE_LENGTH = 12;
13280
13268
  class ClrDatagridColumnSeparator {
13281
13269
  // Every column draggable separator should have its own unique ID
13282
13270
  // in order to not conflict with other draggables/droppables.
13283
- constructor(columnResizerService, renderer, ngZone, tableSizeService, commonString, document, columnSeparatorId) {
13271
+ constructor(columnResizerService, renderer, ngZone, tableSizeService, commonString, document) {
13284
13272
  this.columnResizerService = columnResizerService;
13285
13273
  this.renderer = renderer;
13286
13274
  this.ngZone = ngZone;
13287
13275
  this.tableSizeService = tableSizeService;
13288
13276
  this.commonString = commonString;
13289
13277
  this.document = document;
13290
- this.columnSeparatorId = columnSeparatorId;
13278
+ this.columnSeparatorId = uniqueIdFactory();
13291
13279
  this.resizeStartedOnKeyDown = false;
13292
13280
  this.unlisteners = [];
13293
13281
  }
@@ -13373,8 +13361,8 @@ class ClrDatagridColumnSeparator {
13373
13361
  this.unlisteners.forEach(unlistener => unlistener());
13374
13362
  }
13375
13363
  }
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: `
13364
+ 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 });
13365
+ 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
13366
  <button
13379
13367
  type="button"
13380
13368
  class="datagrid-column-handle"
@@ -13417,14 +13405,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
13417
13405
  host: {
13418
13406
  '[class.datagrid-column-separator]': 'true',
13419
13407
  },
13420
- providers: [UNIQUE_ID_PROVIDER],
13421
13408
  }]
13422
13409
  }], ctorParameters: function () { return [{ type: ColumnResizerService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: TableSizeService }, { type: ClrCommonStringsService }, { type: undefined, decorators: [{
13423
13410
  type: Inject,
13424
13411
  args: [DOCUMENT]
13425
- }] }, { type: undefined, decorators: [{
13426
- type: Inject,
13427
- args: [UNIQUE_ID]
13428
13412
  }] }]; }, propDecorators: { resizeTrackerRef: [{
13429
13413
  type: ViewChild,
13430
13414
  args: ['resizeTracker']
@@ -14525,10 +14509,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
14525
14509
  */
14526
14510
  let nbSelection = 0;
14527
14511
  class Selection {
14528
- constructor(_items, _filters, _zone) {
14512
+ constructor(_items, _filters) {
14529
14513
  this._items = _items;
14530
14514
  this._filters = _filters;
14531
- this._zone = _zone;
14532
14515
  this.preserveSelection = false;
14533
14516
  this.prevSelectionRefs = []; // Refs of selected items
14534
14517
  this.lockedRefs = []; // Ref of locked items
@@ -14883,11 +14866,11 @@ class Selection {
14883
14866
  }
14884
14867
  }
14885
14868
  }
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 });
14869
+ 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
14870
  Selection.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: Selection });
14888
14871
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: Selection, decorators: [{
14889
14872
  type: Injectable
14890
- }], ctorParameters: function () { return [{ type: Items }, { type: FiltersProvider }, { type: i0.NgZone }]; } });
14873
+ }], ctorParameters: function () { return [{ type: Items }, { type: FiltersProvider }]; } });
14891
14874
 
14892
14875
  /*
14893
14876
  * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
@@ -15498,7 +15481,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
15498
15481
  * The full license information can be found in LICENSE in the root directory of this project.
15499
15482
  */
15500
15483
  class ClrDatagrid {
15501
- constructor(organizer, items, expandableRows, selection, rowActionService, stateProvider, displayMode, renderer, detailService, datagridId, document, el, page, commonStrings, columnsService, keyNavigation, zone) {
15484
+ constructor(organizer, items, expandableRows, selection, rowActionService, stateProvider, displayMode, renderer, detailService, document, el, page, commonStrings, columnsService, keyNavigation, zone) {
15502
15485
  this.organizer = organizer;
15503
15486
  this.items = items;
15504
15487
  this.expandableRows = expandableRows;
@@ -15532,6 +15515,7 @@ class ClrDatagrid {
15532
15515
  * Subscriptions to all the services and queries changes
15533
15516
  */
15534
15517
  this._subscriptions = [];
15518
+ const datagridId = uniqueIdFactory();
15535
15519
  this.selectAllId = 'clr-dg-select-all-' + datagridId;
15536
15520
  this.detailService.id = datagridId;
15537
15521
  }
@@ -15720,7 +15704,7 @@ class ClrDatagrid {
15720
15704
  this.organizer.resize();
15721
15705
  }
15722
15706
  }
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 });
15707
+ 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
15708
  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
15709
  Selection,
15726
15710
  Sort,
@@ -15732,7 +15716,6 @@ ClrDatagrid.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "
15732
15716
  ExpandableRowsCount,
15733
15717
  StateDebouncer,
15734
15718
  DetailService,
15735
- UNIQUE_ID_PROVIDER,
15736
15719
  StateProvider,
15737
15720
  TableSizeService,
15738
15721
  ColumnsService,
@@ -15752,7 +15735,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
15752
15735
  ExpandableRowsCount,
15753
15736
  StateDebouncer,
15754
15737
  DetailService,
15755
- UNIQUE_ID_PROVIDER,
15756
15738
  StateProvider,
15757
15739
  TableSizeService,
15758
15740
  ColumnsService,
@@ -15763,9 +15745,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
15763
15745
  '[class.datagrid-detail-open]': 'detailService.isOpen',
15764
15746
  }, 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
15747
  }], 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
15748
  type: Inject,
15770
15749
  args: [DOCUMENT]
15771
15750
  }] }, { type: i0.ElementRef }, { type: Page }, { type: ClrCommonStringsService }, { type: ColumnsService }, { type: KeyNavigationGridController }, { type: i0.NgZone }]; }, propDecorators: { loading: [{
@@ -15862,13 +15841,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
15862
15841
  */
15863
15842
  let clrDgActionId = 0;
15864
15843
  class ClrDatagridActionOverflow {
15865
- constructor(rowActionService, commonStrings, platformId, zone, smartToggleService, popoverId) {
15844
+ constructor(rowActionService, commonStrings, platformId, zone, smartToggleService) {
15866
15845
  this.rowActionService = rowActionService;
15867
15846
  this.commonStrings = commonStrings;
15868
15847
  this.platformId = platformId;
15869
15848
  this.zone = zone;
15870
15849
  this.smartToggleService = smartToggleService;
15871
- this.popoverId = popoverId;
15872
15850
  this.subscriptions = [];
15873
15851
  this.smartPosition = {
15874
15852
  axis: ClrAxis.HORIZONTAL,
@@ -15876,6 +15854,7 @@ class ClrDatagridActionOverflow {
15876
15854
  anchor: ClrAlignment.CENTER,
15877
15855
  content: ClrAlignment.CENTER,
15878
15856
  };
15857
+ this.popoverId = uniqueIdFactory();
15879
15858
  this._open = false;
15880
15859
  this.openChange = new EventEmitter(false);
15881
15860
  this.rowActionService.register();
@@ -15921,8 +15900,8 @@ class ClrDatagridActionOverflow {
15921
15900
  }
15922
15901
  }
15923
15902
  }
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: `
15903
+ 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 });
15904
+ 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
15905
  <button
15927
15906
  class="datagrid-action-toggle"
15928
15907
  type="button"
@@ -15955,7 +15934,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
15955
15934
  type: Component,
15956
15935
  args: [{
15957
15936
  selector: 'clr-dg-action-overflow',
15958
- providers: [UNIQUE_ID_PROVIDER, ClrPopoverToggleService, ClrPopoverEventsService, ClrPopoverPositionService],
15937
+ providers: [ClrPopoverToggleService, ClrPopoverEventsService, ClrPopoverPositionService],
15959
15938
  template: `
15960
15939
  <button
15961
15940
  class="datagrid-action-toggle"
@@ -15989,10 +15968,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
15989
15968
  }], ctorParameters: function () { return [{ type: RowActionService }, { type: ClrCommonStringsService }, { type: undefined, decorators: [{
15990
15969
  type: Inject,
15991
15970
  args: [PLATFORM_ID]
15992
- }] }, { type: i0.NgZone }, { type: ClrPopoverToggleService }, { type: undefined, decorators: [{
15993
- type: Inject,
15994
- args: [UNIQUE_ID]
15995
- }] }]; }, propDecorators: { keyFocus: [{
15971
+ }] }, { type: i0.NgZone }, { type: ClrPopoverToggleService }]; }, propDecorators: { keyFocus: [{
15996
15972
  type: ViewChild,
15997
15973
  args: [ClrKeyFocus]
15998
15974
  }], open: [{
@@ -16116,14 +16092,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
16116
16092
  */
16117
16093
  /** @deprecated since 2.0, remove in 3.0 */
16118
16094
  class ClrDatagridColumnToggle {
16119
- constructor(commonStrings, columnsService, columnSwitchId, platformId, zone, popoverId, popoverToggleService) {
16095
+ constructor(commonStrings, columnsService, popoverToggleService) {
16120
16096
  this.commonStrings = commonStrings;
16121
16097
  this.columnsService = columnsService;
16122
- this.columnSwitchId = columnSwitchId;
16123
- this.platformId = platformId;
16124
- this.zone = zone;
16125
- this.popoverId = popoverId;
16126
- this.popoverToggleService = popoverToggleService;
16098
+ this.popoverId = uniqueIdFactory();
16127
16099
  // Smart Popover
16128
16100
  this.smartPosition = {
16129
16101
  axis: ClrAxis.VERTICAL,
@@ -16170,8 +16142,8 @@ class ClrDatagridColumnToggle {
16170
16142
  return index;
16171
16143
  }
16172
16144
  }
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: `
16145
+ 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 });
16146
+ 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
16147
  <button
16176
16148
  role="button"
16177
16149
  type="button"
@@ -16300,18 +16272,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
16300
16272
  </div>
16301
16273
  `,
16302
16274
  host: { '[class.column-switch-wrapper]': 'true', '[class.active]': 'openState' },
16303
- providers: [UNIQUE_ID_PROVIDER, ClrPopoverEventsService, ClrPopoverPositionService, ClrPopoverToggleService],
16275
+ providers: [ClrPopoverEventsService, ClrPopoverPositionService, ClrPopoverToggleService],
16304
16276
  }]
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: [{
16277
+ }], ctorParameters: function () { return [{ type: ClrCommonStringsService }, { type: ColumnsService }, { type: ClrPopoverToggleService }]; }, propDecorators: { customToggleTitle: [{
16315
16278
  type: ContentChild,
16316
16279
  args: [ClrDatagridColumnToggleTitle]
16317
16280
  }], customToggleButton: [{
@@ -18408,8 +18371,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
18408
18371
  }]
18409
18372
  }] });
18410
18373
  class ClrStackViewLabel {
18411
- constructor(uniqueId) {
18412
- this.uniqueId = uniqueId;
18374
+ constructor() {
18413
18375
  this._generatedId = null;
18414
18376
  this._id = null;
18415
18377
  }
@@ -18425,28 +18387,24 @@ class ClrStackViewLabel {
18425
18387
  return this._id;
18426
18388
  }
18427
18389
  ngOnInit() {
18428
- this._generatedId = 'clr-stack-label-' + this.uniqueId;
18390
+ this._generatedId = 'clr-stack-label-' + uniqueIdFactory();
18429
18391
  if (!this.id) {
18430
18392
  this._id = this._generatedId + '';
18431
18393
  }
18432
18394
  }
18433
18395
  }
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 });
18396
+ ClrStackViewLabel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrStackViewLabel, deps: [], target: i0.ɵɵFactoryTarget.Component });
18397
+ 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
18398
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrStackViewLabel, decorators: [{
18437
18399
  type: Component,
18438
18400
  args: [{
18439
18401
  selector: 'clr-stack-label',
18440
18402
  template: '<ng-content></ng-content>',
18441
- providers: [UNIQUE_ID_PROVIDER],
18442
18403
  host: {
18443
18404
  '[attr.id]': 'id',
18444
18405
  },
18445
18406
  }]
18446
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
18447
- type: Inject,
18448
- args: [UNIQUE_ID]
18449
- }] }]; }, propDecorators: { id: [{
18407
+ }], propDecorators: { id: [{
18450
18408
  type: Input
18451
18409
  }] } });
18452
18410
 
@@ -18461,9 +18419,8 @@ class ClrStackBlock {
18461
18419
  * querying for children StackBlocks, but this feature is not available when downgrading
18462
18420
  * the component for Angular 1.
18463
18421
  */
18464
- constructor(parent, uniqueId, commonStrings) {
18422
+ constructor(parent, commonStrings) {
18465
18423
  this.parent = parent;
18466
- this.uniqueId = uniqueId;
18467
18424
  this.commonStrings = commonStrings;
18468
18425
  this.expanded = false;
18469
18426
  this.expandedChange = new EventEmitter(false);
@@ -18472,6 +18429,7 @@ class ClrStackBlock {
18472
18429
  this._changedChildren = 0;
18473
18430
  this._fullyInitialized = false;
18474
18431
  this._changed = false;
18432
+ this.uniqueId = uniqueIdFactory();
18475
18433
  if (parent) {
18476
18434
  parent.addChild();
18477
18435
  }
@@ -18537,8 +18495,8 @@ class ClrStackBlock {
18537
18495
  return this.expanded ? `clr-stack-children-${this.uniqueId}` : null;
18538
18496
  }
18539
18497
  }
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: `
18498
+ 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 });
18499
+ 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
18500
  <!-- The 'preventDefault' for the space keydown event prevents the page
18543
18501
  from scrolling when a stack block is toggled via the space key. -->
18544
18502
  <div
@@ -18638,15 +18596,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
18638
18596
  '[attr.role]': '"heading"',
18639
18597
  '[attr.aria-level]': 'headingLevel',
18640
18598
  },
18641
- providers: [UNIQUE_ID_PROVIDER],
18642
18599
  }]
18643
18600
  }], ctorParameters: function () { return [{ type: ClrStackBlock, decorators: [{
18644
18601
  type: SkipSelf
18645
18602
  }, {
18646
18603
  type: Optional
18647
- }] }, { type: undefined, decorators: [{
18648
- type: Inject,
18649
- args: [UNIQUE_ID]
18650
18604
  }] }, { type: ClrCommonStringsService }]; }, propDecorators: { expanded: [{
18651
18605
  type: HostBinding,
18652
18606
  args: ['class.stack-block-expanded']
@@ -18691,11 +18645,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
18691
18645
  * The full license information can be found in LICENSE in the root directory of this project.
18692
18646
  */
18693
18647
  class ClrStackContentInput {
18694
- constructor(uniqueId) {
18695
- this.uniqueId = uniqueId;
18648
+ constructor() {
18649
+ this.uniqueId = uniqueIdFactory();
18696
18650
  }
18697
18651
  }
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 });
18652
+ ClrStackContentInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrStackContentInput, deps: [], target: i0.ɵɵFactoryTarget.Directive });
18699
18653
  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
18654
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrStackContentInput, decorators: [{
18701
18655
  type: Directive,
@@ -18706,10 +18660,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
18706
18660
  '[attr.aria-labelledby]': 'uniqueId',
18707
18661
  },
18708
18662
  }]
18709
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
18710
- type: Inject,
18711
- args: [UNIQUE_ID]
18712
- }] }]; } });
18663
+ }] });
18713
18664
 
18714
18665
  /*
18715
18666
  * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
@@ -18778,8 +18729,8 @@ class ClrStackHeader {
18778
18729
  }
18779
18730
  ClrStackHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrStackHeader, deps: [{ token: ClrStackView }], target: i0.ɵɵFactoryTarget.Component });
18780
18731
  ClrStackHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrStackHeader, selector: "clr-stack-header", ngImport: i0, template: `
18781
- <h4 class="stack-header">
18782
- <span class="stack-title"><ng-content></ng-content></span>
18732
+ <div class="stack-header">
18733
+ <h4 class="stack-title"><ng-content></ng-content></h4>
18783
18734
 
18784
18735
  <span class="stack-actions">
18785
18736
  <ng-content select=".stack-action"></ng-content>
@@ -18794,15 +18745,15 @@ ClrStackHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
18794
18745
  </button>
18795
18746
  <!-- End of undocumented experimental feature. -->
18796
18747
  </span>
18797
- </h4>
18748
+ </div>
18798
18749
  `, isInline: true, styles: [":host{display:block}\n"], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
18799
18750
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrStackHeader, decorators: [{
18800
18751
  type: Component,
18801
18752
  args: [{
18802
18753
  selector: 'clr-stack-header',
18803
18754
  template: `
18804
- <h4 class="stack-header">
18805
- <span class="stack-title"><ng-content></ng-content></span>
18755
+ <div class="stack-header">
18756
+ <h4 class="stack-title"><ng-content></ng-content></h4>
18806
18757
 
18807
18758
  <span class="stack-actions">
18808
18759
  <ng-content select=".stack-action"></ng-content>
@@ -18817,7 +18768,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
18817
18768
  </button>
18818
18769
  <!-- End of undocumented experimental feature. -->
18819
18770
  </span>
18820
- </h4>
18771
+ </div>
18821
18772
  `,
18822
18773
  // Custom elements are inline by default
18823
18774
  styles: [
@@ -19594,8 +19545,7 @@ const LVIEW_CONTEXT_INDEX = 8;
19594
19545
  // then those keys are sent together in one request.
19595
19546
  const TREE_TYPE_AHEAD_TIMEOUT = 200;
19596
19547
  class ClrTreeNode {
19597
- constructor(nodeId, platformId, parent, forTypeAheadProvider, featuresService, expandService, commonStrings, focusManager, injector) {
19598
- this.nodeId = nodeId;
19548
+ constructor(platformId, parent, forTypeAheadProvider, featuresService, expandService, commonStrings, focusManager, injector) {
19599
19549
  this.platformId = platformId;
19600
19550
  this.forTypeAheadProvider = forTypeAheadProvider;
19601
19551
  this.featuresService = featuresService;
@@ -19605,6 +19555,7 @@ class ClrTreeNode {
19605
19555
  this.STATES = ClrSelectedState;
19606
19556
  this.skipEmitChange = false;
19607
19557
  this.isModelLoading = false;
19558
+ this.nodeId = uniqueIdFactory();
19608
19559
  this.typeAheadKeyEvent = new Subject();
19609
19560
  this.typeAheadKeyBuffer = '';
19610
19561
  this.selectedChange = new EventEmitter(false);
@@ -19819,13 +19770,8 @@ class ClrTreeNode {
19819
19770
  }
19820
19771
  }
19821
19772
  }
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: [
19773
+ 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 });
19774
+ 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
19775
  trigger('toggleChildrenAnim', [
19830
19776
  transition('collapsed => expanded', [style({ height: 0 }), animate(200, style({ height: '*' }))]),
19831
19777
  transition('expanded => collapsed', [style({ height: '*' }), animate(200, style({ height: 0 }))]),
@@ -19835,12 +19781,7 @@ ClrTreeNode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "
19835
19781
  ] });
19836
19782
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTreeNode, decorators: [{
19837
19783
  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: [
19784
+ args: [{ selector: 'clr-tree-node', providers: [TREE_FEATURES_PROVIDER, IfExpandService, { provide: LoadingListener, useExisting: IfExpandService }], animations: [
19844
19785
  trigger('toggleChildrenAnim', [
19845
19786
  transition('collapsed => expanded', [style({ height: 0 }), animate(200, style({ height: '*' }))]),
19846
19787
  transition('expanded => collapsed', [style({ height: '*' }), animate(200, style({ height: 0 }))]),
@@ -19851,9 +19792,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
19851
19792
  '[class.clr-tree-node]': 'true',
19852
19793
  }, 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
19794
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
19854
- type: Inject,
19855
- args: [UNIQUE_ID]
19856
- }] }, { type: undefined, decorators: [{
19857
19795
  type: Inject,
19858
19796
  args: [PLATFORM_ID]
19859
19797
  }] }, { type: ClrTreeNode, decorators: [{
@@ -20063,13 +20001,13 @@ function wrapObservable(observable, onSubscribe, onUnsubscribe) {
20063
20001
  * The full license information can be found in LICENSE in the root directory of this project.
20064
20002
  */
20065
20003
  class DropdownFocusHandler {
20066
- constructor(id, renderer, parent, toggleService, focusService, platformId) {
20067
- this.id = id;
20004
+ constructor(renderer, parent, toggleService, focusService, platformId) {
20068
20005
  this.renderer = renderer;
20069
20006
  this.parent = parent;
20070
20007
  this.toggleService = toggleService;
20071
20008
  this.focusService = focusService;
20072
20009
  this.platformId = platformId;
20010
+ this.id = uniqueIdFactory();
20073
20011
  this._unlistenFuncs = [];
20074
20012
  this.focusBackOnTrigger = false;
20075
20013
  this.resetChildren();
@@ -20216,14 +20154,11 @@ class DropdownFocusHandler {
20216
20154
  this.focusService.detachListeners();
20217
20155
  }
20218
20156
  }
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 });
20157
+ 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
20158
  DropdownFocusHandler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DropdownFocusHandler });
20221
20159
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DropdownFocusHandler, decorators: [{
20222
20160
  type: Injectable
20223
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
20224
- type: Inject,
20225
- args: [UNIQUE_ID]
20226
- }] }, { type: i0.Renderer2 }, { type: DropdownFocusHandler, decorators: [{
20161
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: DropdownFocusHandler, decorators: [{
20227
20162
  type: SkipSelf
20228
20163
  }, {
20229
20164
  type: Optional
@@ -20322,13 +20257,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
20322
20257
  * The full license information can be found in LICENSE in the root directory of this project.
20323
20258
  */
20324
20259
  class BasicFocusableItem {
20325
- constructor(id, el, renderer, platformId) {
20326
- this.id = id;
20260
+ constructor(el, renderer, platformId) {
20327
20261
  this.el = el;
20328
20262
  this.renderer = renderer;
20329
20263
  this.platformId = platformId;
20264
+ this.id = uniqueIdFactory();
20330
20265
  this.disabled = false;
20331
- renderer.setAttribute(el.nativeElement, 'id', id);
20266
+ renderer.setAttribute(el.nativeElement, 'id', this.id);
20332
20267
  renderer.setAttribute(el.nativeElement, 'tabindex', '-1');
20333
20268
  }
20334
20269
  focus() {
@@ -20350,19 +20285,15 @@ class BasicFocusableItem {
20350
20285
  }
20351
20286
  }
20352
20287
  }
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 });
20288
+ 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
20289
  BasicFocusableItem.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BasicFocusableItem });
20355
20290
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BasicFocusableItem, decorators: [{
20356
20291
  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: [{
20292
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
20361
20293
  type: Inject,
20362
20294
  args: [PLATFORM_ID]
20363
20295
  }] }]; } });
20364
20296
  const BASIC_FOCUSABLE_ITEM_PROVIDER = [
20365
- UNIQUE_ID_PROVIDER,
20366
20297
  {
20367
20298
  provide: FocusableItem,
20368
20299
  useClass: BasicFocusableItem,
@@ -22451,10 +22382,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
22451
22382
  */
22452
22383
  let nbTabContentComponents = 0;
22453
22384
  class ClrTabContent {
22454
- constructor(ifActiveService, id, ariaService, tabsService) {
22385
+ constructor(ifActiveService, id, tabsService) {
22455
22386
  this.ifActiveService = ifActiveService;
22456
22387
  this.id = id;
22457
- this.ariaService = ariaService;
22458
22388
  this.tabsService = tabsService;
22459
22389
  if (!this.tabContentId) {
22460
22390
  this.tabContentId = 'clr-tab-content-' + nbTabContentComponents++;
@@ -22467,13 +22397,7 @@ class ClrTabContent {
22467
22397
  this.viewRef = this.tabsService.tabContentViewContainer.createEmbeddedView(value);
22468
22398
  }
22469
22399
  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;
22400
+ return this.tabsService.children.find(tab => tab.tabContent === this)?.tabLink?.tabLinkId;
22477
22401
  }
22478
22402
  get active() {
22479
22403
  return this.ifActiveService.current === this.id;
@@ -22485,7 +22409,7 @@ class ClrTabContent {
22485
22409
  }
22486
22410
  }
22487
22411
  }
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 });
22412
+ 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
22413
  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
22414
  <ng-template #tabContentProjectedRef>
22491
22415
  <section
@@ -22524,7 +22448,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
22524
22448
  }], ctorParameters: function () { return [{ type: IfActiveService }, { type: undefined, decorators: [{
22525
22449
  type: Inject,
22526
22450
  args: [IF_ACTIVE_ID]
22527
- }] }, { type: AriaService }, { type: TabsService }]; }, propDecorators: { templateRef: [{
22451
+ }] }, { type: TabsService }]; }, propDecorators: { templateRef: [{
22528
22452
  type: ViewChild,
22529
22453
  args: ['tabContentProjectedRef', { static: true }]
22530
22454
  }], tabContentId: [{
@@ -22554,10 +22478,9 @@ const TABS_ID_PROVIDER = {
22554
22478
  */
22555
22479
  let nbTabLinkComponents = 0;
22556
22480
  class ClrTabLink {
22557
- constructor(ifActiveService, id, ariaService, el, cfr, viewContainerRef, tabsService, tabsId) {
22481
+ constructor(ifActiveService, id, el, cfr, viewContainerRef, tabsService, tabsId) {
22558
22482
  this.ifActiveService = ifActiveService;
22559
22483
  this.id = id;
22560
- this.ariaService = ariaService;
22561
22484
  this.el = el;
22562
22485
  this.cfr = cfr;
22563
22486
  this.viewContainerRef = viewContainerRef;
@@ -22584,13 +22507,7 @@ class ClrTabLink {
22584
22507
  return !this.inOverflow;
22585
22508
  }
22586
22509
  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;
22510
+ return this.tabsService.children.find(tab => tab.tabLink === this)?.tabContent?.tabContentId;
22594
22511
  }
22595
22512
  activate() {
22596
22513
  this.ifActiveService.current = this.id;
@@ -22602,7 +22519,7 @@ class ClrTabLink {
22602
22519
  return this.active ? 0 : -1;
22603
22520
  }
22604
22521
  }
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 });
22522
+ 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
22523
  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
22524
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTabLink, decorators: [{
22608
22525
  type: Directive,
@@ -22617,7 +22534,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
22617
22534
  }], ctorParameters: function () { return [{ type: IfActiveService }, { type: undefined, decorators: [{
22618
22535
  type: Inject,
22619
22536
  args: [IF_ACTIVE_ID]
22620
- }] }, { type: AriaService }, { type: i0.ElementRef }, { type: i0.ComponentFactoryResolver }, { type: i0.ViewContainerRef }, { type: TabsService }, { type: undefined, decorators: [{
22537
+ }] }, { type: i0.ElementRef }, { type: i0.ComponentFactoryResolver }, { type: i0.ViewContainerRef }, { type: TabsService }, { type: undefined, decorators: [{
22621
22538
  type: Inject,
22622
22539
  args: [TABS_ID]
22623
22540
  }] }]; }, propDecorators: { inOverflow: [{
@@ -22672,13 +22589,13 @@ class ClrTab {
22672
22589
  }
22673
22590
  }
22674
22591
  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 });
22592
+ 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
22593
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTab, decorators: [{
22677
22594
  type: Component,
22678
22595
  args: [{
22679
22596
  selector: 'clr-tab',
22680
22597
  template: `<ng-content></ng-content>`,
22681
- providers: [IF_ACTIVE_ID_PROVIDER, AriaService],
22598
+ providers: [IF_ACTIVE_ID_PROVIDER],
22682
22599
  }]
22683
22600
  }], ctorParameters: function () { return [{ type: IfActiveService }, { type: undefined, decorators: [{
22684
22601
  type: Inject,
@@ -23564,10 +23481,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
23564
23481
  * The full license information can be found in LICENSE in the root directory of this project.
23565
23482
  */
23566
23483
  class ClrModal {
23567
- constructor(_scrollingService, commonStrings, modalId) {
23484
+ constructor(_scrollingService, commonStrings) {
23568
23485
  this._scrollingService = _scrollingService;
23569
23486
  this.commonStrings = commonStrings;
23570
- this.modalId = modalId;
23487
+ this.modalId = uniqueIdFactory();
23571
23488
  this._open = false;
23572
23489
  this._openChanged = new EventEmitter(false);
23573
23490
  this.closable = true;
@@ -23620,8 +23537,8 @@ class ClrModal {
23620
23537
  }
23621
23538
  }
23622
23539
  }
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: [
23540
+ 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 });
23541
+ 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
23542
  trigger('fadeDown', [
23626
23543
  transition('* => false', [style({ opacity: 0, transform: 'translate(0, -25%)' }), animate('0.2s ease-in-out')]),
23627
23544
  transition('false => *', [animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(0, -25%)' }))]),
@@ -23651,11 +23568,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
23651
23568
  transition('void => *', [style({ opacity: 0 }), animate('0.2s ease-in-out', style({ opacity: 0.85 }))]),
23652
23569
  transition('* => void', [animate('0.2s ease-in-out', style({ opacity: 0 }))]),
23653
23570
  ]),
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: [{
23571
+ ], 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" }]
23572
+ }], ctorParameters: function () { return [{ type: ScrollingService }, { type: ClrCommonStringsService }]; }, propDecorators: { focusTrap: [{
23659
23573
  type: ViewChild,
23660
23574
  args: [FocusTrapDirective]
23661
23575
  }], _open: [{
@@ -23826,20 +23740,20 @@ const POSITIONS$1 = [
23826
23740
  'left-top',
23827
23741
  ];
23828
23742
  class ClrSignpostContent extends AbstractPopover {
23829
- constructor(injector, parentHost, commonStrings, signpostContentId, signpostIdService, signpostFocusManager, platformId, document) {
23743
+ constructor(injector, parentHost, commonStrings, signpostIdService, signpostFocusManager, platformId, document) {
23830
23744
  super(injector, parentHost);
23831
23745
  this.commonStrings = commonStrings;
23832
- this.signpostContentId = signpostContentId;
23833
23746
  this.signpostIdService = signpostIdService;
23834
23747
  this.signpostFocusManager = signpostFocusManager;
23835
23748
  this.platformId = platformId;
23749
+ this.signpostContentId = uniqueIdFactory();
23836
23750
  if (!parentHost) {
23837
23751
  throw new Error('clr-signpost-content should only be used inside of a clr-signpost');
23838
23752
  }
23839
23753
  // Defaults
23840
23754
  this.position = 'right-middle';
23841
23755
  this.closeOnOutsideClick = true;
23842
- this.signpostIdService.setId(signpostContentId);
23756
+ this.signpostIdService.setId(this.signpostContentId);
23843
23757
  this.document = document;
23844
23758
  }
23845
23759
  /**********
@@ -23907,8 +23821,8 @@ class ClrSignpostContent extends AbstractPopover {
23907
23821
  }
23908
23822
  }
23909
23823
  }
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: `
23824
+ 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 });
23825
+ 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
23826
  <div class="signpost-wrap">
23913
23827
  <div class="popover-pointer"></div>
23914
23828
  <div class="signpost-content-header">
@@ -23951,17 +23865,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
23951
23865
  </div>
23952
23866
  `,
23953
23867
  host: { '[class.signpost-content]': 'true', '[id]': 'signpostContentId' },
23954
- providers: [UNIQUE_ID_PROVIDER],
23955
23868
  }]
23956
23869
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ElementRef, decorators: [{
23957
23870
  type: Optional
23958
23871
  }, {
23959
23872
  type: Inject,
23960
23873
  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: [{
23874
+ }] }, { type: ClrCommonStringsService }, { type: SignpostIdService }, { type: SignpostFocusManager }, { type: undefined, decorators: [{
23965
23875
  type: Inject,
23966
23876
  args: [PLATFORM_ID]
23967
23877
  }] }, { type: undefined, decorators: [{
@@ -24025,14 +23935,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
24025
23935
  class ClrTooltip {
24026
23936
  }
24027
23937
  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 });
23938
+ 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
23939
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTooltip, decorators: [{
24037
23940
  type: Component,
24038
23941
  args: [{
@@ -24041,14 +23944,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
24041
23944
  host: {
24042
23945
  '[class.tooltip]': 'true',
24043
23946
  },
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
- ],
23947
+ providers: [ClrPopoverToggleService, { provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef }, TooltipIdService],
24052
23948
  }]
24053
23949
  }] });
24054
23950
 
@@ -24071,17 +23967,14 @@ const SIZES = ['xs', 'sm', 'md', 'lg'];
24071
23967
  const defaultPosition = 'right';
24072
23968
  const defaultSize = 'sm';
24073
23969
  class ClrTooltipContent extends AbstractPopover {
24074
- constructor(injector, parentHost, uniqueId, tooltipIdService) {
23970
+ constructor(injector, parentHost, tooltipIdService) {
24075
23971
  super(injector, parentHost);
24076
- this.uniqueId = uniqueId;
24077
23972
  this.tooltipIdService = tooltipIdService;
24078
- this._position = defaultPosition;
24079
- this._size = defaultSize;
24080
23973
  if (!parentHost) {
24081
23974
  throw new Error('clr-tooltip-content should only be used inside of a clr-tooltip');
24082
23975
  }
24083
23976
  // Set the default id in case consumer does not supply a custom id.
24084
- this.id = uniqueId;
23977
+ this.id = uniqueIdFactory();
24085
23978
  }
24086
23979
  get id() {
24087
23980
  return this._id;
@@ -24138,12 +24031,16 @@ class ClrTooltipContent extends AbstractPopover {
24138
24031
  this._size = newSize;
24139
24032
  this.updateCssClass({ oldClass: `tooltip-${oldSize}`, newClass: `tooltip-${newSize}` });
24140
24033
  }
24034
+ ngOnInit() {
24035
+ this.size = this.size || defaultSize;
24036
+ this.position = this.position || defaultPosition;
24037
+ }
24141
24038
  updateCssClass({ oldClass, newClass }) {
24142
24039
  this.renderer.removeClass(this.el.nativeElement, oldClass);
24143
24040
  this.renderer.addClass(this.el.nativeElement, newClass);
24144
24041
  }
24145
24042
  }
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 });
24043
+ 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
24044
  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
24045
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTooltipContent, decorators: [{
24149
24046
  type: Component,
@@ -24162,9 +24059,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
24162
24059
  }, {
24163
24060
  type: Inject,
24164
24061
  args: [POPOVER_HOST_ANCHOR]
24165
- }] }, { type: undefined, decorators: [{
24166
- type: Inject,
24167
- args: [UNIQUE_ID]
24168
24062
  }] }, { type: TooltipIdService }]; }, propDecorators: { id: [{
24169
24063
  type: Input
24170
24064
  }], position: [{
@@ -26762,14 +26656,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
26762
26656
  * The full license information can be found in LICENSE in the root directory of this project.
26763
26657
  */
26764
26658
  class ClrWizard {
26765
- constructor(platformId, navService, pageCollection, buttonService, headerActionService, elementRef, differs, wizardId) {
26659
+ constructor(platformId, navService, pageCollection, buttonService, headerActionService, elementRef, differs) {
26766
26660
  this.platformId = platformId;
26767
26661
  this.navService = navService;
26768
26662
  this.pageCollection = pageCollection;
26769
26663
  this.buttonService = buttonService;
26770
26664
  this.headerActionService = headerActionService;
26771
26665
  this.elementRef = elementRef;
26772
- this.wizardId = wizardId;
26773
26666
  /**
26774
26667
  * Set the modal size of the wizard. Set using `[clrWizardSize]` input.
26775
26668
  */
@@ -26829,6 +26722,7 @@ class ClrWizard {
26829
26722
  * Listen via `(clrWizardOnPrevious)` event.
26830
26723
  */
26831
26724
  this.onMovePrevious = new EventEmitter(false);
26725
+ this.wizardId = uniqueIdFactory();
26832
26726
  this.subscriptions = [];
26833
26727
  this.subscriptions.push(this.listenForNextPageChanges(), this.listenForPreviousPageChanges(), this.listenForCancelChanges(), this.listenForFinishedChanges(), this.listenForPageChanges());
26834
26728
  this.differ = differs.find([]).create(null);
@@ -27147,23 +27041,11 @@ class ClrWizard {
27147
27041
  this.wizardFinished.emit();
27148
27042
  }
27149
27043
  }
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" }] });
27044
+ 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 });
27045
+ 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
27046
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrWizard, decorators: [{
27159
27047
  type: Component,
27160
- args: [{ selector: 'clr-wizard', providers: [
27161
- WizardNavigationService,
27162
- PageCollectionService,
27163
- ButtonHubService,
27164
- HeaderActionService,
27165
- UNIQUE_ID_PROVIDER,
27166
- ], host: {
27048
+ args: [{ selector: 'clr-wizard', providers: [WizardNavigationService, PageCollectionService, ButtonHubService, HeaderActionService], host: {
27167
27049
  '[class.clr-wizard]': 'true',
27168
27050
  '[class.wizard-md]': "size == 'md'",
27169
27051
  '[class.wizard-lg]': "size == 'lg'",
@@ -27173,10 +27055,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
27173
27055
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
27174
27056
  type: Inject,
27175
27057
  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: [{
27058
+ }] }, { type: WizardNavigationService }, { type: PageCollectionService }, { type: ButtonHubService }, { type: HeaderActionService }, { type: i0.ElementRef }, { type: i0.IterableDiffers }]; }, propDecorators: { size: [{
27180
27059
  type: Input,
27181
27060
  args: ['clrWizardSize']
27182
27061
  }], closable: [{
@@ -27861,5 +27740,5 @@ const CLR_MENU_POSITIONS = [
27861
27740
  * Generated bundle index. Do not edit.
27862
27741
  */
27863
27742
 
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 };
27743
+ 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
27744
  //# sourceMappingURL=clr-angular.mjs.map