@clr/angular 13.9.0 → 13.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/accordion/accordion-panel.d.ts +2 -2
  2. package/accordion/stepper/stepper-panel.d.ts +2 -2
  3. package/button/button-group/button-group.d.ts +2 -2
  4. package/clarity.api.md +49 -44
  5. package/data/datagrid/datagrid-action-overflow.d.ts +2 -2
  6. package/data/datagrid/datagrid-column-separator.d.ts +1 -1
  7. package/data/datagrid/datagrid-column-toggle.d.ts +2 -6
  8. package/data/datagrid/datagrid-filter.d.ts +2 -2
  9. package/data/datagrid/datagrid.d.ts +1 -1
  10. package/data/datagrid/providers/selection.d.ts +1 -3
  11. package/data/stack-view/stack-block.d.ts +3 -3
  12. package/data/stack-view/stack-content-input.d.ts +0 -1
  13. package/data/stack-view/stack-view-custom-tags.d.ts +0 -2
  14. package/data/tree-view/tree-node.d.ts +3 -3
  15. package/esm2020/accordion/accordion-panel.mjs +9 -12
  16. package/esm2020/accordion/stepper/stepper-panel.mjs +7 -11
  17. package/esm2020/button/button-group/button-group.mjs +7 -12
  18. package/esm2020/button/button-group/button.mjs +1 -1
  19. package/esm2020/button/button-loading/loading-button.mjs +1 -1
  20. package/esm2020/data/datagrid/built-in/comparators/datagrid-property-comparator.mjs +1 -1
  21. package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter-impl.mjs +1 -1
  22. package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter.mjs +1 -1
  23. package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter-impl.mjs +1 -1
  24. package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter.mjs +1 -1
  25. package/esm2020/data/datagrid/built-in/nested-property.mjs +1 -1
  26. package/esm2020/data/datagrid/datagrid-action-overflow.mjs +8 -11
  27. package/esm2020/data/datagrid/datagrid-cell.mjs +1 -1
  28. package/esm2020/data/datagrid/datagrid-column-separator.mjs +6 -10
  29. package/esm2020/data/datagrid/datagrid-column-toggle.mjs +9 -22
  30. package/esm2020/data/datagrid/datagrid-column.mjs +1 -1
  31. package/esm2020/data/datagrid/datagrid-detail.mjs +1 -1
  32. package/esm2020/data/datagrid/datagrid-filter.mjs +7 -10
  33. package/esm2020/data/datagrid/datagrid-footer.mjs +1 -1
  34. package/esm2020/data/datagrid/datagrid-hideable-column.mjs +1 -1
  35. package/esm2020/data/datagrid/datagrid-if-detail.mjs +1 -1
  36. package/esm2020/data/datagrid/datagrid-items.mjs +1 -1
  37. package/esm2020/data/datagrid/datagrid-pagination.mjs +1 -1
  38. package/esm2020/data/datagrid/datagrid-placeholder.mjs +1 -1
  39. package/esm2020/data/datagrid/datagrid-row-detail.mjs +1 -1
  40. package/esm2020/data/datagrid/datagrid-row.mjs +1 -1
  41. package/esm2020/data/datagrid/datagrid.mjs +5 -9
  42. package/esm2020/data/datagrid/providers/column-resizer.service.mjs +1 -1
  43. package/esm2020/data/datagrid/providers/detail.service.mjs +1 -1
  44. package/esm2020/data/datagrid/providers/display-mode.service.mjs +1 -1
  45. package/esm2020/data/datagrid/providers/filters.mjs +1 -1
  46. package/esm2020/data/datagrid/providers/global-expandable-rows.mjs +1 -1
  47. package/esm2020/data/datagrid/providers/items.mjs +1 -1
  48. package/esm2020/data/datagrid/providers/page.mjs +1 -1
  49. package/esm2020/data/datagrid/providers/row-action-service.mjs +1 -1
  50. package/esm2020/data/datagrid/providers/selection.mjs +4 -5
  51. package/esm2020/data/datagrid/providers/sort.mjs +1 -1
  52. package/esm2020/data/datagrid/providers/state-debouncer.provider.mjs +1 -1
  53. package/esm2020/data/datagrid/providers/table-size.service.mjs +1 -1
  54. package/esm2020/data/datagrid/render/header-renderer.mjs +1 -1
  55. package/esm2020/data/datagrid/render/main-renderer.mjs +1 -1
  56. package/esm2020/data/datagrid/render/render-organizer.mjs +1 -1
  57. package/esm2020/data/datagrid/render/row-renderer.mjs +1 -1
  58. package/esm2020/data/datagrid/utils/datagrid-filter-registrar.mjs +1 -1
  59. package/esm2020/data/stack-view/stack-block.mjs +7 -11
  60. package/esm2020/data/stack-view/stack-content-input.mjs +7 -10
  61. package/esm2020/data/stack-view/stack-view-custom-tags.mjs +8 -13
  62. package/esm2020/data/tree-view/tree-focus-manager.service.mjs +1 -1
  63. package/esm2020/data/tree-view/tree-node.mjs +7 -20
  64. package/esm2020/emphasis/alert/alerts.mjs +1 -1
  65. package/esm2020/emphasis/alert/providers/icon-and-types.service.mjs +1 -1
  66. package/esm2020/emphasis/alert/providers/multi-alert.service.mjs +1 -1
  67. package/esm2020/forms/checkbox/checkbox-container.mjs +1 -1
  68. package/esm2020/forms/combobox/combobox.mjs +19 -20
  69. package/esm2020/forms/combobox/option-items.directive.mjs +1 -1
  70. package/esm2020/forms/combobox/option.mjs +8 -13
  71. package/esm2020/forms/combobox/options.mjs +10 -19
  72. package/esm2020/forms/combobox/providers/combobox-focus-handler.service.mjs +4 -9
  73. package/esm2020/forms/combobox/providers/option-selection.service.mjs +1 -1
  74. package/esm2020/forms/common/abstract-control.mjs +1 -1
  75. package/esm2020/forms/common/providers/container-id.service.mjs +1 -1
  76. package/esm2020/forms/common/providers/control-id.service.mjs +1 -1
  77. package/esm2020/forms/common/wrapped-control.mjs +1 -8
  78. package/esm2020/forms/datalist/providers/datalist-id.service.mjs +1 -1
  79. package/esm2020/forms/datepicker/date-container.mjs +1 -1
  80. package/esm2020/forms/datepicker/date-input.mjs +1 -1
  81. package/esm2020/forms/datepicker/date-input.validator.mjs +40 -0
  82. package/esm2020/forms/datepicker/datepicker.module.mjs +5 -1
  83. package/esm2020/forms/datepicker/day.mjs +1 -1
  84. package/esm2020/forms/datepicker/index.mjs +2 -1
  85. package/esm2020/forms/datepicker/model/calendar.model.mjs +1 -1
  86. package/esm2020/forms/datepicker/model/day.model.mjs +1 -1
  87. package/esm2020/forms/datepicker/providers/date-form-control.service.mjs +1 -1
  88. package/esm2020/forms/datepicker/providers/date-io.service.mjs +1 -1
  89. package/esm2020/forms/datepicker/providers/date-navigation.service.mjs +1 -1
  90. package/esm2020/forms/datepicker/yearpicker.mjs +1 -10
  91. package/esm2020/forms/radio/radio-container.mjs +1 -1
  92. package/esm2020/layout/nav/aria-current-link.mjs +1 -1
  93. package/esm2020/layout/nav/providers/responsive-navigation.service.mjs +1 -1
  94. package/esm2020/layout/nav/responsive-nav-codes.mjs +1 -1
  95. package/esm2020/layout/tabs/tab-content.mjs +6 -14
  96. package/esm2020/layout/tabs/tab-link.directive.mjs +6 -14
  97. package/esm2020/layout/tabs/tab.mjs +3 -4
  98. package/esm2020/layout/vertical-nav/providers/vertical-nav-group-registration.service.mjs +1 -1
  99. package/esm2020/modal/modal.mjs +9 -12
  100. package/esm2020/popover/common/abstract-popover.mjs +1 -1
  101. package/esm2020/popover/common/popover.mjs +1 -1
  102. package/esm2020/popover/dropdown/dropdown-item.mjs +1 -1
  103. package/esm2020/popover/dropdown/dropdown-trigger.mjs +1 -1
  104. package/esm2020/popover/dropdown/providers/dropdown-focus-handler.service.mjs +6 -9
  105. package/esm2020/popover/signpost/signpost-content.mjs +8 -12
  106. package/esm2020/popover/signpost/signpost-trigger.mjs +1 -1
  107. package/esm2020/popover/signpost/signpost.mjs +1 -1
  108. package/esm2020/popover/tooltip/tooltip-content.mjs +5 -9
  109. package/esm2020/popover/tooltip/tooltip-trigger.mjs +1 -1
  110. package/esm2020/popover/tooltip/tooltip.mjs +3 -18
  111. package/esm2020/timeline/providers/timeline-icon-attribute.service.mjs +1 -1
  112. package/esm2020/timeline/timeline-step.mjs +1 -1
  113. package/esm2020/utils/a11y/aria-live.service.mjs +1 -1
  114. package/esm2020/utils/chocolate/willy-wonka.mjs +1 -1
  115. package/esm2020/utils/conditional/if-active.directive.mjs +1 -1
  116. package/esm2020/utils/conditional/if-active.service.mjs +1 -1
  117. package/esm2020/utils/conditional/if-expanded.service.mjs +1 -1
  118. package/esm2020/utils/conditional/if-open.directive.mjs +1 -1
  119. package/esm2020/utils/drag-and-drop/drag-event.mjs +1 -1
  120. package/esm2020/utils/drag-and-drop/draggable/draggable.mjs +1 -1
  121. package/esm2020/utils/drag-and-drop/providers/drag-event-listener.service.mjs +1 -1
  122. package/esm2020/utils/drag-and-drop/providers/drag-handle-registrar.service.mjs +1 -1
  123. package/esm2020/utils/drag-and-drop/providers/draggable-snapshot.service.mjs +1 -1
  124. package/esm2020/utils/focus/focus.service.mjs +1 -1
  125. package/esm2020/utils/focus/focusable-item/basic-focusable-item.service.mjs +7 -11
  126. package/esm2020/utils/focus/focusable-item/custom-focusable-item-provider.mjs +1 -3
  127. package/esm2020/utils/focus-trap/focus-trap.directive.mjs +1 -1
  128. package/esm2020/utils/id-generator/id-generator.service.mjs +1 -7
  129. package/esm2020/utils/loading/loading.mjs +1 -1
  130. package/esm2020/utils/popover/popover-content.mjs +1 -1
  131. package/esm2020/utils/popover/providers/popover-events.service.mjs +1 -1
  132. package/esm2020/utils/popover/providers/popover-position.service.mjs +1 -1
  133. package/esm2020/utils/popover/providers/popover-toggle.service.mjs +1 -1
  134. package/esm2020/wizard/providers/button-hub.service.mjs +1 -1
  135. package/esm2020/wizard/providers/header-actions.service.mjs +1 -1
  136. package/esm2020/wizard/providers/page-collection.service.mjs +1 -1
  137. package/esm2020/wizard/providers/wizard-navigation.service.mjs +1 -1
  138. package/esm2020/wizard/wizard-button.mjs +1 -1
  139. package/esm2020/wizard/wizard-header-action.mjs +1 -1
  140. package/esm2020/wizard/wizard-page.mjs +1 -1
  141. package/esm2020/wizard/wizard-stepnav-item.mjs +1 -1
  142. package/esm2020/wizard/wizard.mjs +8 -23
  143. package/fesm2015/clr-angular.mjs +414 -561
  144. package/fesm2015/clr-angular.mjs.map +1 -1
  145. package/fesm2020/clr-angular.mjs +421 -560
  146. package/fesm2020/clr-angular.mjs.map +1 -1
  147. package/forms/combobox/combobox.d.ts +4 -5
  148. package/forms/combobox/option.d.ts +1 -2
  149. package/forms/combobox/options.d.ts +3 -6
  150. package/forms/combobox/providers/combobox-focus-handler.service.d.ts +2 -6
  151. package/forms/datepicker/date-input.validator.d.ts +10 -0
  152. package/forms/datepicker/datepicker.module.d.ts +14 -13
  153. package/forms/datepicker/index.d.ts +1 -0
  154. package/forms/datepicker/yearpicker.d.ts +0 -2
  155. package/layout/tabs/tab-content.d.ts +2 -5
  156. package/layout/tabs/tab-link.directive.d.ts +2 -5
  157. package/modal/modal.d.ts +1 -1
  158. package/package.json +1 -1
  159. package/popover/dropdown/providers/dropdown-focus-handler.service.d.ts +4 -7
  160. package/popover/signpost/signpost-content.d.ts +3 -3
  161. package/popover/tooltip/tooltip-content.d.ts +2 -3
  162. package/utils/focus/focusable-item/basic-focusable-item.service.d.ts +4 -7
  163. package/utils/focus/focusable-item/custom-focusable-item-provider.d.ts +1 -4
  164. package/utils/id-generator/id-generator.service.d.ts +0 -6
  165. package/wizard/wizard.d.ts +2 -2
  166. package/esm2020/utils/aria/aria.service.mjs +0 -16
  167. package/utils/aria/aria.service.d.ts +0 -8
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Directive, NgModule, Optional, Input, Injectable, InjectionToken, Component, ChangeDetectionStrategy, EventEmitter, Inject, Output, ContentChildren, PLATFORM_ID, ViewChild, HostBinding, HostListener, SkipSelf, ContentChild, ComponentFactoryResolver, ElementRef, Self, Attribute, Renderer2, LOCALE_ID, ViewContainerRef, NgZone, ChangeDetectorRef, TemplateRef } from '@angular/core';
2
+ import { Directive, NgModule, Optional, Input, Injectable, Component, ChangeDetectionStrategy, EventEmitter, Output, ContentChildren, PLATFORM_ID, Inject, ViewChild, HostBinding, HostListener, SkipSelf, ContentChild, ComponentFactoryResolver, ElementRef, Self, InjectionToken, Attribute, Renderer2, LOCALE_ID, ViewContainerRef, NgZone, ChangeDetectorRef, TemplateRef } from '@angular/core';
3
3
  import * as i5 from '@angular/common';
