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