@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/fesm2015/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
|
|
|
@@ -314,7 +315,6 @@ const commonStringsDefault = {
|
|
|
314
315
|
alertCloseButtonAriaLabel: 'Close alert',
|
|
315
316
|
// Date Picker
|
|
316
317
|
datepickerDialogLabel: 'Choose date',
|
|
317
|
-
datepickerToggle: 'Toggle datepicker',
|
|
318
318
|
datepickerToggleChooseDateLabel: 'Choose date',
|
|
319
319
|
datepickerToggleChangeDateLabel: 'Change date, {SELECTED_DATE}',
|
|
320
320
|
datepickerPreviousMonth: 'Previous month',
|
|
@@ -334,7 +334,6 @@ const commonStringsDefault = {
|
|
|
334
334
|
responsiveNavOverflowOpen: 'Navigation overflow menu',
|
|
335
335
|
responsiveNavOverflowClose: 'Navigation overflow menu',
|
|
336
336
|
//Vertical Nav
|
|
337
|
-
verticalNavGroupToggle: 'Toggle vertical navigation group',
|
|
338
337
|
verticalNavToggle: 'Toggle vertical navigation',
|
|
339
338
|
// Timeline steps
|
|
340
339
|
timelineStepNotStarted: 'Not started',
|
|
@@ -598,10 +597,10 @@ class ClrAccordionPanel {
|
|
|
598
597
|
}
|
|
599
598
|
}
|
|
600
599
|
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 });
|
|
601
|
-
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
|
|
600
|
+
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 });
|
|
602
601
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrAccordionPanel, decorators: [{
|
|
603
602
|
type: Component,
|
|
604
|
-
args: [{ selector: 'clr-accordion-panel', host: { '[class.clr-accordion-panel]': 'true' }, changeDetection: ChangeDetectionStrategy.OnPush, animations: panelAnimation, providers: [IfExpandService], template: "<ng-container *ngIf=\"panel | async; let panel\">\n <div
|
|
603
|
+
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" }]
|
|
605
604
|
}], ctorParameters: function () { return [{ type: ClrCommonStringsService }, { type: AccordionService }, { type: IfExpandService }]; }, propDecorators: { disabled: [{
|
|
606
605
|
type: Input,
|
|
607
606
|
args: ['clrAccordionPanelDisabled']
|
|
@@ -1095,10 +1094,10 @@ class ClrStepperPanel extends ClrAccordionPanel {
|
|
|
1095
1094
|
}
|
|
1096
1095
|
}
|
|
1097
1096
|
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 });
|
|
1098
|
-
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
|
|
1097
|
+
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 });
|
|
1099
1098
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStepperPanel, decorators: [{
|
|
1100
1099
|
type: Component,
|
|
1101
|
-
args: [{ selector: 'clr-stepper-panel', host: { '[class.clr-accordion-panel]': 'true' }, changeDetection: ChangeDetectionStrategy.OnPush, animations: stepAnimation, providers: [IfExpandService], template: "<ng-container *ngIf=\"panel | async; let panel\">\n <div
|
|
1100
|
+
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" }]
|
|
1102
1101
|
}], ctorParameters: function () {
|
|
1103
1102
|
return [{ type: undefined, decorators: [{
|
|
1104
1103
|
type: Inject,
|
|
@@ -1328,69 +1327,62 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
1328
1327
|
* This software is released under MIT license.
|
|
1329
1328
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1330
1329
|
*/
|
|
1331
|
-
var
|
|
1332
|
-
(function (
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
})(
|
|
1346
|
-
var
|
|
1347
|
-
(function (
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
IEKeyCodes["End"] = "End";
|
|
1356
|
-
IEKeyCodes["Enter"] = "Enter";
|
|
1357
|
-
IEKeyCodes["Tab"] = "Tab";
|
|
1358
|
-
})(IEKeyCodes || (IEKeyCodes = {}));
|
|
1330
|
+
var Keys;
|
|
1331
|
+
(function (Keys) {
|
|
1332
|
+
Keys["ArrowLeft"] = "ArrowLeft";
|
|
1333
|
+
Keys["ArrowUp"] = "ArrowUp";
|
|
1334
|
+
Keys["ArrowRight"] = "ArrowRight";
|
|
1335
|
+
Keys["ArrowDown"] = "ArrowDown";
|
|
1336
|
+
Keys["Backspace"] = "Backspace";
|
|
1337
|
+
Keys["Tab"] = "Tab";
|
|
1338
|
+
Keys["Enter"] = "Enter";
|
|
1339
|
+
Keys["Escape"] = "Escape";
|
|
1340
|
+
Keys["Space"] = "Space";
|
|
1341
|
+
Keys["Spacebar"] = " ";
|
|
1342
|
+
Keys["Home"] = "Home";
|
|
1343
|
+
Keys["End"] = "End";
|
|
1344
|
+
})(Keys || (Keys = {}));
|
|
1345
|
+
var IEKeys;
|
|
1346
|
+
(function (IEKeys) {
|
|
1347
|
+
IEKeys["ArrowUp"] = "Up";
|
|
1348
|
+
IEKeys["ArrowDown"] = "Down";
|
|
1349
|
+
IEKeys["ArrowRight"] = "Right";
|
|
1350
|
+
IEKeys["ArrowLeft"] = "Left";
|
|
1351
|
+
IEKeys["Space"] = "Spacebar";
|
|
1352
|
+
IEKeys["Escape"] = "Esc";
|
|
1353
|
+
})(IEKeys || (IEKeys = {}));
|
|
1359
1354
|
|
|
1360
1355
|
/*
|
|
1361
1356
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
1362
1357
|
* This software is released under MIT license.
|
|
1363
1358
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1364
1359
|
*/
|
|
1365
|
-
function
|
|
1366
|
-
if (key ===
|
|
1367
|
-
return
|
|
1360
|
+
function normalizeKey(key) {
|
|
1361
|
+
if (key === Keys.ArrowUp || key === IEKeys.ArrowUp) {
|
|
1362
|
+
return Keys.ArrowUp;
|
|
1368
1363
|
}
|
|
1369
|
-
else if (key ===
|
|
1370
|
-
return
|
|
1364
|
+
else if (key === Keys.ArrowDown || key === IEKeys.ArrowDown) {
|
|
1365
|
+
return Keys.ArrowDown;
|
|
1371
1366
|
}
|
|
1372
|
-
else if (key ===
|
|
1373
|
-
return
|
|
1367
|
+
else if (key === Keys.ArrowRight || key === IEKeys.ArrowRight) {
|
|
1368
|
+
return Keys.ArrowRight;
|
|
1374
1369
|
}
|
|
1375
|
-
else if (key ===
|
|
1376
|
-
return
|
|
1370
|
+
else if (key === Keys.ArrowLeft || key === IEKeys.ArrowLeft) {
|
|
1371
|
+
return Keys.ArrowLeft;
|
|
1377
1372
|
}
|
|
1378
|
-
else if (key ===
|
|
1379
|
-
return
|
|
1373
|
+
else if (key === Keys.Space || key === IEKeys.Space) {
|
|
1374
|
+
return Keys.Space;
|
|
1380
1375
|
}
|
|
1381
|
-
else if (key ===
|
|
1382
|
-
return
|
|
1376
|
+
else if (key === Keys.Escape || key === IEKeys.Escape) {
|
|
1377
|
+
return Keys.Escape;
|
|
1383
1378
|
}
|
|
1384
1379
|
else {
|
|
1385
1380
|
return key;
|
|
1386
1381
|
}
|
|
1387
1382
|
}
|
|
1388
1383
|
function preventArrowKeyScroll(event) {
|
|
1389
|
-
const
|
|
1390
|
-
if (
|
|
1391
|
-
validKey === KeyCodes.ArrowDown ||
|
|
1392
|
-
validKey === KeyCodes.ArrowLeft ||
|
|
1393
|
-
validKey === KeyCodes.ArrowRight) {
|
|
1384
|
+
const key = normalizeKey(event.key);
|
|
1385
|
+
if (key === Keys.ArrowUp || key === Keys.ArrowDown || key === Keys.ArrowLeft || key === Keys.ArrowRight) {
|
|
1394
1386
|
// prevent element container scroll
|
|
1395
1387
|
// MDN references this is really the only way to prevent native browser interactions
|
|
1396
1388
|
// https://developer.mozilla.org/en-US/docs/Web/Accessibility/Keyboard-navigable_JavaScript_widgets
|
|
@@ -5002,10 +4994,10 @@ class ClrKeyFocus {
|
|
|
5002
4994
|
else if (this.nextKeyPressed(event) && this.currentFocusIsNotLastItem()) {
|
|
5003
4995
|
this.moveTo(this.current + 1);
|
|
5004
4996
|
}
|
|
5005
|
-
else if (event.code ===
|
|
4997
|
+
else if (event.code === Keys.Home) {
|
|
5006
4998
|
this.moveTo(0);
|
|
5007
4999
|
}
|
|
5008
|
-
else if (event.code ===
|
|
5000
|
+
else if (event.code === Keys.End) {
|
|
5009
5001
|
this.moveTo(this.focusableItems.length - 1);
|
|
5010
5002
|
}
|
|
5011
5003
|
preventArrowKeyScroll(event);
|
|
@@ -5053,27 +5045,27 @@ class ClrKeyFocus {
|
|
|
5053
5045
|
});
|
|
5054
5046
|
}
|
|
5055
5047
|
nextKeyPressed(event) {
|
|
5056
|
-
const key =
|
|
5048
|
+
const key = normalizeKey(event.key);
|
|
5057
5049
|
switch (this.direction) {
|
|
5058
5050
|
case ClrFocusDirection.VERTICAL:
|
|
5059
|
-
return key ===
|
|
5051
|
+
return key === Keys.ArrowDown;
|
|
5060
5052
|
case ClrFocusDirection.HORIZONTAL:
|
|
5061
|
-
return key ===
|
|
5053
|
+
return key === Keys.ArrowRight;
|
|
5062
5054
|
case ClrFocusDirection.BOTH:
|
|
5063
|
-
return key ===
|
|
5055
|
+
return key === Keys.ArrowDown || key === Keys.ArrowRight;
|
|
5064
5056
|
default:
|
|
5065
5057
|
return false;
|
|
5066
5058
|
}
|
|
5067
5059
|
}
|
|
5068
5060
|
prevKeyPressed(event) {
|
|
5069
|
-
const key =
|
|
5061
|
+
const key = normalizeKey(event.key);
|
|
5070
5062
|
switch (this.direction) {
|
|
5071
5063
|
case ClrFocusDirection.VERTICAL:
|
|
5072
|
-
return key ===
|
|
5064
|
+
return key === Keys.ArrowUp;
|
|
5073
5065
|
case ClrFocusDirection.HORIZONTAL:
|
|
5074
|
-
return key ===
|
|
5066
|
+
return key === Keys.ArrowLeft;
|
|
5075
5067
|
case ClrFocusDirection.BOTH:
|
|
5076
|
-
return key ===
|
|
5068
|
+
return key === Keys.ArrowUp || key === Keys.ArrowLeft;
|
|
5077
5069
|
default:
|
|
5078
5070
|
return false;
|
|
5079
5071
|
}
|
|
@@ -5141,10 +5133,10 @@ class ClrRovingTabindex extends ClrKeyFocus {
|
|
|
5141
5133
|
else if (this.nextKeyPressed(event) && this.currentFocusIsNotLastItem()) {
|
|
5142
5134
|
this.updateTabindex(this.current + 1);
|
|
5143
5135
|
}
|
|
5144
|
-
else if (event.code ===
|
|
5136
|
+
else if (event.code === Keys.Home) {
|
|
5145
5137
|
this.updateTabindex(0);
|
|
5146
5138
|
}
|
|
5147
|
-
else if (event.code ===
|
|
5139
|
+
else if (event.code === Keys.End) {
|
|
5148
5140
|
this.updateTabindex(this.focusableItems.length - 1);
|
|
5149
5141
|
}
|
|
5150
5142
|
super.handleKeyboardEvent(event);
|
|
@@ -5338,22 +5330,6 @@ const FOCUS_SERVICE_PROVIDER = {
|
|
|
5338
5330
|
deps: [[new Optional(), new SkipSelf(), FocusService$1], Renderer2],
|
|
5339
5331
|
};
|
|
5340
5332
|
|
|
5341
|
-
/*
|
|
5342
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
5343
|
-
* This software is released under MIT license.
|
|
5344
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
5345
|
-
*/
|
|
5346
|
-
const UP_ARROW = 38;
|
|
5347
|
-
const DOWN_ARROW = 40;
|
|
5348
|
-
const RIGHT_ARROW = 39;
|
|
5349
|
-
const LEFT_ARROW = 37;
|
|
5350
|
-
const ENTER = 13;
|
|
5351
|
-
const SPACE = 32;
|
|
5352
|
-
const SHIFT = 16;
|
|
5353
|
-
const TAB = 9;
|
|
5354
|
-
const ESC = 27;
|
|
5355
|
-
const BACKSPACE = 8;
|
|
5356
|
-
|
|
5357
5333
|
/*
|
|
5358
5334
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
5359
5335
|
* This software is released under MIT license.
|
|
@@ -5807,10 +5783,10 @@ class ComboboxFocusHandler {
|
|
|
5807
5783
|
// this service is only interested in keys that may move the focus
|
|
5808
5784
|
handleTextInput(event) {
|
|
5809
5785
|
let preventDefault = false;
|
|
5810
|
-
const key =
|
|
5786
|
+
const key = normalizeKey(event.key);
|
|
5811
5787
|
if (event) {
|
|
5812
5788
|
switch (key) {
|
|
5813
|
-
case
|
|
5789
|
+
case Keys.Enter:
|
|
5814
5790
|
if (this.toggleService.open && this.pseudoFocus.model) {
|
|
5815
5791
|
if (this.selectionService.multiselectable) {
|
|
5816
5792
|
this.selectionService.toggle(this.pseudoFocus.model.value);
|
|
@@ -5821,27 +5797,27 @@ class ComboboxFocusHandler {
|
|
|
5821
5797
|
preventDefault = true;
|
|
5822
5798
|
}
|
|
5823
5799
|
break;
|
|
5824
|
-
case
|
|
5800
|
+
case Keys.Space:
|
|
5825
5801
|
if (!this.toggleService.open) {
|
|
5826
5802
|
this.toggleService.open = true;
|
|
5827
5803
|
preventDefault = true;
|
|
5828
5804
|
}
|
|
5829
5805
|
break;
|
|
5830
|
-
case
|
|
5806
|
+
case Keys.ArrowUp:
|
|
5831
5807
|
this.preventViewportScrolling(event);
|
|
5832
5808
|
this.openAndMoveTo(ArrowKeyDirection.UP);
|
|
5833
5809
|
preventDefault = true;
|
|
5834
5810
|
break;
|
|
5835
|
-
case
|
|
5811
|
+
case Keys.ArrowDown:
|
|
5836
5812
|
this.preventViewportScrolling(event);
|
|
5837
5813
|
this.openAndMoveTo(ArrowKeyDirection.DOWN);
|
|
5838
5814
|
preventDefault = true;
|
|
5839
5815
|
break;
|
|
5840
5816
|
default:
|
|
5841
5817
|
// Any other keypress
|
|
5842
|
-
if (event.key !==
|
|
5843
|
-
!(this.selectionService.multiselectable && event.key ===
|
|
5844
|
-
!(event.key ===
|
|
5818
|
+
if (event.key !== Keys.Tab &&
|
|
5819
|
+
!(this.selectionService.multiselectable && event.key === Keys.Backspace) &&
|
|
5820
|
+
!(event.key === Keys.Escape) &&
|
|
5845
5821
|
!this.toggleService.open) {
|
|
5846
5822
|
this.toggleService.open = true;
|
|
5847
5823
|
}
|
|
@@ -6294,7 +6270,7 @@ class ClrCombobox extends WrappedFormControl {
|
|
|
6294
6270
|
}
|
|
6295
6271
|
onKeyUp(event) {
|
|
6296
6272
|
// if BACKSPACE in multiselect mode, delete the last pill if text is empty
|
|
6297
|
-
if (event.
|
|
6273
|
+
if (event.key === Keys.Backspace && this.multiSelect && this._searchText.length === 0) {
|
|
6298
6274
|
const multiModel = this.optionSelectionService.selectionModel.model;
|
|
6299
6275
|
if (multiModel && multiModel.length > 0) {
|
|
6300
6276
|
const lastItem = multiModel[multiModel.length - 1];
|
|
@@ -7046,204 +7022,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
7046
7022
|
* This software is released under MIT license.
|
|
7047
7023
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
7048
7024
|
*/
|
|
7049
|
-
|
|
7050
|
-
|
|
7051
|
-
this._previousFocusTraps = [];
|
|
7052
|
-
}
|
|
7053
|
-
get current() {
|
|
7054
|
-
return this._current;
|
|
7055
|
-
}
|
|
7056
|
-
set current(value) {
|
|
7057
|
-
this._previousFocusTraps.push(this._current);
|
|
7058
|
-
this._current = value;
|
|
7059
|
-
}
|
|
7060
|
-
get nbFocusTrappers() {
|
|
7061
|
-
return this._previousFocusTraps.length;
|
|
7062
|
-
}
|
|
7063
|
-
activatePreviousTrapper() {
|
|
7064
|
-
this._current = this._previousFocusTraps.pop();
|
|
7065
|
-
}
|
|
7066
|
-
}
|
|
7067
|
-
FocusTrapTracker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusTrapTracker, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
7068
|
-
FocusTrapTracker.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusTrapTracker, providedIn: 'root' });
|
|
7069
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusTrapTracker, decorators: [{
|
|
7070
|
-
type: Injectable,
|
|
7071
|
-
args: [{ providedIn: 'root' }]
|
|
7072
|
-
}] });
|
|
7073
|
-
|
|
7074
|
-
/*
|
|
7075
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
7076
|
-
* This software is released under MIT license.
|
|
7077
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
7025
|
+
/**
|
|
7026
|
+
* This is just a copy of CdkTrapFocus so it can be used independent of the rest of the A11yModule.
|
|
7078
7027
|
*/
|
|
7079
|
-
|
|
7080
|
-
class FocusTrapDirective {
|
|
7081
|
-
constructor(el, injector, focusTrapsTracker, renderer, platformId) {
|
|
7082
|
-
this.el = el;
|
|
7083
|
-
this.injector = injector;
|
|
7084
|
-
this.focusTrapsTracker = focusTrapsTracker;
|
|
7085
|
-
this.renderer = renderer;
|
|
7086
|
-
this.platformId = platformId;
|
|
7087
|
-
this.localFocusEscaped = false;
|
|
7088
|
-
this._config = {
|
|
7089
|
-
strict: true,
|
|
7090
|
-
};
|
|
7091
|
-
this.document = this.injector.get(DOCUMENT);
|
|
7092
|
-
this.focusTrapsTracker.current = this;
|
|
7093
|
-
}
|
|
7094
|
-
set config(config) {
|
|
7095
|
-
this._config = Object.assign(this._config, config === '' ? {} : config);
|
|
7096
|
-
}
|
|
7097
|
-
onFocusIn(event) {
|
|
7098
|
-
const nativeElement = this.el.nativeElement;
|
|
7099
|
-
if (this.focusTrapsTracker.current !== this ||
|
|
7100
|
-
!isPlatformBrowser(this.platformId) ||
|
|
7101
|
-
this.localFocusEscaped ||
|
|
7102
|
-
nativeElement.contains(event.target)) {
|
|
7103
|
-
return;
|
|
7104
|
-
}
|
|
7105
|
-
if (event.target === this.topReboundEl && nativeElement.contains(event.relatedTarget)) {
|
|
7106
|
-
this.focusLastFocusable();
|
|
7107
|
-
// if it fails to focus element inside the trap, focus the trap element.
|
|
7108
|
-
this.focusTrapElIfOutside();
|
|
7109
|
-
}
|
|
7110
|
-
else if (event.target === this.bottomReboundEl && nativeElement.contains(event.relatedTarget)) {
|
|
7111
|
-
this.focusFirstFocusable();
|
|
7112
|
-
// if it fails to focus element inside the trap, focus the trap element.
|
|
7113
|
-
this.focusTrapElIfOutside();
|
|
7114
|
-
}
|
|
7115
|
-
else {
|
|
7116
|
-
this._config.strict ? this.el.nativeElement.focus() : (this.localFocusEscaped = true);
|
|
7117
|
-
}
|
|
7118
|
-
}
|
|
7119
|
-
createFocusableOffScreenEl() {
|
|
7120
|
-
// Not using Renderer2's createElement method because that leads to DOM leakage.
|
|
7121
|
-
// https://github.com/angular/angular/issues/26954
|
|
7122
|
-
const offScreenSpan = this.document.createElement('span');
|
|
7123
|
-
this.renderer.setAttribute(offScreenSpan, 'tabindex', '0');
|
|
7124
|
-
this.renderer.addClass(offScreenSpan, 'offscreen-focus-rebounder');
|
|
7125
|
-
return offScreenSpan;
|
|
7126
|
-
}
|
|
7127
|
-
addReboundEls() {
|
|
7128
|
-
if (isPlatformBrowser(this.platformId)) {
|
|
7129
|
-
this.topReboundEl = this.createFocusableOffScreenEl();
|
|
7130
|
-
this.bottomReboundEl = this.createFocusableOffScreenEl();
|
|
7131
|
-
const hostElement = this.el.nativeElement;
|
|
7132
|
-
// Add reboundBeforeTrapEl right outside of host element
|
|
7133
|
-
this.renderer.insertBefore(hostElement.parentElement, this.topReboundEl, hostElement);
|
|
7134
|
-
// Add reboundAfterTrapEl right after host element
|
|
7135
|
-
if (hostElement.nextSibling) {
|
|
7136
|
-
this.renderer.insertBefore(hostElement.parentNode, this.bottomReboundEl, hostElement.nextSibling);
|
|
7137
|
-
}
|
|
7138
|
-
else {
|
|
7139
|
-
this.renderer.appendChild(hostElement.parentNode, this.bottomReboundEl);
|
|
7140
|
-
}
|
|
7141
|
-
}
|
|
7142
|
-
}
|
|
7143
|
-
removeReboundEls() {
|
|
7144
|
-
if (isPlatformBrowser(this.platformId) && this.topReboundEl && this.bottomReboundEl) {
|
|
7145
|
-
this.parentElement.removeChild(this.topReboundEl);
|
|
7146
|
-
this.parentElement.removeChild(this.bottomReboundEl);
|
|
7147
|
-
// These are here to to make sure that
|
|
7148
|
-
// we completely delete all traces of the removed DOM objects.
|
|
7149
|
-
delete this.topReboundEl;
|
|
7150
|
-
delete this.bottomReboundEl;
|
|
7151
|
-
}
|
|
7152
|
-
}
|
|
7153
|
-
setPreviousFocus() {
|
|
7154
|
-
if (this.previousActiveElement && this.previousActiveElement.focus) {
|
|
7155
|
-
this.previousActiveElement.focus();
|
|
7156
|
-
}
|
|
7157
|
-
}
|
|
7158
|
-
ngOnInit() {
|
|
7159
|
-
if (isPlatformBrowser(this.platformId)) {
|
|
7160
|
-
this.renderer.setAttribute(this.el.nativeElement, 'tabindex', '-1');
|
|
7161
|
-
this.el.nativeElement.focus();
|
|
7162
|
-
}
|
|
7163
|
-
}
|
|
7164
|
-
ngAfterViewInit() {
|
|
7165
|
-
if (isPlatformBrowser(this.platformId)) {
|
|
7166
|
-
this.previousActiveElement = this.document.activeElement;
|
|
7167
|
-
this.parentElement = this.el.nativeElement.parentElement;
|
|
7168
|
-
}
|
|
7169
|
-
this.addReboundEls();
|
|
7170
|
-
}
|
|
7171
|
-
get potentiallyFocusableEls() {
|
|
7172
|
-
return [...this.el.nativeElement.querySelectorAll(FOCUSABLES)];
|
|
7173
|
-
}
|
|
7174
|
-
focusFirstFocusable() {
|
|
7175
|
-
for (let i = 0; i < this.potentiallyFocusableEls.length; i++) {
|
|
7176
|
-
this.firstFocusableEl = this.focusElement(this.potentiallyFocusableEls[i]);
|
|
7177
|
-
if (this.firstFocusableEl) {
|
|
7178
|
-
break;
|
|
7179
|
-
}
|
|
7180
|
-
}
|
|
7181
|
-
}
|
|
7182
|
-
focusLastFocusable() {
|
|
7183
|
-
for (let i = this.potentiallyFocusableEls.length - 1; i >= 0; i--) {
|
|
7184
|
-
this.lastFocusableEl = this.focusElement(this.potentiallyFocusableEls[i]);
|
|
7185
|
-
if (this.lastFocusableEl) {
|
|
7186
|
-
break;
|
|
7187
|
-
}
|
|
7188
|
-
}
|
|
7189
|
-
}
|
|
7190
|
-
focusTrapElIfOutside() {
|
|
7191
|
-
if (!this.el.nativeElement.contains(document.activeElement)) {
|
|
7192
|
-
this.el.nativeElement.focus();
|
|
7193
|
-
}
|
|
7194
|
-
}
|
|
7195
|
-
focusElement(el) {
|
|
7196
|
-
if (el && el.focus) {
|
|
7197
|
-
el.focus();
|
|
7198
|
-
if (document.activeElement === el) {
|
|
7199
|
-
return el;
|
|
7200
|
-
}
|
|
7201
|
-
}
|
|
7202
|
-
return null;
|
|
7203
|
-
}
|
|
7204
|
-
ngOnDestroy() {
|
|
7205
|
-
this.removeReboundEls();
|
|
7206
|
-
this.setPreviousFocus();
|
|
7207
|
-
this.focusTrapsTracker.activatePreviousTrapper();
|
|
7208
|
-
}
|
|
7028
|
+
class CdkTrapFocusModule_CdkTrapFocus extends CdkTrapFocus {
|
|
7209
7029
|
}
|
|
7210
|
-
|
|
7211
|
-
|
|
7212
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type:
|
|
7030
|
+
CdkTrapFocusModule_CdkTrapFocus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkTrapFocusModule_CdkTrapFocus, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
7031
|
+
CdkTrapFocusModule_CdkTrapFocus.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]", usesInheritance: true, ngImport: i0 });
|
|
7032
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkTrapFocusModule_CdkTrapFocus, decorators: [{
|
|
7213
7033
|
type: Directive,
|
|
7214
7034
|
args: [{
|
|
7215
|
-
selector: '[
|
|
7035
|
+
selector: '[cdkTrapFocus]',
|
|
7216
7036
|
}]
|
|
7217
|
-
}]
|
|
7218
|
-
|
|
7219
|
-
|
|
7220
|
-
args: [PLATFORM_ID]
|
|
7221
|
-
}] }];
|
|
7222
|
-
}, propDecorators: { config: [{
|
|
7223
|
-
type: Input,
|
|
7224
|
-
args: ['clrFocusTrap']
|
|
7225
|
-
}], onFocusIn: [{
|
|
7226
|
-
type: HostListener,
|
|
7227
|
-
args: ['document:focusin', ['$event']]
|
|
7228
|
-
}] } });
|
|
7229
|
-
|
|
7230
|
-
/*
|
|
7231
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
7232
|
-
* This software is released under MIT license.
|
|
7233
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
7037
|
+
}] });
|
|
7038
|
+
/**
|
|
7039
|
+
* This module allows us to avoid importing all of A11yModule which results in a smaller application bundle.
|
|
7234
7040
|
*/
|
|
7235
|
-
|
|
7236
|
-
class ClrFocusTrapModule {
|
|
7041
|
+
class CdkTrapFocusModule {
|
|
7237
7042
|
}
|
|
7238
|
-
|
|
7239
|
-
|
|
7240
|
-
|
|
7241
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type:
|
|
7043
|
+
CdkTrapFocusModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkTrapFocusModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
7044
|
+
CdkTrapFocusModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: CdkTrapFocusModule, declarations: [CdkTrapFocusModule_CdkTrapFocus], exports: [CdkTrapFocusModule_CdkTrapFocus] });
|
|
7045
|
+
CdkTrapFocusModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkTrapFocusModule });
|
|
7046
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkTrapFocusModule, decorators: [{
|
|
7242
7047
|
type: NgModule,
|
|
7243
7048
|
args: [{
|
|
7244
|
-
|
|
7245
|
-
|
|
7246
|
-
exports: [FOCUS_TRAP_DIRECTIVES],
|
|
7049
|
+
declarations: [CdkTrapFocusModule_CdkTrapFocus],
|
|
7050
|
+
exports: [CdkTrapFocusModule_CdkTrapFocus],
|
|
7247
7051
|
}]
|
|
7248
7052
|
}] });
|
|
7249
7053
|
|
|
@@ -8248,20 +8052,20 @@ class ClrCalendar {
|
|
|
8248
8052
|
*/
|
|
8249
8053
|
onKeyDown(event) {
|
|
8250
8054
|
if (event && this.focusedDay) {
|
|
8251
|
-
switch (event.
|
|
8252
|
-
case
|
|
8055
|
+
switch (normalizeKey(event.key)) {
|
|
8056
|
+
case Keys.ArrowUp:
|
|
8253
8057
|
event.preventDefault();
|
|
8254
8058
|
this._dateNavigationService.incrementFocusDay(-1 * NO_OF_DAYS_IN_A_WEEK);
|
|
8255
8059
|
break;
|
|
8256
|
-
case
|
|
8060
|
+
case Keys.ArrowDown:
|
|
8257
8061
|
event.preventDefault();
|
|
8258
8062
|
this._dateNavigationService.incrementFocusDay(NO_OF_DAYS_IN_A_WEEK);
|
|
8259
8063
|
break;
|
|
8260
|
-
case
|
|
8064
|
+
case Keys.ArrowLeft:
|
|
8261
8065
|
event.preventDefault();
|
|
8262
8066
|
this._dateNavigationService.incrementFocusDay(-1);
|
|
8263
8067
|
break;
|
|
8264
|
-
case
|
|
8068
|
+
case Keys.ArrowRight:
|
|
8265
8069
|
event.preventDefault();
|
|
8266
8070
|
this._dateNavigationService.incrementFocusDay(1);
|
|
8267
8071
|
break;
|
|
@@ -8446,23 +8250,23 @@ class ClrMonthpicker {
|
|
|
8446
8250
|
// the logic is fairly simple and it didn't make sense for me
|
|
8447
8251
|
// to create extra observables just to move this logic to the service.
|
|
8448
8252
|
if (event) {
|
|
8449
|
-
const
|
|
8450
|
-
if (
|
|
8253
|
+
const key = normalizeKey(event.key);
|
|
8254
|
+
if (key === Keys.ArrowUp && this._focusedMonthIndex > 0) {
|
|
8451
8255
|
event.preventDefault();
|
|
8452
8256
|
this._focusedMonthIndex--;
|
|
8453
8257
|
this._datepickerFocusService.focusCell(this._elRef);
|
|
8454
8258
|
}
|
|
8455
|
-
else if (
|
|
8259
|
+
else if (key === Keys.ArrowDown && this._focusedMonthIndex < 11) {
|
|
8456
8260
|
event.preventDefault();
|
|
8457
8261
|
this._focusedMonthIndex++;
|
|
8458
8262
|
this._datepickerFocusService.focusCell(this._elRef);
|
|
8459
8263
|
}
|
|
8460
|
-
else if (
|
|
8264
|
+
else if (key === Keys.ArrowRight && this._focusedMonthIndex < 6) {
|
|
8461
8265
|
event.preventDefault();
|
|
8462
8266
|
this._focusedMonthIndex = this._focusedMonthIndex + 6;
|
|
8463
8267
|
this._datepickerFocusService.focusCell(this._elRef);
|
|
8464
8268
|
}
|
|
8465
|
-
else if (
|
|
8269
|
+
else if (key === Keys.ArrowLeft && this._focusedMonthIndex > 5) {
|
|
8466
8270
|
event.preventDefault();
|
|
8467
8271
|
this._focusedMonthIndex = this._focusedMonthIndex - 6;
|
|
8468
8272
|
this._datepickerFocusService.focusCell(this._elRef);
|
|
@@ -8666,20 +8470,20 @@ class ClrYearpicker {
|
|
|
8666
8470
|
// the logic is fairly simple and it didn't make sense for me
|
|
8667
8471
|
// to create extra observables just to move this logic to the service.
|
|
8668
8472
|
if (event) {
|
|
8669
|
-
const
|
|
8670
|
-
if (
|
|
8473
|
+
const key = normalizeKey(event.key);
|
|
8474
|
+
if (key === Keys.ArrowUp) {
|
|
8671
8475
|
event.preventDefault();
|
|
8672
8476
|
this.incrementFocusYearBy(-1);
|
|
8673
8477
|
}
|
|
8674
|
-
else if (
|
|
8478
|
+
else if (key === Keys.ArrowDown) {
|
|
8675
8479
|
event.preventDefault();
|
|
8676
8480
|
this.incrementFocusYearBy(1);
|
|
8677
8481
|
}
|
|
8678
|
-
else if (
|
|
8482
|
+
else if (key === Keys.ArrowRight) {
|
|
8679
8483
|
event.preventDefault();
|
|
8680
8484
|
this.incrementFocusYearBy(5);
|
|
8681
8485
|
}
|
|
8682
|
-
else if (
|
|
8486
|
+
else if (key === Keys.ArrowLeft) {
|
|
8683
8487
|
event.preventDefault();
|
|
8684
8488
|
this.incrementFocusYearBy(-5);
|
|
8685
8489
|
}
|
|
@@ -8973,11 +8777,11 @@ class ClrDateContainer extends ClrAbstractContainer {
|
|
|
8973
8777
|
getToggleButtonLabel(day) {
|
|
8974
8778
|
if (day) {
|
|
8975
8779
|
const formattedDate = this.dateIOService.toLocaleDisplayFormatString(day.toDate());
|
|
8976
|
-
return
|
|
8780
|
+
return this.commonStrings.parse(this.commonStrings.keys.datepickerToggleChangeDateLabel, {
|
|
8977
8781
|
SELECTED_DATE: formattedDate,
|
|
8978
|
-
})
|
|
8782
|
+
});
|
|
8979
8783
|
}
|
|
8980
|
-
return this.commonStrings.keys.datepickerToggleChooseDateLabel
|
|
8784
|
+
return this.commonStrings.keys.datepickerToggleChooseDateLabel;
|
|
8981
8785
|
}
|
|
8982
8786
|
listenForDateChanges() {
|
|
8983
8787
|
// because date-input.ts initializes the input in ngAfterViewInit,
|
|
@@ -9034,7 +8838,7 @@ ClrDateContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
|
|
|
9034
8838
|
</button>
|
|
9035
8839
|
<clr-datepicker-view-manager
|
|
9036
8840
|
*clrPopoverContent="open; at: popoverPosition; outsideClickToClose: true; scrollToClose: true"
|
|
9037
|
-
|
|
8841
|
+
cdkTrapFocus
|
|
9038
8842
|
></clr-datepicker-view-manager>
|
|
9039
8843
|
</div>
|
|
9040
8844
|
<cds-icon
|
|
@@ -9056,7 +8860,7 @@ ClrDateContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
|
|
|
9056
8860
|
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
9057
8861
|
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
9058
8862
|
</div>
|
|
9059
|
-
`, 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:
|
|
8863
|
+
`, 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" }] });
|
|
9060
8864
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDateContainer, decorators: [{
|
|
9061
8865
|
type: Component,
|
|
9062
8866
|
args: [{
|
|
@@ -9080,7 +8884,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
9080
8884
|
</button>
|
|
9081
8885
|
<clr-datepicker-view-manager
|
|
9082
8886
|
*clrPopoverContent="open; at: popoverPosition; outsideClickToClose: true; scrollToClose: true"
|
|
9083
|
-
|
|
8887
|
+
cdkTrapFocus
|
|
9084
8888
|
></clr-datepicker-view-manager>
|
|
9085
8889
|
</div>
|
|
9086
8890
|
<cds-icon
|
|
@@ -9476,11 +9280,11 @@ ClrDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ver
|
|
|
9476
9280
|
ClrYearpicker,
|
|
9477
9281
|
ClrDaypicker,
|
|
9478
9282
|
ClrCalendar], imports: [CommonModule,
|
|
9283
|
+
CdkTrapFocusModule,
|
|
9479
9284
|
ClrHostWrappingModule,
|
|
9480
9285
|
ClrConditionalModule,
|
|
9481
9286
|
ClrPopoverModuleNext,
|
|
9482
9287
|
ClrIconModule,
|
|
9483
|
-
ClrFocusTrapModule,
|
|
9484
9288
|
ClrCommonFormsModule], exports: [ClrDay,
|
|
9485
9289
|
ClrDateContainer,
|
|
9486
9290
|
ClrDateInput,
|
|
@@ -9491,22 +9295,22 @@ ClrDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ver
|
|
|
9491
9295
|
ClrDaypicker,
|
|
9492
9296
|
ClrCalendar] });
|
|
9493
9297
|
ClrDatepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatepickerModule, imports: [CommonModule,
|
|
9298
|
+
CdkTrapFocusModule,
|
|
9494
9299
|
ClrHostWrappingModule,
|
|
9495
9300
|
ClrConditionalModule,
|
|
9496
9301
|
ClrPopoverModuleNext,
|
|
9497
9302
|
ClrIconModule,
|
|
9498
|
-
ClrFocusTrapModule,
|
|
9499
9303
|
ClrCommonFormsModule] });
|
|
9500
9304
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatepickerModule, decorators: [{
|
|
9501
9305
|
type: NgModule,
|
|
9502
9306
|
args: [{
|
|
9503
9307
|
imports: [
|
|
9504
9308
|
CommonModule,
|
|
9309
|
+
CdkTrapFocusModule,
|
|
9505
9310
|
ClrHostWrappingModule,
|
|
9506
9311
|
ClrConditionalModule,
|
|
9507
9312
|
ClrPopoverModuleNext,
|
|
9508
9313
|
ClrIconModule,
|
|
9509
|
-
ClrFocusTrapModule,
|
|
9510
9314
|
ClrCommonFormsModule,
|
|
9511
9315
|
],
|
|
9512
9316
|
declarations: [CLR_DATEPICKER_DIRECTIVES],
|
|
@@ -10530,973 +10334,66 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
10530
10334
|
args: ['@expandAnimation']
|
|
10531
10335
|
}], animationDone: [{
|
|
10532
10336
|
type: HostListener,
|
|
10533
|
-
args: ['@expandAnimation.done']
|
|
10534
|
-
}] } });
|
|
10535
|
-
|
|
10536
|
-
/*
|
|
10537
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
10538
|
-
* This software is released under MIT license.
|
|
10539
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
10540
|
-
*/
|
|
10541
|
-
const EXPANDABLE_ANIMATION_DIRECTIVES = [ClrExpandableAnimation];
|
|
10542
|
-
|
|
10543
|
-
/*
|
|
10544
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
10545
|
-
* This software is released under MIT license.
|
|
10546
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
10547
|
-
*/
|
|
10548
|
-
class ClrExpandableAnimationModule {
|
|
10549
|
-
}
|
|
10550
|
-
ClrExpandableAnimationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrExpandableAnimationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10551
|
-
ClrExpandableAnimationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: ClrExpandableAnimationModule, declarations: [ClrExpandableAnimation], imports: [CommonModule], exports: [ClrExpandableAnimation] });
|
|
10552
|
-
ClrExpandableAnimationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrExpandableAnimationModule, imports: [CommonModule] });
|
|
10553
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrExpandableAnimationModule, decorators: [{
|
|
10554
|
-
type: NgModule,
|
|
10555
|
-
args: [{
|
|
10556
|
-
imports: [CommonModule],
|
|
10557
|
-
declarations: [EXPANDABLE_ANIMATION_DIRECTIVES],
|
|
10558
|
-
exports: [EXPANDABLE_ANIMATION_DIRECTIVES],
|
|
10559
|
-
}]
|
|
10560
|
-
}] });
|
|
10561
|
-
|
|
10562
|
-
/*
|
|
10563
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
10564
|
-
* This software is released under MIT license.
|
|
10565
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
10566
|
-
*/
|
|
10567
|
-
var DragEventType;
|
|
10568
|
-
(function (DragEventType) {
|
|
10569
|
-
DragEventType[DragEventType["DRAG_START"] = 0] = "DRAG_START";
|
|
10570
|
-
DragEventType[DragEventType["DRAG_MOVE"] = 1] = "DRAG_MOVE";
|
|
10571
|
-
DragEventType[DragEventType["DRAG_END"] = 2] = "DRAG_END";
|
|
10572
|
-
DragEventType[DragEventType["DRAG_ENTER"] = 3] = "DRAG_ENTER";
|
|
10573
|
-
DragEventType[DragEventType["DRAG_LEAVE"] = 4] = "DRAG_LEAVE";
|
|
10574
|
-
DragEventType[DragEventType["DROP"] = 5] = "DROP";
|
|
10575
|
-
})(DragEventType || (DragEventType = {}));
|
|
10576
|
-
|
|
10577
|
-
/*
|
|
10578
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
10579
|
-
* This software is released under MIT license.
|
|
10580
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
10581
|
-
*/
|
|
10582
|
-
class DragAndDropEventBusService {
|
|
10583
|
-
constructor() {
|
|
10584
|
-
this.dragStart = new Subject();
|
|
10585
|
-
this.dragMove = new Subject();
|
|
10586
|
-
this.dragEnd = new Subject();
|
|
10587
|
-
this.drop = new Subject();
|
|
10588
|
-
}
|
|
10589
|
-
get dragStarted() {
|
|
10590
|
-
return this.dragStart.asObservable();
|
|
10591
|
-
}
|
|
10592
|
-
get dragMoved() {
|
|
10593
|
-
return this.dragMove.asObservable();
|
|
10594
|
-
}
|
|
10595
|
-
get dragEnded() {
|
|
10596
|
-
return this.dragEnd.asObservable();
|
|
10597
|
-
}
|
|
10598
|
-
get dropped() {
|
|
10599
|
-
return this.drop.asObservable();
|
|
10600
|
-
}
|
|
10601
|
-
broadcast(event) {
|
|
10602
|
-
switch (event.type) {
|
|
10603
|
-
case DragEventType.DRAG_START:
|
|
10604
|
-
this.dragStart.next(event);
|
|
10605
|
-
break;
|
|
10606
|
-
case DragEventType.DRAG_MOVE:
|
|
10607
|
-
this.dragMove.next(event);
|
|
10608
|
-
break;
|
|
10609
|
-
case DragEventType.DRAG_END:
|
|
10610
|
-
this.dragEnd.next(event);
|
|
10611
|
-
break;
|
|
10612
|
-
case DragEventType.DROP:
|
|
10613
|
-
this.drop.next(event);
|
|
10614
|
-
break;
|
|
10615
|
-
default:
|
|
10616
|
-
break;
|
|
10617
|
-
}
|
|
10618
|
-
}
|
|
10619
|
-
}
|
|
10620
|
-
DragAndDropEventBusService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DragAndDropEventBusService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
10621
|
-
DragAndDropEventBusService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DragAndDropEventBusService, providedIn: 'root' });
|
|
10622
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DragAndDropEventBusService, decorators: [{
|
|
10623
|
-
type: Injectable,
|
|
10624
|
-
args: [{ providedIn: 'root' }]
|
|
10625
|
-
}] });
|
|
10626
|
-
|
|
10627
|
-
/*
|
|
10628
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
10629
|
-
* This software is released under MIT license.
|
|
10630
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
10631
|
-
*/
|
|
10632
|
-
class DragEventListenerService {
|
|
10633
|
-
constructor(ngZone, renderer, eventBus) {
|
|
10634
|
-
this.ngZone = ngZone;
|
|
10635
|
-
this.renderer = renderer;
|
|
10636
|
-
this.eventBus = eventBus;
|
|
10637
|
-
// contains listeners for the starting events such as mousedown and touchstart
|
|
10638
|
-
this.listeners = [];
|
|
10639
|
-
this.dragStart = new Subject();
|
|
10640
|
-
this.dragMove = new Subject();
|
|
10641
|
-
this.dragEnd = new Subject();
|
|
10642
|
-
this.hasDragStarted = false;
|
|
10643
|
-
this.dragStartDelay = 0;
|
|
10644
|
-
}
|
|
10645
|
-
get dragStarted() {
|
|
10646
|
-
return this.dragStart.asObservable();
|
|
10647
|
-
}
|
|
10648
|
-
get dragMoved() {
|
|
10649
|
-
return this.dragMove.asObservable();
|
|
10650
|
-
}
|
|
10651
|
-
get dragEnded() {
|
|
10652
|
-
return this.dragEnd.asObservable();
|
|
10653
|
-
}
|
|
10654
|
-
get dragStartPosition() {
|
|
10655
|
-
return this.initialPosition;
|
|
10656
|
-
}
|
|
10657
|
-
attachDragListeners(draggableEl) {
|
|
10658
|
-
this.draggableEl = draggableEl;
|
|
10659
|
-
this.listeners.push(this.customDragEvent(this.draggableEl, 'mousedown', 'mousemove', 'mouseup'));
|
|
10660
|
-
this.listeners.push(this.customDragEvent(this.draggableEl, 'touchstart', 'touchmove', 'touchend'));
|
|
10661
|
-
}
|
|
10662
|
-
detachDragListeners() {
|
|
10663
|
-
if (this.listeners) {
|
|
10664
|
-
this.listeners.map(event => event());
|
|
10665
|
-
}
|
|
10666
|
-
// In most cases, once users start dragging with mousedown/touchstart events,
|
|
10667
|
-
// they will end dragging at one point with mouseup/touchend.
|
|
10668
|
-
// However, there might be a few cases where mousedown/touchstart events get registered,
|
|
10669
|
-
// but the draggable element gets removed before user ends dragging.
|
|
10670
|
-
// In that case, we need to remove the attached listeners that happened during the mousedown/touchstart events.
|
|
10671
|
-
if (this.nestedListeners) {
|
|
10672
|
-
this.nestedListeners.map(event => event());
|
|
10673
|
-
}
|
|
10674
|
-
if (this.checkDragStartBoundaryListener) {
|
|
10675
|
-
this.checkDragStartBoundaryListener();
|
|
10676
|
-
}
|
|
10677
|
-
}
|
|
10678
|
-
getNativeEventObject(event) {
|
|
10679
|
-
if (Object.prototype.hasOwnProperty.call(event, 'changedTouches')) {
|
|
10680
|
-
return event.changedTouches[0];
|
|
10681
|
-
}
|
|
10682
|
-
else {
|
|
10683
|
-
return event;
|
|
10684
|
-
}
|
|
10685
|
-
}
|
|
10686
|
-
customDragEvent(element, startOnEvent, moveOnEvent, endOnEvent) {
|
|
10687
|
-
return this.renderer.listen(element, startOnEvent, (startEvent) => {
|
|
10688
|
-
// save the initial point to initialPosition
|
|
10689
|
-
// this will be used to calculate how far the draggable has been dragged from its initial position
|
|
10690
|
-
this.initialPosition = {
|
|
10691
|
-
pageX: this.getNativeEventObject(startEvent).pageX,
|
|
10692
|
-
pageY: this.getNativeEventObject(startEvent).pageY,
|
|
10693
|
-
};
|
|
10694
|
-
// Initialize nested listeners' property with a new empty array;
|
|
10695
|
-
this.nestedListeners = [];
|
|
10696
|
-
// Listen to selectstart/mousemove/touchmove events outside of angular zone.
|
|
10697
|
-
this.ngZone.runOutsideAngular(() => {
|
|
10698
|
-
// This is needed to disable selection during dragging (especially in EDGE/IE11).
|
|
10699
|
-
this.nestedListeners.push(this.renderer.listen('document', 'selectstart', (selectEvent) => {
|
|
10700
|
-
selectEvent.preventDefault();
|
|
10701
|
-
selectEvent.stopImmediatePropagation();
|
|
10702
|
-
}));
|
|
10703
|
-
// During the drag start delay, pointer should stay within the boundary.
|
|
10704
|
-
this.checkDragStartBoundary(moveOnEvent);
|
|
10705
|
-
this.dragStartDelayTimeout = setTimeout(() => {
|
|
10706
|
-
if (this.checkDragStartBoundaryListener) {
|
|
10707
|
-
this.checkDragStartBoundaryListener();
|
|
10708
|
-
}
|
|
10709
|
-
this.hasDragStarted = true;
|
|
10710
|
-
// Fire "dragstart"
|
|
10711
|
-
this.broadcast(startEvent, DragEventType.DRAG_START);
|
|
10712
|
-
this.nestedListeners.push(this.renderer.listen('document', moveOnEvent, (moveEvent) => {
|
|
10713
|
-
// Event.stopImmediatePropagation() is needed here to prevent nested draggables from getting dragged
|
|
10714
|
-
// altogether. We shouldn't use Event.stopPropagation() here as we are listening to the events
|
|
10715
|
-
// on the global element level.
|
|
10716
|
-
// With Event.stopImmediatePropagation(), it registers the events sent from the inner most draggable
|
|
10717
|
-
// first. Then immediately after that, it stops listening to the same type of events on the same
|
|
10718
|
-
// element. So this will help us to not register the same events that would come from the parent
|
|
10719
|
-
// level draggables eventually.
|
|
10720
|
-
moveEvent.stopImmediatePropagation();
|
|
10721
|
-
if (this.hasDragStarted) {
|
|
10722
|
-
// Fire "dragmove"
|
|
10723
|
-
this.broadcast(moveEvent, DragEventType.DRAG_MOVE);
|
|
10724
|
-
}
|
|
10725
|
-
}));
|
|
10726
|
-
}, this.dragStartDelay);
|
|
10727
|
-
});
|
|
10728
|
-
// Listen to mouseup/touchend events.
|
|
10729
|
-
this.nestedListeners.push(this.renderer.listen('document', endOnEvent, (endEvent) => {
|
|
10730
|
-
if (this.hasDragStarted) {
|
|
10731
|
-
// Fire "dragend" only if dragstart is registered
|
|
10732
|
-
this.hasDragStarted = false;
|
|
10733
|
-
this.broadcast(endEvent, DragEventType.DRAG_END);
|
|
10734
|
-
}
|
|
10735
|
-
clearTimeout(this.dragStartDelayTimeout);
|
|
10736
|
-
// We must remove the the nested listeners every time drag completes.
|
|
10737
|
-
this.nestedListeners.map(event => event());
|
|
10738
|
-
// We must remove the event listener from checkDragStartBoundary
|
|
10739
|
-
if (this.checkDragStartBoundaryListener) {
|
|
10740
|
-
this.checkDragStartBoundaryListener();
|
|
10741
|
-
}
|
|
10742
|
-
}));
|
|
10743
|
-
});
|
|
10744
|
-
}
|
|
10745
|
-
checkDragStartBoundary(eventType) {
|
|
10746
|
-
this.checkDragStartBoundaryListener = this.renderer.listen('document', eventType, (moveEvent) => {
|
|
10747
|
-
const deltaX = Math.abs(this.getNativeEventObject(moveEvent).pageX - this.initialPosition.pageX);
|
|
10748
|
-
const deltaY = Math.abs(this.getNativeEventObject(moveEvent).pageY - this.initialPosition.pageY);
|
|
10749
|
-
// If pointer move delta exceeds horizontal or vertical threshold,
|
|
10750
|
-
// we should cancel drag initiation.
|
|
10751
|
-
if (deltaX > 1 || deltaY > 1) {
|
|
10752
|
-
clearTimeout(this.dragStartDelayTimeout);
|
|
10753
|
-
if (this.checkDragStartBoundaryListener) {
|
|
10754
|
-
this.checkDragStartBoundaryListener();
|
|
10755
|
-
}
|
|
10756
|
-
}
|
|
10757
|
-
});
|
|
10758
|
-
}
|
|
10759
|
-
broadcast(event, eventType) {
|
|
10760
|
-
const dragEvent = this.generateDragEvent(event, eventType);
|
|
10761
|
-
switch (dragEvent.type) {
|
|
10762
|
-
case DragEventType.DRAG_START:
|
|
10763
|
-
this.dragStart.next(dragEvent);
|
|
10764
|
-
break;
|
|
10765
|
-
case DragEventType.DRAG_MOVE:
|
|
10766
|
-
this.dragMove.next(dragEvent);
|
|
10767
|
-
break;
|
|
10768
|
-
case DragEventType.DRAG_END:
|
|
10769
|
-
this.dragEnd.next(dragEvent);
|
|
10770
|
-
break;
|
|
10771
|
-
default:
|
|
10772
|
-
break;
|
|
10773
|
-
}
|
|
10774
|
-
// The following properties are set after they are broadcasted to the DraggableGhost component.
|
|
10775
|
-
dragEvent.ghostElement = this.ghostElement;
|
|
10776
|
-
dragEvent.dropPointPosition = this.dropPointPosition;
|
|
10777
|
-
this.eventBus.broadcast(dragEvent);
|
|
10778
|
-
}
|
|
10779
|
-
generateDragEvent(event, eventType) {
|
|
10780
|
-
const nativeEvent = this.getNativeEventObject(event);
|
|
10781
|
-
return {
|
|
10782
|
-
type: eventType,
|
|
10783
|
-
dragPosition: {
|
|
10784
|
-
pageX: nativeEvent.pageX,
|
|
10785
|
-
pageY: nativeEvent.pageY,
|
|
10786
|
-
moveX: nativeEvent.pageX - this.initialPosition.pageX,
|
|
10787
|
-
moveY: nativeEvent.pageY - this.initialPosition.pageY,
|
|
10788
|
-
},
|
|
10789
|
-
group: this.group,
|
|
10790
|
-
dragDataTransfer: this.dragDataTransfer,
|
|
10791
|
-
ghostElement: this.ghostElement,
|
|
10792
|
-
};
|
|
10793
|
-
}
|
|
10794
|
-
}
|
|
10795
|
-
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 });
|
|
10796
|
-
DragEventListenerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DragEventListenerService });
|
|
10797
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DragEventListenerService, decorators: [{
|
|
10798
|
-
type: Injectable
|
|
10799
|
-
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: DragAndDropEventBusService }]; } });
|
|
10800
|
-
|
|
10801
|
-
/*
|
|
10802
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
10803
|
-
* This software is released under MIT license.
|
|
10804
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
10805
|
-
*/
|
|
10806
|
-
// This provider registers the drag handle element.
|
|
10807
|
-
// When it registers a element as a drag handle, it attaches that element to the listeners from ClrDragEventListener.
|
|
10808
|
-
// Also, it adds the "drag-handle" css class to the registered element through Renderer.
|
|
10809
|
-
class DragHandleRegistrarService {
|
|
10810
|
-
constructor(dragEventListener, renderer) {
|
|
10811
|
-
this.dragEventListener = dragEventListener;
|
|
10812
|
-
this.renderer = renderer;
|
|
10813
|
-
}
|
|
10814
|
-
get defaultHandleEl() {
|
|
10815
|
-
return this._defaultHandleEl;
|
|
10816
|
-
}
|
|
10817
|
-
set defaultHandleEl(el) {
|
|
10818
|
-
this._defaultHandleEl = el; // defaultHandleEl will be usually the clrDraggable element.
|
|
10819
|
-
// If the customHandleEl has been registered,
|
|
10820
|
-
// don't make the defaultHandleEl the drag handle yet until the customHandleEl is unregistered.
|
|
10821
|
-
if (!this._customHandleEl) {
|
|
10822
|
-
this.makeElementHandle(this._defaultHandleEl);
|
|
10823
|
-
}
|
|
10824
|
-
}
|
|
10825
|
-
makeElementHandle(el) {
|
|
10826
|
-
if (this._defaultHandleEl && this._defaultHandleEl !== el) {
|
|
10827
|
-
// Before making an element the custom handle element,
|
|
10828
|
-
// we should remove the existing drag-handle class from the draggable element.
|
|
10829
|
-
this.renderer.removeClass(this._defaultHandleEl, 'drag-handle');
|
|
10830
|
-
}
|
|
10831
|
-
this.dragEventListener.attachDragListeners(el);
|
|
10832
|
-
this.renderer.addClass(el, 'drag-handle');
|
|
10833
|
-
}
|
|
10834
|
-
get customHandleEl() {
|
|
10835
|
-
return this._customHandleEl;
|
|
10836
|
-
}
|
|
10837
|
-
registerCustomHandle(el) {
|
|
10838
|
-
this.dragEventListener.detachDragListeners(); // removes the existing listeners
|
|
10839
|
-
this._customHandleEl = el;
|
|
10840
|
-
this.makeElementHandle(this._customHandleEl);
|
|
10841
|
-
}
|
|
10842
|
-
unregisterCustomHandle() {
|
|
10843
|
-
this.dragEventListener.detachDragListeners(); // removes the existing listeners
|
|
10844
|
-
this.renderer.removeClass(this._customHandleEl, 'drag-handle');
|
|
10845
|
-
delete this._customHandleEl;
|
|
10846
|
-
// if default handle is set, make that handle
|
|
10847
|
-
if (this._defaultHandleEl) {
|
|
10848
|
-
this.makeElementHandle(this._defaultHandleEl);
|
|
10849
|
-
}
|
|
10850
|
-
}
|
|
10851
|
-
}
|
|
10852
|
-
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 });
|
|
10853
|
-
DragHandleRegistrarService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DragHandleRegistrarService });
|
|
10854
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DragHandleRegistrarService, decorators: [{
|
|
10855
|
-
type: Injectable
|
|
10856
|
-
}], ctorParameters: function () { return [{ type: DragEventListenerService }, { type: i0.Renderer2 }]; } });
|
|
10857
|
-
|
|
10858
|
-
/*
|
|
10859
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
10860
|
-
* This software is released under MIT license.
|
|
10861
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
10862
|
-
*/
|
|
10863
|
-
class ClrDragHandle {
|
|
10864
|
-
constructor(el, dragHandleRegistrar) {
|
|
10865
|
-
this.el = el;
|
|
10866
|
-
this.dragHandleRegistrar = dragHandleRegistrar;
|
|
10867
|
-
if (!this.dragHandleRegistrar) {
|
|
10868
|
-
// ClrDragHandleRegistrar is provided in ClrDraggable so we expect it to be present here
|
|
10869
|
-
// as clrDragHandle is required to be used only inside of a clrDraggable directive.
|
|
10870
|
-
throw new Error('The clrDragHandle directive can only be used inside of a clrDraggable directive.');
|
|
10871
|
-
}
|
|
10872
|
-
this.dragHandleRegistrar.registerCustomHandle(this.el.nativeElement);
|
|
10873
|
-
}
|
|
10874
|
-
ngOnDestroy() {
|
|
10875
|
-
this.dragHandleRegistrar.unregisterCustomHandle();
|
|
10876
|
-
}
|
|
10877
|
-
}
|
|
10878
|
-
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 });
|
|
10879
|
-
ClrDragHandle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: ClrDragHandle, selector: "[clrDragHandle]", host: { properties: { "class.drag-handle": "true" } }, ngImport: i0 });
|
|
10880
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDragHandle, decorators: [{
|
|
10881
|
-
type: Directive,
|
|
10882
|
-
args: [{
|
|
10883
|
-
selector: '[clrDragHandle]',
|
|
10884
|
-
host: { '[class.drag-handle]': 'true' },
|
|
10885
|
-
}]
|
|
10886
|
-
}], ctorParameters: function () {
|
|
10887
|
-
return [{ type: i0.ElementRef }, { type: DragHandleRegistrarService, decorators: [{
|
|
10888
|
-
type: Optional
|
|
10889
|
-
}] }];
|
|
10890
|
-
} });
|
|
10891
|
-
|
|
10892
|
-
/*
|
|
10893
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
10894
|
-
* This software is released under MIT license.
|
|
10895
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
10896
|
-
*/
|
|
10897
|
-
// This service is used to capture the state of clrDraggable element
|
|
10898
|
-
// at a certain event and passes it to clrDraggableGhost component.
|
|
10899
|
-
class DraggableSnapshotService {
|
|
10900
|
-
constructor(domAdapter) {
|
|
10901
|
-
this.domAdapter = domAdapter;
|
|
10902
|
-
}
|
|
10903
|
-
capture(el, event) {
|
|
10904
|
-
this.draggableElClientRect = this.domAdapter.clientRect(el);
|
|
10905
|
-
this.snapshotDragEvent = event;
|
|
10906
|
-
}
|
|
10907
|
-
discard() {
|
|
10908
|
-
delete this.draggableElClientRect;
|
|
10909
|
-
delete this.snapshotDragEvent;
|
|
10910
|
-
}
|
|
10911
|
-
get hasDraggableState() {
|
|
10912
|
-
return !!this.snapshotDragEvent && !!this.draggableElClientRect;
|
|
10913
|
-
}
|
|
10914
|
-
get clientRect() {
|
|
10915
|
-
return this.draggableElClientRect;
|
|
10916
|
-
}
|
|
10917
|
-
get dragEvent() {
|
|
10918
|
-
return this.snapshotDragEvent;
|
|
10919
|
-
}
|
|
10920
|
-
}
|
|
10921
|
-
DraggableSnapshotService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DraggableSnapshotService, deps: [{ token: DomAdapter }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
10922
|
-
DraggableSnapshotService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DraggableSnapshotService });
|
|
10923
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DraggableSnapshotService, decorators: [{
|
|
10924
|
-
type: Injectable
|
|
10925
|
-
}], ctorParameters: function () { return [{ type: DomAdapter }]; } });
|
|
10926
|
-
|
|
10927
|
-
/*
|
|
10928
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
10929
|
-
* This software is released under MIT license.
|
|
10930
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
10931
|
-
*/
|
|
10932
|
-
class ClrDraggableGhost {
|
|
10933
|
-
constructor(el, dragEventListener, draggableSnapshot, renderer, ngZone) {
|
|
10934
|
-
this.el = el;
|
|
10935
|
-
this.dragEventListener = dragEventListener;
|
|
10936
|
-
this.draggableSnapshot = draggableSnapshot;
|
|
10937
|
-
this.renderer = renderer;
|
|
10938
|
-
this.ngZone = ngZone;
|
|
10939
|
-
this.subscriptions = [];
|
|
10940
|
-
this.leaveAnimConfig = { value: 0, params: { top: '0px', left: '0px' } };
|
|
10941
|
-
if (!this.dragEventListener || !this.draggableSnapshot) {
|
|
10942
|
-
throw new Error('The clr-draggable-ghost component can only be used inside of a clrDraggable directive.');
|
|
10943
|
-
}
|
|
10944
|
-
this.draggableGhostEl = this.el.nativeElement;
|
|
10945
|
-
// Need to use Renderer2 as it runs outside of NgZone
|
|
10946
|
-
this.renderer.addClass(this.draggableGhostEl, 'draggable-ghost');
|
|
10947
|
-
// Register the ghost element in DragEventListener to pass in a ClrDragEvent.
|
|
10948
|
-
this.dragEventListener.ghostElement = this.draggableGhostEl;
|
|
10949
|
-
// Default ghost size gets the size of ClrDraggable element.
|
|
10950
|
-
this.setDefaultGhostSize(this.draggableGhostEl);
|
|
10951
|
-
const offset = {
|
|
10952
|
-
top: this.draggableSnapshot.hasDraggableState
|
|
10953
|
-
? this.draggableSnapshot.dragEvent.dragPosition.pageY - this.draggableSnapshot.clientRect.top
|
|
10954
|
-
: 0,
|
|
10955
|
-
left: this.draggableSnapshot.hasDraggableState
|
|
10956
|
-
? this.draggableSnapshot.dragEvent.dragPosition.pageX - this.draggableSnapshot.clientRect.left
|
|
10957
|
-
: 0,
|
|
10958
|
-
};
|
|
10959
|
-
let isAnimationConfigured = false;
|
|
10960
|
-
this.subscriptions.push(this.dragEventListener.dragMoved.subscribe((event) => {
|
|
10961
|
-
// On the first drag move event, we configure the animation as it's dependent on the first drag event.
|
|
10962
|
-
if (!isAnimationConfigured) {
|
|
10963
|
-
if (this.draggableSnapshot.hasDraggableState) {
|
|
10964
|
-
this.animateToOnLeave(`${this.draggableSnapshot.clientRect.top}px`, `${this.draggableSnapshot.clientRect.left}px`);
|
|
10965
|
-
}
|
|
10966
|
-
else {
|
|
10967
|
-
this.animateToOnLeave(`${this.dragEventListener.dragStartPosition.pageY}px`, `${this.dragEventListener.dragStartPosition.pageY}px`);
|
|
10968
|
-
}
|
|
10969
|
-
isAnimationConfigured = true;
|
|
10970
|
-
}
|
|
10971
|
-
// Position the draggable ghost.
|
|
10972
|
-
const topLeftPosition = this.findTopLeftPosition(event.dragPosition, offset);
|
|
10973
|
-
this.setPositionStyle(this.draggableGhostEl, topLeftPosition.pageX, topLeftPosition.pageY);
|
|
10974
|
-
this.dragEventListener.dropPointPosition = this.findDropPointPosition(topLeftPosition);
|
|
10975
|
-
}));
|
|
10976
|
-
}
|
|
10977
|
-
setDefaultGhostSize(el) {
|
|
10978
|
-
if (this.draggableSnapshot.hasDraggableState) {
|
|
10979
|
-
this.setSizeStyle(el, this.draggableSnapshot.clientRect.width, this.draggableSnapshot.clientRect.height);
|
|
10980
|
-
}
|
|
10981
|
-
}
|
|
10982
|
-
animateToOnLeave(top, left) {
|
|
10983
|
-
this.ngZone.run(() => {
|
|
10984
|
-
this.leaveAnimConfig = { value: 0, params: { top: top, left: left } };
|
|
10985
|
-
});
|
|
10986
|
-
}
|
|
10987
|
-
findTopLeftPosition(dragPosition, offset) {
|
|
10988
|
-
return { pageX: dragPosition.pageX - offset.left, pageY: dragPosition.pageY - offset.top };
|
|
10989
|
-
}
|
|
10990
|
-
findDropPointPosition(topLeftPosition) {
|
|
10991
|
-
if (this.draggableSnapshot.hasDraggableState) {
|
|
10992
|
-
return {
|
|
10993
|
-
pageX: topLeftPosition.pageX + this.draggableSnapshot.clientRect.width / 2,
|
|
10994
|
-
pageY: topLeftPosition.pageY + this.draggableSnapshot.clientRect.height / 2,
|
|
10995
|
-
};
|
|
10996
|
-
}
|
|
10997
|
-
else {
|
|
10998
|
-
return topLeftPosition;
|
|
10999
|
-
}
|
|
11000
|
-
}
|
|
11001
|
-
setSizeStyle(el, width, height) {
|
|
11002
|
-
this.renderer.setStyle(el, 'width', `${width}px`);
|
|
11003
|
-
this.renderer.setStyle(el, 'height', `${height}px`);
|
|
11004
|
-
}
|
|
11005
|
-
setPositionStyle(el, left, top) {
|
|
11006
|
-
this.renderer.setStyle(el, 'left', `${left}px`);
|
|
11007
|
-
this.renderer.setStyle(el, 'top', `${top}px`);
|
|
11008
|
-
this.renderer.setStyle(el, 'visibility', 'visible');
|
|
11009
|
-
}
|
|
11010
|
-
ngOnDestroy() {
|
|
11011
|
-
this.subscriptions.forEach((sub) => sub.unsubscribe());
|
|
11012
|
-
}
|
|
11013
|
-
}
|
|
11014
|
-
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 });
|
|
11015
|
-
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: [
|
|
11016
|
-
trigger('leaveAnimation', [
|
|
11017
|
-
transition(':leave', [
|
|
11018
|
-
style({ left: '*', top: '*' }),
|
|
11019
|
-
animate('0.2s ease-in-out', style({ top: '{{top}}', left: '{{left}}' })),
|
|
11020
|
-
]),
|
|
11021
|
-
]),
|
|
11022
|
-
] });
|
|
11023
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDraggableGhost, decorators: [{
|
|
11024
|
-
type: Component,
|
|
11025
|
-
args: [{
|
|
11026
|
-
selector: 'clr-draggable-ghost',
|
|
11027
|
-
template: `<ng-content></ng-content>`,
|
|
11028
|
-
animations: [
|
|
11029
|
-
trigger('leaveAnimation', [
|
|
11030
|
-
transition(':leave', [
|
|
11031
|
-
style({ left: '*', top: '*' }),
|
|
11032
|
-
animate('0.2s ease-in-out', style({ top: '{{top}}', left: '{{left}}' })),
|
|
11033
|
-
]),
|
|
11034
|
-
]),
|
|
11035
|
-
],
|
|
11036
|
-
}]
|
|
11037
|
-
}], ctorParameters: function () {
|
|
11038
|
-
return [{ type: i0.ElementRef }, { type: DragEventListenerService, decorators: [{
|
|
11039
|
-
type: Optional
|
|
11040
|
-
}] }, { type: DraggableSnapshotService, decorators: [{
|
|
11041
|
-
type: Optional
|
|
11042
|
-
}] }, { type: i0.Renderer2 }, { type: i0.NgZone }];
|
|
11043
|
-
}, propDecorators: { leaveAnimConfig: [{
|
|
11044
|
-
type: HostBinding,
|
|
11045
|
-
args: ['@leaveAnimation']
|
|
11046
|
-
}] } });
|
|
11047
|
-
|
|
11048
|
-
/*
|
|
11049
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
11050
|
-
* This software is released under MIT license.
|
|
11051
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
11052
|
-
*/
|
|
11053
|
-
// This class is used to convert an internal event
|
|
11054
|
-
// to an external event to be emitted.
|
|
11055
|
-
class ClrDragEvent {
|
|
11056
|
-
constructor(dragEvent) {
|
|
11057
|
-
this.dragPosition = dragEvent.dragPosition;
|
|
11058
|
-
this.group = dragEvent.group;
|
|
11059
|
-
this.dragDataTransfer = dragEvent.dragDataTransfer;
|
|
11060
|
-
this.dropPointPosition = dragEvent.dropPointPosition;
|
|
11061
|
-
}
|
|
11062
|
-
}
|
|
11063
|
-
|
|
11064
|
-
/*
|
|
11065
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
11066
|
-
* This software is released under MIT license.
|
|
11067
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
11068
|
-
*/
|
|
11069
|
-
// This structural directive will be used mainly together with `clr-draggable-ghost` directive inside of clrDraggable
|
|
11070
|
-
// directive. The directive is responsible for instantiating `clr-draggable-ghost` directive only during dragging so
|
|
11071
|
-
// that Angular Change Detection is prevented from running if a component or directive is placed inside of the
|
|
11072
|
-
// `clr-draggable-ghost` directive.
|
|
11073
|
-
class ClrIfDragged {
|
|
11074
|
-
constructor(template, container, dragEventListener) {
|
|
11075
|
-
this.template = template;
|
|
11076
|
-
this.container = container;
|
|
11077
|
-
this.dragEventListener = dragEventListener;
|
|
11078
|
-
this.subscriptions = [];
|
|
11079
|
-
if (!this.dragEventListener || !this.container) {
|
|
11080
|
-
throw new Error('The *clrIfDragged directive can only be used inside of a clrDraggable directive.');
|
|
11081
|
-
}
|
|
11082
|
-
this.subscriptions.push(this.dragEventListener.dragStarted.subscribe(() => {
|
|
11083
|
-
this.container.createEmbeddedView(this.template);
|
|
11084
|
-
}));
|
|
11085
|
-
this.subscriptions.push(this.dragEventListener.dragEnded.subscribe(() => {
|
|
11086
|
-
this.container.clear();
|
|
11087
|
-
}));
|
|
11088
|
-
}
|
|
11089
|
-
ngOnDestroy() {
|
|
11090
|
-
this.subscriptions.forEach((sub) => sub.unsubscribe());
|
|
11091
|
-
}
|
|
11092
|
-
}
|
|
11093
|
-
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 });
|
|
11094
|
-
ClrIfDragged.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: ClrIfDragged, selector: "[clrIfDragged]", ngImport: i0 });
|
|
11095
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrIfDragged, decorators: [{
|
|
11096
|
-
type: Directive,
|
|
11097
|
-
args: [{
|
|
11098
|
-
selector: '[clrIfDragged]',
|
|
11099
|
-
}]
|
|
11100
|
-
}], ctorParameters: function () {
|
|
11101
|
-
return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef, decorators: [{
|
|
11102
|
-
type: Optional
|
|
11103
|
-
}, {
|
|
11104
|
-
type: SkipSelf
|
|
11105
|
-
}] }, { type: DragEventListenerService, decorators: [{
|
|
11106
|
-
type: Optional
|
|
11107
|
-
}] }];
|
|
11108
|
-
} });
|
|
11109
|
-
|
|
11110
|
-
/*
|
|
11111
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
11112
|
-
* This software is released under MIT license.
|
|
11113
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
11114
|
-
*/
|
|
11115
|
-
// This service class adds and removes the "in-drag" class to the document body element
|
|
11116
|
-
// through its public enter() and exit() methods.
|
|
11117
|
-
class GlobalDragModeService {
|
|
11118
|
-
constructor(renderer) {
|
|
11119
|
-
this.renderer = renderer;
|
|
11120
|
-
}
|
|
11121
|
-
enter() {
|
|
11122
|
-
this.renderer.addClass(document.body, 'in-drag');
|
|
11123
|
-
}
|
|
11124
|
-
exit() {
|
|
11125
|
-
this.renderer.removeClass(document.body, 'in-drag');
|
|
11126
|
-
}
|
|
11127
|
-
}
|
|
11128
|
-
GlobalDragModeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: GlobalDragModeService, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
11129
|
-
GlobalDragModeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: GlobalDragModeService });
|
|
11130
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: GlobalDragModeService, decorators: [{
|
|
11131
|
-
type: Injectable
|
|
11132
|
-
}], ctorParameters: function () { return [{ type: i0.Renderer2 }]; } });
|
|
10337
|
+
args: ['@expandAnimation.done']
|
|
10338
|
+
}] } });
|
|
11133
10339
|
|
|
11134
10340
|
/*
|
|
11135
10341
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
11136
10342
|
* This software is released under MIT license.
|
|
11137
10343
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
11138
10344
|
*/
|
|
11139
|
-
|
|
11140
|
-
constructor(el, dragEventListener, dragHandleRegistrar, viewContainerRef, cfr, injector, draggableSnapshot, globalDragMode) {
|
|
11141
|
-
this.el = el;
|
|
11142
|
-
this.dragEventListener = dragEventListener;
|
|
11143
|
-
this.dragHandleRegistrar = dragHandleRegistrar;
|
|
11144
|
-
this.viewContainerRef = viewContainerRef;
|
|
11145
|
-
this.cfr = cfr;
|
|
11146
|
-
this.injector = injector;
|
|
11147
|
-
this.draggableSnapshot = draggableSnapshot;
|
|
11148
|
-
this.globalDragMode = globalDragMode;
|
|
11149
|
-
this.subscriptions = [];
|
|
11150
|
-
this.dragOn = false;
|
|
11151
|
-
this.dragStartEmitter = new EventEmitter();
|
|
11152
|
-
this.dragMoveEmitter = new EventEmitter();
|
|
11153
|
-
this.dragEndEmitter = new EventEmitter();
|
|
11154
|
-
this.draggableEl = this.el.nativeElement;
|
|
11155
|
-
this.componentFactory = this.cfr.resolveComponentFactory(ClrDraggableGhost);
|
|
11156
|
-
}
|
|
11157
|
-
set dataTransfer(value) {
|
|
11158
|
-
this.dragEventListener.dragDataTransfer = value;
|
|
11159
|
-
}
|
|
11160
|
-
set group(value) {
|
|
11161
|
-
this.dragEventListener.group = value;
|
|
11162
|
-
}
|
|
11163
|
-
set dragStartDelay(value) {
|
|
11164
|
-
if (typeof value === 'number') {
|
|
11165
|
-
this.dragEventListener.dragStartDelay = value;
|
|
11166
|
-
}
|
|
11167
|
-
else if (typeof value === 'string') {
|
|
11168
|
-
this.dragEventListener.dragStartDelay = parseInt(value, 10) || 0;
|
|
11169
|
-
}
|
|
11170
|
-
}
|
|
11171
|
-
createDefaultGhost(event) {
|
|
11172
|
-
this.draggableSnapshot.capture(this.draggableEl, event);
|
|
11173
|
-
// NOTE: The default ghost element will appear
|
|
11174
|
-
// next to the clrDraggable in the DOM as a sibling element.
|
|
11175
|
-
this.viewContainerRef.createComponent(this.componentFactory, 0, this.injector, [
|
|
11176
|
-
[this.draggableEl.cloneNode(true)],
|
|
11177
|
-
]);
|
|
11178
|
-
}
|
|
11179
|
-
destroyDefaultGhost() {
|
|
11180
|
-
this.viewContainerRef.clear();
|
|
11181
|
-
this.draggableSnapshot.discard();
|
|
11182
|
-
}
|
|
11183
|
-
ngAfterContentInit() {
|
|
11184
|
-
this.dragHandleRegistrar.defaultHandleEl = this.draggableEl;
|
|
11185
|
-
this.subscriptions.push(this.dragEventListener.dragStarted.subscribe((event) => {
|
|
11186
|
-
this.globalDragMode.enter();
|
|
11187
|
-
this.dragOn = true;
|
|
11188
|
-
if (!this.customGhost) {
|
|
11189
|
-
this.createDefaultGhost(event);
|
|
11190
|
-
}
|
|
11191
|
-
this.dragStartEmitter.emit(new ClrDragEvent(event));
|
|
11192
|
-
}));
|
|
11193
|
-
this.subscriptions.push(this.dragEventListener.dragMoved.subscribe((event) => {
|
|
11194
|
-
this.dragMoveEmitter.emit(new ClrDragEvent(event));
|
|
11195
|
-
}));
|
|
11196
|
-
this.subscriptions.push(this.dragEventListener.dragEnded.subscribe((event) => {
|
|
11197
|
-
this.globalDragMode.exit();
|
|
11198
|
-
this.dragOn = false;
|
|
11199
|
-
if (!this.customGhost) {
|
|
11200
|
-
this.destroyDefaultGhost();
|
|
11201
|
-
}
|
|
11202
|
-
this.dragEndEmitter.emit(new ClrDragEvent(event));
|
|
11203
|
-
}));
|
|
11204
|
-
}
|
|
11205
|
-
ngOnDestroy() {
|
|
11206
|
-
this.subscriptions.forEach((sub) => sub.unsubscribe());
|
|
11207
|
-
this.dragEventListener.detachDragListeners();
|
|
11208
|
-
}
|
|
11209
|
-
}
|
|
11210
|
-
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 });
|
|
11211
|
-
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: [
|
|
11212
|
-
DragEventListenerService,
|
|
11213
|
-
DragHandleRegistrarService,
|
|
11214
|
-
DraggableSnapshotService,
|
|
11215
|
-
GlobalDragModeService,
|
|
11216
|
-
DomAdapter,
|
|
11217
|
-
], queries: [{ propertyName: "customGhost", first: true, predicate: ClrIfDragged, descendants: true }], ngImport: i0 });
|
|
11218
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDraggable, decorators: [{
|
|
11219
|
-
type: Directive,
|
|
11220
|
-
args: [{
|
|
11221
|
-
selector: '[clrDraggable]',
|
|
11222
|
-
providers: [
|
|
11223
|
-
DragEventListenerService,
|
|
11224
|
-
DragHandleRegistrarService,
|
|
11225
|
-
DraggableSnapshotService,
|
|
11226
|
-
GlobalDragModeService,
|
|
11227
|
-
DomAdapter,
|
|
11228
|
-
],
|
|
11229
|
-
host: { '[class.draggable]': 'true', '[class.being-dragged]': 'dragOn' },
|
|
11230
|
-
}]
|
|
11231
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: DragEventListenerService }, { type: DragHandleRegistrarService }, { type: i0.ViewContainerRef }, { type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: DraggableSnapshotService }, { type: GlobalDragModeService }]; }, propDecorators: { customGhost: [{
|
|
11232
|
-
type: ContentChild,
|
|
11233
|
-
args: [ClrIfDragged]
|
|
11234
|
-
}], dataTransfer: [{
|
|
11235
|
-
type: Input,
|
|
11236
|
-
args: ['clrDraggable']
|
|
11237
|
-
}], group: [{
|
|
11238
|
-
type: Input,
|
|
11239
|
-
args: ['clrGroup']
|
|
11240
|
-
}], dragStartDelay: [{
|
|
11241
|
-
type: Input,
|
|
11242
|
-
args: ['clrDragStartDelay']
|
|
11243
|
-
}], dragStartEmitter: [{
|
|
11244
|
-
type: Output,
|
|
11245
|
-
args: ['clrDragStart']
|
|
11246
|
-
}], dragMoveEmitter: [{
|
|
11247
|
-
type: Output,
|
|
11248
|
-
args: ['clrDragMove']
|
|
11249
|
-
}], dragEndEmitter: [{
|
|
11250
|
-
type: Output,
|
|
11251
|
-
args: ['clrDragEnd']
|
|
11252
|
-
}] } });
|
|
10345
|
+
const EXPANDABLE_ANIMATION_DIRECTIVES = [ClrExpandableAnimation];
|
|
11253
10346
|
|
|
11254
10347
|
/*
|
|
11255
10348
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
11256
10349
|
* This software is released under MIT license.
|
|
11257
10350
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
11258
10351
|
*/
|
|
11259
|
-
class
|
|
11260
|
-
constructor(el, eventBus, domAdapter, renderer) {
|
|
11261
|
-
this.el = el;
|
|
11262
|
-
this.eventBus = eventBus;
|
|
11263
|
-
this.domAdapter = domAdapter;
|
|
11264
|
-
this.renderer = renderer;
|
|
11265
|
-
this.isDraggableMatch = false;
|
|
11266
|
-
this._isDraggableOver = false;
|
|
11267
|
-
this._dropTolerance = { top: 0, right: 0, bottom: 0, left: 0 };
|
|
11268
|
-
this.dragStartEmitter = new EventEmitter();
|
|
11269
|
-
this.dragMoveEmitter = new EventEmitter();
|
|
11270
|
-
this.dragEndEmitter = new EventEmitter();
|
|
11271
|
-
this.dragLeaveEmitter = new EventEmitter();
|
|
11272
|
-
this.dragEnterEmitter = new EventEmitter();
|
|
11273
|
-
this.dropEmitter = new EventEmitter();
|
|
11274
|
-
this.droppableEl = this.el.nativeElement;
|
|
11275
|
-
}
|
|
11276
|
-
set isDraggableOver(value) {
|
|
11277
|
-
// We need to add/remove this draggable-over class via Renderer2
|
|
11278
|
-
// because isDraggableOver is set outside of NgZone.
|
|
11279
|
-
if (value) {
|
|
11280
|
-
this.renderer.addClass(this.droppableEl, 'draggable-over');
|
|
11281
|
-
}
|
|
11282
|
-
else {
|
|
11283
|
-
this.renderer.removeClass(this.droppableEl, 'draggable-over');
|
|
11284
|
-
}
|
|
11285
|
-
this._isDraggableOver = value;
|
|
11286
|
-
}
|
|
11287
|
-
set group(value) {
|
|
11288
|
-
this._group = value;
|
|
11289
|
-
}
|
|
11290
|
-
dropToleranceGenerator(top = 0, right = top, bottom = top, left = right) {
|
|
11291
|
-
return { top, right, bottom, left };
|
|
11292
|
-
}
|
|
11293
|
-
set dropTolerance(value) {
|
|
11294
|
-
// If user provides an object here and wants to manipulate/update properties individually,
|
|
11295
|
-
// the object must be immutable as we generate new object based user's given object.
|
|
11296
|
-
if (typeof value === 'number') {
|
|
11297
|
-
this._dropTolerance = this.dropToleranceGenerator(value);
|
|
11298
|
-
}
|
|
11299
|
-
else if (typeof value === 'string') {
|
|
11300
|
-
const toleranceValues = value
|
|
11301
|
-
.trim()
|
|
11302
|
-
.split(/\s+/)
|
|
11303
|
-
.map(tolerance => parseInt(tolerance, 10));
|
|
11304
|
-
this._dropTolerance = this.dropToleranceGenerator(...toleranceValues);
|
|
11305
|
-
}
|
|
11306
|
-
else if (value) {
|
|
11307
|
-
// The value could be passed in as {left: 20, top: 30 }
|
|
11308
|
-
// In this case, the rest of the direction properties should be 0.
|
|
11309
|
-
// That's why we initialize properties with 0 first, then override with user's given value.
|
|
11310
|
-
this._dropTolerance = Object.assign(Object.assign({}, this.dropToleranceGenerator(0)), value);
|
|
11311
|
-
}
|
|
11312
|
-
}
|
|
11313
|
-
unsubscribeFrom(subscription) {
|
|
11314
|
-
if (subscription) {
|
|
11315
|
-
subscription.unsubscribe();
|
|
11316
|
-
}
|
|
11317
|
-
}
|
|
11318
|
-
checkGroupMatch(draggableGroup) {
|
|
11319
|
-
// Both Draggable and Droppable have clrGroup input.
|
|
11320
|
-
// The clrGroup input can be both a string key or array of string keys in Draggable and Droppable.
|
|
11321
|
-
// It's not match if Draggable has no defined value assigned to clrGroup, but Droppable has a defined clrGroup.
|
|
11322
|
-
if (!draggableGroup && this._group) {
|
|
11323
|
-
return false;
|
|
11324
|
-
}
|
|
11325
|
-
// The same is true the other way round.
|
|
11326
|
-
if (!this._group && draggableGroup) {
|
|
11327
|
-
return false;
|
|
11328
|
-
}
|
|
11329
|
-
// It's match if both Draggable and Droppable have no assigned value for clrGroup.
|
|
11330
|
-
if (!this._group && !draggableGroup) {
|
|
11331
|
-
return true;
|
|
11332
|
-
}
|
|
11333
|
-
// It's match if both Draggable and Droppable have simple string keys that are matching.
|
|
11334
|
-
// It's match if Draggable's simple clrGroup key is matching with one of the clrGroup keys of Droppable. The
|
|
11335
|
-
// same is true the other way round.
|
|
11336
|
-
// it's match if one of the clrGroup keys of Droppable is matching with one of the clrGroup keys of Draggable.
|
|
11337
|
-
if (typeof draggableGroup === 'string') {
|
|
11338
|
-
if (typeof this._group === 'string') {
|
|
11339
|
-
return this._group === draggableGroup;
|
|
11340
|
-
}
|
|
11341
|
-
else {
|
|
11342
|
-
return this._group.indexOf(draggableGroup) > -1;
|
|
11343
|
-
}
|
|
11344
|
-
}
|
|
11345
|
-
else {
|
|
11346
|
-
if (typeof this._group === 'string') {
|
|
11347
|
-
return draggableGroup.indexOf(this._group) > -1;
|
|
11348
|
-
}
|
|
11349
|
-
else {
|
|
11350
|
-
return this._group.some(groupKey => draggableGroup.indexOf(groupKey) > -1);
|
|
11351
|
-
}
|
|
11352
|
-
}
|
|
11353
|
-
}
|
|
11354
|
-
isInDropArea(point) {
|
|
11355
|
-
if (!point) {
|
|
11356
|
-
return false;
|
|
11357
|
-
}
|
|
11358
|
-
if (!this.clientRect) {
|
|
11359
|
-
this.clientRect = this.domAdapter.clientRect(this.droppableEl);
|
|
11360
|
-
}
|
|
11361
|
-
if (point.pageX >= this.clientRect.left - this._dropTolerance.left &&
|
|
11362
|
-
point.pageX <= this.clientRect.right + this._dropTolerance.right &&
|
|
11363
|
-
point.pageY >= this.clientRect.top - this._dropTolerance.top &&
|
|
11364
|
-
point.pageY <= this.clientRect.bottom + this._dropTolerance.bottom) {
|
|
11365
|
-
return true;
|
|
11366
|
-
}
|
|
11367
|
-
else {
|
|
11368
|
-
return false;
|
|
11369
|
-
}
|
|
11370
|
-
}
|
|
11371
|
-
onDragStart(dragStartEvent) {
|
|
11372
|
-
// Check draggable and droppable have a matching group key.
|
|
11373
|
-
this.isDraggableMatch = this.checkGroupMatch(dragStartEvent.group);
|
|
11374
|
-
// Subscribe to dragMoved and dragEnded only if draggable and droppable have a matching group key.
|
|
11375
|
-
if (this.isDraggableMatch) {
|
|
11376
|
-
this.dragStartEmitter.emit(new ClrDragEvent(dragStartEvent));
|
|
11377
|
-
this.dragMoveSubscription = this.eventBus.dragMoved.subscribe((dragMoveEvent) => {
|
|
11378
|
-
this.onDragMove(dragMoveEvent);
|
|
11379
|
-
});
|
|
11380
|
-
this.dragEndSubscription = this.eventBus.dragEnded.subscribe((dragEndEvent) => {
|
|
11381
|
-
this.onDragEnd(dragEndEvent);
|
|
11382
|
-
});
|
|
11383
|
-
}
|
|
11384
|
-
}
|
|
11385
|
-
onDragMove(dragMoveEvent) {
|
|
11386
|
-
const isInDropArea = this.isInDropArea(dragMoveEvent.dropPointPosition);
|
|
11387
|
-
if (!this._isDraggableOver && isInDropArea) {
|
|
11388
|
-
this.isDraggableOver = true;
|
|
11389
|
-
const dragEnterEvent = Object.assign(Object.assign({}, dragMoveEvent), { type: DragEventType.DRAG_ENTER });
|
|
11390
|
-
this.eventBus.broadcast(dragEnterEvent);
|
|
11391
|
-
this.dragEnterEmitter.emit(new ClrDragEvent(dragEnterEvent));
|
|
11392
|
-
}
|
|
11393
|
-
else if (this._isDraggableOver && !isInDropArea) {
|
|
11394
|
-
this.isDraggableOver = false;
|
|
11395
|
-
const dragLeaveEvent = Object.assign(Object.assign({}, dragMoveEvent), { type: DragEventType.DRAG_LEAVE });
|
|
11396
|
-
this.eventBus.broadcast(dragLeaveEvent);
|
|
11397
|
-
this.dragLeaveEmitter.emit(new ClrDragEvent(dragLeaveEvent));
|
|
11398
|
-
}
|
|
11399
|
-
this.dragMoveEmitter.emit(new ClrDragEvent(dragMoveEvent));
|
|
11400
|
-
}
|
|
11401
|
-
onDragEnd(dragEndEvent) {
|
|
11402
|
-
if (this._isDraggableOver) {
|
|
11403
|
-
if (dragEndEvent.ghostElement) {
|
|
11404
|
-
// By this point, the draggable ghost component is destroyed,
|
|
11405
|
-
// but the element would be active until its animation completes.
|
|
11406
|
-
// As such, once the ghost is dropped over, we will give it "dropped" class.
|
|
11407
|
-
// This process cannot be done in the ghost component
|
|
11408
|
-
// because any subscription to the drop event is ineffective or invalid
|
|
11409
|
-
// as the component had been already destroyed.
|
|
11410
|
-
this.renderer.addClass(dragEndEvent.ghostElement, 'dropped');
|
|
11411
|
-
}
|
|
11412
|
-
const dropEvent = Object.assign(Object.assign({}, dragEndEvent), { type: DragEventType.DROP });
|
|
11413
|
-
this.eventBus.broadcast(dropEvent);
|
|
11414
|
-
this.dropEmitter.emit(new ClrDragEvent(dropEvent));
|
|
11415
|
-
this.isDraggableOver = false;
|
|
11416
|
-
}
|
|
11417
|
-
this.dragEndEmitter.emit(new ClrDragEvent(dragEndEvent));
|
|
11418
|
-
this.unsubscribeFrom(this.dragMoveSubscription);
|
|
11419
|
-
this.unsubscribeFrom(this.dragEndSubscription);
|
|
11420
|
-
this.isDraggableMatch = false;
|
|
11421
|
-
delete this.clientRect;
|
|
11422
|
-
}
|
|
11423
|
-
ngOnInit() {
|
|
11424
|
-
this.dragStartSubscription = this.eventBus.dragStarted.subscribe((dragStartEvent) => {
|
|
11425
|
-
this.onDragStart(dragStartEvent);
|
|
11426
|
-
});
|
|
11427
|
-
}
|
|
11428
|
-
ngOnDestroy() {
|
|
11429
|
-
this.unsubscribeFrom(this.dragStartSubscription);
|
|
11430
|
-
this.unsubscribeFrom(this.dragMoveSubscription);
|
|
11431
|
-
this.unsubscribeFrom(this.dragEndSubscription);
|
|
11432
|
-
}
|
|
10352
|
+
class ClrExpandableAnimationModule {
|
|
11433
10353
|
}
|
|
11434
|
-
|
|
11435
|
-
|
|
11436
|
-
i0.ɵɵ
|
|
11437
|
-
|
|
10354
|
+
ClrExpandableAnimationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrExpandableAnimationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10355
|
+
ClrExpandableAnimationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: ClrExpandableAnimationModule, declarations: [ClrExpandableAnimation], imports: [CommonModule], exports: [ClrExpandableAnimation] });
|
|
10356
|
+
ClrExpandableAnimationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrExpandableAnimationModule, imports: [CommonModule] });
|
|
10357
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrExpandableAnimationModule, decorators: [{
|
|
10358
|
+
type: NgModule,
|
|
11438
10359
|
args: [{
|
|
11439
|
-
|
|
11440
|
-
|
|
11441
|
-
|
|
10360
|
+
imports: [CommonModule],
|
|
10361
|
+
declarations: [EXPANDABLE_ANIMATION_DIRECTIVES],
|
|
10362
|
+
exports: [EXPANDABLE_ANIMATION_DIRECTIVES],
|
|
11442
10363
|
}]
|
|
11443
|
-
}]
|
|
11444
|
-
type: Input,
|
|
11445
|
-
args: ['clrGroup']
|
|
11446
|
-
}], dropTolerance: [{
|
|
11447
|
-
type: Input,
|
|
11448
|
-
args: ['clrDropTolerance']
|
|
11449
|
-
}], dragStartEmitter: [{
|
|
11450
|
-
type: Output,
|
|
11451
|
-
args: ['clrDragStart']
|
|
11452
|
-
}], dragMoveEmitter: [{
|
|
11453
|
-
type: Output,
|
|
11454
|
-
args: ['clrDragMove']
|
|
11455
|
-
}], dragEndEmitter: [{
|
|
11456
|
-
type: Output,
|
|
11457
|
-
args: ['clrDragEnd']
|
|
11458
|
-
}], dragLeaveEmitter: [{
|
|
11459
|
-
type: Output,
|
|
11460
|
-
args: ['clrDragLeave']
|
|
11461
|
-
}], dragEnterEmitter: [{
|
|
11462
|
-
type: Output,
|
|
11463
|
-
args: ['clrDragEnter']
|
|
11464
|
-
}], dropEmitter: [{
|
|
11465
|
-
type: Output,
|
|
11466
|
-
args: ['clrDrop']
|
|
11467
|
-
}] } });
|
|
10364
|
+
}] });
|
|
11468
10365
|
|
|
11469
10366
|
/*
|
|
11470
10367
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
11471
10368
|
* This software is released under MIT license.
|
|
11472
10369
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
11473
10370
|
*/
|
|
11474
|
-
|
|
11475
|
-
|
|
11476
|
-
|
|
11477
|
-
|
|
11478
|
-
|
|
11479
|
-
|
|
11480
|
-
];
|
|
11481
|
-
|
|
11482
|
-
|
|
11483
|
-
|
|
11484
|
-
|
|
11485
|
-
|
|
11486
|
-
|
|
11487
|
-
|
|
11488
|
-
|
|
11489
|
-
|
|
11490
|
-
|
|
11491
|
-
|
|
11492
|
-
|
|
11493
|
-
|
|
11494
|
-
i0.ɵɵ
|
|
10371
|
+
/**
|
|
10372
|
+
* This is just a copy of CdkDrag so it can be used independent of the rest of the CdkDragDropModule.
|
|
10373
|
+
*/
|
|
10374
|
+
class CdkDragModule_CdkDrag extends CdkDrag {
|
|
10375
|
+
}
|
|
10376
|
+
CdkDragModule_CdkDrag.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkDragModule_CdkDrag, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
10377
|
+
CdkDragModule_CdkDrag.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: CdkDragModule_CdkDrag, selector: "[cdkDrag]", usesInheritance: true, ngImport: i0 });
|
|
10378
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkDragModule_CdkDrag, decorators: [{
|
|
10379
|
+
type: Directive,
|
|
10380
|
+
args: [{
|
|
10381
|
+
selector: '[cdkDrag]',
|
|
10382
|
+
}]
|
|
10383
|
+
}] });
|
|
10384
|
+
/**
|
|
10385
|
+
* This module allows us to avoid importing all of CdkDragDropModule which results in a smaller application bundle.
|
|
10386
|
+
*/
|
|
10387
|
+
class CdkDragModule {
|
|
10388
|
+
}
|
|
10389
|
+
CdkDragModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkDragModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10390
|
+
CdkDragModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: CdkDragModule, declarations: [CdkDragModule_CdkDrag], exports: [CdkDragModule_CdkDrag] });
|
|
10391
|
+
CdkDragModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkDragModule });
|
|
10392
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkDragModule, decorators: [{
|
|
11495
10393
|
type: NgModule,
|
|
11496
10394
|
args: [{
|
|
11497
|
-
|
|
11498
|
-
|
|
11499
|
-
exports: [CLR_DRAG_AND_DROP_DIRECTIVES],
|
|
10395
|
+
declarations: [CdkDragModule_CdkDrag],
|
|
10396
|
+
exports: [CdkDragModule_CdkDrag],
|
|
11500
10397
|
}]
|
|
11501
10398
|
}] });
|
|
11502
10399
|
|
|
@@ -12156,7 +11053,7 @@ ClrDatagridFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
|
|
|
12156
11053
|
<div
|
|
12157
11054
|
class="datagrid-filter"
|
|
12158
11055
|
[id]="popoverId"
|
|
12159
|
-
|
|
11056
|
+
cdkTrapFocus
|
|
12160
11057
|
*clrPopoverContent="open; at: smartPosition; outsideClickToClose: true; scrollToClose: true"
|
|
12161
11058
|
role="dialog"
|
|
12162
11059
|
[attr.aria-label]="commonStrings.keys.datagridFilterDialogAriaLabel"
|
|
@@ -12169,7 +11066,7 @@ ClrDatagridFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
|
|
|
12169
11066
|
|
|
12170
11067
|
<ng-content></ng-content>
|
|
12171
11068
|
</div>
|
|
12172
|
-
`, 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"] }
|
|
11069
|
+
`, 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"] }] });
|
|
12173
11070
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridFilter, decorators: [{
|
|
12174
11071
|
type: Component,
|
|
12175
11072
|
args: [{
|
|
@@ -12199,7 +11096,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
12199
11096
|
<div
|
|
12200
11097
|
class="datagrid-filter"
|
|
12201
11098
|
[id]="popoverId"
|
|
12202
|
-
|
|
11099
|
+
cdkTrapFocus
|
|
12203
11100
|
*clrPopoverContent="open; at: smartPosition; outsideClickToClose: true; scrollToClose: true"
|
|
12204
11101
|
role="dialog"
|
|
12205
11102
|
[attr.aria-label]="commonStrings.keys.datagridFilterDialogAriaLabel"
|
|
@@ -13362,8 +12259,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
13362
12259
|
// Default resize length on each keyboard move event
|
|
13363
12260
|
const KEYBOARD_RESIZE_LENGTH = 12;
|
|
13364
12261
|
class ClrDatagridColumnSeparator {
|
|
13365
|
-
// Every column draggable separator should have its own unique ID
|
|
13366
|
-
// in order to not conflict with other draggables/droppables.
|
|
13367
12262
|
constructor(columnResizerService, renderer, ngZone, tableSizeService, commonString, document) {
|
|
13368
12263
|
this.columnResizerService = columnResizerService;
|
|
13369
12264
|
this.renderer = renderer;
|
|
@@ -13411,6 +12306,7 @@ class ClrDatagridColumnSeparator {
|
|
|
13411
12306
|
this.columnResizerService.endResize();
|
|
13412
12307
|
this.renderer.setStyle(this.resizeTrackerEl, 'display', 'none');
|
|
13413
12308
|
this.renderer.setStyle(this.resizeTrackerEl, 'transform', `translateX(0px)`);
|
|
12309
|
+
this.renderer.setStyle(this.columnHandleEl, 'transform', `translateX(0px)`);
|
|
13414
12310
|
this.renderer.setStyle(this.document.body, 'cursor', 'auto');
|
|
13415
12311
|
}
|
|
13416
12312
|
showTrackerOnFirstKeyDown(event) {
|
|
@@ -13422,9 +12318,11 @@ class ClrDatagridColumnSeparator {
|
|
|
13422
12318
|
}
|
|
13423
12319
|
moveTrackerOnKeyDown(event) {
|
|
13424
12320
|
if (this.isArrowLeftKeyEvent(event)) {
|
|
12321
|
+
event.stopPropagation();
|
|
13425
12322
|
this.moveTracker(this.columnResizerService.resizedBy - KEYBOARD_RESIZE_LENGTH);
|
|
13426
12323
|
}
|
|
13427
12324
|
else if (this.isArrowRightKeyEvent(event)) {
|
|
12325
|
+
event.stopPropagation();
|
|
13428
12326
|
this.moveTracker(this.columnResizerService.resizedBy + KEYBOARD_RESIZE_LENGTH);
|
|
13429
12327
|
}
|
|
13430
12328
|
}
|
|
@@ -13448,10 +12346,10 @@ class ClrDatagridColumnSeparator {
|
|
|
13448
12346
|
}
|
|
13449
12347
|
}
|
|
13450
12348
|
isArrowLeftKeyEvent(event) {
|
|
13451
|
-
return event.key ===
|
|
12349
|
+
return normalizeKey(event.key) === Keys.ArrowLeft;
|
|
13452
12350
|
}
|
|
13453
12351
|
isArrowRightKeyEvent(event) {
|
|
13454
|
-
return event.key ===
|
|
12352
|
+
return normalizeKey(event.key) === Keys.ArrowRight;
|
|
13455
12353
|
}
|
|
13456
12354
|
ngOnDestroy() {
|
|
13457
12355
|
this.unlisteners.forEach(unlistener => unlistener());
|
|
@@ -13464,18 +12362,18 @@ ClrDatagridColumnSeparator.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0
|
|
|
13464
12362
|
class="datagrid-column-handle"
|
|
13465
12363
|
[attr.aria-label]="commonString.keys.columnSeparatorAriaLabel"
|
|
13466
12364
|
[attr.aria-describedby]="descriptionId"
|
|
13467
|
-
|
|
13468
|
-
|
|
13469
|
-
(
|
|
13470
|
-
(
|
|
13471
|
-
(
|
|
12365
|
+
cdkDrag
|
|
12366
|
+
cdkDragLockAxis="x"
|
|
12367
|
+
(cdkDragStarted)="showTracker()"
|
|
12368
|
+
(cdkDragMoved)="moveTracker($event.distance.x)"
|
|
12369
|
+
(cdkDragEnded)="hideTracker(); $event.source._dragRef.reset()"
|
|
13472
12370
|
#columnHandle
|
|
13473
12371
|
></button>
|
|
13474
12372
|
<span class="clr-sr-only" [attr.id]="descriptionId">
|
|
13475
12373
|
{{ commonString.keys.columnSeparatorDescription }}
|
|
13476
12374
|
</span>
|
|
13477
12375
|
<div class="datagrid-column-resize-tracker" #resizeTracker></div>
|
|
13478
|
-
`, isInline: true, dependencies: [{ kind: "directive", type:
|
|
12376
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: CdkDragModule_CdkDrag, selector: "[cdkDrag]" }] });
|
|
13479
12377
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridColumnSeparator, decorators: [{
|
|
13480
12378
|
type: Component,
|
|
13481
12379
|
args: [{
|
|
@@ -13486,11 +12384,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
13486
12384
|
class="datagrid-column-handle"
|
|
13487
12385
|
[attr.aria-label]="commonString.keys.columnSeparatorAriaLabel"
|
|
13488
12386
|
[attr.aria-describedby]="descriptionId"
|
|
13489
|
-
|
|
13490
|
-
|
|
13491
|
-
(
|
|
13492
|
-
(
|
|
13493
|
-
(
|
|
12387
|
+
cdkDrag
|
|
12388
|
+
cdkDragLockAxis="x"
|
|
12389
|
+
(cdkDragStarted)="showTracker()"
|
|
12390
|
+
(cdkDragMoved)="moveTracker($event.distance.x)"
|
|
12391
|
+
(cdkDragEnded)="hideTracker(); $event.source._dragRef.reset()"
|
|
13494
12392
|
#columnHandle
|
|
13495
12393
|
></button>
|
|
13496
12394
|
<span class="clr-sr-only" [attr.id]="descriptionId">
|
|
@@ -13539,18 +12437,6 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
|
13539
12437
|
* via the [clrDgColType] input by setting it to 'string' or 'number'.
|
|
13540
12438
|
*/
|
|
13541
12439
|
this._colType = 'string';
|
|
13542
|
-
// deprecated: to be removed - START
|
|
13543
|
-
/**
|
|
13544
|
-
* Indicates if the column is currently sorted
|
|
13545
|
-
*
|
|
13546
|
-
* @deprecated This will be removed soon, in favor of the sortOrder mechanism
|
|
13547
|
-
*/
|
|
13548
|
-
this._sorted = false;
|
|
13549
|
-
/**
|
|
13550
|
-
* @deprecated This will be removed soon, in favor of the sortOrder mechanism
|
|
13551
|
-
*/
|
|
13552
|
-
this.sortedChange = new EventEmitter();
|
|
13553
|
-
// deprecated: to be removed - END
|
|
13554
12440
|
/**
|
|
13555
12441
|
* Indicates how the column is currently sorted
|
|
13556
12442
|
*/
|
|
@@ -13586,16 +12472,8 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
|
13586
12472
|
if (this.sortOrder !== ClrDatagridSortOrder.UNSORTED && sort.comparator !== this._sortBy) {
|
|
13587
12473
|
this._sortOrder = ClrDatagridSortOrder.UNSORTED;
|
|
13588
12474
|
this.sortOrderChange.emit(this._sortOrder);
|
|
13589
|
-
// removes the sortIcon when column becomes unsorted
|
|
13590
|
-
this.sortIcon = null;
|
|
13591
12475
|
this._sortDirection = null;
|
|
13592
12476
|
}
|
|
13593
|
-
// deprecated: to be removed - START
|
|
13594
|
-
if (this.sorted && sort.comparator !== this._sortBy) {
|
|
13595
|
-
this._sorted = false;
|
|
13596
|
-
this.sortedChange.emit(false);
|
|
13597
|
-
}
|
|
13598
|
-
// deprecated: to be removed - END
|
|
13599
12477
|
});
|
|
13600
12478
|
}
|
|
13601
12479
|
get colType() {
|
|
@@ -13672,21 +12550,6 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
|
13672
12550
|
get sortable() {
|
|
13673
12551
|
return !!this._sortBy;
|
|
13674
12552
|
}
|
|
13675
|
-
get sorted() {
|
|
13676
|
-
return this._sorted;
|
|
13677
|
-
}
|
|
13678
|
-
/**
|
|
13679
|
-
* @deprecated This will be removed soon, in favor of the sortOrder mechanism
|
|
13680
|
-
*/
|
|
13681
|
-
set sorted(value) {
|
|
13682
|
-
if (!value && this.sorted) {
|
|
13683
|
-
this._sorted = false;
|
|
13684
|
-
this._sort.clear();
|
|
13685
|
-
}
|
|
13686
|
-
else if (value && !this.sorted) {
|
|
13687
|
-
this.sort();
|
|
13688
|
-
}
|
|
13689
|
-
}
|
|
13690
12553
|
get sortOrder() {
|
|
13691
12554
|
return this._sortOrder;
|
|
13692
12555
|
}
|
|
@@ -13738,12 +12601,7 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
|
13738
12601
|
this._sortOrder = this._sort.reverse ? ClrDatagridSortOrder.DESC : ClrDatagridSortOrder.ASC;
|
|
13739
12602
|
// Sets the correct icon for current sort order
|
|
13740
12603
|
this._sortDirection = this._sortOrder === ClrDatagridSortOrder.DESC ? 'down' : 'up';
|
|
13741
|
-
this.sortIcon = this._sortOrder === ClrDatagridSortOrder.DESC ? 'arrow down' : 'arrow'; // Backward compatibility
|
|
13742
12604
|
this.sortOrderChange.emit(this._sortOrder);
|
|
13743
|
-
// deprecated: to be removed - START
|
|
13744
|
-
this._sorted = true;
|
|
13745
|
-
this.sortedChange.emit(true);
|
|
13746
|
-
// deprecated: to be removed - END
|
|
13747
12605
|
}
|
|
13748
12606
|
set projectedFilter(custom) {
|
|
13749
12607
|
if (custom) {
|
|
@@ -13811,7 +12669,7 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
|
13811
12669
|
}
|
|
13812
12670
|
}
|
|
13813
12671
|
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 });
|
|
13814
|
-
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"],
|
|
12672
|
+
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: `
|
|
13815
12673
|
<div class="datagrid-column-flex">
|
|
13816
12674
|
<button class="datagrid-column-title" *ngIf="sortable" (click)="sort()" type="button">
|
|
13817
12675
|
<ng-container *ngTemplateOutlet="columnTitle"></ng-container>
|
|
@@ -13914,12 +12772,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
13914
12772
|
}], sortBy: [{
|
|
13915
12773
|
type: Input,
|
|
13916
12774
|
args: ['clrDgSortBy']
|
|
13917
|
-
}], sorted: [{
|
|
13918
|
-
type: Input,
|
|
13919
|
-
args: ['clrDgSorted']
|
|
13920
|
-
}], sortedChange: [{
|
|
13921
|
-
type: Output,
|
|
13922
|
-
args: ['clrDgSortedChange']
|
|
13923
12775
|
}], sortOrder: [{
|
|
13924
12776
|
type: Input,
|
|
13925
12777
|
args: ['clrDgSortOrder']
|
|
@@ -16032,13 +14884,13 @@ ClrDatagridActionOverflow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.
|
|
|
16032
14884
|
[attr.aria-hidden]="!open"
|
|
16033
14885
|
[attr.id]="popoverId"
|
|
16034
14886
|
clrKeyFocus
|
|
16035
|
-
|
|
14887
|
+
cdkTrapFocus
|
|
16036
14888
|
(click)="closeOverflowContent($event)"
|
|
16037
14889
|
*clrPopoverContent="open; at: smartPosition; outsideClickToClose: true; scrollToClose: true"
|
|
16038
14890
|
>
|
|
16039
14891
|
<ng-content></ng-content>
|
|
16040
14892
|
</div>
|
|
16041
|
-
`, 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"] }
|
|
14893
|
+
`, 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"] }] });
|
|
16042
14894
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridActionOverflow, decorators: [{
|
|
16043
14895
|
type: Component,
|
|
16044
14896
|
args: [{
|
|
@@ -16066,7 +14918,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
16066
14918
|
[attr.aria-hidden]="!open"
|
|
16067
14919
|
[attr.id]="popoverId"
|
|
16068
14920
|
clrKeyFocus
|
|
16069
|
-
|
|
14921
|
+
cdkTrapFocus
|
|
16070
14922
|
(click)="closeOverflowContent($event)"
|
|
16071
14923
|
*clrPopoverContent="open; at: smartPosition; outsideClickToClose: true; scrollToClose: true"
|
|
16072
14924
|
>
|
|
@@ -16274,7 +15126,7 @@ ClrDatagridColumnToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
|
|
|
16274
15126
|
role="dialog"
|
|
16275
15127
|
[attr.aria-label]="commonStrings.keys.showColumnsMenuDescription"
|
|
16276
15128
|
[id]="popoverId"
|
|
16277
|
-
|
|
15129
|
+
cdkTrapFocus
|
|
16278
15130
|
*clrPopoverContent="openState; at: smartPosition; outsideClickToClose: true; scrollToClose: true"
|
|
16279
15131
|
>
|
|
16280
15132
|
<div class="switch-header">
|
|
@@ -16316,7 +15168,7 @@ ClrDatagridColumnToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
|
|
|
16316
15168
|
</clr-dg-column-toggle-button>
|
|
16317
15169
|
</div>
|
|
16318
15170
|
</div>
|
|
16319
|
-
`, 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:
|
|
15171
|
+
`, 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"] }] });
|
|
16320
15172
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridColumnToggle, decorators: [{
|
|
16321
15173
|
type: Component,
|
|
16322
15174
|
args: [{
|
|
@@ -16339,7 +15191,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
16339
15191
|
role="dialog"
|
|
16340
15192
|
[attr.aria-label]="commonStrings.keys.showColumnsMenuDescription"
|
|
16341
15193
|
[id]="popoverId"
|
|
16342
|
-
|
|
15194
|
+
cdkTrapFocus
|
|
16343
15195
|
*clrPopoverContent="openState; at: smartPosition; outsideClickToClose: true; scrollToClose: true"
|
|
16344
15196
|
>
|
|
16345
15197
|
<div class="switch-header">
|
|
@@ -16461,14 +15313,15 @@ class ClrDatagridDetail {
|
|
|
16461
15313
|
this.detailService = detailService;
|
|
16462
15314
|
this.commonStrings = commonStrings;
|
|
16463
15315
|
}
|
|
16464
|
-
|
|
15316
|
+
close() {
|
|
16465
15317
|
this.detailService.close();
|
|
16466
15318
|
}
|
|
16467
15319
|
}
|
|
16468
15320
|
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 });
|
|
16469
|
-
ClrDatagridDetail.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrDatagridDetail, selector: "clr-dg-detail", host: { listeners: { "document:keyup.
|
|
15321
|
+
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: `
|
|
16470
15322
|
<div
|
|
16471
|
-
|
|
15323
|
+
cdkTrapFocus
|
|
15324
|
+
[cdkTrapFocusAutoCapture]="true"
|
|
16472
15325
|
class="datagrid-detail-pane-content"
|
|
16473
15326
|
*ngIf="detailService.isOpen"
|
|
16474
15327
|
role="dialog"
|
|
@@ -16480,7 +15333,7 @@ ClrDatagridDetail.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
|
|
|
16480
15333
|
<ng-content></ng-content>
|
|
16481
15334
|
<div class="clr-sr-only">{{ commonStrings.keys.detailPaneEnd }}</div>
|
|
16482
15335
|
</div>
|
|
16483
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type:
|
|
15336
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]" }] });
|
|
16484
15337
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridDetail, decorators: [{
|
|
16485
15338
|
type: Component,
|
|
16486
15339
|
args: [{
|
|
@@ -16488,11 +15341,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
16488
15341
|
host: {
|
|
16489
15342
|
'[class.datagrid-detail-pane]': 'true',
|
|
16490
15343
|
},
|
|
16491
|
-
// We put the *ngIf on the
|
|
15344
|
+
// We put the *ngIf on the cdkTrapFocus so it doesn't always exist on the page
|
|
16492
15345
|
// have to test for presence of header for aria-describedby because it was causing unit tests to crash
|
|
16493
15346
|
template: `
|
|
16494
15347
|
<div
|
|
16495
|
-
|
|
15348
|
+
cdkTrapFocus
|
|
15349
|
+
[cdkTrapFocusAutoCapture]="true"
|
|
16496
15350
|
class="datagrid-detail-pane-content"
|
|
16497
15351
|
*ngIf="detailService.isOpen"
|
|
16498
15352
|
role="dialog"
|
|
@@ -16509,9 +15363,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
16509
15363
|
}], ctorParameters: function () { return [{ type: DetailService }, { type: ClrCommonStringsService }]; }, propDecorators: { header: [{
|
|
16510
15364
|
type: ContentChild,
|
|
16511
15365
|
args: [ClrDatagridDetailHeader]
|
|
16512
|
-
}],
|
|
15366
|
+
}], close: [{
|
|
16513
15367
|
type: HostListener,
|
|
16514
|
-
args: ['document:keyup.
|
|
15368
|
+
args: ['document:keyup.escape']
|
|
16515
15369
|
}] } });
|
|
16516
15370
|
|
|
16517
15371
|
/*
|
|
@@ -16712,291 +15566,12 @@ function slide(direction) {
|
|
|
16712
15566
|
* This software is released under MIT license.
|
|
16713
15567
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16714
15568
|
*/
|
|
16715
|
-
var ClrAriaLivePoliteness;
|
|
16716
|
-
(function (ClrAriaLivePoliteness) {
|
|
16717
|
-
ClrAriaLivePoliteness["off"] = "off";
|
|
16718
|
-
ClrAriaLivePoliteness["polite"] = "polite";
|
|
16719
|
-
ClrAriaLivePoliteness["assertive"] = "assertive";
|
|
16720
|
-
})(ClrAriaLivePoliteness || (ClrAriaLivePoliteness = {}));
|
|
16721
|
-
/**
|
|
16722
|
-
* Time in milliseconds before inserting the content into the container
|
|
16723
|
-
*/
|
|
16724
|
-
const ARIA_LIVE_TICK = 100;
|
|
16725
|
-
/**
|
|
16726
|
-
* @deprecated
|
|
16727
|
-
*
|
|
16728
|
-
* -- ClrAriaLiveService is deprecated in 5.0 to be removed in 6.0 --
|
|
16729
|
-
* Please consider using the LiveAnnouncer in the Angular Material CDK
|
|
16730
|
-
* if your project needs this functionality.
|
|
16731
|
-
* More info: https://material.angular.io/cdk/a11y/overview#example-1
|
|
16732
|
-
*
|
|
16733
|
-
* This service handle `aria-live` accessibility attribute. The issue is that you need
|
|
16734
|
-
* to have the DOM Element with attribute `aria-live` before you could insert content
|
|
16735
|
-
* and SR (Screen Reader) pick the change and announce it.
|
|
16736
|
-
*
|
|
16737
|
-
* ```typescript
|
|
16738
|
-
* import { ClrAriaLiveService } from 'src/clr-angular/utils/a11y/aria-live.service';
|
|
16739
|
-
*
|
|
16740
|
-
* @Component({
|
|
16741
|
-
* selector: 'clr-demo-component',
|
|
16742
|
-
* providers: [ClrAriaLiveService],
|
|
16743
|
-
* template: `
|
|
16744
|
-
* <ng-content></ng-content>
|
|
16745
|
-
* `,
|
|
16746
|
-
* })
|
|
16747
|
-
* export class DemoComponent {
|
|
16748
|
-
* constructor(ariaLiveService: ClrAriaLiveService) {}
|
|
16749
|
-
*
|
|
16750
|
-
* public actionThatWillTriggerChange() {
|
|
16751
|
-
* this.ariaLiveService.announce('message that I want to announce to SR');
|
|
16752
|
-
* }
|
|
16753
|
-
* }
|
|
16754
|
-
* ```
|
|
16755
|
-
*
|
|
16756
|
-
*/
|
|
16757
|
-
class ClrAriaLiveService {
|
|
16758
|
-
constructor(ngZone, _document, platformId) {
|
|
16759
|
-
this.ngZone = ngZone;
|
|
16760
|
-
this.platformId = platformId;
|
|
16761
|
-
this._id = `clr-aria-live-element-${uniqueIdFactory()}`;
|
|
16762
|
-
this.document = _document;
|
|
16763
|
-
}
|
|
16764
|
-
/**
|
|
16765
|
-
* get access to the internal HTML `id` that gonna be used for the AriaLive container.
|
|
16766
|
-
* @return ID of the DOM Element as string.
|
|
16767
|
-
*/
|
|
16768
|
-
get id() {
|
|
16769
|
-
return this._id;
|
|
16770
|
-
}
|
|
16771
|
-
/**
|
|
16772
|
-
* Append text content inside the AriaLive Container. This method will check if the
|
|
16773
|
-
* DOM Element is existing if not it will create one for us and the will apply the text.
|
|
16774
|
-
*
|
|
16775
|
-
* ```typescript
|
|
16776
|
-
* this.ariaLiveService.announce(this.el.nativeElement);
|
|
16777
|
-
* // or
|
|
16778
|
-
* this.ariaLiveService.announce('Message to announce to SR');
|
|
16779
|
-
* ```
|
|
16780
|
-
*
|
|
16781
|
-
* @remark
|
|
16782
|
-
* When second argument is `AriaLivePoliteness.off` we won't create aria container or update it.
|
|
16783
|
-
* The reason for that is that we don't want to do additional work if the SR will ignore it.
|
|
16784
|
-
*
|
|
16785
|
-
* @param message - This could be simple string or HTMLElement
|
|
16786
|
-
* @param politeness - 'polite', 'assertive' or 'off'
|
|
16787
|
-
*/
|
|
16788
|
-
announce(message, politeness = ClrAriaLivePoliteness.polite) {
|
|
16789
|
-
if (politeness === ClrAriaLivePoliteness.off) {
|
|
16790
|
-
return;
|
|
16791
|
-
}
|
|
16792
|
-
if (!this.ariaLiveElement && isPlatformBrowser(this.platformId)) {
|
|
16793
|
-
this.ariaLiveElement = this.createContainer();
|
|
16794
|
-
}
|
|
16795
|
-
message = typeof message !== 'string' && isPlatformBrowser(this.platformId) ? message.textContent : message;
|
|
16796
|
-
// when there is no message do NOTHING!
|
|
16797
|
-
if (!message) {
|
|
16798
|
-
return;
|
|
16799
|
-
}
|
|
16800
|
-
this.ariaLiveElement.setAttribute('aria-live', politeness);
|
|
16801
|
-
// This 100ms timeout is necessary for some browser + screen-reader combinations:
|
|
16802
|
-
// - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout.
|
|
16803
|
-
// - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) message won't be read a
|
|
16804
|
-
// second time without clearing and then using a non-zero delay.
|
|
16805
|
-
// (using JAWS 17 at time of this writing).
|
|
16806
|
-
this.ngZone.runOutsideAngular(() => {
|
|
16807
|
-
// This clearTimeout will stop all older messages from announcing
|
|
16808
|
-
// in the case where the messages are comming too fast we gonna try to append only
|
|
16809
|
-
// the last one. That's what the SR will try to do anyway.
|
|
16810
|
-
clearTimeout(this.previousTimeout);
|
|
16811
|
-
this.previousTimeout = setTimeout(() => {
|
|
16812
|
-
this.ariaLiveElement.textContent = message;
|
|
16813
|
-
}, ARIA_LIVE_TICK);
|
|
16814
|
-
});
|
|
16815
|
-
}
|
|
16816
|
-
/**
|
|
16817
|
-
* onDestroy life cycle - must stop all active setTimeouts and remove the AriaLive
|
|
16818
|
-
* container from the document.
|
|
16819
|
-
*/
|
|
16820
|
-
ngOnDestroy() {
|
|
16821
|
-
clearTimeout(this.previousTimeout);
|
|
16822
|
-
if (isPlatformBrowser(this.platformId) && this.ariaLiveElement) {
|
|
16823
|
-
this.document.body.removeChild(this.ariaLiveElement);
|
|
16824
|
-
this.ariaLiveElement = null;
|
|
16825
|
-
}
|
|
16826
|
-
}
|
|
16827
|
-
/**
|
|
16828
|
-
* Create AriaLive DOM element as a last child of the document.
|
|
16829
|
-
* After the element is created, we gonna apply Clarity class to hide it from
|
|
16830
|
-
* the screen and set the `aria-live` politness.
|
|
16831
|
-
*
|
|
16832
|
-
* `clr-sr-only` is the CSS class that is used to hide the element from the screen.
|
|
16833
|
-
*
|
|
16834
|
-
* @remark
|
|
16835
|
-
* Calling this method multiple times will create multiple DOM Elements, that
|
|
16836
|
-
* won't be tracked and will be GC after the service is destroyed.
|
|
16837
|
-
*
|
|
16838
|
-
* @return AriaLive container as HTMLElement
|
|
16839
|
-
*
|
|
16840
|
-
*/
|
|
16841
|
-
createContainer() {
|
|
16842
|
-
const ariaLiveElement = this.document.createElement('div');
|
|
16843
|
-
ariaLiveElement.setAttribute('id', this.id);
|
|
16844
|
-
// Use clarity screen reader class to hide the dom element
|
|
16845
|
-
// and fix the scrollbar shake
|
|
16846
|
-
ariaLiveElement.classList.add('clr-sr-only');
|
|
16847
|
-
ariaLiveElement.setAttribute('aria-atomic', 'true');
|
|
16848
|
-
ariaLiveElement.setAttribute('aria-live', ClrAriaLivePoliteness.polite);
|
|
16849
|
-
this.document.body.appendChild(ariaLiveElement);
|
|
16850
|
-
return ariaLiveElement;
|
|
16851
|
-
}
|
|
16852
|
-
}
|
|
16853
|
-
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 });
|
|
16854
|
-
ClrAriaLiveService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrAriaLiveService, providedIn: 'root' });
|
|
16855
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrAriaLiveService, decorators: [{
|
|
16856
|
-
type: Injectable,
|
|
16857
|
-
args: [{
|
|
16858
|
-
providedIn: 'root',
|
|
16859
|
-
}]
|
|
16860
|
-
}], ctorParameters: function () {
|
|
16861
|
-
return [{ type: i0.NgZone }, { type: undefined, decorators: [{
|
|
16862
|
-
type: Inject,
|
|
16863
|
-
args: [DOCUMENT]
|
|
16864
|
-
}] }, { type: undefined, decorators: [{
|
|
16865
|
-
type: Inject,
|
|
16866
|
-
args: [PLATFORM_ID]
|
|
16867
|
-
}] }];
|
|
16868
|
-
} });
|
|
16869
|
-
|
|
16870
|
-
/*
|
|
16871
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16872
|
-
* This software is released under MIT license.
|
|
16873
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16874
|
-
*/
|
|
16875
|
-
|
|
16876
|
-
/*
|
|
16877
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16878
|
-
* This software is released under MIT license.
|
|
16879
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16880
|
-
*/
|
|
16881
|
-
|
|
16882
|
-
/*
|
|
16883
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16884
|
-
* This software is released under MIT license.
|
|
16885
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16886
|
-
*/
|
|
16887
|
-
|
|
16888
|
-
/*
|
|
16889
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16890
|
-
* This software is released under MIT license.
|
|
16891
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16892
|
-
*/
|
|
16893
|
-
|
|
16894
|
-
/*
|
|
16895
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16896
|
-
* This software is released under MIT license.
|
|
16897
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16898
|
-
*/
|
|
16899
|
-
|
|
16900
|
-
/*
|
|
16901
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16902
|
-
* This software is released under MIT license.
|
|
16903
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16904
|
-
*/
|
|
16905
|
-
|
|
16906
|
-
/*
|
|
16907
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16908
|
-
* This software is released under MIT license.
|
|
16909
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16910
|
-
*/
|
|
16911
|
-
class ForTypeAheadProvider {
|
|
16912
|
-
constructor() {
|
|
16913
|
-
this._textContentChange = new Subject();
|
|
16914
|
-
}
|
|
16915
|
-
get textContentChange() {
|
|
16916
|
-
return this._textContentChange.asObservable();
|
|
16917
|
-
}
|
|
16918
|
-
get textContent() {
|
|
16919
|
-
return this._textContent;
|
|
16920
|
-
}
|
|
16921
|
-
set textContent(value) {
|
|
16922
|
-
this._textContent = value;
|
|
16923
|
-
this._textContentChange.next(value);
|
|
16924
|
-
}
|
|
16925
|
-
}
|
|
16926
|
-
ForTypeAheadProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ForTypeAheadProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
16927
|
-
ForTypeAheadProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ForTypeAheadProvider });
|
|
16928
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ForTypeAheadProvider, decorators: [{
|
|
16929
|
-
type: Injectable
|
|
16930
|
-
}] });
|
|
16931
|
-
|
|
16932
|
-
/*
|
|
16933
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16934
|
-
* This software is released under MIT license.
|
|
16935
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16936
|
-
*/
|
|
16937
|
-
// The purpose of this directive is to provide the text content of its host element
|
|
16938
|
-
// or text content that's passed to its input.
|
|
16939
|
-
// This directive must stay optional. So do not embed this directive in a component module by default.
|
|
16940
|
-
// If users need to use this directive, they should import its module on their side.
|
|
16941
|
-
class ClrForTypeAhead {
|
|
16942
|
-
constructor(el, forTypeAheadProvider) {
|
|
16943
|
-
this.el = el;
|
|
16944
|
-
this.forTypeAheadProvider = forTypeAheadProvider;
|
|
16945
|
-
}
|
|
16946
|
-
trimAndLowerCase(value) {
|
|
16947
|
-
return value.toLocaleLowerCase().trim();
|
|
16948
|
-
}
|
|
16949
|
-
get content() {
|
|
16950
|
-
return this._content;
|
|
16951
|
-
}
|
|
16952
|
-
set content(value) {
|
|
16953
|
-
if (value) {
|
|
16954
|
-
this._content = this.trimAndLowerCase(value);
|
|
16955
|
-
this.forTypeAheadProvider.textContent = this._content;
|
|
16956
|
-
}
|
|
16957
|
-
else {
|
|
16958
|
-
this._content = this.trimAndLowerCase(this.el.nativeElement.textContent);
|
|
16959
|
-
this.forTypeAheadProvider.textContent = this._content;
|
|
16960
|
-
}
|
|
16961
|
-
}
|
|
16962
|
-
ngOnInit() {
|
|
16963
|
-
if (!this._content) {
|
|
16964
|
-
this._content = this.trimAndLowerCase(this.el.nativeElement.textContent);
|
|
16965
|
-
this.forTypeAheadProvider.textContent = this._content;
|
|
16966
|
-
}
|
|
16967
|
-
}
|
|
16968
|
-
}
|
|
16969
|
-
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 });
|
|
16970
|
-
ClrForTypeAhead.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: ClrForTypeAhead, selector: "[clrForTypeAhead]", inputs: { content: ["clrForTypeAhead", "content"] }, providers: [ForTypeAheadProvider], ngImport: i0 });
|
|
16971
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrForTypeAhead, decorators: [{
|
|
16972
|
-
type: Directive,
|
|
16973
|
-
args: [{
|
|
16974
|
-
providers: [ForTypeAheadProvider],
|
|
16975
|
-
selector: '[clrForTypeAhead]',
|
|
16976
|
-
}]
|
|
16977
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ForTypeAheadProvider }]; }, propDecorators: { content: [{
|
|
16978
|
-
type: Input,
|
|
16979
|
-
args: ['clrForTypeAhead']
|
|
16980
|
-
}] } });
|
|
16981
15569
|
|
|
16982
15570
|
/*
|
|
16983
15571
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16984
15572
|
* This software is released under MIT license.
|
|
16985
15573
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16986
15574
|
*/
|
|
16987
|
-
class ClrForTypeAheadModule {
|
|
16988
|
-
}
|
|
16989
|
-
ClrForTypeAheadModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrForTypeAheadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
16990
|
-
ClrForTypeAheadModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: ClrForTypeAheadModule, declarations: [ClrForTypeAhead], imports: [CommonModule], exports: [ClrForTypeAhead] });
|
|
16991
|
-
ClrForTypeAheadModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrForTypeAheadModule, imports: [CommonModule] });
|
|
16992
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrForTypeAheadModule, decorators: [{
|
|
16993
|
-
type: NgModule,
|
|
16994
|
-
args: [{
|
|
16995
|
-
imports: [CommonModule],
|
|
16996
|
-
declarations: [ClrForTypeAhead],
|
|
16997
|
-
exports: [ClrForTypeAhead],
|
|
16998
|
-
}]
|
|
16999
|
-
}] });
|
|
17000
15575
|
|
|
17001
15576
|
/*
|
|
17002
15577
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -17285,19 +15860,19 @@ class ClrDatagridPageSize {
|
|
|
17285
15860
|
}
|
|
17286
15861
|
ClrDatagridPageSize.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridPageSize, deps: [{ token: Page }], target: i0.ɵɵFactoryTarget.Component });
|
|
17287
15862
|
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: `
|
|
17288
|
-
<ng-content></ng-content>
|
|
15863
|
+
<label [for]="pageSizeOptionsId"><ng-content></ng-content></label>
|
|
17289
15864
|
<div class="clr-select-wrapper">
|
|
17290
15865
|
<select [id]="pageSizeOptionsId" [class.clr-page-size-select]="true" [(ngModel)]="page.size">
|
|
17291
15866
|
<option *ngFor="let option of pageSizeOptions" [ngValue]="option">{{ option }}</option>
|
|
17292
15867
|
</select>
|
|
17293
15868
|
</div>
|
|
17294
|
-
`, 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"] }] });
|
|
15869
|
+
`, 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"] }] });
|
|
17295
15870
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridPageSize, decorators: [{
|
|
17296
15871
|
type: Component,
|
|
17297
15872
|
args: [{
|
|
17298
15873
|
selector: 'clr-dg-page-size',
|
|
17299
15874
|
template: `
|
|
17300
|
-
<ng-content></ng-content>
|
|
15875
|
+
<label [for]="pageSizeOptionsId"><ng-content></ng-content></label>
|
|
17301
15876
|
<div class="clr-select-wrapper">
|
|
17302
15877
|
<select [id]="pageSizeOptionsId" [class.clr-page-size-select]="true" [(ngModel)]="page.size">
|
|
17303
15878
|
<option *ngFor="let option of pageSizeOptions" [ngValue]="option">{{ option }}</option>
|
|
@@ -17429,9 +16004,14 @@ class ClrDatagridPagination {
|
|
|
17429
16004
|
}
|
|
17430
16005
|
return middlePages;
|
|
17431
16006
|
}
|
|
16007
|
+
verifyCurrentPage(event) {
|
|
16008
|
+
const parsed = parseInt(event.target.value, 10);
|
|
16009
|
+
if (parsed !== this.page.current) {
|
|
16010
|
+
event.target.value = this.page.current;
|
|
16011
|
+
}
|
|
16012
|
+
}
|
|
17432
16013
|
/**
|
|
17433
|
-
* We only update the pagination's current page on
|
|
17434
|
-
* when they press enter.
|
|
16014
|
+
* We only update the pagination's current page on enter.
|
|
17435
16015
|
*/
|
|
17436
16016
|
updateCurrentPage(event) {
|
|
17437
16017
|
const parsed = parseInt(event.target.value, 10);
|
|
@@ -17492,7 +16072,7 @@ ClrDatagridPagination.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
|
17492
16072
|
[size]="page.last.toString().length"
|
|
17493
16073
|
[value]="page.current"
|
|
17494
16074
|
(keydown.enter)="updateCurrentPage($event)"
|
|
17495
|
-
(blur)="
|
|
16075
|
+
(blur)="verifyCurrentPage($event)"
|
|
17496
16076
|
[attr.aria-label]="commonStrings.keys.currentPage"
|
|
17497
16077
|
/>
|
|
17498
16078
|
<ng-template #readOnly>
|
|
@@ -17592,7 +16172,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
17592
16172
|
[size]="page.last.toString().length"
|
|
17593
16173
|
[value]="page.current"
|
|
17594
16174
|
(keydown.enter)="updateCurrentPage($event)"
|
|
17595
|
-
(blur)="
|
|
16175
|
+
(blur)="verifyCurrentPage($event)"
|
|
17596
16176
|
[attr.aria-label]="commonStrings.keys.currentPage"
|
|
17597
16177
|
/>
|
|
17598
16178
|
<ng-template #readOnly>
|
|
@@ -17713,20 +16293,20 @@ class ClrDatagridRowDetail {
|
|
|
17713
16293
|
}
|
|
17714
16294
|
get beginningOfExpandableContentAriaText() {
|
|
17715
16295
|
return (this._beginningOfExpandableContentAriaText ||
|
|
17716
|
-
`${this.commonStrings.keys.
|
|
17717
|
-
${this.commonStrings.keys.
|
|
16296
|
+
`${this.commonStrings.keys.datagridExpandableBeginningOf}
|
|
16297
|
+
${this.commonStrings.keys.datagridExpandableRowContent}`);
|
|
17718
16298
|
}
|
|
17719
16299
|
get endOfExpandableContentAriaText() {
|
|
17720
16300
|
return (this._endOfExpandableContentAriaText ||
|
|
17721
|
-
`${this.commonStrings.keys.
|
|
17722
|
-
${this.commonStrings.keys.
|
|
16301
|
+
`${this.commonStrings.keys.datagridExpandableEndOf}
|
|
16302
|
+
${this.commonStrings.keys.datagridExpandableRowContent}`);
|
|
17723
16303
|
}
|
|
17724
16304
|
}
|
|
17725
16305
|
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 });
|
|
17726
16306
|
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: `
|
|
17727
16307
|
<div class="clr-sr-only">
|
|
17728
16308
|
{{ beginningOfExpandableContentAriaText }}
|
|
17729
|
-
{{ commonStrings.keys.
|
|
16309
|
+
{{ commonStrings.keys.datagridExpandableRowsHelperText }}
|
|
17730
16310
|
</div>
|
|
17731
16311
|
<ng-content></ng-content>
|
|
17732
16312
|
<div class="clr-sr-only">{{ endOfExpandableContentAriaText }}</div>
|
|
@@ -17735,11 +16315,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
17735
16315
|
type: Component,
|
|
17736
16316
|
args: [{
|
|
17737
16317
|
selector: 'clr-dg-row-detail',
|
|
17738
|
-
// TODO: @deprecated - dategrid* keys are deprecated. Remove in v14.
|
|
17739
16318
|
template: `
|
|
17740
16319
|
<div class="clr-sr-only">
|
|
17741
16320
|
{{ beginningOfExpandableContentAriaText }}
|
|
17742
|
-
{{ commonStrings.keys.
|
|
16321
|
+
{{ commonStrings.keys.datagridExpandableRowsHelperText }}
|
|
17743
16322
|
</div>
|
|
17744
16323
|
<ng-content></ng-content>
|
|
17745
16324
|
<div class="clr-sr-only">{{ endOfExpandableContentAriaText }}</div>
|
|
@@ -18361,6 +16940,8 @@ ClrDatagridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versi
|
|
|
18361
16940
|
DatagridStringFilter,
|
|
18362
16941
|
DatagridNumericFilter
|
|
18363
16942
|
], imports: [CommonModule,
|
|
16943
|
+
CdkDragModule,
|
|
16944
|
+
CdkTrapFocusModule,
|
|
18364
16945
|
ClrIconModule,
|
|
18365
16946
|
ClrFormsModule,
|
|
18366
16947
|
FormsModule,
|
|
@@ -18368,11 +16949,9 @@ ClrDatagridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versi
|
|
|
18368
16949
|
ClrConditionalModule,
|
|
18369
16950
|
ClrOutsideClickModule,
|
|
18370
16951
|
ClrExpandableAnimationModule,
|
|
18371
|
-
ClrDragAndDropModule,
|
|
18372
16952
|
ClrSpinnerModule,
|
|
18373
16953
|
ClrPopoverModuleNext,
|
|
18374
16954
|
ClrKeyFocusModule,
|
|
18375
|
-
ClrFocusTrapModule,
|
|
18376
16955
|
ClrFocusOnViewInitModule], exports: [
|
|
18377
16956
|
// Core
|
|
18378
16957
|
ClrDatagrid,
|
|
@@ -18416,6 +16995,8 @@ ClrDatagridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versi
|
|
|
18416
16995
|
DatagridNumericFilter
|
|
18417
16996
|
] });
|
|
18418
16997
|
ClrDatagridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridModule, imports: [CommonModule,
|
|
16998
|
+
CdkDragModule,
|
|
16999
|
+
CdkTrapFocusModule,
|
|
18419
17000
|
ClrIconModule,
|
|
18420
17001
|
ClrFormsModule,
|
|
18421
17002
|
FormsModule,
|
|
@@ -18423,17 +17004,17 @@ ClrDatagridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", versi
|
|
|
18423
17004
|
ClrConditionalModule,
|
|
18424
17005
|
ClrOutsideClickModule,
|
|
18425
17006
|
ClrExpandableAnimationModule,
|
|
18426
|
-
ClrDragAndDropModule,
|
|
18427
17007
|
ClrSpinnerModule,
|
|
18428
17008
|
ClrPopoverModuleNext,
|
|
18429
17009
|
ClrKeyFocusModule,
|
|
18430
|
-
ClrFocusTrapModule,
|
|
18431
17010
|
ClrFocusOnViewInitModule] });
|
|
18432
17011
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridModule, decorators: [{
|
|
18433
17012
|
type: NgModule,
|
|
18434
17013
|
args: [{
|
|
18435
17014
|
imports: [
|
|
18436
17015
|
CommonModule,
|
|
17016
|
+
CdkDragModule,
|
|
17017
|
+
CdkTrapFocusModule,
|
|
18437
17018
|
ClrIconModule,
|
|
18438
17019
|
ClrFormsModule,
|
|
18439
17020
|
FormsModule,
|
|
@@ -18441,11 +17022,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
18441
17022
|
ClrConditionalModule,
|
|
18442
17023
|
ClrOutsideClickModule,
|
|
18443
17024
|
ClrExpandableAnimationModule,
|
|
18444
|
-
ClrDragAndDropModule,
|
|
18445
17025
|
ClrSpinnerModule,
|
|
18446
17026
|
ClrPopoverModuleNext,
|
|
18447
17027
|
ClrKeyFocusModule,
|
|
18448
|
-
ClrFocusTrapModule,
|
|
18449
17028
|
ClrFocusOnViewInitModule,
|
|
18450
17029
|
],
|
|
18451
17030
|
declarations: [CLR_DATAGRID_DIRECTIVES],
|
|
@@ -18594,7 +17173,7 @@ class ClrStackBlock {
|
|
|
18594
17173
|
}
|
|
18595
17174
|
}
|
|
18596
17175
|
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 });
|
|
18597
|
-
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"]
|
|
17176
|
+
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: `
|
|
18598
17177
|
<!-- The 'preventDefault' for the space keydown event prevents the page
|
|
18599
17178
|
from scrolling when a stack block is toggled via the space key. -->
|
|
18600
17179
|
<div
|
|
@@ -18715,12 +17294,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
18715
17294
|
}], ariaLevel: [{
|
|
18716
17295
|
type: Input,
|
|
18717
17296
|
args: ['clrStackViewLevel']
|
|
18718
|
-
}], ariaSetsize: [{
|
|
18719
|
-
type: Input,
|
|
18720
|
-
args: ['clrStackViewSetsize']
|
|
18721
|
-
}], ariaPosinset: [{
|
|
18722
|
-
type: Input,
|
|
18723
|
-
args: ['clrStackViewPosinset']
|
|
18724
17297
|
}], onStackLabelFocus: [{
|
|
18725
17298
|
type: HostBinding,
|
|
18726
17299
|
args: ['class.on-focus']
|
|
@@ -18755,30 +17328,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
18755
17328
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18756
17329
|
*/
|
|
18757
17330
|
class ClrStackView {
|
|
18758
|
-
constructor() {
|
|
18759
|
-
/**
|
|
18760
|
-
* Undocumented experimental feature: inline editing.
|
|
18761
|
-
*/
|
|
18762
|
-
this.editable = false;
|
|
18763
|
-
this.save = new EventEmitter(false);
|
|
18764
|
-
this._editMode = false;
|
|
18765
|
-
this.editingChange = new EventEmitter(false);
|
|
18766
|
-
}
|
|
18767
|
-
get editing() {
|
|
18768
|
-
return this.editable && this._editMode;
|
|
18769
|
-
}
|
|
18770
|
-
set editing(value) {
|
|
18771
|
-
if (this.editable) {
|
|
18772
|
-
this._editMode = value;
|
|
18773
|
-
this.editingChange.emit(value);
|
|
18774
|
-
if (!value) {
|
|
18775
|
-
this.save.emit(null);
|
|
18776
|
-
}
|
|
18777
|
-
}
|
|
18778
|
-
}
|
|
18779
17331
|
}
|
|
18780
17332
|
ClrStackView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackView, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
18781
|
-
ClrStackView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrStackView, selector: "clr-stack-view",
|
|
17333
|
+
ClrStackView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrStackView, selector: "clr-stack-view", ngImport: i0, template: `
|
|
18782
17334
|
<ng-content select="clr-stack-header"></ng-content>
|
|
18783
17335
|
<div class="stack-view"><ng-content></ng-content></div>
|
|
18784
17336
|
`, isInline: true, styles: [":host{display:block}\n"] });
|
|
@@ -18788,10 +17340,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
18788
17340
|
<ng-content select="clr-stack-header"></ng-content>
|
|
18789
17341
|
<div class="stack-view"><ng-content></ng-content></div>
|
|
18790
17342
|
`, styles: [":host{display:block}\n"] }]
|
|
18791
|
-
}]
|
|
18792
|
-
type: Output,
|
|
18793
|
-
args: ['clrStackSave']
|
|
18794
|
-
}] } });
|
|
17343
|
+
}] });
|
|
18795
17344
|
|
|
18796
17345
|
/*
|
|
18797
17346
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -18810,19 +17359,9 @@ ClrStackHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version
|
|
|
18810
17359
|
|
|
18811
17360
|
<span class="stack-actions">
|
|
18812
17361
|
<ng-content select=".stack-action"></ng-content>
|
|
18813
|
-
<!-- Undocumented experimental feature: inline editing. -->
|
|
18814
|
-
<button
|
|
18815
|
-
*ngIf="stackView.editable"
|
|
18816
|
-
class="stack-action btn btn-sm btn-link"
|
|
18817
|
-
(click)="stackView.editing = !stackView.editing"
|
|
18818
|
-
type="button"
|
|
18819
|
-
>
|
|
18820
|
-
Edit
|
|
18821
|
-
</button>
|
|
18822
|
-
<!-- End of undocumented experimental feature. -->
|
|
18823
17362
|
</span>
|
|
18824
17363
|
</div>
|
|
18825
|
-
`, isInline: true, styles: [":host{display:block}\n"]
|
|
17364
|
+
`, isInline: true, styles: [":host{display:block}\n"] });
|
|
18826
17365
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackHeader, decorators: [{
|
|
18827
17366
|
type: Component,
|
|
18828
17367
|
args: [{ selector: 'clr-stack-header', template: `
|
|
@@ -18831,116 +17370,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
18831
17370
|
|
|
18832
17371
|
<span class="stack-actions">
|
|
18833
17372
|
<ng-content select=".stack-action"></ng-content>
|
|
18834
|
-
<!-- Undocumented experimental feature: inline editing. -->
|
|
18835
|
-
<button
|
|
18836
|
-
*ngIf="stackView.editable"
|
|
18837
|
-
class="stack-action btn btn-sm btn-link"
|
|
18838
|
-
(click)="stackView.editing = !stackView.editing"
|
|
18839
|
-
type="button"
|
|
18840
|
-
>
|
|
18841
|
-
Edit
|
|
18842
|
-
</button>
|
|
18843
|
-
<!-- End of undocumented experimental feature. -->
|
|
18844
17373
|
</span>
|
|
18845
17374
|
</div>
|
|
18846
17375
|
`, styles: [":host{display:block}\n"] }]
|
|
18847
17376
|
}], ctorParameters: function () { return [{ type: ClrStackView }]; } });
|
|
18848
17377
|
|
|
18849
|
-
/*
|
|
18850
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18851
|
-
* This software is released under MIT license.
|
|
18852
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18853
|
-
*/
|
|
18854
|
-
class StackControl {
|
|
18855
|
-
constructor(stackView) {
|
|
18856
|
-
this.stackView = stackView;
|
|
18857
|
-
this.modelChange = new EventEmitter(false);
|
|
18858
|
-
// Make the ClrStackView editable, since it contains a StackControl
|
|
18859
|
-
this.stackView.editable = true;
|
|
18860
|
-
this.subscription = this.stackView.editingChange.subscribe((editing) => {
|
|
18861
|
-
// Edit mode was closed
|
|
18862
|
-
if (!editing) {
|
|
18863
|
-
this.modelChange.emit(this.model);
|
|
18864
|
-
}
|
|
18865
|
-
});
|
|
18866
|
-
}
|
|
18867
|
-
ngOnDestroy() {
|
|
18868
|
-
this.subscription.unsubscribe();
|
|
18869
|
-
}
|
|
18870
|
-
}
|
|
18871
|
-
StackControl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: StackControl, deps: [{ token: ClrStackView }], target: i0.ɵɵFactoryTarget.Directive });
|
|
18872
|
-
StackControl.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: StackControl, ngImport: i0 });
|
|
18873
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: StackControl, decorators: [{
|
|
18874
|
-
type: Directive
|
|
18875
|
-
}], ctorParameters: function () { return [{ type: ClrStackView }]; } });
|
|
18876
|
-
|
|
18877
|
-
/*
|
|
18878
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18879
|
-
* This software is released under MIT license.
|
|
18880
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18881
|
-
*/
|
|
18882
|
-
class ClrStackInput extends StackControl {
|
|
18883
|
-
constructor(stackView) {
|
|
18884
|
-
super(stackView);
|
|
18885
|
-
this.stackView = stackView;
|
|
18886
|
-
this.type = 'text';
|
|
18887
|
-
}
|
|
18888
|
-
}
|
|
18889
|
-
ClrStackInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackInput, deps: [{ token: ClrStackView }], target: i0.ɵɵFactoryTarget.Component });
|
|
18890
|
-
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: `
|
|
18891
|
-
<span *ngIf="!stackView.editing">{{ model }}</span>
|
|
18892
|
-
<input [type]="type" *ngIf="stackView.editing" [(ngModel)]="model" />
|
|
18893
|
-
`, 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"] }] });
|
|
18894
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackInput, decorators: [{
|
|
18895
|
-
type: Component,
|
|
18896
|
-
args: [{
|
|
18897
|
-
selector: 'clr-stack-input',
|
|
18898
|
-
inputs: ['model: clrModel', 'type'],
|
|
18899
|
-
outputs: ['modelChange: clrModelChange'],
|
|
18900
|
-
template: `
|
|
18901
|
-
<span *ngIf="!stackView.editing">{{ model }}</span>
|
|
18902
|
-
<input [type]="type" *ngIf="stackView.editing" [(ngModel)]="model" />
|
|
18903
|
-
`,
|
|
18904
|
-
}]
|
|
18905
|
-
}], ctorParameters: function () { return [{ type: ClrStackView }]; } });
|
|
18906
|
-
|
|
18907
|
-
/*
|
|
18908
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18909
|
-
* This software is released under MIT license.
|
|
18910
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18911
|
-
*/
|
|
18912
|
-
class ClrStackSelect extends StackControl {
|
|
18913
|
-
constructor(stackView) {
|
|
18914
|
-
super(stackView);
|
|
18915
|
-
this.stackView = stackView;
|
|
18916
|
-
}
|
|
18917
|
-
}
|
|
18918
|
-
ClrStackSelect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackSelect, deps: [{ token: ClrStackView }], target: i0.ɵɵFactoryTarget.Component });
|
|
18919
|
-
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: `
|
|
18920
|
-
<span *ngIf="!stackView.editing">{{ model }}</span>
|
|
18921
|
-
<div class="select" *ngIf="stackView.editing">
|
|
18922
|
-
<select [(ngModel)]="model">
|
|
18923
|
-
<ng-content></ng-content>
|
|
18924
|
-
</select>
|
|
18925
|
-
</div>
|
|
18926
|
-
`, 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"] }] });
|
|
18927
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackSelect, decorators: [{
|
|
18928
|
-
type: Component,
|
|
18929
|
-
args: [{
|
|
18930
|
-
selector: 'clr-stack-select',
|
|
18931
|
-
inputs: ['model: clrModel'],
|
|
18932
|
-
outputs: ['modelChange: clrModelChange'],
|
|
18933
|
-
template: `
|
|
18934
|
-
<span *ngIf="!stackView.editing">{{ model }}</span>
|
|
18935
|
-
<div class="select" *ngIf="stackView.editing">
|
|
18936
|
-
<select [(ngModel)]="model">
|
|
18937
|
-
<ng-content></ng-content>
|
|
18938
|
-
</select>
|
|
18939
|
-
</div>
|
|
18940
|
-
`,
|
|
18941
|
-
}]
|
|
18942
|
-
}], ctorParameters: function () { return [{ type: ClrStackView }]; } });
|
|
18943
|
-
|
|
18944
17378
|
/*
|
|
18945
17379
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18946
17380
|
* This software is released under MIT license.
|
|
@@ -18953,14 +17387,6 @@ const CLR_STACK_VIEW_DIRECTIVES = [
|
|
|
18953
17387
|
ClrStackContentInput,
|
|
18954
17388
|
ClrStackViewLabel,
|
|
18955
17389
|
ClrStackViewCustomTags,
|
|
18956
|
-
/**
|
|
18957
|
-
* Undocumented experimental feature: inline editing.
|
|
18958
|
-
*/
|
|
18959
|
-
ClrStackInput,
|
|
18960
|
-
ClrStackSelect,
|
|
18961
|
-
/**
|
|
18962
|
-
* End of undocumented experimental feature.
|
|
18963
|
-
*/
|
|
18964
17390
|
];
|
|
18965
17391
|
class ClrStackViewModule {
|
|
18966
17392
|
constructor() {
|
|
@@ -18973,22 +17399,12 @@ ClrStackViewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", vers
|
|
|
18973
17399
|
ClrStackBlock,
|
|
18974
17400
|
ClrStackContentInput,
|
|
18975
17401
|
ClrStackViewLabel,
|
|
18976
|
-
ClrStackViewCustomTags,
|
|
18977
|
-
/**
|
|
18978
|
-
* Undocumented experimental feature: inline editing.
|
|
18979
|
-
*/
|
|
18980
|
-
ClrStackInput,
|
|
18981
|
-
ClrStackSelect], imports: [CommonModule, FormsModule, ClrIconModule, ClrExpandableAnimationModule], exports: [ClrStackView,
|
|
17402
|
+
ClrStackViewCustomTags], imports: [CommonModule, FormsModule, ClrIconModule, ClrExpandableAnimationModule], exports: [ClrStackView,
|
|
18982
17403
|
ClrStackHeader,
|
|
18983
17404
|
ClrStackBlock,
|
|
18984
17405
|
ClrStackContentInput,
|
|
18985
17406
|
ClrStackViewLabel,
|
|
18986
|
-
ClrStackViewCustomTags
|
|
18987
|
-
/**
|
|
18988
|
-
* Undocumented experimental feature: inline editing.
|
|
18989
|
-
*/
|
|
18990
|
-
ClrStackInput,
|
|
18991
|
-
ClrStackSelect] });
|
|
17407
|
+
ClrStackViewCustomTags] });
|
|
18992
17408
|
ClrStackViewModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackViewModule, imports: [CommonModule, FormsModule, ClrIconModule, ClrExpandableAnimationModule] });
|
|
18993
17409
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackViewModule, decorators: [{
|
|
18994
17410
|
type: NgModule,
|
|
@@ -19615,13 +18031,13 @@ const LVIEW_CONTEXT_INDEX = 8;
|
|
|
19615
18031
|
// then those keys are sent together in one request.
|
|
19616
18032
|
const TREE_TYPE_AHEAD_TIMEOUT = 200;
|
|
19617
18033
|
class ClrTreeNode {
|
|
19618
|
-
constructor(platformId, parent,
|
|
18034
|
+
constructor(platformId, parent, featuresService, expandService, commonStrings, focusManager, elementRef, injector) {
|
|
19619
18035
|
this.platformId = platformId;
|
|
19620
|
-
this.forTypeAheadProvider = forTypeAheadProvider;
|
|
19621
18036
|
this.featuresService = featuresService;
|
|
19622
18037
|
this.expandService = expandService;
|
|
19623
18038
|
this.commonStrings = commonStrings;
|
|
19624
18039
|
this.focusManager = focusManager;
|
|
18040
|
+
this.elementRef = elementRef;
|
|
19625
18041
|
this.STATES = ClrSelectedState;
|
|
19626
18042
|
this.skipEmitChange = false;
|
|
19627
18043
|
this.isModelLoading = false;
|
|
@@ -19701,6 +18117,9 @@ class ClrTreeNode {
|
|
|
19701
18117
|
set expanded(value) {
|
|
19702
18118
|
this.expandService.expanded = value;
|
|
19703
18119
|
}
|
|
18120
|
+
set clrForTypeAhead(value) {
|
|
18121
|
+
this._model.textContent = trimAndLowerCase(value || this.elementRef.nativeElement.textContent);
|
|
18122
|
+
}
|
|
19704
18123
|
ngOnInit() {
|
|
19705
18124
|
this._model.expanded = this.expanded;
|
|
19706
18125
|
this.subscriptions.push(this._model.selected.pipe(filter(() => !this.skipEmitChange)).subscribe(value => {
|
|
@@ -19720,13 +18139,15 @@ class ClrTreeNode {
|
|
|
19720
18139
|
this.subscriptions.push(this._model.loading$.pipe(debounceTime(0)).subscribe(isLoading => (this.isModelLoading = isLoading)));
|
|
19721
18140
|
}
|
|
19722
18141
|
ngAfterContentInit() {
|
|
19723
|
-
|
|
19724
|
-
this.
|
|
19725
|
-
|
|
19726
|
-
|
|
19727
|
-
|
|
19728
|
-
|
|
19729
|
-
|
|
18142
|
+
this.subscriptions.push(this.typeAheadKeyEvent.pipe(debounceTime(TREE_TYPE_AHEAD_TIMEOUT)).subscribe((bufferedKeys) => {
|
|
18143
|
+
this.focusManager.focusNodeStartsWith(bufferedKeys, this._model);
|
|
18144
|
+
// reset once bufferedKeys are used
|
|
18145
|
+
this.typeAheadKeyBuffer = '';
|
|
18146
|
+
}));
|
|
18147
|
+
}
|
|
18148
|
+
ngAfterViewInit() {
|
|
18149
|
+
if (!this._model.textContent) {
|
|
18150
|
+
this._model.textContent = trimAndLowerCase(this.elementRef.nativeElement.textContent);
|
|
19730
18151
|
}
|
|
19731
18152
|
}
|
|
19732
18153
|
ngOnDestroy() {
|
|
@@ -19763,32 +18184,32 @@ class ClrTreeNode {
|
|
|
19763
18184
|
// By default, pressing arrow key makes AT focus go into the nested content of the item.
|
|
19764
18185
|
preventArrowKeyScroll(event);
|
|
19765
18186
|
// https://www.w3.org/TR/wai-aria-practices-1.1/#keyboard-interaction-22
|
|
19766
|
-
switch (
|
|
19767
|
-
case
|
|
18187
|
+
switch (normalizeKey(event.key)) {
|
|
18188
|
+
case Keys.ArrowUp:
|
|
19768
18189
|
this.focusManager.focusNodeAbove(this._model);
|
|
19769
18190
|
break;
|
|
19770
|
-
case
|
|
18191
|
+
case Keys.ArrowDown:
|
|
19771
18192
|
this.focusManager.focusNodeBelow(this._model);
|
|
19772
18193
|
break;
|
|
19773
|
-
case
|
|
18194
|
+
case Keys.ArrowRight:
|
|
19774
18195
|
this.expandOrFocusFirstChild();
|
|
19775
18196
|
break;
|
|
19776
|
-
case
|
|
18197
|
+
case Keys.ArrowLeft:
|
|
19777
18198
|
this.collapseOrFocusParent();
|
|
19778
18199
|
break;
|
|
19779
|
-
case
|
|
18200
|
+
case Keys.Home:
|
|
19780
18201
|
event.preventDefault();
|
|
19781
18202
|
this.focusManager.focusFirstVisibleNode();
|
|
19782
18203
|
break;
|
|
19783
|
-
case
|
|
18204
|
+
case Keys.End:
|
|
19784
18205
|
event.preventDefault();
|
|
19785
18206
|
this.focusManager.focusLastVisibleNode();
|
|
19786
18207
|
break;
|
|
19787
|
-
case
|
|
18208
|
+
case Keys.Enter:
|
|
19788
18209
|
this.toggleExpandOrTriggerDefault();
|
|
19789
18210
|
break;
|
|
19790
|
-
case
|
|
19791
|
-
case
|
|
18211
|
+
case Keys.Space:
|
|
18212
|
+
case Keys.Spacebar:
|
|
19792
18213
|
// to prevent scrolling on space key in this specific case
|
|
19793
18214
|
event.preventDefault();
|
|
19794
18215
|
this.toggleExpandOrTriggerDefault();
|
|
@@ -19849,8 +18270,8 @@ class ClrTreeNode {
|
|
|
19849
18270
|
}
|
|
19850
18271
|
}
|
|
19851
18272
|
}
|
|
19852
|
-
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:
|
|
19853
|
-
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\"
|
|
18273
|
+
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 });
|
|
18274
|
+
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: [
|
|
19854
18275
|
trigger('toggleChildrenAnim', [
|
|
19855
18276
|
transition('collapsed => expanded', [style({ height: 0 }), animate(200, style({ height: '*' }))]),
|
|
19856
18277
|
transition('expanded => collapsed', [style({ height: '*' }), animate(200, style({ height: 0 }))]),
|
|
@@ -19869,7 +18290,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
19869
18290
|
]),
|
|
19870
18291
|
], host: {
|
|
19871
18292
|
'[class.clr-tree-node]': 'true',
|
|
19872
|
-
}, 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\"
|
|
18293
|
+
}, 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" }]
|
|
19873
18294
|
}], ctorParameters: function () {
|
|
19874
18295
|
return [{ type: undefined, decorators: [{
|
|
19875
18296
|
type: Inject,
|
|
@@ -19878,11 +18299,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
19878
18299
|
type: Optional
|
|
19879
18300
|
}, {
|
|
19880
18301
|
type: SkipSelf
|
|
19881
|
-
}] }, { type:
|
|
19882
|
-
type: Optional
|
|
19883
|
-
}, {
|
|
19884
|
-
type: Self
|
|
19885
|
-
}] }, { type: TreeFeaturesService }, { type: IfExpandService }, { type: ClrCommonStringsService }, { type: TreeFocusManagerService }, { type: i0.Injector }];
|
|
18302
|
+
}] }, { type: TreeFeaturesService }, { type: IfExpandService }, { type: ClrCommonStringsService }, { type: TreeFocusManagerService }, { type: i0.ElementRef }, { type: i0.Injector }];
|
|
19886
18303
|
}, propDecorators: { selected: [{
|
|
19887
18304
|
type: Input,
|
|
19888
18305
|
args: ['clrSelected']
|
|
@@ -19895,6 +18312,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
19895
18312
|
}], expanded: [{
|
|
19896
18313
|
type: Input,
|
|
19897
18314
|
args: ['clrExpanded']
|
|
18315
|
+
}], clrForTypeAhead: [{
|
|
18316
|
+
type: Input,
|
|
18317
|
+
args: ['clrForTypeAhead']
|
|
19898
18318
|
}], expandedChange: [{
|
|
19899
18319
|
type: Output,
|
|
19900
18320
|
args: ['clrExpandedChange']
|
|
@@ -19905,6 +18325,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
19905
18325
|
type: ContentChildren,
|
|
19906
18326
|
args: [ClrTreeNodeLink, { descendants: false }]
|
|
19907
18327
|
}] } });
|
|
18328
|
+
function trimAndLowerCase(value) {
|
|
18329
|
+
return value.toLocaleLowerCase().trim();
|
|
18330
|
+
}
|
|
19908
18331
|
|
|
19909
18332
|
/*
|
|
19910
18333
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -20157,10 +18580,10 @@ class DropdownFocusHandler {
|
|
|
20157
18580
|
// whether root container or not, tab key should always toggle (i.e. close) the container
|
|
20158
18581
|
this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.tab', event => this.toggleService.toggleWithEvent(event)));
|
|
20159
18582
|
if (this.parent) {
|
|
20160
|
-
// if it's a nested container, pressing
|
|
18583
|
+
// if it's a nested container, pressing escape has the same effect as pressing left key, which closes the current
|
|
20161
18584
|
// popup and moves up to its parent. Here, we stop propagation so that the parent container
|
|
20162
|
-
// doesn't receive the
|
|
20163
|
-
this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.
|
|
18585
|
+
// doesn't receive the escape keydown
|
|
18586
|
+
this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.escape', event => {
|
|
20164
18587
|
this.focusService.move(ArrowKeyDirection.LEFT);
|
|
20165
18588
|
event.stopPropagation();
|
|
20166
18589
|
}));
|
|
@@ -20168,8 +18591,8 @@ class DropdownFocusHandler {
|
|
|
20168
18591
|
else {
|
|
20169
18592
|
// The root container is the only one we register to the focus service, others do not need focus
|
|
20170
18593
|
this.focusService.registerContainer(el);
|
|
20171
|
-
// The root container will simply close the container when
|
|
20172
|
-
this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.
|
|
18594
|
+
// The root container will simply close the container when escape key is pressed
|
|
18595
|
+
this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.escape', event => this.toggleService.toggleWithEvent(event)));
|
|
20173
18596
|
// When the user moves focus outside of the menu, we close the dropdown
|
|
20174
18597
|
this._unlistenFuncs.push(this.renderer.listen(el, 'blur', event => {
|
|
20175
18598
|
// we clear out any existing focus on the items
|
|
@@ -20393,13 +18816,10 @@ const BASIC_FOCUSABLE_ITEM_PROVIDER = [
|
|
|
20393
18816
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
20394
18817
|
*/
|
|
20395
18818
|
class ClrDropdownItem {
|
|
20396
|
-
constructor(dropdown,
|
|
18819
|
+
constructor(dropdown, _dropdownService, focusableItem) {
|
|
20397
18820
|
this.dropdown = dropdown;
|
|
20398
|
-
this.el = el;
|
|
20399
18821
|
this._dropdownService = _dropdownService;
|
|
20400
|
-
this.renderer = renderer;
|
|
20401
18822
|
this.focusableItem = focusableItem;
|
|
20402
|
-
this.setByDeprecatedDisabled = false;
|
|
20403
18823
|
}
|
|
20404
18824
|
set disabled(value) {
|
|
20405
18825
|
// Empty string attribute evaluates to false but should disable the item, so we need to add a special case for it.
|
|
@@ -20408,17 +18828,6 @@ class ClrDropdownItem {
|
|
|
20408
18828
|
get disabled() {
|
|
20409
18829
|
return this.focusableItem.disabled;
|
|
20410
18830
|
}
|
|
20411
|
-
/*
|
|
20412
|
-
* @deprecated since 3.0, remove in 4.0. the presence of this attribute makes it not-focusable in IE11. Use [clrDisabled] input instead.
|
|
20413
|
-
*/
|
|
20414
|
-
set disabledDeprecated(value) {
|
|
20415
|
-
// Empty string attribute evaluates to false but should disable the item, so we need to add a special case for it.
|
|
20416
|
-
this.focusableItem.disabled = !!value || value === '';
|
|
20417
|
-
this.setByDeprecatedDisabled = true;
|
|
20418
|
-
}
|
|
20419
|
-
get disabledDeprecated() {
|
|
20420
|
-
return this.focusableItem.disabled;
|
|
20421
|
-
}
|
|
20422
18831
|
/**
|
|
20423
18832
|
* Let you overwrite the focusable auto increment id.
|
|
20424
18833
|
*/
|
|
@@ -20428,22 +18837,28 @@ class ClrDropdownItem {
|
|
|
20428
18837
|
get dropdownItemId() {
|
|
20429
18838
|
return this.focusableItem.id;
|
|
20430
18839
|
}
|
|
20431
|
-
ngAfterViewInit() {
|
|
20432
|
-
this.unlisten = this.renderer.listen(this.el.nativeElement, 'click', () => this.onDropdownItemClick());
|
|
20433
|
-
}
|
|
20434
18840
|
onDropdownItemClick() {
|
|
20435
|
-
|
|
20436
|
-
|
|
20437
|
-
|
|
18841
|
+
// Ensure that the dropdown is closed after custom dropdown item click event handlers have run.
|
|
18842
|
+
setTimeout(() => {
|
|
18843
|
+
if (this.dropdown.isMenuClosable && !this.disabled) {
|
|
18844
|
+
this._dropdownService.closeMenus();
|
|
18845
|
+
}
|
|
18846
|
+
});
|
|
20438
18847
|
}
|
|
20439
|
-
|
|
20440
|
-
|
|
20441
|
-
|
|
18848
|
+
onSpaceKeydown($event) {
|
|
18849
|
+
this.stopImmediatePropagationIfDisabled($event);
|
|
18850
|
+
}
|
|
18851
|
+
onEnterKeydown($event) {
|
|
18852
|
+
this.stopImmediatePropagationIfDisabled($event);
|
|
18853
|
+
}
|
|
18854
|
+
stopImmediatePropagationIfDisabled($event) {
|
|
18855
|
+
if (this.disabled) {
|
|
18856
|
+
$event.stopImmediatePropagation();
|
|
20442
18857
|
}
|
|
20443
18858
|
}
|
|
20444
18859
|
}
|
|
20445
|
-
ClrDropdownItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDropdownItem, deps: [{ token: ClrDropdown }, { token:
|
|
20446
|
-
ClrDropdownItem.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: ClrDropdownItem, selector: "[clrDropdownItem]", inputs: { disabled: ["clrDisabled", "disabled"],
|
|
18860
|
+
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 });
|
|
18861
|
+
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 });
|
|
20447
18862
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDropdownItem, decorators: [{
|
|
20448
18863
|
type: Directive,
|
|
20449
18864
|
args: [{
|
|
@@ -20453,20 +18868,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
20453
18868
|
'[class.dropdown-item]': 'true',
|
|
20454
18869
|
'[attr.role]': '"menuitem"',
|
|
20455
18870
|
'[attr.aria-disabled]': 'disabled',
|
|
20456
|
-
'[attr.disabled]': "(disabled && setByDeprecatedDisabled)? '' : null",
|
|
20457
18871
|
'[attr.id]': 'dropdownItemId',
|
|
20458
18872
|
},
|
|
20459
18873
|
providers: [BASIC_FOCUSABLE_ITEM_PROVIDER],
|
|
20460
18874
|
}]
|
|
20461
|
-
}], ctorParameters: function () { return [{ type: ClrDropdown }, { type:
|
|
18875
|
+
}], ctorParameters: function () { return [{ type: ClrDropdown }, { type: RootDropdownService }, { type: FocusableItem }]; }, propDecorators: { disabled: [{
|
|
20462
18876
|
type: Input,
|
|
20463
18877
|
args: ['clrDisabled']
|
|
20464
|
-
}], disabledDeprecated: [{
|
|
20465
|
-
type: Input,
|
|
20466
|
-
args: ['disabled']
|
|
20467
18878
|
}], dropdownItemId: [{
|
|
20468
18879
|
type: Input,
|
|
20469
18880
|
args: ['id']
|
|
18881
|
+
}], onDropdownItemClick: [{
|
|
18882
|
+
type: HostListener,
|
|
18883
|
+
args: ['click']
|
|
18884
|
+
}], onSpaceKeydown: [{
|
|
18885
|
+
type: HostListener,
|
|
18886
|
+
args: ['keydown.space', ['$event']]
|
|
18887
|
+
}], onEnterKeydown: [{
|
|
18888
|
+
type: HostListener,
|
|
18889
|
+
args: ['keydown.enter', ['$event']]
|
|
20470
18890
|
}] } });
|
|
20471
18891
|
|
|
20472
18892
|
/*
|
|
@@ -20739,7 +19159,6 @@ class Popover {
|
|
|
20739
19159
|
* This software is released under MIT license.
|
|
20740
19160
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
20741
19161
|
*/
|
|
20742
|
-
// Literally any annotation would work here, but writing our own @HoneyBadger annotation feels overkill.
|
|
20743
19162
|
class AbstractPopover {
|
|
20744
19163
|
constructor(injector, parentHost) {
|
|
20745
19164
|
this.parentHost = parentHost;
|
|
@@ -20818,7 +19237,7 @@ class AbstractPopover {
|
|
|
20818
19237
|
this.ngZone.runOutsideAngular(() => {
|
|
20819
19238
|
this.documentESCListener = this.renderer.listen('document', 'keydown', event => {
|
|
20820
19239
|
if (event && event.key) {
|
|
20821
|
-
if (event.key ===
|
|
19240
|
+
if (normalizeKey(event.key) === Keys.Escape) {
|
|
20822
19241
|
this.ngZone.run(() => {
|
|
20823
19242
|
this.toggleService.open = false;
|
|
20824
19243
|
this.ref.markForCheck();
|
|
@@ -21971,143 +20390,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
21971
20390
|
}]
|
|
21972
20391
|
}], ctorParameters: function () { return [{ type: ResponsiveNavigationService }, { type: ClrCommonStringsService }]; } });
|
|
21973
20392
|
|
|
21974
|
-
/*
|
|
21975
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
21976
|
-
* This software is released under MIT license.
|
|
21977
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
21978
|
-
*/
|
|
21979
|
-
function refocusIfOutsideFocusTrapElement(focusedElement, focusTrapElement, elementToRefocus) {
|
|
21980
|
-
const focusTrapIsCurrent = FocusTrapTrackerService.getCurrent() === focusTrapElement;
|
|
21981
|
-
const elementToFocusIsOutsideFocusTrap = elementIsOutsideFocusTrapElement(focusedElement, focusTrapElement);
|
|
21982
|
-
if (focusTrapIsCurrent && elementToFocusIsOutsideFocusTrap) {
|
|
21983
|
-
elementToRefocus = elementToRefocus || focusTrapElement;
|
|
21984
|
-
elementToRefocus.focus();
|
|
21985
|
-
}
|
|
21986
|
-
else {
|
|
21987
|
-
focusedElement.focus();
|
|
21988
|
-
}
|
|
21989
|
-
}
|
|
21990
|
-
function elementIsOutsideFocusTrapElement(focusedElement, focusTrapElement) {
|
|
21991
|
-
if (focusedElement === focusTrapElement.topReboundElement ||
|
|
21992
|
-
focusedElement === focusTrapElement.bottomReboundElement) {
|
|
21993
|
-
return true;
|
|
21994
|
-
}
|
|
21995
|
-
const elementIsInFocusTrapLightDom = focusTrapElement.contains(focusedElement);
|
|
21996
|
-
if (elementIsInFocusTrapLightDom) {
|
|
21997
|
-
return false;
|
|
21998
|
-
}
|
|
21999
|
-
if (focusTrapElement !== null && focusTrapElement.contains(focusedElement)) {
|
|
22000
|
-
return false;
|
|
22001
|
-
}
|
|
22002
|
-
return true;
|
|
22003
|
-
}
|
|
22004
|
-
function createFocusTrapReboundElement(document) {
|
|
22005
|
-
const offScreenSpan = document.createElement('span');
|
|
22006
|
-
offScreenSpan.setAttribute('tabindex', '0');
|
|
22007
|
-
offScreenSpan.classList.add('offscreen-focus-rebounder');
|
|
22008
|
-
return offScreenSpan;
|
|
22009
|
-
}
|
|
22010
|
-
function addReboundElementsToFocusTrapElement(document, focusTrapElement) {
|
|
22011
|
-
if (focusTrapElement && !focusTrapElement.topReboundElement && !focusTrapElement.bottomReboundElement) {
|
|
22012
|
-
focusTrapElement.topReboundElement = createFocusTrapReboundElement(document);
|
|
22013
|
-
focusTrapElement.bottomReboundElement = createFocusTrapReboundElement(document);
|
|
22014
|
-
const parent = focusTrapElement.parentElement;
|
|
22015
|
-
const sibling = focusTrapElement.nextSibling;
|
|
22016
|
-
if (parent) {
|
|
22017
|
-
parent.insertBefore(focusTrapElement.topReboundElement, focusTrapElement);
|
|
22018
|
-
if (sibling) {
|
|
22019
|
-
parent.insertBefore(focusTrapElement.bottomReboundElement, sibling);
|
|
22020
|
-
}
|
|
22021
|
-
else {
|
|
22022
|
-
parent.appendChild(focusTrapElement.bottomReboundElement);
|
|
22023
|
-
}
|
|
22024
|
-
}
|
|
22025
|
-
}
|
|
22026
|
-
}
|
|
22027
|
-
function removeReboundElementsFromFocusTrapElement(focusTrapElement) {
|
|
22028
|
-
if (focusTrapElement) {
|
|
22029
|
-
const parent = focusTrapElement.parentElement;
|
|
22030
|
-
if (parent) {
|
|
22031
|
-
const topRebound = focusTrapElement.topReboundElement;
|
|
22032
|
-
const bottomRebound = focusTrapElement.bottomReboundElement;
|
|
22033
|
-
if (topRebound) {
|
|
22034
|
-
parent.removeChild(topRebound);
|
|
22035
|
-
}
|
|
22036
|
-
if (bottomRebound) {
|
|
22037
|
-
parent.removeChild(bottomRebound);
|
|
22038
|
-
}
|
|
22039
|
-
}
|
|
22040
|
-
// These are here to to make sure that we completely delete all traces of the removed DOM objects.
|
|
22041
|
-
delete focusTrapElement.topReboundElement;
|
|
22042
|
-
delete focusTrapElement.bottomReboundElement;
|
|
22043
|
-
}
|
|
22044
|
-
}
|
|
22045
|
-
// this helper exists to enable the focus trap class to handle vanilla html elements
|
|
22046
|
-
// it's primary concern is to keep TS happy.
|
|
22047
|
-
function castHtmlElementToFocusTrapElement(el) {
|
|
22048
|
-
return el;
|
|
22049
|
-
}
|
|
22050
|
-
class FocusTrap {
|
|
22051
|
-
constructor(renderer, injector, platformId, hostElement) {
|
|
22052
|
-
this.renderer = renderer;
|
|
22053
|
-
this.active = false;
|
|
22054
|
-
if (isPlatformBrowser(platformId)) {
|
|
22055
|
-
this._document = injector.get(DOCUMENT);
|
|
22056
|
-
}
|
|
22057
|
-
hostElement = castHtmlElementToFocusTrapElement(hostElement);
|
|
22058
|
-
if (!hostElement.focusTrapId) {
|
|
22059
|
-
hostElement.focusTrapId = createId();
|
|
22060
|
-
}
|
|
22061
|
-
this.focusTrapElement = hostElement;
|
|
22062
|
-
}
|
|
22063
|
-
enableFocusTrap() {
|
|
22064
|
-
const fte = this.focusTrapElement;
|
|
22065
|
-
const firstFocusElement = fte.querySelector('[cds-first-focus]');
|
|
22066
|
-
const activeEl = this._document.activeElement;
|
|
22067
|
-
if (FocusTrapTrackerService.getCurrent() === fte) {
|
|
22068
|
-
throw new Error('Focus trap is already enabled for this instance.');
|
|
22069
|
-
}
|
|
22070
|
-
this.firstFocusElement = firstFocusElement || this.focusTrapElement;
|
|
22071
|
-
addReboundElementsToFocusTrapElement(this._document, fte);
|
|
22072
|
-
if (!isFocusable(fte)) {
|
|
22073
|
-
fte.setAttribute('tabindex', '-1');
|
|
22074
|
-
}
|
|
22075
|
-
if (activeEl && isHTMLElement(activeEl)) {
|
|
22076
|
-
this.previousFocus = activeEl;
|
|
22077
|
-
}
|
|
22078
|
-
FocusTrapTrackerService.setCurrent(fte);
|
|
22079
|
-
// setTimeout here is required for Safari which may try to set focus on
|
|
22080
|
-
// element before it is visible...
|
|
22081
|
-
const focusTimer = setTimeout(() => {
|
|
22082
|
-
this.firstFocusElement.focus();
|
|
22083
|
-
clearTimeout(focusTimer);
|
|
22084
|
-
}, 10);
|
|
22085
|
-
this.onFocusInEvent = this.onFocusIn.bind(this);
|
|
22086
|
-
this.unlisten = this.renderer.listen(this._document, 'focusin', this.onFocusInEvent);
|
|
22087
|
-
this.active = true;
|
|
22088
|
-
}
|
|
22089
|
-
removeFocusTrap() {
|
|
22090
|
-
if (this.unlisten) {
|
|
22091
|
-
this.unlisten();
|
|
22092
|
-
}
|
|
22093
|
-
removeReboundElementsFromFocusTrapElement(this.focusTrapElement);
|
|
22094
|
-
this.renderer.removeAttribute(this.focusTrapElement, 'tabindex');
|
|
22095
|
-
FocusTrapTrackerService.activatePreviousCurrent();
|
|
22096
|
-
this.active = false;
|
|
22097
|
-
if (this.previousFocus) {
|
|
22098
|
-
this.previousFocus.focus();
|
|
22099
|
-
}
|
|
22100
|
-
}
|
|
22101
|
-
onFocusIn(event) {
|
|
22102
|
-
refocusIfOutsideFocusTrapElement(event.composedPath()[0], this.focusTrapElement, this.firstFocusElement);
|
|
22103
|
-
}
|
|
22104
|
-
}
|
|
22105
|
-
FocusTrap.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusTrap, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable });
|
|
22106
|
-
FocusTrap.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusTrap });
|
|
22107
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusTrap, decorators: [{
|
|
22108
|
-
type: Injectable
|
|
22109
|
-
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.Injector }, { type: undefined }, { type: undefined }]; } });
|
|
22110
|
-
|
|
22111
20393
|
/*
|
|
22112
20394
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
22113
20395
|
* This software is released under MIT license.
|
|
@@ -22126,11 +20408,22 @@ const createCdsCloseButton = (document, ariaLabel) => {
|
|
|
22126
20408
|
cdsCloseButton.className = 'clr-nav-close';
|
|
22127
20409
|
return cdsCloseButton;
|
|
22128
20410
|
};
|
|
22129
|
-
class
|
|
22130
|
-
|
|
22131
|
-
|
|
20411
|
+
class StandaloneCdkTrapFocus extends CdkTrapFocus {
|
|
20412
|
+
}
|
|
20413
|
+
StandaloneCdkTrapFocus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: StandaloneCdkTrapFocus, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
20414
|
+
StandaloneCdkTrapFocus.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: StandaloneCdkTrapFocus, isStandalone: true, usesInheritance: true, ngImport: i0 });
|
|
20415
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: StandaloneCdkTrapFocus, decorators: [{
|
|
20416
|
+
type: Directive,
|
|
20417
|
+
args: [{
|
|
20418
|
+
standalone: true,
|
|
20419
|
+
}]
|
|
20420
|
+
}] });
|
|
20421
|
+
class ClrNavLevel {
|
|
20422
|
+
constructor(platformId, cdkTrapFocus, responsiveNavService, elementRef, renderer, injector) {
|
|
20423
|
+
this.cdkTrapFocus = cdkTrapFocus;
|
|
22132
20424
|
this.responsiveNavService = responsiveNavService;
|
|
22133
20425
|
this.elementRef = elementRef;
|
|
20426
|
+
this.renderer = renderer;
|
|
22134
20427
|
this._isOpen = false;
|
|
22135
20428
|
if (isPlatformBrowser(platformId)) {
|
|
22136
20429
|
this._document = injector.get(DOCUMENT);
|
|
@@ -22150,6 +20443,7 @@ class ClrNavLevel extends FocusTrap {
|
|
|
22150
20443
|
.subscribe(() => this.close()));
|
|
22151
20444
|
}
|
|
22152
20445
|
ngOnInit() {
|
|
20446
|
+
this.cdkTrapFocus.enabled = false;
|
|
22153
20447
|
if (!this.closeButtonAriaLabel) {
|
|
22154
20448
|
this.closeButtonAriaLabel =
|
|
22155
20449
|
this._level === ResponsiveNavCodes.NAV_LEVEL_1
|
|
@@ -22207,14 +20501,14 @@ class ClrNavLevel extends FocusTrap {
|
|
|
22207
20501
|
open() {
|
|
22208
20502
|
this._isOpen = true;
|
|
22209
20503
|
this.showNavigation();
|
|
22210
|
-
this.
|
|
20504
|
+
this.cdkTrapFocus.enabled = true;
|
|
22211
20505
|
this.showCloseButton();
|
|
22212
20506
|
this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_OPEN, this.level);
|
|
22213
20507
|
}
|
|
22214
20508
|
close() {
|
|
22215
20509
|
this._isOpen = false;
|
|
22216
20510
|
this.hideNavigation();
|
|
22217
|
-
this.
|
|
20511
|
+
this.cdkTrapFocus.enabled = false;
|
|
22218
20512
|
this.hideCloseButton();
|
|
22219
20513
|
this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_CLOSE, this.level);
|
|
22220
20514
|
}
|
|
@@ -22259,18 +20553,19 @@ class ClrNavLevel extends FocusTrap {
|
|
|
22259
20553
|
this._subscription.unsubscribe();
|
|
22260
20554
|
}
|
|
22261
20555
|
}
|
|
22262
|
-
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 });
|
|
22263
|
-
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)" } },
|
|
20556
|
+
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 });
|
|
20557
|
+
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 });
|
|
22264
20558
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrNavLevel, decorators: [{
|
|
22265
20559
|
type: Directive,
|
|
22266
20560
|
args: [{
|
|
22267
20561
|
selector: '[clr-nav-level]',
|
|
20562
|
+
hostDirectives: [StandaloneCdkTrapFocus],
|
|
22268
20563
|
}]
|
|
22269
20564
|
}], ctorParameters: function () {
|
|
22270
20565
|
return [{ type: undefined, decorators: [{
|
|
22271
20566
|
type: Inject,
|
|
22272
20567
|
args: [PLATFORM_ID]
|
|
22273
|
-
}] }, { type: ResponsiveNavigationService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }];
|
|
20568
|
+
}] }, { type: StandaloneCdkTrapFocus }, { type: ResponsiveNavigationService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }];
|
|
22274
20569
|
}, propDecorators: { _level: [{
|
|
22275
20570
|
type: Input,
|
|
22276
20571
|
args: ['clr-nav-level']
|
|
@@ -22922,7 +21217,7 @@ ClrTabs.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0
|
|
|
22922
21217
|
<!--tab links in overflow menu-->
|
|
22923
21218
|
<clr-tab-overflow-content
|
|
22924
21219
|
*ngIf="toggleService.open"
|
|
22925
|
-
(document:keydown.
|
|
21220
|
+
(document:keydown.escape)="closeOnEscapeKey()"
|
|
22926
21221
|
(document:click)="closeOnOutsideClick($event, tabOverflowTrigger)"
|
|
22927
21222
|
(focusout)="closeOnFocusOut($event)"
|
|
22928
21223
|
>
|
|
@@ -22986,7 +21281,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
22986
21281
|
<!--tab links in overflow menu-->
|
|
22987
21282
|
<clr-tab-overflow-content
|
|
22988
21283
|
*ngIf="toggleService.open"
|
|
22989
|
-
(document:keydown.
|
|
21284
|
+
(document:keydown.escape)="closeOnEscapeKey()"
|
|
22990
21285
|
(document:click)="closeOnOutsideClick($event, tabOverflowTrigger)"
|
|
22991
21286
|
(focusout)="closeOnFocusOut($event)"
|
|
22992
21287
|
>
|
|
@@ -23275,7 +21570,6 @@ class ClrVerticalNavGroup {
|
|
|
23275
21570
|
this._navService = _navService;
|
|
23276
21571
|
this.commonStrings = commonStrings;
|
|
23277
21572
|
this.wasExpanded = false;
|
|
23278
|
-
this.groupLabel = this.commonStrings.keys.verticalNavGroupToggle;
|
|
23279
21573
|
this.expandedChange = new EventEmitter(true);
|
|
23280
21574
|
this._subscriptions = [];
|
|
23281
21575
|
this._expandAnimationState = COLLAPSED_STATE;
|
|
@@ -23385,7 +21679,7 @@ class ClrVerticalNavGroup {
|
|
|
23385
21679
|
}
|
|
23386
21680
|
}
|
|
23387
21681
|
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 });
|
|
23388
|
-
ClrVerticalNavGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrVerticalNavGroup, selector: "clr-vertical-nav-group", inputs: {
|
|
21682
|
+
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: [
|
|
23389
21683
|
trigger('clrExpand', [
|
|
23390
21684
|
state(EXPANDED_STATE, style({ height: '*' })),
|
|
23391
21685
|
state(COLLAPSED_STATE, style({ height: 0, visibility: 'hidden' })),
|
|
@@ -23400,13 +21694,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
23400
21694
|
state(COLLAPSED_STATE, style({ height: 0, visibility: 'hidden' })),
|
|
23401
21695
|
transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, animate('0.2s ease-in-out')),
|
|
23402
21696
|
]),
|
|
23403
|
-
], 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
|
|
21697
|
+
], 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" }]
|
|
23404
21698
|
}], ctorParameters: function () { return [{ type: IfExpandService }, { type: VerticalNavGroupRegistrationService }, { type: VerticalNavGroupService }, { type: VerticalNavService }, { type: ClrCommonStringsService }]; }, propDecorators: { expanded: [{
|
|
23405
21699
|
type: HostBinding,
|
|
23406
21700
|
args: ['class.is-expanded']
|
|
23407
|
-
}], groupLabel: [{
|
|
23408
|
-
type: Input,
|
|
23409
|
-
args: ['clrVerticalNavGroupLabel']
|
|
23410
21701
|
}], userExpandedInput: [{
|
|
23411
21702
|
type: Input,
|
|
23412
21703
|
args: ['clrVerticalNavGroupExpanded']
|
|
@@ -23605,15 +21896,13 @@ class ClrModal {
|
|
|
23605
21896
|
this.closeButtonAriaLabel = this.commonStrings.keys.close;
|
|
23606
21897
|
this.staticBackdrop = true;
|
|
23607
21898
|
this.skipAnimation = 'false';
|
|
23608
|
-
// presently this is only used by wizards
|
|
23609
|
-
this.bypassScrollService = false;
|
|
23610
21899
|
this.stopClose = false;
|
|
23611
21900
|
this.altClose = new EventEmitter(false);
|
|
23612
21901
|
this.labelledBy = this.modalId;
|
|
23613
21902
|
}
|
|
23614
21903
|
// Detect when _open is set to true and set no-scrolling to true
|
|
23615
21904
|
ngOnChanges(changes) {
|
|
23616
|
-
if (
|
|
21905
|
+
if (changes && Object.prototype.hasOwnProperty.call(changes, '_open')) {
|
|
23617
21906
|
if (changes._open.currentValue) {
|
|
23618
21907
|
this._scrollingService.stopScrolling();
|
|
23619
21908
|
}
|
|
@@ -23641,8 +21930,6 @@ class ClrModal {
|
|
|
23641
21930
|
return;
|
|
23642
21931
|
}
|
|
23643
21932
|
this._open = false;
|
|
23644
|
-
// SPECME
|
|
23645
|
-
this.focusTrap.setPreviousFocus(); // Handles moving focus back to the element that had it before.
|
|
23646
21933
|
}
|
|
23647
21934
|
fadeDone(e) {
|
|
23648
21935
|
if (e.toState === 'void') {
|
|
@@ -23652,7 +21939,7 @@ class ClrModal {
|
|
|
23652
21939
|
}
|
|
23653
21940
|
}
|
|
23654
21941
|
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 });
|
|
23655
|
-
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"],
|
|
21942
|
+
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: [
|
|
23656
21943
|
trigger('fadeDown', [
|
|
23657
21944
|
transition('* => false', [style({ opacity: 0, transform: 'translate(0, -25%)' }), animate('0.2s ease-in-out')]),
|
|
23658
21945
|
transition('false => *', [animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(0, -25%)' }))]),
|
|
@@ -23673,11 +21960,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
23673
21960
|
transition('void => *', [style({ opacity: 0 }), animate('0.2s ease-in-out', style({ opacity: 0.85 }))]),
|
|
23674
21961
|
transition('* => void', [animate('0.2s ease-in-out', style({ opacity: 0 }))]),
|
|
23675
21962
|
]),
|
|
23676
|
-
], 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
|
|
23677
|
-
}], ctorParameters: function () { return [{ type: ScrollingService }, { type: ClrCommonStringsService }]; }, propDecorators: {
|
|
23678
|
-
type: ViewChild,
|
|
23679
|
-
args: [FocusTrapDirective]
|
|
23680
|
-
}], _open: [{
|
|
21963
|
+
], 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"] }]
|
|
21964
|
+
}], ctorParameters: function () { return [{ type: ScrollingService }, { type: ClrCommonStringsService }]; }, propDecorators: { _open: [{
|
|
23681
21965
|
type: HostBinding,
|
|
23682
21966
|
args: ['class.open']
|
|
23683
21967
|
}, {
|
|
@@ -23701,9 +21985,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
23701
21985
|
}], skipAnimation: [{
|
|
23702
21986
|
type: Input,
|
|
23703
21987
|
args: ['clrModalSkipAnimation']
|
|
23704
|
-
}], bypassScrollService: [{
|
|
23705
|
-
type: Input,
|
|
23706
|
-
args: ['clrModalOverrideScrollService']
|
|
23707
21988
|
}], stopClose: [{
|
|
23708
21989
|
type: Input,
|
|
23709
21990
|
args: ['clrModalPreventClose']
|
|
@@ -23792,12 +22073,12 @@ class ClrModalModule {
|
|
|
23792
22073
|
}
|
|
23793
22074
|
}
|
|
23794
22075
|
ClrModalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
23795
|
-
ClrModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: ClrModalModule, declarations: [ClrModal, ClrModalBody], imports: [CommonModule,
|
|
23796
|
-
ClrModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrModalModule, imports: [CommonModule,
|
|
22076
|
+
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] });
|
|
22077
|
+
ClrModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrModalModule, imports: [CommonModule, CdkTrapFocusModule, ClrIconModule, ClrFocusOnViewInitModule, ClrIconModule, ClrFocusOnViewInitModule] });
|
|
23797
22078
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrModalModule, decorators: [{
|
|
23798
22079
|
type: NgModule,
|
|
23799
22080
|
args: [{
|
|
23800
|
-
imports: [CommonModule,
|
|
22081
|
+
imports: [CommonModule, CdkTrapFocusModule, ClrIconModule, ClrFocusOnViewInitModule],
|
|
23801
22082
|
declarations: [CLR_MODAL_DIRECTIVES],
|
|
23802
22083
|
exports: [CLR_MODAL_DIRECTIVES, ClrIconModule, ClrFocusOnViewInitModule],
|
|
23803
22084
|
}]
|
|
@@ -24034,6 +22315,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
24034
22315
|
type: Injectable
|
|
24035
22316
|
}] });
|
|
24036
22317
|
|
|
22318
|
+
/*
|
|
22319
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
22320
|
+
* This software is released under MIT license.
|
|
22321
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
22322
|
+
*/
|
|
22323
|
+
class TooltipMouseService {
|
|
22324
|
+
constructor(toggleService) {
|
|
22325
|
+
this.toggleService = toggleService;
|
|
22326
|
+
}
|
|
22327
|
+
onMouseEnterTrigger() {
|
|
22328
|
+
this.mouseOverTrigger = true;
|
|
22329
|
+
this.toggleService.open = true;
|
|
22330
|
+
}
|
|
22331
|
+
onMouseLeaveTrigger() {
|
|
22332
|
+
this.mouseOverTrigger = false;
|
|
22333
|
+
this.hideIfMouseOut();
|
|
22334
|
+
}
|
|
22335
|
+
onMouseEnterContent() {
|
|
22336
|
+
this.mouseOverContent = true;
|
|
22337
|
+
}
|
|
22338
|
+
onMouseLeaveContent() {
|
|
22339
|
+
this.mouseOverContent = false;
|
|
22340
|
+
this.hideIfMouseOut();
|
|
22341
|
+
}
|
|
22342
|
+
hideIfMouseOut() {
|
|
22343
|
+
// A zero timeout is used so that the code has a chance to update
|
|
22344
|
+
// the `mouseOverContent` property after the user moves the mouse from the trigger to the content.
|
|
22345
|
+
setTimeout(() => {
|
|
22346
|
+
if (!this.mouseOverTrigger && !this.mouseOverContent) {
|
|
22347
|
+
this.toggleService.open = false;
|
|
22348
|
+
}
|
|
22349
|
+
}, 0);
|
|
22350
|
+
}
|
|
22351
|
+
}
|
|
22352
|
+
TooltipMouseService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: TooltipMouseService, deps: [{ token: ClrPopoverToggleService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
22353
|
+
TooltipMouseService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: TooltipMouseService });
|
|
22354
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: TooltipMouseService, decorators: [{
|
|
22355
|
+
type: Injectable
|
|
22356
|
+
}], ctorParameters: function () { return [{ type: ClrPopoverToggleService }]; } });
|
|
22357
|
+
|
|
24037
22358
|
/*
|
|
24038
22359
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
24039
22360
|
* This software is released under MIT license.
|
|
@@ -24042,7 +22363,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
24042
22363
|
class ClrTooltip {
|
|
24043
22364
|
}
|
|
24044
22365
|
ClrTooltip.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrTooltip, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
24045
|
-
ClrTooltip.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrTooltip, selector: "clr-tooltip", host: { properties: { "class.tooltip": "true" } }, providers: [
|
|
22366
|
+
ClrTooltip.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrTooltip, selector: "clr-tooltip", host: { properties: { "class.tooltip": "true" } }, providers: [
|
|
22367
|
+
ClrPopoverToggleService,
|
|
22368
|
+
{ provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef },
|
|
22369
|
+
TooltipIdService,
|
|
22370
|
+
TooltipMouseService,
|
|
22371
|
+
], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
|
|
24046
22372
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrTooltip, decorators: [{
|
|
24047
22373
|
type: Component,
|
|
24048
22374
|
args: [{
|
|
@@ -24051,7 +22377,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
24051
22377
|
host: {
|
|
24052
22378
|
'[class.tooltip]': 'true',
|
|
24053
22379
|
},
|
|
24054
|
-
providers: [
|
|
22380
|
+
providers: [
|
|
22381
|
+
ClrPopoverToggleService,
|
|
22382
|
+
{ provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef },
|
|
22383
|
+
TooltipIdService,
|
|
22384
|
+
TooltipMouseService,
|
|
22385
|
+
],
|
|
24055
22386
|
}]
|
|
24056
22387
|
}] });
|
|
24057
22388
|
|
|
@@ -24074,9 +22405,10 @@ const SIZES = ['xs', 'sm', 'md', 'lg'];
|
|
|
24074
22405
|
const defaultPosition = 'right';
|
|
24075
22406
|
const defaultSize = 'sm';
|
|
24076
22407
|
class ClrTooltipContent extends AbstractPopover {
|
|
24077
|
-
constructor(injector, parentHost, tooltipIdService) {
|
|
22408
|
+
constructor(injector, parentHost, tooltipIdService, tooltipMouseService) {
|
|
24078
22409
|
super(injector, parentHost);
|
|
24079
22410
|
this.tooltipIdService = tooltipIdService;
|
|
22411
|
+
this.tooltipMouseService = tooltipMouseService;
|
|
24080
22412
|
if (!parentHost) {
|
|
24081
22413
|
throw new Error('clr-tooltip-content should only be used inside of a clr-tooltip');
|
|
24082
22414
|
}
|
|
@@ -24142,13 +22474,19 @@ class ClrTooltipContent extends AbstractPopover {
|
|
|
24142
22474
|
this.size = this.size || defaultSize;
|
|
24143
22475
|
this.position = this.position || defaultPosition;
|
|
24144
22476
|
}
|
|
22477
|
+
onMouseEnter() {
|
|
22478
|
+
this.tooltipMouseService.onMouseEnterContent();
|
|
22479
|
+
}
|
|
22480
|
+
onMouseLeave() {
|
|
22481
|
+
this.tooltipMouseService.onMouseLeaveContent();
|
|
22482
|
+
}
|
|
24145
22483
|
updateCssClass({ oldClass, newClass }) {
|
|
24146
22484
|
this.renderer.removeClass(this.el.nativeElement, oldClass);
|
|
24147
22485
|
this.renderer.addClass(this.el.nativeElement, newClass);
|
|
24148
22486
|
}
|
|
24149
22487
|
}
|
|
24150
|
-
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 });
|
|
24151
|
-
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 });
|
|
22488
|
+
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 });
|
|
22489
|
+
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 });
|
|
24152
22490
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrTooltipContent, decorators: [{
|
|
24153
22491
|
type: Component,
|
|
24154
22492
|
args: [{
|
|
@@ -24167,7 +22505,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
24167
22505
|
}, {
|
|
24168
22506
|
type: Inject,
|
|
24169
22507
|
args: [POPOVER_HOST_ANCHOR]
|
|
24170
|
-
}] }, { type: TooltipIdService }];
|
|
22508
|
+
}] }, { type: TooltipIdService }, { type: TooltipMouseService }];
|
|
24171
22509
|
}, propDecorators: { id: [{
|
|
24172
22510
|
type: Input
|
|
24173
22511
|
}], position: [{
|
|
@@ -24176,6 +22514,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
24176
22514
|
}], size: [{
|
|
24177
22515
|
type: Input,
|
|
24178
22516
|
args: ['clrSize']
|
|
22517
|
+
}], onMouseEnter: [{
|
|
22518
|
+
type: HostListener,
|
|
22519
|
+
args: ['mouseenter']
|
|
22520
|
+
}], onMouseLeave: [{
|
|
22521
|
+
type: HostListener,
|
|
22522
|
+
args: ['mouseleave']
|
|
24179
22523
|
}] } });
|
|
24180
22524
|
|
|
24181
22525
|
/*
|
|
@@ -24184,25 +22528,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
24184
22528
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
24185
22529
|
*/
|
|
24186
22530
|
class ClrTooltipTrigger {
|
|
24187
|
-
constructor(toggleService, tooltipIdService) {
|
|
22531
|
+
constructor(toggleService, tooltipIdService, tooltipMouseService) {
|
|
24188
22532
|
this.toggleService = toggleService;
|
|
24189
22533
|
this.tooltipIdService = tooltipIdService;
|
|
22534
|
+
this.tooltipMouseService = tooltipMouseService;
|
|
24190
22535
|
this.subs = [];
|
|
24191
22536
|
// The aria-described by comes from the id of content. It
|
|
24192
22537
|
this.subs.push(this.tooltipIdService.id.subscribe(tooltipId => (this.ariaDescribedBy = tooltipId)));
|
|
24193
22538
|
}
|
|
22539
|
+
ngOnDestroy() {
|
|
22540
|
+
this.subs.forEach(sub => sub.unsubscribe());
|
|
22541
|
+
}
|
|
24194
22542
|
showTooltip() {
|
|
24195
22543
|
this.toggleService.open = true;
|
|
24196
22544
|
}
|
|
24197
22545
|
hideTooltip() {
|
|
24198
22546
|
this.toggleService.open = false;
|
|
24199
22547
|
}
|
|
24200
|
-
|
|
24201
|
-
this.
|
|
22548
|
+
onMouseEnter() {
|
|
22549
|
+
this.tooltipMouseService.onMouseEnterTrigger();
|
|
22550
|
+
}
|
|
22551
|
+
onMouseLeave() {
|
|
22552
|
+
this.tooltipMouseService.onMouseLeaveTrigger();
|
|
24202
22553
|
}
|
|
24203
22554
|
}
|
|
24204
|
-
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 });
|
|
24205
|
-
ClrTooltipTrigger.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: ClrTooltipTrigger, selector: "[clrTooltipTrigger]", host: { attributes: { "tabindex": "0" }, listeners: { "
|
|
22555
|
+
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 });
|
|
22556
|
+
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 });
|
|
24206
22557
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrTooltipTrigger, decorators: [{
|
|
24207
22558
|
type: Directive,
|
|
24208
22559
|
args: [{
|
|
@@ -24214,18 +22565,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
24214
22565
|
'[attr.role]': '"button"',
|
|
24215
22566
|
},
|
|
24216
22567
|
}]
|
|
24217
|
-
}], ctorParameters: function () { return [{ type: ClrPopoverToggleService }, { type: TooltipIdService }]; }, propDecorators: { showTooltip: [{
|
|
24218
|
-
type: HostListener,
|
|
24219
|
-
args: ['mouseenter']
|
|
24220
|
-
}, {
|
|
22568
|
+
}], ctorParameters: function () { return [{ type: ClrPopoverToggleService }, { type: TooltipIdService }, { type: TooltipMouseService }]; }, propDecorators: { showTooltip: [{
|
|
24221
22569
|
type: HostListener,
|
|
24222
22570
|
args: ['focus']
|
|
24223
22571
|
}], hideTooltip: [{
|
|
24224
|
-
type: HostListener,
|
|
24225
|
-
args: ['mouseleave']
|
|
24226
|
-
}, {
|
|
24227
22572
|
type: HostListener,
|
|
24228
22573
|
args: ['blur']
|
|
22574
|
+
}], onMouseEnter: [{
|
|
22575
|
+
type: HostListener,
|
|
22576
|
+
args: ['mouseenter']
|
|
22577
|
+
}], onMouseLeave: [{
|
|
22578
|
+
type: HostListener,
|
|
22579
|
+
args: ['mouseleave']
|
|
24229
22580
|
}] } });
|
|
24230
22581
|
|
|
24231
22582
|
/*
|
|
@@ -26767,13 +25118,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
26767
25118
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
26768
25119
|
*/
|
|
26769
25120
|
class ClrWizard {
|
|
26770
|
-
constructor(platformId, navService, pageCollection, buttonService, headerActionService,
|
|
25121
|
+
constructor(platformId, navService, pageCollection, buttonService, headerActionService, differs) {
|
|
26771
25122
|
this.platformId = platformId;
|
|
26772
25123
|
this.navService = navService;
|
|
26773
25124
|
this.pageCollection = pageCollection;
|
|
26774
25125
|
this.buttonService = buttonService;
|
|
26775
25126
|
this.headerActionService = headerActionService;
|
|
26776
|
-
this.elementRef = elementRef;
|
|
26777
25127
|
/**
|
|
26778
25128
|
* Set the modal size of the wizard. Set using `[clrWizardSize]` input.
|
|
26779
25129
|
*/
|
|
@@ -26789,13 +25139,6 @@ class ClrWizard {
|
|
|
26789
25139
|
this._stopCancel = false;
|
|
26790
25140
|
this._stopNavigation = false;
|
|
26791
25141
|
this._disableStepnav = false;
|
|
26792
|
-
/**
|
|
26793
|
-
* Used to communicate to the underlying modal that animations are not
|
|
26794
|
-
* wanted. Primary use is for the display of static/inline wizards.
|
|
26795
|
-
* Set using `[clrWizardPreventModalAnimation]` input.
|
|
26796
|
-
*/
|
|
26797
|
-
/** @deprecated since 3.0, input should be removed in 4.0 because is only related to inline wizards */
|
|
26798
|
-
this._stopModalAnimations = false;
|
|
26799
25142
|
/**
|
|
26800
25143
|
* Emits when the wizard is opened or closed.
|
|
26801
25144
|
* Listen via `(clrWizardOpenChange)` event.
|
|
@@ -26916,9 +25259,6 @@ class ClrWizard {
|
|
|
26916
25259
|
get disableStepnav() {
|
|
26917
25260
|
return this._disableStepnav;
|
|
26918
25261
|
}
|
|
26919
|
-
get stopModalAnimations() {
|
|
26920
|
-
return this._stopModalAnimations ? 'true' : 'false';
|
|
26921
|
-
}
|
|
26922
25262
|
get currentPage() {
|
|
26923
25263
|
return this.navService.currentPage;
|
|
26924
25264
|
}
|
|
@@ -26931,13 +25271,9 @@ class ClrWizard {
|
|
|
26931
25271
|
get isFirst() {
|
|
26932
25272
|
return this.navService.currentPageIsFirst;
|
|
26933
25273
|
}
|
|
26934
|
-
get isStatic() {
|
|
26935
|
-
return this.elementRef.nativeElement.classList.contains('clr-wizard--inline');
|
|
26936
|
-
}
|
|
26937
25274
|
ngAfterContentInit() {
|
|
26938
25275
|
this.pageCollection.pages = this.pages;
|
|
26939
25276
|
this.headerActionService.wizardHeaderActions = this.headerActions;
|
|
26940
|
-
this.initializeButtons();
|
|
26941
25277
|
}
|
|
26942
25278
|
ngDoCheck() {
|
|
26943
25279
|
this.updateNavOnPageChanges();
|
|
@@ -27142,12 +25478,6 @@ class ClrWizard {
|
|
|
27142
25478
|
changes.forEachRemovedItem(() => this.navService.updateNavigation());
|
|
27143
25479
|
}
|
|
27144
25480
|
}
|
|
27145
|
-
initializeButtons() {
|
|
27146
|
-
// Only trigger buttons ready if default is open (inlined)
|
|
27147
|
-
if (this._open) {
|
|
27148
|
-
this.buttonService.buttonsReady = true;
|
|
27149
|
-
}
|
|
27150
|
-
}
|
|
27151
25481
|
emitWizardFinished() {
|
|
27152
25482
|
if (!this.stopNext) {
|
|
27153
25483
|
this.forceFinish();
|
|
@@ -27155,8 +25485,8 @@ class ClrWizard {
|
|
|
27155
25485
|
this.wizardFinished.emit();
|
|
27156
25486
|
}
|
|
27157
25487
|
}
|
|
27158
|
-
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.
|
|
27159
|
-
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"]
|
|
25488
|
+
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 });
|
|
25489
|
+
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" }] });
|
|
27160
25490
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrWizard, decorators: [{
|
|
27161
25491
|
type: Component,
|
|
27162
25492
|
args: [{ selector: 'clr-wizard', providers: [WizardNavigationService, PageCollectionService, ButtonHubService, HeaderActionService], host: {
|
|
@@ -27165,12 +25495,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
27165
25495
|
'[class.wizard-lg]': "size == 'lg'",
|
|
27166
25496
|
'[class.wizard-xl]': "size == 'xl'",
|
|
27167
25497
|
'[class.lastPage]': 'navService.currentPageIsLast',
|
|
27168
|
-
}, 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 [
|
|
25498
|
+
}, 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" }]
|
|
27169
25499
|
}], ctorParameters: function () {
|
|
27170
25500
|
return [{ type: undefined, decorators: [{
|
|
27171
25501
|
type: Inject,
|
|
27172
25502
|
args: [PLATFORM_ID]
|
|
27173
|
-
}] }, { type: WizardNavigationService }, { type: PageCollectionService }, { type: ButtonHubService }, { type: HeaderActionService }, { type: i0.
|
|
25503
|
+
}] }, { type: WizardNavigationService }, { type: PageCollectionService }, { type: ButtonHubService }, { type: HeaderActionService }, { type: i0.IterableDiffers }];
|
|
27174
25504
|
}, propDecorators: { size: [{
|
|
27175
25505
|
type: Input,
|
|
27176
25506
|
args: ['clrWizardSize']
|
|
@@ -27195,9 +25525,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
27195
25525
|
}], disableStepnav: [{
|
|
27196
25526
|
type: Input,
|
|
27197
25527
|
args: ['clrWizardDisableStepnav']
|
|
27198
|
-
}], _stopModalAnimations: [{
|
|
27199
|
-
type: Input,
|
|
27200
|
-
args: ['clrWizardPreventModalAnimation']
|
|
27201
25528
|
}], _openChanged: [{
|
|
27202
25529
|
type: Output,
|
|
27203
25530
|
args: ['clrWizardOpenChange']
|
|
@@ -27498,15 +25825,12 @@ ClarityModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version:
|
|
|
27498
25825
|
ClrModalModule,
|
|
27499
25826
|
ClrLoadingModule,
|
|
27500
25827
|
ClrConditionalModule,
|
|
27501
|
-
ClrFocusTrapModule,
|
|
27502
25828
|
ClrFocusOnViewInitModule,
|
|
27503
|
-
ClrForTypeAheadModule,
|
|
27504
25829
|
ClrButtonModule,
|
|
27505
25830
|
ClrFormsModule,
|
|
27506
25831
|
ClrLayoutModule,
|
|
27507
25832
|
ClrPopoverModule,
|
|
27508
25833
|
ClrWizardModule,
|
|
27509
|
-
ClrDragAndDropModule,
|
|
27510
25834
|
ClrStepperModule,
|
|
27511
25835
|
ClrSpinnerModule,
|
|
27512
25836
|
ClrProgressBarModule,
|
|
@@ -27518,15 +25842,12 @@ ClarityModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version:
|
|
|
27518
25842
|
ClrModalModule,
|
|
27519
25843
|
ClrLoadingModule,
|
|
27520
25844
|
ClrConditionalModule,
|
|
27521
|
-
ClrFocusTrapModule,
|
|
27522
25845
|
ClrFocusOnViewInitModule,
|
|
27523
|
-
ClrForTypeAheadModule,
|
|
27524
25846
|
ClrButtonModule,
|
|
27525
25847
|
ClrFormsModule,
|
|
27526
25848
|
ClrLayoutModule,
|
|
27527
25849
|
ClrPopoverModule,
|
|
27528
25850
|
ClrWizardModule,
|
|
27529
|
-
ClrDragAndDropModule,
|
|
27530
25851
|
ClrStepperModule,
|
|
27531
25852
|
ClrSpinnerModule,
|
|
27532
25853
|
ClrProgressBarModule,
|
|
@@ -27542,15 +25863,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
27542
25863
|
ClrModalModule,
|
|
27543
25864
|
ClrLoadingModule,
|
|
27544
25865
|
ClrConditionalModule,
|
|
27545
|
-
ClrFocusTrapModule,
|
|
27546
25866
|
ClrFocusOnViewInitModule,
|
|
27547
|
-
ClrForTypeAheadModule,
|
|
27548
25867
|
ClrButtonModule,
|
|
27549
25868
|
ClrFormsModule,
|
|
27550
25869
|
ClrLayoutModule,
|
|
27551
25870
|
ClrPopoverModule,
|
|
27552
25871
|
ClrWizardModule,
|
|
27553
|
-
ClrDragAndDropModule,
|
|
27554
25872
|
ClrStepperModule,
|
|
27555
25873
|
ClrSpinnerModule,
|
|
27556
25874
|
ClrProgressBarModule,
|
|
@@ -27820,5 +26138,5 @@ const CLR_MENU_POSITIONS = [
|
|
|
27820
26138
|
* Generated bundle index. Do not edit.
|
|
27821
26139
|
*/
|
|
27822
26140
|
|
|
27823
|
-
export { CLR_ALERT_DIRECTIVES, CLR_BUTTON_GROUP_DIRECTIVES, CLR_DATAGRID_DIRECTIVES, CLR_DATEPICKER_DIRECTIVES,
|
|
26141
|
+
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 };
|
|
27824
26142
|
//# sourceMappingURL=clr-angular.mjs.map
|