@clr/angular 15.0.0-beta.2 → 15.0.0-beta.3

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 (118) hide show
  1. package/clarity.api.md +158 -489
  2. package/clr-angular.module.d.ts +12 -15
  3. package/data/datagrid/datagrid-column.d.ts +1 -22
  4. package/data/datagrid/datagrid-pagination.d.ts +2 -2
  5. package/data/datagrid/datagrid.module.d.ts +13 -13
  6. package/data/stack-view/index.d.ts +0 -2
  7. package/data/stack-view/stack-block.d.ts +1 -17
  8. package/data/stack-view/stack-view.d.ts +1 -11
  9. package/data/stack-view/stack-view.module.d.ts +5 -7
  10. package/data/tree-view/tree-node.d.ts +6 -6
  11. package/esm2020/accordion/accordion-panel.mjs +3 -3
  12. package/esm2020/accordion/stepper/stepper-panel.mjs +3 -3
  13. package/esm2020/clr-angular.module.mjs +1 -13
  14. package/esm2020/data/datagrid/datagrid-action-overflow.mjs +10 -10
  15. package/esm2020/data/datagrid/datagrid-column-separator.mjs +16 -15
  16. package/esm2020/data/datagrid/datagrid-column-toggle.mjs +14 -14
  17. package/esm2020/data/datagrid/datagrid-column.mjs +2 -48
  18. package/esm2020/data/datagrid/datagrid-detail.mjs +8 -6
  19. package/esm2020/data/datagrid/datagrid-filter.mjs +10 -10
  20. package/esm2020/data/datagrid/datagrid-pagination.mjs +10 -5
  21. package/esm2020/data/datagrid/datagrid-row-detail.mjs +7 -8
  22. package/esm2020/data/datagrid/datagrid.module.mjs +9 -9
  23. package/esm2020/data/stack-view/index.mjs +1 -3
  24. package/esm2020/data/stack-view/stack-block.mjs +2 -8
  25. package/esm2020/data/stack-view/stack-header.mjs +2 -23
  26. package/esm2020/data/stack-view/stack-view.mjs +4 -28
  27. package/esm2020/data/stack-view/stack-view.module.mjs +3 -23
  28. package/esm2020/data/tree-view/tree-node.mjs +30 -26
  29. package/esm2020/forms/datepicker/date-container.mjs +9 -9
  30. package/esm2020/forms/datepicker/datepicker.module.mjs +5 -5
  31. package/esm2020/layout/nav/nav-level.mjs +23 -10
  32. package/esm2020/layout/vertical-nav/vertical-nav-group.mjs +3 -7
  33. package/esm2020/modal/modal.mjs +8 -19
  34. package/esm2020/modal/modal.module.mjs +5 -5
  35. package/esm2020/popover/dropdown/dropdown-item.mjs +30 -33
  36. package/esm2020/utils/cdk/cdk-drag.module.mjs +37 -0
  37. package/esm2020/utils/cdk/cdk-trap-focus.module.mjs +37 -0
  38. package/esm2020/utils/i18n/common-strings.default.mjs +1 -2
  39. package/esm2020/utils/i18n/common-strings.interface.mjs +1 -1
  40. package/esm2020/utils/index.mjs +1 -5
  41. package/esm2020/wizard/wizard.mjs +6 -30
  42. package/fesm2015/clr-angular.mjs +252 -1981
  43. package/fesm2015/clr-angular.mjs.map +1 -1
  44. package/fesm2020/clr-angular.mjs +299 -2024
  45. package/fesm2020/clr-angular.mjs.map +1 -1
  46. package/forms/datepicker/datepicker.module.d.ts +6 -6
  47. package/layout/nav/nav-level.d.ts +12 -4
  48. package/layout/vertical-nav/vertical-nav-group.d.ts +1 -2
  49. package/modal/modal.d.ts +1 -4
  50. package/modal/modal.module.d.ts +3 -3
  51. package/package.json +2 -1
  52. package/popover/dropdown/dropdown-item.d.ts +7 -13
  53. package/src/utils/popover/README.md +1 -1
  54. package/utils/cdk/cdk-drag.module.d.ts +17 -0
  55. package/utils/cdk/cdk-trap-focus.module.d.ts +17 -0
  56. package/utils/i18n/common-strings.interface.d.ts +0 -17
  57. package/utils/index.d.ts +0 -4
  58. package/wizard/wizard.d.ts +2 -13
  59. package/data/stack-view/stack-control.d.ts +0 -16
  60. package/data/stack-view/stack-input.d.ts +0 -10
  61. package/data/stack-view/stack-select.d.ts +0 -9
  62. package/esm2020/data/stack-view/stack-control.mjs +0 -34
  63. package/esm2020/data/stack-view/stack-input.mjs +0 -42
  64. package/esm2020/data/stack-view/stack-select.mjs +0 -48
  65. package/esm2020/utils/a11y/aria-live.service.mjs +0 -163
  66. package/esm2020/utils/a11y/index.mjs +0 -7
  67. package/esm2020/utils/drag-and-drop/drag-and-drop.module.mjs +0 -42
  68. package/esm2020/utils/drag-and-drop/drag-event.mjs +0 -16
  69. package/esm2020/utils/drag-and-drop/drag-handle.mjs +0 -35
  70. package/esm2020/utils/drag-and-drop/draggable/draggable.mjs +0 -135
  71. package/esm2020/utils/drag-and-drop/draggable-ghost.mjs +0 -124
  72. package/esm2020/utils/drag-and-drop/droppable/droppable.mjs +0 -222
  73. package/esm2020/utils/drag-and-drop/if-dragged.mjs +0 -47
  74. package/esm2020/utils/drag-and-drop/index.mjs +0 -14
  75. package/esm2020/utils/drag-and-drop/interfaces/drag-event.interface.mjs +0 -15
  76. package/esm2020/utils/drag-and-drop/interfaces/drop-tolerance.interface.mjs +0 -7
  77. package/esm2020/utils/drag-and-drop/providers/drag-and-drop-event-bus.service.mjs +0 -54
  78. package/esm2020/utils/drag-and-drop/providers/drag-event-listener.service.mjs +0 -179
  79. package/esm2020/utils/drag-and-drop/providers/drag-handle-registrar.service.mjs +0 -60
  80. package/esm2020/utils/drag-and-drop/providers/draggable-snapshot.service.mjs +0 -38
  81. package/esm2020/utils/drag-and-drop/providers/global-drag-mode.service.mjs +0 -26
  82. package/esm2020/utils/focus-trap/focus-trap-config.interface.mjs +0 -7
  83. package/esm2020/utils/focus-trap/focus-trap-tracker.service.mjs +0 -32
  84. package/esm2020/utils/focus-trap/focus-trap.directive.mjs +0 -158
  85. package/esm2020/utils/focus-trap/focus-trap.mjs +0 -141
  86. package/esm2020/utils/focus-trap/focus-trap.module.mjs +0 -24
  87. package/esm2020/utils/focus-trap/index.mjs +0 -9
  88. package/esm2020/utils/for-type-ahead/for-type-ahead.mjs +0 -54
  89. package/esm2020/utils/for-type-ahead/for-type-ahead.module.mjs +0 -23
  90. package/esm2020/utils/for-type-ahead/for-type-ahead.service.mjs +0 -29
  91. package/esm2020/utils/for-type-ahead/index.mjs +0 -8
  92. package/utils/a11y/aria-live.service.d.ts +0 -93
  93. package/utils/a11y/index.d.ts +0 -1
  94. package/utils/drag-and-drop/drag-and-drop.module.d.ts +0 -14
  95. package/utils/drag-and-drop/drag-event.d.ts +0 -8
  96. package/utils/drag-and-drop/drag-handle.d.ts +0 -11
  97. package/utils/drag-and-drop/draggable/draggable.d.ts +0 -36
  98. package/utils/drag-and-drop/draggable-ghost.d.ts +0 -30
  99. package/utils/drag-and-drop/droppable/droppable.d.ts +0 -42
  100. package/utils/drag-and-drop/if-dragged.d.ts +0 -13
  101. package/utils/drag-and-drop/index.d.ts +0 -8
  102. package/utils/drag-and-drop/interfaces/drag-event.interface.d.ts +0 -22
  103. package/utils/drag-and-drop/interfaces/drop-tolerance.interface.d.ts +0 -6
  104. package/utils/drag-and-drop/providers/drag-and-drop-event-bus.service.d.ts +0 -16
  105. package/utils/drag-and-drop/providers/drag-event-listener.service.d.ts +0 -39
  106. package/utils/drag-and-drop/providers/drag-handle-registrar.service.d.ts +0 -18
  107. package/utils/drag-and-drop/providers/draggable-snapshot.service.d.ts +0 -16
  108. package/utils/drag-and-drop/providers/global-drag-mode.service.d.ts +0 -10
  109. package/utils/focus-trap/focus-trap-config.interface.d.ts +0 -3
  110. package/utils/focus-trap/focus-trap-tracker.service.d.ts +0 -12
  111. package/utils/focus-trap/focus-trap.d.ts +0 -29
  112. package/utils/focus-trap/focus-trap.directive.d.ts +0 -38
  113. package/utils/focus-trap/focus-trap.module.d.ts +0 -10
  114. package/utils/focus-trap/index.d.ts +0 -3
  115. package/utils/for-type-ahead/for-type-ahead.d.ts +0 -15
  116. package/utils/for-type-ahead/for-type-ahead.module.d.ts +0 -8
  117. package/utils/for-type-ahead/for-type-ahead.service.d.ts +0 -11
  118. package/utils/for-type-ahead/index.d.ts +0 -2
@@ -9,8 +9,9 @@ import { Subject, BehaviorSubject, Observable, fromEvent, isObservable, of, Repl
9
9
  import { trigger, transition, style, animate, keyframes, state } from '@angular/animations';
10
10
  import * as i1 from '@angular/forms';
11
11
  import { FormControl, FormGroup, FormsModule, NG_VALIDATORS, SelectMultipleControlValueAccessor } from '@angular/forms';
12
+ import { CdkTrapFocus } from '@angular/cdk/a11y';
13
+ import { CdkDrag } from '@angular/cdk/drag-drop';
12
14
  import * as i1$1 from '@angular/router';
13
- import { FocusTrapTrackerService, createId, isFocusable, isHTMLElement } from '@cds/core/internal';
14
15
  import '@cds/core/internal-components/close-button/register.js';
15
16
  import '@cds/core/icon/register';
16
17
 
@@ -332,7 +333,6 @@ const commonStringsDefault = {
332
333
  responsiveNavOverflowOpen: 'Navigation overflow menu',
333
334
  responsiveNavOverflowClose: 'Navigation overflow menu',
334
335
  //Vertical Nav
335
- verticalNavGroupToggle: 'Toggle vertical navigation group',
336
336
  verticalNavToggle: 'Toggle vertical navigation',
337
337
  // Timeline steps
338
338
  timelineStepNotStarted: 'Not started',
@@ -596,10 +596,10 @@ class ClrAccordionPanel {
596
596
  }
597
597
  }
598
598
  ClrAccordionPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrAccordionPanel, deps: [{ token: ClrCommonStringsService }, { token: AccordionService }, { token: IfExpandService }], target: i0.ɵɵFactoryTarget.Component });
599
- ClrAccordionPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", 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", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], animations: panelAnimation, changeDetection: i0.ChangeDetectionStrategy.OnPush });
599
+ ClrAccordionPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", 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 [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", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], animations: panelAnimation, changeDetection: i0.ChangeDetectionStrategy.OnPush });
600
600
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrAccordionPanel, decorators: [{
601
601
  type: Component,
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" }]
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 [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
603
  }], ctorParameters: function () { return [{ type: ClrCommonStringsService }, { type: AccordionService }, { type: IfExpandService }]; }, propDecorators: { disabled: [{
604
604
  type: Input,
605
605
  args: ['clrAccordionPanelDisabled']
@@ -1091,10 +1091,10 @@ class ClrStepperPanel extends ClrAccordionPanel {
1091
1091
  }
1092
1092
  }
1093
1093
  ClrStepperPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", 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: "14.0.0", version: "15.0.2", 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", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], animations: stepAnimation, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1094
+ ClrStepperPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", 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 [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", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], animations: stepAnimation, changeDetection: i0.ChangeDetectionStrategy.OnPush });
1095
1095
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStepperPanel, decorators: [{
1096
1096
  type: Component,
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" }]
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 [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" }]
1098
1098
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
1099
1099
  type: Inject,
1100
1100
  args: [PLATFORM_ID]
@@ -6985,202 +6985,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
6985
6985
  * This software is released under MIT license.
6986
6986
  * The full license information can be found in LICENSE in the root directory of this project.
6987
6987
  */
6988
- class FocusTrapTracker {
6989
- constructor() {
6990
- this._previousFocusTraps = [];
6991
- }
6992
- get current() {
6993
- return this._current;
6994
- }
6995
- set current(value) {
6996
- this._previousFocusTraps.push(this._current);
6997
- this._current = value;
6998
- }
6999
- get nbFocusTrappers() {
7000
- return this._previousFocusTraps.length;
7001
- }
7002
- activatePreviousTrapper() {
7003
- this._current = this._previousFocusTraps.pop();
7004
- }
7005
- }
7006
- FocusTrapTracker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusTrapTracker, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7007
- FocusTrapTracker.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusTrapTracker, providedIn: 'root' });
7008
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusTrapTracker, decorators: [{
7009
- type: Injectable,
7010
- args: [{ providedIn: 'root' }]
7011
- }] });
7012
-
7013
- /*
7014
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
7015
- * This software is released under MIT license.
7016
- * The full license information can be found in LICENSE in the root directory of this project.
6988
+ /**
6989
+ * This is just a copy of CdkTrapFocus so it can be used independent of the rest of the A11yModule.
7017
6990
  */
7018
- const FOCUSABLES = '[href]:not([tabindex="-1"]), button:not([disabled]):not([tabindex="-1"]), input:not([disabled]):not([tabindex="-1"]), select:not([disabled]):not([tabindex="-1"]), textarea:not([disabled]):not([tabindex="-1"]), [contenteditable="true"]:not([tabindex="-1"]), [tabindex]:not([tabindex="-1"]) ';
7019
- class FocusTrapDirective {
7020
- constructor(el, injector, focusTrapsTracker, renderer, platformId) {
7021
- this.el = el;
7022
- this.injector = injector;
7023
- this.focusTrapsTracker = focusTrapsTracker;
7024
- this.renderer = renderer;
7025
- this.platformId = platformId;
7026
- this.localFocusEscaped = false;
7027
- this._config = {
7028
- strict: true,
7029
- };
7030
- this.document = this.injector.get(DOCUMENT);
7031
- this.focusTrapsTracker.current = this;
7032
- }
7033
- set config(config) {
7034
- this._config = Object.assign(this._config, config === '' ? {} : config);
7035
- }
7036
- onFocusIn(event) {
7037
- const nativeElement = this.el.nativeElement;
7038
- if (this.focusTrapsTracker.current !== this ||
7039
- !isPlatformBrowser(this.platformId) ||
7040
- this.localFocusEscaped ||
7041
- nativeElement.contains(event.target)) {
7042
- return;
7043
- }
7044
- if (event.target === this.topReboundEl && nativeElement.contains(event.relatedTarget)) {
7045
- this.focusLastFocusable();
7046
- // if it fails to focus element inside the trap, focus the trap element.
7047
- this.focusTrapElIfOutside();
7048
- }
7049
- else if (event.target === this.bottomReboundEl && nativeElement.contains(event.relatedTarget)) {
7050
- this.focusFirstFocusable();
7051
- // if it fails to focus element inside the trap, focus the trap element.
7052
- this.focusTrapElIfOutside();
7053
- }
7054
- else {
7055
- this._config.strict ? this.el.nativeElement.focus() : (this.localFocusEscaped = true);
7056
- }
7057
- }
7058
- createFocusableOffScreenEl() {
7059
- // Not using Renderer2's createElement method because that leads to DOM leakage.
7060
- // https://github.com/angular/angular/issues/26954
7061
- const offScreenSpan = this.document.createElement('span');
7062
- this.renderer.setAttribute(offScreenSpan, 'tabindex', '0');
7063
- this.renderer.addClass(offScreenSpan, 'offscreen-focus-rebounder');
7064
- return offScreenSpan;
7065
- }
7066
- addReboundEls() {
7067
- if (isPlatformBrowser(this.platformId)) {
7068
- this.topReboundEl = this.createFocusableOffScreenEl();
7069
- this.bottomReboundEl = this.createFocusableOffScreenEl();
7070
- const hostElement = this.el.nativeElement;
7071
- // Add reboundBeforeTrapEl right outside of host element
7072
- this.renderer.insertBefore(hostElement.parentElement, this.topReboundEl, hostElement);
7073
- // Add reboundAfterTrapEl right after host element
7074
- if (hostElement.nextSibling) {
7075
- this.renderer.insertBefore(hostElement.parentNode, this.bottomReboundEl, hostElement.nextSibling);
7076
- }
7077
- else {
7078
- this.renderer.appendChild(hostElement.parentNode, this.bottomReboundEl);
7079
- }
7080
- }
7081
- }
7082
- removeReboundEls() {
7083
- if (isPlatformBrowser(this.platformId) && this.topReboundEl && this.bottomReboundEl) {
7084
- this.parentElement.removeChild(this.topReboundEl);
7085
- this.parentElement.removeChild(this.bottomReboundEl);
7086
- // These are here to to make sure that
7087
- // we completely delete all traces of the removed DOM objects.
7088
- delete this.topReboundEl;
7089
- delete this.bottomReboundEl;
7090
- }
7091
- }
7092
- setPreviousFocus() {
7093
- if (this.previousActiveElement && this.previousActiveElement.focus) {
7094
- this.previousActiveElement.focus();
7095
- }
7096
- }
7097
- ngOnInit() {
7098
- if (isPlatformBrowser(this.platformId)) {
7099
- this.renderer.setAttribute(this.el.nativeElement, 'tabindex', '-1');
7100
- this.el.nativeElement.focus();
7101
- }
7102
- }
7103
- ngAfterViewInit() {
7104
- if (isPlatformBrowser(this.platformId)) {
7105
- this.previousActiveElement = this.document.activeElement;
7106
- this.parentElement = this.el.nativeElement.parentElement;
7107
- }
7108
- this.addReboundEls();
7109
- }
7110
- get potentiallyFocusableEls() {
7111
- return [...this.el.nativeElement.querySelectorAll(FOCUSABLES)];
7112
- }
7113
- focusFirstFocusable() {
7114
- for (let i = 0; i < this.potentiallyFocusableEls.length; i++) {
7115
- this.firstFocusableEl = this.focusElement(this.potentiallyFocusableEls[i]);
7116
- if (this.firstFocusableEl) {
7117
- break;
7118
- }
7119
- }
7120
- }
7121
- focusLastFocusable() {
7122
- for (let i = this.potentiallyFocusableEls.length - 1; i >= 0; i--) {
7123
- this.lastFocusableEl = this.focusElement(this.potentiallyFocusableEls[i]);
7124
- if (this.lastFocusableEl) {
7125
- break;
7126
- }
7127
- }
7128
- }
7129
- focusTrapElIfOutside() {
7130
- if (!this.el.nativeElement.contains(document.activeElement)) {
7131
- this.el.nativeElement.focus();
7132
- }
7133
- }
7134
- focusElement(el) {
7135
- if (el && el.focus) {
7136
- el.focus();
7137
- if (document.activeElement === el) {
7138
- return el;
7139
- }
7140
- }
7141
- return null;
7142
- }
7143
- ngOnDestroy() {
7144
- this.removeReboundEls();
7145
- this.setPreviousFocus();
7146
- this.focusTrapsTracker.activatePreviousTrapper();
7147
- }
6991
+ class CdkTrapFocusModule_CdkTrapFocus extends CdkTrapFocus {
7148
6992
  }
7149
- FocusTrapDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusTrapDirective, deps: [{ token: i0.ElementRef }, { token: i0.Injector }, { token: FocusTrapTracker }, { token: i0.Renderer2 }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Directive });
7150
- FocusTrapDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: FocusTrapDirective, selector: "[clrFocusTrap]", inputs: { config: ["clrFocusTrap", "config"] }, host: { listeners: { "document:focusin": "onFocusIn($event)" } }, ngImport: i0 });
7151
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusTrapDirective, decorators: [{
6993
+ CdkTrapFocusModule_CdkTrapFocus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkTrapFocusModule_CdkTrapFocus, deps: null, target: i0.ɵɵFactoryTarget.Directive });
6994
+ CdkTrapFocusModule_CdkTrapFocus.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]", usesInheritance: true, ngImport: i0 });
6995
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkTrapFocusModule_CdkTrapFocus, decorators: [{
7152
6996
  type: Directive,
7153
6997
  args: [{
7154
- selector: '[clrFocusTrap]',
6998
+ selector: '[cdkTrapFocus]',
7155
6999
  }]
7156
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Injector }, { type: FocusTrapTracker }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
7157
- type: Inject,
7158
- args: [PLATFORM_ID]
7159
- }] }]; }, propDecorators: { config: [{
7160
- type: Input,
7161
- args: ['clrFocusTrap']
7162
- }], onFocusIn: [{
7163
- type: HostListener,
7164
- args: ['document:focusin', ['$event']]
7165
- }] } });
7166
-
7167
- /*
7168
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
7169
- * This software is released under MIT license.
7170
- * The full license information can be found in LICENSE in the root directory of this project.
7000
+ }] });
7001
+ /**
7002
+ * This module allows us to avoid importing all of A11yModule which results in a smaller application bundle.
7171
7003
  */
7172
- const FOCUS_TRAP_DIRECTIVES = [FocusTrapDirective];
7173
- class ClrFocusTrapModule {
7004
+ class CdkTrapFocusModule {
7174
7005
  }
7175
- ClrFocusTrapModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrFocusTrapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7176
- ClrFocusTrapModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: ClrFocusTrapModule, declarations: [FocusTrapDirective], imports: [CommonModule], exports: [FocusTrapDirective] });
7177
- ClrFocusTrapModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrFocusTrapModule, imports: [CommonModule] });
7178
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrFocusTrapModule, decorators: [{
7006
+ CdkTrapFocusModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkTrapFocusModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7007
+ CdkTrapFocusModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: CdkTrapFocusModule, declarations: [CdkTrapFocusModule_CdkTrapFocus], exports: [CdkTrapFocusModule_CdkTrapFocus] });
7008
+ CdkTrapFocusModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkTrapFocusModule });
7009
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkTrapFocusModule, decorators: [{
7179
7010
  type: NgModule,
7180
7011
  args: [{
7181
- imports: [CommonModule],
7182
- declarations: [FOCUS_TRAP_DIRECTIVES],
7183
- exports: [FOCUS_TRAP_DIRECTIVES],
7012
+ declarations: [CdkTrapFocusModule_CdkTrapFocus],
7013
+ exports: [CdkTrapFocusModule_CdkTrapFocus],
7184
7014
  }]
7185
7015
  }] });