4
4
  import { CommonModule, isPlatformBrowser, DOCUMENT, NgForOf, getLocaleDayNames, FormStyle, TranslationWidth, getLocaleMonthNames, getLocaleFirstDayOfWeek, getLocaleDateFormat, FormatWidth } from '@angular/common';
5
5
  import { ClarityIcons, angleIcon, exclamationCircleIcon, checkCircleIcon, ellipsisHorizontalIcon, windowCloseIcon, eventIcon, calendarIcon, eyeHideIcon, eyeIcon, ellipsisVerticalIcon, viewColumnsIcon, arrowIcon, timesIcon, stepForward2Icon, angleDoubleIcon, filterGridCircleIcon, filterGridIcon, infoCircleIcon, exclamationTriangleIcon, circleIcon, dotCircleIcon, errorStandardIcon, successStandardIcon } from '@cds/core/icon';
@@ -8,7 +8,7 @@ import * as i3 from 'rxjs';
8
8
  import { Subject, BehaviorSubject, Observable, fromEvent, isObservable, of, ReplaySubject, combineLatest } from 'rxjs';
9
9
  import { trigger, transition, style, animate, keyframes, state } from '@angular/animations';
10
10
  import * as i1 from '@angular/forms';
11
- import { FormControl, FormGroup, FormsModule, SelectMultipleControlValueAccessor } from '@angular/forms';
11
+ import { FormControl, FormGroup, FormsModule, NG_VALIDATORS, SelectMultipleControlValueAccessor } from '@angular/forms';
12
12
  import * as i1$1 from '@angular/router';
13
13
  import { FocusTrapTrackerService, createId, isFocusable, isHTMLElement } from '@cds/core/internal';
14
14
  import '@cds/core/internal-components/close-button/register.js';
@@ -188,14 +188,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
188
188
  * The full license information can be found in LICENSE in the root directory of this project.
189
189
  */
190
190
  let NB_INSTANCES = 0;
191
- const UNIQUE_ID = new InjectionToken('UNIQUE_ID');
192
191
  function uniqueIdFactory() {
193
192
  return 'clr-id-' + NB_INSTANCES++;
194
193
  }
195
- const UNIQUE_ID_PROVIDER = {
196
- provide: UNIQUE_ID,
197
- useFactory: uniqueIdFactory,
198
- };
199
194
 
200
195
  /*
201
196
  * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
@@ -535,16 +530,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
535
530
  * The full license information can be found in LICENSE in the root directory of this project.
536
531
  */
