@clr/angular 15.0.0-beta.2 → 15.0.0-beta.4
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.
- package/clarity.api.md +166 -496
- package/clr-angular.module.d.ts +12 -15
- package/data/datagrid/datagrid-column.d.ts +1 -22
- package/data/datagrid/datagrid-detail.d.ts +1 -1
- package/data/datagrid/datagrid-pagination.d.ts +2 -2
- package/data/datagrid/datagrid.module.d.ts +13 -13
- package/data/stack-view/index.d.ts +0 -2
- package/data/stack-view/stack-block.d.ts +1 -17
- package/data/stack-view/stack-view.d.ts +1 -11
- package/data/stack-view/stack-view.module.d.ts +5 -7
- package/data/tree-view/tree-node.d.ts +8 -7
- package/esm2020/accordion/accordion-panel.mjs +3 -3
- package/esm2020/accordion/stepper/stepper-panel.mjs +3 -3
- package/esm2020/clr-angular.module.mjs +1 -13
- package/esm2020/data/datagrid/datagrid-action-overflow.mjs +10 -10
- package/esm2020/data/datagrid/datagrid-column-separator.mjs +20 -18
- package/esm2020/data/datagrid/datagrid-column-toggle.mjs +14 -14
- package/esm2020/data/datagrid/datagrid-column.mjs +2 -48
- package/esm2020/data/datagrid/datagrid-detail.mjs +12 -10
- package/esm2020/data/datagrid/datagrid-filter.mjs +10 -10
- package/esm2020/data/datagrid/datagrid-page-size.mjs +6 -5
- package/esm2020/data/datagrid/datagrid-pagination.mjs +10 -5
- package/esm2020/data/datagrid/datagrid-row-detail.mjs +7 -8
- package/esm2020/data/datagrid/datagrid.module.mjs +9 -9
- package/esm2020/data/stack-view/index.mjs +1 -3
- package/esm2020/data/stack-view/stack-block.mjs +2 -8
- package/esm2020/data/stack-view/stack-header.mjs +2 -23
- package/esm2020/data/stack-view/stack-view.mjs +4 -28
- package/esm2020/data/stack-view/stack-view.module.mjs +3 -23
- package/esm2020/data/tree-view/tree-node.mjs +45 -39
- package/esm2020/forms/combobox/combobox.mjs +3 -3
- package/esm2020/forms/combobox/providers/combobox-focus-handler.service.mjs +11 -11
- package/esm2020/forms/datepicker/calendar.mjs +8 -7
- package/esm2020/forms/datepicker/date-container.mjs +12 -12
- package/esm2020/forms/datepicker/datepicker.module.mjs +5 -5
- package/esm2020/forms/datepicker/monthpicker.mjs +8 -7
- package/esm2020/forms/datepicker/yearpicker.mjs +8 -7
- package/esm2020/layout/nav/nav-level.mjs +23 -10
- package/esm2020/layout/tabs/tabs.mjs +3 -3
- package/esm2020/layout/vertical-nav/vertical-nav-group.mjs +3 -7
- package/esm2020/modal/modal.mjs +8 -19
- package/esm2020/modal/modal.module.mjs +5 -5
- package/esm2020/popover/common/abstract-popover.mjs +4 -3
- package/esm2020/popover/dropdown/dropdown-item.mjs +30 -33
- package/esm2020/popover/dropdown/providers/dropdown-focus-handler.service.mjs +6 -6
- package/esm2020/popover/tooltip/providers/tooltip-mouse.service.mjs +43 -0
- package/esm2020/popover/tooltip/tooltip-content.mjs +20 -6
- package/esm2020/popover/tooltip/tooltip-trigger.mjs +21 -13
- package/esm2020/popover/tooltip/tooltip.mjs +14 -3
- package/esm2020/utils/cdk/cdk-drag.module.mjs +37 -0
- package/esm2020/utils/cdk/cdk-trap-focus.module.mjs +37 -0
- package/esm2020/utils/enums/keys.enum.mjs +30 -0
- package/esm2020/utils/focus/key-focus/key-focus.mjs +13 -13
- package/esm2020/utils/focus/key-focus/roving-tabindex.mjs +4 -4
- package/esm2020/utils/focus/key-focus/util.mjs +17 -20
- package/esm2020/utils/i18n/common-strings.default.mjs +1 -3
- package/esm2020/utils/i18n/common-strings.interface.mjs +1 -1
- package/esm2020/utils/index.mjs +1 -5
- package/esm2020/wizard/wizard.mjs +6 -30
- package/fesm2015/clr-angular.mjs +404 -2086
- package/fesm2015/clr-angular.mjs.map +1 -1
- package/fesm2020/clr-angular.mjs +398 -2076
- package/fesm2020/clr-angular.mjs.map +1 -1
- package/forms/datepicker/datepicker.module.d.ts +6 -6
- package/layout/nav/nav-level.d.ts +12 -4
- package/layout/vertical-nav/vertical-nav-group.d.ts +1 -2
- package/modal/modal.d.ts +1 -4
- package/modal/modal.module.d.ts +3 -3
- package/package.json +2 -1
- package/popover/dropdown/dropdown-item.d.ts +7 -13
- package/popover/tooltip/providers/tooltip-mouse.service.d.ts +15 -0
- package/popover/tooltip/tooltip-content.d.ts +6 -2
- package/popover/tooltip/tooltip-trigger.d.ts +6 -2
- package/src/utils/popover/README.md +1 -1
- package/utils/cdk/cdk-drag.module.d.ts +17 -0
- package/utils/cdk/cdk-trap-focus.module.d.ts +17 -0
- package/utils/enums/{key-codes.enum.d.ts → keys.enum.d.ts} +3 -7
- package/utils/focus/key-focus/util.d.ts +1 -1
- package/utils/i18n/common-strings.interface.d.ts +0 -18
- package/utils/index.d.ts +0 -4
- package/wizard/wizard.d.ts +2 -13
- package/data/stack-view/stack-control.d.ts +0 -16
- package/data/stack-view/stack-input.d.ts +0 -10
- package/data/stack-view/stack-select.d.ts +0 -9
- package/esm2020/data/stack-view/stack-control.mjs +0 -34
- package/esm2020/data/stack-view/stack-input.mjs +0 -42
- package/esm2020/data/stack-view/stack-select.mjs +0 -48
- package/esm2020/utils/a11y/aria-live.service.mjs +0 -163
- package/esm2020/utils/a11y/index.mjs +0 -7
- package/esm2020/utils/drag-and-drop/drag-and-drop.module.mjs +0 -42
- package/esm2020/utils/drag-and-drop/drag-event.mjs +0 -16
- package/esm2020/utils/drag-and-drop/drag-handle.mjs +0 -35
- package/esm2020/utils/drag-and-drop/draggable/draggable.mjs +0 -135
- package/esm2020/utils/drag-and-drop/draggable-ghost.mjs +0 -124
- package/esm2020/utils/drag-and-drop/droppable/droppable.mjs +0 -222
- package/esm2020/utils/drag-and-drop/if-dragged.mjs +0 -47
- package/esm2020/utils/drag-and-drop/index.mjs +0 -14
- package/esm2020/utils/drag-and-drop/interfaces/drag-event.interface.mjs +0 -15
- package/esm2020/utils/drag-and-drop/interfaces/drop-tolerance.interface.mjs +0 -7
- package/esm2020/utils/drag-and-drop/providers/drag-and-drop-event-bus.service.mjs +0 -54
- package/esm2020/utils/drag-and-drop/providers/drag-event-listener.service.mjs +0 -179
- package/esm2020/utils/drag-and-drop/providers/drag-handle-registrar.service.mjs +0 -60
- package/esm2020/utils/drag-and-drop/providers/draggable-snapshot.service.mjs +0 -38
- package/esm2020/utils/drag-and-drop/providers/global-drag-mode.service.mjs +0 -26
- package/esm2020/utils/enums/key-codes.enum.mjs +0 -34
- package/esm2020/utils/focus-trap/focus-trap-config.interface.mjs +0 -7
- package/esm2020/utils/focus-trap/focus-trap-tracker.service.mjs +0 -32
- package/esm2020/utils/focus-trap/focus-trap.directive.mjs +0 -158
- package/esm2020/utils/focus-trap/focus-trap.mjs +0 -141
- package/esm2020/utils/focus-trap/focus-trap.module.mjs +0 -24
- package/esm2020/utils/focus-trap/index.mjs +0 -9
- package/esm2020/utils/for-type-ahead/for-type-ahead.mjs +0 -54
- package/esm2020/utils/for-type-ahead/for-type-ahead.module.mjs +0 -23
- package/esm2020/utils/for-type-ahead/for-type-ahead.service.mjs +0 -29
- package/esm2020/utils/for-type-ahead/index.mjs +0 -8
- package/esm2020/utils/key-codes/key-codes.mjs +0 -16
- package/utils/a11y/aria-live.service.d.ts +0 -93
- package/utils/a11y/index.d.ts +0 -1
- package/utils/drag-and-drop/drag-and-drop.module.d.ts +0 -14
- package/utils/drag-and-drop/drag-event.d.ts +0 -8
- package/utils/drag-and-drop/drag-handle.d.ts +0 -11
- package/utils/drag-and-drop/draggable/draggable.d.ts +0 -36
- package/utils/drag-and-drop/draggable-ghost.d.ts +0 -30
- package/utils/drag-and-drop/droppable/droppable.d.ts +0 -42
- package/utils/drag-and-drop/if-dragged.d.ts +0 -13
- package/utils/drag-and-drop/index.d.ts +0 -8
- package/utils/drag-and-drop/interfaces/drag-event.interface.d.ts +0 -22
- package/utils/drag-and-drop/interfaces/drop-tolerance.interface.d.ts +0 -6
- package/utils/drag-and-drop/providers/drag-and-drop-event-bus.service.d.ts +0 -16
- package/utils/drag-and-drop/providers/drag-event-listener.service.d.ts +0 -39
- package/utils/drag-and-drop/providers/drag-handle-registrar.service.d.ts +0 -18
- package/utils/drag-and-drop/providers/draggable-snapshot.service.d.ts +0 -16
- package/utils/drag-and-drop/providers/global-drag-mode.service.d.ts +0 -10
- package/utils/focus-trap/focus-trap-config.interface.d.ts +0 -3
- package/utils/focus-trap/focus-trap-tracker.service.d.ts +0 -12
- package/utils/focus-trap/focus-trap.d.ts +0 -29
- package/utils/focus-trap/focus-trap.directive.d.ts +0 -38
- package/utils/focus-trap/focus-trap.module.d.ts +0 -10
- package/utils/focus-trap/index.d.ts +0 -3
- package/utils/for-type-ahead/for-type-ahead.d.ts +0 -15
- package/utils/for-type-ahead/for-type-ahead.module.d.ts +0 -8
- package/utils/for-type-ahead/for-type-ahead.service.d.ts +0 -11
- package/utils/for-type-ahead/index.d.ts +0 -2
- package/utils/key-codes/key-codes.d.ts +0 -10
package/fesm2020/clr-angular.mjs
CHANGED
|
@@ -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
|
|
|
@@ -312,7 +313,6 @@ const commonStringsDefault = {
|
|
|
312
313
|
alertCloseButtonAriaLabel: 'Close alert',
|
|
313
314
|
// Date Picker
|
|
314
315
|
datepickerDialogLabel: 'Choose date',
|
|
315
|
-
datepickerToggle: 'Toggle datepicker',
|
|
316
316
|
datepickerToggleChooseDateLabel: 'Choose date',
|
|
317
317
|
datepickerToggleChangeDateLabel: 'Change date, {SELECTED_DATE}',
|
|
318
318
|
datepickerPreviousMonth: 'Previous month',
|
|
@@ -332,7 +332,6 @@ const commonStringsDefault = {
|
|
|
332
332
|
responsiveNavOverflowOpen: 'Navigation overflow menu',
|
|
333
333
|
responsiveNavOverflowClose: 'Navigation overflow menu',
|
|
334
334
|
//Vertical Nav
|
|
335
|
-
verticalNavGroupToggle: 'Toggle vertical navigation group',
|
|
336
335
|
verticalNavToggle: 'Toggle vertical navigation',
|
|
337
336
|
// Timeline steps
|
|
338
337
|
timelineStepNotStarted: 'Not started',
|
|
@@ -596,10 +595,10 @@ class ClrAccordionPanel {
|
|
|
596
595
|
}
|
|
597
596
|
}
|
|
598
597
|
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
|
|
598
|
+
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
599
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrAccordionPanel, decorators: [{
|
|
601
600
|
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
|
|
601
|
+
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
602
|
}], ctorParameters: function () { return [{ type: ClrCommonStringsService }, { type: AccordionService }, { type: IfExpandService }]; }, propDecorators: { disabled: [{
|
|
604
603
|
type: Input,
|
|
605
604
|
args: ['clrAccordionPanelDisabled']
|
|
@@ -1091,10 +1090,10 @@ class ClrStepperPanel extends ClrAccordionPanel {
|
|
|
1091
1090
|
}
|
|
1092
1091
|
}
|
|
1093
1092
|
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
|
|
1093
|
+
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
1094
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStepperPanel, decorators: [{
|
|
1096
1095
|
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
|
|
1096
|
+
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
1097
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
1099
1098
|
type: Inject,
|
|
1100
1099
|
args: [PLATFORM_ID]
|
|
@@ -1318,69 +1317,62 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
1318
1317
|
* This software is released under MIT license.
|
|
1319
1318
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1320
1319
|
*/
|
|
1321
|
-
var
|
|
1322
|
-
(function (
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
})(
|
|
1336
|
-
var
|
|
1337
|
-
(function (
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
IEKeyCodes["End"] = "End";
|
|
1346
|
-
IEKeyCodes["Enter"] = "Enter";
|
|
1347
|
-
IEKeyCodes["Tab"] = "Tab";
|
|
1348
|
-
})(IEKeyCodes || (IEKeyCodes = {}));
|
|
1320
|
+
var Keys;
|
|
1321
|
+
(function (Keys) {
|
|
1322
|
+
Keys["ArrowLeft"] = "ArrowLeft";
|
|
1323
|
+
Keys["ArrowUp"] = "ArrowUp";
|
|
1324
|
+
Keys["ArrowRight"] = "ArrowRight";
|
|
1325
|
+
Keys["ArrowDown"] = "ArrowDown";
|
|
1326
|
+
Keys["Backspace"] = "Backspace";
|
|
1327
|
+
Keys["Tab"] = "Tab";
|
|
1328
|
+
Keys["Enter"] = "Enter";
|
|
1329
|
+
Keys["Escape"] = "Escape";
|
|
1330
|
+
Keys["Space"] = "Space";
|
|
1331
|
+
Keys["Spacebar"] = " ";
|
|
1332
|
+
Keys["Home"] = "Home";
|
|
1333
|
+
Keys["End"] = "End";
|
|
1334
|
+
})(Keys || (Keys = {}));
|
|
1335
|
+
var IEKeys;
|
|
1336
|
+
(function (IEKeys) {
|
|
1337
|
+
IEKeys["ArrowUp"] = "Up";
|
|
1338
|
+
IEKeys["ArrowDown"] = "Down";
|
|
1339
|
+
IEKeys["ArrowRight"] = "Right";
|
|
1340
|
+
IEKeys["ArrowLeft"] = "Left";
|
|
1341
|
+
IEKeys["Space"] = "Spacebar";
|
|
1342
|
+
IEKeys["Escape"] = "Esc";
|
|
1343
|
+
})(IEKeys || (IEKeys = {}));
|
|
1349
1344
|
|
|
1350
1345
|
/*
|
|
1351
1346
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
1352
1347
|
* This software is released under MIT license.
|
|
1353
1348
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1354
1349
|
*/
|
|
1355
|
-
function
|
|
1356
|
-
if (key ===
|
|
1357
|
-
return
|
|
1350
|
+
function normalizeKey(key) {
|
|
1351
|
+
if (key === Keys.ArrowUp || key === IEKeys.ArrowUp) {
|
|
1352
|
+
return Keys.ArrowUp;
|
|
1358
1353
|
}
|
|
1359
|
-
else if (key ===
|
|
1360
|
-
return
|
|
1354
|
+
else if (key === Keys.ArrowDown || key === IEKeys.ArrowDown) {
|
|
1355
|
+
return Keys.ArrowDown;
|
|
1361
1356
|
}
|
|
1362
|
-
else if (key ===
|
|
1363
|
-
return
|
|
1357
|
+
else if (key === Keys.ArrowRight || key === IEKeys.ArrowRight) {
|
|
1358
|
+
return Keys.ArrowRight;
|
|
1364
1359
|
}
|
|
1365
|
-
else if (key ===
|
|
1366
|
-
return
|
|
1360
|
+
else if (key === Keys.ArrowLeft || key === IEKeys.ArrowLeft) {
|
|
1361
|
+
return Keys.ArrowLeft;
|
|
1367
1362
|
}
|
|
1368
|
-
else if (key ===
|
|
1369
|
-
return
|
|
1363
|
+
else if (key === Keys.Space || key === IEKeys.Space) {
|
|
1364
|
+
return Keys.Space;
|
|
1370
1365
|
}
|
|
1371
|
-
else if (key ===
|
|
1372
|
-
return
|
|
1366
|
+
else if (key === Keys.Escape || key === IEKeys.Escape) {
|
|
1367
|
+
return Keys.Escape;
|
|
1373
1368
|
}
|
|
1374
1369
|
else {
|
|
1375
1370
|
return key;
|
|
1376
1371
|
}
|
|
1377
1372
|
}
|
|
1378
1373
|
function preventArrowKeyScroll(event) {
|
|
1379
|
-
const
|
|
1380
|
-
if (
|
|
1381
|
-
validKey === KeyCodes.ArrowDown ||
|
|
1382
|
-
validKey === KeyCodes.ArrowLeft ||
|
|
1383
|
-
validKey === KeyCodes.ArrowRight) {
|
|
1374
|
+
const key = normalizeKey(event.key);
|
|
1375
|
+
if (key === Keys.ArrowUp || key === Keys.ArrowDown || key === Keys.ArrowLeft || key === Keys.ArrowRight) {
|
|
1384
1376
|
// prevent element container scroll
|
|
1385
1377
|
// MDN references this is really the only way to prevent native browser interactions
|
|
1386
1378
|
// https://developer.mozilla.org/en-US/docs/Web/Accessibility/Keyboard-navigable_JavaScript_widgets
|
|
@@ -4959,10 +4951,10 @@ class ClrKeyFocus {
|
|
|
4959
4951
|
else if (this.nextKeyPressed(event) && this.currentFocusIsNotLastItem()) {
|
|
4960
4952
|
this.moveTo(this.current + 1);
|
|
4961
4953
|
}
|
|
4962
|
-
else if (event.code ===
|
|
4954
|
+
else if (event.code === Keys.Home) {
|
|
4963
4955
|
this.moveTo(0);
|
|
4964
4956
|
}
|
|
4965
|
-
else if (event.code ===
|
|
4957
|
+
else if (event.code === Keys.End) {
|
|
4966
4958
|
this.moveTo(this.focusableItems.length - 1);
|
|
4967
4959
|
}
|
|
4968
4960
|
preventArrowKeyScroll(event);
|
|
@@ -5010,27 +5002,27 @@ class ClrKeyFocus {
|
|
|
5010
5002
|
});
|
|
5011
5003
|
}
|
|
5012
5004
|
nextKeyPressed(event) {
|
|
5013
|
-
const key =
|
|
5005
|
+
const key = normalizeKey(event.key);
|
|
5014
5006
|
switch (this.direction) {
|
|
5015
5007
|
case ClrFocusDirection.VERTICAL:
|
|
5016
|
-
return key ===
|
|
5008
|
+
return key === Keys.ArrowDown;
|
|
5017
5009
|
case ClrFocusDirection.HORIZONTAL:
|
|
5018
|
-
return key ===
|
|
5010
|
+
return key === Keys.ArrowRight;
|
|
5019
5011
|
case ClrFocusDirection.BOTH:
|
|
5020
|
-
return key ===
|
|
5012
|
+
return key === Keys.ArrowDown || key === Keys.ArrowRight;
|
|
5021
5013
|
default:
|
|
5022
5014
|
return false;
|
|
5023
5015
|
}
|
|
5024
5016
|
}
|
|
5025
5017
|
prevKeyPressed(event) {
|
|
5026
|
-
const key =
|
|
5018
|
+
const key = normalizeKey(event.key);
|
|
5027
5019
|
switch (this.direction) {
|
|
5028
5020
|
case ClrFocusDirection.VERTICAL:
|
|
5029
|
-
return key ===
|
|
5021
|
+
return key === Keys.ArrowUp;
|
|
5030
5022
|
case ClrFocusDirection.HORIZONTAL:
|
|
5031
|
-
return key ===
|
|
5023
|
+
return key === Keys.ArrowLeft;
|
|
5032
5024
|
case ClrFocusDirection.BOTH:
|
|
5033
|
-
return key ===
|
|
5025
|
+
return key === Keys.ArrowUp || key === Keys.ArrowLeft;
|
|
5034
5026
|
default:
|
|
5035
5027
|
return false;
|
|
5036
5028
|
}
|
|
@@ -5098,10 +5090,10 @@ class ClrRovingTabindex extends ClrKeyFocus {
|
|
|
5098
5090
|
else if (this.nextKeyPressed(event) && this.currentFocusIsNotLastItem()) {
|
|
5099
5091
|
this.updateTabindex(this.current + 1);
|
|
5100
5092
|
}
|
|
5101
|
-
else if (event.code ===
|
|
5093
|
+
else if (event.code === Keys.Home) {
|
|
5102
5094
|
this.updateTabindex(0);
|
|
5103
5095
|
}
|
|
5104
|
-
else if (event.code ===
|
|
5096
|
+
else if (event.code === Keys.End) {
|
|
5105
5097
|
this.updateTabindex(this.focusableItems.length - 1);
|
|
5106
5098
|
}
|
|
5107
5099
|
super.handleKeyboardEvent(event);
|
|
@@ -5295,22 +5287,6 @@ const FOCUS_SERVICE_PROVIDER = {
|
|
|
5295
5287
|
deps: [[new Optional(), new SkipSelf(), FocusService$1], Renderer2],
|
|
5296
5288
|
};
|
|
5297
5289
|
|
|
5298
|
-
/*
|
|
5299
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
5300
|
-
* This software is released under MIT license.
|
|
5301
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
5302
|
-
*/
|
|
5303
|
-
const UP_ARROW = 38;
|
|
5304
|
-
const DOWN_ARROW = 40;
|
|
5305
|
-
const RIGHT_ARROW = 39;
|
|
5306
|
-
const LEFT_ARROW = 37;
|
|
5307
|
-
const ENTER = 13;
|
|
5308
|
-
const SPACE = 32;
|
|
5309
|
-
const SHIFT = 16;
|
|
5310
|
-
const TAB = 9;
|
|
5311
|
-
const ESC = 27;
|
|
5312
|
-
const BACKSPACE = 8;
|
|
5313
|
-
|
|
5314
5290
|
/*
|
|
5315
5291
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
5316
5292
|
* This software is released under MIT license.
|
|
@@ -5762,10 +5738,10 @@ class ComboboxFocusHandler {
|
|
|
5762
5738
|
// this service is only interested in keys that may move the focus
|
|
5763
5739
|
handleTextInput(event) {
|
|
5764
5740
|
let preventDefault = false;
|
|
5765
|
-
const key =
|
|
5741
|
+
const key = normalizeKey(event.key);
|
|
5766
5742
|
if (event) {
|
|
5767
5743
|
switch (key) {
|
|
5768
|
-
case
|
|
5744
|
+
case Keys.Enter:
|
|
5769
5745
|
if (this.toggleService.open && this.pseudoFocus.model) {
|
|
5770
5746
|
if (this.selectionService.multiselectable) {
|
|
5771
5747
|
this.selectionService.toggle(this.pseudoFocus.model.value);
|
|
@@ -5776,27 +5752,27 @@ class ComboboxFocusHandler {
|
|
|
5776
5752
|
preventDefault = true;
|
|
5777
5753
|
}
|
|
5778
5754
|
break;
|
|
5779
|
-
case
|
|
5755
|
+
case Keys.Space:
|
|
5780
5756
|
if (!this.toggleService.open) {
|
|
5781
5757
|
this.toggleService.open = true;
|
|
5782
5758
|
preventDefault = true;
|
|
5783
5759
|
}
|
|
5784
5760
|
break;
|
|
5785
|
-
case
|
|
5761
|
+
case Keys.ArrowUp:
|
|
5786
5762
|
this.preventViewportScrolling(event);
|
|
5787
5763
|
this.openAndMoveTo(ArrowKeyDirection.UP);
|
|
5788
5764
|
preventDefault = true;
|
|
5789
5765
|
break;
|
|
5790
|
-
case
|
|
5766
|
+
case Keys.ArrowDown:
|
|
5791
5767
|
this.preventViewportScrolling(event);
|
|
5792
5768
|
this.openAndMoveTo(ArrowKeyDirection.DOWN);
|
|
5793
5769
|
preventDefault = true;
|
|
5794
5770
|
break;
|
|
5795
5771
|
default:
|
|
5796
5772
|
// Any other keypress
|
|
5797
|
-
if (event.key !==
|
|
5798
|
-
!(this.selectionService.multiselectable && event.key ===
|
|
5799
|
-
!(event.key ===
|
|
5773
|
+
if (event.key !== Keys.Tab &&
|
|
5774
|
+
!(this.selectionService.multiselectable && event.key === Keys.Backspace) &&
|
|
5775
|
+
!(event.key === Keys.Escape) &&
|
|
5800
5776
|
!this.toggleService.open) {
|
|
5801
5777
|
this.toggleService.open = true;
|
|
5802
5778
|
}
|
|
@@ -6243,7 +6219,7 @@ class ClrCombobox extends WrappedFormControl {
|
|
|
6243
6219
|
}
|
|
6244
6220
|
onKeyUp(event) {
|
|
6245
6221
|
// if BACKSPACE in multiselect mode, delete the last pill if text is empty
|
|
6246
|
-
if (event.
|
|
6222
|
+
if (event.key === Keys.Backspace && this.multiSelect && this._searchText.length === 0) {
|
|
6247
6223
|
const multiModel = this.optionSelectionService.selectionModel.model;
|
|
6248
6224
|
if (multiModel && multiModel.length > 0) {
|
|
6249
6225
|
const lastItem = multiModel[multiModel.length - 1];
|
|
@@ -6985,202 +6961,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
6985
6961
|
* This software is released under MIT license.
|
|
6986
6962
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
6987
6963
|
*/
|
|
6988
|
-
|
|
6989
|
-
|
|
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.
|
|
6964
|
+
/**
|
|
6965
|
+
* This is just a copy of CdkTrapFocus so it can be used independent of the rest of the A11yModule.
|
|
7017
6966
|
*/
|
|
7018
|
-
|
|
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
|
-
}
|
|
6967
|
+
class CdkTrapFocusModule_CdkTrapFocus extends CdkTrapFocus {
|
|
7148
6968
|
}
|
|
7149
|
-
|
|
7150
|
-
|
|
7151
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type:
|
|
6969
|
+
CdkTrapFocusModule_CdkTrapFocus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkTrapFocusModule_CdkTrapFocus, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
6970
|
+
CdkTrapFocusModule_CdkTrapFocus.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]", usesInheritance: true, ngImport: i0 });
|
|
6971
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkTrapFocusModule_CdkTrapFocus, decorators: [{
|
|
7152
6972
|
type: Directive,
|
|
7153
6973
|
args: [{
|
|
7154
|
-
selector: '[
|
|
6974
|
+
selector: '[cdkTrapFocus]',
|
|
7155
6975
|
}]
|
|
7156
|
-
}]
|
|
7157
|
-
|
|
7158
|
-
|
|
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.
|
|
6976
|
+
}] });
|
|
6977
|
+
/**
|
|
6978
|
+
* This module allows us to avoid importing all of A11yModule which results in a smaller application bundle.
|
|
7171
6979
|
*/
|
|
7172
|
-
|
|
7173
|
-
class ClrFocusTrapModule {
|
|
6980
|
+
class CdkTrapFocusModule {
|
|
7174
6981
|
}
|
|
7175
|
-
|
|
7176
|
-
|
|
7177
|
-
|
|
7178
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type:
|
|
6982
|
+
CdkTrapFocusModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkTrapFocusModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
6983
|
+
CdkTrapFocusModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: CdkTrapFocusModule, declarations: [CdkTrapFocusModule_CdkTrapFocus], exports: [CdkTrapFocusModule_CdkTrapFocus] });
|
|
6984
|
+
CdkTrapFocusModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkTrapFocusModule });
|
|
6985
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkTrapFocusModule, decorators: [{
|
|
7179
6986
|
type: NgModule,
|
|
7180
6987
|
args: [{
|
|
7181
|
-
|
|
7182
|
-
|
|
7183
|
-
exports: [FOCUS_TRAP_DIRECTIVES],
|
|
6988
|
+
declarations: [CdkTrapFocusModule_CdkTrapFocus],
|
|
6989
|
+
exports: [CdkTrapFocusModule_CdkTrapFocus],
|
|
7184
6990
|
}]
|
|
7185
6991
|
}] });
|
|
7186
6992
|
|
|
@@ -8181,20 +7987,20 @@ class ClrCalendar {
|
|
|
8181
7987
|
*/
|
|
8182
7988
|
onKeyDown(event) {
|
|
8183
7989
|
if (event && this.focusedDay) {
|
|
8184
|
-
switch (event.
|
|
8185
|
-
case
|
|
7990
|
+
switch (normalizeKey(event.key)) {
|
|
7991
|
+
case Keys.ArrowUp:
|
|
8186
7992
|
event.preventDefault();
|
|
8187
7993
|
this._dateNavigationService.incrementFocusDay(-1 * NO_OF_DAYS_IN_A_WEEK);
|
|
8188
7994
|
break;
|
|
8189
|
-
case
|
|
7995
|
+
case Keys.ArrowDown:
|
|
8190
7996
|
event.preventDefault();
|
|
8191
7997
|
this._dateNavigationService.incrementFocusDay(NO_OF_DAYS_IN_A_WEEK);
|
|
8192
7998
|
break;
|
|
8193
|
-
case
|
|
7999
|
+
case Keys.ArrowLeft:
|
|
8194
8000
|
event.preventDefault();
|
|
8195
8001
|
this._dateNavigationService.incrementFocusDay(-1);
|
|
8196
8002
|
break;
|
|
8197
|
-
case
|
|
8003
|
+
case Keys.ArrowRight:
|
|
8198
8004
|
event.preventDefault();
|
|
8199
8005
|
this._dateNavigationService.incrementFocusDay(1);
|
|
8200
8006
|
break;
|
|
@@ -8377,23 +8183,23 @@ class ClrMonthpicker {
|
|
|
8377
8183
|
// the logic is fairly simple and it didn't make sense for me
|
|
8378
8184
|
// to create extra observables just to move this logic to the service.
|
|
8379
8185
|
if (event) {
|
|
8380
|
-
const
|
|
8381
|
-
if (
|
|
8186
|
+
const key = normalizeKey(event.key);
|
|
8187
|
+
if (key === Keys.ArrowUp && this._focusedMonthIndex > 0) {
|
|
8382
8188
|
event.preventDefault();
|
|
8383
8189
|
this._focusedMonthIndex--;
|
|
8384
8190
|
this._datepickerFocusService.focusCell(this._elRef);
|
|
8385
8191
|
}
|
|
8386
|
-
else if (
|
|
8192
|
+
else if (key === Keys.ArrowDown && this._focusedMonthIndex < 11) {
|
|
8387
8193
|
event.preventDefault();
|
|
8388
8194
|
this._focusedMonthIndex++;
|
|
8389
8195
|
this._datepickerFocusService.focusCell(this._elRef);
|
|
8390
8196
|
}
|
|
8391
|
-
else if (
|
|
8197
|
+
else if (key === Keys.ArrowRight && this._focusedMonthIndex < 6) {
|
|
8392
8198
|
event.preventDefault();
|
|
8393
8199
|
this._focusedMonthIndex = this._focusedMonthIndex + 6;
|
|
8394
8200
|
this._datepickerFocusService.focusCell(this._elRef);
|
|
8395
8201
|
}
|
|
8396
|
-
else if (
|
|
8202
|
+
else if (key === Keys.ArrowLeft && this._focusedMonthIndex > 5) {
|
|
8397
8203
|
event.preventDefault();
|
|
8398
8204
|
this._focusedMonthIndex = this._focusedMonthIndex - 6;
|
|
8399
8205
|
this._datepickerFocusService.focusCell(this._elRef);
|
|
@@ -8597,20 +8403,20 @@ class ClrYearpicker {
|
|
|
8597
8403
|
// the logic is fairly simple and it didn't make sense for me
|
|
8598
8404
|
// to create extra observables just to move this logic to the service.
|
|
8599
8405
|
if (event) {
|
|
8600
|
-
const
|
|
8601
|
-
if (
|
|
8406
|
+
const key = normalizeKey(event.key);
|
|
8407
|
+
if (key === Keys.ArrowUp) {
|
|
8602
8408
|
event.preventDefault();
|
|
8603
8409
|
this.incrementFocusYearBy(-1);
|
|
8604
8410
|
}
|
|
8605
|
-
else if (
|
|
8411
|
+
else if (key === Keys.ArrowDown) {
|
|
8606
8412
|
event.preventDefault();
|
|
8607
8413
|
this.incrementFocusYearBy(1);
|
|
8608
8414
|
}
|
|
8609
|
-
else if (
|
|
8415
|
+
else if (key === Keys.ArrowRight) {
|
|
8610
8416
|
event.preventDefault();
|
|
8611
8417
|
this.incrementFocusYearBy(5);
|
|
8612
8418
|
}
|
|
8613
|
-
else if (
|
|
8419
|
+
else if (key === Keys.ArrowLeft) {
|
|
8614
8420
|
event.preventDefault();
|
|
8615
8421
|
this.incrementFocusYearBy(-5);
|
|
8616
8422
|
}
|
|
@@ -8904,11 +8710,11 @@ class ClrDateContainer extends ClrAbstractContainer {
|
|
|
8904
8710
|
getToggleButtonLabel(day) {
|
|
8905
8711
|
if (day) {
|
|
8906
8712
|
const formattedDate = this.dateIOService.toLocaleDisplayFormatString(day.toDate());
|
|
8907
|
-
return
|
|
8713
|
+
return this.commonStrings.parse(this.commonStrings.keys.datepickerToggleChangeDateLabel, {
|
|
8908
8714
|
SELECTED_DATE: formattedDate,
|
|
8909
|
-
})
|
|
8715
|
+
});
|
|
8910
8716
|
}
|
|
8911
|
-
return this.commonStrings.keys.datepickerToggleChooseDateLabel
|
|
8717
|
+
return this.commonStrings.keys.datepickerToggleChooseDateLabel;
|
|
8912
8718
|
}
|
|
8913
8719
|
listenForDateChanges() {
|
|
8914
8720
|
// because date-input.ts initializes the input in ngAfterViewInit,
|
|
@@ -8965,7 +8771,7 @@ ClrDateContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
|
|
|
8965
8771
|
</button>
|
|
8966
8772
|
<clr-datepicker-view-manager
|
|
8967
8773
|
*clrPopoverContent="open; at: popoverPosition; outsideClickToClose: true; scrollToClose: true"
|
|
8968
|
-
|
|
8774
|
+
cdkTrapFocus
|
|
8969
8775
|
></clr-datepicker-view-manager>
|
|
8970
8776
|
</div>
|
|
8971
8777
|
<cds-icon
|
|
@@ -8987,7 +8793,7 @@ ClrDateContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
|
|
|
8987
8793
|
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
8988
8794
|
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
8989
8795
|
</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:
|
|
8796
|
+
`, 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
8797
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDateContainer, decorators: [{
|
|
8992
8798
|
type: Component,
|
|
8993
8799
|
args: [{
|
|
@@ -9011,7 +8817,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
9011
8817
|
</button>
|
|
9012
8818
|
<clr-datepicker-view-manager
|
|
9013
8819
|
*clrPopoverContent="open; at: popoverPosition; outsideClickToClose: true; scrollToClose: true"
|
|
9014
|
-
|
|
8820
|
+
cdkTrapFocus
|
|
9015
8821
|
></clr-datepicker-view-manager>
|
|
9016
8822
|
</div>
|
|
9017
8823
|
<cds-icon
|
|
@@ -9401,11 +9207,11 @@ ClrDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ver
|
|
|
9401
9207
|
ClrYearpicker,
|
|
9402
9208
|
ClrDaypicker,
|
|
9403
9209
|
ClrCalendar], imports: [CommonModule,
|
|
9210
|
+
CdkTrapFocusModule,
|
|
9404
9211
|
ClrHostWrappingModule,
|
|
9405
9212
|
ClrConditionalModule,
|
|
9406
9213
|
ClrPopoverModuleNext,
|
|
9407
9214
|
ClrIconModule,
|
|
9408
|
-
ClrFocusTrapModule,
|
|
9409
9215
|
ClrCommonFormsModule], exports: [ClrDay,
|
|
9410
9216
|
ClrDateContainer,
|
|
9411
9217
|
ClrDateInput,
|
|
@@ -9416,22 +9222,22 @@ ClrDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ver
|
|
|
9416
9222
|
ClrDaypicker,
|
|
9417
9223
|
ClrCalendar] });
|
|
9418
9224
|
ClrDatepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatepickerModule, imports: [CommonModule,
|
|
9225
|
+
CdkTrapFocusModule,
|
|
9419
9226
|
ClrHostWrappingModule,
|
|
9420
9227
|
ClrConditionalModule,
|
|
9421
9228
|
ClrPopoverModuleNext,
|
|
9422
9229
|
ClrIconModule,
|
|
9423
|
-
ClrFocusTrapModule,
|
|
9424
9230
|
ClrCommonFormsModule] });
|
|
9425
9231
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatepickerModule, decorators: [{
|
|
9426
9232
|
type: NgModule,
|
|
9427
9233
|
args: [{
|
|
9428
9234
|
imports: [
|
|
9429
9235
|
CommonModule,
|
|
9236
|
+
CdkTrapFocusModule,
|
|
9430
9237
|
ClrHostWrappingModule,
|
|
9431
9238
|
ClrConditionalModule,
|
|
9432
9239
|
ClrPopoverModuleNext,
|
|
9433
9240
|
ClrIconModule,
|
|
9434
|
-
ClrFocusTrapModule,
|
|
9435
9241
|
ClrCommonFormsModule,
|
|
9436
9242
|
],
|
|
9437
9243
|
declarations: [CLR_DATEPICKER_DIRECTIVES],
|
|
@@ -10445,959 +10251,58 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
10445
10251
|
* This software is released under MIT license.
|
|
10446
10252
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
10447
10253
|
*/
|
|
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 }]; } });
|
|
10254
|
+
const EXPANDABLE_ANIMATION_DIRECTIVES = [ClrExpandableAnimation];
|
|
11034
10255
|
|
|
11035
10256
|
/*
|
|
11036
10257
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
11037
10258
|
* This software is released under MIT license.
|
|
11038
10259
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
11039
10260
|
*/
|
|
11040
|
-
class
|
|
11041
|
-
|
|
11042
|
-
|
|
11043
|
-
|
|
11044
|
-
|
|
11045
|
-
|
|
11046
|
-
|
|
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,
|
|
10261
|
+
class ClrExpandableAnimationModule {
|
|
10262
|
+
}
|
|
10263
|
+
ClrExpandableAnimationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrExpandableAnimationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10264
|
+
ClrExpandableAnimationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: ClrExpandableAnimationModule, declarations: [ClrExpandableAnimation], imports: [CommonModule], exports: [ClrExpandableAnimation] });
|
|
10265
|
+
ClrExpandableAnimationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrExpandableAnimationModule, imports: [CommonModule] });
|
|
10266
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrExpandableAnimationModule, decorators: [{
|
|
10267
|
+
type: NgModule,
|
|
11121
10268
|
args: [{
|
|
11122
|
-
|
|
11123
|
-
|
|
11124
|
-
|
|
11125
|
-
DragHandleRegistrarService,
|
|
11126
|
-
DraggableSnapshotService,
|
|
11127
|
-
GlobalDragModeService,
|
|
11128
|
-
DomAdapter,
|
|
11129
|
-
],
|
|
11130
|
-
host: { '[class.draggable]': 'true', '[class.being-dragged]': 'dragOn' },
|
|
10269
|
+
imports: [CommonModule],
|
|
10270
|
+
declarations: [EXPANDABLE_ANIMATION_DIRECTIVES],
|
|
10271
|
+
exports: [EXPANDABLE_ANIMATION_DIRECTIVES],
|
|
11131
10272
|
}]
|
|
11132
|
-
}]
|
|
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
|
-
}] } });
|
|
10273
|
+
}] });
|
|
11154
10274
|
|
|
11155
10275
|
/*
|
|
11156
10276
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
11157
10277
|
* This software is released under MIT license.
|
|
11158
10278
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
11159
10279
|
*/
|
|
11160
|
-
|
|
11161
|
-
|
|
11162
|
-
|
|
11163
|
-
|
|
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;
|
|
11323
|
-
}
|
|
11324
|
-
ngOnInit() {
|
|
11325
|
-
this.dragStartSubscription = this.eventBus.dragStarted.subscribe((dragStartEvent) => {
|
|
11326
|
-
this.onDragStart(dragStartEvent);
|
|
11327
|
-
});
|
|
11328
|
-
}
|
|
11329
|
-
ngOnDestroy() {
|
|
11330
|
-
this.unsubscribeFrom(this.dragStartSubscription);
|
|
11331
|
-
this.unsubscribeFrom(this.dragMoveSubscription);
|
|
11332
|
-
this.unsubscribeFrom(this.dragEndSubscription);
|
|
11333
|
-
}
|
|
10280
|
+
/**
|
|
10281
|
+
* This is just a copy of CdkDrag so it can be used independent of the rest of the CdkDragDropModule.
|
|
10282
|
+
*/
|
|
10283
|
+
class CdkDragModule_CdkDrag extends CdkDrag {
|
|
11334
10284
|
}
|
|
11335
|
-
|
|
11336
|
-
|
|
11337
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type:
|
|
10285
|
+
CdkDragModule_CdkDrag.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkDragModule_CdkDrag, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
10286
|
+
CdkDragModule_CdkDrag.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: CdkDragModule_CdkDrag, selector: "[cdkDrag]", usesInheritance: true, ngImport: i0 });
|
|
10287
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkDragModule_CdkDrag, decorators: [{
|
|
11338
10288
|
type: Directive,
|
|
11339
10289
|
args: [{
|
|
11340
|
-
selector: '[
|
|
11341
|
-
providers: [DomAdapter],
|
|
11342
|
-
host: { '[class.droppable]': 'true', '[class.draggable-match]': 'isDraggableMatch' },
|
|
10290
|
+
selector: '[cdkDrag]',
|
|
11343
10291
|
}]
|
|
11344
|
-
}]
|
|
11345
|
-
|
|
11346
|
-
|
|
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']
|
|
11368
|
-
}] } });
|
|
11369
|
-
|
|
11370
|
-
/*
|
|
11371
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
11372
|
-
* This software is released under MIT license.
|
|
11373
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
10292
|
+
}] });
|
|
10293
|
+
/**
|
|
10294
|
+
* This module allows us to avoid importing all of CdkDragDropModule which results in a smaller application bundle.
|
|
11374
10295
|
*/
|
|
11375
|
-
|
|
11376
|
-
|
|
11377
|
-
|
|
11378
|
-
|
|
11379
|
-
|
|
11380
|
-
|
|
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: [{
|
|
10296
|
+
class CdkDragModule {
|
|
10297
|
+
}
|
|
10298
|
+
CdkDragModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkDragModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10299
|
+
CdkDragModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: CdkDragModule, declarations: [CdkDragModule_CdkDrag], exports: [CdkDragModule_CdkDrag] });
|
|
10300
|
+
CdkDragModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkDragModule });
|
|
10301
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkDragModule, decorators: [{
|
|
11396
10302
|
type: NgModule,
|
|
11397
10303
|
args: [{
|
|
11398
|
-
|
|
11399
|
-
|
|
11400
|
-
exports: [CLR_DRAG_AND_DROP_DIRECTIVES],
|
|
10304
|
+
declarations: [CdkDragModule_CdkDrag],
|
|
10305
|
+
exports: [CdkDragModule_CdkDrag],
|
|
11401
10306
|
}]
|
|
11402
10307
|
}] });
|
|
11403
10308
|
|
|
@@ -12054,7 +10959,7 @@ ClrDatagridFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
|
|
|
12054
10959
|
<div
|
|
12055
10960
|
class="datagrid-filter"
|
|
12056
10961
|
[id]="popoverId"
|
|
12057
|
-
|
|
10962
|
+
cdkTrapFocus
|
|
12058
10963
|
*clrPopoverContent="open; at: smartPosition; outsideClickToClose: true; scrollToClose: true"
|
|
12059
10964
|
role="dialog"
|
|
12060
10965
|
[attr.aria-label]="commonStrings.keys.datagridFilterDialogAriaLabel"
|
|
@@ -12067,7 +10972,7 @@ ClrDatagridFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
|
|
|
12067
10972
|
|
|
12068
10973
|
<ng-content></ng-content>
|
|
12069
10974
|
</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"] }
|
|
10975
|
+
`, 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
10976
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridFilter, decorators: [{
|
|
12072
10977
|
type: Component,
|
|
12073
10978
|
args: [{
|
|
@@ -12097,7 +11002,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
12097
11002
|
<div
|
|
12098
11003
|
class="datagrid-filter"
|
|
12099
11004
|
[id]="popoverId"
|
|
12100
|
-
|
|
11005
|
+
cdkTrapFocus
|
|
12101
11006
|
*clrPopoverContent="open; at: smartPosition; outsideClickToClose: true; scrollToClose: true"
|
|
12102
11007
|
role="dialog"
|
|
12103
11008
|
[attr.aria-label]="commonStrings.keys.datagridFilterDialogAriaLabel"
|
|
@@ -13252,8 +12157,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
13252
12157
|
// Default resize length on each keyboard move event
|
|
13253
12158
|
const KEYBOARD_RESIZE_LENGTH = 12;
|
|
13254
12159
|
class ClrDatagridColumnSeparator {
|
|
13255
|
-
// Every column draggable separator should have its own unique ID
|
|
13256
|
-
// in order to not conflict with other draggables/droppables.
|
|
13257
12160
|
constructor(columnResizerService, renderer, ngZone, tableSizeService, commonString, document) {
|
|
13258
12161
|
this.columnResizerService = columnResizerService;
|
|
13259
12162
|
this.renderer = renderer;
|
|
@@ -13301,6 +12204,7 @@ class ClrDatagridColumnSeparator {
|
|
|
13301
12204
|
this.columnResizerService.endResize();
|
|
13302
12205
|
this.renderer.setStyle(this.resizeTrackerEl, 'display', 'none');
|
|
13303
12206
|
this.renderer.setStyle(this.resizeTrackerEl, 'transform', `translateX(0px)`);
|
|
12207
|
+
this.renderer.setStyle(this.columnHandleEl, 'transform', `translateX(0px)`);
|
|
13304
12208
|
this.renderer.setStyle(this.document.body, 'cursor', 'auto');
|
|
13305
12209
|
}
|
|
13306
12210
|
showTrackerOnFirstKeyDown(event) {
|
|
@@ -13312,9 +12216,11 @@ class ClrDatagridColumnSeparator {
|
|
|
13312
12216
|
}
|
|
13313
12217
|
moveTrackerOnKeyDown(event) {
|
|
13314
12218
|
if (this.isArrowLeftKeyEvent(event)) {
|
|
12219
|
+
event.stopPropagation();
|
|
13315
12220
|
this.moveTracker(this.columnResizerService.resizedBy - KEYBOARD_RESIZE_LENGTH);
|
|
13316
12221
|
}
|
|
13317
12222
|
else if (this.isArrowRightKeyEvent(event)) {
|
|
12223
|
+
event.stopPropagation();
|
|
13318
12224
|
this.moveTracker(this.columnResizerService.resizedBy + KEYBOARD_RESIZE_LENGTH);
|
|
13319
12225
|
}
|
|
13320
12226
|
}
|
|
@@ -13338,10 +12244,10 @@ class ClrDatagridColumnSeparator {
|
|
|
13338
12244
|
}
|
|
13339
12245
|
}
|
|
13340
12246
|
isArrowLeftKeyEvent(event) {
|
|
13341
|
-
return event.key ===
|
|
12247
|
+
return normalizeKey(event.key) === Keys.ArrowLeft;
|
|
13342
12248
|
}
|
|
13343
12249
|
isArrowRightKeyEvent(event) {
|
|
13344
|
-
return event.key ===
|
|
12250
|
+
return normalizeKey(event.key) === Keys.ArrowRight;
|
|
13345
12251
|
}
|
|
13346
12252
|
ngOnDestroy() {
|
|
13347
12253
|
this.unlisteners.forEach(unlistener => unlistener());
|
|
@@ -13354,18 +12260,18 @@ ClrDatagridColumnSeparator.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0
|
|
|
13354
12260
|
class="datagrid-column-handle"
|
|
13355
12261
|
[attr.aria-label]="commonString.keys.columnSeparatorAriaLabel"
|
|
13356
12262
|
[attr.aria-describedby]="descriptionId"
|
|
13357
|
-
|
|
13358
|
-
|
|
13359
|
-
(
|
|
13360
|
-
(
|
|
13361
|
-
(
|
|
12263
|
+
cdkDrag
|
|
12264
|
+
cdkDragLockAxis="x"
|
|
12265
|
+
(cdkDragStarted)="showTracker()"
|
|
12266
|
+
(cdkDragMoved)="moveTracker($event.distance.x)"
|
|
12267
|
+
(cdkDragEnded)="hideTracker(); $event.source._dragRef.reset()"
|
|
13362
12268
|
#columnHandle
|
|
13363
12269
|
></button>
|
|
13364
12270
|
<span class="clr-sr-only" [attr.id]="descriptionId">
|
|
13365
12271
|
{{ commonString.keys.columnSeparatorDescription }}
|
|
13366
12272
|
</span>
|
|
13367
12273
|
<div class="datagrid-column-resize-tracker" #resizeTracker></div>
|
|
13368
|
-
`, isInline: true, dependencies: [{ kind: "directive", type:
|
|
12274
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: CdkDragModule_CdkDrag, selector: "[cdkDrag]" }] });
|
|
13369
12275
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridColumnSeparator, decorators: [{
|
|
13370
12276
|
type: Component,
|
|
13371
12277
|
args: [{
|
|
@@ -13376,11 +12282,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
13376
12282
|
class="datagrid-column-handle"
|
|
13377
12283
|
[attr.aria-label]="commonString.keys.columnSeparatorAriaLabel"
|
|
13378
12284
|
[attr.aria-describedby]="descriptionId"
|
|
13379
|
-
|
|
13380
|
-
|
|
13381
|
-
(
|
|
13382
|
-
(
|
|
13383
|
-
(
|
|
12285
|
+
cdkDrag
|
|
12286
|
+
cdkDragLockAxis="x"
|
|
12287
|
+
(cdkDragStarted)="showTracker()"
|
|
12288
|
+
(cdkDragMoved)="moveTracker($event.distance.x)"
|
|
12289
|
+
(cdkDragEnded)="hideTracker(); $event.source._dragRef.reset()"
|
|
13384
12290
|
#columnHandle
|
|
13385
12291
|
></button>
|
|
13386
12292
|
<span class="clr-sr-only" [attr.id]="descriptionId">
|
|
@@ -13427,18 +12333,6 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
|
13427
12333
|
* via the [clrDgColType] input by setting it to 'string' or 'number'.
|
|
13428
12334
|
*/
|
|
13429
12335
|
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
12336
|
/**
|
|
13443
12337
|
* Indicates how the column is currently sorted
|
|
13444
12338
|
*/
|
|
@@ -13474,16 +12368,8 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
|
13474
12368
|
if (this.sortOrder !== ClrDatagridSortOrder.UNSORTED && sort.comparator !== this._sortBy) {
|
|
13475
12369
|
this._sortOrder = ClrDatagridSortOrder.UNSORTED;
|
|
13476
12370
|
this.sortOrderChange.emit(this._sortOrder);
|
|
13477
|
-
// removes the sortIcon when column becomes unsorted
|
|
13478
|
-
this.sortIcon = null;
|
|
13479
12371
|
this._sortDirection = null;
|
|
13480
12372
|
}
|
|
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
12373
|
});
|
|
13488
12374
|
}
|
|
13489
12375
|
get colType() {
|
|
@@ -13560,21 +12446,6 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
|
13560
12446
|
get sortable() {
|
|
13561
12447
|
return !!this._sortBy;
|
|
13562
12448
|
}
|
|
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
12449
|
get sortOrder() {
|
|
13579
12450
|
return this._sortOrder;
|
|
13580
12451
|
}
|
|
@@ -13626,12 +12497,7 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
|
13626
12497
|
this._sortOrder = this._sort.reverse ? ClrDatagridSortOrder.DESC : ClrDatagridSortOrder.ASC;
|
|
13627
12498
|
// Sets the correct icon for current sort order
|
|
13628
12499
|
this._sortDirection = this._sortOrder === ClrDatagridSortOrder.DESC ? 'down' : 'up';
|
|
13629
|
-
this.sortIcon = this._sortOrder === ClrDatagridSortOrder.DESC ? 'arrow down' : 'arrow'; // Backward compatibility
|
|
13630
12500
|
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
12501
|
}
|
|
13636
12502
|
set projectedFilter(custom) {
|
|
13637
12503
|
if (custom) {
|
|
@@ -13699,7 +12565,7 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
|
13699
12565
|
}
|
|
13700
12566
|
}
|
|
13701
12567
|
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"],
|
|
12568
|
+
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
12569
|
<div class="datagrid-column-flex">
|
|
13704
12570
|
<button class="datagrid-column-title" *ngIf="sortable" (click)="sort()" type="button">
|
|
13705
12571
|
<ng-container *ngTemplateOutlet="columnTitle"></ng-container>
|
|
@@ -13802,12 +12668,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
13802
12668
|
}], sortBy: [{
|
|
13803
12669
|
type: Input,
|
|
13804
12670
|
args: ['clrDgSortBy']
|
|
13805
|
-
}], sorted: [{
|
|
13806
|
-
type: Input,
|
|
13807
|
-
args: ['clrDgSorted']
|
|
13808
|
-
}], sortedChange: [{
|
|
13809
|
-
type: Output,
|
|
13810
|
-
args: ['clrDgSortedChange']
|
|
13811
12671
|
}], sortOrder: [{
|
|
13812
12672
|
type: Input,
|
|
13813
12673
|
args: ['clrDgSortOrder']
|
|
@@ -15909,13 +14769,13 @@ ClrDatagridActionOverflow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.
|
|
|
15909
14769
|
[attr.aria-hidden]="!open"
|
|
15910
14770
|
[attr.id]="popoverId"
|
|
15911
14771
|
clrKeyFocus
|
|
15912
|
-
|
|
14772
|
+
cdkTrapFocus
|
|
15913
14773
|
(click)="closeOverflowContent($event)"
|
|
15914
14774
|
*clrPopoverContent="open; at: smartPosition; outsideClickToClose: true; scrollToClose: true"
|
|
15915
14775
|
>
|
|
15916
14776
|
<ng-content></ng-content>
|
|
15917
14777
|
</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"] }
|
|
14778
|
+
`, 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
14779
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridActionOverflow, decorators: [{
|
|
15920
14780
|
type: Component,
|
|
15921
14781
|
args: [{
|
|
@@ -15943,7 +14803,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
15943
14803
|
[attr.aria-hidden]="!open"
|
|
15944
14804
|
[attr.id]="popoverId"
|
|
15945
14805
|
clrKeyFocus
|
|
15946
|
-
|
|
14806
|
+
cdkTrapFocus
|
|
15947
14807
|
(click)="closeOverflowContent($event)"
|
|
15948
14808
|
*clrPopoverContent="open; at: smartPosition; outsideClickToClose: true; scrollToClose: true"
|
|
15949
14809
|
>
|
|
@@ -16147,7 +15007,7 @@ ClrDatagridColumnToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
|
|
|
16147
15007
|
role="dialog"
|
|
16148
15008
|
[attr.aria-label]="commonStrings.keys.showColumnsMenuDescription"
|
|
16149
15009
|
[id]="popoverId"
|
|
16150
|
-
|
|
15010
|
+
cdkTrapFocus
|
|
16151
15011
|
*clrPopoverContent="openState; at: smartPosition; outsideClickToClose: true; scrollToClose: true"
|
|
16152
15012
|
>
|
|
16153
15013
|
<div class="switch-header">
|
|
@@ -16189,7 +15049,7 @@ ClrDatagridColumnToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
|
|
|
16189
15049
|
</clr-dg-column-toggle-button>
|
|
16190
15050
|
</div>
|
|
16191
15051
|
</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:
|
|
15052
|
+
`, 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
15053
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridColumnToggle, decorators: [{
|
|
16194
15054
|
type: Component,
|
|
16195
15055
|
args: [{
|
|
@@ -16212,7 +15072,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
16212
15072
|
role="dialog"
|
|
16213
15073
|
[attr.aria-label]="commonStrings.keys.showColumnsMenuDescription"
|
|
16214
15074
|
[id]="popoverId"
|
|
16215
|
-
|
|
15075
|
+
cdkTrapFocus
|
|
16216
15076
|
*clrPopoverContent="openState; at: smartPosition; outsideClickToClose: true; scrollToClose: true"
|
|
16217
15077
|
>
|
|
16218
15078
|
<div class="switch-header">
|
|
@@ -16334,14 +15194,15 @@ class ClrDatagridDetail {
|
|
|
16334
15194
|
this.detailService = detailService;
|
|
16335
15195
|
this.commonStrings = commonStrings;
|
|
16336
15196
|
}
|
|
16337
|
-
|
|
15197
|
+
close() {
|
|
16338
15198
|
this.detailService.close();
|
|
16339
15199
|
}
|
|
16340
15200
|
}
|
|
16341
15201
|
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
|
-
ClrDatagridDetail.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrDatagridDetail, selector: "clr-dg-detail", host: { listeners: { "document:keyup.
|
|
15202
|
+
ClrDatagridDetail.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrDatagridDetail, selector: "clr-dg-detail", host: { listeners: { "document:keyup.escape": "close()" }, properties: { "class.datagrid-detail-pane": "true" } }, queries: [{ propertyName: "header", first: true, predicate: ClrDatagridDetailHeader, descendants: true }], ngImport: i0, template: `
|
|
16343
15203
|
<div
|
|
16344
|
-
|
|
15204
|
+
cdkTrapFocus
|
|
15205
|
+
[cdkTrapFocusAutoCapture]="true"
|
|
16345
15206
|
class="datagrid-detail-pane-content"
|
|
16346
15207
|
*ngIf="detailService.isOpen"
|
|
16347
15208
|
role="dialog"
|
|
@@ -16353,7 +15214,7 @@ ClrDatagridDetail.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
|
|
|
16353
15214
|
<ng-content></ng-content>
|
|
16354
15215
|
<div class="clr-sr-only">{{ commonStrings.keys.detailPaneEnd }}</div>
|
|
16355
15216
|
</div>
|
|
16356
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type:
|
|
15217
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]" }] });
|
|
16357
15218
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridDetail, decorators: [{
|
|
16358
15219
|
type: Component,
|
|
16359
15220
|
args: [{
|
|
@@ -16361,11 +15222,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
16361
15222
|
host: {
|
|
16362
15223
|
'[class.datagrid-detail-pane]': 'true',
|
|
16363
15224
|
},
|
|
16364
|
-
// We put the *ngIf on the
|
|
15225
|
+
// We put the *ngIf on the cdkTrapFocus so it doesn't always exist on the page
|
|
16365
15226
|
// have to test for presence of header for aria-describedby because it was causing unit tests to crash
|
|
16366
15227
|
template: `
|
|
16367
15228
|
<div
|
|
16368
|
-
|
|
15229
|
+
cdkTrapFocus
|
|
15230
|
+
[cdkTrapFocusAutoCapture]="true"
|
|
16369
15231
|
class="datagrid-detail-pane-content"
|
|
16370
15232
|
*ngIf="detailService.isOpen"
|
|
16371
15233
|
role="dialog"
|
|
@@ -16382,9 +15244,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
16382
15244
|
}], ctorParameters: function () { return [{ type: DetailService }, { type: ClrCommonStringsService }]; }, propDecorators: { header: [{
|
|
16383
15245
|
type: ContentChild,
|
|
16384
15246
|
args: [ClrDatagridDetailHeader]
|
|
16385
|
-
}],
|
|
15247
|
+
}], close: [{
|
|
16386
15248
|
type: HostListener,
|
|
16387
|
-
args: ['document:keyup.
|
|
15249
|
+
args: ['document:keyup.escape']
|
|
16388
15250
|
}] } });
|
|
16389
15251
|
|
|
16390
15252
|
/*
|
|
@@ -16589,301 +15451,18 @@ function slide(direction) {
|
|
|
16589
15451
|
* This software is released under MIT license.
|
|
16590
15452
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16591
15453
|
*/
|
|
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
|
-
}] }]; } });
|
|
16744
|
-
|
|
16745
|
-
/*
|
|
16746
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16747
|
-
* This software is released under MIT license.
|
|
16748
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16749
|
-
*/
|
|
16750
|
-
|
|
16751
|
-
/*
|
|
16752
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16753
|
-
* This software is released under MIT license.
|
|
16754
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16755
|
-
*/
|
|
16756
|
-
|
|
16757
|
-
/*
|
|
16758
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16759
|
-
* This software is released under MIT license.
|
|
16760
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16761
|
-
*/
|
|
16762
|
-
|
|
16763
|
-
/*
|
|
16764
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16765
|
-
* This software is released under MIT license.
|
|
16766
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16767
|
-
*/
|
|
16768
|
-
|
|
16769
|
-
/*
|
|
16770
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16771
|
-
* This software is released under MIT license.
|
|
16772
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16773
|
-
*/
|
|
16774
|
-
|
|
16775
|
-
/*
|
|
16776
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16777
|
-
* This software is released under MIT license.
|
|
16778
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16779
|
-
*/
|
|
16780
|
-
|
|
16781
|
-
/*
|
|
16782
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16783
|
-
* This software is released under MIT license.
|
|
16784
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16785
|
-
*/
|
|
16786
|
-
|
|
16787
|
-
/*
|
|
16788
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16789
|
-
* This software is released under MIT license.
|
|
16790
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16791
|
-
*/
|
|
16792
|
-
|
|
16793
|
-
/*
|
|
16794
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16795
|
-
* This software is released under MIT license.
|
|
16796
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16797
|
-
*/
|
|
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
15454
|
|
|
16819
15455
|
/*
|
|
16820
15456
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16821
15457
|
* This software is released under MIT license.
|
|
16822
15458
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16823
15459
|
*/
|
|
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
15460
|
|
|
16869
15461
|
/*
|
|
16870
15462
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16871
15463
|
* This software is released under MIT license.
|
|
16872
15464
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16873
15465
|
*/
|
|
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
15466
|
|
|
16888
15467
|
/*
|
|
16889
15468
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -17170,19 +15749,19 @@ class ClrDatagridPageSize {
|
|
|
17170
15749
|
}
|
|
17171
15750
|
ClrDatagridPageSize.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridPageSize, deps: [{ token: Page }], target: i0.ɵɵFactoryTarget.Component });
|
|
17172
15751
|
ClrDatagridPageSize.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrDatagridPageSize, selector: "clr-dg-page-size", inputs: { pageSizeOptions: ["clrPageSizeOptions", "pageSizeOptions"], pageSizeOptionsId: ["clrPageSizeOptionsId", "pageSizeOptionsId"] }, ngImport: i0, template: `
|
|
17173
|
-
<ng-content></ng-content>
|
|
15752
|
+
<label [for]="pageSizeOptionsId"><ng-content></ng-content></label>
|
|
17174
15753
|
<div class="clr-select-wrapper">
|
|
17175
15754
|
<select [id]="pageSizeOptionsId" [class.clr-page-size-select]="true" [(ngModel)]="page.size">
|
|
17176
15755
|
<option *ngFor="let option of pageSizeOptions" [ngValue]="option">{{ option }}</option>
|
|
17177
15756
|
</select>
|
|
17178
15757
|
</div>
|
|
17179
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { 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"] }] });
|
|
15758
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: ClrLabel, selector: "label", inputs: ["for"] }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { 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"] }] });
|
|
17180
15759
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridPageSize, decorators: [{
|
|
17181
15760
|
type: Component,
|
|
17182
15761
|
args: [{
|
|
17183
15762
|
selector: 'clr-dg-page-size',
|
|
17184
15763
|
template: `
|
|
17185
|
-
<ng-content></ng-content>
|
|
15764
|
+
<label [for]="pageSizeOptionsId"><ng-content></ng-content></label>
|
|
17186
15765
|
<div class="clr-select-wrapper">
|
|
17187
15766
|
<select [id]="pageSizeOptionsId" [class.clr-page-size-select]="true" [(ngModel)]="page.size">
|
|
17188
15767
|
<option *ngFor="let option of pageSizeOptions" [ngValue]="option">{{ option }}</option>
|
|
@@ -17314,9 +15893,14 @@ class ClrDatagridPagination {
|
|
|
17314
15893
|
}
|
|
17315
15894
|
return middlePages;
|
|
17316
15895
|
}
|
|
15896
|
+
verifyCurrentPage(event) {
|
|
15897
|
+
const parsed = parseInt(event.target.value, 10);
|
|
15898
|
+
if (parsed !== this.page.current) {
|
|
15899
|
+
event.target.value = this.page.current;
|
|
15900
|
+
}
|
|
15901
|
+
}
|
|
17317
15902
|
/**
|
|
17318
|
-
* We only update the pagination's current page on
|
|
17319
|
-
* when they press enter.
|
|
15903
|
+
* We only update the pagination's current page on enter.
|
|
17320
15904
|
*/
|
|
17321
15905
|
updateCurrentPage(event) {
|
|
17322
15906
|
const parsed = parseInt(event.target.value, 10);
|
|
@@ -17377,7 +15961,7 @@ ClrDatagridPagination.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
|
17377
15961
|
[size]="page.last.toString().length"
|
|
17378
15962
|
[value]="page.current"
|
|
17379
15963
|
(keydown.enter)="updateCurrentPage($event)"
|
|
17380
|
-
(blur)="
|
|
15964
|
+
(blur)="verifyCurrentPage($event)"
|
|
17381
15965
|
[attr.aria-label]="commonStrings.keys.currentPage"
|
|
17382
15966
|
/>
|
|
17383
15967
|
<ng-template #readOnly>
|
|
@@ -17477,7 +16061,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
17477
16061
|
[size]="page.last.toString().length"
|
|
17478
16062
|
[value]="page.current"
|
|
17479
16063
|
(keydown.enter)="updateCurrentPage($event)"
|
|
17480
|
-
(blur)="
|
|
16064
|
+
(blur)="verifyCurrentPage($event)"
|
|
17481
16065
|
[attr.aria-label]="commonStrings.keys.currentPage"
|
|
17482
16066
|
/>
|
|
17483
16067
|
<ng-template #readOnly>
|
|
@@ -17598,20 +16182,20 @@ class ClrDatagridRowDetail {
|
|
|
17598
16182
|
}
|
|
17599
16183
|
get beginningOfExpandableContentAriaText() {
|
|
17600
16184
|
return (this._beginningOfExpandableContentAriaText ||
|
|
17601
|
-
`${this.commonStrings.keys.
|
|
17602
|
-
${this.commonStrings.keys.
|
|
16185
|
+
`${this.commonStrings.keys.datagridExpandableBeginningOf}
|
|
16186
|
+
${this.commonStrings.keys.datagridExpandableRowContent}`);
|
|
17603
16187
|
}
|
|
17604
16188
|
get endOfExpandableContentAriaText() {
|
|
17605
16189
|
return (this._endOfExpandableContentAriaText ||
|
|
17606
|
-
`${this.commonStrings.keys.
|
|
17607
|
-
${this.commonStrings.keys.
|
|
16190
|
+
`${this.commonStrings.keys.datagridExpandableEndOf}
|
|
16191
|
+
${this.commonStrings.keys.datagridExpandableRowContent}`);
|
|
17608
16192
|
}
|
|
17609
16193
|
}
|
|
17610
16194
|
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
16195
|
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
16196
|
<div class="clr-sr-only">
|
|
17613
16197
|
{{ beginningOfExpandableContentAriaText }}
|
|
17614
|
-
{{ commonStrings.keys.
|
|
16198
|
+
{{ commonStrings.keys.datagridExpandableRowsHelperText }}
|
|
17615
16199
|
</div>
|
|
17616
16200
|
<ng-content></ng-content>
|
|
17617
16201
|
<div class="clr-sr-only">{{ endOfExpandableContentAriaText }}</div>
|
|
@@ -17620,11 +16204,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
17620
16204
|
type: Component,
|
|
17621
16205
|
args: [{
|
|
17622
16206
|
selector: 'clr-dg-row-detail',
|
|
17623
|
-
// TODO: @deprecated - dategrid* keys are deprecated. Remove in v14.
|
|
17624
16207
|
template: `
|
|
17625
16208
|
<div class="clr-sr-only">
|
|
17626
16209
|
{{ beginningOfExpandableContentAriaText }}
|
|
17627
|
-
{{ commonStrings.keys.
|
|
16210
|
+
{{ commonStrings.keys.datagridExpandableRowsHelperText }}
|
|
17628
16211
|
</div>
|
|
17629
16212
|
<ng-content></ng-content>
|
|
17630
16213
|
<div class="clr-sr-only">{{ endOfExpandableContentAriaText }}</div>
|
|
@@ -18246,6 +16829,8 @@ ClrDatagridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versi
|
|
|
18246
16829
|
// Built-in shortcuts
|
|
18247
16830
|
DatagridStringFilter,
|
|
18248
16831
|
DatagridNumericFilter], imports: [CommonModule,
|
|
16832
|
+
CdkDragModule,
|
|
16833
|
+
CdkTrapFocusModule,
|
|
18249
16834
|
ClrIconModule,
|
|
18250
16835
|
ClrFormsModule,
|
|
18251
16836
|
FormsModule,
|
|
@@ -18253,11 +16838,9 @@ ClrDatagridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versi
|
|
|
18253
16838
|
ClrConditionalModule,
|
|
18254
16839
|
ClrOutsideClickModule,
|
|
18255
16840
|
ClrExpandableAnimationModule,
|
|
18256
|
-
ClrDragAndDropModule,
|
|
18257
16841
|
ClrSpinnerModule,
|
|
18258
16842
|
ClrPopoverModuleNext,
|
|
18259
16843
|
ClrKeyFocusModule,
|
|
18260
|
-
ClrFocusTrapModule,
|
|
18261
16844
|
ClrFocusOnViewInitModule], exports: [
|
|
18262
16845
|
// Core
|
|
18263
16846
|
ClrDatagrid,
|
|
@@ -18300,6 +16883,8 @@ ClrDatagridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versi
|
|
|
18300
16883
|
DatagridStringFilter,
|
|
18301
16884
|
DatagridNumericFilter] });
|
|
18302
16885
|
ClrDatagridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridModule, imports: [CommonModule,
|
|
16886
|
+
CdkDragModule,
|
|
16887
|
+
CdkTrapFocusModule,
|
|
18303
16888
|
ClrIconModule,
|
|
18304
16889
|
ClrFormsModule,
|
|
18305
16890
|
FormsModule,
|
|
@@ -18307,17 +16892,17 @@ ClrDatagridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", versi
|
|
|
18307
16892
|
ClrConditionalModule,
|
|
18308
16893
|
ClrOutsideClickModule,
|
|
18309
16894
|
ClrExpandableAnimationModule,
|
|
18310
|
-
ClrDragAndDropModule,
|
|
18311
16895
|
ClrSpinnerModule,
|
|
18312
16896
|
ClrPopoverModuleNext,
|
|
18313
16897
|
ClrKeyFocusModule,
|
|
18314
|
-
ClrFocusTrapModule,
|
|
18315
16898
|
ClrFocusOnViewInitModule] });
|
|
18316
16899
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridModule, decorators: [{
|
|
18317
16900
|
type: NgModule,
|
|
18318
16901
|
args: [{
|
|
18319
16902
|
imports: [
|
|
18320
16903
|
CommonModule,
|
|
16904
|
+
CdkDragModule,
|
|
16905
|
+
CdkTrapFocusModule,
|
|
18321
16906
|
ClrIconModule,
|
|
18322
16907
|
ClrFormsModule,
|
|
18323
16908
|
FormsModule,
|
|
@@ -18325,11 +16910,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
18325
16910
|
ClrConditionalModule,
|
|
18326
16911
|
ClrOutsideClickModule,
|
|
18327
16912
|
ClrExpandableAnimationModule,
|
|
18328
|
-
ClrDragAndDropModule,
|
|
18329
16913
|
ClrSpinnerModule,
|
|
18330
16914
|
ClrPopoverModuleNext,
|
|
18331
16915
|
ClrKeyFocusModule,
|
|
18332
|
-
ClrFocusTrapModule,
|
|
18333
16916
|
ClrFocusOnViewInitModule,
|
|
18334
16917
|
],
|
|
18335
16918
|
declarations: [CLR_DATAGRID_DIRECTIVES],
|
|
@@ -18478,7 +17061,7 @@ class ClrStackBlock {
|
|
|
18478
17061
|
}
|
|
18479
17062
|
}
|
|
18480
17063
|
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"]
|
|
17064
|
+
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
17065
|
<!-- The 'preventDefault' for the space keydown event prevents the page
|
|
18483
17066
|
from scrolling when a stack block is toggled via the space key. -->
|
|
18484
17067
|
<div
|
|
@@ -18597,12 +17180,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
18597
17180
|
}], ariaLevel: [{
|
|
18598
17181
|
type: Input,
|
|
18599
17182
|
args: ['clrStackViewLevel']
|
|
18600
|
-
}], ariaSetsize: [{
|
|
18601
|
-
type: Input,
|
|
18602
|
-
args: ['clrStackViewSetsize']
|
|
18603
|
-
}], ariaPosinset: [{
|
|
18604
|
-
type: Input,
|
|
18605
|
-
args: ['clrStackViewPosinset']
|
|
18606
17183
|
}], onStackLabelFocus: [{
|
|
18607
17184
|
type: HostBinding,
|
|
18608
17185
|
args: ['class.on-focus']
|
|
@@ -18637,30 +17214,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
18637
17214
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18638
17215
|
*/
|
|
18639
17216
|
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
17217
|
}
|
|
18662
17218
|
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",
|
|
17219
|
+
ClrStackView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrStackView, selector: "clr-stack-view", ngImport: i0, template: `
|
|
18664
17220
|
<ng-content select="clr-stack-header"></ng-content>
|
|
18665
17221
|
<div class="stack-view"><ng-content></ng-content></div>
|
|
18666
17222
|
`, isInline: true, styles: [":host{display:block}\n"] });
|
|
@@ -18670,10 +17226,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
18670
17226
|
<ng-content select="clr-stack-header"></ng-content>
|
|
18671
17227
|
<div class="stack-view"><ng-content></ng-content></div>
|
|
18672
17228
|
`, styles: [":host{display:block}\n"] }]
|
|
18673
|
-
}]
|
|
18674
|
-
type: Output,
|
|
18675
|
-
args: ['clrStackSave']
|
|
18676
|
-
}] } });
|
|
17229
|
+
}] });
|
|
18677
17230
|
|
|
18678
17231
|
/*
|
|
18679
17232
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -18692,19 +17245,9 @@ ClrStackHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version
|
|
|
18692
17245
|
|
|
18693
17246
|
<span class="stack-actions">
|
|
18694
17247
|
<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
17248
|
</span>
|
|
18706
17249
|
</div>
|
|
18707
|
-
`, isInline: true, styles: [":host{display:block}\n"]
|
|
17250
|
+
`, isInline: true, styles: [":host{display:block}\n"] });
|
|
18708
17251
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackHeader, decorators: [{
|
|
18709
17252
|
type: Component,
|
|
18710
17253
|
args: [{ selector: 'clr-stack-header', template: `
|
|
@@ -18713,116 +17256,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
18713
17256
|
|
|
18714
17257
|
<span class="stack-actions">
|
|
18715
17258
|
<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
17259
|
</span>
|
|
18727
17260
|
</div>
|
|
18728
17261
|
`, styles: [":host{display:block}\n"] }]
|
|
18729
17262
|
}], ctorParameters: function () { return [{ type: ClrStackView }]; } });
|
|
18730
17263
|
|
|
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
17264
|
/*
|
|
18827
17265
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18828
17266
|
* This software is released under MIT license.
|
|
@@ -18835,14 +17273,6 @@ const CLR_STACK_VIEW_DIRECTIVES = [
|
|
|
18835
17273
|
ClrStackContentInput,
|
|
18836
17274
|
ClrStackViewLabel,
|
|
18837
17275
|
ClrStackViewCustomTags,
|
|
18838
|
-
/**
|
|
18839
|
-
* Undocumented experimental feature: inline editing.
|
|
18840
|
-
*/
|
|
18841
|
-
ClrStackInput,
|
|
18842
|
-
ClrStackSelect,
|
|
18843
|
-
/**
|
|
18844
|
-
* End of undocumented experimental feature.
|
|
18845
|
-
*/
|
|
18846
17276
|
];
|
|
18847
17277
|
class ClrStackViewModule {
|
|
18848
17278
|
constructor() {
|
|
@@ -18855,22 +17285,12 @@ ClrStackViewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", vers
|
|
|
18855
17285
|
ClrStackBlock,
|
|
18856
17286
|
ClrStackContentInput,
|
|
18857
17287
|
ClrStackViewLabel,
|
|
18858
|
-
ClrStackViewCustomTags,
|
|
18859
|
-
/**
|
|
18860
|
-
* Undocumented experimental feature: inline editing.
|
|
18861
|
-
*/
|
|
18862
|
-
ClrStackInput,
|
|
18863
|
-
ClrStackSelect], imports: [CommonModule, FormsModule, ClrIconModule, ClrExpandableAnimationModule], exports: [ClrStackView,
|
|
17288
|
+
ClrStackViewCustomTags], imports: [CommonModule, FormsModule, ClrIconModule, ClrExpandableAnimationModule], exports: [ClrStackView,
|
|
18864
17289
|
ClrStackHeader,
|
|
18865
17290
|
ClrStackBlock,
|
|
18866
17291
|
ClrStackContentInput,
|
|
18867
17292
|
ClrStackViewLabel,
|
|
18868
|
-
ClrStackViewCustomTags
|
|
18869
|
-
/**
|
|
18870
|
-
* Undocumented experimental feature: inline editing.
|
|
18871
|
-
*/
|
|
18872
|
-
ClrStackInput,
|
|
18873
|
-
ClrStackSelect] });
|
|
17293
|
+
ClrStackViewCustomTags] });
|
|
18874
17294
|
ClrStackViewModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackViewModule, imports: [CommonModule, FormsModule, ClrIconModule, ClrExpandableAnimationModule] });
|
|
18875
17295
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackViewModule, decorators: [{
|
|
18876
17296
|
type: NgModule,
|
|
@@ -19495,13 +17915,13 @@ const LVIEW_CONTEXT_INDEX = 8;
|
|
|
19495
17915
|
// then those keys are sent together in one request.
|
|
19496
17916
|
const TREE_TYPE_AHEAD_TIMEOUT = 200;
|
|
19497
17917
|
class ClrTreeNode {
|
|
19498
|
-
constructor(platformId, parent,
|
|
17918
|
+
constructor(platformId, parent, featuresService, expandService, commonStrings, focusManager, elementRef, injector) {
|
|
19499
17919
|
this.platformId = platformId;
|
|
19500
|
-
this.forTypeAheadProvider = forTypeAheadProvider;
|
|
19501
17920
|
this.featuresService = featuresService;
|
|
19502
17921
|
this.expandService = expandService;
|
|
19503
17922
|
this.commonStrings = commonStrings;
|
|
19504
17923
|
this.focusManager = focusManager;
|
|
17924
|
+
this.elementRef = elementRef;
|
|
19505
17925
|
this.STATES = ClrSelectedState;
|
|
19506
17926
|
this.skipEmitChange = false;
|
|
19507
17927
|
this.isModelLoading = false;
|
|
@@ -19580,6 +18000,9 @@ class ClrTreeNode {
|
|
|
19580
18000
|
set expanded(value) {
|
|
19581
18001
|
this.expandService.expanded = value;
|
|
19582
18002
|
}
|
|
18003
|
+
set clrForTypeAhead(value) {
|
|
18004
|
+
this._model.textContent = trimAndLowerCase(value || this.elementRef.nativeElement.textContent);
|
|
18005
|
+
}
|
|
19583
18006
|
ngOnInit() {
|
|
19584
18007
|
this._model.expanded = this.expanded;
|
|
19585
18008
|
this.subscriptions.push(this._model.selected.pipe(filter(() => !this.skipEmitChange)).subscribe(value => {
|
|
@@ -19599,13 +18022,15 @@ class ClrTreeNode {
|
|
|
19599
18022
|
this.subscriptions.push(this._model.loading$.pipe(debounceTime(0)).subscribe(isLoading => (this.isModelLoading = isLoading)));
|
|
19600
18023
|
}
|
|
19601
18024
|
ngAfterContentInit() {
|
|
19602
|
-
|
|
19603
|
-
this.
|
|
19604
|
-
|
|
19605
|
-
|
|
19606
|
-
|
|
19607
|
-
|
|
19608
|
-
|
|
18025
|
+
this.subscriptions.push(this.typeAheadKeyEvent.pipe(debounceTime(TREE_TYPE_AHEAD_TIMEOUT)).subscribe((bufferedKeys) => {
|
|
18026
|
+
this.focusManager.focusNodeStartsWith(bufferedKeys, this._model);
|
|
18027
|
+
// reset once bufferedKeys are used
|
|
18028
|
+
this.typeAheadKeyBuffer = '';
|
|
18029
|
+
}));
|
|
18030
|
+
}
|
|
18031
|
+
ngAfterViewInit() {
|
|
18032
|
+
if (!this._model.textContent) {
|
|
18033
|
+
this._model.textContent = trimAndLowerCase(this.elementRef.nativeElement.textContent);
|
|
19609
18034
|
}
|
|
19610
18035
|
}
|
|
19611
18036
|
ngOnDestroy() {
|
|
@@ -19642,32 +18067,32 @@ class ClrTreeNode {
|
|
|
19642
18067
|
// By default, pressing arrow key makes AT focus go into the nested content of the item.
|
|
19643
18068
|
preventArrowKeyScroll(event);
|
|
19644
18069
|
// https://www.w3.org/TR/wai-aria-practices-1.1/#keyboard-interaction-22
|
|
19645
|
-
switch (
|
|
19646
|
-
case
|
|
18070
|
+
switch (normalizeKey(event.key)) {
|
|
18071
|
+
case Keys.ArrowUp:
|
|
19647
18072
|
this.focusManager.focusNodeAbove(this._model);
|
|
19648
18073
|
break;
|
|
19649
|
-
case
|
|
18074
|
+
case Keys.ArrowDown:
|
|
19650
18075
|
this.focusManager.focusNodeBelow(this._model);
|
|
19651
18076
|
break;
|
|
19652
|
-
case
|
|
18077
|
+
case Keys.ArrowRight:
|
|
19653
18078
|
this.expandOrFocusFirstChild();
|
|
19654
18079
|
break;
|
|
19655
|
-
case
|
|
18080
|
+
case Keys.ArrowLeft:
|
|
19656
18081
|
this.collapseOrFocusParent();
|
|
19657
18082
|
break;
|
|
19658
|
-
case
|
|
18083
|
+
case Keys.Home:
|
|
19659
18084
|
event.preventDefault();
|
|
19660
18085
|
this.focusManager.focusFirstVisibleNode();
|
|
19661
18086
|
break;
|
|
19662
|
-
case
|
|
18087
|
+
case Keys.End:
|
|
19663
18088
|
event.preventDefault();
|
|
19664
18089
|
this.focusManager.focusLastVisibleNode();
|
|
19665
18090
|
break;
|
|
19666
|
-
case
|
|
18091
|
+
case Keys.Enter:
|
|
19667
18092
|
this.toggleExpandOrTriggerDefault();
|
|
19668
18093
|
break;
|
|
19669
|
-
case
|
|
19670
|
-
case
|
|
18094
|
+
case Keys.Space:
|
|
18095
|
+
case Keys.Spacebar:
|
|
19671
18096
|
// to prevent scrolling on space key in this specific case
|
|
19672
18097
|
event.preventDefault();
|
|
19673
18098
|
this.toggleExpandOrTriggerDefault();
|
|
@@ -19728,8 +18153,8 @@ class ClrTreeNode {
|
|
|
19728
18153
|
}
|
|
19729
18154
|
}
|
|
19730
18155
|
}
|
|
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:
|
|
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\"
|
|
18156
|
+
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 });
|
|
18157
|
+
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\">\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </label>\n </div>\n <div class=\"clr-treenode-content\" (mousedown)=\"focusTreeNode()\" *ngIf=\"!featuresService.selectable\">\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </div>\n\n <ng-template #treenodeContent>\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 </ng-template>\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: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "component", type: RecursiveChildren, selector: "clr-recursive-children", inputs: ["parent", "children"] }], animations: [
|
|
19733
18158
|
trigger('toggleChildrenAnim', [
|
|
19734
18159
|
transition('collapsed => expanded', [style({ height: 0 }), animate(200, style({ height: '*' }))]),
|
|
19735
18160
|
transition('expanded => collapsed', [style({ height: '*' }), animate(200, style({ height: 0 }))]),
|
|
@@ -19748,7 +18173,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
19748
18173
|
]),
|
|
19749
18174
|
], host: {
|
|
19750
18175
|
'[class.clr-tree-node]': 'true',
|
|
19751
|
-
}, 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\"
|
|
18176
|
+
}, 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\">\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </label>\n </div>\n <div class=\"clr-treenode-content\" (mousedown)=\"focusTreeNode()\" *ngIf=\"!featuresService.selectable\">\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </div>\n\n <ng-template #treenodeContent>\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 </ng-template>\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" }]
|
|
19752
18177
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
19753
18178
|
type: Inject,
|
|
19754
18179
|
args: [PLATFORM_ID]
|
|
@@ -19756,11 +18181,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
19756
18181
|
type: Optional
|
|
19757
18182
|
}, {
|
|
19758
18183
|
type: SkipSelf
|
|
19759
|
-
}] }, { type:
|
|
19760
|
-
type: Optional
|
|
19761
|
-
}, {
|
|
19762
|
-
type: Self
|
|
19763
|
-
}] }, { type: TreeFeaturesService }, { type: IfExpandService }, { type: ClrCommonStringsService }, { type: TreeFocusManagerService }, { type: i0.Injector }]; }, propDecorators: { selected: [{
|
|
18184
|
+
}] }, { type: TreeFeaturesService }, { type: IfExpandService }, { type: ClrCommonStringsService }, { type: TreeFocusManagerService }, { type: i0.ElementRef }, { type: i0.Injector }]; }, propDecorators: { selected: [{
|
|
19764
18185
|
type: Input,
|
|
19765
18186
|
args: ['clrSelected']
|
|
19766
18187
|
}], selectedChange: [{
|
|
@@ -19772,6 +18193,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
19772
18193
|
}], expanded: [{
|
|
19773
18194
|
type: Input,
|
|
19774
18195
|
args: ['clrExpanded']
|
|
18196
|
+
}], clrForTypeAhead: [{
|
|
18197
|
+
type: Input,
|
|
18198
|
+
args: ['clrForTypeAhead']
|
|
19775
18199
|
}], expandedChange: [{
|
|
19776
18200
|
type: Output,
|
|
19777
18201
|
args: ['clrExpandedChange']
|
|
@@ -19782,6 +18206,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
19782
18206
|
type: ContentChildren,
|
|
19783
18207
|
args: [ClrTreeNodeLink, { descendants: false }]
|
|
19784
18208
|
}] } });
|
|
18209
|
+
function trimAndLowerCase(value) {
|
|
18210
|
+
return value.toLocaleLowerCase().trim();
|
|
18211
|
+
}
|
|
19785
18212
|
|
|
19786
18213
|
/*
|
|
19787
18214
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -20034,10 +18461,10 @@ class DropdownFocusHandler {
|
|
|
20034
18461
|
// whether root container or not, tab key should always toggle (i.e. close) the container
|
|
20035
18462
|
this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.tab', event => this.toggleService.toggleWithEvent(event)));
|
|
20036
18463
|
if (this.parent) {
|
|
20037
|
-
// if it's a nested container, pressing
|
|
18464
|
+
// if it's a nested container, pressing escape has the same effect as pressing left key, which closes the current
|
|
20038
18465
|
// popup and moves up to its parent. Here, we stop propagation so that the parent container
|
|
20039
|
-
// doesn't receive the
|
|
20040
|
-
this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.
|
|
18466
|
+
// doesn't receive the escape keydown
|
|
18467
|
+
this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.escape', event => {
|
|
20041
18468
|
this.focusService.move(ArrowKeyDirection.LEFT);
|
|
20042
18469
|
event.stopPropagation();
|
|
20043
18470
|
}));
|
|
@@ -20045,8 +18472,8 @@ class DropdownFocusHandler {
|
|
|
20045
18472
|
else {
|
|
20046
18473
|
// The root container is the only one we register to the focus service, others do not need focus
|
|
20047
18474
|
this.focusService.registerContainer(el);
|
|
20048
|
-
// The root container will simply close the container when
|
|
20049
|
-
this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.
|
|
18475
|
+
// The root container will simply close the container when escape key is pressed
|
|
18476
|
+
this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.escape', event => this.toggleService.toggleWithEvent(event)));
|
|
20050
18477
|
// When the user moves focus outside of the menu, we close the dropdown
|
|
20051
18478
|
this._unlistenFuncs.push(this.renderer.listen(el, 'blur', event => {
|
|
20052
18479
|
// we clear out any existing focus on the items
|
|
@@ -20264,13 +18691,10 @@ const BASIC_FOCUSABLE_ITEM_PROVIDER = [
|
|
|
20264
18691
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
20265
18692
|
*/
|
|
20266
18693
|
class ClrDropdownItem {
|
|
20267
|
-
constructor(dropdown,
|
|
18694
|
+
constructor(dropdown, _dropdownService, focusableItem) {
|
|
20268
18695
|
this.dropdown = dropdown;
|
|
20269
|
-
this.el = el;
|
|
20270
18696
|
this._dropdownService = _dropdownService;
|
|
20271
|
-
this.renderer = renderer;
|
|
20272
18697
|
this.focusableItem = focusableItem;
|
|
20273
|
-
this.setByDeprecatedDisabled = false;
|
|
20274
18698
|
}
|
|
20275
18699
|
set disabled(value) {
|
|
20276
18700
|
// Empty string attribute evaluates to false but should disable the item, so we need to add a special case for it.
|
|
@@ -20279,17 +18703,6 @@ class ClrDropdownItem {
|
|
|
20279
18703
|
get disabled() {
|
|
20280
18704
|
return this.focusableItem.disabled;
|
|
20281
18705
|
}
|
|
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
18706
|
/**
|
|
20294
18707
|
* Let you overwrite the focusable auto increment id.
|
|
20295
18708
|
*/
|
|
@@ -20299,22 +18712,28 @@ class ClrDropdownItem {
|
|
|
20299
18712
|
get dropdownItemId() {
|
|
20300
18713
|
return this.focusableItem.id;
|
|
20301
18714
|
}
|
|
20302
|
-
ngAfterViewInit() {
|
|
20303
|
-
this.unlisten = this.renderer.listen(this.el.nativeElement, 'click', () => this.onDropdownItemClick());
|
|
20304
|
-
}
|
|
20305
18715
|
onDropdownItemClick() {
|
|
20306
|
-
|
|
20307
|
-
|
|
20308
|
-
|
|
18716
|
+
// Ensure that the dropdown is closed after custom dropdown item click event handlers have run.
|
|
18717
|
+
setTimeout(() => {
|
|
18718
|
+
if (this.dropdown.isMenuClosable && !this.disabled) {
|
|
18719
|
+
this._dropdownService.closeMenus();
|
|
18720
|
+
}
|
|
18721
|
+
});
|
|
20309
18722
|
}
|
|
20310
|
-
|
|
20311
|
-
|
|
20312
|
-
|
|
18723
|
+
onSpaceKeydown($event) {
|
|
18724
|
+
this.stopImmediatePropagationIfDisabled($event);
|
|
18725
|
+
}
|
|
18726
|
+
onEnterKeydown($event) {
|
|
18727
|
+
this.stopImmediatePropagationIfDisabled($event);
|
|
18728
|
+
}
|
|
18729
|
+
stopImmediatePropagationIfDisabled($event) {
|
|
18730
|
+
if (this.disabled) {
|
|
18731
|
+
$event.stopImmediatePropagation();
|
|
20313
18732
|
}
|
|
20314
18733
|
}
|
|
20315
18734
|
}
|
|
20316
|
-
ClrDropdownItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDropdownItem, deps: [{ token: ClrDropdown }, { token:
|
|
20317
|
-
ClrDropdownItem.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: ClrDropdownItem, selector: "[clrDropdownItem]", inputs: { disabled: ["clrDisabled", "disabled"],
|
|
18735
|
+
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 });
|
|
18736
|
+
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
18737
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDropdownItem, decorators: [{
|
|
20319
18738
|
type: Directive,
|
|
20320
18739
|
args: [{
|
|
@@ -20324,20 +18743,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
20324
18743
|
'[class.dropdown-item]': 'true',
|
|
20325
18744
|
'[attr.role]': '"menuitem"',
|
|
20326
18745
|
'[attr.aria-disabled]': 'disabled',
|
|
20327
|
-
'[attr.disabled]': "(disabled && setByDeprecatedDisabled)? '' : null",
|
|
20328
18746
|
'[attr.id]': 'dropdownItemId',
|
|
20329
18747
|
},
|
|
20330
18748
|
providers: [BASIC_FOCUSABLE_ITEM_PROVIDER],
|
|
20331
18749
|
}]
|
|
20332
|
-
}], ctorParameters: function () { return [{ type: ClrDropdown }, { type:
|
|
18750
|
+
}], ctorParameters: function () { return [{ type: ClrDropdown }, { type: RootDropdownService }, { type: FocusableItem }]; }, propDecorators: { disabled: [{
|
|
20333
18751
|
type: Input,
|
|
20334
18752
|
args: ['clrDisabled']
|
|
20335
|
-
}], disabledDeprecated: [{
|
|
20336
|
-
type: Input,
|
|
20337
|
-
args: ['disabled']
|
|
20338
18753
|
}], dropdownItemId: [{
|
|
20339
18754
|
type: Input,
|
|
20340
18755
|
args: ['id']
|
|
18756
|
+
}], onDropdownItemClick: [{
|
|
18757
|
+
type: HostListener,
|
|
18758
|
+
args: ['click']
|
|
18759
|
+
}], onSpaceKeydown: [{
|
|
18760
|
+
type: HostListener,
|
|
18761
|
+
args: ['keydown.space', ['$event']]
|
|
18762
|
+
}], onEnterKeydown: [{
|
|
18763
|
+
type: HostListener,
|
|
18764
|
+
args: ['keydown.enter', ['$event']]
|
|
20341
18765
|
}] } });
|
|
20342
18766
|
|
|
20343
18767
|
/*
|
|
@@ -20610,7 +19034,6 @@ class Popover {
|
|
|
20610
19034
|
* This software is released under MIT license.
|
|
20611
19035
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
20612
19036
|
*/
|
|
20613
|
-
// Literally any annotation would work here, but writing our own @HoneyBadger annotation feels overkill.
|
|
20614
19037
|
class AbstractPopover {
|
|
20615
19038
|
constructor(injector, parentHost) {
|
|
20616
19039
|
this.parentHost = parentHost;
|
|
@@ -20689,7 +19112,7 @@ class AbstractPopover {
|
|
|
20689
19112
|
this.ngZone.runOutsideAngular(() => {
|
|
20690
19113
|
this.documentESCListener = this.renderer.listen('document', 'keydown', event => {
|
|
20691
19114
|
if (event && event.key) {
|
|
20692
|
-
if (event.key ===
|
|
19115
|
+
if (normalizeKey(event.key) === Keys.Escape) {
|
|
20693
19116
|
this.ngZone.run(() => {
|
|
20694
19117
|
this.toggleService.open = false;
|
|
20695
19118
|
this.ref.markForCheck();
|
|
@@ -21833,143 +20256,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
21833
20256
|
}]
|
|
21834
20257
|
}], ctorParameters: function () { return [{ type: ResponsiveNavigationService }, { type: ClrCommonStringsService }]; } });
|
|
21835
20258
|
|
|
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
20259
|
/*
|
|
21974
20260
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
21975
20261
|
* This software is released under MIT license.
|
|
@@ -21988,11 +20274,22 @@ const createCdsCloseButton = (document, ariaLabel) => {
|
|
|
21988
20274
|
cdsCloseButton.className = 'clr-nav-close';
|
|
21989
20275
|
return cdsCloseButton;
|
|
21990
20276
|
};
|
|
21991
|
-
class
|
|
21992
|
-
|
|
21993
|
-
|
|
20277
|
+
class StandaloneCdkTrapFocus extends CdkTrapFocus {
|
|
20278
|
+
}
|
|
20279
|
+
StandaloneCdkTrapFocus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: StandaloneCdkTrapFocus, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
20280
|
+
StandaloneCdkTrapFocus.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: StandaloneCdkTrapFocus, isStandalone: true, usesInheritance: true, ngImport: i0 });
|
|
20281
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: StandaloneCdkTrapFocus, decorators: [{
|
|
20282
|
+
type: Directive,
|
|
20283
|
+
args: [{
|
|
20284
|
+
standalone: true,
|
|
20285
|
+
}]
|
|
20286
|
+
}] });
|
|
20287
|
+
class ClrNavLevel {
|
|
20288
|
+
constructor(platformId, cdkTrapFocus, responsiveNavService, elementRef, renderer, injector) {
|
|
20289
|
+
this.cdkTrapFocus = cdkTrapFocus;
|
|
21994
20290
|
this.responsiveNavService = responsiveNavService;
|
|
21995
20291
|
this.elementRef = elementRef;
|
|
20292
|
+
this.renderer = renderer;
|
|
21996
20293
|
this._isOpen = false;
|
|
21997
20294
|
if (isPlatformBrowser(platformId)) {
|
|
21998
20295
|
this._document = injector.get(DOCUMENT);
|
|
@@ -22012,6 +20309,7 @@ class ClrNavLevel extends FocusTrap {
|
|
|
22012
20309
|
.subscribe(() => this.close()));
|
|
22013
20310
|
}
|
|
22014
20311
|
ngOnInit() {
|
|
20312
|
+
this.cdkTrapFocus.enabled = false;
|
|
22015
20313
|
if (!this.closeButtonAriaLabel) {
|
|
22016
20314
|
this.closeButtonAriaLabel =
|
|
22017
20315
|
this._level === ResponsiveNavCodes.NAV_LEVEL_1
|
|
@@ -22069,14 +20367,14 @@ class ClrNavLevel extends FocusTrap {
|
|
|
22069
20367
|
open() {
|
|
22070
20368
|
this._isOpen = true;
|
|
22071
20369
|
this.showNavigation();
|
|
22072
|
-
this.
|
|
20370
|
+
this.cdkTrapFocus.enabled = true;
|
|
22073
20371
|
this.showCloseButton();
|
|
22074
20372
|
this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_OPEN, this.level);
|
|
22075
20373
|
}
|
|
22076
20374
|
close() {
|
|
22077
20375
|
this._isOpen = false;
|
|
22078
20376
|
this.hideNavigation();
|
|
22079
|
-
this.
|
|
20377
|
+
this.cdkTrapFocus.enabled = false;
|
|
22080
20378
|
this.hideCloseButton();
|
|
22081
20379
|
this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_CLOSE, this.level);
|
|
22082
20380
|
}
|
|
@@ -22121,17 +20419,18 @@ class ClrNavLevel extends FocusTrap {
|
|
|
22121
20419
|
this._subscription.unsubscribe();
|
|
22122
20420
|
}
|
|
22123
20421
|
}
|
|
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)" } },
|
|
20422
|
+
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 });
|
|
20423
|
+
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
20424
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrNavLevel, decorators: [{
|
|
22127
20425
|
type: Directive,
|
|
22128
20426
|
args: [{
|
|
22129
20427
|
selector: '[clr-nav-level]',
|
|
20428
|
+
hostDirectives: [StandaloneCdkTrapFocus],
|
|
22130
20429
|
}]
|
|
22131
20430
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
22132
20431
|
type: Inject,
|
|
22133
20432
|
args: [PLATFORM_ID]
|
|
22134
|
-
}] }, { type: ResponsiveNavigationService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }]; }, propDecorators: { _level: [{
|
|
20433
|
+
}] }, { type: StandaloneCdkTrapFocus }, { type: ResponsiveNavigationService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }]; }, propDecorators: { _level: [{
|
|
22135
20434
|
type: Input,
|
|
22136
20435
|
args: ['clr-nav-level']
|
|
22137
20436
|
}], closeButtonAriaLabel: [{
|
|
@@ -22772,7 +21071,7 @@ ClrTabs.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0
|
|
|
22772
21071
|
<!--tab links in overflow menu-->
|
|
22773
21072
|
<clr-tab-overflow-content
|
|
22774
21073
|
*ngIf="toggleService.open"
|
|
22775
|
-
(document:keydown.
|
|
21074
|
+
(document:keydown.escape)="closeOnEscapeKey()"
|
|
22776
21075
|
(document:click)="closeOnOutsideClick($event, tabOverflowTrigger)"
|
|
22777
21076
|
(focusout)="closeOnFocusOut($event)"
|
|
22778
21077
|
>
|
|
@@ -22836,7 +21135,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
22836
21135
|
<!--tab links in overflow menu-->
|
|
22837
21136
|
<clr-tab-overflow-content
|
|
22838
21137
|
*ngIf="toggleService.open"
|
|
22839
|
-
(document:keydown.
|
|
21138
|
+
(document:keydown.escape)="closeOnEscapeKey()"
|
|
22840
21139
|
(document:click)="closeOnOutsideClick($event, tabOverflowTrigger)"
|
|
22841
21140
|
(focusout)="closeOnFocusOut($event)"
|
|
22842
21141
|
>
|
|
@@ -23123,7 +21422,6 @@ class ClrVerticalNavGroup {
|
|
|
23123
21422
|
this._navService = _navService;
|
|
23124
21423
|
this.commonStrings = commonStrings;
|
|
23125
21424
|
this.wasExpanded = false;
|
|
23126
|
-
this.groupLabel = this.commonStrings.keys.verticalNavGroupToggle;
|
|
23127
21425
|
this.expandedChange = new EventEmitter(true);
|
|
23128
21426
|
this._subscriptions = [];
|
|
23129
21427
|
this._expandAnimationState = COLLAPSED_STATE;
|
|
@@ -23233,7 +21531,7 @@ class ClrVerticalNavGroup {
|
|
|
23233
21531
|
}
|
|
23234
21532
|
}
|
|
23235
21533
|
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: {
|
|
21534
|
+
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
21535
|
trigger('clrExpand', [
|
|
23238
21536
|
state(EXPANDED_STATE, style({ height: '*' })),
|
|
23239
21537
|
state(COLLAPSED_STATE, style({ height: 0, visibility: 'hidden' })),
|
|
@@ -23248,13 +21546,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
23248
21546
|
state(COLLAPSED_STATE, style({ height: 0, visibility: 'hidden' })),
|
|
23249
21547
|
transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, animate('0.2s ease-in-out')),
|
|
23250
21548
|
]),
|
|
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
|
|
21549
|
+
], 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
21550
|
}], ctorParameters: function () { return [{ type: IfExpandService }, { type: VerticalNavGroupRegistrationService }, { type: VerticalNavGroupService }, { type: VerticalNavService }, { type: ClrCommonStringsService }]; }, propDecorators: { expanded: [{
|
|
23253
21551
|
type: HostBinding,
|
|
23254
21552
|
args: ['class.is-expanded']
|
|
23255
|
-
}], groupLabel: [{
|
|
23256
|
-
type: Input,
|
|
23257
|
-
args: ['clrVerticalNavGroupLabel']
|
|
23258
21553
|
}], userExpandedInput: [{
|
|
23259
21554
|
type: Input,
|
|
23260
21555
|
args: ['clrVerticalNavGroupExpanded']
|
|
@@ -23449,15 +21744,13 @@ class ClrModal {
|
|
|
23449
21744
|
this.closeButtonAriaLabel = this.commonStrings.keys.close;
|
|
23450
21745
|
this.staticBackdrop = true;
|
|
23451
21746
|
this.skipAnimation = 'false';
|
|
23452
|
-
// presently this is only used by wizards
|
|
23453
|
-
this.bypassScrollService = false;
|
|
23454
21747
|
this.stopClose = false;
|
|
23455
21748
|
this.altClose = new EventEmitter(false);
|
|
23456
21749
|
this.labelledBy = this.modalId;
|
|
23457
21750
|
}
|
|
23458
21751
|
// Detect when _open is set to true and set no-scrolling to true
|
|
23459
21752
|
ngOnChanges(changes) {
|
|
23460
|
-
if (
|
|
21753
|
+
if (changes && Object.prototype.hasOwnProperty.call(changes, '_open')) {
|
|
23461
21754
|
if (changes._open.currentValue) {
|
|
23462
21755
|
this._scrollingService.stopScrolling();
|
|
23463
21756
|
}
|
|
@@ -23485,8 +21778,6 @@ class ClrModal {
|
|
|
23485
21778
|
return;
|
|
23486
21779
|
}
|
|
23487
21780
|
this._open = false;
|
|
23488
|
-
// SPECME
|
|
23489
|
-
this.focusTrap.setPreviousFocus(); // Handles moving focus back to the element that had it before.
|
|
23490
21781
|
}
|
|
23491
21782
|
fadeDone(e) {
|
|
23492
21783
|
if (e.toState === 'void') {
|
|
@@ -23496,7 +21787,7 @@ class ClrModal {
|
|
|
23496
21787
|
}
|
|
23497
21788
|
}
|
|
23498
21789
|
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"],
|
|
21790
|
+
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 [cdkTrapFocusAutoCapture]=\"true\" 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
21791
|
trigger('fadeDown', [
|
|
23501
21792
|
transition('* => false', [style({ opacity: 0, transform: 'translate(0, -25%)' }), animate('0.2s ease-in-out')]),
|
|
23502
21793
|
transition('false => *', [animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(0, -25%)' }))]),
|
|
@@ -23517,11 +21808,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
23517
21808
|
transition('void => *', [style({ opacity: 0 }), animate('0.2s ease-in-out', style({ opacity: 0.85 }))]),
|
|
23518
21809
|
transition('* => void', [animate('0.2s ease-in-out', style({ opacity: 0 }))]),
|
|
23519
21810
|
]),
|
|
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
|
|
23521
|
-
}], ctorParameters: function () { return [{ type: ScrollingService }, { type: ClrCommonStringsService }]; }, propDecorators: {
|
|
23522
|
-
type: ViewChild,
|
|
23523
|
-
args: [FocusTrapDirective]
|
|
23524
|
-
}], _open: [{
|
|
21811
|
+
], 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 [cdkTrapFocusAutoCapture]=\"true\" 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"] }]
|
|
21812
|
+
}], ctorParameters: function () { return [{ type: ScrollingService }, { type: ClrCommonStringsService }]; }, propDecorators: { _open: [{
|
|
23525
21813
|
type: HostBinding,
|
|
23526
21814
|
args: ['class.open']
|
|
23527
21815
|
}, {
|
|
@@ -23545,9 +21833,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
23545
21833
|
}], skipAnimation: [{
|
|
23546
21834
|
type: Input,
|
|
23547
21835
|
args: ['clrModalSkipAnimation']
|
|
23548
|
-
}], bypassScrollService: [{
|
|
23549
|
-
type: Input,
|
|
23550
|
-
args: ['clrModalOverrideScrollService']
|
|
23551
21836
|
}], stopClose: [{
|
|
23552
21837
|
type: Input,
|
|
23553
21838
|
args: ['clrModalPreventClose']
|
|
@@ -23636,12 +21921,12 @@ class ClrModalModule {
|
|
|
23636
21921
|
}
|
|
23637
21922
|
}
|
|
23638
21923
|
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,
|
|
23640
|
-
ClrModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrModalModule, imports: [CommonModule,
|
|
21924
|
+
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] });
|
|
21925
|
+
ClrModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrModalModule, imports: [CommonModule, CdkTrapFocusModule, ClrIconModule, ClrFocusOnViewInitModule, ClrIconModule, ClrFocusOnViewInitModule] });
|
|
23641
21926
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrModalModule, decorators: [{
|
|
23642
21927
|
type: NgModule,
|
|
23643
21928
|
args: [{
|
|
23644
|
-
imports: [CommonModule,
|
|
21929
|
+
imports: [CommonModule, CdkTrapFocusModule, ClrIconModule, ClrFocusOnViewInitModule],
|
|
23645
21930
|
declarations: [CLR_MODAL_DIRECTIVES],
|
|
23646
21931
|
exports: [CLR_MODAL_DIRECTIVES, ClrIconModule, ClrFocusOnViewInitModule],
|
|
23647
21932
|
}]
|
|
@@ -23876,6 +22161,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
23876
22161
|
type: Injectable
|
|
23877
22162
|
}] });
|
|
23878
22163
|
|
|
22164
|
+
/*
|
|
22165
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
22166
|
+
* This software is released under MIT license.
|
|
22167
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
22168
|
+
*/
|
|
22169
|
+
class TooltipMouseService {
|
|
22170
|
+
constructor(toggleService) {
|
|
22171
|
+
this.toggleService = toggleService;
|
|
22172
|
+
}
|
|
22173
|
+
onMouseEnterTrigger() {
|
|
22174
|
+
this.mouseOverTrigger = true;
|
|
22175
|
+
this.toggleService.open = true;
|
|
22176
|
+
}
|
|
22177
|
+
onMouseLeaveTrigger() {
|
|
22178
|
+
this.mouseOverTrigger = false;
|
|
22179
|
+
this.hideIfMouseOut();
|
|
22180
|
+
}
|
|
22181
|
+
onMouseEnterContent() {
|
|
22182
|
+
this.mouseOverContent = true;
|
|
22183
|
+
}
|
|
22184
|
+
onMouseLeaveContent() {
|
|
22185
|
+
this.mouseOverContent = false;
|
|
22186
|
+
this.hideIfMouseOut();
|
|
22187
|
+
}
|
|
22188
|
+
hideIfMouseOut() {
|
|
22189
|
+
// A zero timeout is used so that the code has a chance to update
|
|
22190
|
+
// the `mouseOverContent` property after the user moves the mouse from the trigger to the content.
|
|
22191
|
+
setTimeout(() => {
|
|
22192
|
+
if (!this.mouseOverTrigger && !this.mouseOverContent) {
|
|
22193
|
+
this.toggleService.open = false;
|
|
22194
|
+
}
|
|
22195
|
+
}, 0);
|
|
22196
|
+
}
|
|
22197
|
+
}
|
|
22198
|
+
TooltipMouseService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: TooltipMouseService, deps: [{ token: ClrPopoverToggleService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
22199
|
+
TooltipMouseService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: TooltipMouseService });
|
|
22200
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: TooltipMouseService, decorators: [{
|
|
22201
|
+
type: Injectable
|
|
22202
|
+
}], ctorParameters: function () { return [{ type: ClrPopoverToggleService }]; } });
|
|
22203
|
+
|
|
23879
22204
|
/*
|
|
23880
22205
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
23881
22206
|
* This software is released under MIT license.
|
|
@@ -23884,7 +22209,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
23884
22209
|
class ClrTooltip {
|
|
23885
22210
|
}
|
|
23886
22211
|
ClrTooltip.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrTooltip, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
23887
|
-
ClrTooltip.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrTooltip, selector: "clr-tooltip", host: { properties: { "class.tooltip": "true" } }, providers: [
|
|
22212
|
+
ClrTooltip.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrTooltip, selector: "clr-tooltip", host: { properties: { "class.tooltip": "true" } }, providers: [
|
|
22213
|
+
ClrPopoverToggleService,
|
|
22214
|
+
{ provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef },
|
|
22215
|
+
TooltipIdService,
|
|
22216
|
+
TooltipMouseService,
|
|
22217
|
+
], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
|
|
23888
22218
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrTooltip, decorators: [{
|
|
23889
22219
|
type: Component,
|
|
23890
22220
|
args: [{
|
|
@@ -23893,7 +22223,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
23893
22223
|
host: {
|
|
23894
22224
|
'[class.tooltip]': 'true',
|
|
23895
22225
|
},
|
|
23896
|
-
providers: [
|
|
22226
|
+
providers: [
|
|
22227
|
+
ClrPopoverToggleService,
|
|
22228
|
+
{ provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef },
|
|
22229
|
+
TooltipIdService,
|
|
22230
|
+
TooltipMouseService,
|
|
22231
|
+
],
|
|
23897
22232
|
}]
|
|
23898
22233
|
}] });
|
|
23899
22234
|
|
|
@@ -23916,9 +22251,10 @@ const SIZES = ['xs', 'sm', 'md', 'lg'];
|
|
|
23916
22251
|
const defaultPosition = 'right';
|
|
23917
22252
|
const defaultSize = 'sm';
|
|
23918
22253
|
class ClrTooltipContent extends AbstractPopover {
|
|
23919
|
-
constructor(injector, parentHost, tooltipIdService) {
|
|
22254
|
+
constructor(injector, parentHost, tooltipIdService, tooltipMouseService) {
|
|
23920
22255
|
super(injector, parentHost);
|
|
23921
22256
|
this.tooltipIdService = tooltipIdService;
|
|
22257
|
+
this.tooltipMouseService = tooltipMouseService;
|
|
23922
22258
|
if (!parentHost) {
|
|
23923
22259
|
throw new Error('clr-tooltip-content should only be used inside of a clr-tooltip');
|
|
23924
22260
|
}
|
|
@@ -23984,13 +22320,19 @@ class ClrTooltipContent extends AbstractPopover {
|
|
|
23984
22320
|
this.size = this.size || defaultSize;
|
|
23985
22321
|
this.position = this.position || defaultPosition;
|
|
23986
22322
|
}
|
|
22323
|
+
onMouseEnter() {
|
|
22324
|
+
this.tooltipMouseService.onMouseEnterContent();
|
|
22325
|
+
}
|
|
22326
|
+
onMouseLeave() {
|
|
22327
|
+
this.tooltipMouseService.onMouseLeaveContent();
|
|
22328
|
+
}
|
|
23987
22329
|
updateCssClass({ oldClass, newClass }) {
|
|
23988
22330
|
this.renderer.removeClass(this.el.nativeElement, oldClass);
|
|
23989
22331
|
this.renderer.addClass(this.el.nativeElement, newClass);
|
|
23990
22332
|
}
|
|
23991
22333
|
}
|
|
23992
|
-
ClrTooltipContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrTooltipContent, deps: [{ token: i0.Injector }, { token: POPOVER_HOST_ANCHOR, optional: true }, { token: TooltipIdService }], target: i0.ɵɵFactoryTarget.Component });
|
|
23993
|
-
ClrTooltipContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrTooltipContent, selector: "clr-tooltip-content", inputs: { id: "id", position: ["clrPosition", "position"], size: ["clrSize", "size"] }, host: { properties: { "class.tooltip-content": "true", "style.opacity": "1", "attr.role": "\"tooltip\"", "id": "id" } }, usesInheritance: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
|
|
22334
|
+
ClrTooltipContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrTooltipContent, deps: [{ token: i0.Injector }, { token: POPOVER_HOST_ANCHOR, optional: true }, { token: TooltipIdService }, { token: TooltipMouseService }], target: i0.ɵɵFactoryTarget.Component });
|
|
22335
|
+
ClrTooltipContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrTooltipContent, selector: "clr-tooltip-content", inputs: { id: "id", position: ["clrPosition", "position"], size: ["clrSize", "size"] }, host: { listeners: { "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()" }, properties: { "class.tooltip-content": "true", "style.opacity": "1", "attr.role": "\"tooltip\"", "id": "id" } }, usesInheritance: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
|
|
23994
22336
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrTooltipContent, decorators: [{
|
|
23995
22337
|
type: Component,
|
|
23996
22338
|
args: [{
|
|
@@ -24008,7 +22350,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
24008
22350
|
}, {
|
|
24009
22351
|
type: Inject,
|
|
24010
22352
|
args: [POPOVER_HOST_ANCHOR]
|
|
24011
|
-
}] }, { type: TooltipIdService }]; }, propDecorators: { id: [{
|
|
22353
|
+
}] }, { type: TooltipIdService }, { type: TooltipMouseService }]; }, propDecorators: { id: [{
|
|
24012
22354
|
type: Input
|
|
24013
22355
|
}], position: [{
|
|
24014
22356
|
type: Input,
|
|
@@ -24016,6 +22358,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
24016
22358
|
}], size: [{
|
|
24017
22359
|
type: Input,
|
|
24018
22360
|
args: ['clrSize']
|
|
22361
|
+
}], onMouseEnter: [{
|
|
22362
|
+
type: HostListener,
|
|
22363
|
+
args: ['mouseenter']
|
|
22364
|
+
}], onMouseLeave: [{
|
|
22365
|
+
type: HostListener,
|
|
22366
|
+
args: ['mouseleave']
|
|
24019
22367
|
}] } });
|
|
24020
22368
|
|
|
24021
22369
|
/*
|
|
@@ -24024,25 +22372,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
24024
22372
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
24025
22373
|
*/
|
|
24026
22374
|
class ClrTooltipTrigger {
|
|
24027
|
-
constructor(toggleService, tooltipIdService) {
|
|
22375
|
+
constructor(toggleService, tooltipIdService, tooltipMouseService) {
|
|
24028
22376
|
this.toggleService = toggleService;
|
|
24029
22377
|
this.tooltipIdService = tooltipIdService;
|
|
22378
|
+
this.tooltipMouseService = tooltipMouseService;
|
|
24030
22379
|
this.subs = [];
|
|
24031
22380
|
// The aria-described by comes from the id of content. It
|
|
24032
22381
|
this.subs.push(this.tooltipIdService.id.subscribe(tooltipId => (this.ariaDescribedBy = tooltipId)));
|
|
24033
22382
|
}
|
|
22383
|
+
ngOnDestroy() {
|
|
22384
|
+
this.subs.forEach(sub => sub.unsubscribe());
|
|
22385
|
+
}
|
|
24034
22386
|
showTooltip() {
|
|
24035
22387
|
this.toggleService.open = true;
|
|
24036
22388
|
}
|
|
24037
22389
|
hideTooltip() {
|
|
24038
22390
|
this.toggleService.open = false;
|
|
24039
22391
|
}
|
|
24040
|
-
|
|
24041
|
-
this.
|
|
22392
|
+
onMouseEnter() {
|
|
22393
|
+
this.tooltipMouseService.onMouseEnterTrigger();
|
|
22394
|
+
}
|
|
22395
|
+
onMouseLeave() {
|
|
22396
|
+
this.tooltipMouseService.onMouseLeaveTrigger();
|
|
24042
22397
|
}
|
|
24043
22398
|
}
|
|
24044
|
-
ClrTooltipTrigger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrTooltipTrigger, deps: [{ token: ClrPopoverToggleService }, { token: TooltipIdService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
24045
|
-
ClrTooltipTrigger.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: ClrTooltipTrigger, selector: "[clrTooltipTrigger]", host: { attributes: { "tabindex": "0" }, listeners: { "
|
|
22399
|
+
ClrTooltipTrigger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrTooltipTrigger, deps: [{ token: ClrPopoverToggleService }, { token: TooltipIdService }, { token: TooltipMouseService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
22400
|
+
ClrTooltipTrigger.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: ClrTooltipTrigger, selector: "[clrTooltipTrigger]", host: { attributes: { "tabindex": "0" }, listeners: { "focus": "showTooltip()", "blur": "hideTooltip()", "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()" }, properties: { "class.tooltip-trigger": "true", "attr.aria-describedby": "ariaDescribedBy", "attr.role": "\"button\"" } }, ngImport: i0 });
|
|
24046
22401
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrTooltipTrigger, decorators: [{
|
|
24047
22402
|
type: Directive,
|
|
24048
22403
|
args: [{
|
|
@@ -24054,18 +22409,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
24054
22409
|
'[attr.role]': '"button"',
|
|
24055
22410
|
},
|
|
24056
22411
|
}]
|
|
24057
|
-
}], ctorParameters: function () { return [{ type: ClrPopoverToggleService }, { type: TooltipIdService }]; }, propDecorators: { showTooltip: [{
|
|
24058
|
-
type: HostListener,
|
|
24059
|
-
args: ['mouseenter']
|
|
24060
|
-
}, {
|
|
22412
|
+
}], ctorParameters: function () { return [{ type: ClrPopoverToggleService }, { type: TooltipIdService }, { type: TooltipMouseService }]; }, propDecorators: { showTooltip: [{
|
|
24061
22413
|
type: HostListener,
|
|
24062
22414
|
args: ['focus']
|
|
24063
22415
|
}], hideTooltip: [{
|
|
24064
|
-
type: HostListener,
|
|
24065
|
-
args: ['mouseleave']
|
|
24066
|
-
}, {
|
|
24067
22416
|
type: HostListener,
|
|
24068
22417
|
args: ['blur']
|
|
22418
|
+
}], onMouseEnter: [{
|
|
22419
|
+
type: HostListener,
|
|
22420
|
+
args: ['mouseenter']
|
|
22421
|
+
}], onMouseLeave: [{
|
|
22422
|
+
type: HostListener,
|
|
22423
|
+
args: ['mouseleave']
|
|
24069
22424
|
}] } });
|
|
24070
22425
|
|
|
24071
22426
|
/*
|
|
@@ -26605,13 +24960,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
26605
24960
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
26606
24961
|
*/
|
|
26607
24962
|
class ClrWizard {
|
|
26608
|
-
constructor(platformId, navService, pageCollection, buttonService, headerActionService,
|
|
24963
|
+
constructor(platformId, navService, pageCollection, buttonService, headerActionService, differs) {
|
|
26609
24964
|
this.platformId = platformId;
|
|
26610
24965
|
this.navService = navService;
|
|
26611
24966
|
this.pageCollection = pageCollection;
|
|
26612
24967
|
this.buttonService = buttonService;
|
|
26613
24968
|
this.headerActionService = headerActionService;
|
|
26614
|
-
this.elementRef = elementRef;
|
|
26615
24969
|
/**
|
|
26616
24970
|
* Set the modal size of the wizard. Set using `[clrWizardSize]` input.
|
|
26617
24971
|
*/
|
|
@@ -26627,13 +24981,6 @@ class ClrWizard {
|
|
|
26627
24981
|
this._stopCancel = false;
|
|
26628
24982
|
this._stopNavigation = false;
|
|
26629
24983
|
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
24984
|
/**
|
|
26638
24985
|
* Emits when the wizard is opened or closed.
|
|
26639
24986
|
* Listen via `(clrWizardOpenChange)` event.
|
|
@@ -26754,9 +25101,6 @@ class ClrWizard {
|
|
|
26754
25101
|
get disableStepnav() {
|
|
26755
25102
|
return this._disableStepnav;
|
|
26756
25103
|
}
|
|
26757
|
-
get stopModalAnimations() {
|
|
26758
|
-
return this._stopModalAnimations ? 'true' : 'false';
|
|
26759
|
-
}
|
|
26760
25104
|
get currentPage() {
|
|
26761
25105
|
return this.navService.currentPage;
|
|
26762
25106
|
}
|
|
@@ -26769,13 +25113,9 @@ class ClrWizard {
|
|
|
26769
25113
|
get isFirst() {
|
|
26770
25114
|
return this.navService.currentPageIsFirst;
|
|
26771
25115
|
}
|
|
26772
|
-
get isStatic() {
|
|
26773
|
-
return this.elementRef.nativeElement.classList.contains('clr-wizard--inline');
|
|
26774
|
-
}
|
|
26775
25116
|
ngAfterContentInit() {
|
|
26776
25117
|
this.pageCollection.pages = this.pages;
|
|
26777
25118
|
this.headerActionService.wizardHeaderActions = this.headerActions;
|
|
26778
|
-
this.initializeButtons();
|
|
26779
25119
|
}
|
|
26780
25120
|
ngDoCheck() {
|
|
26781
25121
|
this.updateNavOnPageChanges();
|
|
@@ -26977,12 +25317,6 @@ class ClrWizard {
|
|
|
26977
25317
|
changes.forEachRemovedItem(() => this.navService.updateNavigation());
|
|
26978
25318
|
}
|
|
26979
25319
|
}
|
|
26980
|
-
initializeButtons() {
|
|
26981
|
-
// Only trigger buttons ready if default is open (inlined)
|
|
26982
|
-
if (this._open) {
|
|
26983
|
-
this.buttonService.buttonsReady = true;
|
|
26984
|
-
}
|
|
26985
|
-
}
|
|
26986
25320
|
emitWizardFinished() {
|
|
26987
25321
|
if (!this.stopNext) {
|
|
26988
25322
|
this.forceFinish();
|
|
@@ -26990,8 +25324,8 @@ class ClrWizard {
|
|
|
26990
25324
|
this.wizardFinished.emit();
|
|
26991
25325
|
}
|
|
26992
25326
|
}
|
|
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.
|
|
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"]
|
|
25327
|
+
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 });
|
|
25328
|
+
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
25329
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrWizard, decorators: [{
|
|
26996
25330
|
type: Component,
|
|
26997
25331
|
args: [{ selector: 'clr-wizard', providers: [WizardNavigationService, PageCollectionService, ButtonHubService, HeaderActionService], host: {
|
|
@@ -27000,11 +25334,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
27000
25334
|
'[class.wizard-lg]': "size == 'lg'",
|
|
27001
25335
|
'[class.wizard-xl]': "size == 'xl'",
|
|
27002
25336
|
'[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 [
|
|
25337
|
+
}, 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
25338
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
27005
25339
|
type: Inject,
|
|
27006
25340
|
args: [PLATFORM_ID]
|
|
27007
|
-
}] }, { type: WizardNavigationService }, { type: PageCollectionService }, { type: ButtonHubService }, { type: HeaderActionService }, { type: i0.
|
|
25341
|
+
}] }, { type: WizardNavigationService }, { type: PageCollectionService }, { type: ButtonHubService }, { type: HeaderActionService }, { type: i0.IterableDiffers }]; }, propDecorators: { size: [{
|
|
27008
25342
|
type: Input,
|
|
27009
25343
|
args: ['clrWizardSize']
|
|
27010
25344
|
}], closable: [{
|
|
@@ -27028,9 +25362,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
27028
25362
|
}], disableStepnav: [{
|
|
27029
25363
|
type: Input,
|
|
27030
25364
|
args: ['clrWizardDisableStepnav']
|
|
27031
|
-
}], _stopModalAnimations: [{
|
|
27032
|
-
type: Input,
|
|
27033
|
-
args: ['clrWizardPreventModalAnimation']
|
|
27034
25365
|
}], _openChanged: [{
|
|
27035
25366
|
type: Output,
|
|
27036
25367
|
args: ['clrWizardOpenChange']
|
|
@@ -27331,15 +25662,12 @@ ClarityModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version:
|
|
|
27331
25662
|
ClrModalModule,
|
|
27332
25663
|
ClrLoadingModule,
|
|
27333
25664
|
ClrConditionalModule,
|
|
27334
|
-
ClrFocusTrapModule,
|
|
27335
25665
|
ClrFocusOnViewInitModule,
|
|
27336
|
-
ClrForTypeAheadModule,
|
|
27337
25666
|
ClrButtonModule,
|
|
27338
25667
|
ClrFormsModule,
|
|
27339
25668
|
ClrLayoutModule,
|
|
27340
25669
|
ClrPopoverModule,
|
|
27341
25670
|
ClrWizardModule,
|
|
27342
|
-
ClrDragAndDropModule,
|
|
27343
25671
|
ClrStepperModule,
|
|
27344
25672
|
ClrSpinnerModule,
|
|
27345
25673
|
ClrProgressBarModule,
|
|
@@ -27351,15 +25679,12 @@ ClarityModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version:
|
|
|
27351
25679
|
ClrModalModule,
|
|
27352
25680
|
ClrLoadingModule,
|
|
27353
25681
|
ClrConditionalModule,
|
|
27354
|
-
ClrFocusTrapModule,
|
|
27355
25682
|
ClrFocusOnViewInitModule,
|
|
27356
|
-
ClrForTypeAheadModule,
|
|
27357
25683
|
ClrButtonModule,
|
|
27358
25684
|
ClrFormsModule,
|
|
27359
25685
|
ClrLayoutModule,
|
|
27360
25686
|
ClrPopoverModule,
|
|
27361
25687
|
ClrWizardModule,
|
|
27362
|
-
ClrDragAndDropModule,
|
|
27363
25688
|
ClrStepperModule,
|
|
27364
25689
|
ClrSpinnerModule,
|
|
27365
25690
|
ClrProgressBarModule,
|
|
@@ -27375,15 +25700,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
27375
25700
|
ClrModalModule,
|
|
27376
25701
|
ClrLoadingModule,
|
|
27377
25702
|
ClrConditionalModule,
|
|
27378
|
-
ClrFocusTrapModule,
|
|
27379
25703
|
ClrFocusOnViewInitModule,
|
|
27380
|
-
ClrForTypeAheadModule,
|
|
27381
25704
|
ClrButtonModule,
|
|
27382
25705
|
ClrFormsModule,
|
|
27383
25706
|
ClrLayoutModule,
|
|
27384
25707
|
ClrPopoverModule,
|
|
27385
25708
|
ClrWizardModule,
|
|
27386
|
-
ClrDragAndDropModule,
|
|
27387
25709
|
ClrStepperModule,
|
|
27388
25710
|
ClrSpinnerModule,
|
|
27389
25711
|
ClrProgressBarModule,
|
|
@@ -27683,5 +26005,5 @@ const CLR_MENU_POSITIONS = [
|
|
|
27683
26005
|
* Generated bundle index. Do not edit.
|
|
27684
26006
|
*/
|
|
27685
26007
|
|
|
27686
|
-
export { CLR_ALERT_DIRECTIVES, CLR_BUTTON_GROUP_DIRECTIVES, CLR_DATAGRID_DIRECTIVES, CLR_DATEPICKER_DIRECTIVES,
|
|
26008
|
+
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
26009
|
//# sourceMappingURL=clr-angular.mjs.map
|