7186
7016
 
@@ -8965,7 +8795,7 @@ ClrDateContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
8965
8795
  </button>
8966
8796
  <clr-datepicker-view-manager
8967
8797
  *clrPopoverContent="open; at: popoverPosition; outsideClickToClose: true; scrollToClose: true"
8968
- clrFocusTrap
8798
+ cdkTrapFocus
8969
8799
  ></clr-datepicker-view-manager>
8970
8800
  </div>
8971
8801
  <cds-icon
@@ -8987,7 +8817,7 @@ ClrDateContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
8987
8817
  <ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
8988
8818
  <ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
8989
8819
  </div>
8990
- `, isInline: true, dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { kind: "directive", type: ClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { kind: "directive", type: ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: FocusTrapDirective, selector: "[clrFocusTrap]", inputs: ["clrFocusTrap"] }, { kind: "directive", type: ClrLabel, selector: "label", inputs: ["for"] }, { kind: "component", type: ClrDatepickerViewManager, selector: "clr-datepicker-view-manager" }] });
8820
+ `, isInline: true, dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]" }, { kind: "directive", type: ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { kind: "directive", type: ClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { kind: "directive", type: ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: ClrLabel, selector: "label", inputs: ["for"] }, { kind: "component", type: ClrDatepickerViewManager, selector: "clr-datepicker-view-manager" }] });
8991
8821
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDateContainer, decorators: [{
8992
8822
  type: Component,
8993
8823
  args: [{
@@ -9011,7 +8841,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
9011
8841
  </button>
9012
8842
  <clr-datepicker-view-manager
9013
8843
  *clrPopoverContent="open; at: popoverPosition; outsideClickToClose: true; scrollToClose: true"
9014
- clrFocusTrap
8844
+ cdkTrapFocus
9015
8845
  ></clr-datepicker-view-manager>
9016
8846
  </div>
9017
8847
  <cds-icon
@@ -9401,11 +9231,11 @@ ClrDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ver
9401
9231
  ClrYearpicker,
9402
9232
  ClrDaypicker,
9403
9233
  ClrCalendar], imports: [CommonModule,
9234
+ CdkTrapFocusModule,
9404
9235
  ClrHostWrappingModule,
9405
9236
  ClrConditionalModule,
9406
9237
  ClrPopoverModuleNext,
9407
9238
  ClrIconModule,
9408
- ClrFocusTrapModule,
9409
9239
  ClrCommonFormsModule], exports: [ClrDay,
9410
9240
  ClrDateContainer,
9411
9241
  ClrDateInput,
@@ -9416,22 +9246,22 @@ ClrDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ver
9416
9246
  ClrDaypicker,
9417
9247
  ClrCalendar] });
9418
9248
  ClrDatepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatepickerModule, imports: [CommonModule,
9249
+ CdkTrapFocusModule,
9419
9250
  ClrHostWrappingModule,
9420
9251
  ClrConditionalModule,
9421
9252
  ClrPopoverModuleNext,
9422
9253
  ClrIconModule,
9423
- ClrFocusTrapModule,
9424
9254
  ClrCommonFormsModule] });