537
532
  class ClrAccordionPanel {
538
- constructor(commonStrings, accordionService, ifExpandService, _id) {
533
+ constructor(commonStrings, accordionService, ifExpandService) {
539
534
  this.commonStrings = commonStrings;
540
535
  this.accordionService = accordionService;
541
536
  this.ifExpandService = ifExpandService;
542
- this._id = _id;
543
537
  this.disabled = false;
544
538
  this.panelOpen = false;
545
539
  this.panelOpenChange = new EventEmitter();
546
540
  this.AccordionStatus = AccordionStatus;
547
541
  this.isAccordion = true;
542
+ this._id = uniqueIdFactory();
548
543
  }
549
544
  get id() {
550
545
  return this._id;
@@ -602,17 +597,12 @@ class ClrAccordionPanel {
602
597
  }
603
598
  }
604
599
  }
605
- 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 });
606
- 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 });
600
+ 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 });
601
+ 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 });
607
602
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrAccordionPanel, decorators: [{
608
603
  type: Component,
609
- 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" }]
610
- }], ctorParameters: function () {
611
- return [{ type: ClrCommonStringsService }, { type: AccordionService }, { type: IfExpandService }, { type: undefined, decorators: [{
612
- type: Inject,
613
- args: [UNIQUE_ID]
614
- }] }];
615
- }, propDecorators: { disabled: [{
604
+ 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" }]
605
+ }], ctorParameters: function () { return [{ type: ClrCommonStringsService }, { type: AccordionService }, { type: IfExpandService }]; }, propDecorators: { disabled: [{
616
606
  type: Input,
617
607
  args: ['clrAccordionPanelDisabled']
618
608
  }], panelOpen: [{
@@ -1057,8 +1047,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
1057
1047
  * The full license information can be found in LICENSE in the root directory of this project.
1058
1048
  */
1059
1049
  class ClrStepperPanel extends ClrAccordionPanel {
1060
- constructor(platformId, commonStrings, formGroupName, ngModelGroup, stepperService, ifExpandService, id) {
1061
- super(commonStrings, stepperService, ifExpandService, id);
1050
+ constructor(platformId, commonStrings, formGroupName, ngModelGroup, stepperService, ifExpandService) {
1051
+ super(commonStrings, stepperService, ifExpandService);
1062
1052
  this.platformId = platformId;
1063
1053
  this.commonStrings = commonStrings;
1064
1054
  this.formGroupName = formGroupName;
@@ -1104,11 +1094,11 @@ class ClrStepperPanel extends ClrAccordionPanel {
1104
1094
  }
1105
1095
  }
1106
1096
  }
1107
- 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 });
1108
- 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 });
1097
+ 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 });
1098
+ 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 });
1109
1099
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrStepperPanel, decorators: [{
1110
1100
  type: Component,
1111
- 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" }]
1101
+ 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" }]
1112
1102
  }], ctorParameters: function () {
1113
1103
  return [{ type: undefined, decorators: [{
1114
1104
  type: Inject,
@@ -1117,10 +1107,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
1117
1107
  type: Optional
1118
1108
  }] }, { type: i1.NgModelGroup, decorators: [{
1119
1109
  type: Optional
1120
- }] }, { type: StepperService }, { type: IfExpandService }, { type: undefined, decorators: [{
1121
- type: Inject,
1122
- args: [UNIQUE_ID]
1123
- }] }];
1110
+ }] }, { type: StepperService }, { type: IfExpandService }];
1124
1111
  }, propDecorators: { headerButton: [{
1125
1112
  type: ViewChild,
1126
1113
  args: ['headerButton']
@@ -2630,12 +2617,12 @@ ClrPopoverPositions['left-bottom'] = {
2630
2617
  * The full license information can be found in LICENSE in the root directory of this project.
2631
2618
  */
2632
2619
  class ClrButtonGroup {
2633
- constructor(buttonGroupNewService, toggleService, popoverId, commonStrings, destroy$) {
2620
+ constructor(buttonGroupNewService, toggleService, commonStrings, destroy$) {
2634
2621
  this.buttonGroupNewService = buttonGroupNewService;
2635
2622
  this.toggleService = toggleService;
2636
- this.popoverId = popoverId;
2637
2623
  this.commonStrings = commonStrings;
2638
2624
  this.destroy$ = destroy$;
2625
+ this.popoverId = uniqueIdFactory();
2639
2626
  this.popoverPosition = ClrPopoverPositions['bottom-left'];
2640
2627
  this.inlineButtons = [];
2641
2628
  this.menuButtons = [];
@@ -2720,10 +2707,9 @@ class ClrButtonGroup {
2720
2707
  this.popoverPosition = ClrPopoverPositions[this._menuPosition];
2721
2708
  }
2722
2709
  }
2723
- 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 });
2710
+ 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 });
2724
2711
  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: [
2725
2712
  ButtonInGroupService,
2726
- UNIQUE_ID_PROVIDER,
2727
2713
  ClrPopoverToggleService,
2728
2714
  ClrPopoverEventsService,
2729
2715
  ClrPopoverPositionService,
@@ -2733,18 +2719,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
2733
2719
  type: Component,
2734
2720
  args: [{ selector: 'clr-button-group', providers: [
2735
2721
  ButtonInGroupService,
2736
- UNIQUE_ID_PROVIDER,
2737
2722
  ClrPopoverToggleService,
2738
2723
  ClrPopoverEventsService,
2739
2724
  ClrPopoverPositionService,
2740
2725
  ClrDestroyService,
2741
2726
  ], 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" }]
2742
- }], ctorParameters: function () {
2743
- return [{ type: ButtonInGroupService }, { type: ClrPopoverToggleService }, { type: undefined, decorators: [{
2744
- type: Inject,
2745
- args: [UNIQUE_ID]
2746
- }] }, { type: ClrCommonStringsService }, { type: ClrDestroyService }];
2747
- }, propDecorators: { buttons: [{
2727
+ }], ctorParameters: function () { return [{ type: ButtonInGroupService }, { type: ClrPopoverToggleService }, { type: ClrCommonStringsService }, { type: ClrDestroyService }]; }, propDecorators: { buttons: [{
2748
2728
  type: ContentChildren,
2749
2729
  args: [ClrButton]
2750
2730
  }], menuPosition: [{
@@ -3755,13 +3735,6 @@ class WrappedFormControl {
3755
3735
  }
3756
3736
  triggerValidation() {
3757
3737
  if (this.ifControlStateService) {
3758
- /**
3759
- * For some reason the <input type="number" /> on blur ngControl doesn't set the control to 'touched'
3760
- * This one is a workaround to provide the control to be 'touched' on blur and fix #4480.
3761
- */
3762
- if (this.ngControl && !this.ngControl.touched) {
3763
- this.markAsTouched();
3764
- }
3765
3738
  this.ifControlStateService.triggerStatusChange();
3766
3739
  }
3767
3740
  }
@@ -5257,20 +5230,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
5257
5230
  */
5258
5231
  const POPOVER_HOST_ANCHOR = new InjectionToken('POPOVER_HOST_ANCHOR');
5259
5232
 
5260
- /*
5261
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
5262
- * This software is released under MIT license.
5263
- * The full license information can be found in LICENSE in the root directory of this project.
5264
- */
5265
- // TODO: if we find more components that could use this, consider moving this to utils
5266
- class AriaService {
5267
- }
5268
- AriaService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AriaService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5269
- AriaService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AriaService });
5270
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AriaService, decorators: [{
5271
- type: Injectable
5272
- }] });
5273
-
5274
5233
  /*
5275
5234
  * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
5276
5235
  * This software is released under MIT license.
@@ -5656,7 +5615,6 @@ class FocusableItem {
5656
5615
  */
5657
5616
  function customFocusableItemProvider(implementation) {
5658
5617
  return [
5659
- UNIQUE_ID_PROVIDER,
5660
5618
  implementation,
5661
5619
  {
5662
5620
  provide: FocusableItem,
@@ -5769,8 +5727,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
5769
5727
  * The full license information can be found in LICENSE in the root directory of this project.
5770
5728
  */
5771
5729
  class ComboboxFocusHandler {
5772
- constructor(id, rendererFactory, toggleService, selectionService, platformId) {
5773
- this.id = id;
5730
+ constructor(rendererFactory, toggleService, selectionService, platformId) {
5774
5731
  this.toggleService = toggleService;
5775
5732
  this.selectionService = selectionService;
5776
5733
  this.platformId = platformId;
@@ -5948,15 +5905,12 @@ class ComboboxFocusHandler {
5948
5905
  this.optionData = options;
5949
5906
  }
5950
5907
  }
5951
- 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 });
5908
+ 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 });
5952
5909
  ComboboxFocusHandler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ComboboxFocusHandler });
5953
5910
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ComboboxFocusHandler, decorators: [{
5954
5911
  type: Injectable
5955
5912
  }], ctorParameters: function () {
5956
- return [{ type: undefined, decorators: [{
5957
- type: Inject,
5958
- args: [UNIQUE_ID]
5959
- }] }, { type: i0.RendererFactory2 }, { type: ClrPopoverToggleService }, { type: OptionSelectionService }, { type: undefined, decorators: [{
5913
+ return [{ type: i0.RendererFactory2 }, { type: ClrPopoverToggleService }, { type: OptionSelectionService }, { type: undefined, decorators: [{
5960
5914
  type: Inject,
5961
5915
  args: [PLATFORM_ID]
5962
5916
  }] }];
@@ -5975,13 +5929,240 @@ class OptionData {
5975
5929
  }
5976
5930
  }
5977
5931
 
5932
+ /*
5933
+ * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
5934
+ * This software is released under MIT license.
5935
+ * The full license information can be found in LICENSE in the root directory of this project.
5936
+ */
5937
+ class ClrOption {
5938
+ constructor(elRef, commonStrings, focusHandler, optionSelectionService) {
5939
+ this.elRef = elRef;
5940
+ this.commonStrings = commonStrings;
5941
+ this.focusHandler = focusHandler;
5942
+ this.optionSelectionService = optionSelectionService;
5943
+ // A proxy with only the necessary data to be used for a11y and the focus handler service.
5944
+ this.optionProxy = new OptionData(null, null);
5945
+ this.optionProxy.el = this.elRef.nativeElement;
5946
+ }
5947
+ set optionId(id) {
5948
+ this._id = id;
5949
+ this.optionProxy.id = this._id;
5950
+ }
5951
+ get optionId() {
5952
+ return this._id;
5953
+ }
5954
+ set value(value) {
5955
+ this._value = value;
5956
+ this.optionProxy.value = value;
5957
+ }
5958
+ get value() {
5959
+ return this._value;
5960
+ }
5961
+ get selected() {
5962
+ return (this.optionSelectionService.selectionModel && this.optionSelectionService.selectionModel.containsItem(this.value));
5963
+ }
5964
+ ngOnInit() {
5965
+ if (!this._id) {
5966
+ this._id = 'clr-option-' + uniqueIdFactory();
5967
+ this.optionProxy.id = this._id;
5968
+ }
5969
+ }
5970
+ onClick() {
5971
+ if (this.optionSelectionService.multiselectable) {
5972
+ this.optionSelectionService.toggle(this.value);
5973
+ }
5974
+ else {
5975
+ this.optionSelectionService.select(this.value);
5976
+ }
5977
+ // As the popover stays open in multi-select mode now, we have to take focus back to the input
5978
+ // This way we achieve two things:
5979
+ // - do not lose focus
5980
+ // - we're still able to use onBlur for "outside-click" handling
5981
+ this.focusHandler.focusInput();
5982
+ }
5983
+ get focusClass() {
5984
+ return this.focusHandler.pseudoFocus.containsItem(this.optionProxy);
5985
+ }
5986
+ }
5987
+ 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 });
5988
+ 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: `
5989
+ <ng-content></ng-content>
5990
+ <span *ngIf="selected" class="clr-sr-only">{{ commonStrings.keys.comboboxSelected }}</span>
5991
+ `, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
5992
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrOption, decorators: [{
5993
+ type: Component,
5994
+ args: [{
5995
+ selector: 'clr-option',
5996
+ template: `
5997
+ <ng-content></ng-content>
5998
+ <span *ngIf="selected" class="clr-sr-only">{{ commonStrings.keys.comboboxSelected }}</span>
5999
+ `,
6000
+ host: {
6001
+ '[class.clr-combobox-option]': 'true',
6002
+ '[attr.role]': '"option"',
6003
+ // Do not remove. Or click-selection will not work.
6004
+ '[attr.tabindex]': '-1',
6005
+ '[attr.id]': 'optionId',
6006
+ },
6007
+ }]
6008
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ClrCommonStringsService }, { type: ComboboxFocusHandler }, { type: OptionSelectionService }]; }, propDecorators: { optionId: [{
6009
+ type: Input,
6010
+ args: ['id']
6011
+ }], value: [{
6012
+ type: Input,
6013
+ args: ['clrValue']
6014
+ }], selected: [{
6015
+ type: HostBinding,
6016
+ args: ['class.active']
6017
+ }], onClick: [{
6018
+ type: HostListener,
6019
+ args: ['click']
6020
+ }], focusClass: [{
6021
+ type: HostBinding,
6022
+ args: ['class.clr-focus']
6023
+ }] } });
6024
+
6025
+ /*
6026
+ * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
6027
+ * This software is released under MIT license.
6028
+ * The full license information can be found in LICENSE in the root directory of this project.
6029
+ */
6030
+ let nbOptionsComponents = 0;
6031
+ class ClrOptions {
6032
+ constructor(optionSelectionService, id, el, commonStrings, focusHandler, toggleService, parentHost, document) {
6033
+ this.optionSelectionService = optionSelectionService;
6034
+ this.id = id;
6035
+ this.el = el;
6036
+ this.commonStrings = commonStrings;
6037
+ this.focusHandler = focusHandler;
6038
+ this.toggleService = toggleService;
6039
+ this.document = document;
6040
+ this.loading = false;
6041
+ this.subscriptions = [];
6042
+ if (!parentHost) {
6043
+ throw new Error('clr-options should only be used inside of a clr-combobox');
6044
+ }
6045
+ if (!this.optionsId) {
6046
+ this.optionsId = 'clr-options-' + nbOptionsComponents++;
6047
+ }
6048
+ }
6049
+ searchText(input) {
6050
+ return this.commonStrings.parse(this.commonStrings.keys.comboboxSearching, { INPUT: input });
6051
+ }
6052
+ /**
6053
+ * Tests if the list of options is empty, meaning it doesn't contain any items
6054
+ */
6055
+ get emptyOptions() {
6056
+ return !this.optionSelectionService.loading && this.items.length === 0;
6057
+ }
6058
+ set items(items) {
6059
+ this._items = items;
6060
+ this.focusHandler.addOptionValues(this._items.map(option => option.optionProxy));
6061
+ }
6062
+ get items() {
6063
+ return this._items;
6064
+ }
6065
+ loadingStateChange(state) {
6066
+ this.loading = state === ClrLoadingState.LOADING;
6067
+ }
6068
+ ngAfterViewInit() {
6069
+ this.focusHandler.listbox = this.el.nativeElement;
6070
+ this.subscriptions.push(fromEvent(this.document, 'scroll', { capture: true }).subscribe(event => {
6071
+ if (this.toggleService.open &&
6072
+ event.target !== this.el.nativeElement &&
6073
+ event.target !== this.focusHandler.textInput) {
6074
+ this.toggleService.open = false;
6075
+ }
6076
+ }), this.items.changes.subscribe(() => {
6077
+ setTimeout(() => {
6078
+ this.focusHandler.focusFirstActive();
6079
+ });
6080
+ }));
6081
+ }
6082
+ ngOnDestroy() {
6083
+ this.subscriptions.forEach(sub => sub.unsubscribe());
6084
+ }
6085
+ }
6086
+ 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 });
6087
+ 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: `
6088
+ <div *ngIf="optionSelectionService.loading" class="clr-combobox-options-loading">
6089
+ <clr-spinner clrInline>
6090
+ {{ commonStrings.keys.loading }}
6091
+ </clr-spinner>
6092
+ <span class="clr-combobox-options-text">
6093
+ {{ searchText(optionSelectionService.currentInput) }}
6094
+ </span>
6095
+ </div>
6096
+
6097
+ <!-- Rendered if data set is empty -->
6098
+ <div *ngIf="emptyOptions">
6099
+ <span class="clr-combobox-options-empty-text">
6100
+ {{ commonStrings.keys.comboboxNoResults }}
6101
+ </span>
6102
+ </div>
6103
+
6104
+ <!--Option Groups and Options will be projected here-->
6105
+ <ng-content></ng-content>
6106
+ `, isInline: true, components: [{ type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
6107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrOptions, decorators: [{
6108
+ type: Component,
6109
+ args: [{
6110
+ selector: 'clr-options',
6111
+ template: `
6112
+ <div *ngIf="optionSelectionService.loading" class="clr-combobox-options-loading">
6113
+ <clr-spinner clrInline>
6114
+ {{ commonStrings.keys.loading }}
6115
+ </clr-spinner>
6116
+ <span class="clr-combobox-options-text">
6117
+ {{ searchText(optionSelectionService.currentInput) }}
6118
+ </span>
6119
+ </div>
6120
+
6121
+ <!-- Rendered if data set is empty -->
6122
+ <div *ngIf="emptyOptions">
6123
+ <span class="clr-combobox-options-empty-text">
6124
+ {{ commonStrings.keys.comboboxNoResults }}
6125
+ </span>
6126
+ </div>
6127
+
6128
+ <!--Option Groups and Options will be projected here-->
6129
+ <ng-content></ng-content>
6130
+ `,
6131
+ providers: [{ provide: LoadingListener, useExisting: ClrOptions }],
6132
+ host: {
6133
+ '[class.clr-combobox-options]': 'true',
6134
+ '[attr.role]': '"listbox"',
6135
+ '[id]': 'optionsId',
6136
+ },
6137
+ }]
6138
+ }], ctorParameters: function () {
6139
+ return [{ type: OptionSelectionService }, { type: undefined, decorators: [{
6140
+ type: Inject,
6141
+ args: [IF_ACTIVE_ID]
6142
+ }] }, { type: i0.ElementRef }, { type: ClrCommonStringsService }, { type: ComboboxFocusHandler }, { type: ClrPopoverToggleService }, { type: i0.ElementRef, decorators: [{
6143
+ type: Optional
6144
+ }, {
6145
+ type: Inject,
6146
+ args: [POPOVER_HOST_ANCHOR]
6147
+ }] }, { type: undefined, decorators: [{
6148
+ type: Inject,
6149
+ args: [DOCUMENT]
6150
+ }] }];
6151
+ }, propDecorators: { optionsId: [{
6152
+ type: Input,
6153
+ args: ['id']
6154
+ }], items: [{
6155
+ type: ContentChildren,
6156
+ args: [ClrOption]
6157
+ }] } });
6158
+
5978
6159
  /*
5979
6160
  * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
5980
6161
  * This software is released under MIT license.
5981
6162
  * The full license information can be found in LICENSE in the root directory of this project.
5982
6163
  */
