@clr/angular 15.0.0-beta.1 → 15.0.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/clarity.api.md +158 -489
- package/clr-angular.module.d.ts +12 -15
- package/data/datagrid/datagrid-column.d.ts +1 -22
- 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 +6 -6
- 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 +16 -15
- package/esm2020/data/datagrid/datagrid-column-toggle.mjs +18 -20
- package/esm2020/data/datagrid/datagrid-column.mjs +2 -48
- package/esm2020/data/datagrid/datagrid-detail.mjs +8 -6
- package/esm2020/data/datagrid/datagrid-filter.mjs +10 -10
- package/esm2020/data/datagrid/datagrid-pagination.mjs +10 -5
- package/esm2020/data/datagrid/datagrid-row-detail.mjs +7 -8
- package/esm2020/data/datagrid/datagrid-row.mjs +3 -3
- 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 +30 -26
- package/esm2020/forms/datepicker/date-container.mjs +9 -9
- package/esm2020/forms/datepicker/datepicker.module.mjs +5 -5
- package/esm2020/layout/nav/nav-level.mjs +23 -10
- 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/dropdown/dropdown-item.mjs +30 -33
- package/esm2020/utils/cdk/cdk-drag.module.mjs +37 -0
- package/esm2020/utils/cdk/cdk-trap-focus.module.mjs +37 -0
- package/esm2020/utils/i18n/common-strings.default.mjs +2 -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 +259 -1990
- package/fesm2015/clr-angular.mjs.map +1 -1
- package/fesm2020/clr-angular.mjs +306 -2033
- 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/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/i18n/common-strings.interface.d.ts +0 -17
- 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/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/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/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
|
|
|
@@ -281,7 +282,7 @@ const commonStringsDefault = {
|
|
|
281
282
|
warning: 'Warning',
|
|
282
283
|
danger: 'Error',
|
|
283
284
|
rowActions: 'Available actions',
|
|
284
|
-
pickColumns: '
|
|
285
|
+
pickColumns: 'Manage Columns',
|
|
285
286
|
showColumns: 'Show Columns',
|
|
286
287
|
sortColumn: 'Sort Column',
|
|
287
288
|
firstPage: 'First Page',
|
|
@@ -334,7 +335,6 @@ const commonStringsDefault = {
|
|
|
334
335
|
responsiveNavOverflowOpen: 'Navigation overflow menu',
|
|
335
336
|
responsiveNavOverflowClose: 'Navigation overflow menu',
|
|
336
337
|
//Vertical Nav
|
|
337
|
-
verticalNavGroupToggle: 'Toggle vertical navigation group',
|
|
338
338
|
verticalNavToggle: 'Toggle vertical navigation',
|
|
339
339
|
// Timeline steps
|
|
340
340
|
timelineStepNotStarted: 'Not started',
|
|
@@ -598,10 +598,10 @@ class ClrAccordionPanel {
|
|
|
598
598
|
}
|
|
599
599
|
}
|
|
600
600
|
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
|
|
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 [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
602
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrAccordionPanel, decorators: [{
|
|
603
603
|
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
|
|
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 [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
605
|
}], ctorParameters: function () { return [{ type: ClrCommonStringsService }, { type: AccordionService }, { type: IfExpandService }]; }, propDecorators: { disabled: [{
|
|
606
606
|
type: Input,
|
|
607
607
|
args: ['clrAccordionPanelDisabled']
|
|
@@ -1095,10 +1095,10 @@ class ClrStepperPanel extends ClrAccordionPanel {
|
|
|
1095
1095
|
}
|
|
1096
1096
|
}
|
|
1097
1097
|
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
|
|
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 [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
1099
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStepperPanel, decorators: [{
|
|
1100
1100
|
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
|
|
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 [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
1102
|
}], ctorParameters: function () {
|
|
1103
1103
|
return [{ type: undefined, decorators: [{
|
|
1104
1104
|
type: Inject,
|
|
@@ -7046,204 +7046,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
7046
7046
|
* This software is released under MIT license.
|
|
7047
7047
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
7048
7048
|
*/
|
|
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.
|
|
7049
|
+
/**
|
|
7050
|
+
* This is just a copy of CdkTrapFocus so it can be used independent of the rest of the A11yModule.
|
|
7078
7051
|
*/
|
|
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
|
-
}
|
|
7052
|
+
class CdkTrapFocusModule_CdkTrapFocus extends CdkTrapFocus {
|
|
7209
7053
|
}
|
|
7210
|
-
|
|
7211
|
-
|
|
7212
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type:
|
|
7054
|
+
CdkTrapFocusModule_CdkTrapFocus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkTrapFocusModule_CdkTrapFocus, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
7055
|
+
CdkTrapFocusModule_CdkTrapFocus.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]", usesInheritance: true, ngImport: i0 });
|
|
7056
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkTrapFocusModule_CdkTrapFocus, decorators: [{
|
|
7213
7057
|
type: Directive,
|
|
7214
7058
|
args: [{
|
|
7215
|
-
selector: '[
|
|
7059
|
+
selector: '[cdkTrapFocus]',
|
|
7216
7060
|
}]
|
|
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.
|
|
7061
|
+
}] });
|
|
7062
|
+
/**
|
|
7063
|
+
* This module allows us to avoid importing all of A11yModule which results in a smaller application bundle.
|
|
7234
7064
|
*/
|
|
7235
|
-
|
|
7236
|
-
class ClrFocusTrapModule {
|
|
7065
|
+
class CdkTrapFocusModule {
|
|
7237
7066
|
}
|
|
7238
|
-
|
|
7239
|
-
|
|
7240
|
-
|
|
7241
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type:
|
|
7067
|
+
CdkTrapFocusModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkTrapFocusModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
7068
|
+
CdkTrapFocusModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: CdkTrapFocusModule, declarations: [CdkTrapFocusModule_CdkTrapFocus], exports: [CdkTrapFocusModule_CdkTrapFocus] });
|
|
7069
|
+
CdkTrapFocusModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkTrapFocusModule });
|
|
7070
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkTrapFocusModule, decorators: [{
|
|
7242
7071
|
type: NgModule,
|
|
7243
7072
|
args: [{
|
|
7244
|
-
|
|
7245
|
-
|
|
7246
|
-
exports: [FOCUS_TRAP_DIRECTIVES],
|
|
7073
|
+
declarations: [CdkTrapFocusModule_CdkTrapFocus],
|
|
7074
|
+
exports: [CdkTrapFocusModule_CdkTrapFocus],
|
|
7247
7075
|
}]
|
|
7248
7076
|
}] });
|
|
7249
7077
|
|
|
@@ -9034,7 +8862,7 @@ ClrDateContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
|
|
|
9034
8862
|
</button>
|
|
9035
8863
|
<clr-datepicker-view-manager
|
|
9036
8864
|
*clrPopoverContent="open; at: popoverPosition; outsideClickToClose: true; scrollToClose: true"
|
|
9037
|
-
|
|
8865
|
+
cdkTrapFocus
|
|
9038
8866
|
></clr-datepicker-view-manager>
|
|
9039
8867
|
</div>
|
|
9040
8868
|
<cds-icon
|
|
@@ -9056,7 +8884,7 @@ ClrDateContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
|
|
|
9056
8884
|
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
9057
8885
|
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
9058
8886
|
</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:
|
|
8887
|
+
`, 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
8888
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDateContainer, decorators: [{
|
|
9061
8889
|
type: Component,
|
|
9062
8890
|
args: [{
|
|
@@ -9080,7 +8908,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
9080
8908
|
</button>
|
|
9081
8909
|
<clr-datepicker-view-manager
|
|
9082
8910
|
*clrPopoverContent="open; at: popoverPosition; outsideClickToClose: true; scrollToClose: true"
|
|
9083
|
-
|
|
8911
|
+
cdkTrapFocus
|
|
9084
8912
|
></clr-datepicker-view-manager>
|
|
9085
8913
|
</div>
|
|
9086
8914
|
<cds-icon
|
|
@@ -9476,11 +9304,11 @@ ClrDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ver
|
|
|
9476
9304
|
ClrYearpicker,
|
|
9477
9305
|
ClrDaypicker,
|
|
9478
9306
|
ClrCalendar], imports: [CommonModule,
|
|
9307
|
+
CdkTrapFocusModule,
|
|
9479
9308
|
ClrHostWrappingModule,
|
|
9480
9309
|
ClrConditionalModule,
|
|
9481
9310
|
ClrPopoverModuleNext,
|
|
9482
9311
|
ClrIconModule,
|
|
9483
|
-
ClrFocusTrapModule,
|
|
9484
9312
|
ClrCommonFormsModule], exports: [ClrDay,
|
|
9485
9313
|
ClrDateContainer,
|
|
9486
9314
|
ClrDateInput,
|
|
@@ -9491,22 +9319,22 @@ ClrDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ver
|
|
|
9491
9319
|
ClrDaypicker,
|
|
9492
9320
|
ClrCalendar] });
|
|
9493
9321
|
ClrDatepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatepickerModule, imports: [CommonModule,
|
|
9322
|
+
CdkTrapFocusModule,
|
|
9494
9323
|
ClrHostWrappingModule,
|
|
9495
9324
|
ClrConditionalModule,
|
|
9496
9325
|
ClrPopoverModuleNext,
|
|
9497
9326
|
ClrIconModule,
|
|
9498
|
-
ClrFocusTrapModule,
|
|
9499
9327
|
ClrCommonFormsModule] });
|
|
9500
9328
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatepickerModule, decorators: [{
|
|
9501
9329
|
type: NgModule,
|
|
9502
9330
|
args: [{
|
|
9503
9331
|
imports: [
|
|
9504
9332
|
CommonModule,
|
|
9333
|
+
CdkTrapFocusModule,
|
|
9505
9334
|
ClrHostWrappingModule,
|
|
9506
9335
|
ClrConditionalModule,
|
|
9507
9336
|
ClrPopoverModuleNext,
|
|
9508
9337
|
ClrIconModule,
|
|
9509
|
-
ClrFocusTrapModule,
|
|
9510
9338
|
ClrCommonFormsModule,
|
|
9511
9339
|
],
|
|
9512
9340
|
declarations: [CLR_DATEPICKER_DIRECTIVES],
|
|
@@ -10536,967 +10364,60 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
10536
10364
|
/*
|
|
10537
10365
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
10538
10366
|
* 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 }]; } });
|
|
11133
|
-
|
|
11134
|
-
/*
|
|
11135
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
11136
|
-
* This software is released under MIT license.
|
|
11137
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
11138
|
-
*/
|
|
11139
|
-
class ClrDraggable {
|
|
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
|
-
}] } });
|
|
10367
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
10368
|
+
*/
|
|
10369
|
+
const EXPANDABLE_ANIMATION_DIRECTIVES = [ClrExpandableAnimation];
|
|
11253
10370
|
|
|
11254
10371
|
/*
|
|
11255
10372
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
11256
10373
|
* This software is released under MIT license.
|
|
11257
10374
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
11258
10375
|
*/
|
|
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
|
-
}
|
|
10376
|
+
class ClrExpandableAnimationModule {
|
|
11433
10377
|
}
|
|
11434
|
-
|
|
11435
|
-
|
|
11436
|
-
i0.ɵɵ
|
|
11437
|
-
|
|
10378
|
+
ClrExpandableAnimationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrExpandableAnimationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10379
|
+
ClrExpandableAnimationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: ClrExpandableAnimationModule, declarations: [ClrExpandableAnimation], imports: [CommonModule], exports: [ClrExpandableAnimation] });
|
|
10380
|
+
ClrExpandableAnimationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrExpandableAnimationModule, imports: [CommonModule] });
|
|
10381
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrExpandableAnimationModule, decorators: [{
|
|
10382
|
+
type: NgModule,
|
|
11438
10383
|
args: [{
|
|
11439
|
-
|
|
11440
|
-
|
|
11441
|
-
|
|
10384
|
+
imports: [CommonModule],
|
|
10385
|
+
declarations: [EXPANDABLE_ANIMATION_DIRECTIVES],
|
|
10386
|
+
exports: [EXPANDABLE_ANIMATION_DIRECTIVES],
|
|
11442
10387
|
}]
|
|
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
|
-
}] } });
|
|
10388
|
+
}] });
|
|
11468
10389
|
|
|
11469
10390
|
/*
|
|
11470
10391
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
11471
10392
|
* This software is released under MIT license.
|
|
11472
10393
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
11473
10394
|
*/
|
|
11474
|
-
|
|
11475
|
-
|
|
11476
|
-
|
|
11477
|
-
|
|
11478
|
-
|
|
11479
|
-
|
|
11480
|
-
];
|
|
11481
|
-
|
|
11482
|
-
|
|
11483
|
-
|
|
11484
|
-
|
|
11485
|
-
|
|
11486
|
-
|
|
11487
|
-
|
|
11488
|
-
|
|
11489
|
-
|
|
11490
|
-
|
|
11491
|
-
|
|
11492
|
-
|
|
11493
|
-
|
|
11494
|
-
i0.ɵɵ
|
|
10395
|
+
/**
|
|
10396
|
+
* This is just a copy of CdkDrag so it can be used independent of the rest of the CdkDragDropModule.
|
|
10397
|
+
*/
|
|
10398
|
+
class CdkDragModule_CdkDrag extends CdkDrag {
|
|
10399
|
+
}
|
|
10400
|
+
CdkDragModule_CdkDrag.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkDragModule_CdkDrag, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
10401
|
+
CdkDragModule_CdkDrag.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: CdkDragModule_CdkDrag, selector: "[cdkDrag]", usesInheritance: true, ngImport: i0 });
|
|
10402
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkDragModule_CdkDrag, decorators: [{
|
|
10403
|
+
type: Directive,
|
|
10404
|
+
args: [{
|
|
10405
|
+
selector: '[cdkDrag]',
|
|
10406
|
+
}]
|
|
10407
|
+
}] });
|
|
10408
|
+
/**
|
|
10409
|
+
* This module allows us to avoid importing all of CdkDragDropModule which results in a smaller application bundle.
|
|
10410
|
+
*/
|
|
10411
|
+
class CdkDragModule {
|
|
10412
|
+
}
|
|
10413
|
+
CdkDragModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkDragModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10414
|
+
CdkDragModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: CdkDragModule, declarations: [CdkDragModule_CdkDrag], exports: [CdkDragModule_CdkDrag] });
|
|
10415
|
+
CdkDragModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkDragModule });
|
|
10416
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CdkDragModule, decorators: [{
|
|
11495
10417
|
type: NgModule,
|
|
11496
10418
|
args: [{
|
|
11497
|
-
|
|
11498
|
-
|
|
11499
|
-
exports: [CLR_DRAG_AND_DROP_DIRECTIVES],
|
|
10419
|
+
declarations: [CdkDragModule_CdkDrag],
|
|
10420
|
+
exports: [CdkDragModule_CdkDrag],
|
|
11500
10421
|
}]
|
|
11501
10422
|
}] });
|
|
11502
10423
|
|
|
@@ -12156,7 +11077,7 @@ ClrDatagridFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
|
|
|
12156
11077
|
<div
|
|
12157
11078
|
class="datagrid-filter"
|
|
12158
11079
|
[id]="popoverId"
|
|
12159
|
-
|
|
11080
|
+
cdkTrapFocus
|
|
12160
11081
|
*clrPopoverContent="open; at: smartPosition; outsideClickToClose: true; scrollToClose: true"
|
|
12161
11082
|
role="dialog"
|
|
12162
11083
|
[attr.aria-label]="commonStrings.keys.datagridFilterDialogAriaLabel"
|
|
@@ -12169,7 +11090,7 @@ ClrDatagridFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
|
|
|
12169
11090
|
|
|
12170
11091
|
<ng-content></ng-content>
|
|
12171
11092
|
</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"] }
|
|
11093
|
+
`, 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
11094
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridFilter, decorators: [{
|
|
12174
11095
|
type: Component,
|
|
12175
11096
|
args: [{
|
|
@@ -12199,7 +11120,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
12199
11120
|
<div
|
|
12200
11121
|
class="datagrid-filter"
|
|
12201
11122
|
[id]="popoverId"
|
|
12202
|
-
|
|
11123
|
+
cdkTrapFocus
|
|
12203
11124
|
*clrPopoverContent="open; at: smartPosition; outsideClickToClose: true; scrollToClose: true"
|
|
12204
11125
|
role="dialog"
|
|
12205
11126
|
[attr.aria-label]="commonStrings.keys.datagridFilterDialogAriaLabel"
|
|
@@ -13362,8 +12283,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
13362
12283
|
// Default resize length on each keyboard move event
|
|
13363
12284
|
const KEYBOARD_RESIZE_LENGTH = 12;
|
|
13364
12285
|
class ClrDatagridColumnSeparator {
|
|
13365
|
-
// Every column draggable separator should have its own unique ID
|
|
13366
|
-
// in order to not conflict with other draggables/droppables.
|
|
13367
12286
|
constructor(columnResizerService, renderer, ngZone, tableSizeService, commonString, document) {
|
|
13368
12287
|
this.columnResizerService = columnResizerService;
|
|
13369
12288
|
this.renderer = renderer;
|
|
@@ -13411,6 +12330,7 @@ class ClrDatagridColumnSeparator {
|
|
|
13411
12330
|
this.columnResizerService.endResize();
|
|
13412
12331
|
this.renderer.setStyle(this.resizeTrackerEl, 'display', 'none');
|
|
13413
12332
|
this.renderer.setStyle(this.resizeTrackerEl, 'transform', `translateX(0px)`);
|
|
12333
|
+
this.renderer.setStyle(this.columnHandleEl, 'transform', `translateX(0px)`);
|
|
13414
12334
|
this.renderer.setStyle(this.document.body, 'cursor', 'auto');
|
|
13415
12335
|
}
|
|
13416
12336
|
showTrackerOnFirstKeyDown(event) {
|
|
@@ -13422,9 +12342,11 @@ class ClrDatagridColumnSeparator {
|
|
|
13422
12342
|
}
|
|
13423
12343
|
moveTrackerOnKeyDown(event) {
|
|
13424
12344
|
if (this.isArrowLeftKeyEvent(event)) {
|
|
12345
|
+
event.stopPropagation();
|
|
13425
12346
|
this.moveTracker(this.columnResizerService.resizedBy - KEYBOARD_RESIZE_LENGTH);
|
|
13426
12347
|
}
|
|
13427
12348
|
else if (this.isArrowRightKeyEvent(event)) {
|
|
12349
|
+
event.stopPropagation();
|
|
13428
12350
|
this.moveTracker(this.columnResizerService.resizedBy + KEYBOARD_RESIZE_LENGTH);
|
|
13429
12351
|
}
|
|
13430
12352
|
}
|
|
@@ -13464,18 +12386,18 @@ ClrDatagridColumnSeparator.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0
|
|
|
13464
12386
|
class="datagrid-column-handle"
|
|
13465
12387
|
[attr.aria-label]="commonString.keys.columnSeparatorAriaLabel"
|
|
13466
12388
|
[attr.aria-describedby]="descriptionId"
|
|
13467
|
-
|
|
13468
|
-
|
|
13469
|
-
(
|
|
13470
|
-
(
|
|
13471
|
-
(
|
|
12389
|
+
cdkDrag
|
|
12390
|
+
cdkDragLockAxis="x"
|
|
12391
|
+
(cdkDragStarted)="showTracker()"
|
|
12392
|
+
(cdkDragMoved)="moveTracker($event.distance.x)"
|
|
12393
|
+
(cdkDragEnded)="hideTracker(); $event.source._dragRef.reset()"
|
|
13472
12394
|
#columnHandle
|
|
13473
12395
|
></button>
|
|
13474
12396
|
<span class="clr-sr-only" [attr.id]="descriptionId">
|
|
13475
12397
|
{{ commonString.keys.columnSeparatorDescription }}
|
|
13476
12398
|
</span>
|
|
13477
12399
|
<div class="datagrid-column-resize-tracker" #resizeTracker></div>
|
|
13478
|
-
`, isInline: true, dependencies: [{ kind: "directive", type:
|
|
12400
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: CdkDragModule_CdkDrag, selector: "[cdkDrag]" }] });
|
|
13479
12401
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridColumnSeparator, decorators: [{
|
|
13480
12402
|
type: Component,
|
|
13481
12403
|
args: [{
|
|
@@ -13486,11 +12408,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
13486
12408
|
class="datagrid-column-handle"
|
|
13487
12409
|
[attr.aria-label]="commonString.keys.columnSeparatorAriaLabel"
|
|
13488
12410
|
[attr.aria-describedby]="descriptionId"
|
|
13489
|
-
|
|
13490
|
-
|
|
13491
|
-
(
|
|
13492
|
-
(
|
|
13493
|
-
(
|
|
12411
|
+
cdkDrag
|
|
12412
|
+
cdkDragLockAxis="x"
|
|
12413
|
+
(cdkDragStarted)="showTracker()"
|
|
12414
|
+
(cdkDragMoved)="moveTracker($event.distance.x)"
|
|
12415
|
+
(cdkDragEnded)="hideTracker(); $event.source._dragRef.reset()"
|
|
13494
12416
|
#columnHandle
|
|
13495
12417
|
></button>
|
|
13496
12418
|
<span class="clr-sr-only" [attr.id]="descriptionId">
|
|
@@ -13539,18 +12461,6 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
|
13539
12461
|
* via the [clrDgColType] input by setting it to 'string' or 'number'.
|
|
13540
12462
|
*/
|
|
13541
12463
|
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
12464
|
/**
|
|
13555
12465
|
* Indicates how the column is currently sorted
|
|
13556
12466
|
*/
|
|
@@ -13586,16 +12496,8 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
|
13586
12496
|
if (this.sortOrder !== ClrDatagridSortOrder.UNSORTED && sort.comparator !== this._sortBy) {
|
|
13587
12497
|
this._sortOrder = ClrDatagridSortOrder.UNSORTED;
|
|
13588
12498
|
this.sortOrderChange.emit(this._sortOrder);
|
|
13589
|
-
// removes the sortIcon when column becomes unsorted
|
|
13590
|
-
this.sortIcon = null;
|
|
13591
12499
|
this._sortDirection = null;
|
|
13592
12500
|
}
|
|
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
12501
|
});
|
|
13600
12502
|
}
|
|
13601
12503
|
get colType() {
|
|
@@ -13672,21 +12574,6 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
|
13672
12574
|
get sortable() {
|
|
13673
12575
|
return !!this._sortBy;
|
|
13674
12576
|
}
|
|
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
12577
|
get sortOrder() {
|
|
13691
12578
|
return this._sortOrder;
|
|
13692
12579
|
}
|
|
@@ -13738,12 +12625,7 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
|
13738
12625
|
this._sortOrder = this._sort.reverse ? ClrDatagridSortOrder.DESC : ClrDatagridSortOrder.ASC;
|
|
13739
12626
|
// Sets the correct icon for current sort order
|
|
13740
12627
|
this._sortDirection = this._sortOrder === ClrDatagridSortOrder.DESC ? 'down' : 'up';
|
|
13741
|
-
this.sortIcon = this._sortOrder === ClrDatagridSortOrder.DESC ? 'arrow down' : 'arrow'; // Backward compatibility
|
|
13742
12628
|
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
12629
|
}
|
|
13748
12630
|
set projectedFilter(custom) {
|
|
13749
12631
|
if (custom) {
|
|
@@ -13811,7 +12693,7 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
|
13811
12693
|
}
|
|
13812
12694
|
}
|
|
13813
12695
|
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"],
|
|
12696
|
+
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
12697
|
<div class="datagrid-column-flex">
|
|
13816
12698
|
<button class="datagrid-column-title" *ngIf="sortable" (click)="sort()" type="button">
|
|
13817
12699
|
<ng-container *ngTemplateOutlet="columnTitle"></ng-container>
|
|
@@ -13914,12 +12796,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
13914
12796
|
}], sortBy: [{
|
|
13915
12797
|
type: Input,
|
|
13916
12798
|
args: ['clrDgSortBy']
|
|
13917
|
-
}], sorted: [{
|
|
13918
|
-
type: Input,
|
|
13919
|
-
args: ['clrDgSorted']
|
|
13920
|
-
}], sortedChange: [{
|
|
13921
|
-
type: Output,
|
|
13922
|
-
args: ['clrDgSortedChange']
|
|
13923
12799
|
}], sortOrder: [{
|
|
13924
12800
|
type: Input,
|
|
13925
12801
|
args: ['clrDgSortOrder']
|
|
@@ -15217,7 +14093,7 @@ ClrDatagridRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version
|
|
|
15217
14093
|
DatagridIfExpandService,
|
|
15218
14094
|
{ provide: IfExpandService, useExisting: DatagridIfExpandService },
|
|
15219
14095
|
{ provide: LoadingListener, useExisting: DatagridIfExpandService },
|
|
15220
|
-
], queries: [{ propertyName: "dgCells", predicate: ClrDatagridCell }], viewQueries: [{ propertyName: "expandAnimation", first: true, predicate: ClrExpandableAnimation, descendants: true }, { propertyName: "detailButton", first: true, predicate: ["detailButton"], descendants: true }, { propertyName: "_stickyCells", first: true, predicate: ["stickyCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_scrollableCells", first: true, predicate: ["scrollableCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_calculatedCells", first: true, predicate: ["calculatedCells"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n We need to wrap the #rowContent in label element if we are in rowSelectionMode.\n Clicking of that wrapper label will equate to clicking on the whole row, which triggers the checkbox to toggle.\n-->\n<label class=\"datagrid-row-clickable\" *ngIf=\"selection.rowSelectionMode\" (mousedown)=\"clearRanges($event)\">\n <clr-expandable-animation [clrExpandTrigger]=\"expandAnimationTrigger\" *ngIf=\"expand.expandable\">\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n </clr-expandable-animation>\n <ng-template [ngTemplateOutlet]=\"rowContent\" *ngIf=\"!expand.expandable\"></ng-template>\n</label>\n\n<clr-expandable-animation\n *ngIf=\"!selection.rowSelectionMode && expand.expandable\"\n [clrExpandTrigger]=\"expandAnimationTrigger\"\n>\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n</clr-expandable-animation>\n\n<ng-template *ngIf=\"!selection.rowSelectionMode && !expand.expandable\" [ngTemplateOutlet]=\"rowContent\"></ng-template>\n\n<!--\n We need the \"project into template\" hacks because we need this in 2 different places\n depending on whether the details replace the row or not.\n-->\n<ng-template #detail>\n <ng-content select=\"clr-dg-row-detail\"></ng-content>\n</ng-template>\n\n<ng-template #rowContent>\n <div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [class.datagrid-row-detail-open]=\"detailService.isRowOpen(item)\"\n >\n <div class=\"datagrid-row-sticky\">\n <!-- Sticky elements here -->\n <ng-container #stickyCells>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <div class=\"clr-checkbox-wrapper\">\n <input\n type=\"checkbox\"\n [ngModel]=\"selected\"\n (ngModelChange)=\"toggle($event)\"\n [id]=\"checkboxId\"\n [attr.disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-label]=\"clrDgRowAriaLabel\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"checkboxId\" class=\"clr-control-label clr-col-null\" (click)=\"clearRanges($event)\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.select}}</span>\n </label>\n </div>\n </div>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n >\n <!-- TODO: it would be better if in addition to the generic \"Select\" label, we could add aria-labelledby\n to label the radio by the first cell in the row (typically an id or name).\n It's pretty easy to label it with the whole row since we already have an id for it, but in most\n cases the row is far too long to serve as a label, the screenreader reads every single cell content. -->\n <input\n type=\"radio\"\n clrRadio\n [id]=\"radioId\"\n [name]=\"selection.id + '-radio'\"\n [value]=\"item\"\n [(ngModel)]=\"selection.currentSingle\"\n [checked]=\"selection.currentSingle === item\"\n [attr.disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-label]=\"clrDgRowAriaLabel\"\n />\n </div>\n <div\n *ngIf=\"rowActionService.hasActionableRow\"\n class=\"datagrid-row-actions datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-content select=\"clr-dg-action-overflow\"></ng-content>\n </div>\n <div\n *ngIf=\"globalExpandable.hasExpandableRow\"\n class=\"datagrid-expandable-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-container *ngIf=\"expand.expandable\">\n <button\n *ngIf=\"!expand.loading\"\n (click)=\"toggleExpand()\"\n type=\"button\"\n class=\"datagrid-expandable-caret-button\"\n [attr.aria-expanded]=\"expand.expanded\"\n [attr.aria-label]=\"expand.expanded ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-controls]=\"expandableId\"\n >\n <cds-icon\n shape=\"angle\"\n class=\"datagrid-expandable-caret-icon\"\n [attr.direction]=\"expand.expanded ? 'down' : 'right'\"\n [attr.title]=\"expand.expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n <clr-spinner *ngIf=\"expand.loading\" clrSmall>{{ commonStrings.keys.loading }}</clr-spinner>\n </ng-container>\n </div>\n <div *ngIf=\"detailService.enabled\" class=\"datagrid-detail-caret datagrid-fixed-column datagrid-cell\">\n <button\n (click)=\"detailService.toggle(item, detailButton)\"\n type=\"button\"\n #detailButton\n class=\"datagrid-detail-caret-button\"\n [class.is-open]=\"detailService.isRowOpen(item)\"\n [attr.aria-label]=\"detailService.isRowOpen(item) ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-expanded]=\"detailService.isOpen\"\n [attr.aria-controls]=\"detailService.id\"\n aria-haspopup=\"dialog\"\n >\n <cds-icon\n shape=\"angle-double\"\n [attr.direction]=\"detailService.isRowOpen(item) ? 'left' : 'right'\"\n class=\"datagrid-detail-caret-icon\"\n [attr.title]=\"detailService.isRowOpen(item) ? commonStrings.keys.close: commonStrings.keys.open\"\n ></cds-icon>\n </button>\n </div>\n </ng-container>\n <!-- placeholder for projecting other sticky cells as pinned-->\n </div>\n <div class=\"datagrid-row-scrollable\" [ngClass]=\"{'is-replaced': replaced && expanded}\">\n <div class=\"datagrid-scrolling-cells\">\n <ng-content select=\"clr-dg-cell\"></ng-content>\n <ng-container #scrollableCells></ng-container>\n </div>\n <!-- details here when replace, re-visit when sticky container is used for pinned cells -->\n <ng-template *ngIf=\"replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n <ng-template *ngIf=\"!replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n </div>\n </div>\n</ng-template>\n\n<ng-container #calculatedCells></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: 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: ClrRadio, selector: "[clrRadio]" }, { 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.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { 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: "component", type: ClrExpandableAnimation, selector: "clr-expandable-animation", inputs: ["clrExpandTrigger"] }, { kind: "component", type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }] });
|
|
14096
|
+
], queries: [{ propertyName: "dgCells", predicate: ClrDatagridCell }], viewQueries: [{ propertyName: "expandAnimation", first: true, predicate: ClrExpandableAnimation, descendants: true }, { propertyName: "detailButton", first: true, predicate: ["detailButton"], descendants: true }, { propertyName: "_stickyCells", first: true, predicate: ["stickyCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_scrollableCells", first: true, predicate: ["scrollableCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_calculatedCells", first: true, predicate: ["calculatedCells"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n We need to wrap the #rowContent in label element if we are in rowSelectionMode.\n Clicking of that wrapper label will equate to clicking on the whole row, which triggers the checkbox to toggle.\n-->\n<label class=\"datagrid-row-clickable clr-col-null\" *ngIf=\"selection.rowSelectionMode\" (mousedown)=\"clearRanges($event)\">\n <clr-expandable-animation [clrExpandTrigger]=\"expandAnimationTrigger\" *ngIf=\"expand.expandable\">\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n </clr-expandable-animation>\n <ng-template [ngTemplateOutlet]=\"rowContent\" *ngIf=\"!expand.expandable\"></ng-template>\n</label>\n\n<clr-expandable-animation\n *ngIf=\"!selection.rowSelectionMode && expand.expandable\"\n [clrExpandTrigger]=\"expandAnimationTrigger\"\n>\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n</clr-expandable-animation>\n\n<ng-template *ngIf=\"!selection.rowSelectionMode && !expand.expandable\" [ngTemplateOutlet]=\"rowContent\"></ng-template>\n\n<!--\n We need the \"project into template\" hacks because we need this in 2 different places\n depending on whether the details replace the row or not.\n-->\n<ng-template #detail>\n <ng-content select=\"clr-dg-row-detail\"></ng-content>\n</ng-template>\n\n<ng-template #rowContent>\n <div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [class.datagrid-row-detail-open]=\"detailService.isRowOpen(item)\"\n >\n <div class=\"datagrid-row-sticky\">\n <!-- Sticky elements here -->\n <ng-container #stickyCells>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <div class=\"clr-checkbox-wrapper\">\n <input\n type=\"checkbox\"\n [ngModel]=\"selected\"\n (ngModelChange)=\"toggle($event)\"\n [id]=\"checkboxId\"\n [attr.disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-label]=\"clrDgRowAriaLabel\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"checkboxId\" class=\"clr-control-label clr-col-null\" (click)=\"clearRanges($event)\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.select}}</span>\n </label>\n </div>\n </div>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n >\n <!-- TODO: it would be better if in addition to the generic \"Select\" label, we could add aria-labelledby\n to label the radio by the first cell in the row (typically an id or name).\n It's pretty easy to label it with the whole row since we already have an id for it, but in most\n cases the row is far too long to serve as a label, the screenreader reads every single cell content. -->\n <input\n type=\"radio\"\n clrRadio\n [id]=\"radioId\"\n [name]=\"selection.id + '-radio'\"\n [value]=\"item\"\n [(ngModel)]=\"selection.currentSingle\"\n [checked]=\"selection.currentSingle === item\"\n [attr.disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-label]=\"clrDgRowAriaLabel\"\n />\n </div>\n <div\n *ngIf=\"rowActionService.hasActionableRow\"\n class=\"datagrid-row-actions datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-content select=\"clr-dg-action-overflow\"></ng-content>\n </div>\n <div\n *ngIf=\"globalExpandable.hasExpandableRow\"\n class=\"datagrid-expandable-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-container *ngIf=\"expand.expandable\">\n <button\n *ngIf=\"!expand.loading\"\n (click)=\"toggleExpand()\"\n type=\"button\"\n class=\"datagrid-expandable-caret-button\"\n [attr.aria-expanded]=\"expand.expanded\"\n [attr.aria-label]=\"expand.expanded ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-controls]=\"expandableId\"\n >\n <cds-icon\n shape=\"angle\"\n class=\"datagrid-expandable-caret-icon\"\n [attr.direction]=\"expand.expanded ? 'down' : 'right'\"\n [attr.title]=\"expand.expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n <clr-spinner *ngIf=\"expand.loading\" clrSmall>{{ commonStrings.keys.loading }}</clr-spinner>\n </ng-container>\n </div>\n <div *ngIf=\"detailService.enabled\" class=\"datagrid-detail-caret datagrid-fixed-column datagrid-cell\">\n <button\n (click)=\"detailService.toggle(item, detailButton)\"\n type=\"button\"\n #detailButton\n class=\"datagrid-detail-caret-button\"\n [class.is-open]=\"detailService.isRowOpen(item)\"\n [attr.aria-label]=\"detailService.isRowOpen(item) ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-expanded]=\"detailService.isOpen\"\n [attr.aria-controls]=\"detailService.id\"\n aria-haspopup=\"dialog\"\n >\n <cds-icon\n shape=\"angle-double\"\n [attr.direction]=\"detailService.isRowOpen(item) ? 'left' : 'right'\"\n class=\"datagrid-detail-caret-icon\"\n [attr.title]=\"detailService.isRowOpen(item) ? commonStrings.keys.close: commonStrings.keys.open\"\n ></cds-icon>\n </button>\n </div>\n </ng-container>\n <!-- placeholder for projecting other sticky cells as pinned-->\n </div>\n <div class=\"datagrid-row-scrollable\" [ngClass]=\"{'is-replaced': replaced && expanded}\">\n <div class=\"datagrid-scrolling-cells\">\n <ng-content select=\"clr-dg-cell\"></ng-content>\n <ng-container #scrollableCells></ng-container>\n </div>\n <!-- details here when replace, re-visit when sticky container is used for pinned cells -->\n <ng-template *ngIf=\"replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n <ng-template *ngIf=\"!replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n </div>\n </div>\n</ng-template>\n\n<ng-container #calculatedCells></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: 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: ClrRadio, selector: "[clrRadio]" }, { 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.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { 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: "component", type: ClrExpandableAnimation, selector: "clr-expandable-animation", inputs: ["clrExpandTrigger"] }, { kind: "component", type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }] });
|
|
15221
14097
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridRow, decorators: [{
|
|
15222
14098
|
type: Component,
|
|
15223
14099
|
args: [{ selector: 'clr-dg-row', host: {
|
|
@@ -15229,7 +14105,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
15229
14105
|
DatagridIfExpandService,
|
|
15230
14106
|
{ provide: IfExpandService, useExisting: DatagridIfExpandService },
|
|
15231
14107
|
{ provide: LoadingListener, useExisting: DatagridIfExpandService },
|
|
15232
|
-
], template: "<!--\n We need to wrap the #rowContent in label element if we are in rowSelectionMode.\n Clicking of that wrapper label will equate to clicking on the whole row, which triggers the checkbox to toggle.\n-->\n<label class=\"datagrid-row-clickable\" *ngIf=\"selection.rowSelectionMode\" (mousedown)=\"clearRanges($event)\">\n <clr-expandable-animation [clrExpandTrigger]=\"expandAnimationTrigger\" *ngIf=\"expand.expandable\">\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n </clr-expandable-animation>\n <ng-template [ngTemplateOutlet]=\"rowContent\" *ngIf=\"!expand.expandable\"></ng-template>\n</label>\n\n<clr-expandable-animation\n *ngIf=\"!selection.rowSelectionMode && expand.expandable\"\n [clrExpandTrigger]=\"expandAnimationTrigger\"\n>\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n</clr-expandable-animation>\n\n<ng-template *ngIf=\"!selection.rowSelectionMode && !expand.expandable\" [ngTemplateOutlet]=\"rowContent\"></ng-template>\n\n<!--\n We need the \"project into template\" hacks because we need this in 2 different places\n depending on whether the details replace the row or not.\n-->\n<ng-template #detail>\n <ng-content select=\"clr-dg-row-detail\"></ng-content>\n</ng-template>\n\n<ng-template #rowContent>\n <div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [class.datagrid-row-detail-open]=\"detailService.isRowOpen(item)\"\n >\n <div class=\"datagrid-row-sticky\">\n <!-- Sticky elements here -->\n <ng-container #stickyCells>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <div class=\"clr-checkbox-wrapper\">\n <input\n type=\"checkbox\"\n [ngModel]=\"selected\"\n (ngModelChange)=\"toggle($event)\"\n [id]=\"checkboxId\"\n [attr.disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-label]=\"clrDgRowAriaLabel\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"checkboxId\" class=\"clr-control-label clr-col-null\" (click)=\"clearRanges($event)\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.select}}</span>\n </label>\n </div>\n </div>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n >\n <!-- TODO: it would be better if in addition to the generic \"Select\" label, we could add aria-labelledby\n to label the radio by the first cell in the row (typically an id or name).\n It's pretty easy to label it with the whole row since we already have an id for it, but in most\n cases the row is far too long to serve as a label, the screenreader reads every single cell content. -->\n <input\n type=\"radio\"\n clrRadio\n [id]=\"radioId\"\n [name]=\"selection.id + '-radio'\"\n [value]=\"item\"\n [(ngModel)]=\"selection.currentSingle\"\n [checked]=\"selection.currentSingle === item\"\n [attr.disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-label]=\"clrDgRowAriaLabel\"\n />\n </div>\n <div\n *ngIf=\"rowActionService.hasActionableRow\"\n class=\"datagrid-row-actions datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-content select=\"clr-dg-action-overflow\"></ng-content>\n </div>\n <div\n *ngIf=\"globalExpandable.hasExpandableRow\"\n class=\"datagrid-expandable-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-container *ngIf=\"expand.expandable\">\n <button\n *ngIf=\"!expand.loading\"\n (click)=\"toggleExpand()\"\n type=\"button\"\n class=\"datagrid-expandable-caret-button\"\n [attr.aria-expanded]=\"expand.expanded\"\n [attr.aria-label]=\"expand.expanded ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-controls]=\"expandableId\"\n >\n <cds-icon\n shape=\"angle\"\n class=\"datagrid-expandable-caret-icon\"\n [attr.direction]=\"expand.expanded ? 'down' : 'right'\"\n [attr.title]=\"expand.expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n <clr-spinner *ngIf=\"expand.loading\" clrSmall>{{ commonStrings.keys.loading }}</clr-spinner>\n </ng-container>\n </div>\n <div *ngIf=\"detailService.enabled\" class=\"datagrid-detail-caret datagrid-fixed-column datagrid-cell\">\n <button\n (click)=\"detailService.toggle(item, detailButton)\"\n type=\"button\"\n #detailButton\n class=\"datagrid-detail-caret-button\"\n [class.is-open]=\"detailService.isRowOpen(item)\"\n [attr.aria-label]=\"detailService.isRowOpen(item) ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-expanded]=\"detailService.isOpen\"\n [attr.aria-controls]=\"detailService.id\"\n aria-haspopup=\"dialog\"\n >\n <cds-icon\n shape=\"angle-double\"\n [attr.direction]=\"detailService.isRowOpen(item) ? 'left' : 'right'\"\n class=\"datagrid-detail-caret-icon\"\n [attr.title]=\"detailService.isRowOpen(item) ? commonStrings.keys.close: commonStrings.keys.open\"\n ></cds-icon>\n </button>\n </div>\n </ng-container>\n <!-- placeholder for projecting other sticky cells as pinned-->\n </div>\n <div class=\"datagrid-row-scrollable\" [ngClass]=\"{'is-replaced': replaced && expanded}\">\n <div class=\"datagrid-scrolling-cells\">\n <ng-content select=\"clr-dg-cell\"></ng-content>\n <ng-container #scrollableCells></ng-container>\n </div>\n <!-- details here when replace, re-visit when sticky container is used for pinned cells -->\n <ng-template *ngIf=\"replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n <ng-template *ngIf=\"!replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n </div>\n </div>\n</ng-template>\n\n<ng-container #calculatedCells></ng-container>\n" }]
|
|
14108
|
+
], template: "<!--\n We need to wrap the #rowContent in label element if we are in rowSelectionMode.\n Clicking of that wrapper label will equate to clicking on the whole row, which triggers the checkbox to toggle.\n-->\n<label class=\"datagrid-row-clickable clr-col-null\" *ngIf=\"selection.rowSelectionMode\" (mousedown)=\"clearRanges($event)\">\n <clr-expandable-animation [clrExpandTrigger]=\"expandAnimationTrigger\" *ngIf=\"expand.expandable\">\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n </clr-expandable-animation>\n <ng-template [ngTemplateOutlet]=\"rowContent\" *ngIf=\"!expand.expandable\"></ng-template>\n</label>\n\n<clr-expandable-animation\n *ngIf=\"!selection.rowSelectionMode && expand.expandable\"\n [clrExpandTrigger]=\"expandAnimationTrigger\"\n>\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n</clr-expandable-animation>\n\n<ng-template *ngIf=\"!selection.rowSelectionMode && !expand.expandable\" [ngTemplateOutlet]=\"rowContent\"></ng-template>\n\n<!--\n We need the \"project into template\" hacks because we need this in 2 different places\n depending on whether the details replace the row or not.\n-->\n<ng-template #detail>\n <ng-content select=\"clr-dg-row-detail\"></ng-content>\n</ng-template>\n\n<ng-template #rowContent>\n <div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [class.datagrid-row-detail-open]=\"detailService.isRowOpen(item)\"\n >\n <div class=\"datagrid-row-sticky\">\n <!-- Sticky elements here -->\n <ng-container #stickyCells>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <div class=\"clr-checkbox-wrapper\">\n <input\n type=\"checkbox\"\n [ngModel]=\"selected\"\n (ngModelChange)=\"toggle($event)\"\n [id]=\"checkboxId\"\n [attr.disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-label]=\"clrDgRowAriaLabel\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"checkboxId\" class=\"clr-control-label clr-col-null\" (click)=\"clearRanges($event)\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.select}}</span>\n </label>\n </div>\n </div>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n >\n <!-- TODO: it would be better if in addition to the generic \"Select\" label, we could add aria-labelledby\n to label the radio by the first cell in the row (typically an id or name).\n It's pretty easy to label it with the whole row since we already have an id for it, but in most\n cases the row is far too long to serve as a label, the screenreader reads every single cell content. -->\n <input\n type=\"radio\"\n clrRadio\n [id]=\"radioId\"\n [name]=\"selection.id + '-radio'\"\n [value]=\"item\"\n [(ngModel)]=\"selection.currentSingle\"\n [checked]=\"selection.currentSingle === item\"\n [attr.disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-label]=\"clrDgRowAriaLabel\"\n />\n </div>\n <div\n *ngIf=\"rowActionService.hasActionableRow\"\n class=\"datagrid-row-actions datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-content select=\"clr-dg-action-overflow\"></ng-content>\n </div>\n <div\n *ngIf=\"globalExpandable.hasExpandableRow\"\n class=\"datagrid-expandable-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-container *ngIf=\"expand.expandable\">\n <button\n *ngIf=\"!expand.loading\"\n (click)=\"toggleExpand()\"\n type=\"button\"\n class=\"datagrid-expandable-caret-button\"\n [attr.aria-expanded]=\"expand.expanded\"\n [attr.aria-label]=\"expand.expanded ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-controls]=\"expandableId\"\n >\n <cds-icon\n shape=\"angle\"\n class=\"datagrid-expandable-caret-icon\"\n [attr.direction]=\"expand.expanded ? 'down' : 'right'\"\n [attr.title]=\"expand.expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n <clr-spinner *ngIf=\"expand.loading\" clrSmall>{{ commonStrings.keys.loading }}</clr-spinner>\n </ng-container>\n </div>\n <div *ngIf=\"detailService.enabled\" class=\"datagrid-detail-caret datagrid-fixed-column datagrid-cell\">\n <button\n (click)=\"detailService.toggle(item, detailButton)\"\n type=\"button\"\n #detailButton\n class=\"datagrid-detail-caret-button\"\n [class.is-open]=\"detailService.isRowOpen(item)\"\n [attr.aria-label]=\"detailService.isRowOpen(item) ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-expanded]=\"detailService.isOpen\"\n [attr.aria-controls]=\"detailService.id\"\n aria-haspopup=\"dialog\"\n >\n <cds-icon\n shape=\"angle-double\"\n [attr.direction]=\"detailService.isRowOpen(item) ? 'left' : 'right'\"\n class=\"datagrid-detail-caret-icon\"\n [attr.title]=\"detailService.isRowOpen(item) ? commonStrings.keys.close: commonStrings.keys.open\"\n ></cds-icon>\n </button>\n </div>\n </ng-container>\n <!-- placeholder for projecting other sticky cells as pinned-->\n </div>\n <div class=\"datagrid-row-scrollable\" [ngClass]=\"{'is-replaced': replaced && expanded}\">\n <div class=\"datagrid-scrolling-cells\">\n <ng-content select=\"clr-dg-cell\"></ng-content>\n <ng-container #scrollableCells></ng-container>\n </div>\n <!-- details here when replace, re-visit when sticky container is used for pinned cells -->\n <ng-template *ngIf=\"replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n <ng-template *ngIf=\"!replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n </div>\n </div>\n</ng-template>\n\n<ng-container #calculatedCells></ng-container>\n" }]
|
|
15233
14109
|
}], ctorParameters: function () {
|
|
15234
14110
|
return [{ type: Selection }, { type: RowActionService }, { type: ExpandableRowsCount }, { type: DatagridIfExpandService }, { type: DetailService }, { type: DisplayModeService }, { type: i0.ViewContainerRef }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: ClrCommonStringsService }, { type: Items }, { type: undefined, decorators: [{
|
|
15235
14111
|
type: Inject,
|
|
@@ -16032,13 +14908,13 @@ ClrDatagridActionOverflow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.
|
|
|
16032
14908
|
[attr.aria-hidden]="!open"
|
|
16033
14909
|
[attr.id]="popoverId"
|
|
16034
14910
|
clrKeyFocus
|
|
16035
|
-
|
|
14911
|
+
cdkTrapFocus
|
|
16036
14912
|
(click)="closeOverflowContent($event)"
|
|
16037
14913
|
*clrPopoverContent="open; at: smartPosition; outsideClickToClose: true; scrollToClose: true"
|
|
16038
14914
|
>
|
|
16039
14915
|
<ng-content></ng-content>
|
|
16040
14916
|
</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"] }
|
|
14917
|
+
`, 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
14918
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridActionOverflow, decorators: [{
|
|
16043
14919
|
type: Component,
|
|
16044
14920
|
args: [{
|
|
@@ -16066,7 +14942,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
16066
14942
|
[attr.aria-hidden]="!open"
|
|
16067
14943
|
[attr.id]="popoverId"
|
|
16068
14944
|
clrKeyFocus
|
|
16069
|
-
|
|
14945
|
+
cdkTrapFocus
|
|
16070
14946
|
(click)="closeOverflowContent($event)"
|
|
16071
14947
|
*clrPopoverContent="open; at: smartPosition; outsideClickToClose: true; scrollToClose: true"
|
|
16072
14948
|
>
|
|
@@ -16260,22 +15136,21 @@ ClrDatagridColumnToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
|
|
|
16260
15136
|
<button
|
|
16261
15137
|
role="button"
|
|
16262
15138
|
type="button"
|
|
16263
|
-
class="btn btn-sm
|
|
15139
|
+
class="btn btn-sm column-toggle--action"
|
|
16264
15140
|
clrPopoverAnchor
|
|
16265
15141
|
clrPopoverOpenCloseButton
|
|
16266
15142
|
[attr.aria-controls]="popoverId"
|
|
16267
15143
|
[attr.aria-owns]="popoverId"
|
|
16268
15144
|
[attr.aria-expanded]="openState"
|
|
16269
15145
|
>
|
|
16270
|
-
|
|
16271
|
-
<span class="clr-sr-only">{{ commonStrings.keys.pickColumns }}</span>
|
|
15146
|
+
{{ commonStrings.keys.pickColumns }}
|
|
16272
15147
|
</button>
|
|
16273
15148
|
<div
|
|
16274
15149
|
class="column-switch"
|
|
16275
15150
|
role="dialog"
|
|
16276
15151
|
[attr.aria-label]="commonStrings.keys.showColumnsMenuDescription"
|
|
16277
15152
|
[id]="popoverId"
|
|
16278
|
-
|
|
15153
|
+
cdkTrapFocus
|
|
16279
15154
|
*clrPopoverContent="openState; at: smartPosition; outsideClickToClose: true; scrollToClose: true"
|
|
16280
15155
|
>
|
|
16281
15156
|
<div class="switch-header">
|
|
@@ -16317,7 +15192,7 @@ ClrDatagridColumnToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
|
|
|
16317
15192
|
</clr-dg-column-toggle-button>
|
|
16318
15193
|
</div>
|
|
16319
15194
|
</div>
|
|
16320
|
-
`, 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:
|
|
15195
|
+
`, 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"] }] });
|
|
16321
15196
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridColumnToggle, decorators: [{
|
|
16322
15197
|
type: Component,
|
|
16323
15198
|
args: [{
|
|
@@ -16326,22 +15201,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
16326
15201
|
<button
|
|
16327
15202
|
role="button"
|
|
16328
15203
|
type="button"
|
|
16329
|
-
class="btn btn-sm
|
|
15204
|
+
class="btn btn-sm column-toggle--action"
|
|
16330
15205
|
clrPopoverAnchor
|
|
16331
15206
|
clrPopoverOpenCloseButton
|
|
16332
15207
|
[attr.aria-controls]="popoverId"
|
|
16333
15208
|
[attr.aria-owns]="popoverId"
|
|
16334
15209
|
[attr.aria-expanded]="openState"
|
|
16335
15210
|
>
|
|
16336
|
-
|
|
16337
|
-
<span class="clr-sr-only">{{ commonStrings.keys.pickColumns }}</span>
|
|
15211
|
+
{{ commonStrings.keys.pickColumns }}
|
|
16338
15212
|
</button>
|
|
16339
15213
|
<div
|
|
16340
15214
|
class="column-switch"
|
|
16341
15215
|
role="dialog"
|
|
16342
15216
|
[attr.aria-label]="commonStrings.keys.showColumnsMenuDescription"
|
|
16343
15217
|
[id]="popoverId"
|
|
16344
|
-
|
|
15218
|
+
cdkTrapFocus
|
|
16345
15219
|
*clrPopoverContent="openState; at: smartPosition; outsideClickToClose: true; scrollToClose: true"
|
|
16346
15220
|
>
|
|
16347
15221
|
<div class="switch-header">
|
|
@@ -16470,7 +15344,8 @@ class ClrDatagridDetail {
|
|
|
16470
15344
|
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 });
|
|
16471
15345
|
ClrDatagridDetail.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrDatagridDetail, selector: "clr-dg-detail", host: { listeners: { "document:keyup.esc": "closeCheck()" }, properties: { "class.datagrid-detail-pane": "true" } }, queries: [{ propertyName: "header", first: true, predicate: ClrDatagridDetailHeader, descendants: true }], ngImport: i0, template: `
|
|
16472
15346
|
<div
|
|
16473
|
-
|
|
15347
|
+
cdkTrapFocus
|
|
15348
|
+
[cdkTrapFocusAutoCapture]="true"
|
|
16474
15349
|
class="datagrid-detail-pane-content"
|
|
16475
15350
|
*ngIf="detailService.isOpen"
|
|
16476
15351
|
role="dialog"
|
|
@@ -16482,7 +15357,7 @@ ClrDatagridDetail.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
|
|
|
16482
15357
|
<ng-content></ng-content>
|
|
16483
15358
|
<div class="clr-sr-only">{{ commonStrings.keys.detailPaneEnd }}</div>
|
|
16484
15359
|
</div>
|
|
16485
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type:
|
|
15360
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]" }] });
|
|
16486
15361
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridDetail, decorators: [{
|
|
16487
15362
|
type: Component,
|
|
16488
15363
|
args: [{
|
|
@@ -16490,11 +15365,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
16490
15365
|
host: {
|
|
16491
15366
|
'[class.datagrid-detail-pane]': 'true',
|
|
16492
15367
|
},
|
|
16493
|
-
// We put the *ngIf on the
|
|
15368
|
+
// We put the *ngIf on the cdkTrapFocus so it doesn't always exist on the page
|
|
16494
15369
|
// have to test for presence of header for aria-describedby because it was causing unit tests to crash
|
|
16495
15370
|
template: `
|
|
16496
15371
|
<div
|
|
16497
|
-
|
|
15372
|
+
cdkTrapFocus
|
|
15373
|
+
[cdkTrapFocusAutoCapture]="true"
|
|
16498
15374
|
class="datagrid-detail-pane-content"
|
|
16499
15375
|
*ngIf="detailService.isOpen"
|
|
16500
15376
|
role="dialog"
|
|
@@ -16622,252 +15498,28 @@ function fade(opacity = 1) {
|
|
|
16622
15498
|
* This software is released under MIT license.
|
|
16623
15499
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16624
15500
|
*/
|
|
16625
|
-
function fadeSlide(direction) {
|
|
16626
|
-
let transform = null;
|
|
16627
|
-
if (direction === 'up') {
|
|
16628
|
-
transform = 'translate(0, 25%)';
|
|
16629
|
-
}
|
|
16630
|
-
else if (direction === 'down') {
|
|
16631
|
-
transform = 'translate(0, -25%)';
|
|
16632
|
-
}
|
|
16633
|
-
else if (direction === 'left') {
|
|
16634
|
-
transform = 'translate(25%, 0)';
|
|
16635
|
-
}
|
|
16636
|
-
else if (direction === 'right') {
|
|
16637
|
-
transform = 'translate(-25%, 0)';
|
|
16638
|
-
}
|
|
16639
|
-
else {
|
|
16640
|
-
throw new Error('Unknown direction ' + direction + ' for slide animation.');
|
|
16641
|
-
}
|
|
16642
|
-
return [
|
|
16643
|
-
transition('void => *', [style({ opacity: 0, transform: transform }), animate(defaultAnimationTiming)]),
|
|
16644
|
-
transition('* => void', [animate(defaultAnimationTiming, style({ opacity: 0, transform: transform }))]),
|
|
16645
|
-
];
|
|
16646
|
-
}
|
|
16647
|
-
|
|
16648
|
-
/*
|
|
16649
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16650
|
-
* This software is released under MIT license.
|
|
16651
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16652
|
-
*/
|
|
16653
|
-
|
|
16654
|
-
/*
|
|
16655
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16656
|
-
* This software is released under MIT license.
|
|
16657
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16658
|
-
*/
|
|
16659
|
-
function slide(direction) {
|
|
16660
|
-
let transform = null;
|
|
16661
|
-
if (direction === 'up') {
|
|
16662
|
-
transform = 'translate(0, 25%)';
|
|
16663
|
-
}
|
|
16664
|
-
else if (direction === 'down') {
|
|
16665
|
-
transform = 'translate(0, -25%)';
|
|
16666
|
-
}
|
|
16667
|
-
else if (direction === 'left') {
|
|
16668
|
-
transform = 'translate(25%, 0)';
|
|
16669
|
-
}
|
|
16670
|
-
else if (direction === 'right') {
|
|
16671
|
-
transform = 'translate(-25%, 0)';
|
|
16672
|
-
}
|
|
16673
|
-
else {
|
|
16674
|
-
throw new Error('Unknown direction ' + direction + ' for slide animation.');
|
|
16675
|
-
}
|
|
16676
|
-
return [
|
|
16677
|
-
transition('void => *', [style({ transform: transform }), animate(defaultAnimationTiming)]),
|
|
16678
|
-
transition('* => void', [animate(defaultAnimationTiming, style({ transform: transform }))]),
|
|
16679
|
-
];
|
|
16680
|
-
}
|
|
16681
|
-
|
|
16682
|
-
/*
|
|
16683
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16684
|
-
* This software is released under MIT license.
|
|
16685
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16686
|
-
*/
|
|
16687
|
-
|
|
16688
|
-
/*
|
|
16689
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16690
|
-
* This software is released under MIT license.
|
|
16691
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16692
|
-
*/
|
|
16693
|
-
|
|
16694
|
-
/*
|
|
16695
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16696
|
-
* This software is released under MIT license.
|
|
16697
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16698
|
-
*/
|
|
16699
|
-
|
|
16700
|
-
/*
|
|
16701
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16702
|
-
* This software is released under MIT license.
|
|
16703
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16704
|
-
*/
|
|
16705
|
-
|
|
16706
|
-
/*
|
|
16707
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16708
|
-
* This software is released under MIT license.
|
|
16709
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16710
|
-
*/
|
|
16711
|
-
|
|
16712
|
-
/*
|
|
16713
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16714
|
-
* This software is released under MIT license.
|
|
16715
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16716
|
-
*/
|
|
16717
|
-
var ClrAriaLivePoliteness;
|
|
16718
|
-
(function (ClrAriaLivePoliteness) {
|
|
16719
|
-
ClrAriaLivePoliteness["off"] = "off";
|
|
16720
|
-
ClrAriaLivePoliteness["polite"] = "polite";
|
|
16721
|
-
ClrAriaLivePoliteness["assertive"] = "assertive";
|
|
16722
|
-
})(ClrAriaLivePoliteness || (ClrAriaLivePoliteness = {}));
|
|
16723
|
-
/**
|
|
16724
|
-
* Time in milliseconds before inserting the content into the container
|
|
16725
|
-
*/
|
|
16726
|
-
const ARIA_LIVE_TICK = 100;
|
|
16727
|
-
/**
|
|
16728
|
-
* @deprecated
|
|
16729
|
-
*
|
|
16730
|
-
* -- ClrAriaLiveService is deprecated in 5.0 to be removed in 6.0 --
|
|
16731
|
-
* Please consider using the LiveAnnouncer in the Angular Material CDK
|
|
16732
|
-
* if your project needs this functionality.
|
|
16733
|
-
* More info: https://material.angular.io/cdk/a11y/overview#example-1
|
|
16734
|
-
*
|
|
16735
|
-
* This service handle `aria-live` accessibility attribute. The issue is that you need
|
|
16736
|
-
* to have the DOM Element with attribute `aria-live` before you could insert content
|
|
16737
|
-
* and SR (Screen Reader) pick the change and announce it.
|
|
16738
|
-
*
|
|
16739
|
-
* ```typescript
|
|
16740
|
-
* import { ClrAriaLiveService } from 'src/clr-angular/utils/a11y/aria-live.service';
|
|
16741
|
-
*
|
|
16742
|
-
* @Component({
|
|
16743
|
-
* selector: 'clr-demo-component',
|
|
16744
|
-
* providers: [ClrAriaLiveService],
|
|
16745
|
-
* template: `
|
|
16746
|
-
* <ng-content></ng-content>
|
|
16747
|
-
* `,
|
|
16748
|
-
* })
|
|
16749
|
-
* export class DemoComponent {
|
|
16750
|
-
* constructor(ariaLiveService: ClrAriaLiveService) {}
|
|
16751
|
-
*
|
|
16752
|
-
* public actionThatWillTriggerChange() {
|
|
16753
|
-
* this.ariaLiveService.announce('message that I want to announce to SR');
|
|
16754
|
-
* }
|
|
16755
|
-
* }
|
|
16756
|
-
* ```
|
|
16757
|
-
*
|
|
16758
|
-
*/
|
|
16759
|
-
class ClrAriaLiveService {
|
|
16760
|
-
constructor(ngZone, _document, platformId) {
|
|
16761
|
-
this.ngZone = ngZone;
|
|
16762
|
-
this.platformId = platformId;
|
|
16763
|
-
this._id = `clr-aria-live-element-${uniqueIdFactory()}`;
|
|
16764
|
-
this.document = _document;
|
|
16765
|
-
}
|
|
16766
|
-
/**
|
|
16767
|
-
* get access to the internal HTML `id` that gonna be used for the AriaLive container.
|
|
16768
|
-
* @return ID of the DOM Element as string.
|
|
16769
|
-
*/
|
|
16770
|
-
get id() {
|
|
16771
|
-
return this._id;
|
|
16772
|
-
}
|
|
16773
|
-
/**
|
|
16774
|
-
* Append text content inside the AriaLive Container. This method will check if the
|
|
16775
|
-
* DOM Element is existing if not it will create one for us and the will apply the text.
|
|
16776
|
-
*
|
|
16777
|
-
* ```typescript
|
|
16778
|
-
* this.ariaLiveService.announce(this.el.nativeElement);
|
|
16779
|
-
* // or
|
|
16780
|
-
* this.ariaLiveService.announce('Message to announce to SR');
|
|
16781
|
-
* ```
|
|
16782
|
-
*
|
|
16783
|
-
* @remark
|
|
16784
|
-
* When second argument is `AriaLivePoliteness.off` we won't create aria container or update it.
|
|
16785
|
-
* The reason for that is that we don't want to do additional work if the SR will ignore it.
|
|
16786
|
-
*
|
|
16787
|
-
* @param message - This could be simple string or HTMLElement
|
|
16788
|
-
* @param politeness - 'polite', 'assertive' or 'off'
|
|
16789
|
-
*/
|
|
16790
|
-
announce(message, politeness = ClrAriaLivePoliteness.polite) {
|
|
16791
|
-
if (politeness === ClrAriaLivePoliteness.off) {
|
|
16792
|
-
return;
|
|
16793
|
-
}
|
|
16794
|
-
if (!this.ariaLiveElement && isPlatformBrowser(this.platformId)) {
|
|
16795
|
-
this.ariaLiveElement = this.createContainer();
|
|
16796
|
-
}
|
|
16797
|
-
message = typeof message !== 'string' && isPlatformBrowser(this.platformId) ? message.textContent : message;
|
|
16798
|
-
// when there is no message do NOTHING!
|
|
16799
|
-
if (!message) {
|
|
16800
|
-
return;
|
|
16801
|
-
}
|
|
16802
|
-
this.ariaLiveElement.setAttribute('aria-live', politeness);
|
|
16803
|
-
// This 100ms timeout is necessary for some browser + screen-reader combinations:
|
|
16804
|
-
// - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout.
|
|
16805
|
-
// - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) message won't be read a
|
|
16806
|
-
// second time without clearing and then using a non-zero delay.
|
|
16807
|
-
// (using JAWS 17 at time of this writing).
|
|
16808
|
-
this.ngZone.runOutsideAngular(() => {
|
|
16809
|
-
// This clearTimeout will stop all older messages from announcing
|
|
16810
|
-
// in the case where the messages are comming too fast we gonna try to append only
|
|
16811
|
-
// the last one. That's what the SR will try to do anyway.
|
|
16812
|
-
clearTimeout(this.previousTimeout);
|
|
16813
|
-
this.previousTimeout = setTimeout(() => {
|
|
16814
|
-
this.ariaLiveElement.textContent = message;
|
|
16815
|
-
}, ARIA_LIVE_TICK);
|
|
16816
|
-
});
|
|
16817
|
-
}
|
|
16818
|
-
/**
|
|
16819
|
-
* onDestroy life cycle - must stop all active setTimeouts and remove the AriaLive
|
|
16820
|
-
* container from the document.
|
|
16821
|
-
*/
|
|
16822
|
-
ngOnDestroy() {
|
|
16823
|
-
clearTimeout(this.previousTimeout);
|
|
16824
|
-
if (isPlatformBrowser(this.platformId) && this.ariaLiveElement) {
|
|
16825
|
-
this.document.body.removeChild(this.ariaLiveElement);
|
|
16826
|
-
this.ariaLiveElement = null;
|
|
16827
|
-
}
|
|
16828
|
-
}
|
|
16829
|
-
/**
|
|
16830
|
-
* Create AriaLive DOM element as a last child of the document.
|
|
16831
|
-
* After the element is created, we gonna apply Clarity class to hide it from
|
|
16832
|
-
* the screen and set the `aria-live` politness.
|
|
16833
|
-
*
|
|
16834
|
-
* `clr-sr-only` is the CSS class that is used to hide the element from the screen.
|
|
16835
|
-
*
|
|
16836
|
-
* @remark
|
|
16837
|
-
* Calling this method multiple times will create multiple DOM Elements, that
|
|
16838
|
-
* won't be tracked and will be GC after the service is destroyed.
|
|
16839
|
-
*
|
|
16840
|
-
* @return AriaLive container as HTMLElement
|
|
16841
|
-
*
|
|
16842
|
-
*/
|
|
16843
|
-
createContainer() {
|
|
16844
|
-
const ariaLiveElement = this.document.createElement('div');
|
|
16845
|
-
ariaLiveElement.setAttribute('id', this.id);
|
|
16846
|
-
// Use clarity screen reader class to hide the dom element
|
|
16847
|
-
// and fix the scrollbar shake
|
|
16848
|
-
ariaLiveElement.classList.add('clr-sr-only');
|
|
16849
|
-
ariaLiveElement.setAttribute('aria-atomic', 'true');
|
|
16850
|
-
ariaLiveElement.setAttribute('aria-live', ClrAriaLivePoliteness.polite);
|
|
16851
|
-
this.document.body.appendChild(ariaLiveElement);
|
|
16852
|
-
return ariaLiveElement;
|
|
16853
|
-
}
|
|
16854
|
-
}
|
|
16855
|
-
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 });
|
|
16856
|
-
ClrAriaLiveService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrAriaLiveService, providedIn: 'root' });
|
|
16857
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrAriaLiveService, decorators: [{
|
|
16858
|
-
type: Injectable,
|
|
16859
|
-
args: [{
|
|
16860
|
-
providedIn: 'root',
|
|
16861
|
-
}]
|
|
16862
|
-
}], ctorParameters: function () {
|
|
16863
|
-
return [{ type: i0.NgZone }, { type: undefined, decorators: [{
|
|
16864
|
-
type: Inject,
|
|
16865
|
-
args: [DOCUMENT]
|
|
16866
|
-
}] }, { type: undefined, decorators: [{
|
|
16867
|
-
type: Inject,
|
|
16868
|
-
args: [PLATFORM_ID]
|
|
16869
|
-
}] }];
|
|
16870
|
-
} });
|
|
15501
|
+
function fadeSlide(direction) {
|
|
15502
|
+
let transform = null;
|
|
15503
|
+
if (direction === 'up') {
|
|
15504
|
+
transform = 'translate(0, 25%)';
|
|
15505
|
+
}
|
|
15506
|
+
else if (direction === 'down') {
|
|
15507
|
+
transform = 'translate(0, -25%)';
|
|
15508
|
+
}
|
|
15509
|
+
else if (direction === 'left') {
|
|
15510
|
+
transform = 'translate(25%, 0)';
|
|
15511
|
+
}
|
|
15512
|
+
else if (direction === 'right') {
|
|
15513
|
+
transform = 'translate(-25%, 0)';
|
|
15514
|
+
}
|
|
15515
|
+
else {
|
|
15516
|
+
throw new Error('Unknown direction ' + direction + ' for slide animation.');
|
|
15517
|
+
}
|
|
15518
|
+
return [
|
|
15519
|
+
transition('void => *', [style({ opacity: 0, transform: transform }), animate(defaultAnimationTiming)]),
|
|
15520
|
+
transition('* => void', [animate(defaultAnimationTiming, style({ opacity: 0, transform: transform }))]),
|
|
15521
|
+
];
|
|
15522
|
+
}
|
|
16871
15523
|
|
|
16872
15524
|
/*
|
|
16873
15525
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -16880,6 +15532,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
16880
15532
|
* This software is released under MIT license.
|
|
16881
15533
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16882
15534
|
*/
|
|
15535
|
+
function slide(direction) {
|
|
15536
|
+
let transform = null;
|
|
15537
|
+
if (direction === 'up') {
|
|
15538
|
+
transform = 'translate(0, 25%)';
|
|
15539
|
+
}
|
|
15540
|
+
else if (direction === 'down') {
|
|
15541
|
+
transform = 'translate(0, -25%)';
|
|
15542
|
+
}
|
|
15543
|
+
else if (direction === 'left') {
|
|
15544
|
+
transform = 'translate(25%, 0)';
|
|
15545
|
+
}
|
|
15546
|
+
else if (direction === 'right') {
|
|
15547
|
+
transform = 'translate(-25%, 0)';
|
|
15548
|
+
}
|
|
15549
|
+
else {
|
|
15550
|
+
throw new Error('Unknown direction ' + direction + ' for slide animation.');
|
|
15551
|
+
}
|
|
15552
|
+
return [
|
|
15553
|
+
transition('void => *', [style({ transform: transform }), animate(defaultAnimationTiming)]),
|
|
15554
|
+
transition('* => void', [animate(defaultAnimationTiming, style({ transform: transform }))]),
|
|
15555
|
+
];
|
|
15556
|
+
}
|
|
16883
15557
|
|
|
16884
15558
|
/*
|
|
16885
15559
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -16910,95 +15584,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
16910
15584
|
* This software is released under MIT license.
|
|
16911
15585
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16912
15586
|
*/
|
|
16913
|
-
class ForTypeAheadProvider {
|
|
16914
|
-
constructor() {
|
|
16915
|
-
this._textContentChange = new Subject();
|
|
16916
|
-
}
|
|
16917
|
-
get textContentChange() {
|
|
16918
|
-
return this._textContentChange.asObservable();
|
|
16919
|
-
}
|
|
16920
|
-
get textContent() {
|
|
16921
|
-
return this._textContent;
|
|
16922
|
-
}
|
|
16923
|
-
set textContent(value) {
|
|
16924
|
-
this._textContent = value;
|
|
16925
|
-
this._textContentChange.next(value);
|
|
16926
|
-
}
|
|
16927
|
-
}
|
|
16928
|
-
ForTypeAheadProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ForTypeAheadProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
16929
|
-
ForTypeAheadProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ForTypeAheadProvider });
|
|
16930
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ForTypeAheadProvider, decorators: [{
|
|
16931
|
-
type: Injectable
|
|
16932
|
-
}] });
|
|
16933
15587
|
|
|
16934
15588
|
/*
|
|
16935
15589
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16936
15590
|
* This software is released under MIT license.
|
|
16937
15591
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16938
15592
|
*/
|
|
16939
|
-
// The purpose of this directive is to provide the text content of its host element
|
|
16940
|
-
// or text content that's passed to its input.
|
|
16941
|
-
// This directive must stay optional. So do not embed this directive in a component module by default.
|
|
16942
|
-
// If users need to use this directive, they should import its module on their side.
|
|
16943
|
-
class ClrForTypeAhead {
|
|
16944
|
-
constructor(el, forTypeAheadProvider) {
|
|
16945
|
-
this.el = el;
|
|
16946
|
-
this.forTypeAheadProvider = forTypeAheadProvider;
|
|
16947
|
-
}
|
|
16948
|
-
trimAndLowerCase(value) {
|
|
16949
|
-
return value.toLocaleLowerCase().trim();
|
|
16950
|
-
}
|
|
16951
|
-
get content() {
|
|
16952
|
-
return this._content;
|
|
16953
|
-
}
|
|
16954
|
-
set content(value) {
|
|
16955
|
-
if (value) {
|
|
16956
|
-
this._content = this.trimAndLowerCase(value);
|
|
16957
|
-
this.forTypeAheadProvider.textContent = this._content;
|
|
16958
|
-
}
|
|
16959
|
-
else {
|
|
16960
|
-
this._content = this.trimAndLowerCase(this.el.nativeElement.textContent);
|
|
16961
|
-
this.forTypeAheadProvider.textContent = this._content;
|
|
16962
|
-
}
|
|
16963
|
-
}
|
|
16964
|
-
ngOnInit() {
|
|
16965
|
-
if (!this._content) {
|
|
16966
|
-
this._content = this.trimAndLowerCase(this.el.nativeElement.textContent);
|
|
16967
|
-
this.forTypeAheadProvider.textContent = this._content;
|
|
16968
|
-
}
|
|
16969
|
-
}
|
|
16970
|
-
}
|
|
16971
|
-
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 });
|
|
16972
|
-
ClrForTypeAhead.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: ClrForTypeAhead, selector: "[clrForTypeAhead]", inputs: { content: ["clrForTypeAhead", "content"] }, providers: [ForTypeAheadProvider], ngImport: i0 });
|
|
16973
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrForTypeAhead, decorators: [{
|
|
16974
|
-
type: Directive,
|
|
16975
|
-
args: [{
|
|
16976
|
-
providers: [ForTypeAheadProvider],
|
|
16977
|
-
selector: '[clrForTypeAhead]',
|
|
16978
|
-
}]
|
|
16979
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ForTypeAheadProvider }]; }, propDecorators: { content: [{
|
|
16980
|
-
type: Input,
|
|
16981
|
-
args: ['clrForTypeAhead']
|
|
16982
|
-
}] } });
|
|
16983
15593
|
|
|
16984
15594
|
/*
|
|
16985
15595
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16986
15596
|
* This software is released under MIT license.
|
|
16987
15597
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16988
15598
|
*/
|
|
16989
|
-
class ClrForTypeAheadModule {
|
|
16990
|
-
}
|
|
16991
|
-
ClrForTypeAheadModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrForTypeAheadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
16992
|
-
ClrForTypeAheadModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: ClrForTypeAheadModule, declarations: [ClrForTypeAhead], imports: [CommonModule], exports: [ClrForTypeAhead] });
|
|
16993
|
-
ClrForTypeAheadModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrForTypeAheadModule, imports: [CommonModule] });
|
|
16994
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrForTypeAheadModule, decorators: [{
|
|
16995
|
-
type: NgModule,
|
|
16996
|
-
args: [{
|
|
16997
|
-
imports: [CommonModule],
|
|
16998
|
-
declarations: [ClrForTypeAhead],
|
|
16999
|
-
exports: [ClrForTypeAhead],
|
|
17000
|
-
}]
|
|
17001
|
-
}] });
|
|
17002
15599
|
|
|
17003
15600
|
/*
|
|
17004
15601
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -17431,9 +16028,14 @@ class ClrDatagridPagination {
|
|
|
17431
16028
|
}
|
|
17432
16029
|
return middlePages;
|
|
17433
16030
|
}
|
|
16031
|
+
verifyCurrentPage(event) {
|
|
16032
|
+
const parsed = parseInt(event.target.value, 10);
|
|
16033
|
+
if (parsed !== this.page.current) {
|
|
16034
|
+
event.target.value = this.page.current;
|
|
16035
|
+
}
|
|
16036
|
+
}
|
|
17434
16037
|
/**
|
|
17435
|
-
* We only update the pagination's current page on
|
|
17436
|
-
* when they press enter.
|
|
16038
|
+
* We only update the pagination's current page on enter.
|
|
17437
16039
|
*/
|
|
17438
16040
|
updateCurrentPage(event) {
|
|
17439
16041
|
const parsed = parseInt(event.target.value, 10);
|
|
@@ -17494,7 +16096,7 @@ ClrDatagridPagination.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
|
17494
16096
|
[size]="page.last.toString().length"
|
|
17495
16097
|
[value]="page.current"
|
|
17496
16098
|
(keydown.enter)="updateCurrentPage($event)"
|
|
17497
|
-
(blur)="
|
|
16099
|
+
(blur)="verifyCurrentPage($event)"
|
|
17498
16100
|
[attr.aria-label]="commonStrings.keys.currentPage"
|
|
17499
16101
|
/>
|
|
17500
16102
|
<ng-template #readOnly>
|
|
@@ -17594,7 +16196,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
17594
16196
|
[size]="page.last.toString().length"
|
|
17595
16197
|
[value]="page.current"
|
|
17596
16198
|
(keydown.enter)="updateCurrentPage($event)"
|
|
17597
|
-
(blur)="
|
|
16199
|
+
(blur)="verifyCurrentPage($event)"
|
|
17598
16200
|
[attr.aria-label]="commonStrings.keys.currentPage"
|
|
17599
16201
|
/>
|
|
17600
16202
|
<ng-template #readOnly>
|
|
@@ -17715,20 +16317,20 @@ class ClrDatagridRowDetail {
|
|
|
17715
16317
|
}
|
|
17716
16318
|
get beginningOfExpandableContentAriaText() {
|
|
17717
16319
|
return (this._beginningOfExpandableContentAriaText ||
|
|
17718
|
-
`${this.commonStrings.keys.
|
|
17719
|
-
${this.commonStrings.keys.
|
|
16320
|
+
`${this.commonStrings.keys.datagridExpandableBeginningOf}
|
|
16321
|
+
${this.commonStrings.keys.datagridExpandableRowContent}`);
|
|
17720
16322
|
}
|
|
17721
16323
|
get endOfExpandableContentAriaText() {
|
|
17722
16324
|
return (this._endOfExpandableContentAriaText ||
|
|
17723
|
-
`${this.commonStrings.keys.
|
|
17724
|
-
${this.commonStrings.keys.
|
|
16325
|
+
`${this.commonStrings.keys.datagridExpandableEndOf}
|
|
16326
|
+
${this.commonStrings.keys.datagridExpandableRowContent}`);
|
|
17725
16327
|
}
|
|
17726
16328
|
}
|
|
17727
16329
|
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 });
|
|
17728
16330
|
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: `
|
|
17729
16331
|
<div class="clr-sr-only">
|
|
17730
16332
|
{{ beginningOfExpandableContentAriaText }}
|
|
17731
|
-
{{ commonStrings.keys.
|
|
16333
|
+
{{ commonStrings.keys.datagridExpandableRowsHelperText }}
|
|
17732
16334
|
</div>
|
|
17733
16335
|
<ng-content></ng-content>
|
|
17734
16336
|
<div class="clr-sr-only">{{ endOfExpandableContentAriaText }}</div>
|
|
@@ -17737,11 +16339,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
17737
16339
|
type: Component,
|
|
17738
16340
|
args: [{
|
|
17739
16341
|
selector: 'clr-dg-row-detail',
|
|
17740
|
-
// TODO: @deprecated - dategrid* keys are deprecated. Remove in v14.
|
|
17741
16342
|
template: `
|
|
17742
16343
|
<div class="clr-sr-only">
|
|
17743
16344
|
{{ beginningOfExpandableContentAriaText }}
|
|
17744
|
-
{{ commonStrings.keys.
|
|
16345
|
+
{{ commonStrings.keys.datagridExpandableRowsHelperText }}
|
|
17745
16346
|
</div>
|
|
17746
16347
|
<ng-content></ng-content>
|
|
17747
16348
|
<div class="clr-sr-only">{{ endOfExpandableContentAriaText }}</div>
|
|
@@ -18363,6 +16964,8 @@ ClrDatagridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versi
|
|
|
18363
16964
|
DatagridStringFilter,
|
|
18364
16965
|
DatagridNumericFilter
|
|
18365
16966
|
], imports: [CommonModule,
|
|
16967
|
+
CdkDragModule,
|
|
16968
|
+
CdkTrapFocusModule,
|
|
18366
16969
|
ClrIconModule,
|
|
18367
16970
|
ClrFormsModule,
|
|
18368
16971
|
FormsModule,
|
|
@@ -18370,11 +16973,9 @@ ClrDatagridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versi
|
|
|
18370
16973
|
ClrConditionalModule,
|
|
18371
16974
|
ClrOutsideClickModule,
|
|
18372
16975
|
ClrExpandableAnimationModule,
|
|
18373
|
-
ClrDragAndDropModule,
|
|
18374
16976
|
ClrSpinnerModule,
|
|
18375
16977
|
ClrPopoverModuleNext,
|
|
18376
16978
|
ClrKeyFocusModule,
|
|
18377
|
-
ClrFocusTrapModule,
|
|
18378
16979
|
ClrFocusOnViewInitModule], exports: [
|
|
18379
16980
|
// Core
|
|
18380
16981
|
ClrDatagrid,
|
|
@@ -18418,6 +17019,8 @@ ClrDatagridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versi
|
|
|
18418
17019
|
DatagridNumericFilter
|
|
18419
17020
|
] });
|
|
18420
17021
|
ClrDatagridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridModule, imports: [CommonModule,
|
|
17022
|
+
CdkDragModule,
|
|
17023
|
+
CdkTrapFocusModule,
|
|
18421
17024
|
ClrIconModule,
|
|
18422
17025
|
ClrFormsModule,
|
|
18423
17026
|
FormsModule,
|
|
@@ -18425,17 +17028,17 @@ ClrDatagridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", versi
|
|
|
18425
17028
|
ClrConditionalModule,
|
|
18426
17029
|
ClrOutsideClickModule,
|
|
18427
17030
|
ClrExpandableAnimationModule,
|
|
18428
|
-
ClrDragAndDropModule,
|
|
18429
17031
|
ClrSpinnerModule,
|
|
18430
17032
|
ClrPopoverModuleNext,
|
|
18431
17033
|
ClrKeyFocusModule,
|
|
18432
|
-
ClrFocusTrapModule,
|
|
18433
17034
|
ClrFocusOnViewInitModule] });
|
|
18434
17035
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDatagridModule, decorators: [{
|
|
18435
17036
|
type: NgModule,
|
|
18436
17037
|
args: [{
|
|
18437
17038
|
imports: [
|
|
18438
17039
|
CommonModule,
|
|
17040
|
+
CdkDragModule,
|
|
17041
|
+
CdkTrapFocusModule,
|
|
18439
17042
|
ClrIconModule,
|
|
18440
17043
|
ClrFormsModule,
|
|
18441
17044
|
FormsModule,
|
|
@@ -18443,11 +17046,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
18443
17046
|
ClrConditionalModule,
|
|
18444
17047
|
ClrOutsideClickModule,
|
|
18445
17048
|
ClrExpandableAnimationModule,
|
|
18446
|
-
ClrDragAndDropModule,
|
|
18447
17049
|
ClrSpinnerModule,
|
|
18448
17050
|
ClrPopoverModuleNext,
|
|
18449
17051
|
ClrKeyFocusModule,
|
|
18450
|
-
ClrFocusTrapModule,
|
|
18451
17052
|
ClrFocusOnViewInitModule,
|
|
18452
17053
|
],
|
|
18453
17054
|
declarations: [CLR_DATAGRID_DIRECTIVES],
|
|
@@ -18596,7 +17197,7 @@ class ClrStackBlock {
|
|
|
18596
17197
|
}
|
|
18597
17198
|
}
|
|
18598
17199
|
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 });
|
|
18599
|
-
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"]
|
|
17200
|
+
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: `
|
|
18600
17201
|
<!-- The 'preventDefault' for the space keydown event prevents the page
|
|
18601
17202
|
from scrolling when a stack block is toggled via the space key. -->
|
|
18602
17203
|
<div
|
|
@@ -18717,12 +17318,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
18717
17318
|
}], ariaLevel: [{
|
|
18718
17319
|
type: Input,
|
|
18719
17320
|
args: ['clrStackViewLevel']
|
|
18720
|
-
}], ariaSetsize: [{
|
|
18721
|
-
type: Input,
|
|
18722
|
-
args: ['clrStackViewSetsize']
|
|
18723
|
-
}], ariaPosinset: [{
|
|
18724
|
-
type: Input,
|
|
18725
|
-
args: ['clrStackViewPosinset']
|
|
18726
17321
|
}], onStackLabelFocus: [{
|
|
18727
17322
|
type: HostBinding,
|
|
18728
17323
|
args: ['class.on-focus']
|
|
@@ -18757,30 +17352,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
18757
17352
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18758
17353
|
*/
|
|
18759
17354
|
class ClrStackView {
|
|
18760
|
-
constructor() {
|
|
18761
|
-
/**
|
|
18762
|
-
* Undocumented experimental feature: inline editing.
|
|
18763
|
-
*/
|
|
18764
|
-
this.editable = false;
|
|
18765
|
-
this.save = new EventEmitter(false);
|
|
18766
|
-
this._editMode = false;
|
|
18767
|
-
this.editingChange = new EventEmitter(false);
|
|
18768
|
-
}
|
|
18769
|
-
get editing() {
|
|
18770
|
-
return this.editable && this._editMode;
|
|
18771
|
-
}
|
|
18772
|
-
set editing(value) {
|
|
18773
|
-
if (this.editable) {
|
|
18774
|
-
this._editMode = value;
|
|
18775
|
-
this.editingChange.emit(value);
|
|
18776
|
-
if (!value) {
|
|
18777
|
-
this.save.emit(null);
|
|
18778
|
-
}
|
|
18779
|
-
}
|
|
18780
|
-
}
|
|
18781
17355
|
}
|
|
18782
17356
|
ClrStackView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackView, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
18783
|
-
ClrStackView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrStackView, selector: "clr-stack-view",
|
|
17357
|
+
ClrStackView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrStackView, selector: "clr-stack-view", ngImport: i0, template: `
|
|
18784
17358
|
<ng-content select="clr-stack-header"></ng-content>
|
|
18785
17359
|
<div class="stack-view"><ng-content></ng-content></div>
|
|
18786
17360
|
`, isInline: true, styles: [":host{display:block}\n"] });
|
|
@@ -18790,10 +17364,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
18790
17364
|
<ng-content select="clr-stack-header"></ng-content>
|
|
18791
17365
|
<div class="stack-view"><ng-content></ng-content></div>
|
|
18792
17366
|
`, styles: [":host{display:block}\n"] }]
|
|
18793
|
-
}]
|
|
18794
|
-
type: Output,
|
|
18795
|
-
args: ['clrStackSave']
|
|
18796
|
-
}] } });
|
|
17367
|
+
}] });
|
|
18797
17368
|
|
|
18798
17369
|
/*
|
|
18799
17370
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -18812,19 +17383,9 @@ ClrStackHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version
|
|
|
18812
17383
|
|
|
18813
17384
|
<span class="stack-actions">
|
|
18814
17385
|
<ng-content select=".stack-action"></ng-content>
|
|
18815
|
-
<!-- Undocumented experimental feature: inline editing. -->
|
|
18816
|
-
<button
|
|
18817
|
-
*ngIf="stackView.editable"
|
|
18818
|
-
class="stack-action btn btn-sm btn-link"
|
|
18819
|
-
(click)="stackView.editing = !stackView.editing"
|
|
18820
|
-
type="button"
|
|
18821
|
-
>
|
|
18822
|
-
Edit
|
|
18823
|
-
</button>
|
|
18824
|
-
<!-- End of undocumented experimental feature. -->
|
|
18825
17386
|
</span>
|
|
18826
17387
|
</div>
|
|
18827
|
-
`, isInline: true, styles: [":host{display:block}\n"]
|
|
17388
|
+
`, isInline: true, styles: [":host{display:block}\n"] });
|
|
18828
17389
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackHeader, decorators: [{
|
|
18829
17390
|
type: Component,
|
|
18830
17391
|
args: [{ selector: 'clr-stack-header', template: `
|
|
@@ -18833,116 +17394,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
18833
17394
|
|
|
18834
17395
|
<span class="stack-actions">
|
|
18835
17396
|
<ng-content select=".stack-action"></ng-content>
|
|
18836
|
-
<!-- Undocumented experimental feature: inline editing. -->
|
|
18837
|
-
<button
|
|
18838
|
-
*ngIf="stackView.editable"
|
|
18839
|
-
class="stack-action btn btn-sm btn-link"
|
|
18840
|
-
(click)="stackView.editing = !stackView.editing"
|
|
18841
|
-
type="button"
|
|
18842
|
-
>
|
|
18843
|
-
Edit
|
|
18844
|
-
</button>
|
|
18845
|
-
<!-- End of undocumented experimental feature. -->
|
|
18846
17397
|
</span>
|
|
18847
17398
|
</div>
|
|
18848
17399
|
`, styles: [":host{display:block}\n"] }]
|
|
18849
17400
|
}], ctorParameters: function () { return [{ type: ClrStackView }]; } });
|
|
18850
17401
|
|
|
18851
|
-
/*
|
|
18852
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18853
|
-
* This software is released under MIT license.
|
|
18854
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18855
|
-
*/
|
|
18856
|
-
class StackControl {
|
|
18857
|
-
constructor(stackView) {
|
|
18858
|
-
this.stackView = stackView;
|
|
18859
|
-
this.modelChange = new EventEmitter(false);
|
|
18860
|
-
// Make the ClrStackView editable, since it contains a StackControl
|
|
18861
|
-
this.stackView.editable = true;
|
|
18862
|
-
this.subscription = this.stackView.editingChange.subscribe((editing) => {
|
|
18863
|
-
// Edit mode was closed
|
|
18864
|
-
if (!editing) {
|
|
18865
|
-
this.modelChange.emit(this.model);
|
|
18866
|
-
}
|
|
18867
|
-
});
|
|
18868
|
-
}
|
|
18869
|
-
ngOnDestroy() {
|
|
18870
|
-
this.subscription.unsubscribe();
|
|
18871
|
-
}
|
|
18872
|
-
}
|
|
18873
|
-
StackControl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: StackControl, deps: [{ token: ClrStackView }], target: i0.ɵɵFactoryTarget.Directive });
|
|
18874
|
-
StackControl.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: StackControl, ngImport: i0 });
|
|
18875
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: StackControl, decorators: [{
|
|
18876
|
-
type: Directive
|
|
18877
|
-
}], ctorParameters: function () { return [{ type: ClrStackView }]; } });
|
|
18878
|
-
|
|
18879
|
-
/*
|
|
18880
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18881
|
-
* This software is released under MIT license.
|
|
18882
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18883
|
-
*/
|
|
18884
|
-
class ClrStackInput extends StackControl {
|
|
18885
|
-
constructor(stackView) {
|
|
18886
|
-
super(stackView);
|
|
18887
|
-
this.stackView = stackView;
|
|
18888
|
-
this.type = 'text';
|
|
18889
|
-
}
|
|
18890
|
-
}
|
|
18891
|
-
ClrStackInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackInput, deps: [{ token: ClrStackView }], target: i0.ɵɵFactoryTarget.Component });
|
|
18892
|
-
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: `
|
|
18893
|
-
<span *ngIf="!stackView.editing">{{ model }}</span>
|
|
18894
|
-
<input [type]="type" *ngIf="stackView.editing" [(ngModel)]="model" />
|
|
18895
|
-
`, 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"] }] });
|
|
18896
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackInput, decorators: [{
|
|
18897
|
-
type: Component,
|
|
18898
|
-
args: [{
|
|
18899
|
-
selector: 'clr-stack-input',
|
|
18900
|
-
inputs: ['model: clrModel', 'type'],
|
|
18901
|
-
outputs: ['modelChange: clrModelChange'],
|
|
18902
|
-
template: `
|
|
18903
|
-
<span *ngIf="!stackView.editing">{{ model }}</span>
|
|
18904
|
-
<input [type]="type" *ngIf="stackView.editing" [(ngModel)]="model" />
|
|
18905
|
-
`,
|
|
18906
|
-
}]
|
|
18907
|
-
}], ctorParameters: function () { return [{ type: ClrStackView }]; } });
|
|
18908
|
-
|
|
18909
|
-
/*
|
|
18910
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18911
|
-
* This software is released under MIT license.
|
|
18912
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18913
|
-
*/
|
|
18914
|
-
class ClrStackSelect extends StackControl {
|
|
18915
|
-
constructor(stackView) {
|
|
18916
|
-
super(stackView);
|
|
18917
|
-
this.stackView = stackView;
|
|
18918
|
-
}
|
|
18919
|
-
}
|
|
18920
|
-
ClrStackSelect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackSelect, deps: [{ token: ClrStackView }], target: i0.ɵɵFactoryTarget.Component });
|
|
18921
|
-
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: `
|
|
18922
|
-
<span *ngIf="!stackView.editing">{{ model }}</span>
|
|
18923
|
-
<div class="select" *ngIf="stackView.editing">
|
|
18924
|
-
<select [(ngModel)]="model">
|
|
18925
|
-
<ng-content></ng-content>
|
|
18926
|
-
</select>
|
|
18927
|
-
</div>
|
|
18928
|
-
`, 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"] }] });
|
|
18929
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackSelect, decorators: [{
|
|
18930
|
-
type: Component,
|
|
18931
|
-
args: [{
|
|
18932
|
-
selector: 'clr-stack-select',
|
|
18933
|
-
inputs: ['model: clrModel'],
|
|
18934
|
-
outputs: ['modelChange: clrModelChange'],
|
|
18935
|
-
template: `
|
|
18936
|
-
<span *ngIf="!stackView.editing">{{ model }}</span>
|
|
18937
|
-
<div class="select" *ngIf="stackView.editing">
|
|
18938
|
-
<select [(ngModel)]="model">
|
|
18939
|
-
<ng-content></ng-content>
|
|
18940
|
-
</select>
|
|
18941
|
-
</div>
|
|
18942
|
-
`,
|
|
18943
|
-
}]
|
|
18944
|
-
}], ctorParameters: function () { return [{ type: ClrStackView }]; } });
|
|
18945
|
-
|
|
18946
17402
|
/*
|
|
18947
17403
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
18948
17404
|
* This software is released under MIT license.
|
|
@@ -18955,14 +17411,6 @@ const CLR_STACK_VIEW_DIRECTIVES = [
|
|
|
18955
17411
|
ClrStackContentInput,
|
|
18956
17412
|
ClrStackViewLabel,
|
|
18957
17413
|
ClrStackViewCustomTags,
|
|
18958
|
-
/**
|
|
18959
|
-
* Undocumented experimental feature: inline editing.
|
|
18960
|
-
*/
|
|
18961
|
-
ClrStackInput,
|
|
18962
|
-
ClrStackSelect,
|
|
18963
|
-
/**
|
|
18964
|
-
* End of undocumented experimental feature.
|
|
18965
|
-
*/
|
|
18966
17414
|
];
|
|
18967
17415
|
class ClrStackViewModule {
|
|
18968
17416
|
constructor() {
|
|
@@ -18975,22 +17423,12 @@ ClrStackViewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", vers
|
|
|
18975
17423
|
ClrStackBlock,
|
|
18976
17424
|
ClrStackContentInput,
|
|
18977
17425
|
ClrStackViewLabel,
|
|
18978
|
-
ClrStackViewCustomTags,
|
|
18979
|
-
/**
|
|
18980
|
-
* Undocumented experimental feature: inline editing.
|
|
18981
|
-
*/
|
|
18982
|
-
ClrStackInput,
|
|
18983
|
-
ClrStackSelect], imports: [CommonModule, FormsModule, ClrIconModule, ClrExpandableAnimationModule], exports: [ClrStackView,
|
|
17426
|
+
ClrStackViewCustomTags], imports: [CommonModule, FormsModule, ClrIconModule, ClrExpandableAnimationModule], exports: [ClrStackView,
|
|
18984
17427
|
ClrStackHeader,
|
|
18985
17428
|
ClrStackBlock,
|
|
18986
17429
|
ClrStackContentInput,
|
|
18987
17430
|
ClrStackViewLabel,
|
|
18988
|
-
ClrStackViewCustomTags
|
|
18989
|
-
/**
|
|
18990
|
-
* Undocumented experimental feature: inline editing.
|
|
18991
|
-
*/
|
|
18992
|
-
ClrStackInput,
|
|
18993
|
-
ClrStackSelect] });
|
|
17431
|
+
ClrStackViewCustomTags] });
|
|
18994
17432
|
ClrStackViewModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackViewModule, imports: [CommonModule, FormsModule, ClrIconModule, ClrExpandableAnimationModule] });
|
|
18995
17433
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackViewModule, decorators: [{
|
|
18996
17434
|
type: NgModule,
|
|
@@ -19617,13 +18055,13 @@ const LVIEW_CONTEXT_INDEX = 8;
|
|
|
19617
18055
|
// then those keys are sent together in one request.
|
|
19618
18056
|
const TREE_TYPE_AHEAD_TIMEOUT = 200;
|
|
19619
18057
|
class ClrTreeNode {
|
|
19620
|
-
constructor(platformId, parent,
|
|
18058
|
+
constructor(platformId, parent, featuresService, expandService, commonStrings, focusManager, elementRef, injector) {
|
|
19621
18059
|
this.platformId = platformId;
|
|
19622
|
-
this.forTypeAheadProvider = forTypeAheadProvider;
|
|
19623
18060
|
this.featuresService = featuresService;
|
|
19624
18061
|
this.expandService = expandService;
|
|
19625
18062
|
this.commonStrings = commonStrings;
|
|
19626
18063
|
this.focusManager = focusManager;
|
|
18064
|
+
this.elementRef = elementRef;
|
|
19627
18065
|
this.STATES = ClrSelectedState;
|
|
19628
18066
|
this.skipEmitChange = false;
|
|
19629
18067
|
this.isModelLoading = false;
|
|
@@ -19703,6 +18141,9 @@ class ClrTreeNode {
|
|
|
19703
18141
|
set expanded(value) {
|
|
19704
18142
|
this.expandService.expanded = value;
|
|
19705
18143
|
}
|
|
18144
|
+
set clrForTypeAhead(value) {
|
|
18145
|
+
this._model.textContent = trimAndLowerCase(value || this.elementRef.nativeElement.textContent);
|
|
18146
|
+
}
|
|
19706
18147
|
ngOnInit() {
|
|
19707
18148
|
this._model.expanded = this.expanded;
|
|
19708
18149
|
this.subscriptions.push(this._model.selected.pipe(filter(() => !this.skipEmitChange)).subscribe(value => {
|
|
@@ -19722,14 +18163,14 @@ class ClrTreeNode {
|
|
|
19722
18163
|
this.subscriptions.push(this._model.loading$.pipe(debounceTime(0)).subscribe(isLoading => (this.isModelLoading = isLoading)));
|
|
19723
18164
|
}
|
|
19724
18165
|
ngAfterContentInit() {
|
|
19725
|
-
if (this.
|
|
19726
|
-
this._model.textContent = this.
|
|
19727
|
-
this.subscriptions.push(this.typeAheadKeyEvent.pipe(debounceTime(TREE_TYPE_AHEAD_TIMEOUT)).subscribe((bufferedKeys) => {
|
|
19728
|
-
this.focusManager.focusNodeStartsWith(bufferedKeys, this._model);
|
|
19729
|
-
// reset once bufferedKeys are used
|
|
19730
|
-
this.typeAheadKeyBuffer = '';
|
|
19731
|
-
}));
|
|
18166
|
+
if (!this._model.textContent) {
|
|
18167
|
+
this._model.textContent = trimAndLowerCase(this.elementRef.nativeElement.textContent);
|
|
19732
18168
|
}
|
|
18169
|
+
this.subscriptions.push(this.typeAheadKeyEvent.pipe(debounceTime(TREE_TYPE_AHEAD_TIMEOUT)).subscribe((bufferedKeys) => {
|
|
18170
|
+
this.focusManager.focusNodeStartsWith(bufferedKeys, this._model);
|
|
18171
|
+
// reset once bufferedKeys are used
|
|
18172
|
+
this.typeAheadKeyBuffer = '';
|
|
18173
|
+
}));
|
|
19733
18174
|
}
|
|
19734
18175
|
ngOnDestroy() {
|
|
19735
18176
|
this._model.destroy();
|
|
@@ -19851,8 +18292,8 @@ class ClrTreeNode {
|
|
|
19851
18292
|
}
|
|
19852
18293
|
}
|
|
19853
18294
|
}
|
|
19854
|
-
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:
|
|
19855
|
-
ClrTreeNode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrTreeNode, selector: "clr-tree-node", inputs: { selected: ["clrSelected", "selected"], expandable: ["clrExpandable", "expandable"], expanded: ["clrExpanded", "expanded"] }, outputs: { selectedChange: "clrSelectedChange", expandedChange: "clrExpandedChange" }, host: { properties: { "class.clr-tree-node": "true" } }, providers: [TREE_FEATURES_PROVIDER, IfExpandService, { provide: LoadingListener, useExisting: IfExpandService }], queries: [{ propertyName: "treeNodeLinkList", predicate: ClrTreeNodeLink }], viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div\n #contentContainer\n role=\"treeitem\"\n class=\"clr-tree-node-content-container\"\n tabindex=\"-1\"\n [attr.aria-expanded]=\"isExpandable() ? expanded : null\"\n [attr.aria-selected]=\"ariaSelected\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"broadcastFocusOnContainer()\"\n>\n <button\n *ngIf=\"isExpandable() && !isModelLoading && !expandService.loading\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"clr-treenode-caret\"\n (click)=\"expandService.toggle();\"\n (focus)=\"focusTreeNode()\"\n >\n <cds-icon\n class=\"clr-treenode-caret-icon\"\n shape=\"angle\"\n [attr.direction]=\"expandService.expanded ? 'down' : 'right'\"\n ></cds-icon>\n </button>\n <div class=\"clr-treenode-spinner-container\" *ngIf=\"expandService.loading || isModelLoading\">\n <span class=\"clr-treenode-spinner spinner\"></span>\n </div>\n <div class=\"clr-checkbox-wrapper clr-treenode-checkbox\" *ngIf=\"featuresService.selectable\">\n <input\n aria-hidden=\"true\"\n type=\"checkbox\"\n id=\"{{nodeId}}-check\"\n class=\"clr-checkbox\"\n [checked]=\"_model.selected.value === STATES.SELECTED\"\n [indeterminate]=\"_model.selected.value === STATES.INDETERMINATE\"\n (change)=\"_model.toggleSelection(featuresService.eager)\"\n (focus)=\"focusTreeNode()\"\n tabindex=\"-1\"\n />\n <label for=\"{{nodeId}}-check\" class=\"clr-control-label\"></label>\n </div>\n <div class=\"clr-treenode-content\" (mousedown)=\"focusTreeNode()\">\n <ng-content></ng-content>\n <div class=\"clr-sr-only\" *ngIf=\"featuresService.selectable || ariaSelected\">\n <span *ngIf=\"ariaSelected\"> selected</span>\n <span *ngIf=\"!ariaSelected\"> unselected</span>\n </div>\n </div>\n</div>\n<div\n class=\"clr-treenode-children\"\n [@toggleChildrenAnim]=\"expandService.expanded ? 'expanded' : 'collapsed'\"\n [attr.role]=\"isExpandable() && !featuresService.recursion ? 'group' : null\"\n>\n <ng-content select=\"clr-tree-node\"></ng-content>\n <ng-content select=\"[clrIfExpanded]\"></ng-content>\n <clr-recursive-children [parent]=\"_model\"></clr-recursive-children>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "component", type: RecursiveChildren, selector: "clr-recursive-children", inputs: ["parent", "children"] }], animations: [
|
|
18295
|
+
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 });
|
|
18296
|
+
ClrTreeNode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrTreeNode, selector: "clr-tree-node", inputs: { selected: ["clrSelected", "selected"], expandable: ["clrExpandable", "expandable"], expanded: ["clrExpanded", "expanded"], clrForTypeAhead: "clrForTypeAhead" }, outputs: { selectedChange: "clrSelectedChange", expandedChange: "clrExpandedChange" }, host: { properties: { "class.clr-tree-node": "true" } }, providers: [TREE_FEATURES_PROVIDER, IfExpandService, { provide: LoadingListener, useExisting: IfExpandService }], queries: [{ propertyName: "treeNodeLinkList", predicate: ClrTreeNodeLink }], viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div\n #contentContainer\n role=\"treeitem\"\n class=\"clr-tree-node-content-container\"\n tabindex=\"-1\"\n [attr.aria-expanded]=\"isExpandable() ? expanded : null\"\n [attr.aria-selected]=\"ariaSelected\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"broadcastFocusOnContainer()\"\n>\n <button\n *ngIf=\"isExpandable() && !isModelLoading && !expandService.loading\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"clr-treenode-caret\"\n (click)=\"expandService.toggle();\"\n (focus)=\"focusTreeNode()\"\n >\n <cds-icon\n class=\"clr-treenode-caret-icon\"\n shape=\"angle\"\n [attr.direction]=\"expandService.expanded ? 'down' : 'right'\"\n ></cds-icon>\n </button>\n <div class=\"clr-treenode-spinner-container\" *ngIf=\"expandService.loading || isModelLoading\">\n <span class=\"clr-treenode-spinner spinner\"></span>\n </div>\n <div class=\"clr-checkbox-wrapper clr-treenode-checkbox\" *ngIf=\"featuresService.selectable\">\n <input\n aria-hidden=\"true\"\n type=\"checkbox\"\n id=\"{{nodeId}}-check\"\n class=\"clr-checkbox\"\n [checked]=\"_model.selected.value === STATES.SELECTED\"\n [indeterminate]=\"_model.selected.value === STATES.INDETERMINATE\"\n (change)=\"_model.toggleSelection(featuresService.eager)\"\n (focus)=\"focusTreeNode()\"\n tabindex=\"-1\"\n />\n <label for=\"{{nodeId}}-check\" class=\"clr-control-label\"></label>\n </div>\n <div class=\"clr-treenode-content\" (mousedown)=\"focusTreeNode()\">\n <ng-content></ng-content>\n <div class=\"clr-sr-only\" *ngIf=\"featuresService.selectable || ariaSelected\">\n <span *ngIf=\"ariaSelected\"> selected</span>\n <span *ngIf=\"!ariaSelected\"> unselected</span>\n </div>\n </div>\n</div>\n<div\n class=\"clr-treenode-children\"\n [@toggleChildrenAnim]=\"expandService.expanded ? 'expanded' : 'collapsed'\"\n [attr.role]=\"isExpandable() && !featuresService.recursion ? 'group' : null\"\n>\n <ng-content select=\"clr-tree-node\"></ng-content>\n <ng-content select=\"[clrIfExpanded]\"></ng-content>\n <clr-recursive-children [parent]=\"_model\"></clr-recursive-children>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "component", type: RecursiveChildren, selector: "clr-recursive-children", inputs: ["parent", "children"] }], animations: [
|
|
19856
18297
|
trigger('toggleChildrenAnim', [
|
|
19857
18298
|
transition('collapsed => expanded', [style({ height: 0 }), animate(200, style({ height: '*' }))]),
|
|
19858
18299
|
transition('expanded => collapsed', [style({ height: '*' }), animate(200, style({ height: 0 }))]),
|
|
@@ -19880,11 +18321,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
19880
18321
|
type: Optional
|
|
19881
18322
|
}, {
|
|
19882
18323
|
type: SkipSelf
|
|
19883
|
-
}] }, { type:
|
|
19884
|
-
type: Optional
|
|
19885
|
-
}, {
|
|
19886
|
-
type: Self
|
|
19887
|
-
}] }, { type: TreeFeaturesService }, { type: IfExpandService }, { type: ClrCommonStringsService }, { type: TreeFocusManagerService }, { type: i0.Injector }];
|
|
18324
|
+
}] }, { type: TreeFeaturesService }, { type: IfExpandService }, { type: ClrCommonStringsService }, { type: TreeFocusManagerService }, { type: i0.ElementRef }, { type: i0.Injector }];
|
|
19888
18325
|
}, propDecorators: { selected: [{
|
|
19889
18326
|
type: Input,
|
|
19890
18327
|
args: ['clrSelected']
|
|
@@ -19897,6 +18334,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
19897
18334
|
}], expanded: [{
|
|
19898
18335
|
type: Input,
|
|
19899
18336
|
args: ['clrExpanded']
|
|
18337
|
+
}], clrForTypeAhead: [{
|
|
18338
|
+
type: Input,
|
|
18339
|
+
args: ['clrForTypeAhead']
|
|
19900
18340
|
}], expandedChange: [{
|
|
19901
18341
|
type: Output,
|
|
19902
18342
|
args: ['clrExpandedChange']
|
|
@@ -19907,6 +18347,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
19907
18347
|
type: ContentChildren,
|
|
19908
18348
|
args: [ClrTreeNodeLink, { descendants: false }]
|
|
19909
18349
|
}] } });
|
|
18350
|
+
function trimAndLowerCase(value) {
|
|
18351
|
+
return value.toLocaleLowerCase().trim();
|
|
18352
|
+
}
|
|
19910
18353
|
|
|
19911
18354
|
/*
|
|
19912
18355
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -20395,13 +18838,10 @@ const BASIC_FOCUSABLE_ITEM_PROVIDER = [
|
|
|
20395
18838
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
20396
18839
|
*/
|
|
20397
18840
|
class ClrDropdownItem {
|
|
20398
|
-
constructor(dropdown,
|
|
18841
|
+
constructor(dropdown, _dropdownService, focusableItem) {
|
|
20399
18842
|
this.dropdown = dropdown;
|
|
20400
|
-
this.el = el;
|
|
20401
18843
|
this._dropdownService = _dropdownService;
|
|
20402
|
-
this.renderer = renderer;
|
|
20403
18844
|
this.focusableItem = focusableItem;
|
|
20404
|
-
this.setByDeprecatedDisabled = false;
|
|
20405
18845
|
}
|
|
20406
18846
|
set disabled(value) {
|
|
20407
18847
|
// Empty string attribute evaluates to false but should disable the item, so we need to add a special case for it.
|
|
@@ -20410,17 +18850,6 @@ class ClrDropdownItem {
|
|
|
20410
18850
|
get disabled() {
|
|
20411
18851
|
return this.focusableItem.disabled;
|
|
20412
18852
|
}
|
|
20413
|
-
/*
|
|
20414
|
-
* @deprecated since 3.0, remove in 4.0. the presence of this attribute makes it not-focusable in IE11. Use [clrDisabled] input instead.
|
|
20415
|
-
*/
|
|
20416
|
-
set disabledDeprecated(value) {
|
|
20417
|
-
// Empty string attribute evaluates to false but should disable the item, so we need to add a special case for it.
|
|
20418
|
-
this.focusableItem.disabled = !!value || value === '';
|
|
20419
|
-
this.setByDeprecatedDisabled = true;
|
|
20420
|
-
}
|
|
20421
|
-
get disabledDeprecated() {
|
|
20422
|
-
return this.focusableItem.disabled;
|
|
20423
|
-
}
|
|
20424
18853
|
/**
|
|
20425
18854
|
* Let you overwrite the focusable auto increment id.
|
|
20426
18855
|
*/
|
|
@@ -20430,22 +18859,28 @@ class ClrDropdownItem {
|
|
|
20430
18859
|
get dropdownItemId() {
|
|
20431
18860
|
return this.focusableItem.id;
|
|
20432
18861
|
}
|
|
20433
|
-
ngAfterViewInit() {
|
|
20434
|
-
this.unlisten = this.renderer.listen(this.el.nativeElement, 'click', () => this.onDropdownItemClick());
|
|
20435
|
-
}
|
|
20436
18862
|
onDropdownItemClick() {
|
|
20437
|
-
|
|
20438
|
-
|
|
20439
|
-
|
|
18863
|
+
// Ensure that the dropdown is closed after custom dropdown item click event handlers have run.
|
|
18864
|
+
setTimeout(() => {
|
|
18865
|
+
if (this.dropdown.isMenuClosable && !this.disabled) {
|
|
18866
|
+
this._dropdownService.closeMenus();
|
|
18867
|
+
}
|
|
18868
|
+
});
|
|
20440
18869
|
}
|
|
20441
|
-
|
|
20442
|
-
|
|
20443
|
-
|
|
18870
|
+
onSpaceKeydown($event) {
|
|
18871
|
+
this.stopImmediatePropagationIfDisabled($event);
|
|
18872
|
+
}
|
|
18873
|
+
onEnterKeydown($event) {
|
|
18874
|
+
this.stopImmediatePropagationIfDisabled($event);
|
|
18875
|
+
}
|
|
18876
|
+
stopImmediatePropagationIfDisabled($event) {
|
|
18877
|
+
if (this.disabled) {
|
|
18878
|
+
$event.stopImmediatePropagation();
|
|
20444
18879
|
}
|
|
20445
18880
|
}
|
|
20446
18881
|
}
|
|
20447
|
-
ClrDropdownItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDropdownItem, deps: [{ token: ClrDropdown }, { token:
|
|
20448
|
-
ClrDropdownItem.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: ClrDropdownItem, selector: "[clrDropdownItem]", inputs: { disabled: ["clrDisabled", "disabled"],
|
|
18882
|
+
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 });
|
|
18883
|
+
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 });
|
|
20449
18884
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDropdownItem, decorators: [{
|
|
20450
18885
|
type: Directive,
|
|
20451
18886
|
args: [{
|
|
@@ -20455,20 +18890,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
20455
18890
|
'[class.dropdown-item]': 'true',
|
|
20456
18891
|
'[attr.role]': '"menuitem"',
|
|
20457
18892
|
'[attr.aria-disabled]': 'disabled',
|
|
20458
|
-
'[attr.disabled]': "(disabled && setByDeprecatedDisabled)? '' : null",
|
|
20459
18893
|
'[attr.id]': 'dropdownItemId',
|
|
20460
18894
|
},
|
|
20461
18895
|
providers: [BASIC_FOCUSABLE_ITEM_PROVIDER],
|
|
20462
18896
|
}]
|
|
20463
|
-
}], ctorParameters: function () { return [{ type: ClrDropdown }, { type:
|
|
18897
|
+
}], ctorParameters: function () { return [{ type: ClrDropdown }, { type: RootDropdownService }, { type: FocusableItem }]; }, propDecorators: { disabled: [{
|
|
20464
18898
|
type: Input,
|
|
20465
18899
|
args: ['clrDisabled']
|
|
20466
|
-
}], disabledDeprecated: [{
|
|
20467
|
-
type: Input,
|
|
20468
|
-
args: ['disabled']
|
|
20469
18900
|
}], dropdownItemId: [{
|
|
20470
18901
|
type: Input,
|
|
20471
18902
|
args: ['id']
|
|
18903
|
+
}], onDropdownItemClick: [{
|
|
18904
|
+
type: HostListener,
|
|
18905
|
+
args: ['click']
|
|
18906
|
+
}], onSpaceKeydown: [{
|
|
18907
|
+
type: HostListener,
|
|
18908
|
+
args: ['keydown.space', ['$event']]
|
|
18909
|
+
}], onEnterKeydown: [{
|
|
18910
|
+
type: HostListener,
|
|
18911
|
+
args: ['keydown.enter', ['$event']]
|
|
20472
18912
|
}] } });
|
|
20473
18913
|
|
|
20474
18914
|
/*
|
|
@@ -21973,143 +20413,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
21973
20413
|
}]
|
|
21974
20414
|
}], ctorParameters: function () { return [{ type: ResponsiveNavigationService }, { type: ClrCommonStringsService }]; } });
|
|
21975
20415
|
|
|
21976
|
-
/*
|
|
21977
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
21978
|
-
* This software is released under MIT license.
|
|
21979
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
21980
|
-
*/
|
|
21981
|
-
function refocusIfOutsideFocusTrapElement(focusedElement, focusTrapElement, elementToRefocus) {
|
|
21982
|
-
const focusTrapIsCurrent = FocusTrapTrackerService.getCurrent() === focusTrapElement;
|
|
21983
|
-
const elementToFocusIsOutsideFocusTrap = elementIsOutsideFocusTrapElement(focusedElement, focusTrapElement);
|
|
21984
|
-
if (focusTrapIsCurrent && elementToFocusIsOutsideFocusTrap) {
|
|
21985
|
-
elementToRefocus = elementToRefocus || focusTrapElement;
|
|
21986
|
-
elementToRefocus.focus();
|
|
21987
|
-
}
|
|
21988
|
-
else {
|
|
21989
|
-
focusedElement.focus();
|
|
21990
|
-
}
|
|
21991
|
-
}
|
|
21992
|
-
function elementIsOutsideFocusTrapElement(focusedElement, focusTrapElement) {
|
|
21993
|
-
if (focusedElement === focusTrapElement.topReboundElement ||
|
|
21994
|
-
focusedElement === focusTrapElement.bottomReboundElement) {
|
|
21995
|
-
return true;
|
|
21996
|
-
}
|
|
21997
|
-
const elementIsInFocusTrapLightDom = focusTrapElement.contains(focusedElement);
|
|
21998
|
-
if (elementIsInFocusTrapLightDom) {
|
|
21999
|
-
return false;
|
|
22000
|
-
}
|
|
22001
|
-
if (focusTrapElement !== null && focusTrapElement.contains(focusedElement)) {
|
|
22002
|
-
return false;
|
|
22003
|
-
}
|
|
22004
|
-
return true;
|
|
22005
|
-
}
|
|
22006
|
-
function createFocusTrapReboundElement(document) {
|
|
22007
|
-
const offScreenSpan = document.createElement('span');
|
|
22008
|
-
offScreenSpan.setAttribute('tabindex', '0');
|
|
22009
|
-
offScreenSpan.classList.add('offscreen-focus-rebounder');
|
|
22010
|
-
return offScreenSpan;
|
|
22011
|
-
}
|
|
22012
|
-
function addReboundElementsToFocusTrapElement(document, focusTrapElement) {
|
|
22013
|
-
if (focusTrapElement && !focusTrapElement.topReboundElement && !focusTrapElement.bottomReboundElement) {
|
|
22014
|
-
focusTrapElement.topReboundElement = createFocusTrapReboundElement(document);
|
|
22015
|
-
focusTrapElement.bottomReboundElement = createFocusTrapReboundElement(document);
|
|
22016
|
-
const parent = focusTrapElement.parentElement;
|
|
22017
|
-
const sibling = focusTrapElement.nextSibling;
|
|
22018
|
-
if (parent) {
|
|
22019
|
-
parent.insertBefore(focusTrapElement.topReboundElement, focusTrapElement);
|
|
22020
|
-
if (sibling) {
|
|
22021
|
-
parent.insertBefore(focusTrapElement.bottomReboundElement, sibling);
|
|
22022
|
-
}
|
|
22023
|
-
else {
|
|
22024
|
-
parent.appendChild(focusTrapElement.bottomReboundElement);
|
|
22025
|
-
}
|
|
22026
|
-
}
|
|
22027
|
-
}
|
|
22028
|
-
}
|
|
22029
|
-
function removeReboundElementsFromFocusTrapElement(focusTrapElement) {
|
|
22030
|
-
if (focusTrapElement) {
|
|
22031
|
-
const parent = focusTrapElement.parentElement;
|
|
22032
|
-
if (parent) {
|
|
22033
|
-
const topRebound = focusTrapElement.topReboundElement;
|
|
22034
|
-
const bottomRebound = focusTrapElement.bottomReboundElement;
|
|
22035
|
-
if (topRebound) {
|
|
22036
|
-
parent.removeChild(topRebound);
|
|
22037
|
-
}
|
|
22038
|
-
if (bottomRebound) {
|
|
22039
|
-
parent.removeChild(bottomRebound);
|
|
22040
|
-
}
|
|
22041
|
-
}
|
|
22042
|
-
// These are here to to make sure that we completely delete all traces of the removed DOM objects.
|
|
22043
|
-
delete focusTrapElement.topReboundElement;
|
|
22044
|
-
delete focusTrapElement.bottomReboundElement;
|
|
22045
|
-
}
|
|
22046
|
-
}
|
|
22047
|
-
// this helper exists to enable the focus trap class to handle vanilla html elements
|
|
22048
|
-
// it's primary concern is to keep TS happy.
|
|
22049
|
-
function castHtmlElementToFocusTrapElement(el) {
|
|
22050
|
-
return el;
|
|
22051
|
-
}
|
|
22052
|
-
class FocusTrap {
|
|
22053
|
-
constructor(renderer, injector, platformId, hostElement) {
|
|
22054
|
-
this.renderer = renderer;
|
|
22055
|
-
this.active = false;
|
|
22056
|
-
if (isPlatformBrowser(platformId)) {
|
|
22057
|
-
this._document = injector.get(DOCUMENT);
|
|
22058
|
-
}
|
|
22059
|
-
hostElement = castHtmlElementToFocusTrapElement(hostElement);
|
|
22060
|
-
if (!hostElement.focusTrapId) {
|
|
22061
|
-
hostElement.focusTrapId = createId();
|
|
22062
|
-
}
|
|
22063
|
-
this.focusTrapElement = hostElement;
|
|
22064
|
-
}
|
|
22065
|
-
enableFocusTrap() {
|
|
22066
|
-
const fte = this.focusTrapElement;
|
|
22067
|
-
const firstFocusElement = fte.querySelector('[cds-first-focus]');
|
|
22068
|
-
const activeEl = this._document.activeElement;
|
|
22069
|
-
if (FocusTrapTrackerService.getCurrent() === fte) {
|
|
22070
|
-
throw new Error('Focus trap is already enabled for this instance.');
|
|
22071
|
-
}
|
|
22072
|
-
this.firstFocusElement = firstFocusElement || this.focusTrapElement;
|
|
22073
|
-
addReboundElementsToFocusTrapElement(this._document, fte);
|
|
22074
|
-
if (!isFocusable(fte)) {
|
|
22075
|
-
fte.setAttribute('tabindex', '-1');
|
|
22076
|
-
}
|
|
22077
|
-
if (activeEl && isHTMLElement(activeEl)) {
|
|
22078
|
-
this.previousFocus = activeEl;
|
|
22079
|
-
}
|
|
22080
|
-
FocusTrapTrackerService.setCurrent(fte);
|
|
22081
|
-
// setTimeout here is required for Safari which may try to set focus on
|
|
22082
|
-
// element before it is visible...
|
|
22083
|
-
const focusTimer = setTimeout(() => {
|
|
22084
|
-
this.firstFocusElement.focus();
|
|
22085
|
-
clearTimeout(focusTimer);
|
|
22086
|
-
}, 10);
|
|
22087
|
-
this.onFocusInEvent = this.onFocusIn.bind(this);
|
|
22088
|
-
this.unlisten = this.renderer.listen(this._document, 'focusin', this.onFocusInEvent);
|
|
22089
|
-
this.active = true;
|
|
22090
|
-
}
|
|
22091
|
-
removeFocusTrap() {
|
|
22092
|
-
if (this.unlisten) {
|
|
22093
|
-
this.unlisten();
|
|
22094
|
-
}
|
|
22095
|
-
removeReboundElementsFromFocusTrapElement(this.focusTrapElement);
|
|
22096
|
-
this.renderer.removeAttribute(this.focusTrapElement, 'tabindex');
|
|
22097
|
-
FocusTrapTrackerService.activatePreviousCurrent();
|
|
22098
|
-
this.active = false;
|
|
22099
|
-
if (this.previousFocus) {
|
|
22100
|
-
this.previousFocus.focus();
|
|
22101
|
-
}
|
|
22102
|
-
}
|
|
22103
|
-
onFocusIn(event) {
|
|
22104
|
-
refocusIfOutsideFocusTrapElement(event.composedPath()[0], this.focusTrapElement, this.firstFocusElement);
|
|
22105
|
-
}
|
|
22106
|
-
}
|
|
22107
|
-
FocusTrap.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusTrap, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable });
|
|
22108
|
-
FocusTrap.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusTrap });
|
|
22109
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusTrap, decorators: [{
|
|
22110
|
-
type: Injectable
|
|
22111
|
-
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.Injector }, { type: undefined }, { type: undefined }]; } });
|
|
22112
|
-
|
|
22113
20416
|
/*
|
|
22114
20417
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
22115
20418
|
* This software is released under MIT license.
|
|
@@ -22128,11 +20431,22 @@ const createCdsCloseButton = (document, ariaLabel) => {
|
|
|
22128
20431
|
cdsCloseButton.className = 'clr-nav-close';
|
|
22129
20432
|
return cdsCloseButton;
|
|
22130
20433
|
};
|
|
22131
|
-
class
|
|
22132
|
-
|
|
22133
|
-
|
|
20434
|
+
class StandaloneCdkTrapFocus extends CdkTrapFocus {
|
|
20435
|
+
}
|
|
20436
|
+
StandaloneCdkTrapFocus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: StandaloneCdkTrapFocus, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
20437
|
+
StandaloneCdkTrapFocus.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: StandaloneCdkTrapFocus, isStandalone: true, usesInheritance: true, ngImport: i0 });
|
|
20438
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: StandaloneCdkTrapFocus, decorators: [{
|
|
20439
|
+
type: Directive,
|
|
20440
|
+
args: [{
|
|
20441
|
+
standalone: true,
|
|
20442
|
+
}]
|
|
20443
|
+
}] });
|
|
20444
|
+
class ClrNavLevel {
|
|
20445
|
+
constructor(platformId, cdkTrapFocus, responsiveNavService, elementRef, renderer, injector) {
|
|
20446
|
+
this.cdkTrapFocus = cdkTrapFocus;
|
|
22134
20447
|
this.responsiveNavService = responsiveNavService;
|
|
22135
20448
|
this.elementRef = elementRef;
|
|
20449
|
+
this.renderer = renderer;
|
|
22136
20450
|
this._isOpen = false;
|
|
22137
20451
|
if (isPlatformBrowser(platformId)) {
|
|
22138
20452
|
this._document = injector.get(DOCUMENT);
|
|
@@ -22152,6 +20466,7 @@ class ClrNavLevel extends FocusTrap {
|
|
|
22152
20466
|
.subscribe(() => this.close()));
|
|
22153
20467
|
}
|
|
22154
20468
|
ngOnInit() {
|
|
20469
|
+
this.cdkTrapFocus.enabled = false;
|
|
22155
20470
|
if (!this.closeButtonAriaLabel) {
|
|
22156
20471
|
this.closeButtonAriaLabel =
|
|
22157
20472
|
this._level === ResponsiveNavCodes.NAV_LEVEL_1
|
|
@@ -22209,14 +20524,14 @@ class ClrNavLevel extends FocusTrap {
|
|
|
22209
20524
|
open() {
|
|
22210
20525
|
this._isOpen = true;
|
|
22211
20526
|
this.showNavigation();
|
|
22212
|
-
this.
|
|
20527
|
+
this.cdkTrapFocus.enabled = true;
|
|
22213
20528
|
this.showCloseButton();
|
|
22214
20529
|
this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_OPEN, this.level);
|
|
22215
20530
|
}
|
|
22216
20531
|
close() {
|
|
22217
20532
|
this._isOpen = false;
|
|
22218
20533
|
this.hideNavigation();
|
|
22219
|
-
this.
|
|
20534
|
+
this.cdkTrapFocus.enabled = false;
|
|
22220
20535
|
this.hideCloseButton();
|
|
22221
20536
|
this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_CLOSE, this.level);
|
|
22222
20537
|
}
|
|
@@ -22261,18 +20576,19 @@ class ClrNavLevel extends FocusTrap {
|
|
|
22261
20576
|
this._subscription.unsubscribe();
|
|
22262
20577
|
}
|
|
22263
20578
|
}
|
|
22264
|
-
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 });
|
|
22265
|
-
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)" } },
|
|
20579
|
+
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 });
|
|
20580
|
+
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 });
|
|
22266
20581
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrNavLevel, decorators: [{
|
|
22267
20582
|
type: Directive,
|
|
22268
20583
|
args: [{
|
|
22269
20584
|
selector: '[clr-nav-level]',
|
|
20585
|
+
hostDirectives: [StandaloneCdkTrapFocus],
|
|
22270
20586
|
}]
|
|
22271
20587
|
}], ctorParameters: function () {
|
|
22272
20588
|
return [{ type: undefined, decorators: [{
|
|
22273
20589
|
type: Inject,
|
|
22274
20590
|
args: [PLATFORM_ID]
|
|
22275
|
-
}] }, { type: ResponsiveNavigationService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }];
|
|
20591
|
+
}] }, { type: StandaloneCdkTrapFocus }, { type: ResponsiveNavigationService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }];
|
|
22276
20592
|
}, propDecorators: { _level: [{
|
|
22277
20593
|
type: Input,
|
|
22278
20594
|
args: ['clr-nav-level']
|
|
@@ -23277,7 +21593,6 @@ class ClrVerticalNavGroup {
|
|
|
23277
21593
|
this._navService = _navService;
|
|
23278
21594
|
this.commonStrings = commonStrings;
|
|
23279
21595
|
this.wasExpanded = false;
|
|
23280
|
-
this.groupLabel = this.commonStrings.keys.verticalNavGroupToggle;
|
|
23281
21596
|
this.expandedChange = new EventEmitter(true);
|
|
23282
21597
|
this._subscriptions = [];
|
|
23283
21598
|
this._expandAnimationState = COLLAPSED_STATE;
|
|
@@ -23387,7 +21702,7 @@ class ClrVerticalNavGroup {
|
|
|
23387
21702
|
}
|
|
23388
21703
|
}
|
|
23389
21704
|
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 });
|
|
23390
|
-
ClrVerticalNavGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrVerticalNavGroup, selector: "clr-vertical-nav-group", inputs: {
|
|
21705
|
+
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: [
|
|
23391
21706
|
trigger('clrExpand', [
|
|
23392
21707
|
state(EXPANDED_STATE, style({ height: '*' })),
|
|
23393
21708
|
state(COLLAPSED_STATE, style({ height: 0, visibility: 'hidden' })),
|
|
@@ -23402,13 +21717,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
23402
21717
|
state(COLLAPSED_STATE, style({ height: 0, visibility: 'hidden' })),
|
|
23403
21718
|
transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, animate('0.2s ease-in-out')),
|
|
23404
21719
|
]),
|
|
23405
|
-
], 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
|
|
21720
|
+
], 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" }]
|
|
23406
21721
|
}], ctorParameters: function () { return [{ type: IfExpandService }, { type: VerticalNavGroupRegistrationService }, { type: VerticalNavGroupService }, { type: VerticalNavService }, { type: ClrCommonStringsService }]; }, propDecorators: { expanded: [{
|
|
23407
21722
|
type: HostBinding,
|
|
23408
21723
|
args: ['class.is-expanded']
|
|
23409
|
-
}], groupLabel: [{
|
|
23410
|
-
type: Input,
|
|
23411
|
-
args: ['clrVerticalNavGroupLabel']
|
|
23412
21724
|
}], userExpandedInput: [{
|
|
23413
21725
|
type: Input,
|
|
23414
21726
|
args: ['clrVerticalNavGroupExpanded']
|
|
@@ -23607,15 +21919,13 @@ class ClrModal {
|
|
|
23607
21919
|
this.closeButtonAriaLabel = this.commonStrings.keys.close;
|
|
23608
21920
|
this.staticBackdrop = true;
|
|
23609
21921
|
this.skipAnimation = 'false';
|
|
23610
|
-
// presently this is only used by wizards
|
|
23611
|
-
this.bypassScrollService = false;
|
|
23612
21922
|
this.stopClose = false;
|
|
23613
21923
|
this.altClose = new EventEmitter(false);
|
|
23614
21924
|
this.labelledBy = this.modalId;
|
|
23615
21925
|
}
|
|
23616
21926
|
// Detect when _open is set to true and set no-scrolling to true
|
|
23617
21927
|
ngOnChanges(changes) {
|
|
23618
|
-
if (
|
|
21928
|
+
if (changes && Object.prototype.hasOwnProperty.call(changes, '_open')) {
|
|
23619
21929
|
if (changes._open.currentValue) {
|
|
23620
21930
|
this._scrollingService.stopScrolling();
|
|
23621
21931
|
}
|
|
@@ -23643,8 +21953,6 @@ class ClrModal {
|
|
|
23643
21953
|
return;
|
|
23644
21954
|
}
|
|
23645
21955
|
this._open = false;
|
|
23646
|
-
// SPECME
|
|
23647
|
-
this.focusTrap.setPreviousFocus(); // Handles moving focus back to the element that had it before.
|
|
23648
21956
|
}
|
|
23649
21957
|
fadeDone(e) {
|
|
23650
21958
|
if (e.toState === 'void') {
|
|
@@ -23654,7 +21962,7 @@ class ClrModal {
|
|
|
23654
21962
|
}
|
|
23655
21963
|
}
|
|
23656
21964
|
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 });
|
|
23657
|
-
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"],
|
|
21965
|
+
ClrModal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrModal, selector: "clr-modal", inputs: { _open: ["clrModalOpen", "_open"], closable: ["clrModalClosable", "closable"], closeButtonAriaLabel: ["clrModalCloseButtonAriaLabel", "closeButtonAriaLabel"], size: ["clrModalSize", "size"], staticBackdrop: ["clrModalStaticBackdrop", "staticBackdrop"], skipAnimation: ["clrModalSkipAnimation", "skipAnimation"], stopClose: ["clrModalPreventClose", "stopClose"], labelledBy: ["clrModalLabelledById", "labelledBy"] }, outputs: { _openChanged: "clrModalOpenChange", altClose: "clrModalAlternateClose" }, host: { listeners: { "body:keyup.escape": "close()" }, properties: { "class.open": "this._open" } }, usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div cdkTrapFocus class=\"modal\" *ngIf=\"_open\">\n <!--fixme: revisit when ngClass works with exit animation-->\n <div\n [@fadeDown]=\"skipAnimation\"\n (@fadeDown.done)=\"fadeDone($event)\"\n class=\"modal-dialog\"\n [class.modal-sm]=\"size == 'sm'\"\n [class.modal-lg]=\"size == 'lg'\"\n [class.modal-xl]=\"size == 'xl'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!_open\"\n [attr.aria-labelledby]=\"labelledBy\"\n >\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n <div class=\"modal-content-wrapper\">\n <!-- only used in wizards -->\n <ng-content select=\".modal-nav\"></ng-content>\n\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <div class=\"modal-title-wrapper\" id=\"{{modalId}}\" clrFocusOnViewInit>\n <ng-content select=\".modal-title\"></ng-content>\n </div>\n <button\n type=\"button\"\n [attr.aria-label]=\"closeButtonAriaLabel || commonStrings.keys.close\"\n class=\"close\"\n *ngIf=\"closable\"\n (click)=\"close()\"\n >\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n </div>\n <div class=\"modal-body-wrapper\">\n <ng-content select=\".modal-body\"></ng-content>\n </div>\n <ng-content select=\".modal-footer\"></ng-content>\n </div>\n </div>\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n </div>\n\n <div [@fade] class=\"modal-backdrop\" aria-hidden=\"true\" (click)=\"staticBackdrop || close()\"></div>\n</div>\n", styles: [":host{display:none}:host.open{display:inline}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]" }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: ClrFocusOnViewInit, selector: "[clrFocusOnViewInit]", inputs: ["clrFocusOnViewInit"] }], viewProviders: [ScrollingService], animations: [
|
|
23658
21966
|
trigger('fadeDown', [
|
|
23659
21967
|
transition('* => false', [style({ opacity: 0, transform: 'translate(0, -25%)' }), animate('0.2s ease-in-out')]),
|
|
23660
21968
|
transition('false => *', [animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(0, -25%)' }))]),
|
|
@@ -23675,11 +21983,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
23675
21983
|
transition('void => *', [style({ opacity: 0 }), animate('0.2s ease-in-out', style({ opacity: 0.85 }))]),
|
|
23676
21984
|
transition('* => void', [animate('0.2s ease-in-out', style({ opacity: 0 }))]),
|
|
23677
21985
|
]),
|
|
23678
|
-
], 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
|
|
23679
|
-
}], ctorParameters: function () { return [{ type: ScrollingService }, { type: ClrCommonStringsService }]; }, propDecorators: {
|
|
23680
|
-
type: ViewChild,
|
|
23681
|
-
args: [FocusTrapDirective]
|
|
23682
|
-
}], _open: [{
|
|
21986
|
+
], template: "<!--\n ~ Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div cdkTrapFocus class=\"modal\" *ngIf=\"_open\">\n <!--fixme: revisit when ngClass works with exit animation-->\n <div\n [@fadeDown]=\"skipAnimation\"\n (@fadeDown.done)=\"fadeDone($event)\"\n class=\"modal-dialog\"\n [class.modal-sm]=\"size == 'sm'\"\n [class.modal-lg]=\"size == 'lg'\"\n [class.modal-xl]=\"size == 'xl'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!_open\"\n [attr.aria-labelledby]=\"labelledBy\"\n >\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n <div class=\"modal-content-wrapper\">\n <!-- only used in wizards -->\n <ng-content select=\".modal-nav\"></ng-content>\n\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <div class=\"modal-title-wrapper\" id=\"{{modalId}}\" clrFocusOnViewInit>\n <ng-content select=\".modal-title\"></ng-content>\n </div>\n <button\n type=\"button\"\n [attr.aria-label]=\"closeButtonAriaLabel || commonStrings.keys.close\"\n class=\"close\"\n *ngIf=\"closable\"\n (click)=\"close()\"\n >\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n </div>\n <div class=\"modal-body-wrapper\">\n <ng-content select=\".modal-body\"></ng-content>\n </div>\n <ng-content select=\".modal-footer\"></ng-content>\n </div>\n </div>\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n </div>\n\n <div [@fade] class=\"modal-backdrop\" aria-hidden=\"true\" (click)=\"staticBackdrop || close()\"></div>\n</div>\n", styles: [":host{display:none}:host.open{display:inline}\n"] }]
|
|
21987
|
+
}], ctorParameters: function () { return [{ type: ScrollingService }, { type: ClrCommonStringsService }]; }, propDecorators: { _open: [{
|
|
23683
21988
|
type: HostBinding,
|
|
23684
21989
|
args: ['class.open']
|
|
23685
21990
|
}, {
|
|
@@ -23703,9 +22008,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
23703
22008
|
}], skipAnimation: [{
|
|
23704
22009
|
type: Input,
|
|
23705
22010
|
args: ['clrModalSkipAnimation']
|
|
23706
|
-
}], bypassScrollService: [{
|
|
23707
|
-
type: Input,
|
|
23708
|
-
args: ['clrModalOverrideScrollService']
|
|
23709
22011
|
}], stopClose: [{
|
|
23710
22012
|
type: Input,
|
|
23711
22013
|
args: ['clrModalPreventClose']
|
|
@@ -23794,12 +22096,12 @@ class ClrModalModule {
|
|
|
23794
22096
|
}
|
|
23795
22097
|
}
|
|
23796
22098
|
ClrModalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
23797
|
-
ClrModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: ClrModalModule, declarations: [ClrModal, ClrModalBody], imports: [CommonModule,
|
|
23798
|
-
ClrModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrModalModule, imports: [CommonModule,
|
|
22099
|
+
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] });
|
|
22100
|
+
ClrModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrModalModule, imports: [CommonModule, CdkTrapFocusModule, ClrIconModule, ClrFocusOnViewInitModule, ClrIconModule, ClrFocusOnViewInitModule] });
|
|
23799
22101
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrModalModule, decorators: [{
|
|
23800
22102
|
type: NgModule,
|
|
23801
22103
|
args: [{
|
|
23802
|
-
imports: [CommonModule,
|
|
22104
|
+
imports: [CommonModule, CdkTrapFocusModule, ClrIconModule, ClrFocusOnViewInitModule],
|
|
23803
22105
|
declarations: [CLR_MODAL_DIRECTIVES],
|
|
23804
22106
|
exports: [CLR_MODAL_DIRECTIVES, ClrIconModule, ClrFocusOnViewInitModule],
|
|
23805
22107
|
}]
|
|
@@ -26769,13 +25071,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
26769
25071
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
26770
25072
|
*/
|
|
26771
25073
|
class ClrWizard {
|
|
26772
|
-
constructor(platformId, navService, pageCollection, buttonService, headerActionService,
|
|
25074
|
+
constructor(platformId, navService, pageCollection, buttonService, headerActionService, differs) {
|
|
26773
25075
|
this.platformId = platformId;
|
|
26774
25076
|
this.navService = navService;
|
|
26775
25077
|
this.pageCollection = pageCollection;
|
|
26776
25078
|
this.buttonService = buttonService;
|
|
26777
25079
|
this.headerActionService = headerActionService;
|
|
26778
|
-
this.elementRef = elementRef;
|
|
26779
25080
|
/**
|
|
26780
25081
|
* Set the modal size of the wizard. Set using `[clrWizardSize]` input.
|
|
26781
25082
|
*/
|
|
@@ -26791,13 +25092,6 @@ class ClrWizard {
|
|
|
26791
25092
|
this._stopCancel = false;
|
|
26792
25093
|
this._stopNavigation = false;
|
|
26793
25094
|
this._disableStepnav = false;
|
|
26794
|
-
/**
|
|
26795
|
-
* Used to communicate to the underlying modal that animations are not
|
|
26796
|
-
* wanted. Primary use is for the display of static/inline wizards.
|
|
26797
|
-
* Set using `[clrWizardPreventModalAnimation]` input.
|
|
26798
|
-
*/
|
|
26799
|
-
/** @deprecated since 3.0, input should be removed in 4.0 because is only related to inline wizards */
|
|
26800
|
-
this._stopModalAnimations = false;
|
|
26801
25095
|
/**
|
|
26802
25096
|
* Emits when the wizard is opened or closed.
|
|
26803
25097
|
* Listen via `(clrWizardOpenChange)` event.
|
|
@@ -26918,9 +25212,6 @@ class ClrWizard {
|
|
|
26918
25212
|
get disableStepnav() {
|
|
26919
25213
|
return this._disableStepnav;
|
|
26920
25214
|
}
|
|
26921
|
-
get stopModalAnimations() {
|
|
26922
|
-
return this._stopModalAnimations ? 'true' : 'false';
|
|
26923
|
-
}
|
|
26924
25215
|
get currentPage() {
|
|
26925
25216
|
return this.navService.currentPage;
|
|
26926
25217
|
}
|
|
@@ -26933,13 +25224,9 @@ class ClrWizard {
|
|
|
26933
25224
|
get isFirst() {
|
|
26934
25225
|
return this.navService.currentPageIsFirst;
|
|
26935
25226
|
}
|
|
26936
|
-
get isStatic() {
|
|
26937
|
-
return this.elementRef.nativeElement.classList.contains('clr-wizard--inline');
|
|
26938
|
-
}
|
|
26939
25227
|
ngAfterContentInit() {
|
|
26940
25228
|
this.pageCollection.pages = this.pages;
|
|
26941
25229
|
this.headerActionService.wizardHeaderActions = this.headerActions;
|
|
26942
|
-
this.initializeButtons();
|
|
26943
25230
|
}
|
|
26944
25231
|
ngDoCheck() {
|
|
26945
25232
|
this.updateNavOnPageChanges();
|
|
@@ -27144,12 +25431,6 @@ class ClrWizard {
|
|
|
27144
25431
|
changes.forEachRemovedItem(() => this.navService.updateNavigation());
|
|
27145
25432
|
}
|
|
27146
25433
|
}
|
|
27147
|
-
initializeButtons() {
|
|
27148
|
-
// Only trigger buttons ready if default is open (inlined)
|
|
27149
|
-
if (this._open) {
|
|
27150
|
-
this.buttonService.buttonsReady = true;
|
|
27151
|
-
}
|
|
27152
|
-
}
|
|
27153
25434
|
emitWizardFinished() {
|
|
27154
25435
|
if (!this.stopNext) {
|
|
27155
25436
|
this.forceFinish();
|
|
@@ -27157,8 +25438,8 @@ class ClrWizard {
|
|
|
27157
25438
|
this.wizardFinished.emit();
|
|
27158
25439
|
}
|
|
27159
25440
|
}
|
|
27160
|
-
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.
|
|
27161
|
-
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"]
|
|
25441
|
+
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 });
|
|
25442
|
+
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" }] });
|
|
27162
25443
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrWizard, decorators: [{
|
|
27163
25444
|
type: Component,
|
|
27164
25445
|
args: [{ selector: 'clr-wizard', providers: [WizardNavigationService, PageCollectionService, ButtonHubService, HeaderActionService], host: {
|
|
@@ -27167,12 +25448,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
27167
25448
|
'[class.wizard-lg]': "size == 'lg'",
|
|
27168
25449
|
'[class.wizard-xl]': "size == 'xl'",
|
|
27169
25450
|
'[class.lastPage]': 'navService.currentPageIsLast',
|
|
27170
|
-
}, 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 [
|
|
25451
|
+
}, 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" }]
|
|
27171
25452
|
}], ctorParameters: function () {
|
|
27172
25453
|
return [{ type: undefined, decorators: [{
|
|
27173
25454
|
type: Inject,
|
|
27174
25455
|
args: [PLATFORM_ID]
|
|
27175
|
-
}] }, { type: WizardNavigationService }, { type: PageCollectionService }, { type: ButtonHubService }, { type: HeaderActionService }, { type: i0.
|
|
25456
|
+
}] }, { type: WizardNavigationService }, { type: PageCollectionService }, { type: ButtonHubService }, { type: HeaderActionService }, { type: i0.IterableDiffers }];
|
|
27176
25457
|
}, propDecorators: { size: [{
|
|
27177
25458
|
type: Input,
|
|
27178
25459
|
args: ['clrWizardSize']
|
|
@@ -27197,9 +25478,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
27197
25478
|
}], disableStepnav: [{
|
|
27198
25479
|
type: Input,
|
|
27199
25480
|
args: ['clrWizardDisableStepnav']
|
|
27200
|
-
}], _stopModalAnimations: [{
|
|
27201
|
-
type: Input,
|
|
27202
|
-
args: ['clrWizardPreventModalAnimation']
|
|
27203
25481
|
}], _openChanged: [{
|
|
27204
25482
|
type: Output,
|
|
27205
25483
|
args: ['clrWizardOpenChange']
|
|
@@ -27500,15 +25778,12 @@ ClarityModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version:
|
|
|
27500
25778
|
ClrModalModule,
|
|
27501
25779
|
ClrLoadingModule,
|
|
27502
25780
|
ClrConditionalModule,
|
|
27503
|
-
ClrFocusTrapModule,
|
|
27504
25781
|
ClrFocusOnViewInitModule,
|
|
27505
|
-
ClrForTypeAheadModule,
|
|
27506
25782
|
ClrButtonModule,
|
|
27507
25783
|
ClrFormsModule,
|
|
27508
25784
|
ClrLayoutModule,
|
|
27509
25785
|
ClrPopoverModule,
|
|
27510
25786
|
ClrWizardModule,
|
|
27511
|
-
ClrDragAndDropModule,
|
|
27512
25787
|
ClrStepperModule,
|
|
27513
25788
|
ClrSpinnerModule,
|
|
27514
25789
|
ClrProgressBarModule,
|
|
@@ -27520,15 +25795,12 @@ ClarityModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version:
|
|
|
27520
25795
|
ClrModalModule,
|
|
27521
25796
|
ClrLoadingModule,
|
|
27522
25797
|
ClrConditionalModule,
|
|
27523
|
-
ClrFocusTrapModule,
|
|
27524
25798
|
ClrFocusOnViewInitModule,
|
|
27525
|
-
ClrForTypeAheadModule,
|
|
27526
25799
|
ClrButtonModule,
|
|
27527
25800
|
ClrFormsModule,
|
|
27528
25801
|
ClrLayoutModule,
|
|
27529
25802
|
ClrPopoverModule,
|
|
27530
25803
|
ClrWizardModule,
|
|
27531
|
-
ClrDragAndDropModule,
|
|
27532
25804
|
ClrStepperModule,
|
|
27533
25805
|
ClrSpinnerModule,
|
|
27534
25806
|
ClrProgressBarModule,
|
|
@@ -27544,15 +25816,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
|
|
|
27544
25816
|
ClrModalModule,
|
|
27545
25817
|
ClrLoadingModule,
|
|
27546
25818
|
ClrConditionalModule,
|
|
27547
|
-
ClrFocusTrapModule,
|
|
27548
25819
|
ClrFocusOnViewInitModule,
|
|
27549
|
-
ClrForTypeAheadModule,
|
|
27550
25820
|
ClrButtonModule,
|
|
27551
25821
|
ClrFormsModule,
|
|
27552
25822
|
ClrLayoutModule,
|
|
27553
25823
|
ClrPopoverModule,
|
|
27554
25824
|
ClrWizardModule,
|
|
27555
|
-
ClrDragAndDropModule,
|
|
27556
25825
|
ClrStepperModule,
|
|
27557
25826
|
ClrSpinnerModule,
|
|
27558
25827
|
ClrProgressBarModule,
|
|
@@ -27822,5 +26091,5 @@ const CLR_MENU_POSITIONS = [
|
|
|
27822
26091
|
* Generated bundle index. Do not edit.
|
|
27823
26092
|
*/
|
|
27824
26093
|
|
|
27825
|
-
export { CLR_ALERT_DIRECTIVES, CLR_BUTTON_GROUP_DIRECTIVES, CLR_DATAGRID_DIRECTIVES, CLR_DATEPICKER_DIRECTIVES,
|
|
26094
|
+
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 };
|
|
27826
26095
|
//# sourceMappingURL=clr-angular.mjs.map
|