9425
9255
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatepickerModule, decorators: [{
9426
9256
  type: NgModule,
9427
9257
  args: [{
9428
9258
  imports: [
9429
9259
  CommonModule,
9260
+ CdkTrapFocusModule,
9430
9261
  ClrHostWrappingModule,
9431
9262
  ClrConditionalModule,
9432
9263
  ClrPopoverModuleNext,
9433
9264
  ClrIconModule,
9434
- ClrFocusTrapModule,
9435
9265
  ClrCommonFormsModule,
9436
9266
  ],
9437
9267
  declarations: [CLR_DATEPICKER_DIRECTIVES],
@@ -10399,972 +10229,45 @@ class ClrExpandableAnimation {
10399
10229
  this.startHeight = 0;
10400
10230
  }
10401
10231
  get expandAnimation() {
10402
- return { value: this.clrExpandTrigger, params: { startHeight: this.startHeight } };
10403
- }
10404
- animationDone() {
10405
- // A "safe" auto-update of the height ensuring basic OOTB user experience .
10406
- // Prone to small jumps in initial animation height if data was changed in the meantime, window was resized, etc.
10407
- // For optimal behavior call manually updateStartHeight() from the parent component before initiating the update.
10408
- this.updateStartHeight();
10409
- }
10410
- updateStartHeight() {
10411
- this.startHeight = this.domAdapter.computedHeight(this.element.nativeElement) || 0;
10412
- }
10413
- }
10414
- ClrExpandableAnimation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrExpandableAnimation, deps: [{ token: i0.ElementRef }, { token: DomAdapter }], target: i0.ɵɵFactoryTarget.Component });
10415
- ClrExpandableAnimation.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrExpandableAnimation, selector: "clr-expandable-animation", inputs: { clrExpandTrigger: "clrExpandTrigger" }, host: { listeners: { "@expandAnimation.done": "animationDone()" }, properties: { "@expandAnimation": "this.expandAnimation" } }, providers: [DomAdapter], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{display:block}\n"], animations: [
10416
- trigger('expandAnimation', [
10417
- transition('true <=> false', [
10418
- style({ height: '{{startHeight}}px', overflow: 'hidden' }),
10419
- animate('0.2s ease-in-out', style({ height: '*' })),
10420
- ]),
10421
- ]),
10422
- ] });
10423
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrExpandableAnimation, decorators: [{
10424
- type: Component,
10425
- args: [{ selector: 'clr-expandable-animation', template: `<ng-content></ng-content>`, animations: [
10426
- trigger('expandAnimation', [
10427
- transition('true <=> false', [
10428
- style({ height: '{{startHeight}}px', overflow: 'hidden' }),
10429
- animate('0.2s ease-in-out', style({ height: '*' })),
10430
- ]),
10431
- ]),
10432
- ], providers: [DomAdapter], styles: [":host{display:block}\n"] }]
10433
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: DomAdapter }]; }, propDecorators: { clrExpandTrigger: [{
10434
- type: Input
10435
- }], expandAnimation: [{
10436
- type: HostBinding,
10437
- args: ['@expandAnimation']
10438
- }], animationDone: [{
10439
- type: HostListener,
10440
- args: ['@expandAnimation.done']
10441
- }] } });
10442
-
10443
- /*
10444
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
10445
- * This software is released under MIT license.
10446
- * The full license information can be found in LICENSE in the root directory of this project.
10447
- */
10448
- const EXPANDABLE_ANIMATION_DIRECTIVES = [ClrExpandableAnimation];
10449
-
10450
- /*
10451
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
10452
- * This software is released under MIT license.
10453
- * The full license information can be found in LICENSE in the root directory of this project.
10454
- */
10455
- class ClrExpandableAnimationModule {
10456
- }
10457
- ClrExpandableAnimationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrExpandableAnimationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10458
- ClrExpandableAnimationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: ClrExpandableAnimationModule, declarations: [ClrExpandableAnimation], imports: [CommonModule], exports: [ClrExpandableAnimation] });
10459
- ClrExpandableAnimationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrExpandableAnimationModule, imports: [CommonModule] });
10460
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrExpandableAnimationModule, decorators: [{
10461
- type: NgModule,
10462
- args: [{
10463
- imports: [CommonModule],
10464
- declarations: [EXPANDABLE_ANIMATION_DIRECTIVES],
10465
- exports: [EXPANDABLE_ANIMATION_DIRECTIVES],
10466
- }]
10467
- }] });
10468
-
10469
- /*
10470
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
10471
- * This software is released under MIT license.
10472
- * The full license information can be found in LICENSE in the root directory of this project.
10473
- */
10474
- var DragEventType;
10475
- (function (DragEventType) {
10476
- DragEventType[DragEventType["DRAG_START"] = 0] = "DRAG_START";
10477
- DragEventType[DragEventType["DRAG_MOVE"] = 1] = "DRAG_MOVE";
10478
- DragEventType[DragEventType["DRAG_END"] = 2] = "DRAG_END";
10479
- DragEventType[DragEventType["DRAG_ENTER"] = 3] = "DRAG_ENTER";
10480
- DragEventType[DragEventType["DRAG_LEAVE"] = 4] = "DRAG_LEAVE";
10481
- DragEventType[DragEventType["DROP"] = 5] = "DROP";
10482
- })(DragEventType || (DragEventType = {}));
10483
-
10484
- /*
10485
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
10486
- * This software is released under MIT license.
10487
- * The full license information can be found in LICENSE in the root directory of this project.
10488
- */
10489
- class DragAndDropEventBusService {
10490
- constructor() {
10491
- this.dragStart = new Subject();
10492
- this.dragMove = new Subject();
10493
- this.dragEnd = new Subject();
10494
- this.drop = new Subject();
10495
- }
10496
- get dragStarted() {
10497
- return this.dragStart.asObservable();
10498
- }
10499
- get dragMoved() {
10500
- return this.dragMove.asObservable();
10501
- }
10502
- get dragEnded() {
10503
- return this.dragEnd.asObservable();
10504
- }
10505
- get dropped() {
10506
- return this.drop.asObservable();
10507
- }
10508
- broadcast(event) {
10509
- switch (event.type) {
10510
- case DragEventType.DRAG_START:
10511
- this.dragStart.next(event);
10512
- break;
10513
- case DragEventType.DRAG_MOVE:
10514
- this.dragMove.next(event);
10515
- break;
10516
- case DragEventType.DRAG_END:
10517
- this.dragEnd.next(event);
10518
- break;
10519
- case DragEventType.DROP:
10520
- this.drop.next(event);
10521
- break;
10522
- default:
10523
- break;
10524
- }
10525
- }
10526
- }
10527
- DragAndDropEventBusService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DragAndDropEventBusService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
10528
- DragAndDropEventBusService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DragAndDropEventBusService, providedIn: 'root' });
10529
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DragAndDropEventBusService, decorators: [{
10530
- type: Injectable,
10531
- args: [{ providedIn: 'root' }]
10532
- }] });
10533
-
10534
- /*
10535
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
10536
- * This software is released under MIT license.
10537
- * The full license information can be found in LICENSE in the root directory of this project.
10538
- */
10539
- class DragEventListenerService {
10540
- constructor(ngZone, renderer, eventBus) {
10541
- this.ngZone = ngZone;
10542
- this.renderer = renderer;
10543
- this.eventBus = eventBus;
10544
- // contains listeners for the starting events such as mousedown and touchstart
10545
- this.listeners = [];
10546
- this.dragStart = new Subject();
10547
- this.dragMove = new Subject();
10548
- this.dragEnd = new Subject();
10549
- this.hasDragStarted = false;
10550
- this.dragStartDelay = 0;
10551
- }
10552
- get dragStarted() {
10553
- return this.dragStart.asObservable();
10554
- }
10555
- get dragMoved() {
10556
- return this.dragMove.asObservable();
10557
- }
10558
- get dragEnded() {
10559
- return this.dragEnd.asObservable();
10560
- }
10561
- get dragStartPosition() {
10562
- return this.initialPosition;
10563
- }
10564
- attachDragListeners(draggableEl) {
10565
- this.draggableEl = draggableEl;
10566
- this.listeners.push(this.customDragEvent(this.draggableEl, 'mousedown', 'mousemove', 'mouseup'));
10567
- this.listeners.push(this.customDragEvent(this.draggableEl, 'touchstart', 'touchmove', 'touchend'));
10568
- }
10569
- detachDragListeners() {
10570
- if (this.listeners) {
10571
- this.listeners.map(event => event());
10572
- }
10573
- // In most cases, once users start dragging with mousedown/touchstart events,
10574
- // they will end dragging at one point with mouseup/touchend.
10575
- // However, there might be a few cases where mousedown/touchstart events get registered,
10576
- // but the draggable element gets removed before user ends dragging.
10577
- // In that case, we need to remove the attached listeners that happened during the mousedown/touchstart events.
10578
- if (this.nestedListeners) {
10579
- this.nestedListeners.map(event => event());
10580
- }
10581
- if (this.checkDragStartBoundaryListener) {
10582
- this.checkDragStartBoundaryListener();
10583
- }
10584
- }
10585
- getNativeEventObject(event) {
10586
- if (Object.prototype.hasOwnProperty.call(event, 'changedTouches')) {
10587
- return event.changedTouches[0];
10588
- }
10589
- else {
10590
- return event;
10591
- }
10592
- }
10593
- customDragEvent(element, startOnEvent, moveOnEvent, endOnEvent) {
10594
- return this.renderer.listen(element, startOnEvent, (startEvent) => {
10595
- // save the initial point to initialPosition
10596
- // this will be used to calculate how far the draggable has been dragged from its initial position
10597
- this.initialPosition = {
10598
- pageX: this.getNativeEventObject(startEvent).pageX,
10599
- pageY: this.getNativeEventObject(startEvent).pageY,
10600
- };
10601
- // Initialize nested listeners' property with a new empty array;
10602
- this.nestedListeners = [];
10603
- // Listen to selectstart/mousemove/touchmove events outside of angular zone.
10604
- this.ngZone.runOutsideAngular(() => {
10605
- // This is needed to disable selection during dragging (especially in EDGE/IE11).
10606
- this.nestedListeners.push(this.renderer.listen('document', 'selectstart', (selectEvent) => {
10607
- selectEvent.preventDefault();
10608
- selectEvent.stopImmediatePropagation();
10609
- }));
10610
- // During the drag start delay, pointer should stay within the boundary.
10611
- this.checkDragStartBoundary(moveOnEvent);
10612
- this.dragStartDelayTimeout = setTimeout(() => {
10613
- if (this.checkDragStartBoundaryListener) {
10614
- this.checkDragStartBoundaryListener();
10615
- }
10616
- this.hasDragStarted = true;
10617
- // Fire "dragstart"
10618
- this.broadcast(startEvent, DragEventType.DRAG_START);
10619
- this.nestedListeners.push(this.renderer.listen('document', moveOnEvent, (moveEvent) => {
10620
- // Event.stopImmediatePropagation() is needed here to prevent nested draggables from getting dragged
10621
- // altogether. We shouldn't use Event.stopPropagation() here as we are listening to the events
10622
- // on the global element level.
10623
- // With Event.stopImmediatePropagation(), it registers the events sent from the inner most draggable
10624
- // first. Then immediately after that, it stops listening to the same type of events on the same
10625
- // element. So this will help us to not register the same events that would come from the parent
10626
- // level draggables eventually.
10627
- moveEvent.stopImmediatePropagation();
10628
- if (this.hasDragStarted) {
10629
- // Fire "dragmove"
10630
- this.broadcast(moveEvent, DragEventType.DRAG_MOVE);
10631
- }
10632
- }));
10633
- }, this.dragStartDelay);
10634
- });
10635
- // Listen to mouseup/touchend events.
10636
- this.nestedListeners.push(this.renderer.listen('document', endOnEvent, (endEvent) => {
10637
- if (this.hasDragStarted) {
10638
- // Fire "dragend" only if dragstart is registered
10639
- this.hasDragStarted = false;
10640
- this.broadcast(endEvent, DragEventType.DRAG_END);
10641
- }
10642
- clearTimeout(this.dragStartDelayTimeout);
10643
- // We must remove the the nested listeners every time drag completes.
10644
- this.nestedListeners.map(event => event());
10645
- // We must remove the event listener from checkDragStartBoundary
10646
- if (this.checkDragStartBoundaryListener) {
10647
- this.checkDragStartBoundaryListener();
10648
- }
10649
- }));
10650
- });
10651
- }
10652
- checkDragStartBoundary(eventType) {
10653
- this.checkDragStartBoundaryListener = this.renderer.listen('document', eventType, (moveEvent) => {
10654
- const deltaX = Math.abs(this.getNativeEventObject(moveEvent).pageX - this.initialPosition.pageX);
10655
- const deltaY = Math.abs(this.getNativeEventObject(moveEvent).pageY - this.initialPosition.pageY);
10656
- // If pointer move delta exceeds horizontal or vertical threshold,
10657
- // we should cancel drag initiation.
10658
- if (deltaX > 1 || deltaY > 1) {
10659
- clearTimeout(this.dragStartDelayTimeout);
10660
- if (this.checkDragStartBoundaryListener) {
10661
- this.checkDragStartBoundaryListener();
10662
- }
10663
- }
10664
- });
10665
- }
10666
- broadcast(event, eventType) {
10667
- const dragEvent = this.generateDragEvent(event, eventType);
10668
- switch (dragEvent.type) {
10669
- case DragEventType.DRAG_START:
10670
- this.dragStart.next(dragEvent);
10671
- break;
10672
- case DragEventType.DRAG_MOVE:
10673
- this.dragMove.next(dragEvent);
10674
- break;
10675
- case DragEventType.DRAG_END:
10676
- this.dragEnd.next(dragEvent);
10677
- break;
10678
- default:
10679
- break;
10680
- }
10681
- // The following properties are set after they are broadcasted to the DraggableGhost component.
10682
- dragEvent.ghostElement = this.ghostElement;
10683
- dragEvent.dropPointPosition = this.dropPointPosition;
10684
- this.eventBus.broadcast(dragEvent);
10685
- }
10686
- generateDragEvent(event, eventType) {
10687
- const nativeEvent = this.getNativeEventObject(event);
10688
- return {
10689
- type: eventType,
10690
- dragPosition: {
10691
- pageX: nativeEvent.pageX,
10692
- pageY: nativeEvent.pageY,
10693
- moveX: nativeEvent.pageX - this.initialPosition.pageX,
10694
- moveY: nativeEvent.pageY - this.initialPosition.pageY,
10695
- },
10696
- group: this.group,
10697
- dragDataTransfer: this.dragDataTransfer,
10698
- ghostElement: this.ghostElement,
10699
- };
10700
- }
10701
- }
10702
- DragEventListenerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DragEventListenerService, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: DragAndDropEventBusService }], target: i0.ɵɵFactoryTarget.Injectable });
10703
- DragEventListenerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DragEventListenerService });
10704
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DragEventListenerService, decorators: [{
10705
- type: Injectable
10706
- }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: DragAndDropEventBusService }]; } });
10707
-
10708
- /*
10709
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
10710
- * This software is released under MIT license.
10711
- * The full license information can be found in LICENSE in the root directory of this project.
10712
- */
10713
- // This provider registers the drag handle element.
10714
- // When it registers a element as a drag handle, it attaches that element to the listeners from ClrDragEventListener.
10715
- // Also, it adds the "drag-handle" css class to the registered element through Renderer.
10716
- class DragHandleRegistrarService {
10717
- constructor(dragEventListener, renderer) {
10718
- this.dragEventListener = dragEventListener;
10719
- this.renderer = renderer;
10720
- }
10721
- get defaultHandleEl() {
10722
- return this._defaultHandleEl;
10723
- }
10724
- set defaultHandleEl(el) {
10725
- this._defaultHandleEl = el; // defaultHandleEl will be usually the clrDraggable element.
10726
- // If the customHandleEl has been registered,
10727
- // don't make the defaultHandleEl the drag handle yet until the customHandleEl is unregistered.
10728
- if (!this._customHandleEl) {
10729
- this.makeElementHandle(this._defaultHandleEl);
10730
- }
10731
- }
10732
- makeElementHandle(el) {
10733
- if (this._defaultHandleEl && this._defaultHandleEl !== el) {
10734
- // Before making an element the custom handle element,
10735
- // we should remove the existing drag-handle class from the draggable element.
10736
- this.renderer.removeClass(this._defaultHandleEl, 'drag-handle');
10737
- }
10738
- this.dragEventListener.attachDragListeners(el);
10739
- this.renderer.addClass(el, 'drag-handle');
10740
- }
10741
- get customHandleEl() {
10742
- return this._customHandleEl;
10743
- }
10744
- registerCustomHandle(el) {
10745
- this.dragEventListener.detachDragListeners(); // removes the existing listeners
10746
- this._customHandleEl = el;
10747
- this.makeElementHandle(this._customHandleEl);
10748
- }
10749
- unregisterCustomHandle() {
10750
- this.dragEventListener.detachDragListeners(); // removes the existing listeners
10751
- this.renderer.removeClass(this._customHandleEl, 'drag-handle');
10752
- delete this._customHandleEl;
10753
- // if default handle is set, make that handle
10754
- if (this._defaultHandleEl) {
10755
- this.makeElementHandle(this._defaultHandleEl);
10756
- }
10757
- }
10758
- }
10759
- DragHandleRegistrarService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DragHandleRegistrarService, deps: [{ token: DragEventListenerService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable });
10760
- DragHandleRegistrarService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DragHandleRegistrarService });
10761
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DragHandleRegistrarService, decorators: [{
10762
- type: Injectable
10763
- }], ctorParameters: function () { return [{ type: DragEventListenerService }, { type: i0.Renderer2 }]; } });
10764
-
10765
- /*
10766
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
10767
- * This software is released under MIT license.
10768
- * The full license information can be found in LICENSE in the root directory of this project.
10769
- */
10770
- class ClrDragHandle {
10771
- constructor(el, dragHandleRegistrar) {
10772
- this.el = el;
10773
- this.dragHandleRegistrar = dragHandleRegistrar;
10774
- if (!this.dragHandleRegistrar) {
10775
- // ClrDragHandleRegistrar is provided in ClrDraggable so we expect it to be present here
10776
- // as clrDragHandle is required to be used only inside of a clrDraggable directive.
10777
- throw new Error('The clrDragHandle directive can only be used inside of a clrDraggable directive.');
10778
- }
10779
- this.dragHandleRegistrar.registerCustomHandle(this.el.nativeElement);
10780
- }
10781
- ngOnDestroy() {
10782
- this.dragHandleRegistrar.unregisterCustomHandle();
10783
- }
10784
- }
10785
- ClrDragHandle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDragHandle, deps: [{ token: i0.ElementRef }, { token: DragHandleRegistrarService, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
10786
- ClrDragHandle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: ClrDragHandle, selector: "[clrDragHandle]", host: { properties: { "class.drag-handle": "true" } }, ngImport: i0 });
10787
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDragHandle, decorators: [{
10788
- type: Directive,
10789
- args: [{
10790
- selector: '[clrDragHandle]',
10791
- host: { '[class.drag-handle]': 'true' },
10792
- }]
10793
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: DragHandleRegistrarService, decorators: [{
10794
- type: Optional
10795
- }] }]; } });
10796
-
10797
- /*
10798
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
10799
- * This software is released under MIT license.
10800
- * The full license information can be found in LICENSE in the root directory of this project.
10801
- */
10802
- // This service is used to capture the state of clrDraggable element
10803
- // at a certain event and passes it to clrDraggableGhost component.
10804
- class DraggableSnapshotService {
10805
- constructor(domAdapter) {
10806
- this.domAdapter = domAdapter;
10807
- }
10808
- capture(el, event) {
10809
- this.draggableElClientRect = this.domAdapter.clientRect(el);
10810
- this.snapshotDragEvent = event;
10811
- }
10812
- discard() {
10813
- delete this.draggableElClientRect;
10814
- delete this.snapshotDragEvent;
10815
- }
10816
- get hasDraggableState() {
10817
- return !!this.snapshotDragEvent && !!this.draggableElClientRect;
10818
- }
10819
- get clientRect() {
10820
- return this.draggableElClientRect;
10821
- }
10822
- get dragEvent() {
10823
- return this.snapshotDragEvent;
10824
- }
10825
- }
10826
- DraggableSnapshotService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DraggableSnapshotService, deps: [{ token: DomAdapter }], target: i0.ɵɵFactoryTarget.Injectable });
10827
- DraggableSnapshotService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DraggableSnapshotService });
10828
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DraggableSnapshotService, decorators: [{
10829
- type: Injectable
10830
- }], ctorParameters: function () { return [{ type: DomAdapter }]; } });
10831
-
10832
- /*
10833
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
10834
- * This software is released under MIT license.
10835
- * The full license information can be found in LICENSE in the root directory of this project.
10836
- */
10837
- class ClrDraggableGhost {
10838
- constructor(el, dragEventListener, draggableSnapshot, renderer, ngZone) {
10839
- this.el = el;
10840
- this.dragEventListener = dragEventListener;
10841
- this.draggableSnapshot = draggableSnapshot;
10842
- this.renderer = renderer;
10843
- this.ngZone = ngZone;
10844
- this.subscriptions = [];
10845
- this.leaveAnimConfig = { value: 0, params: { top: '0px', left: '0px' } };
10846
- if (!this.dragEventListener || !this.draggableSnapshot) {
10847
- throw new Error('The clr-draggable-ghost component can only be used inside of a clrDraggable directive.');
10848
- }
10849
- this.draggableGhostEl = this.el.nativeElement;
10850
- // Need to use Renderer2 as it runs outside of NgZone
10851
- this.renderer.addClass(this.draggableGhostEl, 'draggable-ghost');
10852
- // Register the ghost element in DragEventListener to pass in a ClrDragEvent.
10853
- this.dragEventListener.ghostElement = this.draggableGhostEl;
10854
- // Default ghost size gets the size of ClrDraggable element.
10855
- this.setDefaultGhostSize(this.draggableGhostEl);
10856
- const offset = {
10857
- top: this.draggableSnapshot.hasDraggableState
10858
- ? this.draggableSnapshot.dragEvent.dragPosition.pageY - this.draggableSnapshot.clientRect.top
10859
- : 0,
10860
- left: this.draggableSnapshot.hasDraggableState
10861
- ? this.draggableSnapshot.dragEvent.dragPosition.pageX - this.draggableSnapshot.clientRect.left
10862
- : 0,
10863
- };
10864
- let isAnimationConfigured = false;
10865
- this.subscriptions.push(this.dragEventListener.dragMoved.subscribe((event) => {
10866
- // On the first drag move event, we configure the animation as it's dependent on the first drag event.
10867
- if (!isAnimationConfigured) {
10868
- if (this.draggableSnapshot.hasDraggableState) {
10869
- this.animateToOnLeave(`${this.draggableSnapshot.clientRect.top}px`, `${this.draggableSnapshot.clientRect.left}px`);
10870
- }
10871
- else {
10872
- this.animateToOnLeave(`${this.dragEventListener.dragStartPosition.pageY}px`, `${this.dragEventListener.dragStartPosition.pageY}px`);
10873
- }
10874
- isAnimationConfigured = true;
10875
- }
10876
- // Position the draggable ghost.
10877
- const topLeftPosition = this.findTopLeftPosition(event.dragPosition, offset);
10878
- this.setPositionStyle(this.draggableGhostEl, topLeftPosition.pageX, topLeftPosition.pageY);
10879
- this.dragEventListener.dropPointPosition = this.findDropPointPosition(topLeftPosition);
10880
- }));
10881
- }
10882
- setDefaultGhostSize(el) {
10883
- if (this.draggableSnapshot.hasDraggableState) {
10884
- this.setSizeStyle(el, this.draggableSnapshot.clientRect.width, this.draggableSnapshot.clientRect.height);
10885
- }
10886
- }
10887
- animateToOnLeave(top, left) {
10888
- this.ngZone.run(() => {
10889
- this.leaveAnimConfig = { value: 0, params: { top: top, left: left } };
10890
- });
10891
- }
10892
- findTopLeftPosition(dragPosition, offset) {
10893
- return { pageX: dragPosition.pageX - offset.left, pageY: dragPosition.pageY - offset.top };
10894
- }
10895
- findDropPointPosition(topLeftPosition) {
10896
- if (this.draggableSnapshot.hasDraggableState) {
10897
- return {
10898
- pageX: topLeftPosition.pageX + this.draggableSnapshot.clientRect.width / 2,
10899
- pageY: topLeftPosition.pageY + this.draggableSnapshot.clientRect.height / 2,
10900
- };
10901
- }
10902
- else {
10903
- return topLeftPosition;
10904
- }
10905
- }
10906
- setSizeStyle(el, width, height) {
10907
- this.renderer.setStyle(el, 'width', `${width}px`);
10908
- this.renderer.setStyle(el, 'height', `${height}px`);
10909
- }
10910
- setPositionStyle(el, left, top) {
10911
- this.renderer.setStyle(el, 'left', `${left}px`);
10912
- this.renderer.setStyle(el, 'top', `${top}px`);
10913
- this.renderer.setStyle(el, 'visibility', 'visible');
10914
- }
10915
- ngOnDestroy() {
10916
- this.subscriptions.forEach((sub) => sub.unsubscribe());
10917
- }
10918
- }
10919
- ClrDraggableGhost.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDraggableGhost, deps: [{ token: i0.ElementRef }, { token: DragEventListenerService, optional: true }, { token: DraggableSnapshotService, optional: true }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
10920
- ClrDraggableGhost.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrDraggableGhost, selector: "clr-draggable-ghost", host: { properties: { "@leaveAnimation": "this.leaveAnimConfig" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, animations: [
10921
- trigger('leaveAnimation', [
10922
- transition(':leave', [
10923
- style({ left: '*', top: '*' }),
10924
- animate('0.2s ease-in-out', style({ top: '{{top}}', left: '{{left}}' })),
10925
- ]),
10926
- ]),
10927
- ] });
10928
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDraggableGhost, decorators: [{
10929
- type: Component,
10930
- args: [{
10931
- selector: 'clr-draggable-ghost',
10932
- template: `<ng-content></ng-content>`,
10933
- animations: [
10934
- trigger('leaveAnimation', [
10935
- transition(':leave', [
10936
- style({ left: '*', top: '*' }),
10937
- animate('0.2s ease-in-out', style({ top: '{{top}}', left: '{{left}}' })),
10938
- ]),
10939
- ]),
10940
- ],
10941
- }]
10942
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: DragEventListenerService, decorators: [{
10943
- type: Optional
10944
- }] }, { type: DraggableSnapshotService, decorators: [{
10945
- type: Optional
10946
- }] }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { leaveAnimConfig: [{
10947
- type: HostBinding,
10948
- args: ['@leaveAnimation']
10949
- }] } });
10950
-
10951
- /*
10952
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
10953
- * This software is released under MIT license.
10954
- * The full license information can be found in LICENSE in the root directory of this project.
10955
- */
10956
- // This class is used to convert an internal event
10957
- // to an external event to be emitted.
10958
- class ClrDragEvent {
10959
- constructor(dragEvent) {
10960
- this.dragPosition = dragEvent.dragPosition;
10961
- this.group = dragEvent.group;
10962
- this.dragDataTransfer = dragEvent.dragDataTransfer;
10963
- this.dropPointPosition = dragEvent.dropPointPosition;
10964
- }
10965
- }
10966
-
10967
- /*
10968
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
10969
- * This software is released under MIT license.
10970
- * The full license information can be found in LICENSE in the root directory of this project.
10971
- */
10972
- // This structural directive will be used mainly together with `clr-draggable-ghost` directive inside of clrDraggable
10973
- // directive. The directive is responsible for instantiating `clr-draggable-ghost` directive only during dragging so
10974
- // that Angular Change Detection is prevented from running if a component or directive is placed inside of the
10975
- // `clr-draggable-ghost` directive.
10976
- class ClrIfDragged {
10977
- constructor(template, container, dragEventListener) {
10978
- this.template = template;
10979
- this.container = container;
10980
- this.dragEventListener = dragEventListener;
10981
- this.subscriptions = [];
10982
- if (!this.dragEventListener || !this.container) {
10983
- throw new Error('The *clrIfDragged directive can only be used inside of a clrDraggable directive.');
10984
- }
10985
- this.subscriptions.push(this.dragEventListener.dragStarted.subscribe(() => {
10986
- this.container.createEmbeddedView(this.template);
10987
- }));
10988
- this.subscriptions.push(this.dragEventListener.dragEnded.subscribe(() => {
10989
- this.container.clear();
10990
- }));
10991
- }
10992
- ngOnDestroy() {
10993
- this.subscriptions.forEach((sub) => sub.unsubscribe());
10994
- }
10995
- }
10996
- ClrIfDragged.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrIfDragged, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef, optional: true, skipSelf: true }, { token: DragEventListenerService, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
10997
- ClrIfDragged.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: ClrIfDragged, selector: "[clrIfDragged]", ngImport: i0 });
10998
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrIfDragged, decorators: [{
10999
- type: Directive,
11000
- args: [{
11001
- selector: '[clrIfDragged]',
11002
- }]
11003
- }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef, decorators: [{
11004
- type: Optional
11005
- }, {
11006
- type: SkipSelf
11007
- }] }, { type: DragEventListenerService, decorators: [{
11008
- type: Optional
11009
- }] }]; } });
11010
-
11011
- /*
11012
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
11013
- * This software is released under MIT license.
11014
- * The full license information can be found in LICENSE in the root directory of this project.
11015
- */
11016
- // This service class adds and removes the "in-drag" class to the document body element
11017
- // through its public enter() and exit() methods.
11018
- class GlobalDragModeService {
11019
- constructor(renderer) {
11020
- this.renderer = renderer;
11021
- }
11022
- enter() {
11023
- this.renderer.addClass(document.body, 'in-drag');
11024
- }
11025
- exit() {
11026
- this.renderer.removeClass(document.body, 'in-drag');
11027
- }
11028
- }
11029
- GlobalDragModeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: GlobalDragModeService, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable });
11030
- GlobalDragModeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: GlobalDragModeService });
11031
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: GlobalDragModeService, decorators: [{
11032
- type: Injectable
11033
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; } });
11034
-
11035
- /*
11036
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
11037
- * This software is released under MIT license.
11038
- * The full license information can be found in LICENSE in the root directory of this project.
11039
- */
11040
- class ClrDraggable {
11041
- constructor(el, dragEventListener, dragHandleRegistrar, viewContainerRef, cfr, injector, draggableSnapshot, globalDragMode) {
11042
- this.el = el;
11043
- this.dragEventListener = dragEventListener;
11044
- this.dragHandleRegistrar = dragHandleRegistrar;
11045
- this.viewContainerRef = viewContainerRef;
11046
- this.cfr = cfr;
11047
- this.injector = injector;
11048
- this.draggableSnapshot = draggableSnapshot;
11049
- this.globalDragMode = globalDragMode;
11050
- this.subscriptions = [];
11051
- this.dragOn = false;
11052
- this.dragStartEmitter = new EventEmitter();
11053
- this.dragMoveEmitter = new EventEmitter();
11054
- this.dragEndEmitter = new EventEmitter();
11055
- this.draggableEl = this.el.nativeElement;
11056
- this.componentFactory = this.cfr.resolveComponentFactory(ClrDraggableGhost);
11057
- }
11058
- set dataTransfer(value) {
11059
- this.dragEventListener.dragDataTransfer = value;
11060
- }
11061
- set group(value) {
11062
- this.dragEventListener.group = value;
11063
- }
11064
- set dragStartDelay(value) {
11065
- if (typeof value === 'number') {
11066
- this.dragEventListener.dragStartDelay = value;
11067
- }
11068
- else if (typeof value === 'string') {
11069
- this.dragEventListener.dragStartDelay = parseInt(value, 10) || 0;
11070
- }
11071
- }
11072
- createDefaultGhost(event) {
11073
- this.draggableSnapshot.capture(this.draggableEl, event);
11074
- // NOTE: The default ghost element will appear
11075
- // next to the clrDraggable in the DOM as a sibling element.
11076
- this.viewContainerRef.createComponent(this.componentFactory, 0, this.injector, [
11077
- [this.draggableEl.cloneNode(true)],
11078
- ]);
11079
- }
11080
- destroyDefaultGhost() {
11081
- this.viewContainerRef.clear();
11082
- this.draggableSnapshot.discard();
11083
- }
11084
- ngAfterContentInit() {
11085
- this.dragHandleRegistrar.defaultHandleEl = this.draggableEl;
11086
- this.subscriptions.push(this.dragEventListener.dragStarted.subscribe((event) => {
11087
- this.globalDragMode.enter();
11088
- this.dragOn = true;
11089
- if (!this.customGhost) {
11090
- this.createDefaultGhost(event);
11091
- }
11092
- this.dragStartEmitter.emit(new ClrDragEvent(event));
11093
- }));
11094
- this.subscriptions.push(this.dragEventListener.dragMoved.subscribe((event) => {
11095
- this.dragMoveEmitter.emit(new ClrDragEvent(event));
11096
- }));
11097
- this.subscriptions.push(this.dragEventListener.dragEnded.subscribe((event) => {
11098
- this.globalDragMode.exit();
11099
- this.dragOn = false;
11100
- if (!this.customGhost) {
11101
- this.destroyDefaultGhost();
11102
- }
11103
- this.dragEndEmitter.emit(new ClrDragEvent(event));
11104
- }));
11105
- }
11106
- ngOnDestroy() {
11107
- this.subscriptions.forEach((sub) => sub.unsubscribe());
11108
- this.dragEventListener.detachDragListeners();
11109
- }
11110
- }
11111
- ClrDraggable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDraggable, deps: [{ token: i0.ElementRef }, { token: DragEventListenerService }, { token: DragHandleRegistrarService }, { token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: DraggableSnapshotService }, { token: GlobalDragModeService }], target: i0.ɵɵFactoryTarget.Directive });
11112
- ClrDraggable.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: ClrDraggable, selector: "[clrDraggable]", inputs: { dataTransfer: ["clrDraggable", "dataTransfer"], group: ["clrGroup", "group"], dragStartDelay: ["clrDragStartDelay", "dragStartDelay"] }, outputs: { dragStartEmitter: "clrDragStart", dragMoveEmitter: "clrDragMove", dragEndEmitter: "clrDragEnd" }, host: { properties: { "class.draggable": "true", "class.being-dragged": "dragOn" } }, providers: [
11113
- DragEventListenerService,
11114
- DragHandleRegistrarService,
11115
- DraggableSnapshotService,
11116
- GlobalDragModeService,
11117
- DomAdapter,
11118
- ], queries: [{ propertyName: "customGhost", first: true, predicate: ClrIfDragged, descendants: true }], ngImport: i0 });
11119
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDraggable, decorators: [{
11120
- type: Directive,
11121
- args: [{
11122
- selector: '[clrDraggable]',
11123
- providers: [
11124
- DragEventListenerService,
11125
- DragHandleRegistrarService,
11126
- DraggableSnapshotService,
11127
- GlobalDragModeService,
11128
- DomAdapter,
11129
- ],
11130
- host: { '[class.draggable]': 'true', '[class.being-dragged]': 'dragOn' },
11131
- }]
11132
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: DragEventListenerService }, { type: DragHandleRegistrarService }, { type: i0.ViewContainerRef }, { type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: DraggableSnapshotService }, { type: GlobalDragModeService }]; }, propDecorators: { customGhost: [{
11133
- type: ContentChild,
11134
- args: [ClrIfDragged]
11135
- }], dataTransfer: [{
11136
- type: Input,
11137
- args: ['clrDraggable']
11138
- }], group: [{
11139
- type: Input,
11140
- args: ['clrGroup']
11141
- }], dragStartDelay: [{
11142
- type: Input,
11143
- args: ['clrDragStartDelay']
11144
- }], dragStartEmitter: [{
11145
- type: Output,
11146
- args: ['clrDragStart']
11147
- }], dragMoveEmitter: [{
11148
- type: Output,
11149
- args: ['clrDragMove']
11150
- }], dragEndEmitter: [{
11151
- type: Output,
11152
- args: ['clrDragEnd']
11153
- }] } });
11154
-
11155
- /*
11156
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
11157
- * This software is released under MIT license.
11158
- * The full license information can be found in LICENSE in the root directory of this project.
11159
- */
11160
- class ClrDroppable {
11161
- constructor(el, eventBus, domAdapter, renderer) {
11162
- this.el = el;
11163
- this.eventBus = eventBus;
11164
- this.domAdapter = domAdapter;
11165
- this.renderer = renderer;
11166
- this.isDraggableMatch = false;
11167
- this._isDraggableOver = false;
11168
- this._dropTolerance = { top: 0, right: 0, bottom: 0, left: 0 };
11169
- this.dragStartEmitter = new EventEmitter();
11170
- this.dragMoveEmitter = new EventEmitter();
11171
- this.dragEndEmitter = new EventEmitter();
11172
- this.dragLeaveEmitter = new EventEmitter();
11173
- this.dragEnterEmitter = new EventEmitter();
11174
- this.dropEmitter = new EventEmitter();
11175
- this.droppableEl = this.el.nativeElement;
11176
- }
11177
- set isDraggableOver(value) {
11178
- // We need to add/remove this draggable-over class via Renderer2
11179
- // because isDraggableOver is set outside of NgZone.
11180
- if (value) {
11181
- this.renderer.addClass(this.droppableEl, 'draggable-over');
11182
- }
11183
- else {
11184
- this.renderer.removeClass(this.droppableEl, 'draggable-over');
11185
- }
11186
- this._isDraggableOver = value;
11187
- }
11188
- set group(value) {
11189
- this._group = value;
11190
- }
11191
- dropToleranceGenerator(top = 0, right = top, bottom = top, left = right) {
11192
- return { top, right, bottom, left };
11193
- }
11194
- set dropTolerance(value) {
11195
- // If user provides an object here and wants to manipulate/update properties individually,
11196
- // the object must be immutable as we generate new object based user's given object.
11197
- if (typeof value === 'number') {
11198
- this._dropTolerance = this.dropToleranceGenerator(value);
11199
- }
11200
- else if (typeof value === 'string') {
11201
- const toleranceValues = value
11202
- .trim()
11203
- .split(/\s+/)
11204
- .map(tolerance => parseInt(tolerance, 10));
11205
- this._dropTolerance = this.dropToleranceGenerator(...toleranceValues);
11206
- }
11207
- else if (value) {
11208
- // The value could be passed in as {left: 20, top: 30 }
11209
- // In this case, the rest of the direction properties should be 0.
11210
- // That's why we initialize properties with 0 first, then override with user's given value.
11211
- this._dropTolerance = { ...this.dropToleranceGenerator(0), ...value };
11212
- }
11213
- }
11214
- unsubscribeFrom(subscription) {
11215
- if (subscription) {
11216
- subscription.unsubscribe();
11217
- }
11218
- }
11219
- checkGroupMatch(draggableGroup) {
11220
- // Both Draggable and Droppable have clrGroup input.
11221
- // The clrGroup input can be both a string key or array of string keys in Draggable and Droppable.
11222
- // It's not match if Draggable has no defined value assigned to clrGroup, but Droppable has a defined clrGroup.
11223
- if (!draggableGroup && this._group) {
11224
- return false;
11225
- }
11226
- // The same is true the other way round.
11227
- if (!this._group && draggableGroup) {
11228
- return false;
11229
- }
11230
- // It's match if both Draggable and Droppable have no assigned value for clrGroup.
11231
- if (!this._group && !draggableGroup) {
11232
- return true;
11233
- }
11234
- // It's match if both Draggable and Droppable have simple string keys that are matching.
11235
- // It's match if Draggable's simple clrGroup key is matching with one of the clrGroup keys of Droppable. The
11236
- // same is true the other way round.
11237
- // it's match if one of the clrGroup keys of Droppable is matching with one of the clrGroup keys of Draggable.
11238
- if (typeof draggableGroup === 'string') {
11239
- if (typeof this._group === 'string') {
11240
- return this._group === draggableGroup;
11241
- }
11242
- else {
11243
- return this._group.indexOf(draggableGroup) > -1;
11244
- }
11245
- }
11246
- else {
11247
- if (typeof this._group === 'string') {
11248
- return draggableGroup.indexOf(this._group) > -1;
11249
- }
11250
- else {
11251
- return this._group.some(groupKey => draggableGroup.indexOf(groupKey) > -1);
11252
- }
11253
- }
11254
- }
11255
- isInDropArea(point) {
11256
- if (!point) {
11257
- return false;
11258
- }
11259
- if (!this.clientRect) {
11260
- this.clientRect = this.domAdapter.clientRect(this.droppableEl);
11261
- }
11262
- if (point.pageX >= this.clientRect.left - this._dropTolerance.left &&
11263
- point.pageX <= this.clientRect.right + this._dropTolerance.right &&
11264
- point.pageY >= this.clientRect.top - this._dropTolerance.top &&
11265
- point.pageY <= this.clientRect.bottom + this._dropTolerance.bottom) {
11266
- return true;
11267
- }
11268
- else {
11269
- return false;
11270
- }
11271
- }
11272
- onDragStart(dragStartEvent) {
11273
- // Check draggable and droppable have a matching group key.
11274
- this.isDraggableMatch = this.checkGroupMatch(dragStartEvent.group);
11275
- // Subscribe to dragMoved and dragEnded only if draggable and droppable have a matching group key.
11276
- if (this.isDraggableMatch) {
11277
- this.dragStartEmitter.emit(new ClrDragEvent(dragStartEvent));
11278
- this.dragMoveSubscription = this.eventBus.dragMoved.subscribe((dragMoveEvent) => {
11279
- this.onDragMove(dragMoveEvent);
11280
- });
11281
- this.dragEndSubscription = this.eventBus.dragEnded.subscribe((dragEndEvent) => {
11282
- this.onDragEnd(dragEndEvent);
11283
- });
11284
- }
11285
- }
11286
- onDragMove(dragMoveEvent) {
11287
- const isInDropArea = this.isInDropArea(dragMoveEvent.dropPointPosition);
11288
- if (!this._isDraggableOver && isInDropArea) {
11289
- this.isDraggableOver = true;
11290
- const dragEnterEvent = { ...dragMoveEvent, type: DragEventType.DRAG_ENTER };
11291
- this.eventBus.broadcast(dragEnterEvent);
11292
- this.dragEnterEmitter.emit(new ClrDragEvent(dragEnterEvent));
11293
- }
11294
- else if (this._isDraggableOver && !isInDropArea) {
11295
- this.isDraggableOver = false;
11296
- const dragLeaveEvent = { ...dragMoveEvent, type: DragEventType.DRAG_LEAVE };
11297
- this.eventBus.broadcast(dragLeaveEvent);
11298
- this.dragLeaveEmitter.emit(new ClrDragEvent(dragLeaveEvent));
11299
- }
11300
- this.dragMoveEmitter.emit(new ClrDragEvent(dragMoveEvent));
11301
- }
11302
- onDragEnd(dragEndEvent) {
11303
- if (this._isDraggableOver) {
11304
- if (dragEndEvent.ghostElement) {
11305
- // By this point, the draggable ghost component is destroyed,
11306
- // but the element would be active until its animation completes.
11307
- // As such, once the ghost is dropped over, we will give it "dropped" class.
11308
- // This process cannot be done in the ghost component
11309
- // because any subscription to the drop event is ineffective or invalid
11310
- // as the component had been already destroyed.
11311
- this.renderer.addClass(dragEndEvent.ghostElement, 'dropped');
11312
- }
11313
- const dropEvent = { ...dragEndEvent, type: DragEventType.DROP };
11314
- this.eventBus.broadcast(dropEvent);
11315
- this.dropEmitter.emit(new ClrDragEvent(dropEvent));
11316
- this.isDraggableOver = false;
11317
- }
11318
- this.dragEndEmitter.emit(new ClrDragEvent(dragEndEvent));
11319
- this.unsubscribeFrom(this.dragMoveSubscription);
11320
- this.unsubscribeFrom(this.dragEndSubscription);
11321
- this.isDraggableMatch = false;
11322
- delete this.clientRect;
10232
+ return { value: this.clrExpandTrigger, params: { startHeight: this.startHeight } };
11323
10233
  }
11324
- ngOnInit() {
11325
- this.dragStartSubscription = this.eventBus.dragStarted.subscribe((dragStartEvent) => {
11326
- this.onDragStart(dragStartEvent);
11327
- });
10234
+ animationDone() {
10235
+ // A "safe" auto-update of the height ensuring basic OOTB user experience .
10236
+ // Prone to small jumps in initial animation height if data was changed in the meantime, window was resized, etc.
10237
+ // For optimal behavior call manually updateStartHeight() from the parent component before initiating the update.
10238
+ this.updateStartHeight();
11328
10239
  }
11329
- ngOnDestroy() {
11330
- this.unsubscribeFrom(this.dragStartSubscription);
11331
- this.unsubscribeFrom(this.dragMoveSubscription);
11332
- this.unsubscribeFrom(this.dragEndSubscription);
10240
+ updateStartHeight() {
10241
+ this.startHeight = this.domAdapter.computedHeight(this.element.nativeElement) || 0;
11333
10242
  }
11334
10243
  }
11335
- ClrDroppable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDroppable, deps: [{ token: i0.ElementRef }, { token: DragAndDropEventBusService }, { token: DomAdapter }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
11336
- ClrDroppable.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: ClrDroppable, selector: "[clrDroppable]", inputs: { group: ["clrGroup", "group"], dropTolerance: ["clrDropTolerance", "dropTolerance"] }, outputs: { dragStartEmitter: "clrDragStart", dragMoveEmitter: "clrDragMove", dragEndEmitter: "clrDragEnd", dragLeaveEmitter: "clrDragLeave", dragEnterEmitter: "clrDragEnter", dropEmitter: "clrDrop" }, host: { properties: { "class.droppable": "true", "class.draggable-match": "isDraggableMatch" } }, providers: [DomAdapter], ngImport: i0 });
11337
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDroppable, decorators: [{
11338
- type: Directive,
11339
- args: [{
11340
- selector: '[clrDroppable]',
11341
- providers: [DomAdapter],
11342
- host: { '[class.droppable]': 'true', '[class.draggable-match]': 'isDraggableMatch' },
11343
- }]
11344
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: DragAndDropEventBusService }, { type: DomAdapter }, { type: i0.Renderer2 }]; }, propDecorators: { group: [{
11345
- type: Input,
11346
- args: ['clrGroup']
11347
- }], dropTolerance: [{
11348
- type: Input,
11349
- args: ['clrDropTolerance']
11350
- }], dragStartEmitter: [{
11351
- type: Output,
11352
- args: ['clrDragStart']
11353
- }], dragMoveEmitter: [{
11354
- type: Output,
11355
- args: ['clrDragMove']
11356
- }], dragEndEmitter: [{
11357
- type: Output,
11358
- args: ['clrDragEnd']
11359
- }], dragLeaveEmitter: [{
11360
- type: Output,
11361
- args: ['clrDragLeave']
11362
- }], dragEnterEmitter: [{
11363
- type: Output,
11364
- args: ['clrDragEnter']
11365
- }], dropEmitter: [{
11366
- type: Output,
11367
- args: ['clrDrop']
10244
+ ClrExpandableAnimation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrExpandableAnimation, deps: [{ token: i0.ElementRef }, { token: DomAdapter }], target: i0.ɵɵFactoryTarget.Component });
10245
+ ClrExpandableAnimation.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrExpandableAnimation, selector: "clr-expandable-animation", inputs: { clrExpandTrigger: "clrExpandTrigger" }, host: { listeners: { "@expandAnimation.done": "animationDone()" }, properties: { "@expandAnimation": "this.expandAnimation" } }, providers: [DomAdapter], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{display:block}\n"], animations: [
10246
+ trigger('expandAnimation', [
10247
+ transition('true <=> false', [
10248
+ style({ height: '{{startHeight}}px', overflow: 'hidden' }),
10249
+ animate('0.2s ease-in-out', style({ height: '*' })),
10250
+ ]),
10251
+ ]),
10252
+ ] });
10253
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrExpandableAnimation, decorators: [{
10254
+ type: Component,
10255
+ args: [{ selector: 'clr-expandable-animation', template: `<ng-content></ng-content>`, animations: [
10256
+ trigger('expandAnimation', [
10257
+ transition('true <=> false', [
10258
+ style({ height: '{{startHeight}}px', overflow: 'hidden' }),
10259
+ animate('0.2s ease-in-out', style({ height: '*' })),
10260
+ ]),
10261
+ ]),
10262
+ ], providers: [DomAdapter], styles: [":host{display:block}\n"] }]
10263
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: DomAdapter }]; }, propDecorators: { clrExpandTrigger: [{
10264
+ type: Input
10265
+ }], expandAnimation: [{
10266
+ type: HostBinding,
10267
+ args: ['@expandAnimation']
10268
+ }], animationDone: [{
10269
+ type: HostListener,
10270
+ args: ['@expandAnimation.done']
11368
10271
  }] } });