5983
6164
  class ClrCombobox extends WrappedFormControl {
5984
- constructor(vcr, injector, control, renderer, el, optionSelectionService, commonStrings, toggleService, positionService, controlStateService, containerService, platformId, ariaService, focusHandler, cdr) {
6165
+ constructor(vcr, injector, control, renderer, el, optionSelectionService, commonStrings, toggleService, positionService, controlStateService, containerService, platformId, focusHandler, cdr) {
5985
6166
  super(vcr, ClrComboboxContainer, injector, control, renderer, el);
5986
6167
  this.control = control;
5987
6168
  this.renderer = renderer;
@@ -5993,7 +6174,6 @@ class ClrCombobox extends WrappedFormControl {
5993
6174
  this.controlStateService = controlStateService;
5994
6175
  this.containerService = containerService;
5995
6176
  this.platformId = platformId;
5996
- this.ariaService = ariaService;
5997
6177
  this.focusHandler = focusHandler;
5998
6178
  this.cdr = cdr;
5999
6179
  this.index = 1;
@@ -6081,10 +6261,12 @@ class ClrCombobox extends WrappedFormControl {
6081
6261
  return this.optionSelectionService.multiselectable;
6082
6262
  }
6083
6263
  get ariaControls() {
6084
- return this.ariaService.ariaControls;
6264
+ var _a;
6265
+ return (_a = this.options) === null || _a === void 0 ? void 0 : _a.optionsId;
6085
6266
  }
6086
6267
  get ariaOwns() {
6087
- return this.ariaService.ariaOwns;
6268
+ var _a;
6269
+ return (_a = this.options) === null || _a === void 0 ? void 0 : _a.optionsId;
6088
6270
  }
6089
6271
  get ariaDescribedBySelection() {
6090
6272
  return 'selection-' + this.id;
@@ -6222,20 +6404,19 @@ class ClrCombobox extends WrappedFormControl {
6222
6404
  this.el = this.textbox;
6223
6405
  }
6224
6406
  }
6225
- 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 });
6407
+ 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 });
6226
6408
  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: [
6227
6409
  ClrPopoverToggleService,
6228
6410
  { provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef },
6229
6411
  OptionSelectionService,
6230
6412
  { provide: LoadingListener, useExisting: ClrCombobox },
6231
6413
  IF_ACTIVE_ID_PROVIDER,
6232
- AriaService,
6233
6414
  FOCUS_SERVICE_PROVIDER,
6234
6415
  COMBOBOX_FOCUS_HANDLER_PROVIDER,
6235
6416
  ClrPopoverToggleService,
6236
6417
  ClrPopoverEventsService,
6237
6418
  ClrPopoverPositionService,
6238
- ], 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"] }] });
6419
+ ], 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"] }] });
6239
6420
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrCombobox, decorators: [{
6240
6421
  type: Component,
6241
6422
  args: [{ selector: 'clr-combobox', providers: [
@@ -6244,7 +6425,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
6244
6425
  OptionSelectionService,
6245
6426
  { provide: LoadingListener, useExisting: ClrCombobox },
6246
6427
  IF_ACTIVE_ID_PROVIDER,
6247
- AriaService,
6248
6428
  FOCUS_SERVICE_PROVIDER,
6249
6429
  COMBOBOX_FOCUS_HANDLER_PROVIDER,
6250
6430
  ClrPopoverToggleService,
@@ -6267,134 +6447,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
6267
6447
  }] }, { type: undefined, decorators: [{
6268
6448
  type: Inject,
6269
6449
  args: [PLATFORM_ID]
6270
- }] }, { type: AriaService }, { type: ComboboxFocusHandler }, { type: i0.ChangeDetectorRef }];
6271
- }, propDecorators: { textbox: [{
6272
- type: ViewChild,
6273
- args: ['textboxInput']
6274
- }], trigger: [{
6275
- type: ViewChild,
6276
- args: ['trigger']
6277
- }], optionSelected: [{
6278
- type: ContentChild,
6279
- args: [ClrOptionSelected]
6280
- }], placeholder: [{
6281
- type: Input,
6282
- args: ['placeholder']
6283
- }], multiSelect: [{
6284
- type: Input,
6285
- args: ['clrMulti']
6286
- }], onKeyUp: [{
6287
- type: HostListener,
6288
- args: ['keydown', ['$event']]
6289
- }], clrInputChange: [{
6290
- type: Output,
6291
- args: ['clrInputChange']
6292
- }], clrOpenChange: [{
6293
- type: Output,
6294
- args: ['clrOpenChange']
6295
- }], clrSelectionChange: [{
6296
- type: Output,
6297
- args: ['clrSelectionChange']
6298
- }] } });
6299
-
6300
- /*
6301
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
6302
- * This software is released under MIT license.
6303
- * The full license information can be found in LICENSE in the root directory of this project.
6304
- */
6305
- class ClrOption {
6306
- constructor(elRef, commonStrings, focusHandler, optionSelectionService, autoId) {
6307
- this.elRef = elRef;
6308
- this.commonStrings = commonStrings;
6309
- this.focusHandler = focusHandler;
6310
- this.optionSelectionService = optionSelectionService;
6311
- this.autoId = autoId;
6312
- // A proxy with only the necessary data to be used for a11y and the focus handler service.
6313
- this.optionProxy = new OptionData(null, null);
6314
- this.optionProxy.el = this.elRef.nativeElement;
6315
- }
6316
- set optionId(id) {
6317
- this._id = id;
6318
- this.optionProxy.id = this._id;
6319
- }
6320
- get optionId() {
6321
- return this._id;
6322
- }
6323
- set value(value) {
6324
- this._value = value;
6325
- this.optionProxy.value = value;
6326
- }
6327
- get value() {
6328
- return this._value;
6329
- }
6330
- get selected() {
6331
- return (this.optionSelectionService.selectionModel && this.optionSelectionService.selectionModel.containsItem(this.value));
6332
- }
6333
- ngOnInit() {
6334
- if (!this._id) {
6335
- this._id = 'clr-option-' + this.autoId;
6336
- this.optionProxy.id = this._id;
6337
- }
6338
- }
6339
- onClick() {
6340
- if (this.optionSelectionService.multiselectable) {
6341
- this.optionSelectionService.toggle(this.value);
6342
- }
6343
- else {
6344
- this.optionSelectionService.select(this.value);
6345
- }
6346
- // As the popover stays open in multi-select mode now, we have to take focus back to the input
6347
- // This way we achieve two things:
6348
- // - do not lose focus
6349
- // - we're still able to use onBlur for "outside-click" handling
6350
- this.focusHandler.focusInput();
6351
- }
6352
- get focusClass() {
6353
- return this.focusHandler.pseudoFocus.containsItem(this.optionProxy);
6354
- }
6355
- }
6356
- 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 });
6357
- 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: `
6358
- <ng-content></ng-content>
6359
- <span *ngIf="selected" class="clr-sr-only">{{ commonStrings.keys.comboboxSelected }}</span>
6360
- `, isInline: true, directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
6361
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrOption, decorators: [{
6362
- type: Component,
6363
- args: [{
6364
- selector: 'clr-option',
6365
- template: `
6366
- <ng-content></ng-content>
6367
- <span *ngIf="selected" class="clr-sr-only">{{ commonStrings.keys.comboboxSelected }}</span>
6368
- `,
6369
- providers: [UNIQUE_ID_PROVIDER],
6370
- host: {
6371
- '[class.clr-combobox-option]': 'true',
6372
- '[attr.role]': '"option"',
6373
- // Do not remove. Or click-selection will not work.
6374
- '[attr.tabindex]': '-1',
6375
- '[attr.id]': 'optionId',
6376
- },
6377
- }]
6378
- }], ctorParameters: function () {
6379
- return [{ type: i0.ElementRef }, { type: ClrCommonStringsService }, { type: ComboboxFocusHandler }, { type: OptionSelectionService }, { type: undefined, decorators: [{
6380
- type: Inject,
6381
- args: [UNIQUE_ID]
6382
- }] }];
6383
- }, propDecorators: { optionId: [{
6450
+ }] }, { type: ComboboxFocusHandler }, { type: i0.ChangeDetectorRef }];
6451
+ }, propDecorators: { textbox: [{
6452
+ type: ViewChild,
6453
+ args: ['textboxInput']
6454
+ }], trigger: [{
6455
+ type: ViewChild,
6456
+ args: ['trigger']
6457
+ }], optionSelected: [{
6458
+ type: ContentChild,
6459
+ args: [ClrOptionSelected]
6460
+ }], options: [{
6461
+ type: ContentChild,
6462
+ args: [ClrOptions]
6463
+ }], placeholder: [{
6384
6464
  type: Input,
6385
- args: ['id']
6386
- }], value: [{
6465
+ args: ['placeholder']
6466
+ }], multiSelect: [{
6387
6467
  type: Input,
6388
- args: ['clrValue']
6389
- }], selected: [{
6390
- type: HostBinding,
6391
- args: ['class.active']
6392
- }], onClick: [{
6468
+ args: ['clrMulti']
6469
+ }], onKeyUp: [{
6393
6470
  type: HostListener,
6394
- args: ['click']
6395
- }], focusClass: [{
6396
- type: HostBinding,
6397
- args: ['class.clr-focus']
6471
+ args: ['keydown', ['$event']]
6472
+ }], clrInputChange: [{
6473
+ type: Output,
6474
+ args: ['clrInputChange']
6475
+ }], clrOpenChange: [{
6476
+ type: Output,
6477
+ args: ['clrOpenChange']
6478
+ }], clrSelectionChange: [{
6479
+ type: Output,
6480
+ args: ['clrSelectionChange']
6398
6481
  }] } });
6399
6482
 
6400
6483
  /*
@@ -6489,148 +6572,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
6489
6572
  args: ['clrOptionItemsField']
6490
6573
  }] } });
6491
6574
 
6492
- /*
6493
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
6494
- * This software is released under MIT license.
6495
- * The full license information can be found in LICENSE in the root directory of this project.
6496
- */
6497
- let nbOptionsComponents = 0;
6498
- class ClrOptions {
6499
- constructor(optionSelectionService, id, ariaService, el, commonStrings, focusHandler, toggleService, parentHost, document) {
6500
- this.optionSelectionService = optionSelectionService;
6501
- this.id = id;
6502
- this.ariaService = ariaService;
6503
- this.el = el;
6504
- this.commonStrings = commonStrings;
6505
- this.focusHandler = focusHandler;
6506
- this.toggleService = toggleService;
6507
- this.document = document;
6508
- this.loading = false;
6509
- this.subscriptions = [];
6510
- if (!parentHost) {
6511
- throw new Error('clr-options should only be used inside of a clr-combobox');
6512
- }
6513
- if (!this.optionsId) {
6514
- this.optionsId = 'clr-options-' + nbOptionsComponents++;
6515
- }
6516
- }
6517
- searchText(input) {
6518
- return this.commonStrings.parse(this.commonStrings.keys.comboboxSearching, { INPUT: input });
6519
- }
6520
- /**
6521
- * Tests if the list of options is empty, meaning it doesn't contain any items
6522
- */
6523
- get emptyOptions() {
6524
- return !this.optionSelectionService.loading && this.items.length === 0;
6525
- }
6526
- set optionsId(id) {
6527
- this.ariaService.ariaControls = id;
6528
- this.ariaService.ariaOwns = id;
6529
- }
6530
- get optionsId() {
6531
- return this.ariaService.ariaControls;
6532
- }
6533
- set items(items) {
6534
- this._items = items;
6535
- this.focusHandler.addOptionValues(this._items.map(option => option.optionProxy));
6536
- }
6537
- get items() {
6538
- return this._items;
6539
- }
6540
- loadingStateChange(state) {
6541
- this.loading = state === ClrLoadingState.LOADING;
6542
- }
6543
- ngAfterViewInit() {
6544
- this.focusHandler.listbox = this.el.nativeElement;
6545
- this.subscriptions.push(fromEvent(this.document, 'scroll', { capture: true }).subscribe(event => {
6546
- if (this.toggleService.open &&
6547
- event.target !== this.el.nativeElement &&
6548
- event.target !== this.focusHandler.textInput) {
6549
- this.toggleService.open = false;
6550
- }
6551
- }), this.items.changes.subscribe(() => {
6552
- setTimeout(() => {
6553
- this.focusHandler.focusFirstActive();
6554
- });
6555
- }));
6556
- }
6557
- ngOnDestroy() {
6558
- this.subscriptions.forEach(sub => sub.unsubscribe());
6559
- }
6560
- }
6561
- 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 });
6562
- 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: `
6563
- <div *ngIf="optionSelectionService.loading" class="clr-combobox-options-loading">
6564
- <clr-spinner clrInline>
6565
- {{ commonStrings.keys.loading }}
6566
- </clr-spinner>
6567
- <span class="clr-combobox-options-text">
6568
- {{ searchText(optionSelectionService.currentInput) }}
6569
- </span>
6570
- </div>
6571
-
6572
- <!-- Rendered if data set is empty -->
6573
- <div *ngIf="emptyOptions">
6574
- <span class="clr-combobox-options-empty-text">
6575
- {{ commonStrings.keys.comboboxNoResults }}
6576
- </span>
6577
- </div>
6578
-
6579
- <!--Option Groups and Options will be projected here-->
6580
- <ng-content></ng-content>
6581
- `, isInline: true, components: [{ type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
6582
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrOptions, decorators: [{
6583
- type: Component,
6584
- args: [{
6585
- selector: 'clr-options',
6586
- template: `
6587
- <div *ngIf="optionSelectionService.loading" class="clr-combobox-options-loading">
6588
- <clr-spinner clrInline>
6589
- {{ commonStrings.keys.loading }}
6590
- </clr-spinner>
6591
- <span class="clr-combobox-options-text">
6592
- {{ searchText(optionSelectionService.currentInput) }}
6593
- </span>
6594
- </div>
6595
-
6596
- <!-- Rendered if data set is empty -->
6597
- <div *ngIf="emptyOptions">
6598
- <span class="clr-combobox-options-empty-text">
6599
- {{ commonStrings.keys.comboboxNoResults }}
6600
- </span>
6601
- </div>
6602
-
6603
- <!--Option Groups and Options will be projected here-->
6604
- <ng-content></ng-content>
6605
- `,
6606
- providers: [{ provide: LoadingListener, useExisting: ClrOptions }],
6607
- host: {
6608
- '[class.clr-combobox-options]': 'true',
6609
- '[attr.role]': '"listbox"',
6610
- '[id]': 'optionsId',
6611
- },
6612
- }]
6613
- }], ctorParameters: function () {
6614
- return [{ type: OptionSelectionService }, { type: undefined, decorators: [{
6615
- type: Inject,
6616
- args: [IF_ACTIVE_ID]
6617
- }] }, { type: AriaService }, { type: i0.ElementRef }, { type: ClrCommonStringsService }, { type: ComboboxFocusHandler }, { type: ClrPopoverToggleService }, { type: i0.ElementRef, decorators: [{
6618
- type: Optional
6619
- }, {
6620
- type: Inject,
6621
- args: [POPOVER_HOST_ANCHOR]
6622
- }] }, { type: undefined, decorators: [{
6623
- type: Inject,
6624
- args: [DOCUMENT]
6625
- }] }];
6626
- }, propDecorators: { optionsId: [{
6627
- type: Input,
6628
- args: ['id']
6629
- }], items: [{
6630
- type: ContentChildren,
6631
- args: [ClrOption]
6632
- }] } });
6633
-
6634
6575
  /*
6635
6576
  * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
6636
6577
  * This software is released under MIT license.
@@ -8647,7 +8588,6 @@ class ClrYearpicker {
8647
8588
  this.commonStrings = commonStrings;
8648
8589
  this.yearRangeModel = new YearRangeModel(this.calendarYear);
8649
8590
  this._focusedYear = this.calendarYear;
8650
- this.updateRange(this.yearRangeModel);
8651
8591
  }
8652
8592
  /**
8653
8593
  * Gets the year which the user is currently on.
@@ -8684,7 +8624,6 @@ class ClrYearpicker {
8684
8624
  */