11369
10272
 
11370
10273
  /*
@@ -11372,32 +10275,58 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
11372
10275
  * This software is released under MIT license.
11373
10276
  * The full license information can be found in LICENSE in the root directory of this project.
11374
10277
  */
11375
- const CLR_DRAG_AND_DROP_DIRECTIVES = [
11376
- ClrDraggable,
11377
- ClrDroppable,
11378
- ClrIfDragged,
11379
- ClrDragHandle,
11380
- ClrDraggableGhost,
11381
- ];
11382
- class ClrDragAndDropModule {
11383
- }
11384
- ClrDragAndDropModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDragAndDropModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11385
- ClrDragAndDropModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: ClrDragAndDropModule, declarations: [ClrDraggable,
11386
- ClrDroppable,
11387
- ClrIfDragged,
11388
- ClrDragHandle,
11389
- ClrDraggableGhost], imports: [CommonModule], exports: [ClrDraggable,
11390
- ClrDroppable,
11391
- ClrIfDragged,
11392
- ClrDragHandle,
11393
- ClrDraggableGhost] });
11394
- ClrDragAndDropModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDragAndDropModule, imports: [CommonModule] });
11395
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDragAndDropModule, decorators: [{
10278
+ const EXPANDABLE_ANIMATION_DIRECTIVES = [ClrExpandableAnimation];
10279
+
10280
+ /*
10281
+ * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
10282
+ * This software is released under MIT license.
10283
+ * The full license information can be found in LICENSE in the root directory of this project.
10284
+ */
10285
+ class ClrExpandableAnimationModule {
10286
+ }
10287
+ ClrExpandableAnimationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrExpandableAnimationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10288
+ ClrExpandableAnimationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: ClrExpandableAnimationModule, declarations: [ClrExpandableAnimation], imports: [CommonModule], exports: [ClrExpandableAnimation] });
10289
+ ClrExpandableAnimationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrExpandableAnimationModule, imports: [CommonModule] });
10290
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrExpandableAnimationModule, decorators: [{
11396
10291
  type: NgModule,
11397
10292
  args: [{
11398
10293
  imports: [CommonModule],
11399
- declarations: [CLR_DRAG_AND_DROP_DIRECTIVES],
11400
- exports: [CLR_DRAG_AND_DROP_DIRECTIVES],
10294
+ declarations: [EXPANDABLE_ANIMATION_DIRECTIVES],
10295
+ exports: [EXPANDABLE_ANIMATION_DIRECTIVES],
10296
+ }]
10297
+ }] });
10298
+
10299
+ /*
10300
+ * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
10301
+ * This software is released under MIT license.
10302
+ * The full license information can be found in LICENSE in the root directory of this project.
10303
+ */
10304
+ /**
10305
+ * This is just a copy of CdkDrag so it can be used independent of the rest of the CdkDragDropModule.
10306
+ */
10307
+ class CdkDragModule_CdkDrag extends CdkDrag {
10308
+ }
10309
+ CdkDragModule_CdkDrag.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkDragModule_CdkDrag, deps: null, target: i0.ɵɵFactoryTarget.Directive });
10310
+ CdkDragModule_CdkDrag.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: CdkDragModule_CdkDrag, selector: "[cdkDrag]", usesInheritance: true, ngImport: i0 });
10311
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkDragModule_CdkDrag, decorators: [{
10312
+ type: Directive,
10313
+ args: [{
10314
+ selector: '[cdkDrag]',
10315
+ }]
10316
+ }] });
10317
+ /**
10318
+ * This module allows us to avoid importing all of CdkDragDropModule which results in a smaller application bundle.
10319
+ */
10320
+ class CdkDragModule {
10321
+ }
10322
+ CdkDragModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkDragModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10323
+ CdkDragModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: CdkDragModule, declarations: [CdkDragModule_CdkDrag], exports: [CdkDragModule_CdkDrag] });
10324
+ CdkDragModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkDragModule });
10325
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkDragModule, decorators: [{
10326
+ type: NgModule,
10327
+ args: [{
10328
+ declarations: [CdkDragModule_CdkDrag],
10329
+ exports: [CdkDragModule_CdkDrag],
11401
10330
  }]
11402
10331
  }] });
11403
10332
 
@@ -12054,7 +10983,7 @@ ClrDatagridFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
12054
10983
  <div
12055
10984
  class="datagrid-filter"
12056
10985
  [id]="popoverId"
12057
- clrFocusTrap
10986
+ cdkTrapFocus
12058
10987
  *clrPopoverContent="open; at: smartPosition; outsideClickToClose: true; scrollToClose: true"
12059
10988
  role="dialog"
12060
10989
  [attr.aria-label]="commonStrings.keys.datagridFilterDialogAriaLabel"
@@ -12067,7 +10996,7 @@ ClrDatagridFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
12067
10996
 
12068
10997
  <ng-content></ng-content>
12069
10998
  </div>
12070
- `, isInline: true, dependencies: [{ kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { kind: "directive", type: ClrPopoverCloseButton, selector: "[clrPopoverCloseButton]", outputs: ["clrPopoverOnCloseChange"] }, { kind: "directive", type: ClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { kind: "directive", type: ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }, { kind: "directive", type: FocusTrapDirective, selector: "[clrFocusTrap]", inputs: ["clrFocusTrap"] }] });
10999
+ `, isInline: true, dependencies: [{ kind: "directive", type: CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]" }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { kind: "directive", type: ClrPopoverCloseButton, selector: "[clrPopoverCloseButton]", outputs: ["clrPopoverOnCloseChange"] }, { kind: "directive", type: ClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { kind: "directive", type: ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }] });
12071
11000
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridFilter, decorators: [{
12072
11001
  type: Component,
12073
11002
  args: [{
@@ -12097,7 +11026,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
12097
11026
  <div
12098
11027
  class="datagrid-filter"
12099
11028
  [id]="popoverId"
12100
- clrFocusTrap
11029
+ cdkTrapFocus
12101
11030
  *clrPopoverContent="open; at: smartPosition; outsideClickToClose: true; scrollToClose: true"
12102
11031
  role="dialog"
12103
11032
  [attr.aria-label]="commonStrings.keys.datagridFilterDialogAriaLabel"
@@ -13252,8 +12181,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
13252
12181
  // Default resize length on each keyboard move event
13253
12182
  const KEYBOARD_RESIZE_LENGTH = 12;
13254
12183
  class ClrDatagridColumnSeparator {
13255
- // Every column draggable separator should have its own unique ID
13256
- // in order to not conflict with other draggables/droppables.
13257
12184
  constructor(columnResizerService, renderer, ngZone, tableSizeService, commonString, document) {
13258
12185
  this.columnResizerService = columnResizerService;
13259
12186
  this.renderer = renderer;
@@ -13301,6 +12228,7 @@ class ClrDatagridColumnSeparator {
13301
12228
  this.columnResizerService.endResize();
13302
12229
  this.renderer.setStyle(this.resizeTrackerEl, 'display', 'none');
13303
12230
  this.renderer.setStyle(this.resizeTrackerEl, 'transform', `translateX(0px)`);
12231
+ this.renderer.setStyle(this.columnHandleEl, 'transform', `translateX(0px)`);
13304
12232
  this.renderer.setStyle(this.document.body, 'cursor', 'auto');
13305
12233
  }
13306
12234
  showTrackerOnFirstKeyDown(event) {
@@ -13312,9 +12240,11 @@ class ClrDatagridColumnSeparator {
13312
12240
  }
13313
12241
  moveTrackerOnKeyDown(event) {
13314
12242
  if (this.isArrowLeftKeyEvent(event)) {
12243
+ event.stopPropagation();
13315
12244
  this.moveTracker(this.columnResizerService.resizedBy - KEYBOARD_RESIZE_LENGTH);
13316
12245
  }
13317
12246
  else if (this.isArrowRightKeyEvent(event)) {
12247
+ event.stopPropagation();
13318
12248
  this.moveTracker(this.columnResizerService.resizedBy + KEYBOARD_RESIZE_LENGTH);
13319
12249
  }
13320
12250
  }
@@ -13354,18 +12284,18 @@ ClrDatagridColumnSeparator.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0
13354
12284
  class="datagrid-column-handle"
13355
12285
  [attr.aria-label]="commonString.keys.columnSeparatorAriaLabel"
13356
12286
  [attr.aria-describedby]="descriptionId"
13357
- clrDraggable
13358
- [clrGroup]="columnSeparatorId"
13359
- (clrDragStart)="showTracker()"
13360
- (clrDragMove)="moveTracker($event.dragPosition.moveX)"
13361
- (clrDragEnd)="hideTracker()"
12287
+ cdkDrag
12288
+ cdkDragLockAxis="x"
12289
+ (cdkDragStarted)="showTracker()"
12290
+ (cdkDragMoved)="moveTracker($event.distance.x)"
12291
+ (cdkDragEnded)="hideTracker(); $event.source._dragRef.reset()"
13362
12292
  #columnHandle
13363
12293
  ></button>
13364
12294
  <span class="clr-sr-only" [attr.id]="descriptionId">
13365
12295
  {{ commonString.keys.columnSeparatorDescription }}
13366
12296
  </span>
13367
12297
  <div class="datagrid-column-resize-tracker" #resizeTracker></div>
13368
- `, isInline: true, dependencies: [{ kind: "directive", type: ClrDraggable, selector: "[clrDraggable]", inputs: ["clrDraggable", "clrGroup", "clrDragStartDelay"], outputs: ["clrDragStart", "clrDragMove", "clrDragEnd"] }] });
12298
+ `, isInline: true, dependencies: [{ kind: "directive", type: CdkDragModule_CdkDrag, selector: "[cdkDrag]" }] });
13369
12299
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridColumnSeparator, decorators: [{
13370
12300
  type: Component,
13371
12301
  args: [{
@@ -13376,11 +12306,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
13376
12306
  class="datagrid-column-handle"
13377
12307
  [attr.aria-label]="commonString.keys.columnSeparatorAriaLabel"
13378
12308
  [attr.aria-describedby]="descriptionId"
13379
- clrDraggable
13380
- [clrGroup]="columnSeparatorId"
13381
- (clrDragStart)="showTracker()"
13382
- (clrDragMove)="moveTracker($event.dragPosition.moveX)"
13383
- (clrDragEnd)="hideTracker()"
12309
+ cdkDrag
12310
+ cdkDragLockAxis="x"
12311
+ (cdkDragStarted)="showTracker()"
12312
+ (cdkDragMoved)="moveTracker($event.distance.x)"
12313
+ (cdkDragEnded)="hideTracker(); $event.source._dragRef.reset()"
13384
12314
  #columnHandle
13385
12315
  ></button>
13386
12316
  <span class="clr-sr-only" [attr.id]="descriptionId">
@@ -13427,18 +12357,6 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
13427
12357
  * via the [clrDgColType] input by setting it to 'string' or 'number'.
13428
12358
  */
13429
12359
  this._colType = 'string';
13430
- // deprecated: to be removed - START
13431
- /**
13432
- * Indicates if the column is currently sorted
13433
- *
13434
- * @deprecated This will be removed soon, in favor of the sortOrder mechanism
13435
- */
13436
- this._sorted = false;
13437
- /**
13438
- * @deprecated This will be removed soon, in favor of the sortOrder mechanism
13439
- */
13440
- this.sortedChange = new EventEmitter();
13441
- // deprecated: to be removed - END
13442
12360
  /**
13443
12361
  * Indicates how the column is currently sorted
13444
12362
  */
@@ -13474,16 +12392,8 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
13474
12392
  if (this.sortOrder !== ClrDatagridSortOrder.UNSORTED && sort.comparator !== this._sortBy) {
13475
12393
  this._sortOrder = ClrDatagridSortOrder.UNSORTED;
13476
12394
  this.sortOrderChange.emit(this._sortOrder);
13477
- // removes the sortIcon when column becomes unsorted
13478
- this.sortIcon = null;
13479
12395
  this._sortDirection = null;
13480
12396
  }
13481
- // deprecated: to be removed - START
13482
- if (this.sorted && sort.comparator !== this._sortBy) {
13483
- this._sorted = false;
13484
- this.sortedChange.emit(false);
13485
- }
13486
- // deprecated: to be removed - END
13487
12397
  });
13488
12398
  }
13489
12399
  get colType() {
@@ -13560,21 +12470,6 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
13560
12470
  get sortable() {
13561
12471
  return !!this._sortBy;
13562
12472
  }
13563
- get sorted() {
13564
- return this._sorted;
13565
- }
13566
- /**
13567
- * @deprecated This will be removed soon, in favor of the sortOrder mechanism
13568
- */
13569
- set sorted(value) {
13570
- if (!value && this.sorted) {
13571
- this._sorted = false;
13572
- this._sort.clear();
13573
- }
13574
- else if (value && !this.sorted) {
13575
- this.sort();
13576
- }
13577
- }
13578
12473
  get sortOrder() {
13579
12474
  return this._sortOrder;
13580
12475
  }
@@ -13626,12 +12521,7 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
13626
12521
  this._sortOrder = this._sort.reverse ? ClrDatagridSortOrder.DESC : ClrDatagridSortOrder.ASC;
13627
12522
  // Sets the correct icon for current sort order
13628
12523
  this._sortDirection = this._sortOrder === ClrDatagridSortOrder.DESC ? 'down' : 'up';
13629
- this.sortIcon = this._sortOrder === ClrDatagridSortOrder.DESC ? 'arrow down' : 'arrow'; // Backward compatibility
13630
12524
  this.sortOrderChange.emit(this._sortOrder);
13631
- // deprecated: to be removed - START
13632
- this._sorted = true;
13633
- this.sortedChange.emit(true);
13634
- // deprecated: to be removed - END
13635
12525
  }
13636
12526
  set projectedFilter(custom) {
13637
12527
  if (custom) {
@@ -13699,7 +12589,7 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
13699
12589
  }
13700
12590
  }
13701
12591
  ClrDatagridColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridColumn, deps: [{ token: Sort }, { token: FiltersProvider }, { token: i0.ViewContainerRef }, { token: DetailService }, { token: i0.ChangeDetectorRef }, { token: ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component });
13702
- ClrDatagridColumn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrDatagridColumn, selector: "clr-dg-column", inputs: { colType: ["clrDgColType", "colType"], field: ["clrDgField", "field"], sortBy: ["clrDgSortBy", "sortBy"], sorted: ["clrDgSorted", "sorted"], sortOrder: ["clrDgSortOrder", "sortOrder"], filterStringPlaceholder: ["clrFilterStringPlaceholder", "filterStringPlaceholder"], filterNumberMaxPlaceholder: ["clrFilterNumberMaxPlaceholder", "filterNumberMaxPlaceholder"], filterNumberMinPlaceholder: ["clrFilterNumberMinPlaceholder", "filterNumberMinPlaceholder"], updateFilterValue: ["clrFilterValue", "updateFilterValue"] }, outputs: { sortedChange: "clrDgSortedChange", sortOrderChange: "clrDgSortOrderChange", filterValueChange: "clrFilterValueChange" }, host: { attributes: { "role": "columnheader" }, properties: { "class.datagrid-column": "true", "attr.aria-sort": "ariaSort" } }, providers: [ClrPopoverPositionService, ClrPopoverEventsService, ClrPopoverToggleService], queries: [{ propertyName: "projectedFilter", first: true, predicate: CustomFilter, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
12592
+ ClrDatagridColumn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrDatagridColumn, selector: "clr-dg-column", inputs: { colType: ["clrDgColType", "colType"], field: ["clrDgField", "field"], sortBy: ["clrDgSortBy", "sortBy"], sortOrder: ["clrDgSortOrder", "sortOrder"], filterStringPlaceholder: ["clrFilterStringPlaceholder", "filterStringPlaceholder"], filterNumberMaxPlaceholder: ["clrFilterNumberMaxPlaceholder", "filterNumberMaxPlaceholder"], filterNumberMinPlaceholder: ["clrFilterNumberMinPlaceholder", "filterNumberMinPlaceholder"], updateFilterValue: ["clrFilterValue", "updateFilterValue"] }, outputs: { sortOrderChange: "clrDgSortOrderChange", filterValueChange: "clrFilterValueChange" }, host: { attributes: { "role": "columnheader" }, properties: { "class.datagrid-column": "true", "attr.aria-sort": "ariaSort" } }, providers: [ClrPopoverPositionService, ClrPopoverEventsService, ClrPopoverToggleService], queries: [{ propertyName: "projectedFilter", first: true, predicate: CustomFilter, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
13703
12593
  <div class="datagrid-column-flex">
13704
12594
  <button class="datagrid-column-title" *ngIf="sortable" (click)="sort()" type="button">
13705
12595
  <ng-container *ngTemplateOutlet="columnTitle"></ng-container>
@@ -13802,12 +12692,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
13802
12692
  }], sortBy: [{
13803
12693
  type: Input,
13804
12694
  args: ['clrDgSortBy']
13805
- }], sorted: [{
13806
- type: Input,
13807
- args: ['clrDgSorted']
13808
- }], sortedChange: [{
13809
- type: Output,
13810
- args: ['clrDgSortedChange']
13811
12695
  }], sortOrder: [{
13812
12696
  type: Input,
13813
12697
  args: ['clrDgSortOrder']
@@ -15909,13 +14793,13 @@ ClrDatagridActionOverflow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.
15909
14793
  [attr.aria-hidden]="!open"
15910
14794
  [attr.id]="popoverId"
15911
14795
  clrKeyFocus
15912
- clrFocusTrap
14796
+ cdkTrapFocus
15913
14797
  (click)="closeOverflowContent($event)"
15914
14798
  *clrPopoverContent="open; at: smartPosition; outsideClickToClose: true; scrollToClose: true"
15915
14799
  >
15916
14800
  <ng-content></ng-content>
15917
14801
  </div>
15918
- `, isInline: true, dependencies: [{ kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { kind: "directive", type: ClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { kind: "directive", type: ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }, { kind: "component", type: ClrKeyFocus, selector: "[clrKeyFocus]", inputs: ["clrDirection", "clrFocusOnLoad", "clrKeyFocus"], outputs: ["clrFocusChange"] }, { kind: "directive", type: FocusTrapDirective, selector: "[clrFocusTrap]", inputs: ["clrFocusTrap"] }] });
14802
+ `, isInline: true, dependencies: [{ kind: "directive", type: CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]" }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { kind: "directive", type: ClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { kind: "directive", type: ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }, { kind: "component", type: ClrKeyFocus, selector: "[clrKeyFocus]", inputs: ["clrDirection", "clrFocusOnLoad", "clrKeyFocus"], outputs: ["clrFocusChange"] }] });
15919
14803
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridActionOverflow, decorators: [{
15920
14804
  type: Component,
15921
14805
  args: [{
@@ -15943,7 +14827,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
15943
14827
  [attr.aria-hidden]="!open"
15944
14828
  [attr.id]="popoverId"
15945
14829
  clrKeyFocus
15946
- clrFocusTrap
14830
+ cdkTrapFocus
15947
14831
  (click)="closeOverflowContent($event)"
15948
14832
  *clrPopoverContent="open; at: smartPosition; outsideClickToClose: true; scrollToClose: true"
15949
14833
  >
@@ -16147,7 +15031,7 @@ ClrDatagridColumnToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
16147
15031
  role="dialog"
16148
15032
  [attr.aria-label]="commonStrings.keys.showColumnsMenuDescription"
16149
15033
  [id]="popoverId"
16150
- clrFocusTrap
15034
+ cdkTrapFocus
16151
15035
  *clrPopoverContent="openState; at: smartPosition; outsideClickToClose: true; scrollToClose: true"
16152
15036
  >
16153
15037
  <div class="switch-header">
@@ -16189,7 +15073,7 @@ ClrDatagridColumnToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
16189
15073
  </clr-dg-column-toggle-button>
16190
15074
  </div>
16191
15075
  </div>
16192
- `, isInline: true, dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: ClrLabel, selector: "label", inputs: ["for"] }, { kind: "directive", type: ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { kind: "component", type: ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { kind: "directive", type: ClrPopoverCloseButton, selector: "[clrPopoverCloseButton]", outputs: ["clrPopoverOnCloseChange"] }, { kind: "directive", type: ClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { kind: "directive", type: ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }, { kind: "directive", type: FocusTrapDirective, selector: "[clrFocusTrap]", inputs: ["clrFocusTrap"] }, { kind: "directive", type: ClrDatagridItemsTrackBy, selector: "[ngForTrackBy]", inputs: ["ngForTrackBy"] }, { kind: "component", type: ClrDatagridColumnToggleButton, selector: "clr-dg-column-toggle-button", outputs: ["clrAllSelected"] }] });
15076
+ `, isInline: true, dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]" }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: ClrLabel, selector: "label", inputs: ["for"] }, { kind: "directive", type: ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { kind: "component", type: ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { kind: "directive", type: ClrPopoverCloseButton, selector: "[clrPopoverCloseButton]", outputs: ["clrPopoverOnCloseChange"] }, { kind: "directive", type: ClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { kind: "directive", type: ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }, { kind: "directive", type: ClrDatagridItemsTrackBy, selector: "[ngForTrackBy]", inputs: ["ngForTrackBy"] }, { kind: "component", type: ClrDatagridColumnToggleButton, selector: "clr-dg-column-toggle-button", outputs: ["clrAllSelected"] }] });
16193
15077
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridColumnToggle, decorators: [{
16194
15078
  type: Component,
16195
15079
  args: [{
@@ -16212,7 +15096,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
16212
15096
  role="dialog"
16213
15097
  [attr.aria-label]="commonStrings.keys.showColumnsMenuDescription"
16214
15098
  [id]="popoverId"
16215
- clrFocusTrap
15099
+ cdkTrapFocus
16216
15100
  *clrPopoverContent="openState; at: smartPosition; outsideClickToClose: true; scrollToClose: true"
16217
15101
  >
16218
15102
  <div class="switch-header">
@@ -16341,7 +15225,8 @@ class ClrDatagridDetail {
16341
15225
  ClrDatagridDetail.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridDetail, deps: [{ token: DetailService }, { token: ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component });
16342
15226
  ClrDatagridDetail.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrDatagridDetail, selector: "clr-dg-detail", host: { listeners: { "document:keyup.esc": "closeCheck()" }, properties: { "class.datagrid-detail-pane": "true" } }, queries: [{ propertyName: "header", first: true, predicate: ClrDatagridDetailHeader, descendants: true }], ngImport: i0, template: `
16343
15227
  <div
16344
- [clrFocusTrap]="{ strict: false }"
15228
+ cdkTrapFocus
15229
+ [cdkTrapFocusAutoCapture]="true"
16345
15230
  class="datagrid-detail-pane-content"
16346
15231
  *ngIf="detailService.isOpen"
16347
15232
  role="dialog"
@@ -16353,7 +15238,7 @@ ClrDatagridDetail.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
16353
15238
  <ng-content></ng-content>
16354
15239
  <div class="clr-sr-only">{{ commonStrings.keys.detailPaneEnd }}</div>
16355
15240
  </div>
16356
- `, isInline: true, dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: FocusTrapDirective, selector: "[clrFocusTrap]", inputs: ["clrFocusTrap"] }] });
15241
+ `, isInline: true, dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]" }] });
16357
15242
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridDetail, decorators: [{
16358
15243
  type: Component,
16359
15244
  args: [{
@@ -16361,11 +15246,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
16361
15246
  host: {
16362
15247
  '[class.datagrid-detail-pane]': 'true',
16363
15248
  },
16364
- // We put the *ngIf on the clrFocusTrap so it doesn't always exist on the page
15249
+ // We put the *ngIf on the cdkTrapFocus so it doesn't always exist on the page
16365
15250
  // have to test for presence of header for aria-describedby because it was causing unit tests to crash
16366
15251
  template: `
16367
15252
  <div
16368
- [clrFocusTrap]="{ strict: false }"
15253
+ cdkTrapFocus
15254
+ [cdkTrapFocusAutoCapture]="true"
16369
15255
  class="datagrid-detail-pane-content"
16370
15256
  *ngIf="detailService.isOpen"
16371
15257
  role="dialog"
@@ -16491,256 +15377,28 @@ function fade(opacity = 1) {
16491
15377
  * This software is released under MIT license.
16492
15378
  * The full license information can be found in LICENSE in the root directory of this project.
16493
15379
  */
16494
- function fadeSlide(direction) {
16495
- let transform = null;
16496
- if (direction === 'up') {
16497
- transform = 'translate(0, 25%)';
16498
- }
16499
- else if (direction === 'down') {
16500
- transform = 'translate(0, -25%)';
16501
- }
16502
- else if (direction === 'left') {
16503
- transform = 'translate(25%, 0)';
16504
- }
16505
- else if (direction === 'right') {
16506
- transform = 'translate(-25%, 0)';
16507
- }
16508
- else {
16509
- throw new Error('Unknown direction ' + direction + ' for slide animation.');
16510
- }
16511
- return [
16512
- transition('void => *', [style({ opacity: 0, transform: transform }), animate(defaultAnimationTiming)]),
16513
- transition('* => void', [animate(defaultAnimationTiming, style({ opacity: 0, transform: transform }))]),
16514
- ];
16515
- }
16516
-
16517
- /*
16518
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
16519
- * This software is released under MIT license.
16520
- * The full license information can be found in LICENSE in the root directory of this project.
16521
- */
16522
-
16523
- /*
16524
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
16525
- * This software is released under MIT license.
16526
- * The full license information can be found in LICENSE in the root directory of this project.
16527
- */
16528
- function slide(direction) {
16529
- let transform = null;
16530
- if (direction === 'up') {
16531
- transform = 'translate(0, 25%)';
16532
- }
16533
- else if (direction === 'down') {
16534
- transform = 'translate(0, -25%)';
16535
- }
16536
- else if (direction === 'left') {
16537
- transform = 'translate(25%, 0)';
16538
- }
16539
- else if (direction === 'right') {
16540
- transform = 'translate(-25%, 0)';
16541
- }
16542
- else {
16543
- throw new Error('Unknown direction ' + direction + ' for slide animation.');
16544
- }
16545
- return [
16546
- transition('void => *', [style({ transform: transform }), animate(defaultAnimationTiming)]),
16547
- transition('* => void', [animate(defaultAnimationTiming, style({ transform: transform }))]),
16548
- ];
16549
- }
16550
-
16551
- /*
16552
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
16553
- * This software is released under MIT license.
16554
- * The full license information can be found in LICENSE in the root directory of this project.
16555
- */
16556
-
16557
- /*
16558
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
16559
- * This software is released under MIT license.
16560
- * The full license information can be found in LICENSE in the root directory of this project.
16561
- */
16562
-
16563
- /*
16564
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
16565
- * This software is released under MIT license.
16566
- * The full license information can be found in LICENSE in the root directory of this project.
16567
- */
16568
-
16569
- /*
16570
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
16571
- * This software is released under MIT license.
16572
- * The full license information can be found in LICENSE in the root directory of this project.
16573
- */
16574
-
16575
- /*
16576
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
16577
- * This software is released under MIT license.
16578
- * The full license information can be found in LICENSE in the root directory of this project.
16579
- */
16580
-
16581
- /*
16582
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
16583
- * This software is released under MIT license.
16584
- * The full license information can be found in LICENSE in the root directory of this project.
16585
- */
16586
-
16587
- /*
16588
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
16589
- * This software is released under MIT license.
16590
- * The full license information can be found in LICENSE in the root directory of this project.
16591
- */
16592
- var ClrAriaLivePoliteness;
16593
- (function (ClrAriaLivePoliteness) {
16594
- ClrAriaLivePoliteness["off"] = "off";
16595
- ClrAriaLivePoliteness["polite"] = "polite";
16596
- ClrAriaLivePoliteness["assertive"] = "assertive";
16597
- })(ClrAriaLivePoliteness || (ClrAriaLivePoliteness = {}));
16598
- /**
16599
- * Time in milliseconds before inserting the content into the container
16600
- */
16601
- const ARIA_LIVE_TICK = 100;
16602
- /**
16603
- * @deprecated
16604
- *
16605
- * -- ClrAriaLiveService is deprecated in 5.0 to be removed in 6.0 --
16606
- * Please consider using the LiveAnnouncer in the Angular Material CDK
16607
- * if your project needs this functionality.
16608
- * More info: https://material.angular.io/cdk/a11y/overview#example-1
16609
- *
16610
- * This service handle `aria-live` accessibility attribute. The issue is that you need
16611
- * to have the DOM Element with attribute `aria-live` before you could insert content
16612
- * and SR (Screen Reader) pick the change and announce it.
16613
- *
16614
- * ```typescript
16615
- * import { ClrAriaLiveService } from 'src/clr-angular/utils/a11y/aria-live.service';
16616
- *
16617
- * @Component({
16618
- * selector: 'clr-demo-component',
16619
- * providers: [ClrAriaLiveService],
16620
- * template: `
16621
- * <ng-content></ng-content>
16622
- * `,
16623
- * })
16624
- * export class DemoComponent {
16625
- * constructor(ariaLiveService: ClrAriaLiveService) {}
16626
- *
16627
- * public actionThatWillTriggerChange() {
16628
- * this.ariaLiveService.announce('message that I want to announce to SR');
16629
- * }
16630
- * }
16631
- * ```
16632
- *
16633
- */
16634
- class ClrAriaLiveService {
16635
- constructor(ngZone, _document, platformId) {
16636
- this.ngZone = ngZone;
16637
- this.platformId = platformId;
16638
- this._id = `clr-aria-live-element-${uniqueIdFactory()}`;
16639
- this.document = _document;
16640
- }
16641
- /**
16642
- * get access to the internal HTML `id` that gonna be used for the AriaLive container.
16643
- * @return ID of the DOM Element as string.
16644
- */
16645
- get id() {
16646
- return this._id;
16647
- }
16648
- /**
16649
- * Append text content inside the AriaLive Container. This method will check if the
16650
- * DOM Element is existing if not it will create one for us and the will apply the text.
16651
- *
16652
- * ```typescript
16653
- * this.ariaLiveService.announce(this.el.nativeElement);
16654
- * // or
16655
- * this.ariaLiveService.announce('Message to announce to SR');
16656
- * ```
16657
- *
16658
- * @remark
16659
- * When second argument is `AriaLivePoliteness.off` we won't create aria container or update it.
16660
- * The reason for that is that we don't want to do additional work if the SR will ignore it.
16661
- *
16662
- * @param message - This could be simple string or HTMLElement
16663
- * @param politeness - 'polite', 'assertive' or 'off'
16664
- */
16665
- announce(message, politeness = ClrAriaLivePoliteness.polite) {
16666
- if (politeness === ClrAriaLivePoliteness.off) {
16667
- return;
16668
- }
16669
- if (!this.ariaLiveElement && isPlatformBrowser(this.platformId)) {
16670
- this.ariaLiveElement = this.createContainer();
16671
- }
16672
- message = typeof message !== 'string' && isPlatformBrowser(this.platformId) ? message.textContent : message;
16673
- // when there is no message do NOTHING!
16674
- if (!message) {
16675
- return;
16676
- }
16677
- this.ariaLiveElement.setAttribute('aria-live', politeness);
16678
- // This 100ms timeout is necessary for some browser + screen-reader combinations:
16679
- // - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout.
16680
- // - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) message won't be read a
16681
- // second time without clearing and then using a non-zero delay.
16682
- // (using JAWS 17 at time of this writing).
16683
- this.ngZone.runOutsideAngular(() => {
16684
- // This clearTimeout will stop all older messages from announcing
16685
- // in the case where the messages are comming too fast we gonna try to append only
16686
- // the last one. That's what the SR will try to do anyway.
16687
- clearTimeout(this.previousTimeout);
16688
- this.previousTimeout = setTimeout(() => {
16689
- this.ariaLiveElement.textContent = message;
16690
- }, ARIA_LIVE_TICK);
16691
- });
16692
- }
16693
- /**
16694
- * onDestroy life cycle - must stop all active setTimeouts and remove the AriaLive
16695
- * container from the document.
16696
- */
16697
- ngOnDestroy() {
16698
- clearTimeout(this.previousTimeout);
16699
- if (isPlatformBrowser(this.platformId) && this.ariaLiveElement) {
16700
- this.document.body.removeChild(this.ariaLiveElement);
16701
- this.ariaLiveElement = null;
16702
- }
16703
- }
16704
- /**
16705
- * Create AriaLive DOM element as a last child of the document.
16706
- * After the element is created, we gonna apply Clarity class to hide it from
16707
- * the screen and set the `aria-live` politness.
16708
- *
16709
- * `clr-sr-only` is the CSS class that is used to hide the element from the screen.
16710
- *
16711
- * @remark
16712
- * Calling this method multiple times will create multiple DOM Elements, that
16713
- * won't be tracked and will be GC after the service is destroyed.
16714
- *
16715
- * @return AriaLive container as HTMLElement
16716
- *
16717
- */
16718
- createContainer() {
16719
- const ariaLiveElement = this.document.createElement('div');
16720
- ariaLiveElement.setAttribute('id', this.id);
16721
- // Use clarity screen reader class to hide the dom element
16722
- // and fix the scrollbar shake
16723
- ariaLiveElement.classList.add('clr-sr-only');
16724
- ariaLiveElement.setAttribute('aria-atomic', 'true');
16725
- ariaLiveElement.setAttribute('aria-live', ClrAriaLivePoliteness.polite);
16726
- this.document.body.appendChild(ariaLiveElement);
16727
- return ariaLiveElement;
16728
- }
16729
- }
16730
- ClrAriaLiveService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrAriaLiveService, deps: [{ token: i0.NgZone }, { token: DOCUMENT }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
16731
- ClrAriaLiveService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrAriaLiveService, providedIn: 'root' });
16732
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrAriaLiveService, decorators: [{
16733
- type: Injectable,
16734
- args: [{
16735
- providedIn: 'root',
16736
- }]
16737
- }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: undefined, decorators: [{
16738
- type: Inject,
16739
- args: [DOCUMENT]
16740
- }] }, { type: undefined, decorators: [{
16741
- type: Inject,
16742
- args: [PLATFORM_ID]
16743
- }] }]; } });
15380
+ function fadeSlide(direction) {
15381
+ let transform = null;
15382
+ if (direction === 'up') {
15383
+ transform = 'translate(0, 25%)';
15384
+ }
15385
+ else if (direction === 'down') {
15386
+ transform = 'translate(0, -25%)';
15387
+ }
15388
+ else if (direction === 'left') {
15389
+ transform = 'translate(25%, 0)';
15390
+ }
15391
+ else if (direction === 'right') {
15392
+ transform = 'translate(-25%, 0)';
15393
+ }
15394
+ else {
15395
+ throw new Error('Unknown direction ' + direction + ' for slide animation.');
15396
+ }
15397
+ return [
15398
+ transition('void => *', [style({ opacity: 0, transform: transform }), animate(defaultAnimationTiming)]),
15399
+ transition('* => void', [animate(defaultAnimationTiming, style({ opacity: 0, transform: transform }))]),
15400
+ ];
15401
+ }
16744
15402
 
16745
15403
  /*
16746
15404
  * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
@@ -16753,6 +15411,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
16753
15411
  * This software is released under MIT license.
16754
15412
  * The full license information can be found in LICENSE in the root directory of this project.
16755
15413
  */
15414
+ function slide(direction) {
15415
+ let transform = null;
15416
+ if (direction === 'up') {
15417
+ transform = 'translate(0, 25%)';
15418
+ }
15419
+ else if (direction === 'down') {
15420
+ transform = 'translate(0, -25%)';
15421
+ }
15422
+ else if (direction === 'left') {
15423
+ transform = 'translate(25%, 0)';
15424
+ }
15425
+ else if (direction === 'right') {
15426
+ transform = 'translate(-25%, 0)';
15427
+ }
15428
+ else {
15429
+ throw new Error('Unknown direction ' + direction + ' for slide animation.');
15430
+ }
15431
+ return [
15432
+ transition('void => *', [style({ transform: transform }), animate(defaultAnimationTiming)]),
15433
+ transition('* => void', [animate(defaultAnimationTiming, style({ transform: transform }))]),
15434
+ ];
15435
+ }
16756
15436
 
16757
15437
  /*
16758
15438
  * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
@@ -16795,95 +15475,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
16795
15475
  * This software is released under MIT license.
16796
15476
  * The full license information can be found in LICENSE in the root directory of this project.
16797
15477
  */
16798
- class ForTypeAheadProvider {
16799
- constructor() {
16800
- this._textContentChange = new Subject();
16801
- }
16802
- get textContentChange() {
16803
- return this._textContentChange.asObservable();
16804
- }
16805
- get textContent() {
16806
- return this._textContent;
16807
- }
16808
- set textContent(value) {
16809
- this._textContent = value;
16810
- this._textContentChange.next(value);
16811
- }
16812
- }
16813
- ForTypeAheadProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ForTypeAheadProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
16814
- ForTypeAheadProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ForTypeAheadProvider });
16815
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ForTypeAheadProvider, decorators: [{
16816
- type: Injectable
16817
- }] });
16818
15478
 
16819
15479
  /*
16820
15480
  * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
16821
15481
  * This software is released under MIT license.
16822
15482
  * The full license information can be found in LICENSE in the root directory of this project.
16823
15483
  */
16824
- // The purpose of this directive is to provide the text content of its host element
16825
- // or text content that's passed to its input.
16826
- // This directive must stay optional. So do not embed this directive in a component module by default.
16827
- // If users need to use this directive, they should import its module on their side.
16828
- class ClrForTypeAhead {
16829
- constructor(el, forTypeAheadProvider) {
16830
- this.el = el;
16831
- this.forTypeAheadProvider = forTypeAheadProvider;
16832
- }
16833
- trimAndLowerCase(value) {
16834
- return value.toLocaleLowerCase().trim();
16835
- }
16836
- get content() {
16837
- return this._content;
16838
- }
16839
- set content(value) {
16840
- if (value) {
16841
- this._content = this.trimAndLowerCase(value);
16842
- this.forTypeAheadProvider.textContent = this._content;
16843
- }
16844
- else {
16845
- this._content = this.trimAndLowerCase(this.el.nativeElement.textContent);
16846
- this.forTypeAheadProvider.textContent = this._content;
16847
- }
16848
- }
16849
- ngOnInit() {
16850
- if (!this._content) {
16851
- this._content = this.trimAndLowerCase(this.el.nativeElement.textContent);
16852
- this.forTypeAheadProvider.textContent = this._content;
16853
- }
16854
- }
16855
- }
16856
- ClrForTypeAhead.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrForTypeAhead, deps: [{ token: i0.ElementRef }, { token: ForTypeAheadProvider }], target: i0.ɵɵFactoryTarget.Directive });
16857
- ClrForTypeAhead.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: ClrForTypeAhead, selector: "[clrForTypeAhead]", inputs: { content: ["clrForTypeAhead", "content"] }, providers: [ForTypeAheadProvider], ngImport: i0 });
16858
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrForTypeAhead, decorators: [{
16859
- type: Directive,
16860
- args: [{
16861
- providers: [ForTypeAheadProvider],
16862
- selector: '[clrForTypeAhead]',
16863
- }]
16864
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ForTypeAheadProvider }]; }, propDecorators: { content: [{
16865
- type: Input,
16866
- args: ['clrForTypeAhead']
16867
- }] } });
16868
15484
 
16869
15485
  /*
16870
15486
  * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
16871
15487
  * This software is released under MIT license.
16872
15488
  * The full license information can be found in LICENSE in the root directory of this project.
16873
15489
  */
16874
- class ClrForTypeAheadModule {
16875
- }
16876
- ClrForTypeAheadModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrForTypeAheadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
16877
- ClrForTypeAheadModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: ClrForTypeAheadModule, declarations: [ClrForTypeAhead], imports: [CommonModule], exports: [ClrForTypeAhead] });
16878
- ClrForTypeAheadModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrForTypeAheadModule, imports: [CommonModule] });
16879
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrForTypeAheadModule, decorators: [{
16880
- type: NgModule,
16881
- args: [{
16882
- imports: [CommonModule],
16883
- declarations: [ClrForTypeAhead],
16884
- exports: [ClrForTypeAhead],
16885
- }]
16886
- }] });
16887
15490
 