8685
8625
  previousDecade() {
8686
8626
  this.yearRangeModel = this.yearRangeModel.previousDecade();
8687
- this.updateRange(this.yearRangeModel);
8688
8627
  // Year in the yearpicker is not focused because while navigating to a different decade,
8689
8628
  // you want the focus to remain on the decade switcher arrows.
8690
8629
  }
@@ -8696,14 +8635,12 @@ class ClrYearpicker {
8696
8635
  this.yearRangeModel = this.yearRangeModel.currentDecade();
8697
8636
  }
8698
8637
  this._datepickerFocusService.focusCell(this._elRef);
8699
- this.updateRange(this.yearRangeModel);
8700
8638
  }
8701
8639
  /**
8702
8640
  * Updates the YearRangeModel to the next decade.
8703
8641
  */
8704
8642
  nextDecade() {
8705
8643
  this.yearRangeModel = this.yearRangeModel.nextDecade();
8706
- this.updateRange(this.yearRangeModel);
8707
8644
  // Year in the yearpicker is not focused because while navigating to a different decade,
8708
8645
  // you want the focus to remain on the decade switcher arrows.
8709
8646
  }
@@ -8748,11 +8685,6 @@ class ClrYearpicker {
8748
8685
  }
8749
8686
  }
8750
8687
  }
8751
- updateRange(yrm) {
8752
- const floor = yrm.yearRange[0];
8753
- const ceil = yrm.yearRange[yrm.yearRange.length - 1];
8754
- this.decadeRange = `${floor} to ${ceil}`;
8755
- }
8756
8688
  /**
8757
8689
  * Focuses on the current calendar year when the View is initialized.
8758
8690
  */
@@ -9475,6 +9407,44 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
9475
9407
  args: ['disabled']
9476
9408
  }] } });
9477
9409
 
9410
+ /*
9411
+ * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
9412
+ * This software is released under MIT license.
9413
+ * The full license information can be found in LICENSE in the root directory of this project.
9414
+ */
9415
+ class ClrDateInputValidator {
9416
+ constructor(dateIOService) {
9417
+ this.dateIOService = dateIOService;
9418
+ }
9419
+ validate(control) {
9420
+ if (this.dateIOService) {
9421
+ const value = this.dateIOService.getDateValueFromDateString(control.value);
9422
+ const minDate = this.dateIOService.disabledDates.minDate.toDate();
9423
+ const maxDate = this.dateIOService.disabledDates.maxDate.toDate();
9424
+ if (value && value < this.dateIOService.disabledDates.minDate.toDate()) {
9425
+ return { min: { min: minDate.toLocaleDateString(), actual: value.toLocaleDateString() } };
9426
+ }
9427
+ else if (value && value > this.dateIOService.disabledDates.maxDate.toDate()) {
9428
+ return { max: { max: maxDate.toLocaleDateString(), actual: value.toLocaleDateString() } };
9429
+ }
9430
+ }
9431
+ return null;
9432
+ }
9433
+ }
9434
+ 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 });
9435
+ 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 });
9436
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrDateInputValidator, decorators: [{
9437
+ type: Directive,
9438
+ args: [{
9439
+ selector: '[clrDate]',
9440
+ providers: [{ provide: NG_VALIDATORS, useExisting: ClrDateInputValidator, multi: true }],
9441
+ }]
9442
+ }], ctorParameters: function () {
9443
+ return [{ type: DateIOService, decorators: [{
9444
+ type: Optional
9445
+ }] }];
9446
+ } });
9447
+
9478
9448
  /*
9479
9449
  * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
9480
9450
  * This software is released under MIT license.
@@ -9484,6 +9454,7 @@ const CLR_DATEPICKER_DIRECTIVES = [
9484
9454
  ClrDay,
9485
9455
  ClrDateContainer,
9486
9456
  ClrDateInput,
9457
+ ClrDateInputValidator,
9487
9458
  ClrDatepickerViewManager,
9488
9459
  ClrMonthpicker,
9489
9460
  ClrYearpicker,
@@ -9499,6 +9470,7 @@ ClrDatepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", vers
9499
9470
  ClrDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrDatepickerModule, declarations: [ClrDay,
9500
9471
  ClrDateContainer,
9501
9472
  ClrDateInput,
9473
+ ClrDateInputValidator,
9502
9474
  ClrDatepickerViewManager,
9503
9475
  ClrMonthpicker,
9504
9476
  ClrYearpicker,
@@ -9512,6 +9484,7 @@ ClrDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", ver
9512
9484
  ClrCommonFormsModule], exports: [ClrDay,
9513
9485
  ClrDateContainer,
9514
9486
  ClrDateInput,
9487
+ ClrDateInputValidator,
9515
9488
  ClrDatepickerViewManager,
9516
9489
  ClrMonthpicker,
9517
9490
  ClrYearpicker,
@@ -12105,14 +12078,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
12105
12078
  * since it can be anything (not just a text input).
12106
12079
  */
12107
12080
  class ClrDatagridFilter extends DatagridFilterRegistrar {
12108
- constructor(_filters, commonStrings, smartToggleService, platformId, popoverId) {
12081
+ constructor(_filters, commonStrings, smartToggleService, platformId) {
12109
12082
  super(_filters);
12110
12083
  this.commonStrings = commonStrings;
12111
12084
  this.smartToggleService = smartToggleService;
12112
12085
  this.platformId = platformId;
12113
- this.popoverId = popoverId;
12114
12086
  this.subs = [];
12115
12087
  this.ariaExpanded = false;
12088
+ this.popoverId = uniqueIdFactory();
12116
12089
  // Smart Popover
12117
12090
  this.smartPosition = {
12118
12091
  axis: ClrAxis.VERTICAL,
@@ -12156,8 +12129,8 @@ class ClrDatagridFilter extends DatagridFilterRegistrar {
12156
12129
  this.subs.forEach(sub => sub.unsubscribe());
12157
12130
  }
12158
12131
  }
12159
- 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 });
12160
- 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: `
12132
+ ClrDatagridFilter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrDatagridFilter, deps: [{ token: FiltersProvider }, { token: ClrCommonStringsService }, { token: ClrPopoverToggleService }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });
12133
+ ClrDatagridFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrDatagridFilter, selector: "clr-dg-filter", inputs: { open: ["clrDgFilterOpen", "open"], customFilter: ["clrDgFilter", "customFilter"] }, outputs: { openChange: "clrDgFilterOpenChange" }, providers: [{ provide: CustomFilter, useExisting: ClrDatagridFilter }], viewQueries: [{ propertyName: "anchor", first: true, predicate: ["anchor"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: `
12161
12134
  <button
12162
12135
  class="datagrid-filter-toggle"
12163
12136
  type="button"
@@ -12199,7 +12172,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
12199
12172
  args: [{
12200
12173
  selector: 'clr-dg-filter',
12201
12174
  // We register this component as a CustomFilter, for the parent column to detect it.
12202
- providers: [{ provide: CustomFilter, useExisting: ClrDatagridFilter }, UNIQUE_ID_PROVIDER],
12175
+ providers: [{ provide: CustomFilter, useExisting: ClrDatagridFilter }],
12203
12176
  template: `
12204
12177
  <button
12205
12178
  class="datagrid-filter-toggle"
@@ -12242,9 +12215,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
12242
12215
  return [{ type: FiltersProvider }, { type: ClrCommonStringsService }, { type: ClrPopoverToggleService }, { type: undefined, decorators: [{
12243
12216
  type: Inject,
12244
12217
  args: [PLATFORM_ID]
12245
- }] }, { type: undefined, decorators: [{
12246
- type: Inject,
12247
- args: [UNIQUE_ID]
12248
12218
  }] }];
12249
12219
  }, propDecorators: { anchor: [{
12250
12220
  type: ViewChild,
@@ -13391,14 +13361,14 @@ const KEYBOARD_RESIZE_LENGTH = 12;
13391
13361
  class ClrDatagridColumnSeparator {
13392
13362
  // Every column draggable separator should have its own unique ID
13393
13363
  // in order to not conflict with other draggables/droppables.
13394
- constructor(columnResizerService, renderer, ngZone, tableSizeService, commonString, document, columnSeparatorId) {
13364
+ constructor(columnResizerService, renderer, ngZone, tableSizeService, commonString, document) {
13395
13365
  this.columnResizerService = columnResizerService;
13396
13366
  this.renderer = renderer;
13397
13367
  this.ngZone = ngZone;
13398
13368
  this.tableSizeService = tableSizeService;
13399
13369
  this.commonString = commonString;
13400
13370
  this.document = document;
13401
- this.columnSeparatorId = columnSeparatorId;
13371
+ this.columnSeparatorId = uniqueIdFactory();
13402
13372
  this.resizeStartedOnKeyDown = false;
13403
13373
  this.unlisteners = [];
13404
13374
  }
@@ -13484,8 +13454,8 @@ class ClrDatagridColumnSeparator {
13484
13454
  this.unlisteners.forEach(unlistener => unlistener());
13485
13455
  }
13486
13456
  }
13487
- 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 });
13488
- 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: `
13457
+ 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 });
13458
+ 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: `
13489
13459
  <button
13490
13460
  type="button"
13491
13461
  class="datagrid-column-handle"
@@ -13528,15 +13498,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
13528
13498
  host: {
13529
13499
  '[class.datagrid-column-separator]': 'true',
13530
13500
  },
13531
- providers: [UNIQUE_ID_PROVIDER],
13532
13501
  }]
13533
13502
  }], ctorParameters: function () {
13534
13503
  return [{ type: ColumnResizerService }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: TableSizeService }, { type: ClrCommonStringsService }, { type: undefined, decorators: [{
13535
13504
  type: Inject,
13536
13505
  args: [DOCUMENT]
13537
- }] }, { type: undefined, decorators: [{
13538
- type: Inject,
13539
- args: [UNIQUE_ID]
13540
13506
  }] }];
13541
13507
  }, propDecorators: { resizeTrackerRef: [{
13542
13508
  type: ViewChild,
@@ -14640,10 +14606,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
14640
14606
  */
14641
14607
  let nbSelection = 0;
14642
14608
  class Selection {
14643
- constructor(_items, _filters, _zone) {
14609
+ constructor(_items, _filters) {
14644
14610
  this._items = _items;
14645
14611
  this._filters = _filters;
14646
- this._zone = _zone;
14647
14612
  this.preserveSelection = false;
14648
14613
  this.prevSelectionRefs = []; // Refs of selected items
14649
14614
  this.lockedRefs = []; // Ref of locked items
@@ -14998,11 +14963,11 @@ class Selection {
14998
14963
  }
14999
14964
  }
15000
14965
  }
15001
- 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 });
14966
+ 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 });
15002
14967
  Selection.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: Selection });
15003
14968
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: Selection, decorators: [{
15004
14969
  type: Injectable
15005
- }], ctorParameters: function () { return [{ type: Items }, { type: FiltersProvider }, { type: i0.NgZone }]; } });
14970
+ }], ctorParameters: function () { return [{ type: Items }, { type: FiltersProvider }]; } });
15006
14971
 
15007
14972
  /*
15008
14973
  * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
@@ -15620,7 +15585,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
15620
15585
  * The full license information can be found in LICENSE in the root directory of this project.
15621
15586
  */
15622
15587
  class ClrDatagrid {
15623
- constructor(organizer, items, expandableRows, selection, rowActionService, stateProvider, displayMode, renderer, detailService, datagridId, document, el, page, commonStrings, columnsService, keyNavigation, zone) {
15588
+ constructor(organizer, items, expandableRows, selection, rowActionService, stateProvider, displayMode, renderer, detailService, document, el, page, commonStrings, columnsService, keyNavigation, zone) {
15624
15589
  this.organizer = organizer;
15625
15590
  this.items = items;
15626
15591
  this.expandableRows = expandableRows;
@@ -15654,6 +15619,7 @@ class ClrDatagrid {
15654
15619
  * Subscriptions to all the services and queries changes
15655
15620
  */
15656
15621
  this._subscriptions = [];
15622
+ const datagridId = uniqueIdFactory();
15657
15623
  this.selectAllId = 'clr-dg-select-all-' + datagridId;
15658
15624
  this.detailService.id = datagridId;
15659
15625
  }
@@ -15842,7 +15808,7 @@ class ClrDatagrid {
15842
15808
  this.organizer.resize();
15843
15809
  }
15844
15810
  }
15845
- 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 });
15811
+ 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 });
15846
15812
  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: [
15847
15813
  Selection,
15848
15814
  Sort,
@@ -15854,7 +15820,6 @@ ClrDatagrid.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "
15854
15820
  ExpandableRowsCount,
15855
15821
  StateDebouncer,
15856
15822
  DetailService,
15857
- UNIQUE_ID_PROVIDER,
15858
15823
  StateProvider,
15859
15824
  TableSizeService,
15860
15825
  ColumnsService,
@@ -15874,7 +15839,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
15874
15839
  ExpandableRowsCount,
15875
15840
  StateDebouncer,
15876
15841
  DetailService,
15877
- UNIQUE_ID_PROVIDER,
15878
15842
  StateProvider,
15879
15843
  TableSizeService,
15880
15844
  ColumnsService,
@@ -15886,9 +15850,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
15886
15850
  }, 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" }]
15887
15851
  }], ctorParameters: function () {
15888
15852
  return [{ type: DatagridRenderOrganizer }, { type: Items }, { type: ExpandableRowsCount }, { type: Selection }, { type: RowActionService }, { type: StateProvider }, { type: DisplayModeService }, { type: i0.Renderer2 }, { type: DetailService }, { type: undefined, decorators: [{
15889
- type: Inject,
15890
- args: [UNIQUE_ID]
15891
- }] }, { type: undefined, decorators: [{
15892
15853
  type: Inject,
15893
15854
  args: [DOCUMENT]
15894
15855
  }] }, { type: i0.ElementRef }, { type: Page }, { type: ClrCommonStringsService }, { type: ColumnsService }, { type: KeyNavigationGridController }, { type: i0.NgZone }];
@@ -15986,13 +15947,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
15986
15947
  */
15987
15948
  let clrDgActionId = 0;
15988
15949
  class ClrDatagridActionOverflow {
15989
- constructor(rowActionService, commonStrings, platformId, zone, smartToggleService, popoverId) {
15950
+ constructor(rowActionService, commonStrings, platformId, zone, smartToggleService) {
15990
15951
  this.rowActionService = rowActionService;
15991
15952
  this.commonStrings = commonStrings;
15992
15953
  this.platformId = platformId;
15993
15954
  this.zone = zone;
15994
15955
  this.smartToggleService = smartToggleService;
15995
- this.popoverId = popoverId;
15996
15956
  this.subscriptions = [];
15997
15957
  this.smartPosition = {
15998
15958
  axis: ClrAxis.HORIZONTAL,
@@ -16000,6 +15960,7 @@ class ClrDatagridActionOverflow {
16000
15960
  anchor: ClrAlignment.CENTER,
16001
15961
  content: ClrAlignment.CENTER,
16002
15962
  };
15963
+ this.popoverId = uniqueIdFactory();
16003
15964
  this._open = false;
16004
15965
  this.openChange = new EventEmitter(false);
16005
15966
  this.rowActionService.register();
@@ -16045,8 +16006,8 @@ class ClrDatagridActionOverflow {
16045
16006
  }
16046
16007
  }
16047
16008
  }
16048
- 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 });
16049
- 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: `
16009
+ 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 });
16010
+ 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: `
16050
16011
  <button
16051
16012
  class="datagrid-action-toggle"
16052
16013
  type="button"
@@ -16079,7 +16040,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
16079
16040
  type: Component,
16080
16041
  args: [{
16081
16042
  selector: 'clr-dg-action-overflow',
16082
- providers: [UNIQUE_ID_PROVIDER, ClrPopoverToggleService, ClrPopoverEventsService, ClrPopoverPositionService],
16043
+ providers: [ClrPopoverToggleService, ClrPopoverEventsService, ClrPopoverPositionService],
16083
16044
  template: `