16888
15491
  /*
16889
15492
  * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
@@ -17314,9 +15917,14 @@ class ClrDatagridPagination {
17314
15917
  }
17315
15918
  return middlePages;
17316
15919
  }
15920
+ verifyCurrentPage(event) {
15921
+ const parsed = parseInt(event.target.value, 10);
15922
+ if (parsed !== this.page.current) {
15923
+ event.target.value = this.page.current;
15924
+ }
15925
+ }
17317
15926
  /**
17318
- * We only update the pagination's current page on blur of the input field, or
17319
- * when they press enter.
15927
+ * We only update the pagination's current page on enter.
17320
15928
  */
17321
15929
  updateCurrentPage(event) {
17322
15930
  const parsed = parseInt(event.target.value, 10);
@@ -17377,7 +15985,7 @@ ClrDatagridPagination.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
17377
15985
  [size]="page.last.toString().length"
17378
15986
  [value]="page.current"
17379
15987
  (keydown.enter)="updateCurrentPage($event)"
17380
- (blur)="updateCurrentPage($event)"
15988
+ (blur)="verifyCurrentPage($event)"
17381
15989
  [attr.aria-label]="commonStrings.keys.currentPage"
17382
15990
  />
17383
15991
  <ng-template #readOnly>
@@ -17477,7 +16085,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
17477
16085
  [size]="page.last.toString().length"
17478
16086
  [value]="page.current"
17479
16087
  (keydown.enter)="updateCurrentPage($event)"
17480
- (blur)="updateCurrentPage($event)"
16088
+ (blur)="verifyCurrentPage($event)"
17481
16089
  [attr.aria-label]="commonStrings.keys.currentPage"
17482
16090
  />
17483
16091
  <ng-template #readOnly>
@@ -17598,20 +16206,20 @@ class ClrDatagridRowDetail {
17598
16206
  }
17599
16207
  get beginningOfExpandableContentAriaText() {
17600
16208
  return (this._beginningOfExpandableContentAriaText ||
17601
- `${this.commonStrings.keys.dategridExpandableBeginningOf || this.commonStrings.keys.datagridExpandableBeginningOf}
17602
- ${this.commonStrings.keys.dategridExpandableRowContent || this.commonStrings.keys.datagridExpandableRowContent}`);
16209
+ `${this.commonStrings.keys.datagridExpandableBeginningOf}
16210
+ ${this.commonStrings.keys.datagridExpandableRowContent}`);
17603
16211
  }
17604
16212
  get endOfExpandableContentAriaText() {
17605
16213
  return (this._endOfExpandableContentAriaText ||
17606
- `${this.commonStrings.keys.dategridExpandableEndOf || this.commonStrings.keys.datagridExpandableEndOf}
17607
- ${this.commonStrings.keys.dategridExpandableRowContent || this.commonStrings.keys.datagridExpandableRowContent}`);
16214
+ `${this.commonStrings.keys.datagridExpandableEndOf}
16215
+ ${this.commonStrings.keys.datagridExpandableRowContent}`);
17608
16216
  }
17609
16217
  }
17610
16218
  ClrDatagridRowDetail.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridRowDetail, deps: [{ token: Selection }, { token: RowActionService }, { token: DatagridIfExpandService }, { token: ExpandableRowsCount }, { token: ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component });
17611
16219
  ClrDatagridRowDetail.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrDatagridRowDetail, selector: "clr-dg-row-detail", inputs: { replace: ["clrDgReplace", "replace"], _beginningOfExpandableContentAriaText: ["clrRowDetailBeginningAriaText", "_beginningOfExpandableContentAriaText"], _endOfExpandableContentAriaText: ["clrRowDetailEndAriaText", "_endOfExpandableContentAriaText"] }, host: { attributes: { "role": "gridcell" }, properties: { "class.datagrid-row-flex": "true", "class.datagrid-row-detail": "true", "class.datagrid-container": "cells.length === 0", "attr.id": "expand.expandableId" } }, queries: [{ propertyName: "cells", predicate: ClrDatagridCell }], ngImport: i0, template: `
17612
16220
  <div class="clr-sr-only">
17613
16221
  {{ beginningOfExpandableContentAriaText }}
17614
- {{ commonStrings.keys.dategridExpandableRowsHelperText || commonStrings.keys.datagridExpandableRowsHelperText }}
16222
+ {{ commonStrings.keys.datagridExpandableRowsHelperText }}
17615
16223
  </div>
17616
16224
  <ng-content></ng-content>
17617
16225
  <div class="clr-sr-only">{{ endOfExpandableContentAriaText }}</div>
@@ -17620,11 +16228,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
17620
16228
  type: Component,
17621
16229
  args: [{
17622
16230
  selector: 'clr-dg-row-detail',
17623
- // TODO: @deprecated - dategrid* keys are deprecated. Remove in v14.
17624
16231
  template: `
17625
16232
  <div class="clr-sr-only">
17626
16233
  {{ beginningOfExpandableContentAriaText }}
17627
- {{ commonStrings.keys.dategridExpandableRowsHelperText || commonStrings.keys.datagridExpandableRowsHelperText }}
16234
+ {{ commonStrings.keys.datagridExpandableRowsHelperText }}
17628
16235
  </div>
17629
16236
  <ng-content></ng-content>
17630
16237
  <div class="clr-sr-only">{{ endOfExpandableContentAriaText }}</div>
@@ -18246,6 +16853,8 @@ ClrDatagridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versi
18246
16853
  // Built-in shortcuts
18247
16854
  DatagridStringFilter,
18248
16855
  DatagridNumericFilter], imports: [CommonModule,
16856
+ CdkDragModule,
16857
+ CdkTrapFocusModule,
18249
16858
  ClrIconModule,
18250
16859
  ClrFormsModule,
18251
16860
  FormsModule,
@@ -18253,11 +16862,9 @@ ClrDatagridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versi
18253
16862
  ClrConditionalModule,
18254
16863
  ClrOutsideClickModule,
18255
16864
  ClrExpandableAnimationModule,
18256
- ClrDragAndDropModule,
18257
16865
  ClrSpinnerModule,
18258
16866
  ClrPopoverModuleNext,
18259
16867
  ClrKeyFocusModule,
18260
- ClrFocusTrapModule,
18261
16868
  ClrFocusOnViewInitModule], exports: [
18262
16869
  // Core
18263
16870
  ClrDatagrid,
@@ -18300,6 +16907,8 @@ ClrDatagridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versi
18300
16907
  DatagridStringFilter,
18301
16908
  DatagridNumericFilter] });
18302
16909
  ClrDatagridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridModule, imports: [CommonModule,
16910
+ CdkDragModule,
16911
+ CdkTrapFocusModule,
18303
16912
  ClrIconModule,
18304
16913
  ClrFormsModule,
18305
16914
  FormsModule,
@@ -18307,17 +16916,17 @@ ClrDatagridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", versi
18307
16916
  ClrConditionalModule,
18308
16917
  ClrOutsideClickModule,
18309
16918
  ClrExpandableAnimationModule,
18310
- ClrDragAndDropModule,
18311
16919
  ClrSpinnerModule,
18312
16920
  ClrPopoverModuleNext,
18313
16921
  ClrKeyFocusModule,
18314
- ClrFocusTrapModule,
18315
16922
  ClrFocusOnViewInitModule] });
18316
16923
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridModule, decorators: [{
18317
16924
  type: NgModule,
18318
16925
  args: [{
18319
16926
  imports: [
18320
16927
  CommonModule,
16928
+ CdkDragModule,
16929
+ CdkTrapFocusModule,
18321
16930
  ClrIconModule,
18322
16931
  ClrFormsModule,
18323
16932
  FormsModule,
@@ -18325,11 +16934,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
18325
16934
  ClrConditionalModule,
18326
16935
  ClrOutsideClickModule,
18327
16936
  ClrExpandableAnimationModule,
18328
- ClrDragAndDropModule,
18329
16937
  ClrSpinnerModule,
18330
16938
  ClrPopoverModuleNext,
18331
16939
  ClrKeyFocusModule,
18332
- ClrFocusTrapModule,
18333
16940
  ClrFocusOnViewInitModule,
18334
16941
  ],
18335
16942
  declarations: [CLR_DATAGRID_DIRECTIVES],
@@ -18478,7 +17085,7 @@ class ClrStackBlock {
18478
17085
  }
18479
17086
  }
18480
17087
  ClrStackBlock.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackBlock, deps: [{ token: ClrStackBlock, optional: true, skipSelf: true }, { token: ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component });
18481
- ClrStackBlock.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", 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: `
17088
+ ClrStackBlock.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrStackBlock, selector: "clr-stack-block", inputs: { expanded: ["clrSbExpanded", "expanded"], expandable: ["clrSbExpandable", "expandable"], setChangedValue: ["clrSbNotifyChange", "setChangedValue"], ariaLevel: ["clrStackViewLevel", "ariaLevel"] }, 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: `
18482
17089
  <!-- The 'preventDefault' for the space keydown event prevents the page
18483
17090
  from scrolling when a stack block is toggled via the space key. -->
18484
17091
  <div
@@ -18597,12 +17204,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
18597
17204
  }], ariaLevel: [{
18598
17205
  type: Input,
18599
17206
  args: ['clrStackViewLevel']
18600
- }], ariaSetsize: [{
18601
- type: Input,
18602
- args: ['clrStackViewSetsize']
18603
- }], ariaPosinset: [{
18604
- type: Input,
18605
- args: ['clrStackViewPosinset']
18606
17207
  }], onStackLabelFocus: [{
18607
17208
  type: HostBinding,
18608
17209
  args: ['class.on-focus']
@@ -18637,30 +17238,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
18637
17238
  * The full license information can be found in LICENSE in the root directory of this project.
18638
17239
  */
18639
17240
  class ClrStackView {
18640
- constructor() {
18641
- /**
18642
- * Undocumented experimental feature: inline editing.
18643
- */
18644
- this.editable = false;
18645
- this.save = new EventEmitter(false);
18646
- this._editMode = false;
18647
- this.editingChange = new EventEmitter(false);
18648
- }
18649
- get editing() {
18650
- return this.editable && this._editMode;
18651
- }
18652
- set editing(value) {
18653
- if (this.editable) {
18654
- this._editMode = value;
18655
- this.editingChange.emit(value);
18656
- if (!value) {
18657
- this.save.emit(null);
18658
- }
18659
- }
18660
- }
18661
17241
  }
18662
17242
  ClrStackView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackView, deps: [], target: i0.ɵɵFactoryTarget.Component });
18663
- ClrStackView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrStackView, selector: "clr-stack-view", outputs: { save: "clrStackSave" }, ngImport: i0, template: `
17243
+ ClrStackView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrStackView, selector: "clr-stack-view", ngImport: i0, template: `
18664
17244
  <ng-content select="clr-stack-header"></ng-content>
18665
17245
  <div class="stack-view"><ng-content></ng-content></div>
18666
17246
  `, isInline: true, styles: [":host{display:block}\n"] });
@@ -18670,10 +17250,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
18670
17250
  <ng-content select="clr-stack-header"></ng-content>
18671
17251
  <div class="stack-view"><ng-content></ng-content></div>
18672
17252
  `, styles: [":host{display:block}\n"] }]
18673
- }], propDecorators: { save: [{
18674
- type: Output,
18675
- args: ['clrStackSave']
18676
- }] } });
17253
+ }] });
18677
17254
 
18678
17255
  /*
18679
17256
  * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
@@ -18692,19 +17269,9 @@ ClrStackHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version
18692
17269
 
18693
17270
  <span class="stack-actions">
18694
17271
  <ng-content select=".stack-action"></ng-content>
18695
- <!-- Undocumented experimental feature: inline editing. -->
18696
- <button
18697
- *ngIf="stackView.editable"
18698
- class="stack-action btn btn-sm btn-link"
18699
- (click)="stackView.editing = !stackView.editing"
18700
- type="button"
18701
- >
18702
- Edit
18703
- </button>
18704
- <!-- End of undocumented experimental feature. -->
18705
17272
  </span>
18706
17273
  </div>
18707
- `, isInline: true, styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
17274
+ `, isInline: true, styles: [":host{display:block}\n"] });
18708
17275
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackHeader, decorators: [{
18709
17276
  type: Component,
18710
17277
  args: [{ selector: 'clr-stack-header', template: `
@@ -18713,116 +17280,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
18713
17280
 
18714
17281
  <span class="stack-actions">
18715
17282
  <ng-content select=".stack-action"></ng-content>
18716
- <!-- Undocumented experimental feature: inline editing. -->
18717
- <button
18718
- *ngIf="stackView.editable"
18719
- class="stack-action btn btn-sm btn-link"
18720
- (click)="stackView.editing = !stackView.editing"
18721
- type="button"
18722
- >
18723
- Edit
18724
- </button>
18725
- <!-- End of undocumented experimental feature. -->
18726
17283
  </span>
18727
17284
  </div>
18728
17285
  `, styles: [":host{display:block}\n"] }]
18729
17286
  }], ctorParameters: function () { return [{ type: ClrStackView }]; } });
18730
17287
 
18731
- /*
18732
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
18733
- * This software is released under MIT license.
18734
- * The full license information can be found in LICENSE in the root directory of this project.
18735
- */
18736
- class StackControl {
18737
- constructor(stackView) {
18738
- this.stackView = stackView;
18739
- this.modelChange = new EventEmitter(false);
18740
- // Make the ClrStackView editable, since it contains a StackControl
18741
- this.stackView.editable = true;
18742
- this.subscription = this.stackView.editingChange.subscribe((editing) => {
18743
- // Edit mode was closed
18744
- if (!editing) {
18745
- this.modelChange.emit(this.model);
18746
- }
18747
- });
18748
- }
18749
- ngOnDestroy() {
18750
- this.subscription.unsubscribe();
18751
- }
18752
- }
18753
- StackControl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: StackControl, deps: [{ token: ClrStackView }], target: i0.ɵɵFactoryTarget.Directive });
18754
- StackControl.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: StackControl, ngImport: i0 });
18755
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: StackControl, decorators: [{
18756
- type: Directive
18757
- }], ctorParameters: function () { return [{ type: ClrStackView }]; } });
18758
-
18759
- /*
18760
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
18761
- * This software is released under MIT license.
18762
- * The full license information can be found in LICENSE in the root directory of this project.
18763
- */
18764
- class ClrStackInput extends StackControl {
18765
- constructor(stackView) {
18766
- super(stackView);
18767
- this.stackView = stackView;
18768
- this.type = 'text';
18769
- }
18770
- }
18771
- ClrStackInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackInput, deps: [{ token: ClrStackView }], target: i0.ɵɵFactoryTarget.Component });
18772
- ClrStackInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrStackInput, selector: "clr-stack-input", inputs: { model: ["clrModel", "model"], type: "type" }, outputs: { modelChange: "clrModelChange" }, usesInheritance: true, ngImport: i0, template: `
18773
- <span *ngIf="!stackView.editing">{{ model }}</span>
18774
- <input [type]="type" *ngIf="stackView.editing" [(ngModel)]="model" />
18775
- `, isInline: true, dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", 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]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
18776
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackInput, decorators: [{
18777
- type: Component,
18778
- args: [{
18779
- selector: 'clr-stack-input',
18780
- inputs: ['model: clrModel', 'type'],
18781
- outputs: ['modelChange: clrModelChange'],
18782
- template: `
18783
- <span *ngIf="!stackView.editing">{{ model }}</span>
18784
- <input [type]="type" *ngIf="stackView.editing" [(ngModel)]="model" />
18785
- `,
18786
- }]
18787
- }], ctorParameters: function () { return [{ type: ClrStackView }]; } });
18788
-
18789
- /*
18790
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
18791
- * This software is released under MIT license.
18792
- * The full license information can be found in LICENSE in the root directory of this project.
18793
- */
18794
- class ClrStackSelect extends StackControl {
18795
- constructor(stackView) {
18796
- super(stackView);
18797
- this.stackView = stackView;
18798
- }
18799
- }
18800
- ClrStackSelect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackSelect, deps: [{ token: ClrStackView }], target: i0.ɵɵFactoryTarget.Component });
18801
- ClrStackSelect.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrStackSelect, selector: "clr-stack-select", inputs: { model: ["clrModel", "model"] }, outputs: { modelChange: "clrModelChange" }, usesInheritance: true, ngImport: i0, template: `
18802
- <span *ngIf="!stackView.editing">{{ model }}</span>
18803
- <div class="select" *ngIf="stackView.editing">
18804
- <select [(ngModel)]="model">
18805
- <ng-content></ng-content>
18806
- </select>
18807
- </div>
18808
- `, isInline: true, dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
18809
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackSelect, decorators: [{
18810
- type: Component,
18811
- args: [{
18812
- selector: 'clr-stack-select',
18813
- inputs: ['model: clrModel'],
18814
- outputs: ['modelChange: clrModelChange'],
18815
- template: `
18816
- <span *ngIf="!stackView.editing">{{ model }}</span>
18817
- <div class="select" *ngIf="stackView.editing">
18818
- <select [(ngModel)]="model">
18819
- <ng-content></ng-content>
18820
- </select>
18821
- </div>
18822
- `,
18823
- }]
18824
- }], ctorParameters: function () { return [{ type: ClrStackView }]; } });
18825
-
18826
17288
  /*
18827
17289
  * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
18828
17290
  * This software is released under MIT license.
@@ -18835,14 +17297,6 @@ const CLR_STACK_VIEW_DIRECTIVES = [
18835
17297
  ClrStackContentInput,
18836
17298
  ClrStackViewLabel,
18837
17299
  ClrStackViewCustomTags,
18838
- /**
18839
- * Undocumented experimental feature: inline editing.
18840
- */
18841
- ClrStackInput,
18842
- ClrStackSelect,
18843
- /**
18844
- * End of undocumented experimental feature.
18845
- */
18846
17300
  ];
18847
17301
  class ClrStackViewModule {
18848
17302
  constructor() {
@@ -18855,22 +17309,12 @@ ClrStackViewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", vers
18855
17309
  ClrStackBlock,
18856
17310
  ClrStackContentInput,
18857
17311
  ClrStackViewLabel,
18858
- ClrStackViewCustomTags,
18859
- /**
18860
- * Undocumented experimental feature: inline editing.
18861
- */
18862
- ClrStackInput,
18863
- ClrStackSelect], imports: [CommonModule, FormsModule, ClrIconModule, ClrExpandableAnimationModule], exports: [ClrStackView,
17312
+ ClrStackViewCustomTags], imports: [CommonModule, FormsModule, ClrIconModule, ClrExpandableAnimationModule], exports: [ClrStackView,
18864
17313
  ClrStackHeader,
18865
17314
  ClrStackBlock,
18866
17315
  ClrStackContentInput,
18867
17316
  ClrStackViewLabel,
18868
- ClrStackViewCustomTags,
18869
- /**
18870
- * Undocumented experimental feature: inline editing.
18871
- */
18872
- ClrStackInput,
18873
- ClrStackSelect] });
17317
+ ClrStackViewCustomTags] });
18874
17318
  ClrStackViewModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackViewModule, imports: [CommonModule, FormsModule, ClrIconModule, ClrExpandableAnimationModule] });
18875
17319
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackViewModule, decorators: [{
18876
17320
  type: NgModule,
@@ -19495,13 +17939,13 @@ const LVIEW_CONTEXT_INDEX = 8;
19495
17939
  // then those keys are sent together in one request.
19496
17940
  const TREE_TYPE_AHEAD_TIMEOUT = 200;
19497
17941
  class ClrTreeNode {
19498
- constructor(platformId, parent, forTypeAheadProvider, featuresService, expandService, commonStrings, focusManager, injector) {
17942
+ constructor(platformId, parent, featuresService, expandService, commonStrings, focusManager, elementRef, injector) {
19499
17943
  this.platformId = platformId;
19500
- this.forTypeAheadProvider = forTypeAheadProvider;
19501
17944
  this.featuresService = featuresService;
19502
17945
  this.expandService = expandService;
19503
17946
  this.commonStrings = commonStrings;
19504
17947
  this.focusManager = focusManager;
17948
+ this.elementRef = elementRef;
19505
17949
  this.STATES = ClrSelectedState;
19506
17950
  this.skipEmitChange = false;
19507
17951
  this.isModelLoading = false;
@@ -19580,6 +18024,9 @@ class ClrTreeNode {
19580
18024
  set expanded(value) {
19581
18025
  this.expandService.expanded = value;
19582
18026
  }
18027
+ set clrForTypeAhead(value) {
18028
+ this._model.textContent = trimAndLowerCase(value || this.elementRef.nativeElement.textContent);
18029
+ }
19583
18030
  ngOnInit() {
19584
18031
  this._model.expanded = this.expanded;
19585
18032
  this.subscriptions.push(this._model.selected.pipe(filter(() => !this.skipEmitChange)).subscribe(value => {
@@ -19599,14 +18046,14 @@ class ClrTreeNode {
19599
18046
  this.subscriptions.push(this._model.loading$.pipe(debounceTime(0)).subscribe(isLoading => (this.isModelLoading = isLoading)));
19600
18047
  }
19601
18048
  ngAfterContentInit() {
19602
- if (this.forTypeAheadProvider) {
19603
- this._model.textContent = this.forTypeAheadProvider.textContent;
19604
- this.subscriptions.push(this.typeAheadKeyEvent.pipe(debounceTime(TREE_TYPE_AHEAD_TIMEOUT)).subscribe((bufferedKeys) => {
19605
- this.focusManager.focusNodeStartsWith(bufferedKeys, this._model);
19606
- // reset once bufferedKeys are used
19607
- this.typeAheadKeyBuffer = '';
19608
- }));
18049
+ if (!this._model.textContent) {
18050
+ this._model.textContent = trimAndLowerCase(this.elementRef.nativeElement.textContent);
19609
18051
  }
18052
+ this.subscriptions.push(this.typeAheadKeyEvent.pipe(debounceTime(TREE_TYPE_AHEAD_TIMEOUT)).subscribe((bufferedKeys) => {
18053
+ this.focusManager.focusNodeStartsWith(bufferedKeys, this._model);
18054
+ // reset once bufferedKeys are used
18055
+ this.typeAheadKeyBuffer = '';
18056
+ }));
19610
18057
  }
19611
18058
  ngOnDestroy() {
19612
18059
  this._model.destroy();
@@ -19728,8 +18175,8 @@ class ClrTreeNode {
19728
18175
  }
19729
18176
  }
19730
18177
  }
19731
- ClrTreeNode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", 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 });
19732
- ClrTreeNode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", 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 || ariaSelected\">\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", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "component", type: RecursiveChildren, selector: "clr-recursive-children", inputs: ["parent", "children"] }], animations: [
18178
+ ClrTreeNode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrTreeNode, deps: [{ token: PLATFORM_ID }, { token: ClrTreeNode, optional: true, skipSelf: true }, { token: TreeFeaturesService }, { token: IfExpandService }, { token: ClrCommonStringsService }, { token: TreeFocusManagerService }, { token: i0.ElementRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
18179
+ ClrTreeNode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrTreeNode, selector: "clr-tree-node", inputs: { selected: ["clrSelected", "selected"], expandable: ["clrExpandable", "expandable"], expanded: ["clrExpanded", "expanded"], clrForTypeAhead: "clrForTypeAhead" }, 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 || ariaSelected\">\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", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "component", type: RecursiveChildren, selector: "clr-recursive-children", inputs: ["parent", "children"] }], animations: [
19733
18180
  trigger('toggleChildrenAnim', [
19734
18181
  transition('collapsed => expanded', [style({ height: 0 }), animate(200, style({ height: '*' }))]),
19735
18182
  transition('expanded => collapsed', [style({ height: '*' }), animate(200, style({ height: 0 }))]),
@@ -19756,11 +18203,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
19756
18203
  type: Optional
19757
18204
  }, {
19758
18205
  type: SkipSelf
19759
- }] }, { type: ForTypeAheadProvider, decorators: [{
19760
- type: Optional
19761
- }, {
19762
- type: Self
19763
- }] }, { type: TreeFeaturesService }, { type: IfExpandService }, { type: ClrCommonStringsService }, { type: TreeFocusManagerService }, { type: i0.Injector }]; }, propDecorators: { selected: [{
18206
+ }] }, { type: TreeFeaturesService }, { type: IfExpandService }, { type: ClrCommonStringsService }, { type: TreeFocusManagerService }, { type: i0.ElementRef }, { type: i0.Injector }]; }, propDecorators: { selected: [{
19764
18207
  type: Input,
19765
18208
  args: ['clrSelected']
19766
18209
  }], selectedChange: [{
@@ -19772,6 +18215,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
19772
18215
  }], expanded: [{
19773
18216
  type: Input,
19774
18217
  args: ['clrExpanded']
18218
+ }], clrForTypeAhead: [{
18219
+ type: Input,
18220
+ args: ['clrForTypeAhead']
19775
18221
  }], expandedChange: [{
19776
18222
  type: Output,
19777
18223
  args: ['clrExpandedChange']
@@ -19782,6 +18228,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
19782
18228
  type: ContentChildren,
19783
18229
  args: [ClrTreeNodeLink, { descendants: false }]
19784
18230
  }] } });
18231
+ function trimAndLowerCase(value) {
18232
+ return value.toLocaleLowerCase().trim();
18233
+ }
19785
18234
 
19786
18235
  /*
19787
18236
  * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
@@ -20264,13 +18713,10 @@ const BASIC_FOCUSABLE_ITEM_PROVIDER = [
20264
18713
  * The full license information can be found in LICENSE in the root directory of this project.
20265
18714
  */
20266
18715
  class ClrDropdownItem {
20267
- constructor(dropdown, el, _dropdownService, renderer, focusableItem) {
18716
+ constructor(dropdown, _dropdownService, focusableItem) {
20268
18717
  this.dropdown = dropdown;
20269
- this.el = el;
20270
18718
  this._dropdownService = _dropdownService;
20271
- this.renderer = renderer;
20272
18719
  this.focusableItem = focusableItem;
20273
- this.setByDeprecatedDisabled = false;
20274
18720
  }
20275
18721
  set disabled(value) {
20276
18722
  // Empty string attribute evaluates to false but should disable the item, so we need to add a special case for it.
@@ -20279,17 +18725,6 @@ class ClrDropdownItem {
20279
18725
  get disabled() {
20280
18726
  return this.focusableItem.disabled;
20281
18727
  }
20282
- /*
20283
- * @deprecated since 3.0, remove in 4.0. the presence of this attribute makes it not-focusable in IE11. Use [clrDisabled] input instead.
20284
- */
20285
- set disabledDeprecated(value) {
20286
- // Empty string attribute evaluates to false but should disable the item, so we need to add a special case for it.
20287
- this.focusableItem.disabled = !!value || value === '';
20288
- this.setByDeprecatedDisabled = true;
20289
- }
20290
- get disabledDeprecated() {
20291
- return this.focusableItem.disabled;
20292
- }
20293
18728
  /**
20294
18729
  * Let you overwrite the focusable auto increment id.
20295
18730
  */
@@ -20299,22 +18734,28 @@ class ClrDropdownItem {
20299
18734
  get dropdownItemId() {
20300
18735
  return this.focusableItem.id;
20301
18736
  }
20302
- ngAfterViewInit() {
20303
- this.unlisten = this.renderer.listen(this.el.nativeElement, 'click', () => this.onDropdownItemClick());
20304
- }
20305
18737
  onDropdownItemClick() {
20306
- if (this.dropdown.isMenuClosable && !this.el.nativeElement.classList.contains('disabled')) {
20307
- this._dropdownService.closeMenus();
20308
- }
18738
+ // Ensure that the dropdown is closed after custom dropdown item click event handlers have run.
18739
+ setTimeout(() => {
18740
+ if (this.dropdown.isMenuClosable && !this.disabled) {
18741
+ this._dropdownService.closeMenus();
18742
+ }
18743
+ });
20309
18744
  }
20310
- ngOnDestroy() {
20311
- if (this.unlisten) {
20312
- this.unlisten();
18745
+ onSpaceKeydown($event) {
18746
+ this.stopImmediatePropagationIfDisabled($event);
18747
+ }
18748
+ onEnterKeydown($event) {
18749
+ this.stopImmediatePropagationIfDisabled($event);
18750
+ }
18751
+ stopImmediatePropagationIfDisabled($event) {
18752
+ if (this.disabled) {
18753
+ $event.stopImmediatePropagation();
20313
18754
  }
20314
18755
  }
20315
18756
  }
20316
- ClrDropdownItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDropdownItem, deps: [{ token: ClrDropdown }, { token: i0.ElementRef }, { token: RootDropdownService }, { token: i0.Renderer2 }, { token: FocusableItem }], target: i0.ɵɵFactoryTarget.Directive });
20317
- ClrDropdownItem.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: ClrDropdownItem, selector: "[clrDropdownItem]", inputs: { disabled: ["clrDisabled", "disabled"], disabledDeprecated: ["disabled", "disabledDeprecated"], dropdownItemId: ["id", "dropdownItemId"] }, host: { properties: { "class.disabled": "disabled", "class.dropdown-item": "true", "attr.role": "\"menuitem\"", "attr.aria-disabled": "disabled", "attr.disabled": "(disabled && setByDeprecatedDisabled)? '' : null", "attr.id": "dropdownItemId" } }, providers: [BASIC_FOCUSABLE_ITEM_PROVIDER], ngImport: i0 });
18757
+ ClrDropdownItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDropdownItem, deps: [{ token: ClrDropdown }, { token: RootDropdownService }, { token: FocusableItem }], target: i0.ɵɵFactoryTarget.Directive });
18758
+ ClrDropdownItem.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: ClrDropdownItem, selector: "[clrDropdownItem]", inputs: { disabled: ["clrDisabled", "disabled"], dropdownItemId: ["id", "dropdownItemId"] }, host: { listeners: { "click": "onDropdownItemClick()", "keydown.space": "onSpaceKeydown($event)", "keydown.enter": "onEnterKeydown($event)" }, properties: { "class.disabled": "disabled", "class.dropdown-item": "true", "attr.role": "\"menuitem\"", "attr.aria-disabled": "disabled", "attr.id": "dropdownItemId" } }, providers: [BASIC_FOCUSABLE_ITEM_PROVIDER], ngImport: i0 });
20318
18759
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDropdownItem, decorators: [{
20319
18760
  type: Directive,
20320
18761
  args: [{
@@ -20324,20 +18765,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
20324
18765
  '[class.dropdown-item]': 'true',
20325
18766
  '[attr.role]': '"menuitem"',
20326
18767
  '[attr.aria-disabled]': 'disabled',
20327
- '[attr.disabled]': "(disabled && setByDeprecatedDisabled)? '' : null",
20328
18768
  '[attr.id]': 'dropdownItemId',
20329
18769
  },
20330
18770
  providers: [BASIC_FOCUSABLE_ITEM_PROVIDER],
20331
18771
  }]
20332
- }], ctorParameters: function () { return [{ type: ClrDropdown }, { type: i0.ElementRef }, { type: RootDropdownService }, { type: i0.Renderer2 }, { type: FocusableItem }]; }, propDecorators: { disabled: [{
18772
+ }], ctorParameters: function () { return [{ type: ClrDropdown }, { type: RootDropdownService }, { type: FocusableItem }]; }, propDecorators: { disabled: [{
20333
18773
  type: Input,
20334
18774
  args: ['clrDisabled']
20335
- }], disabledDeprecated: [{
20336
- type: Input,
20337
- args: ['disabled']
20338
18775
  }], dropdownItemId: [{
20339
18776
  type: Input,
20340
18777
  args: ['id']
18778
+ }], onDropdownItemClick: [{
18779
+ type: HostListener,
18780
+ args: ['click']
18781
+ }], onSpaceKeydown: [{
18782
+ type: HostListener,
18783
+ args: ['keydown.space', ['$event']]
18784
+ }], onEnterKeydown: [{
18785
+ type: HostListener,
18786
+ args: ['keydown.enter', ['$event']]
20341
18787
  }] } });
20342
18788
 
20343
18789
  /*
@@ -21833,143 +20279,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
21833
20279
  }]
21834
20280
  }], ctorParameters: function () { return [{ type: ResponsiveNavigationService }, { type: ClrCommonStringsService }]; } });
21835
20281
 
21836
- /*
21837
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
21838
- * This software is released under MIT license.
21839
- * The full license information can be found in LICENSE in the root directory of this project.
21840
- */
21841
- function refocusIfOutsideFocusTrapElement(focusedElement, focusTrapElement, elementToRefocus) {
21842
- const focusTrapIsCurrent = FocusTrapTrackerService.getCurrent() === focusTrapElement;
21843
- const elementToFocusIsOutsideFocusTrap = elementIsOutsideFocusTrapElement(focusedElement, focusTrapElement);
21844
- if (focusTrapIsCurrent && elementToFocusIsOutsideFocusTrap) {
21845
- elementToRefocus = elementToRefocus || focusTrapElement;
21846
- elementToRefocus.focus();
21847
- }
21848
- else {
21849
- focusedElement.focus();
21850
- }
21851
- }
21852
- function elementIsOutsideFocusTrapElement(focusedElement, focusTrapElement) {
21853
- if (focusedElement === focusTrapElement.topReboundElement ||
21854
- focusedElement === focusTrapElement.bottomReboundElement) {
21855
- return true;
21856
- }
21857
- const elementIsInFocusTrapLightDom = focusTrapElement.contains(focusedElement);
21858
- if (elementIsInFocusTrapLightDom) {
21859
- return false;
21860
- }
21861
- if (focusTrapElement !== null && focusTrapElement.contains(focusedElement)) {
21862
- return false;
21863
- }
21864
- return true;
21865
- }
21866
- function createFocusTrapReboundElement(document) {
21867
- const offScreenSpan = document.createElement('span');
21868
- offScreenSpan.setAttribute('tabindex', '0');
21869
- offScreenSpan.classList.add('offscreen-focus-rebounder');
21870
- return offScreenSpan;
21871
- }
21872
- function addReboundElementsToFocusTrapElement(document, focusTrapElement) {
21873
- if (focusTrapElement && !focusTrapElement.topReboundElement && !focusTrapElement.bottomReboundElement) {
21874
- focusTrapElement.topReboundElement = createFocusTrapReboundElement(document);
21875
- focusTrapElement.bottomReboundElement = createFocusTrapReboundElement(document);
21876
- const parent = focusTrapElement.parentElement;
21877
- const sibling = focusTrapElement.nextSibling;
21878
- if (parent) {
21879
- parent.insertBefore(focusTrapElement.topReboundElement, focusTrapElement);
21880
- if (sibling) {
21881
- parent.insertBefore(focusTrapElement.bottomReboundElement, sibling);
21882
- }
21883
- else {
21884
- parent.appendChild(focusTrapElement.bottomReboundElement);
21885
- }
21886
- }
21887
- }
21888
- }
21889
- function removeReboundElementsFromFocusTrapElement(focusTrapElement) {
21890
- if (focusTrapElement) {
21891
- const parent = focusTrapElement.parentElement;
21892
- if (parent) {
21893
- const topRebound = focusTrapElement.topReboundElement;
21894
- const bottomRebound = focusTrapElement.bottomReboundElement;
21895
- if (topRebound) {
21896
- parent.removeChild(topRebound);
21897
- }
21898
- if (bottomRebound) {
21899
- parent.removeChild(bottomRebound);
21900
- }
21901
- }
21902
- // These are here to to make sure that we completely delete all traces of the removed DOM objects.
21903
- delete focusTrapElement.topReboundElement;
21904
- delete focusTrapElement.bottomReboundElement;
21905
- }
21906
- }
21907
- // this helper exists to enable the focus trap class to handle vanilla html elements
21908
- // it's primary concern is to keep TS happy.
21909
- function castHtmlElementToFocusTrapElement(el) {
21910
- return el;
21911
- }
21912
- class FocusTrap {
21913
- constructor(renderer, injector, platformId, hostElement) {
21914
- this.renderer = renderer;
21915
- this.active = false;
21916
- if (isPlatformBrowser(platformId)) {
21917
- this._document = injector.get(DOCUMENT);
21918
- }
21919
- hostElement = castHtmlElementToFocusTrapElement(hostElement);
21920
- if (!hostElement.focusTrapId) {
21921
- hostElement.focusTrapId = createId();
21922
- }
21923
- this.focusTrapElement = hostElement;
21924
- }
21925
- enableFocusTrap() {
21926
- const fte = this.focusTrapElement;
21927
- const firstFocusElement = fte.querySelector('[cds-first-focus]');
21928
- const activeEl = this._document.activeElement;
21929
- if (FocusTrapTrackerService.getCurrent() === fte) {
21930
- throw new Error('Focus trap is already enabled for this instance.');
21931
- }
21932
- this.firstFocusElement = firstFocusElement || this.focusTrapElement;
21933
- addReboundElementsToFocusTrapElement(this._document, fte);
21934
- if (!isFocusable(fte)) {
21935
- fte.setAttribute('tabindex', '-1');
21936
- }
21937
- if (activeEl && isHTMLElement(activeEl)) {
21938
- this.previousFocus = activeEl;
21939
- }
21940
- FocusTrapTrackerService.setCurrent(fte);
21941
- // setTimeout here is required for Safari which may try to set focus on
21942
- // element before it is visible...
21943
- const focusTimer = setTimeout(() => {
21944
- this.firstFocusElement.focus();
21945
- clearTimeout(focusTimer);
21946
- }, 10);
21947
- this.onFocusInEvent = this.onFocusIn.bind(this);
21948
- this.unlisten = this.renderer.listen(this._document, 'focusin', this.onFocusInEvent);
21949
- this.active = true;
21950
- }
21951
- removeFocusTrap() {
21952
- if (this.unlisten) {
21953
- this.unlisten();
21954
- }
21955
- removeReboundElementsFromFocusTrapElement(this.focusTrapElement);
21956
- this.renderer.removeAttribute(this.focusTrapElement, 'tabindex');
21957
- FocusTrapTrackerService.activatePreviousCurrent();
21958
- this.active = false;
21959
- if (this.previousFocus) {
21960
- this.previousFocus.focus();
21961
- }
21962
- }
21963
- onFocusIn(event) {
21964
- refocusIfOutsideFocusTrapElement(event.composedPath()[0], this.focusTrapElement, this.firstFocusElement);
21965
- }
21966
- }
21967
- FocusTrap.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusTrap, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable });
21968
- FocusTrap.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusTrap });
21969
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusTrap, decorators: [{
21970
- type: Injectable
21971
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.Injector }, { type: undefined }, { type: undefined }]; } });
21972
-
21973
20282
  /*
21974
20283
  * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
21975
20284
  * This software is released under MIT license.
@@ -21988,11 +20297,22 @@ const createCdsCloseButton = (document, ariaLabel) => {
21988
20297
  cdsCloseButton.className = 'clr-nav-close';
21989
20298
  return cdsCloseButton;
21990
20299
  };
21991
- class ClrNavLevel extends FocusTrap {
21992
- constructor(platformId, responsiveNavService, elementRef, renderer, injector) {
21993
- super(renderer, injector, platformId, elementRef.nativeElement);
20300
+ class StandaloneCdkTrapFocus extends CdkTrapFocus {
20301
+ }
20302
+ StandaloneCdkTrapFocus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: StandaloneCdkTrapFocus, deps: null, target: i0.ɵɵFactoryTarget.Directive });
20303
+ StandaloneCdkTrapFocus.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: StandaloneCdkTrapFocus, isStandalone: true, usesInheritance: true, ngImport: i0 });
20304
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: StandaloneCdkTrapFocus, decorators: [{
20305
+ type: Directive,
20306
+ args: [{
20307
+ standalone: true,
20308
+ }]
20309
+ }] });
20310
+ class ClrNavLevel {
20311
+ constructor(platformId, cdkTrapFocus, responsiveNavService, elementRef, renderer, injector) {
20312
+ this.cdkTrapFocus = cdkTrapFocus;
21994
20313
  this.responsiveNavService = responsiveNavService;
21995
20314
  this.elementRef = elementRef;
20315
+ this.renderer = renderer;
21996
20316
  this._isOpen = false;
21997
20317
  if (isPlatformBrowser(platformId)) {
21998
20318
  this._document = injector.get(DOCUMENT);
@@ -22012,6 +20332,7 @@ class ClrNavLevel extends FocusTrap {
22012
20332
  .subscribe(() => this.close()));
22013
20333
  }
22014
20334
  ngOnInit() {
20335
+ this.cdkTrapFocus.enabled = false;
22015
20336
  if (!this.closeButtonAriaLabel) {
22016
20337
  this.closeButtonAriaLabel =
22017
20338
  this._level === ResponsiveNavCodes.NAV_LEVEL_1
@@ -22069,14 +20390,14 @@ class ClrNavLevel extends FocusTrap {
22069
20390
  open() {
22070
20391
  this._isOpen = true;
22071
20392
  this.showNavigation();
22072
- this.enableFocusTrap();
20393
+ this.cdkTrapFocus.enabled = true;
22073
20394
  this.showCloseButton();
22074
20395
  this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_OPEN, this.level);
22075
20396
  }
22076
20397
  close() {
22077
20398
  this._isOpen = false;
22078
20399
  this.hideNavigation();
22079
- this.removeFocusTrap();
20400
+ this.cdkTrapFocus.enabled = false;
22080
20401
  this.hideCloseButton();
22081
20402
  this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_CLOSE, this.level);
22082
20403
  }
@@ -22121,17 +20442,18 @@ class ClrNavLevel extends FocusTrap {
22121
20442
  this._subscription.unsubscribe();
22122
20443
  }
22123
20444
  }
22124
- ClrNavLevel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrNavLevel, deps: [{ token: PLATFORM_ID }, { token: ResponsiveNavigationService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
22125
- ClrNavLevel.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: ClrNavLevel, selector: "[clr-nav-level]", inputs: { _level: ["clr-nav-level", "_level"], closeButtonAriaLabel: ["closeAriaLabel", "closeButtonAriaLabel"] }, host: { listeners: { "window:resize": "onResize($event)", "click": "onMouseClick($event.target)" } }, usesInheritance: true, ngImport: i0 });
20445
+ ClrNavLevel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrNavLevel, deps: [{ token: PLATFORM_ID }, { token: StandaloneCdkTrapFocus }, { token: ResponsiveNavigationService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
20446
+ ClrNavLevel.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: ClrNavLevel, selector: "[clr-nav-level]", inputs: { _level: ["clr-nav-level", "_level"], closeButtonAriaLabel: ["closeAriaLabel", "closeButtonAriaLabel"] }, host: { listeners: { "window:resize": "onResize($event)", "click": "onMouseClick($event.target)" } }, hostDirectives: [{ directive: StandaloneCdkTrapFocus }], ngImport: i0 });
22126
20447
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrNavLevel, decorators: [{
22127
20448
  type: Directive,
22128
20449
  args: [{
22129
20450
  selector: '[clr-nav-level]',
20451
+ hostDirectives: [StandaloneCdkTrapFocus],
22130
20452
  }]
22131
20453
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
22132
20454
  type: Inject,
22133
20455
  args: [PLATFORM_ID]
22134
- }] }, { type: ResponsiveNavigationService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }]; }, propDecorators: { _level: [{
20456
+ }] }, { type: StandaloneCdkTrapFocus }, { type: ResponsiveNavigationService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }]; }, propDecorators: { _level: [{
22135
20457
  type: Input,
22136
20458
  args: ['clr-nav-level']
22137
20459
  }], closeButtonAriaLabel: [{
@@ -23123,7 +21445,6 @@ class ClrVerticalNavGroup {
23123
21445
  this._navService = _navService;
23124
21446
  this.commonStrings = commonStrings;
23125
21447
  this.wasExpanded = false;
23126
- this.groupLabel = this.commonStrings.keys.verticalNavGroupToggle;
23127
21448
  this.expandedChange = new EventEmitter(true);
23128
21449
  this._subscriptions = [];
23129
21450
  this._expandAnimationState = COLLAPSED_STATE;
@@ -23233,7 +21554,7 @@ class ClrVerticalNavGroup {
23233
21554
  }
23234
21555
  }
23235
21556
  ClrVerticalNavGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrVerticalNavGroup, deps: [{ token: IfExpandService }, { token: VerticalNavGroupRegistrationService }, { token: VerticalNavGroupService }, { token: VerticalNavService }, { token: ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component });
23236
- ClrVerticalNavGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrVerticalNavGroup, selector: "clr-vertical-nav-group", inputs: { groupLabel: ["clrVerticalNavGroupLabel", "groupLabel"], userExpandedInput: ["clrVerticalNavGroupExpanded", "userExpandedInput"] }, outputs: { expandedChange: "clrVerticalNavGroupExpandedChange" }, host: { properties: { "class.is-expanded": "this.expanded" }, classAttribute: "nav-group" }, providers: [IfExpandService, VerticalNavGroupService], 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 class=\"nav-group-content\">\n <ng-content select=\"[clrVerticalNavLink]\"></ng-content>\n <button\n class=\"nav-group-trigger\"\n type=\"button\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-label]=\"groupLabel\"\n (click)=\"toggleExpand()\"\n >\n <ng-content select=\"[clrVerticalNavIcon]\"></ng-content>\n <div class=\"nav-group-text\">\n <ng-content></ng-content>\n </div>\n <cds-icon\n shape=\"angle\"\n class=\"nav-group-trigger-icon\"\n [attr.direction]=\"expanded ? 'down' : 'right'\"\n [attr.title]=\"expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n</div>\n<!--TODO: This animation needs to be added to the clr-vertical-nav-group-children component-->\n<div class=\"nav-group-children\" [@clrExpand]=\"expandAnimationState\" (@clrExpand.done)=\"expandAnimationDone($event)\">\n <ng-content select=\"[clrIfExpanded], clr-vertical-nav-group-children\"></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }], animations: [
21557
+ ClrVerticalNavGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrVerticalNavGroup, selector: "clr-vertical-nav-group", inputs: { userExpandedInput: ["clrVerticalNavGroupExpanded", "userExpandedInput"] }, outputs: { expandedChange: "clrVerticalNavGroupExpandedChange" }, host: { properties: { "class.is-expanded": "this.expanded" }, classAttribute: "nav-group" }, providers: [IfExpandService, VerticalNavGroupService], 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 class=\"nav-group-content\">\n <ng-content select=\"[clrVerticalNavLink]\"></ng-content>\n <button class=\"nav-group-trigger\" type=\"button\" [attr.aria-expanded]=\"expanded\" (click)=\"toggleExpand()\">\n <ng-content select=\"[clrVerticalNavIcon]\"></ng-content>\n <div class=\"nav-group-text\">\n <ng-content></ng-content>\n </div>\n <cds-icon\n shape=\"angle\"\n class=\"nav-group-trigger-icon\"\n [attr.direction]=\"expanded ? 'down' : 'right'\"\n [attr.title]=\"expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n</div>\n<!--TODO: This animation needs to be added to the clr-vertical-nav-group-children component-->\n<div class=\"nav-group-children\" [@clrExpand]=\"expandAnimationState\" (@clrExpand.done)=\"expandAnimationDone($event)\">\n <ng-content select=\"[clrIfExpanded], clr-vertical-nav-group-children\"></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }], animations: [
23237
21558
  trigger('clrExpand', [
23238
21559
  state(EXPANDED_STATE, style({ height: '*' })),
23239
21560
  state(COLLAPSED_STATE, style({ height: 0, visibility: 'hidden' })),
@@ -23248,13 +21569,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
23248
21569
  state(COLLAPSED_STATE, style({ height: 0, visibility: 'hidden' })),
23249
21570
  transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, animate('0.2s ease-in-out')),
23250
21571
  ]),
23251
- ], host: { class: 'nav-group' }, 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 class=\"nav-group-content\">\n <ng-content select=\"[clrVerticalNavLink]\"></ng-content>\n <button\n class=\"nav-group-trigger\"\n type=\"button\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-label]=\"groupLabel\"\n (click)=\"toggleExpand()\"\n >\n <ng-content select=\"[clrVerticalNavIcon]\"></ng-content>\n <div class=\"nav-group-text\">\n <ng-content></ng-content>\n </div>\n <cds-icon\n shape=\"angle\"\n class=\"nav-group-trigger-icon\"\n [attr.direction]=\"expanded ? 'down' : 'right'\"\n [attr.title]=\"expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n</div>\n<!--TODO: This animation needs to be added to the clr-vertical-nav-group-children component-->\n<div class=\"nav-group-children\" [@clrExpand]=\"expandAnimationState\" (@clrExpand.done)=\"expandAnimationDone($event)\">\n <ng-content select=\"[clrIfExpanded], clr-vertical-nav-group-children\"></ng-content>\n</div>\n" }]
21572
+ ], host: { class: 'nav-group' }, 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 class=\"nav-group-content\">\n <ng-content select=\"[clrVerticalNavLink]\"></ng-content>\n <button class=\"nav-group-trigger\" type=\"button\" [attr.aria-expanded]=\"expanded\" (click)=\"toggleExpand()\">\n <ng-content select=\"[clrVerticalNavIcon]\"></ng-content>\n <div class=\"nav-group-text\">\n <ng-content></ng-content>\n </div>\n <cds-icon\n shape=\"angle\"\n class=\"nav-group-trigger-icon\"\n [attr.direction]=\"expanded ? 'down' : 'right'\"\n [attr.title]=\"expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n</div>\n<!--TODO: This animation needs to be added to the clr-vertical-nav-group-children component-->\n<div class=\"nav-group-children\" [@clrExpand]=\"expandAnimationState\" (@clrExpand.done)=\"expandAnimationDone($event)\">\n <ng-content select=\"[clrIfExpanded], clr-vertical-nav-group-children\"></ng-content>\n</div>\n" }]
23252
21573
  }], ctorParameters: function () { return [{ type: IfExpandService }, { type: VerticalNavGroupRegistrationService }, { type: VerticalNavGroupService }, { type: VerticalNavService }, { type: ClrCommonStringsService }]; }, propDecorators: { expanded: [{
23253
21574
  type: HostBinding,
23254
21575
  args: ['class.is-expanded']
23255
- }], groupLabel: [{
23256
- type: Input,
23257
- args: ['clrVerticalNavGroupLabel']
23258
21576
  }], userExpandedInput: [{
23259
21577
  type: Input,
23260
21578
  args: ['clrVerticalNavGroupExpanded']
@@ -23449,15 +21767,13 @@ class ClrModal {
23449
21767
  this.closeButtonAriaLabel = this.commonStrings.keys.close;
23450
21768
  this.staticBackdrop = true;
23451
21769
  this.skipAnimation = 'false';
23452
- // presently this is only used by wizards
23453
- this.bypassScrollService = false;
23454
21770
  this.stopClose = false;
23455
21771
  this.altClose = new EventEmitter(false);
23456
21772
  this.labelledBy = this.modalId;
23457
21773
  }
23458
21774
  // Detect when _open is set to true and set no-scrolling to true
23459
21775
  ngOnChanges(changes) {
23460
- if (!this.bypassScrollService && changes && Object.prototype.hasOwnProperty.call(changes, '_open')) {
21776
+ if (changes && Object.prototype.hasOwnProperty.call(changes, '_open')) {
23461
21777
  if (changes._open.currentValue) {
23462
21778
  this._scrollingService.stopScrolling();
23463
21779
  }
@@ -23485,8 +21801,6 @@ class ClrModal {
23485
21801
  return;
23486
21802
  }
23487
21803
  this._open = false;
23488
- // SPECME
23489
- this.focusTrap.setPreviousFocus(); // Handles moving focus back to the element that had it before.
23490
21804
  }
23491
21805
  fadeDone(e) {
23492
21806
  if (e.toState === 'void') {
@@ -23496,7 +21810,7 @@ class ClrModal {
23496
21810
  }
23497
21811
  }
23498
21812
  ClrModal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrModal, deps: [{ token: ScrollingService }, { token: ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component });
23499
- ClrModal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", 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"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: FocusTrapDirective, selector: "[clrFocusTrap]", inputs: ["clrFocusTrap"] }, { kind: "directive", type: ClrFocusOnViewInit, selector: "[clrFocusOnViewInit]", inputs: ["clrFocusOnViewInit"] }], viewProviders: [ScrollingService], animations: [
21813
+ ClrModal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrModal, selector: "clr-modal", inputs: { _open: ["clrModalOpen", "_open"], closable: ["clrModalClosable", "closable"], closeButtonAriaLabel: ["clrModalCloseButtonAriaLabel", "closeButtonAriaLabel"], size: ["clrModalSize", "size"], staticBackdrop: ["clrModalStaticBackdrop", "staticBackdrop"], skipAnimation: ["clrModalSkipAnimation", "skipAnimation"], stopClose: ["clrModalPreventClose", "stopClose"], labelledBy: ["clrModalLabelledById", "labelledBy"] }, outputs: { _openChanged: "clrModalOpenChange", altClose: "clrModalAlternateClose" }, host: { listeners: { "body:keyup.escape": "close()" }, properties: { "class.open": "this._open" } }, 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 cdkTrapFocus 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"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]" }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: ClrFocusOnViewInit, selector: "[clrFocusOnViewInit]", inputs: ["clrFocusOnViewInit"] }], viewProviders: [ScrollingService], animations: [
23500
21814
  trigger('fadeDown', [
23501
21815
  transition('* => false', [style({ opacity: 0, transform: 'translate(0, -25%)' }), animate('0.2s ease-in-out')]),
23502
21816
  transition('false => *', [animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(0, -25%)' }))]),
@@ -23517,11 +21831,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
23517
21831
  transition('void => *', [style({ opacity: 0 }), animate('0.2s ease-in-out', style({ opacity: 0.85 }))]),
23518
21832
  transition('* => void', [animate('0.2s ease-in-out', style({ opacity: 0 }))]),
23519
21833
  ]),
23520
- ], 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"] }]
23521
- }], ctorParameters: function () { return [{ type: ScrollingService }, { type: ClrCommonStringsService }]; }, propDecorators: { focusTrap: [{
23522
- type: ViewChild,
23523
- args: [FocusTrapDirective]
23524
- }], _open: [{
21834
+ ], 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 cdkTrapFocus 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"] }]
21835
+ }], ctorParameters: function () { return [{ type: ScrollingService }, { type: ClrCommonStringsService }]; }, propDecorators: { _open: [{
23525
21836
  type: HostBinding,
23526
21837
  args: ['class.open']
23527
21838
  }, {
@@ -23545,9 +21856,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
23545
21856
  }], skipAnimation: [{
23546
21857
  type: Input,
23547
21858
  args: ['clrModalSkipAnimation']
23548
- }], bypassScrollService: [{
23549
- type: Input,
23550
- args: ['clrModalOverrideScrollService']
23551
21859
  }], stopClose: [{
23552
21860
  type: Input,
23553
21861
  args: ['clrModalPreventClose']
@@ -23636,12 +21944,12 @@ class ClrModalModule {
23636
21944
  }
23637
21945
  }
23638
21946
  ClrModalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
23639
- ClrModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: ClrModalModule, declarations: [ClrModal, ClrModalBody], imports: [CommonModule, ClrIconModule, ClrFocusTrapModule, ClrFocusOnViewInitModule], exports: [ClrModal, ClrModalBody, ClrIconModule, ClrFocusOnViewInitModule] });
23640
- ClrModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrModalModule, imports: [CommonModule, ClrIconModule, ClrFocusTrapModule, ClrFocusOnViewInitModule, ClrIconModule, ClrFocusOnViewInitModule] });
21947
+ ClrModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: ClrModalModule, declarations: [ClrModal, ClrModalBody], imports: [CommonModule, CdkTrapFocusModule, ClrIconModule, ClrFocusOnViewInitModule], exports: [ClrModal, ClrModalBody, ClrIconModule, ClrFocusOnViewInitModule] });
21948
+ ClrModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrModalModule, imports: [CommonModule, CdkTrapFocusModule, ClrIconModule, ClrFocusOnViewInitModule, ClrIconModule, ClrFocusOnViewInitModule] });
23641
21949
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrModalModule, decorators: [{
23642
21950
  type: NgModule,
23643
21951
  args: [{
23644
- imports: [CommonModule, ClrIconModule, ClrFocusTrapModule, ClrFocusOnViewInitModule],
21952
+ imports: [CommonModule, CdkTrapFocusModule, ClrIconModule, ClrFocusOnViewInitModule],
23645
21953
  declarations: [CLR_MODAL_DIRECTIVES],
23646
21954
  exports: [CLR_MODAL_DIRECTIVES, ClrIconModule, ClrFocusOnViewInitModule],
23647
21955
  }]
@@ -26605,13 +24913,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
26605
24913
  * The full license information can be found in LICENSE in the root directory of this project.
26606
24914
  */
26607
24915
  class ClrWizard {
26608
- constructor(platformId, navService, pageCollection, buttonService, headerActionService, elementRef, differs) {
24916
+ constructor(platformId, navService, pageCollection, buttonService, headerActionService, differs) {
26609
24917
  this.platformId = platformId;
26610
24918
  this.navService = navService;
26611
24919
  this.pageCollection = pageCollection;
26612
24920
  this.buttonService = buttonService;
26613
24921
  this.headerActionService = headerActionService;
26614
- this.elementRef = elementRef;
26615
24922
  /**
26616
24923
  * Set the modal size of the wizard. Set using `[clrWizardSize]` input.
26617
24924
  */
@@ -26627,13 +24934,6 @@ class ClrWizard {
26627
24934
  this._stopCancel = false;
26628
24935
  this._stopNavigation = false;
26629
24936
  this._disableStepnav = false;
26630
- /**
26631
- * Used to communicate to the underlying modal that animations are not
26632
- * wanted. Primary use is for the display of static/inline wizards.
26633
- * Set using `[clrWizardPreventModalAnimation]` input.
26634
- */
26635
- /** @deprecated since 3.0, input should be removed in 4.0 because is only related to inline wizards */
26636
- this._stopModalAnimations = false;
26637
24937
  /**
26638
24938
  * Emits when the wizard is opened or closed.
26639
24939
  * Listen via `(clrWizardOpenChange)` event.
@@ -26754,9 +25054,6 @@ class ClrWizard {
26754
25054
  get disableStepnav() {
26755
25055
  return this._disableStepnav;
26756
25056
  }
26757
- get stopModalAnimations() {
26758
- return this._stopModalAnimations ? 'true' : 'false';
26759
- }
26760
25057
  get currentPage() {
26761
25058
  return this.navService.currentPage;
26762
25059
  }
@@ -26769,13 +25066,9 @@ class ClrWizard {
26769
25066
  get isFirst() {
26770
25067
  return this.navService.currentPageIsFirst;
26771
25068
  }
26772
- get isStatic() {
26773
- return this.elementRef.nativeElement.classList.contains('clr-wizard--inline');
26774
- }
26775
25069
  ngAfterContentInit() {
26776
25070
  this.pageCollection.pages = this.pages;
26777
25071
  this.headerActionService.wizardHeaderActions = this.headerActions;
26778
- this.initializeButtons();
26779
25072
  }
26780
25073
  ngDoCheck() {
26781
25074
  this.updateNavOnPageChanges();
@@ -26977,12 +25270,6 @@ class ClrWizard {
26977
25270
  changes.forEachRemovedItem(() => this.navService.updateNavigation());
26978
25271
  }
26979
25272
  }
26980
- initializeButtons() {
26981
- // Only trigger buttons ready if default is open (inlined)
26982
- if (this._open) {
26983
- this.buttonService.buttonsReady = true;
26984
- }
26985
- }
26986
25273
  emitWizardFinished() {
26987
25274
  if (!this.stopNext) {
26988
25275
  this.forceFinish();
@@ -26990,8 +25277,8 @@ class ClrWizard {
26990
25277
  this.wizardFinished.emit();
26991
25278
  }
26992
25279
  }
26993
- ClrWizard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", 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 });
26994
- ClrWizard.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", 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", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ClrModal, selector: "clr-modal", inputs: ["clrModalOpen", "clrModalClosable", "clrModalCloseButtonAriaLabel", "clrModalSize", "clrModalStaticBackdrop", "clrModalSkipAnimation", "clrModalOverrideScrollService", "clrModalPreventClose", "clrModalLabelledById"], outputs: ["clrModalOpenChange", "clrModalAlternateClose"] }, { kind: "directive", type: ClrModalBody, selector: ".modal-body" }, { kind: "component", type: ClrWizardStepnav, selector: "clr-wizard-stepnav" }] });
25280
+ ClrWizard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrWizard, deps: [{ token: PLATFORM_ID }, { token: WizardNavigationService }, { token: PageCollectionService }, { token: ButtonHubService }, { token: HeaderActionService }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Component });
25281
+ ClrWizard.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", 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"] }, 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 [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", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ClrModal, selector: "clr-modal", inputs: ["clrModalOpen", "clrModalClosable", "clrModalCloseButtonAriaLabel", "clrModalSize", "clrModalStaticBackdrop", "clrModalSkipAnimation", "clrModalPreventClose", "clrModalLabelledById"], outputs: ["clrModalOpenChange", "clrModalAlternateClose"] }, { kind: "directive", type: ClrModalBody, selector: ".modal-body" }, { kind: "component", type: ClrWizardStepnav, selector: "clr-wizard-stepnav" }] });
26995
25282
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrWizard, decorators: [{
26996
25283
  type: Component,
26997
25284
  args: [{ selector: 'clr-wizard', providers: [WizardNavigationService, PageCollectionService, ButtonHubService, HeaderActionService], host: {
@@ -27000,11 +25287,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
27000
25287
  '[class.wizard-lg]': "size == 'lg'",
27001
25288
  '[class.wizard-xl]': "size == 'xl'",
27002
25289
  '[class.lastPage]': 'navService.currentPageIsLast',
27003
- }, 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" }]
25290
+ }, 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 [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" }]
27004
25291
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
27005
25292
  type: Inject,
27006
25293
  args: [PLATFORM_ID]
27007
- }] }, { type: WizardNavigationService }, { type: PageCollectionService }, { type: ButtonHubService }, { type: HeaderActionService }, { type: i0.ElementRef }, { type: i0.IterableDiffers }]; }, propDecorators: { size: [{
25294
+ }] }, { type: WizardNavigationService }, { type: PageCollectionService }, { type: ButtonHubService }, { type: HeaderActionService }, { type: i0.IterableDiffers }]; }, propDecorators: { size: [{
27008
25295
  type: Input,
27009
25296
  args: ['clrWizardSize']
27010
25297
  }], closable: [{
@@ -27028,9 +25315,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
27028
25315
  }], disableStepnav: [{
27029
25316
  type: Input,
27030
25317
  args: ['clrWizardDisableStepnav']
27031
- }], _stopModalAnimations: [{
27032
- type: Input,
27033
- args: ['clrWizardPreventModalAnimation']
27034
25318
  }], _openChanged: [{
27035
25319
  type: Output,
27036
25320
  args: ['clrWizardOpenChange']
@@ -27331,15 +25615,12 @@ ClarityModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version:
27331
25615
  ClrModalModule,
27332
25616
  ClrLoadingModule,
27333
25617
  ClrConditionalModule,
27334
- ClrFocusTrapModule,
27335
25618
  ClrFocusOnViewInitModule,
27336
- ClrForTypeAheadModule,
27337
25619
  ClrButtonModule,
27338
25620
  ClrFormsModule,
27339
25621
  ClrLayoutModule,
27340
25622
  ClrPopoverModule,
27341
25623
  ClrWizardModule,
27342
- ClrDragAndDropModule,
27343
25624
  ClrStepperModule,
27344
25625
  ClrSpinnerModule,
27345
25626
  ClrProgressBarModule,
@@ -27351,15 +25632,12 @@ ClarityModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version:
27351
25632
  ClrModalModule,
27352
25633
  ClrLoadingModule,
27353
25634
  ClrConditionalModule,
27354
- ClrFocusTrapModule,
27355
25635
  ClrFocusOnViewInitModule,
27356
- ClrForTypeAheadModule,
27357
25636
  ClrButtonModule,
27358
25637
  ClrFormsModule,
27359
25638
  ClrLayoutModule,
27360
25639
  ClrPopoverModule,
27361
25640
  ClrWizardModule,
27362
- ClrDragAndDropModule,
27363
25641
  ClrStepperModule,
27364
25642
  ClrSpinnerModule,
27365
25643
  ClrProgressBarModule,
@@ -27375,15 +25653,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
27375
25653
  ClrModalModule,
27376
25654
  ClrLoadingModule,
27377
25655
  ClrConditionalModule,
27378
- ClrFocusTrapModule,
27379
25656
  ClrFocusOnViewInitModule,
27380
- ClrForTypeAheadModule,
27381
25657
  ClrButtonModule,
27382
25658
  ClrFormsModule,
27383
25659
  ClrLayoutModule,
27384
25660
  ClrPopoverModule,
27385
25661
  ClrWizardModule,
27386
- ClrDragAndDropModule,
27387
25662
  ClrStepperModule,
27388
25663
  ClrSpinnerModule,
27389
25664
  ClrProgressBarModule,
@@ -27683,5 +25958,5 @@ const CLR_MENU_POSITIONS = [
27683
25958
  * Generated bundle index. Do not edit.
27684
25959
  */
27685
25960
 
27686
- 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 };
25961
+ export { CLR_ALERT_DIRECTIVES, CLR_BUTTON_GROUP_DIRECTIVES, CLR_DATAGRID_DIRECTIVES, CLR_DATEPICKER_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, 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, ClrDropdown, ClrDropdownItem, ClrDropdownMenu, ClrDropdownModule, ClrDropdownTrigger, ClrEmphasisModule, ClrExpandableAnimation, ClrFocusOnViewInit, ClrFocusOnViewInitModule, ClrForm, ClrFormLayout, ClrFormsModule, ClrHeader, ClrIconCustomTag, ClrIconModule, ClrIfActive, ClrIfDetail, 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, 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, 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, StepperOompaLoompa as ÇlrStepperOompaLoompa, StepperWillyWonka as ÇlrStepperWillyWonka, TabsWillyWonka as ÇlrTabsWillyWonka, WrappedCell as ÇlrWrappedCell, WrappedColumn as ÇlrWrappedColumn, WrappedRow as ÇlrWrappedRow };
27687
25962
  //# sourceMappingURL=clr-angular.mjs.map