16084
16045
  <button
16085
16046
  class="datagrid-action-toggle"
@@ -16114,10 +16075,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
16114
16075
  return [{ type: RowActionService }, { type: ClrCommonStringsService }, { type: undefined, decorators: [{
16115
16076
  type: Inject,
16116
16077
  args: [PLATFORM_ID]
16117
- }] }, { type: i0.NgZone }, { type: ClrPopoverToggleService }, { type: undefined, decorators: [{
16118
- type: Inject,
16119
- args: [UNIQUE_ID]
16120
- }] }];
16078
+ }] }, { type: i0.NgZone }, { type: ClrPopoverToggleService }];
16121
16079
  }, propDecorators: { keyFocus: [{
16122
16080
  type: ViewChild,
16123
16081
  args: [ClrKeyFocus]
@@ -16244,14 +16202,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
16244
16202
  */
16245
16203
  /** @deprecated since 2.0, remove in 3.0 */
16246
16204
  class ClrDatagridColumnToggle {
16247
- constructor(commonStrings, columnsService, columnSwitchId, platformId, zone, popoverId, popoverToggleService) {
16205
+ constructor(commonStrings, columnsService, popoverToggleService) {
16248
16206
  this.commonStrings = commonStrings;
16249
16207
  this.columnsService = columnsService;
16250
- this.columnSwitchId = columnSwitchId;
16251
- this.platformId = platformId;
16252
- this.zone = zone;
16253
- this.popoverId = popoverId;
16254
- this.popoverToggleService = popoverToggleService;
16208
+ this.popoverId = uniqueIdFactory();
16255
16209
  // Smart Popover
16256
16210
  this.smartPosition = {
16257
16211
  axis: ClrAxis.VERTICAL,
@@ -16298,8 +16252,8 @@ class ClrDatagridColumnToggle {
16298
16252
  return index;
16299
16253
  }
16300
16254
  }
16301
- 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 });
16302
- 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: `
16255
+ 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 });
16256
+ 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: `
16303
16257
  <button
16304
16258
  role="button"
16305
16259
  type="button"
@@ -16428,20 +16382,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
16428
16382
  </div>
16429
16383
  `,
16430
16384
  host: { '[class.column-switch-wrapper]': 'true', '[class.active]': 'openState' },
16431
- providers: [UNIQUE_ID_PROVIDER, ClrPopoverEventsService, ClrPopoverPositionService, ClrPopoverToggleService],
16385
+ providers: [ClrPopoverEventsService, ClrPopoverPositionService, ClrPopoverToggleService],
16432
16386
  }]
16433
- }], ctorParameters: function () {
16434
- return [{ type: ClrCommonStringsService }, { type: ColumnsService }, { type: undefined, decorators: [{
16435
- type: Inject,
16436
- args: [UNIQUE_ID]
16437
- }] }, { type: undefined, decorators: [{
16438
- type: Inject,
16439
- args: [PLATFORM_ID]
16440
- }] }, { type: i0.NgZone }, { type: undefined, decorators: [{
16441
- type: Inject,
16442
- args: [UNIQUE_ID]
16443
- }] }, { type: ClrPopoverToggleService }];
16444
- }, propDecorators: { customToggleTitle: [{
16387
+ }], ctorParameters: function () { return [{ type: ClrCommonStringsService }, { type: ColumnsService }, { type: ClrPopoverToggleService }]; }, propDecorators: { customToggleTitle: [{
16445
16388
  type: ContentChild,
16446
16389
  args: [ClrDatagridColumnToggleTitle]
16447
16390
  }], customToggleButton: [{
@@ -18527,8 +18470,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
18527
18470
  }]
18528
18471
  }] });
18529
18472
  class ClrStackViewLabel {
18530
- constructor(uniqueId) {
18531
- this.uniqueId = uniqueId;
18473
+ constructor() {
18532
18474
  this._generatedId = null;
18533
18475
  this._id = null;
18534
18476
  }
@@ -18544,30 +18486,24 @@ class ClrStackViewLabel {
18544
18486
  return this._id;
18545
18487
  }
18546
18488
  ngOnInit() {
18547
- this._generatedId = 'clr-stack-label-' + this.uniqueId;
18489
+ this._generatedId = 'clr-stack-label-' + uniqueIdFactory();
18548
18490
  if (!this.id) {
18549
18491
  this._id = this._generatedId + '';
18550
18492
  }
18551
18493
  }
18552
18494
  }
18553
- ClrStackViewLabel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrStackViewLabel, deps: [{ token: UNIQUE_ID }], target: i0.ɵɵFactoryTarget.Component });
18554
- 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 });
18495
+ ClrStackViewLabel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrStackViewLabel, deps: [], target: i0.ɵɵFactoryTarget.Component });
18496
+ 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 });
18555
18497
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrStackViewLabel, decorators: [{
18556
18498
  type: Component,
18557
18499
  args: [{
18558
18500
  selector: 'clr-stack-label',
18559
18501
  template: '<ng-content></ng-content>',
18560
- providers: [UNIQUE_ID_PROVIDER],
18561
18502
  host: {
18562
18503
  '[attr.id]': 'id',
18563
18504
  },
18564
18505
  }]
18565
- }], ctorParameters: function () {
18566
- return [{ type: undefined, decorators: [{
18567
- type: Inject,
18568
- args: [UNIQUE_ID]
18569
- }] }];
18570
- }, propDecorators: { id: [{
18506
+ }], propDecorators: { id: [{
18571
18507
  type: Input
18572
18508
  }] } });
18573
18509
 
@@ -18582,9 +18518,8 @@ class ClrStackBlock {
18582
18518
  * querying for children StackBlocks, but this feature is not available when downgrading
18583
18519
  * the component for Angular 1.
18584
18520
  */
18585
- constructor(parent, uniqueId, commonStrings) {
18521
+ constructor(parent, commonStrings) {
18586
18522
  this.parent = parent;
18587
- this.uniqueId = uniqueId;
18588
18523
  this.commonStrings = commonStrings;
18589
18524
  this.expanded = false;
18590
18525
  this.expandedChange = new EventEmitter(false);
@@ -18593,6 +18528,7 @@ class ClrStackBlock {
18593
18528
  this._changedChildren = 0;
18594
18529
  this._fullyInitialized = false;
18595
18530
  this._changed = false;
18531
+ this.uniqueId = uniqueIdFactory();
18596
18532
  if (parent) {
18597
18533
  parent.addChild();
18598
18534
  }
@@ -18658,8 +18594,8 @@ class ClrStackBlock {
18658
18594
  return this.expanded ? `clr-stack-children-${this.uniqueId}` : null;
18659
18595
  }
18660
18596
  }
18661
- 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 });
18662
- 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: `
18597
+ 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 });
18598
+ 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: `
18663
18599
  <!-- The 'preventDefault' for the space keydown event prevents the page
18664
18600
  from scrolling when a stack block is toggled via the space key. -->
18665
18601
  <div
@@ -18759,16 +18695,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
18759
18695
  '[attr.role]': '"heading"',
18760
18696
  '[attr.aria-level]': 'headingLevel',
18761
18697
  },
18762
- providers: [UNIQUE_ID_PROVIDER],
18763
18698
  }]
18764
18699
  }], ctorParameters: function () {
18765
18700
  return [{ type: ClrStackBlock, decorators: [{
18766
18701
  type: SkipSelf
18767
18702
  }, {
18768
18703
  type: Optional
18769
- }] }, { type: undefined, decorators: [{
18770
- type: Inject,
18771
- args: [UNIQUE_ID]
18772
18704
  }] }, { type: ClrCommonStringsService }];
18773
18705
  }, propDecorators: { expanded: [{
18774
18706
  type: HostBinding,
@@ -18814,11 +18746,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
18814
18746
  * The full license information can be found in LICENSE in the root directory of this project.
18815
18747
  */
18816
18748
  class ClrStackContentInput {
18817
- constructor(uniqueId) {
18818
- this.uniqueId = uniqueId;
18749
+ constructor() {
18750
+ this.uniqueId = uniqueIdFactory();
18819
18751
  }
18820
18752
  }
18821
- ClrStackContentInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrStackContentInput, deps: [{ token: UNIQUE_ID }], target: i0.ɵɵFactoryTarget.Directive });
18753
+ ClrStackContentInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrStackContentInput, deps: [], target: i0.ɵɵFactoryTarget.Directive });
18822
18754
  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 });
18823
18755
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrStackContentInput, decorators: [{
18824
18756
  type: Directive,
@@ -18829,12 +18761,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
18829
18761
  '[attr.aria-labelledby]': 'uniqueId',
18830
18762
  },
18831
18763
  }]
18832
- }], ctorParameters: function () {
18833
- return [{ type: undefined, decorators: [{
18834
- type: Inject,
18835
- args: [UNIQUE_ID]
18836
- }] }];
18837
- } });
18764
+ }] });
18838
18765
 
18839
18766
  /*
18840
18767
  * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
@@ -19721,8 +19648,7 @@ const LVIEW_CONTEXT_INDEX = 8;
19721
19648
  // then those keys are sent together in one request.
19722
19649
  const TREE_TYPE_AHEAD_TIMEOUT = 200;
19723
19650
  class ClrTreeNode {
19724
- constructor(nodeId, platformId, parent, forTypeAheadProvider, featuresService, expandService, commonStrings, focusManager, injector) {
19725
- this.nodeId = nodeId;
19651
+ constructor(platformId, parent, forTypeAheadProvider, featuresService, expandService, commonStrings, focusManager, injector) {
19726
19652
  this.platformId = platformId;
19727
19653
  this.forTypeAheadProvider = forTypeAheadProvider;
19728
19654
  this.featuresService = featuresService;
@@ -19732,6 +19658,7 @@ class ClrTreeNode {
19732
19658
  this.STATES = ClrSelectedState;
19733
19659
  this.skipEmitChange = false;
19734
19660
  this.isModelLoading = false;
19661
+ this.nodeId = uniqueIdFactory();
19735
19662
  this.typeAheadKeyEvent = new Subject();
19736
19663
  this.typeAheadKeyBuffer = '';
19737
19664
  this.selectedChange = new EventEmitter(false);
@@ -19946,13 +19873,8 @@ class ClrTreeNode {
19946
19873
  }
19947
19874
  }
19948
19875
  }
19949
- 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 });
19950
- 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: [
19951
- UNIQUE_ID_PROVIDER,
19952
- TREE_FEATURES_PROVIDER,
19953
- IfExpandService,
19954
- { provide: LoadingListener, useExisting: IfExpandService },
19955
- ], 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: [
19876
+ 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 });
19877
+ 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: [
19956
19878
  trigger('toggleChildrenAnim', [
19957
19879
  transition('collapsed => expanded', [style({ height: 0 }), animate(200, style({ height: '*' }))]),
19958
19880
  transition('expanded => collapsed', [style({ height: '*' }), animate(200, style({ height: 0 }))]),
@@ -19962,12 +19884,7 @@ ClrTreeNode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "
19962
19884
  ] });
19963
19885
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTreeNode, decorators: [{
19964
19886
  type: Component,
19965
- args: [{ selector: 'clr-tree-node', providers: [
19966
- UNIQUE_ID_PROVIDER,
19967
- TREE_FEATURES_PROVIDER,
19968
- IfExpandService,
19969
- { provide: LoadingListener, useExisting: IfExpandService },
19970
- ], animations: [
19887
+ args: [{ selector: 'clr-tree-node', providers: [TREE_FEATURES_PROVIDER, IfExpandService, { provide: LoadingListener, useExisting: IfExpandService }], animations: [
19971
19888
  trigger('toggleChildrenAnim', [
19972
19889
  transition('collapsed => expanded', [style({ height: 0 }), animate(200, style({ height: '*' }))]),
19973
19890
  transition('expanded => collapsed', [style({ height: '*' }), animate(200, style({ height: 0 }))]),
@@ -19979,9 +19896,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
19979
19896
  }, 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" }]
19980
19897
  }], ctorParameters: function () {
19981
19898
  return [{ type: undefined, decorators: [{
19982
- type: Inject,
19983
- args: [UNIQUE_ID]
19984
- }] }, { type: undefined, decorators: [{
19985
19899
  type: Inject,
19986
19900
  args: [PLATFORM_ID]
19987
19901
  }] }, { type: ClrTreeNode, decorators: [{
@@ -20192,13 +20106,13 @@ function wrapObservable(observable, onSubscribe, onUnsubscribe) {
20192
20106
  * The full license information can be found in LICENSE in the root directory of this project.
20193
20107
  */
20194
20108
  class DropdownFocusHandler {
20195
- constructor(id, renderer, parent, toggleService, focusService, platformId) {
20196
- this.id = id;
20109
+ constructor(renderer, parent, toggleService, focusService, platformId) {
20197
20110
  this.renderer = renderer;
20198
20111
  this.parent = parent;
20199
20112
  this.toggleService = toggleService;
20200
20113
  this.focusService = focusService;
20201
20114
  this.platformId = platformId;
20115
+ this.id = uniqueIdFactory();
20202
20116
  this._unlistenFuncs = [];
20203
20117
  this.focusBackOnTrigger = false;
20204
20118
  this.resetChildren();
@@ -20345,15 +20259,12 @@ class DropdownFocusHandler {
20345
20259
  this.focusService.detachListeners();
20346
20260
  }
20347
20261
  }
20348
- 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 });
20262
+ 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 });
20349
20263
  DropdownFocusHandler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DropdownFocusHandler });
20350
20264
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DropdownFocusHandler, decorators: [{
20351
20265
  type: Injectable
20352
20266
  }], ctorParameters: function () {
20353
- return [{ type: undefined, decorators: [{
20354
- type: Inject,
20355
- args: [UNIQUE_ID]
20356
- }] }, { type: i0.Renderer2 }, { type: DropdownFocusHandler, decorators: [{
20267
+ return [{ type: i0.Renderer2 }, { type: DropdownFocusHandler, decorators: [{
20357
20268
  type: SkipSelf
20358
20269
  }, {
20359
20270
  type: Optional
@@ -20455,13 +20366,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
20455
20366
  * The full license information can be found in LICENSE in the root directory of this project.
20456
20367
  */
20457
20368
  class BasicFocusableItem {
20458
- constructor(id, el, renderer, platformId) {
20459
- this.id = id;
20369
+ constructor(el, renderer, platformId) {
20460
20370
  this.el = el;
20461
20371
  this.renderer = renderer;
20462
20372
  this.platformId = platformId;
20373
+ this.id = uniqueIdFactory();
20463
20374
  this.disabled = false;
20464
- renderer.setAttribute(el.nativeElement, 'id', id);
20375
+ renderer.setAttribute(el.nativeElement, 'id', this.id);
20465
20376
  renderer.setAttribute(el.nativeElement, 'tabindex', '-1');
20466
20377
  }
20467
20378
  focus() {
@@ -20483,21 +20394,17 @@ class BasicFocusableItem {
20483
20394
  }
20484
20395
  }
20485
20396
  }
20486
- 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 });
20397
+ 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 });
20487
20398
  BasicFocusableItem.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BasicFocusableItem });
20488
20399
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: BasicFocusableItem, decorators: [{
20489
20400
  type: Injectable
20490
20401
  }], ctorParameters: function () {
20491
- return [{ type: undefined, decorators: [{
20492
- type: Inject,
20493
- args: [UNIQUE_ID]
20494
- }] }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
20402
+ return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
20495
20403
  type: Inject,
20496
20404
  args: [PLATFORM_ID]
20497
20405
  }] }];
20498
20406
  } });
20499
20407
  const BASIC_FOCUSABLE_ITEM_PROVIDER = [
20500
- UNIQUE_ID_PROVIDER,
20501
20408
  {
20502
20409
  provide: FocusableItem,
20503
20410
  useClass: BasicFocusableItem,
@@ -22599,10 +22506,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
22599
22506
  */
22600
22507
  let nbTabContentComponents = 0;
22601
22508
  class ClrTabContent {
22602
- constructor(ifActiveService, id, ariaService, tabsService) {
22509
+ constructor(ifActiveService, id, tabsService) {
22603
22510
  this.ifActiveService = ifActiveService;
22604
22511
  this.id = id;
22605
- this.ariaService = ariaService;
22606
22512
  this.tabsService = tabsService;
22607
22513
  if (!this.tabContentId) {
22608
22514
  this.tabContentId = 'clr-tab-content-' + nbTabContentComponents++;
@@ -22615,13 +22521,8 @@ class ClrTabContent {
22615
22521
  this.viewRef = this.tabsService.tabContentViewContainer.createEmbeddedView(value);
22616
22522
  }
22617
22523
  get ariaLabelledBy() {
22618
- return this.ariaService.ariaLabelledBy;
22619
- }
22620
- get tabContentId() {
22621
- return this.ariaService.ariaControls;
22622
- }
22623
- set tabContentId(id) {
22624
- this.ariaService.ariaControls = id;
22524
+ var _a, _b;
22525
+ return (_b = (_a = this.tabsService.children.find(tab => tab.tabContent === this)) === null || _a === void 0 ? void 0 : _a.tabLink) === null || _b === void 0 ? void 0 : _b.tabLinkId;
22625
22526
  }
22626
22527
  get active() {
22627
22528
  return this.ifActiveService.current === this.id;
@@ -22633,7 +22534,7 @@ class ClrTabContent {
22633
22534
  }
22634
22535
  }
22635
22536
  }
22636
- 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 });
22537
+ 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 });
22637
22538
  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: `
22638
22539
  <ng-template #tabContentProjectedRef>
22639
22540
  <section
@@ -22673,7 +22574,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
22673
22574
  return [{ type: IfActiveService }, { type: undefined, decorators: [{
22674
22575
  type: Inject,
22675
22576
  args: [IF_ACTIVE_ID]
22676
- }] }, { type: AriaService }, { type: TabsService }];
22577
+ }] }, { type: TabsService }];
22677
22578
  }, propDecorators: { templateRef: [{
22678
22579
  type: ViewChild,
22679
22580
  args: ['tabContentProjectedRef', { static: true }]
@@ -22704,10 +22605,9 @@ const TABS_ID_PROVIDER = {
22704
22605
  */
22705
22606
  let nbTabLinkComponents = 0;
22706
22607
  class ClrTabLink {
22707
- constructor(ifActiveService, id, ariaService, el, cfr, viewContainerRef, tabsService, tabsId) {
22608
+ constructor(ifActiveService, id, el, cfr, viewContainerRef, tabsService, tabsId) {
22708
22609
  this.ifActiveService = ifActiveService;
22709
22610
  this.id = id;
22710
- this.ariaService = ariaService;
22711
22611
  this.el = el;
22712
22612
  this.cfr = cfr;
22713
22613
  this.viewContainerRef = viewContainerRef;
@@ -22734,13 +22634,8 @@ class ClrTabLink {
22734
22634
  return !this.inOverflow;
22735
22635
  }
22736
22636
  get ariaControls() {
22737
- return this.ariaService.ariaControls;
22738
- }
22739
- get tabLinkId() {
22740
- return this.ariaService.ariaLabelledBy;
22741
- }
22742
- set tabLinkId(id) {
22743
- this.ariaService.ariaLabelledBy = id;
22637
+ var _a, _b;
22638
+ return (_b = (_a = this.tabsService.children.find(tab => tab.tabLink === this)) === null || _a === void 0 ? void 0 : _a.tabContent) === null || _b === void 0 ? void 0 : _b.tabContentId;
22744
22639
  }
22745
22640
  activate() {
22746
22641
  this.ifActiveService.current = this.id;
@@ -22752,7 +22647,7 @@ class ClrTabLink {
22752
22647
  return this.active ? 0 : -1;
22753
22648
  }
22754
22649
  }
22755
- 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 });
22650
+ 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 });
22756
22651
  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 });
22757
22652
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTabLink, decorators: [{
22758
22653
  type: Directive,
@@ -22768,7 +22663,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
22768
22663
  return [{ type: IfActiveService }, { type: undefined, decorators: [{
22769
22664
  type: Inject,
22770
22665
  args: [IF_ACTIVE_ID]
22771
- }] }, { type: AriaService }, { type: i0.ElementRef }, { type: i0.ComponentFactoryResolver }, { type: i0.ViewContainerRef }, { type: TabsService }, { type: undefined, decorators: [{
22666
+ }] }, { type: i0.ElementRef }, { type: i0.ComponentFactoryResolver }, { type: i0.ViewContainerRef }, { type: TabsService }, { type: undefined, decorators: [{
22772
22667
  type: Inject,
22773
22668
  args: [TABS_ID]
22774
22669
  }] }];
@@ -22824,13 +22719,13 @@ class ClrTab {
22824
22719
  }
22825
22720
  }
22826
22721
  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 });
22827
- 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 });
22722
+ 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 });
22828
22723
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTab, decorators: [{
22829
22724
  type: Component,
22830
22725
  args: [{
22831
22726
  selector: 'clr-tab',
22832
22727
  template: `<ng-content></ng-content>`,
22833
- providers: [IF_ACTIVE_ID_PROVIDER, AriaService],
22728
+ providers: [IF_ACTIVE_ID_PROVIDER],
22834
22729
  }]
22835
22730
  }], ctorParameters: function () {
22836
22731
  return [{ type: IfActiveService }, { type: undefined, decorators: [{
@@ -23724,10 +23619,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
23724
23619
  * The full license information can be found in LICENSE in the root directory of this project.
23725
23620
  */
23726
23621
  class ClrModal {
23727
- constructor(_scrollingService, commonStrings, modalId) {
23622
+ constructor(_scrollingService, commonStrings) {
23728
23623
  this._scrollingService = _scrollingService;
23729
23624
  this.commonStrings = commonStrings;
23730
- this.modalId = modalId;
23625
+ this.modalId = uniqueIdFactory();
23731
23626
  this._open = false;
23732
23627
  this._openChanged = new EventEmitter(false);
23733
23628
  this.closable = true;
@@ -23780,8 +23675,8 @@ class ClrModal {
23780
23675
  }
23781
23676
  }
23782
23677
  }
23783
- 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 });
23784
- 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: [
23678
+ 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 });
23679
+ 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: [
23785
23680
  trigger('fadeDown', [
23786
23681
  transition('* => false', [style({ opacity: 0, transform: 'translate(0, -25%)' }), animate('0.2s ease-in-out')]),
23787
23682
  transition('false => *', [animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(0, -25%)' }))]),
@@ -23811,13 +23706,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
23811
23706
  transition('void => *', [style({ opacity: 0 }), animate('0.2s ease-in-out', style({ opacity: 0.85 }))]),
23812
23707
  transition('* => void', [animate('0.2s ease-in-out', style({ opacity: 0 }))]),
23813
23708
  ]),
23814
- ], 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" }]
23815
- }], ctorParameters: function () {
23816
- return [{ type: ScrollingService }, { type: ClrCommonStringsService }, { type: undefined, decorators: [{
23817
- type: Inject,
23818
- args: [UNIQUE_ID]
23819
- }] }];
23820
- }, propDecorators: { focusTrap: [{
23709
+ ], 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" }]
23710
+ }], ctorParameters: function () { return [{ type: ScrollingService }, { type: ClrCommonStringsService }]; }, propDecorators: { focusTrap: [{
23821
23711
  type: ViewChild,
23822
23712
  args: [FocusTrapDirective]
23823
23713
  }], _open: [{
@@ -23988,20 +23878,20 @@ const POSITIONS$1 = [
23988
23878
  'left-top',
23989
23879
  ];
23990
23880
  class ClrSignpostContent extends AbstractPopover {
23991
- constructor(injector, parentHost, commonStrings, signpostContentId, signpostIdService, signpostFocusManager, platformId, document) {
23881
+ constructor(injector, parentHost, commonStrings, signpostIdService, signpostFocusManager, platformId, document) {
23992
23882
  super(injector, parentHost);
23993
23883
  this.commonStrings = commonStrings;
23994
- this.signpostContentId = signpostContentId;
23995
23884
  this.signpostIdService = signpostIdService;
23996
23885
  this.signpostFocusManager = signpostFocusManager;
23997
23886
  this.platformId = platformId;
23887
+ this.signpostContentId = uniqueIdFactory();
23998
23888
  if (!parentHost) {
23999
23889
  throw new Error('clr-signpost-content should only be used inside of a clr-signpost');
24000
23890
  }
24001
23891
  // Defaults
24002
23892
  this.position = 'right-middle';
24003
23893
  this.closeOnOutsideClick = true;
24004
- this.signpostIdService.setId(signpostContentId);
23894
+ this.signpostIdService.setId(this.signpostContentId);
24005
23895
  this.document = document;
24006
23896
  }
24007
23897
  /**********
@@ -24069,8 +23959,8 @@ class ClrSignpostContent extends AbstractPopover {
24069
23959
  }
24070
23960
  }
24071
23961
  }
24072
- 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 });
24073
- 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: `
23962
+ 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 });
23963
+ 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: `
24074
23964
  <div class="signpost-wrap">
24075
23965
  <div class="popover-pointer"></div>
24076
23966
  <div class="signpost-content-header">
@@ -24113,7 +24003,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
24113
24003
  </div>
24114
24004
  `,
24115
24005
  host: { '[class.signpost-content]': 'true', '[id]': 'signpostContentId' },
24116
- providers: [UNIQUE_ID_PROVIDER],
24117
24006
  }]
24118
24007
  }], ctorParameters: function () {
24119
24008
  return [{ type: i0.Injector }, { type: i0.ElementRef, decorators: [{
@@ -24121,10 +24010,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
24121
24010
  }, {
24122
24011
  type: Inject,
24123
24012
  args: [POPOVER_HOST_ANCHOR]
24124
- }] }, { type: ClrCommonStringsService }, { type: undefined, decorators: [{
24125
- type: Inject,
24126
- args: [UNIQUE_ID]
24127
- }] }, { type: SignpostIdService }, { type: SignpostFocusManager }, { type: undefined, decorators: [{
24013
+ }] }, { type: ClrCommonStringsService }, { type: SignpostIdService }, { type: SignpostFocusManager }, { type: undefined, decorators: [{
24128
24014
  type: Inject,
24129
24015
  args: [PLATFORM_ID]
24130
24016
  }] }, { type: undefined, decorators: [{
@@ -24189,14 +24075,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
24189
24075
  class ClrTooltip {
24190
24076
  }
24191
24077
  ClrTooltip.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTooltip, deps: [], target: i0.ɵɵFactoryTarget.Component });
24192
- ClrTooltip.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrTooltip, selector: "clr-tooltip", host: { properties: { "class.tooltip": "true" } }, providers: [
24193
- ClrPopoverToggleService,
24194
- { provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef },
24195
- // TODO: consider centralizing the unique id string on a service that provides ariaAttributes that need it
24196
- // AriaService in layout/tabs/providers might be a good starting point.
24197
- UNIQUE_ID_PROVIDER,
24198
- TooltipIdService,
24199
- ], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
24078
+ 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 });
24200
24079
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTooltip, decorators: [{
24201
24080
  type: Component,
24202
24081
  args: [{
@@ -24205,14 +24084,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
24205
24084
  host: {
24206
24085
  '[class.tooltip]': 'true',
24207
24086
  },
24208
- providers: [
24209
- ClrPopoverToggleService,
24210
- { provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef },
24211
- // TODO: consider centralizing the unique id string on a service that provides ariaAttributes that need it
24212
- // AriaService in layout/tabs/providers might be a good starting point.
24213
- UNIQUE_ID_PROVIDER,
24214
- TooltipIdService,
24215
- ],
24087
+ providers: [ClrPopoverToggleService, { provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef }, TooltipIdService],
24216
24088
  }]
24217
24089
  }] });
24218
24090
 
@@ -24235,9 +24107,8 @@ const SIZES = ['xs', 'sm', 'md', 'lg'];
24235
24107
  const defaultPosition = 'right';
24236
24108
  const defaultSize = 'sm';
24237
24109
  class ClrTooltipContent extends AbstractPopover {
24238
- constructor(injector, parentHost, uniqueId, tooltipIdService) {
24110
+ constructor(injector, parentHost, tooltipIdService) {
24239
24111
  super(injector, parentHost);
24240
- this.uniqueId = uniqueId;
24241
24112
  this.tooltipIdService = tooltipIdService;
24242
24113
  this._position = defaultPosition;
24243
24114
  this._size = defaultSize;
@@ -24245,7 +24116,7 @@ class ClrTooltipContent extends AbstractPopover {
24245
24116
  throw new Error('clr-tooltip-content should only be used inside of a clr-tooltip');
24246
24117
  }
24247
24118
  // Set the default id in case consumer does not supply a custom id.
24248
- this.id = uniqueId;
24119
+ this.id = uniqueIdFactory();
24249
24120
  }
24250
24121
  get id() {
24251
24122
  return this._id;
@@ -24307,7 +24178,7 @@ class ClrTooltipContent extends AbstractPopover {
24307
24178
  this.renderer.addClass(this.el.nativeElement, newClass);
24308
24179
  }
24309
24180
  }
24310
- 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 });
24181
+ 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 });
24311
24182
  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 });
24312
24183
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrTooltipContent, decorators: [{
24313
24184
  type: Component,
@@ -24327,9 +24198,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
24327
24198
  }, {
24328
24199
  type: Inject,
24329
24200
  args: [POPOVER_HOST_ANCHOR]
24330
- }] }, { type: undefined, decorators: [{
24331
- type: Inject,
24332
- args: [UNIQUE_ID]
24333
24201
  }] }, { type: TooltipIdService }];
24334
24202
  }, propDecorators: { id: [{
24335
24203
  type: Input
@@ -26930,14 +26798,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
26930
26798
  * The full license information can be found in LICENSE in the root directory of this project.
26931
26799
  */
26932
26800
  class ClrWizard {
26933
- constructor(platformId, navService, pageCollection, buttonService, headerActionService, elementRef, differs, wizardId) {
26801
+ constructor(platformId, navService, pageCollection, buttonService, headerActionService, elementRef, differs) {
26934
26802
  this.platformId = platformId;
26935
26803
  this.navService = navService;
26936
26804
  this.pageCollection = pageCollection;
26937
26805
  this.buttonService = buttonService;
26938
26806
  this.headerActionService = headerActionService;
26939
26807
  this.elementRef = elementRef;
26940
- this.wizardId = wizardId;
26941
26808
  /**
26942
26809
  * Set the modal size of the wizard. Set using `[clrWizardSize]` input.
26943
26810
  */
@@ -26997,6 +26864,7 @@ class ClrWizard {
26997
26864
  * Listen via `(clrWizardOnPrevious)` event.
26998
26865
  */
26999
26866
  this.onMovePrevious = new EventEmitter(false);
26867
+ this.wizardId = uniqueIdFactory();
27000
26868
  this.subscriptions = [];
27001
26869
  this.subscriptions.push(this.listenForNextPageChanges(), this.listenForPreviousPageChanges(), this.listenForCancelChanges(), this.listenForFinishedChanges(), this.listenForPageChanges());
27002
26870
  this.differ = differs.find([]).create(null);
@@ -27318,23 +27186,11 @@ class ClrWizard {
27318
27186
  this.wizardFinished.emit();
27319
27187
  }
27320
27188
  }
27321
- 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 });
27322
- 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: [
27323
- WizardNavigationService,
27324
- PageCollectionService,
27325
- ButtonHubService,
27326
- HeaderActionService,
27327
- UNIQUE_ID_PROVIDER,
27328
- ], 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" }] });
27189
+ 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 });
27190
+ 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" }] });
27329
27191
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrWizard, decorators: [{
27330
27192
  type: Component,
27331
- args: [{ selector: 'clr-wizard', providers: [
27332
- WizardNavigationService,
27333
- PageCollectionService,
27334
- ButtonHubService,
27335
- HeaderActionService,
27336
- UNIQUE_ID_PROVIDER,
27337
- ], host: {
27193
+ args: [{ selector: 'clr-wizard', providers: [WizardNavigationService, PageCollectionService, ButtonHubService, HeaderActionService], host: {
27338
27194
  '[class.clr-wizard]': 'true',
27339
27195
  '[class.wizard-md]': "size == 'md'",
27340
27196
  '[class.wizard-lg]': "size == 'lg'",
@@ -27345,10 +27201,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
27345
27201
  return [{ type: undefined, decorators: [{
27346
27202
  type: Inject,
27347
27203
  args: [PLATFORM_ID]
27348
- }] }, { type: WizardNavigationService }, { type: PageCollectionService }, { type: ButtonHubService }, { type: HeaderActionService }, { type: i0.ElementRef }, { type: i0.IterableDiffers }, { type: undefined, decorators: [{
27349
- type: Inject,
27350
- args: [UNIQUE_ID]
27351
- }] }];
27204
+ }] }, { type: WizardNavigationService }, { type: PageCollectionService }, { type: ButtonHubService }, { type: HeaderActionService }, { type: i0.ElementRef }, { type: i0.IterableDiffers }];
27352
27205
  }, propDecorators: { size: [{
27353
27206
  type: Input,
27354
27207
  args: ['clrWizardSize']
@@ -28004,5 +27857,5 @@ const CLR_MENU_POSITIONS = [
28004
27857
  * Generated bundle index. Do not edit.
28005
27858
  */
28006
27859
 
28007
- 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 };
27860
+ 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 };
28008
27861
  //# sourceMappingURL=clr-angular.mjs.map