@clr/angular 13.4.1 → 13.6.0
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 +10 -67
- package/data/datagrid/datagrid-action-overflow.d.ts +2 -1
- package/data/datagrid/datagrid-row.d.ts +12 -1
- package/data/datagrid/datagrid.d.ts +4 -2
- package/data/datagrid/datagrid.module.d.ts +4 -3
- package/data/datagrid/providers/selection.d.ts +8 -0
- package/esm2020/accordion/stepper/stepper.mjs +16 -5
- package/esm2020/data/data.module.mjs +4 -2
- package/esm2020/data/datagrid/datagrid-action-overflow.mjs +24 -15
- package/esm2020/data/datagrid/datagrid-row.mjs +68 -14
- package/esm2020/data/datagrid/datagrid.mjs +24 -5
- package/esm2020/data/datagrid/datagrid.module.mjs +5 -2
- package/esm2020/data/datagrid/providers/selection.mjs +5 -1
- package/esm2020/emphasis/emphasis.module.mjs +4 -2
- package/esm2020/forms/checkbox/checkbox.module.mjs +1 -2
- package/esm2020/forms/common/common.module.mjs +1 -2
- package/esm2020/forms/datepicker/datepicker.module.mjs +1 -2
- package/esm2020/forms/input/input.module.mjs +1 -2
- package/esm2020/forms/password/password.module.mjs +1 -2
- package/esm2020/forms/radio/radio.module.mjs +1 -2
- package/esm2020/forms/range/range.module.mjs +1 -2
- package/esm2020/forms/select/select.module.mjs +1 -2
- package/esm2020/forms/textarea/textarea.module.mjs +1 -2
- package/esm2020/icon/icon.module.mjs +6 -2
- package/esm2020/layout/layout.module.mjs +4 -2
- package/esm2020/popover/popover.module.mjs +4 -2
- package/esm2020/utils/conditional/conditional.module.mjs +6 -2
- package/esm2020/utils/drag-and-drop/drag-and-drop.module.mjs +1 -2
- package/esm2020/utils/focus/key-focus/index.mjs +8 -0
- package/esm2020/utils/host-wrapping/host-wrapping.module.mjs +5 -2
- package/esm2020/utils/index.mjs +1 -2
- package/esm2020/utils/loading/loading.module.mjs +6 -2
- package/esm2020/utils/outside-click/outside-click.module.mjs +6 -2
- package/esm2020/utils/template-ref/template-ref.module.mjs +1 -2
- package/fesm2015/clr-angular.mjs +160 -261
- package/fesm2015/clr-angular.mjs.map +1 -1
- package/fesm2020/clr-angular.mjs +158 -269
- package/fesm2020/clr-angular.mjs.map +1 -1
- package/package.json +5 -5
- package/utils/focus/key-focus/index.d.ts +2 -0
- package/utils/index.d.ts +0 -1
- package/esm2020/utils/list-key-navigation/index.mjs +0 -10
- package/esm2020/utils/list-key-navigation/key-navigation-list.mjs +0 -120
- package/esm2020/utils/list-key-navigation/key-navigation-list.module.mjs +0 -24
- package/esm2020/utils/list-key-navigation/providers/focusable-items.mjs +0 -25
- package/esm2020/utils/list-key-navigation/providers/key-navigation-list.config.mjs +0 -19
- package/esm2020/utils/list-key-navigation/utils.mjs +0 -46
- package/utils/list-key-navigation/index.d.ts +0 -4
- package/utils/list-key-navigation/key-navigation-list.d.ts +0 -30
- package/utils/list-key-navigation/key-navigation-list.module.d.ts +0 -7
- package/utils/list-key-navigation/providers/focusable-items.d.ts +0 -3
- package/utils/list-key-navigation/providers/key-navigation-list.config.d.ts +0 -3
- package/utils/list-key-navigation/utils.d.ts +0 -11
package/fesm2015/clr-angular.mjs
CHANGED
|
@@ -5,12 +5,12 @@ import { CommonModule, isPlatformBrowser, DOCUMENT, NgForOf, getLocaleDayNames,
|
|
|
5
5
|
import { ClarityIcons, angleIcon, exclamationCircleIcon, checkCircleIcon, ellipsisHorizontalIcon, windowCloseIcon, eventIcon, calendarIcon, eyeHideIcon, eyeIcon, ellipsisVerticalIcon, viewColumnsIcon, arrowIcon, timesIcon, stepForward2Icon, angleDoubleIcon, filterGridCircleIcon, filterGridIcon, infoCircleIcon, exclamationTriangleIcon, circleIcon, dotCircleIcon, errorStandardIcon, successStandardIcon } from '@cds/core/icon';
|
|
6
6
|
import { map, tap, startWith, distinctUntilChanged, pairwise, filter, debounceTime, takeUntil, take, first, switchMap } from 'rxjs/operators';
|
|
7
7
|
import * as i3 from 'rxjs';
|
|
8
|
-
import { Subject, BehaviorSubject, fromEvent, isObservable, of, ReplaySubject, combineLatest
|
|
8
|
+
import { Subject, BehaviorSubject, Observable, fromEvent, isObservable, of, ReplaySubject, combineLatest } from 'rxjs';
|
|
9
9
|
import { trigger, transition, style, animate, keyframes, state } from '@angular/animations';
|
|
10
10
|
import * as i1 from '@angular/forms';
|
|
11
11
|
import { FormControl, FormGroup, FormsModule, SelectMultipleControlValueAccessor } from '@angular/forms';
|
|
12
|
-
import { KeyNavigationCode, initializeKeyListItems, validKeyNavigationCode, setActiveKeyListItem, getFlattenedFocusableItems, focusElement, FocusTrapTrackerService, createId, isFocusable, isHTMLElement } from '@cds/core/internal';
|
|
13
12
|
import * as i1$1 from '@angular/router';
|
|
13
|
+
import { FocusTrapTrackerService, createId, isFocusable, isHTMLElement } from '@cds/core/internal';
|
|
14
14
|
import '@cds/core/internal-components/close-button/register.js';
|
|
15
15
|
import '@cds/core/icon/register';
|
|
16
16
|
|
|
@@ -53,7 +53,11 @@ ClrIconModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
|
|
|
53
53
|
ClrIconModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrIconModule, imports: [[CommonModule]] });
|
|
54
54
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrIconModule, decorators: [{
|
|
55
55
|
type: NgModule,
|
|
56
|
-
args: [{
|
|
56
|
+
args: [{
|
|
57
|
+
imports: [CommonModule],
|
|
58
|
+
declarations: [CLR_ICON_DIRECTIVES],
|
|
59
|
+
exports: [CLR_ICON_DIRECTIVES],
|
|
60
|
+
}]
|
|
57
61
|
}] });
|
|
58
62
|
|
|
59
63
|
/*
|
|
@@ -1200,9 +1204,7 @@ class ClrStepper {
|
|
|
1200
1204
|
this.subscriptions.forEach(s => s.unsubscribe());
|
|
1201
1205
|
}
|
|
1202
1206
|
listenForFormResetChanges() {
|
|
1203
|
-
return this.form.
|
|
1204
|
-
.pipe(filter(() => this.form.pristine)) // https://github.com/angular/angular/issues/10887
|
|
1205
|
-
.subscribe(() => this.stepperService.resetPanels());
|
|
1207
|
+
return fromControlReset(this.form.form).subscribe(() => this.stepperService.resetPanels());
|
|
1206
1208
|
}
|
|
1207
1209
|
listenForPanelsCompleted() {
|
|
1208
1210
|
return this.stepperService.panelsCompleted.subscribe(panelsCompleted => {
|
|
@@ -1254,6 +1256,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
1254
1256
|
type: ContentChildren,
|
|
1255
1257
|
args: [ClrStepperPanel, { descendants: true }]
|
|
1256
1258
|
}] } });
|
|
1259
|
+
function fromControlReset(control) {
|
|
1260
|
+
return new Observable(observer => {
|
|
1261
|
+
const unpatchedControlReset = control.reset;
|
|
1262
|
+
control.reset = () => {
|
|
1263
|
+
observer.next();
|
|
1264
|
+
unpatchedControlReset.apply(control);
|
|
1265
|
+
};
|
|
1266
|
+
return () => {
|
|
1267
|
+
control.reset = unpatchedControlReset;
|
|
1268
|
+
};
|
|
1269
|
+
});
|
|
1270
|
+
}
|
|
1257
1271
|
|
|
1258
1272
|
/*
|
|
1259
1273
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -2975,7 +2989,10 @@ ClrHostWrappingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", v
|
|
|
2975
2989
|
ClrHostWrappingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrHostWrappingModule });
|
|
2976
2990
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrHostWrappingModule, decorators: [{
|
|
2977
2991
|
type: NgModule,
|
|
2978
|
-
args: [{
|
|
2992
|
+
args: [{
|
|
2993
|
+
declarations: [EmptyAnchor],
|
|
2994
|
+
exports: [EmptyAnchor],
|
|
2995
|
+
}]
|
|
2979
2996
|
}] });
|
|
2980
2997
|
|
|
2981
2998
|
/*
|
|
@@ -4143,7 +4160,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
4143
4160
|
ClrControlContainer,
|
|
4144
4161
|
ClrControl,
|
|
4145
4162
|
],
|
|
4146
|
-
entryComponents: [ClrControlContainer],
|
|
4147
4163
|
}]
|
|
4148
4164
|
}], ctorParameters: function () { return []; } });
|
|
4149
4165
|
|
|
@@ -4384,7 +4400,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
4384
4400
|
imports: [CommonModule, ClrIconModule, ClrCommonFormsModule, ClrHostWrappingModule],
|
|
4385
4401
|
declarations: [ClrCheckbox, ClrCheckboxContainer, ClrCheckboxWrapper],
|
|
4386
4402
|
exports: [ClrCommonFormsModule, ClrCheckbox, ClrCheckboxContainer, ClrCheckboxWrapper],
|
|
4387
|
-
entryComponents: [ClrCheckboxWrapper],
|
|
4388
4403
|
}]
|
|
4389
4404
|
}], ctorParameters: function () { return []; } });
|
|
4390
4405
|
|
|
@@ -4876,7 +4891,11 @@ ClrConditionalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", ve
|
|
|
4876
4891
|
ClrConditionalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrConditionalModule, imports: [[CommonModule]] });
|
|
4877
4892
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrConditionalModule, decorators: [{
|
|
4878
4893
|
type: NgModule,
|
|
4879
|
-
args: [{
|
|
4894
|
+
args: [{
|
|
4895
|
+
imports: [CommonModule],
|
|
4896
|
+
declarations: [CONDITIONAL_DIRECTIVES],
|
|
4897
|
+
exports: [CONDITIONAL_DIRECTIVES],
|
|
4898
|
+
}]
|
|
4880
4899
|
}] });
|
|
4881
4900
|
|
|
4882
4901
|
/*
|
|
@@ -6793,7 +6812,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
6793
6812
|
imports: [CommonModule, FormsModule, ClrIconModule, ClrCommonFormsModule],
|
|
6794
6813
|
declarations: [ClrInput, ClrInputContainer],
|
|
6795
6814
|
exports: [ClrCommonFormsModule, ClrInput, ClrInputContainer],
|
|
6796
|
-
entryComponents: [ClrInputContainer],
|
|
6797
6815
|
}]
|
|
6798
6816
|
}], ctorParameters: function () { return []; } });
|
|
6799
6817
|
|
|
@@ -9510,7 +9528,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
9510
9528
|
],
|
|
9511
9529
|
declarations: [CLR_DATEPICKER_DIRECTIVES],
|
|
9512
9530
|
exports: [CLR_DATEPICKER_DIRECTIVES],
|
|
9513
|
-
entryComponents: [ClrDateContainer],
|
|
9514
9531
|
}]
|
|
9515
9532
|
}], ctorParameters: function () { return []; } });
|
|
9516
9533
|
|
|
@@ -9748,7 +9765,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
9748
9765
|
imports: [CommonModule, FormsModule, ClrIconModule, ClrCommonFormsModule],
|
|
9749
9766
|
declarations: [ClrPassword, ClrPasswordContainer],
|
|
9750
9767
|
exports: [ClrCommonFormsModule, ClrPassword, ClrPasswordContainer],
|
|
9751
|
-
entryComponents: [ClrPasswordContainer],
|
|
9752
9768
|
}]
|
|
9753
9769
|
}], ctorParameters: function () { return []; } });
|
|
9754
9770
|
|
|
@@ -9953,7 +9969,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
9953
9969
|
imports: [CommonModule, ClrCommonFormsModule, ClrHostWrappingModule, ClrIconModule],
|
|
9954
9970
|
declarations: [ClrRadio, ClrRadioContainer, ClrRadioWrapper],
|
|
9955
9971
|
exports: [ClrCommonFormsModule, ClrRadio, ClrRadioContainer, ClrRadioWrapper],
|
|
9956
|
-
entryComponents: [ClrRadioWrapper],
|
|
9957
9972
|
}]
|
|
9958
9973
|
}], ctorParameters: function () { return []; } });
|
|
9959
9974
|
|
|
@@ -10113,7 +10128,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
10113
10128
|
imports: [CommonModule, ClrCommonFormsModule, ClrHostWrappingModule, ClrIconModule],
|
|
10114
10129
|
declarations: [ClrRange, ClrRangeContainer],
|
|
10115
10130
|
exports: [ClrCommonFormsModule, ClrRange, ClrRangeContainer],
|
|
10116
|
-
entryComponents: [ClrRangeContainer],
|
|
10117
10131
|
}]
|
|
10118
10132
|
}], ctorParameters: function () { return []; } });
|
|
10119
10133
|
|
|
@@ -10263,7 +10277,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
10263
10277
|
imports: [CommonModule, FormsModule, ClrIconModule, ClrCommonFormsModule],
|
|
10264
10278
|
declarations: [ClrSelect, ClrSelectContainer],
|
|
10265
10279
|
exports: [ClrCommonFormsModule, ClrSelect, ClrSelectContainer],
|
|
10266
|
-
entryComponents: [ClrSelectContainer],
|
|
10267
10280
|
}]
|
|
10268
10281
|
}], ctorParameters: function () { return []; } });
|
|
10269
10282
|
|
|
@@ -10386,7 +10399,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
10386
10399
|
imports: [CommonModule, FormsModule, ClrIconModule, ClrCommonFormsModule],
|
|
10387
10400
|
declarations: [ClrTextarea, ClrTextareaContainer],
|
|
10388
10401
|
exports: [ClrCommonFormsModule, ClrTextarea, ClrTextareaContainer],
|
|
10389
|
-
entryComponents: [ClrTextareaContainer],
|
|
10390
10402
|
}]
|
|
10391
10403
|
}], ctorParameters: function () { return []; } });
|
|
10392
10404
|
|
|
@@ -11513,7 +11525,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
11513
11525
|
args: [{
|
|
11514
11526
|
imports: [CommonModule],
|
|
11515
11527
|
declarations: [CLR_DRAG_AND_DROP_DIRECTIVES],
|
|
11516
|
-
entryComponents: [ClrDraggableGhost],
|
|
11517
11528
|
exports: [CLR_DRAG_AND_DROP_DIRECTIVES],
|
|
11518
11529
|
}]
|
|
11519
11530
|
}] });
|
|
@@ -11650,7 +11661,11 @@ ClrLoadingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
|
|
|
11650
11661
|
ClrLoadingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrLoadingModule, imports: [[CommonModule]] });
|
|
11651
11662
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrLoadingModule, decorators: [{
|
|
11652
11663
|
type: NgModule,
|
|
11653
|
-
args: [{
|
|
11664
|
+
args: [{
|
|
11665
|
+
imports: [CommonModule],
|
|
11666
|
+
declarations: [CLR_LOADING_DIRECTIVES],
|
|
11667
|
+
exports: [CLR_LOADING_DIRECTIVES],
|
|
11668
|
+
}]
|
|
11654
11669
|
}] });
|
|
11655
11670
|
|
|
11656
11671
|
/*
|
|
@@ -11718,7 +11733,11 @@ ClrOutsideClickModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", v
|
|
|
11718
11733
|
ClrOutsideClickModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrOutsideClickModule, imports: [[CommonModule]] });
|
|
11719
11734
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrOutsideClickModule, decorators: [{
|
|
11720
11735
|
type: NgModule,
|
|
11721
|
-
args: [{
|
|
11736
|
+
args: [{
|
|
11737
|
+
imports: [CommonModule],
|
|
11738
|
+
declarations: [OUSTIDE_CLICK_DIRECTIVES],
|
|
11739
|
+
exports: [OUSTIDE_CLICK_DIRECTIVES],
|
|
11740
|
+
}]
|
|
11722
11741
|
}] });
|
|
11723
11742
|
|
|
11724
11743
|
/*
|
|
@@ -14620,6 +14639,10 @@ class Selection {
|
|
|
14620
14639
|
* Subscriptions to the other providers changes.
|
|
14621
14640
|
*/
|
|
14622
14641
|
this.subscriptions = [];
|
|
14642
|
+
/**
|
|
14643
|
+
* Shift key state, for use in range selection.
|
|
14644
|
+
*/
|
|
14645
|
+
this.shiftPressed = false;
|
|
14623
14646
|
this.valueCollector = new Subject();
|
|
14624
14647
|
/**
|
|
14625
14648
|
* The Observable that lets other classes subscribe to selection changes
|
|
@@ -15002,7 +15025,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
15002
15025
|
*/
|
|
15003
15026
|
let nbRow = 0;
|
|
15004
15027
|
class ClrDatagridRow {
|
|
15005
|
-
constructor(selection, rowActionService, globalExpandable, expand, detailService, displayMode, vcr, renderer, el, commonStrings) {
|
|
15028
|
+
constructor(selection, rowActionService, globalExpandable, expand, detailService, displayMode, vcr, renderer, el, commonStrings, items, document) {
|
|
15006
15029
|
this.selection = selection;
|
|
15007
15030
|
this.rowActionService = rowActionService;
|
|
15008
15031
|
this.globalExpandable = globalExpandable;
|
|
@@ -15013,6 +15036,8 @@ class ClrDatagridRow {
|
|
|
15013
15036
|
this.renderer = renderer;
|
|
15014
15037
|
this.el = el;
|
|
15015
15038
|
this.commonStrings = commonStrings;
|
|
15039
|
+
this.items = items;
|
|
15040
|
+
this.document = document;
|
|
15016
15041
|
/* reference to the enum so that template can access */
|
|
15017
15042
|
this.SELECTION_TYPE = SelectionType;
|
|
15018
15043
|
this.expandAnimationTrigger = false;
|
|
@@ -15043,6 +15068,24 @@ class ClrDatagridRow {
|
|
|
15043
15068
|
}
|
|
15044
15069
|
}));
|
|
15045
15070
|
}
|
|
15071
|
+
/**
|
|
15072
|
+
* The default behavior in Chrome and Firefox for shift-clicking on a label is to perform text-selection.
|
|
15073
|
+
* This prevents our intended range-selection, because this text-selection overrides our shift-click event.
|
|
15074
|
+
* We need to clear the stored selection range when shift-clicking. This will override the mostly unused shift-click
|
|
15075
|
+
* selection browser functionality, which is inconsistently implemented in browsers anyway.
|
|
15076
|
+
*/
|
|
15077
|
+
clearRanges(event) {
|
|
15078
|
+
if (event.shiftKey) {
|
|
15079
|
+
this.document.getSelection().removeAllRanges();
|
|
15080
|
+
// Firefox is too persistent about its text-selection behaviour. So we need to add a preventDefault();
|
|
15081
|
+
// We should not try to enforce this on the other browsers, though, because their toggle cycle does not get canceled by
|
|
15082
|
+
// the preventDefault() and they toggle the checkbox second time, effectively retrurning it to not-selected.
|
|
15083
|
+
if (window.navigator.userAgent.indexOf('Firefox') !== -1) {
|
|
15084
|
+
event.preventDefault();
|
|
15085
|
+
this.toggle(true);
|
|
15086
|
+
}
|
|
15087
|
+
}
|
|
15088
|
+
}
|
|
15046
15089
|
/**
|
|
15047
15090
|
* Indicates if the row is selected
|
|
15048
15091
|
*/
|
|
@@ -15059,6 +15102,12 @@ class ClrDatagridRow {
|
|
|
15059
15102
|
this._selected = value;
|
|
15060
15103
|
}
|
|
15061
15104
|
else {
|
|
15105
|
+
if (value && this.selection.selectionType === SelectionType.Multi) {
|
|
15106
|
+
this.rangeSelect();
|
|
15107
|
+
}
|
|
15108
|
+
else {
|
|
15109
|
+
this.selection.rangeStart = null;
|
|
15110
|
+
}
|
|
15062
15111
|
this.selection.setSelected(this.item, value);
|
|
15063
15112
|
}
|
|
15064
15113
|
}
|
|
@@ -15146,6 +15195,29 @@ class ClrDatagridRow {
|
|
|
15146
15195
|
this.expandAnimationTrigger = !this.expandAnimationTrigger;
|
|
15147
15196
|
}));
|
|
15148
15197
|
}
|
|
15198
|
+
rangeSelect() {
|
|
15199
|
+
const items = this.items.displayed;
|
|
15200
|
+
if (!items) {
|
|
15201
|
+
return;
|
|
15202
|
+
}
|
|
15203
|
+
const startIx = items.indexOf(this.selection.rangeStart);
|
|
15204
|
+
if (this.selection.rangeStart &&
|
|
15205
|
+
this.selection.current.includes(this.selection.rangeStart) &&
|
|
15206
|
+
this.selection.shiftPressed &&
|
|
15207
|
+
startIx !== -1) {
|
|
15208
|
+
const endIx = items.indexOf(this.item);
|
|
15209
|
+
// Using Set to remove duplicates
|
|
15210
|
+
const newSelection = new Set(this.selection.current.concat(items.slice(Math.min(startIx, endIx), Math.max(startIx, endIx) + 1)));
|
|
15211
|
+
this.selection.clearSelection();
|
|
15212
|
+
this.selection.current.push(...newSelection);
|
|
15213
|
+
}
|
|
15214
|
+
else {
|
|
15215
|
+
// page number has changed or
|
|
15216
|
+
// no Shift was pressed or
|
|
15217
|
+
// rangeStart not yet set
|
|
15218
|
+
this.selection.rangeStart = this.item;
|
|
15219
|
+
}
|
|
15220
|
+
}
|
|
15149
15221
|
ngOnDestroy() {
|
|
15150
15222
|
this.subscriptions.forEach((sub) => sub.unsubscribe());
|
|
15151
15223
|
}
|
|
@@ -15157,12 +15229,12 @@ class ClrDatagridRow {
|
|
|
15157
15229
|
return this.wrappedInjector.get(WrappedRow, this.vcr).rowView;
|
|
15158
15230
|
}
|
|
15159
15231
|
}
|
|
15160
|
-
ClrDatagridRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagridRow, deps: [{ token: Selection }, { token: RowActionService }, { token: ExpandableRowsCount }, { token: DatagridIfExpandService }, { token: DetailService }, { token: DisplayModeService }, { token: i0.ViewContainerRef }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
15232
|
+
ClrDatagridRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagridRow, deps: [{ token: Selection }, { token: RowActionService }, { token: ExpandableRowsCount }, { token: DatagridIfExpandService }, { token: DetailService }, { token: DisplayModeService }, { token: i0.ViewContainerRef }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: ClrCommonStringsService }, { token: Items }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
|
|
15161
15233
|
ClrDatagridRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrDatagridRow, selector: "clr-dg-row", inputs: { item: ["clrDgItem", "item"], selected: ["clrDgSelected", "selected"], clrDgSelectable: "clrDgSelectable", expanded: ["clrDgExpanded", "expanded"], clrDgDetailOpenLabel: "clrDgDetailOpenLabel", clrDgDetailCloseLabel: "clrDgDetailCloseLabel", clrDgRowAriaLabel: "clrDgRowAriaLabel" }, outputs: { selectedChanged: "clrDgSelectedChange", expandedChange: "clrDgExpandedChange" }, host: { attributes: { "role": "rowgroup" }, properties: { "class.datagrid-row": "true", "class.datagrid-selected": "selected", "attr.aria-owns": "id" } }, providers: [
|
|
15162
15234
|
DatagridIfExpandService,
|
|
15163
15235
|
{ provide: IfExpandService, useExisting: DatagridIfExpandService },
|
|
15164
15236
|
{ provide: LoadingListener, useExisting: DatagridIfExpandService },
|
|
15165
|
-
], 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\">\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\">\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", components: [{ type: ClrExpandableAnimation, selector: "clr-expandable-animation", inputs: ["clrExpandTrigger"] }, { type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: ClrLabel, selector: "label", inputs: ["for"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: ClrRadio, selector: "[clrRadio]" }, { type: CdsIconCustomTag, selector: "cds-icon" }] });
|
|
15237
|
+
], 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", components: [{ type: ClrExpandableAnimation, selector: "clr-expandable-animation", inputs: ["clrExpandTrigger"] }, { type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: ClrLabel, selector: "label", inputs: ["for"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: ClrRadio, selector: "[clrRadio]" }, { type: CdsIconCustomTag, selector: "cds-icon" }] });
|
|
15166
15238
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagridRow, decorators: [{
|
|
15167
15239
|
type: Component,
|
|
15168
15240
|
args: [{ selector: 'clr-dg-row', host: {
|
|
@@ -15174,8 +15246,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
15174
15246
|
DatagridIfExpandService,
|
|
15175
15247
|
{ provide: IfExpandService, useExisting: DatagridIfExpandService },
|
|
15176
15248
|
{ provide: LoadingListener, useExisting: DatagridIfExpandService },
|
|
15177
|
-
], 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\">\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\">\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" }]
|
|
15178
|
-
}], ctorParameters: function () {
|
|
15249
|
+
], 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" }]
|
|
15250
|
+
}], ctorParameters: function () {
|
|
15251
|
+
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: [{
|
|
15252
|
+
type: Inject,
|
|
15253
|
+
args: [DOCUMENT]
|
|
15254
|
+
}] }];
|
|
15255
|
+
}, propDecorators: { expandAnimation: [{
|
|
15179
15256
|
type: ViewChild,
|
|
15180
15257
|
args: [ClrExpandableAnimation]
|
|
15181
15258
|
}], item: [{
|
|
@@ -15528,7 +15605,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
15528
15605
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15529
15606
|
*/
|
|
15530
15607
|
class ClrDatagrid {
|
|
15531
|
-
constructor(organizer, items, expandableRows, selection, rowActionService, stateProvider, displayMode, renderer, detailService, datagridId, el, page, commonStrings, columnsService, keyNavigation) {
|
|
15608
|
+
constructor(organizer, items, expandableRows, selection, rowActionService, stateProvider, displayMode, renderer, detailService, datagridId, document, el, page, commonStrings, columnsService, keyNavigation, zone) {
|
|
15532
15609
|
this.organizer = organizer;
|
|
15533
15610
|
this.items = items;
|
|
15534
15611
|
this.expandableRows = expandableRows;
|
|
@@ -15538,11 +15615,13 @@ class ClrDatagrid {
|
|
|
15538
15615
|
this.displayMode = displayMode;
|
|
15539
15616
|
this.renderer = renderer;
|
|
15540
15617
|
this.detailService = detailService;
|
|
15618
|
+
this.document = document;
|
|
15541
15619
|
this.el = el;
|
|
15542
15620
|
this.page = page;
|
|
15543
15621
|
this.commonStrings = commonStrings;
|
|
15544
15622
|
this.columnsService = columnsService;
|
|
15545
15623
|
this.keyNavigation = keyNavigation;
|
|
15624
|
+
this.zone = zone;
|
|
15546
15625
|
/* reference to the enum so that template can access */
|
|
15547
15626
|
this.SELECTION_TYPE = SelectionType;
|
|
15548
15627
|
/**
|
|
@@ -15727,6 +15806,19 @@ class ClrDatagrid {
|
|
|
15727
15806
|
});
|
|
15728
15807
|
}
|
|
15729
15808
|
}));
|
|
15809
|
+
// We need to preserve shift state, so it can be used on selection change, regardless of the input event
|
|
15810
|
+
// that triggered the change. This helps us to easily resolve the k/b only case together with the mouse selection case.
|
|
15811
|
+
this.zone.runOutsideAngular(() => {
|
|
15812
|
+
this._subscriptions.push(fromEvent(this.document.body, 'keydown').subscribe((event) => {
|
|
15813
|
+
if (event.key === 'Shift') {
|
|
15814
|
+
this.selection.shiftPressed = true;
|
|
15815
|
+
}
|
|
15816
|
+
}), fromEvent(this.document.body, 'keyup').subscribe((event) => {
|
|
15817
|
+
if (event.key === 'Shift') {
|
|
15818
|
+
this.selection.shiftPressed = false;
|
|
15819
|
+
}
|
|
15820
|
+
}));
|
|
15821
|
+
});
|
|
15730
15822
|
}
|
|
15731
15823
|
ngOnDestroy() {
|
|
15732
15824
|
this._subscriptions.forEach((sub) => sub.unsubscribe());
|
|
@@ -15735,7 +15827,7 @@ class ClrDatagrid {
|
|
|
15735
15827
|
this.organizer.resize();
|
|
15736
15828
|
}
|
|
15737
15829
|
}
|
|
15738
|
-
ClrDatagrid.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagrid, deps: [{ token: DatagridRenderOrganizer }, { token: Items }, { token: ExpandableRowsCount }, { token: Selection }, { token: RowActionService }, { token: StateProvider }, { token: DisplayModeService }, { token: i0.Renderer2 }, { token: DetailService }, { token: UNIQUE_ID }, { token: i0.ElementRef }, { token: Page }, { token: ClrCommonStringsService }, { token: ColumnsService }, { token: KeyNavigationGridController }], target: i0.ɵɵFactoryTarget.Component });
|
|
15830
|
+
ClrDatagrid.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagrid, deps: [{ token: DatagridRenderOrganizer }, { token: Items }, { token: ExpandableRowsCount }, { token: Selection }, { token: RowActionService }, { token: StateProvider }, { token: DisplayModeService }, { token: i0.Renderer2 }, { token: DetailService }, { token: UNIQUE_ID }, { token: DOCUMENT }, { token: i0.ElementRef }, { token: Page }, { token: ClrCommonStringsService }, { token: ColumnsService }, { token: KeyNavigationGridController }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
15739
15831
|
ClrDatagrid.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrDatagrid, selector: "clr-datagrid", inputs: { loading: ["clrDgLoading", "loading"], selected: ["clrDgSelected", "selected"], singleSelected: ["clrDgSingleSelected", "singleSelected"], clrDgSingleSelectionAriaLabel: "clrDgSingleSelectionAriaLabel", clrDgSingleActionableAriaLabel: "clrDgSingleActionableAriaLabel", clrDetailExpandableAriaLabel: "clrDetailExpandableAriaLabel", clrDgDisablePageFocus: "clrDgDisablePageFocus", clrDgPreserveSelection: "clrDgPreserveSelection", rowSelectionMode: ["clrDgRowSelection", "rowSelectionMode"] }, outputs: { refresh: "clrDgRefresh", selectedChanged: "clrDgSelectedChange", singleSelectedChanged: "clrDgSingleSelectedChange" }, host: { properties: { "class.datagrid-host": "true", "class.datagrid-detail-open": "detailService.isOpen" } }, providers: [
|
|
15740
15832
|
Selection,
|
|
15741
15833
|
Sort,
|
|
@@ -15781,7 +15873,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
15781
15873
|
return [{ type: DatagridRenderOrganizer }, { type: Items }, { type: ExpandableRowsCount }, { type: Selection }, { type: RowActionService }, { type: StateProvider }, { type: DisplayModeService }, { type: i0.Renderer2 }, { type: DetailService }, { type: undefined, decorators: [{
|
|
15782
15874
|
type: Inject,
|
|
15783
15875
|
args: [UNIQUE_ID]
|
|
15784
|
-
}] }, { type:
|
|
15876
|
+
}] }, { type: undefined, decorators: [{
|
|
15877
|
+
type: Inject,
|
|
15878
|
+
args: [DOCUMENT]
|
|
15879
|
+
}] }, { type: i0.ElementRef }, { type: Page }, { type: ClrCommonStringsService }, { type: ColumnsService }, { type: KeyNavigationGridController }, { type: i0.NgZone }];
|
|
15785
15880
|
}, propDecorators: { loading: [{
|
|
15786
15881
|
type: Input,
|
|
15787
15882
|
args: ['clrDgLoading']
|
|
@@ -15863,6 +15958,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
15863
15958
|
}]
|
|
15864
15959
|
}] });
|
|
15865
15960
|
|
|
15961
|
+
/*
|
|
15962
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
15963
|
+
* This software is released under MIT license.
|
|
15964
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15965
|
+
*/
|
|
15966
|
+
|
|
15866
15967
|
/*
|
|
15867
15968
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
15868
15969
|
* This software is released under MIT license.
|
|
@@ -15890,7 +15991,7 @@ class ClrDatagridActionOverflow {
|
|
|
15890
15991
|
this.subscriptions.push(this.smartToggleService.openChange.subscribe(openState => {
|
|
15891
15992
|
this.open = openState;
|
|
15892
15993
|
if (openState) {
|
|
15893
|
-
this.
|
|
15994
|
+
this.initializeFocus();
|
|
15894
15995
|
}
|
|
15895
15996
|
}));
|
|
15896
15997
|
this.popoverId = 'clr-action-menu' + clrDgActionId++;
|
|
@@ -15902,13 +16003,15 @@ class ClrDatagridActionOverflow {
|
|
|
15902
16003
|
closeOverflowContent(event) {
|
|
15903
16004
|
this.smartToggleService.toggleWithEvent(event);
|
|
15904
16005
|
}
|
|
15905
|
-
|
|
16006
|
+
initializeFocus() {
|
|
15906
16007
|
if (isPlatformBrowser(this.platformId)) {
|
|
15907
16008
|
this.zone.runOutsideAngular(() => {
|
|
15908
16009
|
setTimeout(() => {
|
|
15909
|
-
const
|
|
15910
|
-
if (
|
|
15911
|
-
|
|
16010
|
+
const buttons = Array.from(document.querySelectorAll('button.action-item'));
|
|
16011
|
+
if (buttons.length) {
|
|
16012
|
+
this.keyFocus.current = 0;
|
|
16013
|
+
this.keyFocus.focusableItems = buttons;
|
|
16014
|
+
this.keyFocus.focusCurrent();
|
|
15912
16015
|
}
|
|
15913
16016
|
});
|
|
15914
16017
|
});
|
|
@@ -15928,7 +16031,7 @@ class ClrDatagridActionOverflow {
|
|
|
15928
16031
|
}
|
|
15929
16032
|
}
|
|
15930
16033
|
ClrDatagridActionOverflow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagridActionOverflow, deps: [{ token: RowActionService }, { token: ClrCommonStringsService }, { token: PLATFORM_ID }, { token: i0.NgZone }, { token: ClrPopoverToggleService }, { token: UNIQUE_ID }], target: i0.ɵɵFactoryTarget.Component });
|
|
15931
|
-
ClrDatagridActionOverflow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrDatagridActionOverflow, selector: "clr-dg-action-overflow", inputs: { open: ["clrDgActionOverflowOpen", "open"] }, outputs: { openChange: "clrDgActionOverflowOpenChange" }, providers: [UNIQUE_ID_PROVIDER, ClrPopoverToggleService, ClrPopoverEventsService, ClrPopoverPositionService], ngImport: i0, template: `
|
|
16034
|
+
ClrDatagridActionOverflow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ClrDatagridActionOverflow, selector: "clr-dg-action-overflow", inputs: { open: ["clrDgActionOverflowOpen", "open"] }, outputs: { openChange: "clrDgActionOverflowOpenChange" }, providers: [UNIQUE_ID_PROVIDER, ClrPopoverToggleService, ClrPopoverEventsService, ClrPopoverPositionService], viewQueries: [{ propertyName: "keyFocus", first: true, predicate: ClrKeyFocus, descendants: true }], ngImport: i0, template: `
|
|
15932
16035
|
<button
|
|
15933
16036
|
class="datagrid-action-toggle"
|
|
15934
16037
|
type="button"
|
|
@@ -15949,13 +16052,14 @@ ClrDatagridActionOverflow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
|
|
|
15949
16052
|
[id]="popoverId"
|
|
15950
16053
|
[attr.aria-hidden]="!open"
|
|
15951
16054
|
[attr.id]="popoverId"
|
|
16055
|
+
clrKeyFocus
|
|
15952
16056
|
clrFocusTrap
|
|
15953
16057
|
(click)="closeOverflowContent($event)"
|
|
15954
16058
|
*clrPopoverContent="open; at: smartPosition; outsideClickToClose: true; scrollToClose: true"
|
|
15955
16059
|
>
|
|
15956
16060
|
<ng-content></ng-content>
|
|
15957
16061
|
</div>
|
|
15958
|
-
`, isInline: true, directives: [{ type: ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { type: ClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { type: CdsIconCustomTag, selector: "cds-icon" }, { type: ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }, { type: FocusTrapDirective, selector: "[clrFocusTrap]", inputs: ["clrFocusTrap"] }] });
|
|
16062
|
+
`, isInline: true, components: [{ type: ClrKeyFocus, selector: "[clrKeyFocus]", inputs: ["clrDirection", "clrFocusOnLoad", "clrKeyFocus"], outputs: ["clrFocusChange"] }], directives: [{ type: ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { type: ClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { type: CdsIconCustomTag, selector: "cds-icon" }, { type: ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }, { type: FocusTrapDirective, selector: "[clrFocusTrap]", inputs: ["clrFocusTrap"] }] });
|
|
15959
16063
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagridActionOverflow, decorators: [{
|
|
15960
16064
|
type: Component,
|
|
15961
16065
|
args: [{
|
|
@@ -15982,6 +16086,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
15982
16086
|
[id]="popoverId"
|
|
15983
16087
|
[attr.aria-hidden]="!open"
|
|
15984
16088
|
[attr.id]="popoverId"
|
|
16089
|
+
clrKeyFocus
|
|
15985
16090
|
clrFocusTrap
|
|
15986
16091
|
(click)="closeOverflowContent($event)"
|
|
15987
16092
|
*clrPopoverContent="open; at: smartPosition; outsideClickToClose: true; scrollToClose: true"
|
|
@@ -15998,7 +16103,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
15998
16103
|
type: Inject,
|
|
15999
16104
|
args: [UNIQUE_ID]
|
|
16000
16105
|
}] }];
|
|
16001
|
-
}, propDecorators: {
|
|
16106
|
+
}, propDecorators: { keyFocus: [{
|
|
16107
|
+
type: ViewChild,
|
|
16108
|
+
args: [ClrKeyFocus]
|
|
16109
|
+
}], open: [{
|
|
16002
16110
|
type: Input,
|
|
16003
16111
|
args: ['clrDgActionOverflowOpen']
|
|
16004
16112
|
}], openChange: [{
|
|
@@ -16937,224 +17045,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
16937
17045
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16938
17046
|
*/
|
|
16939
17047
|
|
|
16940
|
-
/*
|
|
16941
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16942
|
-
* This software is released under MIT license.
|
|
16943
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16944
|
-
*/
|
|
16945
|
-
const FOCUSABLE_ELEMENT_SELECTORS = new InjectionToken('FocusableElements');
|
|
16946
|
-
const FOCUSABLE_ELEMENT_SELECTORS_PROVIDER = {
|
|
16947
|
-
provide: FOCUSABLE_ELEMENT_SELECTORS,
|
|
16948
|
-
useValue: [
|
|
16949
|
-
'a[href]',
|
|
16950
|
-
'area[href]',
|
|
16951
|
-
'input:not([disabled])',
|
|
16952
|
-
'button:not([disabled])',
|
|
16953
|
-
'select:not([disabled])',
|
|
16954
|
-
'textarea:not([disabled])',
|
|
16955
|
-
'iframe',
|
|
16956
|
-
'object',
|
|
16957
|
-
'embed',
|
|
16958
|
-
'*[tabindex]',
|
|
16959
|
-
'*[contenteditable=true]',
|
|
16960
|
-
'[role=button]:not([disabled])',
|
|
16961
|
-
],
|
|
16962
|
-
};
|
|
16963
|
-
|
|
16964
|
-
/*
|
|
16965
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16966
|
-
* This software is released under MIT license.
|
|
16967
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16968
|
-
*/
|
|
16969
|
-
const CLR_LIST_KEY_NAVIGATION_CONFIG = new InjectionToken('ClrListKeyNavigationConfig');
|
|
16970
|
-
const CLR_LIST_KEY_NAVIGATION_COFNIG_PROVIDER = {
|
|
16971
|
-
provide: CLR_LIST_KEY_NAVIGATION_CONFIG,
|
|
16972
|
-
useValue: {
|
|
16973
|
-
keyListItems: 'keyListItems',
|
|
16974
|
-
layout: 'vertical',
|
|
16975
|
-
manageFocus: true,
|
|
16976
|
-
manageTabindex: true,
|
|
16977
|
-
loop: false,
|
|
16978
|
-
dir: null,
|
|
16979
|
-
},
|
|
16980
|
-
};
|
|
16981
|
-
|
|
16982
|
-
/*
|
|
16983
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16984
|
-
* This software is released under MIT license.
|
|
16985
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16986
|
-
*/
|
|
16987
|
-
function getNextKeyListItem(item, items, config) {
|
|
16988
|
-
const { code, layout, loop, dir } = config;
|
|
16989
|
-
let i = items.indexOf(item);
|
|
16990
|
-
const previous = i;
|
|
16991
|
-
const inlineStart = dir === 'rtl' ? KeyNavigationCode.ArrowRight : KeyNavigationCode.ArrowLeft;
|
|
16992
|
-
const inlineEnd = dir === 'rtl' ? KeyNavigationCode.ArrowLeft : KeyNavigationCode.ArrowRight;
|
|
16993
|
-
const numOfItems = items.length - 1;
|
|
16994
|
-
if (layout !== 'horizontal' && code === KeyNavigationCode.ArrowUp && i !== 0) {
|
|
16995
|
-
i = i - 1;
|
|
16996
|
-
}
|
|
16997
|
-
else if (layout !== 'horizontal' && code === KeyNavigationCode.ArrowUp && i === 0 && loop) {
|
|
16998
|
-
i = numOfItems;
|
|
16999
|
-
}
|
|
17000
|
-
else if (layout !== 'horizontal' && code === KeyNavigationCode.ArrowDown && i < numOfItems) {
|
|
17001
|
-
i = i + 1;
|
|
17002
|
-
}
|
|
17003
|
-
else if (layout !== 'horizontal' && code === KeyNavigationCode.ArrowDown && i === numOfItems && loop) {
|
|
17004
|
-
i = 0;
|
|
17005
|
-
}
|
|
17006
|
-
else if (layout !== 'vertical' && code === inlineStart && i !== 0) {
|
|
17007
|
-
i = i - 1;
|
|
17008
|
-
}
|
|
17009
|
-
else if (layout !== 'vertical' && code === inlineEnd && i < numOfItems) {
|
|
17010
|
-
i = i + 1;
|
|
17011
|
-
}
|
|
17012
|
-
else if (code === KeyNavigationCode.End) {
|
|
17013
|
-
i = numOfItems;
|
|
17014
|
-
}
|
|
17015
|
-
else if (code === KeyNavigationCode.Home) {
|
|
17016
|
-
i = 0;
|
|
17017
|
-
}
|
|
17018
|
-
else if (code === KeyNavigationCode.PageUp) {
|
|
17019
|
-
i = i - 4 > 0 ? i - 4 : 0;
|
|
17020
|
-
}
|
|
17021
|
-
else if (code === KeyNavigationCode.PageDown) {
|
|
17022
|
-
i = i + 4 < numOfItems ? i + 4 : numOfItems;
|
|
17023
|
-
}
|
|
17024
|
-
return { next: i, previous };
|
|
17025
|
-
}
|
|
17026
|
-
|
|
17027
|
-
/*
|
|
17028
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
17029
|
-
* This software is released under MIT license.
|
|
17030
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
17031
|
-
*/
|
|
17032
|
-
class ClrKeyNavigationList {
|
|
17033
|
-
constructor(host, defaultConfig, focusableElementSelectors) {
|
|
17034
|
-
this.host = host;
|
|
17035
|
-
this.defaultConfig = defaultConfig;
|
|
17036
|
-
this.focusableElementSelectors = focusableElementSelectors;
|
|
17037
|
-
this.config = Object.assign(Object.assign({}, this.defaultConfig), { dir: this.getClosestDirAttribute() });
|
|
17038
|
-
}
|
|
17039
|
-
set configuration(config) {
|
|
17040
|
-
this.config = Object.assign(Object.assign(Object.assign({}, this.defaultConfig), { dir: this.getClosestDirAttribute() }), config);
|
|
17041
|
-
}
|
|
17042
|
-
ngAfterViewInit() {
|
|
17043
|
-
this.initializeTabIndex();
|
|
17044
|
-
}
|
|
17045
|
-
onClick(e) {
|
|
17046
|
-
this.clickItem(e);
|
|
17047
|
-
}
|
|
17048
|
-
onKeyDown(e) {
|
|
17049
|
-
this.focusItem(e);
|
|
17050
|
-
}
|
|
17051
|
-
initializeTabIndex() {
|
|
17052
|
-
if (this.config.manageFocus && this.config.manageTabindex) {
|
|
17053
|
-
initializeKeyListItems(this.getListItems());
|
|
17054
|
-
}
|
|
17055
|
-
}
|
|
17056
|
-
clickItem(e) {
|
|
17057
|
-
const activeItem = this.getActiveItem(e);
|
|
17058
|
-
if (activeItem) {
|
|
17059
|
-
this.setActiveItem(e, activeItem);
|
|
17060
|
-
}
|
|
17061
|
-
}
|
|
17062
|
-
focusItem(e) {
|
|
17063
|
-
if (validKeyNavigationCode(e)) {
|
|
17064
|
-
const activeItem = this.getActiveItem(e);
|
|
17065
|
-
if (activeItem) {
|
|
17066
|
-
const listItems = this.getListItems();
|
|
17067
|
-
const { next, previous } = getNextKeyListItem(activeItem, Array.from(listItems), Object.assign(Object.assign({}, this.config), { dir: this.getClosestDirAttribute(), code: e.code }));
|
|
17068
|
-
if (next !== previous) {
|
|
17069
|
-
this.setActiveItem(e, listItems[next], listItems[previous]);
|
|
17070
|
-
}
|
|
17071
|
-
}
|
|
17072
|
-
}
|
|
17073
|
-
}
|
|
17074
|
-
getActiveItem(e) {
|
|
17075
|
-
const listItems = this.getListItems();
|
|
17076
|
-
return Array.from(listItems).find(c => { var _a; return (_a = c === e.target.closest(listItems[0].tagName.toLocaleLowerCase())) !== null && _a !== void 0 ? _a : c === e.target; });
|
|
17077
|
-
}
|
|
17078
|
-
setActiveItem(e, activeItem, previousItem) {
|
|
17079
|
-
var _a;
|
|
17080
|
-
if (this.config.manageFocus) {
|
|
17081
|
-
if (this.config.manageTabindex) {
|
|
17082
|
-
setActiveKeyListItem(this.getListItems(), activeItem);
|
|
17083
|
-
}
|
|
17084
|
-
const items = getFlattenedFocusableItems(activeItem);
|
|
17085
|
-
const item = (_a = items[0]) !== null && _a !== void 0 ? _a : activeItem;
|
|
17086
|
-
focusElement(item);
|
|
17087
|
-
e.preventDefault();
|
|
17088
|
-
}
|
|
17089
|
-
activeItem.dispatchEvent(new CustomEvent('cdsKeyChange', {
|
|
17090
|
-
bubbles: true,
|
|
17091
|
-
detail: {
|
|
17092
|
-
activeItem,
|
|
17093
|
-
previousItem,
|
|
17094
|
-
code: e.code,
|
|
17095
|
-
metaKey: e.ctrlKey || e.metaKey,
|
|
17096
|
-
keyListItems: this.config.keyListItems,
|
|
17097
|
-
},
|
|
17098
|
-
}));
|
|
17099
|
-
}
|
|
17100
|
-
getListItems() {
|
|
17101
|
-
return this.host.nativeElement.querySelectorAll(this.focusableElementSelectors.join(','));
|
|
17102
|
-
}
|
|
17103
|
-
getClosestDirAttribute() {
|
|
17104
|
-
const el = this.host.nativeElement.closest('[dir]');
|
|
17105
|
-
return el ? el.getAttribute('dir') : null;
|
|
17106
|
-
}
|
|
17107
|
-
}
|
|
17108
|
-
ClrKeyNavigationList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrKeyNavigationList, deps: [{ token: i0.ElementRef }, { token: CLR_LIST_KEY_NAVIGATION_CONFIG }, { token: FOCUSABLE_ELEMENT_SELECTORS }], target: i0.ɵɵFactoryTarget.Directive });
|
|
17109
|
-
ClrKeyNavigationList.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: ClrKeyNavigationList, selector: "[clrKeyNavigationList]", inputs: { configuration: "configuration" }, host: { listeners: { "click": "onClick($event)", "keydown": "onKeyDown($event)" } }, ngImport: i0 });
|
|
17110
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrKeyNavigationList, decorators: [{
|
|
17111
|
-
type: Directive,
|
|
17112
|
-
args: [{
|
|
17113
|
-
selector: '[clrKeyNavigationList]',
|
|
17114
|
-
}]
|
|
17115
|
-
}], ctorParameters: function () {
|
|
17116
|
-
return [{ type: i0.ElementRef }, { type: undefined, decorators: [{
|
|
17117
|
-
type: Inject,
|
|
17118
|
-
args: [CLR_LIST_KEY_NAVIGATION_CONFIG]
|
|
17119
|
-
}] }, { type: undefined, decorators: [{
|
|
17120
|
-
type: Inject,
|
|
17121
|
-
args: [FOCUSABLE_ELEMENT_SELECTORS]
|
|
17122
|
-
}] }];
|
|
17123
|
-
}, propDecorators: { configuration: [{
|
|
17124
|
-
type: Input
|
|
17125
|
-
}], onClick: [{
|
|
17126
|
-
type: HostListener,
|
|
17127
|
-
args: ['click', ['$event']]
|
|
17128
|
-
}], onKeyDown: [{
|
|
17129
|
-
type: HostListener,
|
|
17130
|
-
args: ['keydown', ['$event']]
|
|
17131
|
-
}] } });
|
|
17132
|
-
|
|
17133
|
-
/*
|
|
17134
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
17135
|
-
* This software is released under MIT license.
|
|
17136
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
17137
|
-
*/
|
|
17138
|
-
class ClrKeyNavigationListModule {
|
|
17139
|
-
}
|
|
17140
|
-
ClrKeyNavigationListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrKeyNavigationListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
17141
|
-
ClrKeyNavigationListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrKeyNavigationListModule, declarations: [ClrKeyNavigationList], exports: [ClrKeyNavigationList] });
|
|
17142
|
-
ClrKeyNavigationListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrKeyNavigationListModule, providers: [CLR_LIST_KEY_NAVIGATION_COFNIG_PROVIDER, FOCUSABLE_ELEMENT_SELECTORS_PROVIDER] });
|
|
17143
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrKeyNavigationListModule, decorators: [{
|
|
17144
|
-
type: NgModule,
|
|
17145
|
-
args: [{
|
|
17146
|
-
declarations: [ClrKeyNavigationList],
|
|
17147
|
-
exports: [ClrKeyNavigationList],
|
|
17148
|
-
providers: [CLR_LIST_KEY_NAVIGATION_COFNIG_PROVIDER, FOCUSABLE_ELEMENT_SELECTORS_PROVIDER],
|
|
17149
|
-
}]
|
|
17150
|
-
}] });
|
|
17151
|
-
|
|
17152
|
-
/*
|
|
17153
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
17154
|
-
* This software is released under MIT license.
|
|
17155
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
17156
|
-
*/
|
|
17157
|
-
|
|
17158
17048
|
/*
|
|
17159
17049
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
17160
17050
|
* This software is released under MIT license.
|
|
@@ -18509,6 +18399,7 @@ ClrDatagridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versi
|
|
|
18509
18399
|
ClrDragAndDropModule,
|
|
18510
18400
|
ClrSpinnerModule,
|
|
18511
18401
|
ClrPopoverModuleNext,
|
|
18402
|
+
ClrKeyFocusModule,
|
|
18512
18403
|
ClrFocusTrapModule,
|
|
18513
18404
|
ClrFocusOnViewInitModule], exports: [
|
|
18514
18405
|
// Core
|
|
@@ -18564,6 +18455,7 @@ ClrDatagridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", versi
|
|
|
18564
18455
|
ClrDragAndDropModule,
|
|
18565
18456
|
ClrSpinnerModule,
|
|
18566
18457
|
ClrPopoverModuleNext,
|
|
18458
|
+
ClrKeyFocusModule,
|
|
18567
18459
|
ClrFocusTrapModule,
|
|
18568
18460
|
ClrFocusOnViewInitModule,
|
|
18569
18461
|
]] });
|
|
@@ -18582,12 +18474,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
18582
18474
|
ClrDragAndDropModule,
|
|
18583
18475
|
ClrSpinnerModule,
|
|
18584
18476
|
ClrPopoverModuleNext,
|
|
18477
|
+
ClrKeyFocusModule,
|
|
18585
18478
|
ClrFocusTrapModule,
|
|
18586
18479
|
ClrFocusOnViewInitModule,
|
|
18587
18480
|
],
|
|
18588
18481
|
declarations: [CLR_DATAGRID_DIRECTIVES],
|
|
18589
18482
|
exports: [CLR_DATAGRID_DIRECTIVES],
|
|
18590
|
-
entryComponents: [WrappedCell, WrappedColumn, WrappedRow],
|
|
18591
18483
|
}]
|
|
18592
18484
|
}], ctorParameters: function () { return []; } });
|
|
18593
18485
|
|
|
@@ -20203,7 +20095,9 @@ ClrDataModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
|
|
|
20203
20095
|
ClrDataModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDataModule, imports: [ClrDatagridModule, ClrStackViewModule, ClrTreeViewModule] });
|
|
20204
20096
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDataModule, decorators: [{
|
|
20205
20097
|
type: NgModule,
|
|
20206
|
-
args: [{
|
|
20098
|
+
args: [{
|
|
20099
|
+
exports: [ClrDatagridModule, ClrStackViewModule, ClrTreeViewModule],
|
|
20100
|
+
}]
|
|
20207
20101
|
}] });
|
|
20208
20102
|
|
|
20209
20103
|
/*
|
|
@@ -21765,7 +21659,9 @@ ClrEmphasisModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versi
|
|
|
21765
21659
|
ClrEmphasisModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrEmphasisModule, imports: [ClrAlertModule] });
|
|
21766
21660
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrEmphasisModule, decorators: [{
|
|
21767
21661
|
type: NgModule,
|
|
21768
|
-
args: [{
|
|
21662
|
+
args: [{
|
|
21663
|
+
exports: [ClrAlertModule],
|
|
21664
|
+
}]
|
|
21769
21665
|
}] });
|
|
21770
21666
|
|
|
21771
21667
|
/*
|
|
@@ -22555,7 +22451,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
22555
22451
|
args: [{
|
|
22556
22452
|
imports: [CommonModule],
|
|
22557
22453
|
declarations: [TEMPLATE_REF_DIRECTIVES],
|
|
22558
|
-
entryComponents: [TEMPLATE_REF_DIRECTIVES],
|
|
22559
22454
|
exports: [TEMPLATE_REF_DIRECTIVES],
|
|
22560
22455
|
}]
|
|
22561
22456
|
}] });
|
|
@@ -23755,7 +23650,9 @@ ClrLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version
|
|
|
23755
23650
|
ClrLayoutModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrLayoutModule, imports: [ClrMainContainerModule, ClrNavigationModule, ClrTabsModule, ClrVerticalNavModule] });
|
|
23756
23651
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrLayoutModule, decorators: [{
|
|
23757
23652
|
type: NgModule,
|
|
23758
|
-
args: [{
|
|
23653
|
+
args: [{
|
|
23654
|
+
exports: [ClrMainContainerModule, ClrNavigationModule, ClrTabsModule, ClrVerticalNavModule],
|
|
23655
|
+
}]
|
|
23759
23656
|
}] });
|
|
23760
23657
|
|
|
23761
23658
|
/*
|
|
@@ -24488,7 +24385,9 @@ ClrPopoverModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
|
|
|
24488
24385
|
ClrPopoverModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrPopoverModule, imports: [ClrDropdownModule, ClrSignpostModule, ClrTooltipModule] });
|
|
24489
24386
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrPopoverModule, decorators: [{
|
|
24490
24387
|
type: NgModule,
|
|
24491
|
-
args: [{
|
|
24388
|
+
args: [{
|
|
24389
|
+
exports: [ClrDropdownModule, ClrSignpostModule, ClrTooltipModule],
|
|
24390
|
+
}]
|
|
24492
24391
|
}] });
|
|
24493
24392
|
|
|
24494
24393
|
/*
|
|
@@ -28060,5 +27959,5 @@ const CLR_MENU_POSITIONS = [
|
|
|
28060
27959
|
* Generated bundle index. Do not edit.
|
|
28061
27960
|
*/
|
|
28062
27961
|
|
|
28063
|
-
export { CLR_ALERT_DIRECTIVES, CLR_BUTTON_GROUP_DIRECTIVES, CLR_DATAGRID_DIRECTIVES, CLR_DATEPICKER_DIRECTIVES, CLR_DRAG_AND_DROP_DIRECTIVES, CLR_DROPDOWN_DIRECTIVES, CLR_ICON_DIRECTIVES, CLR_LAYOUT_DIRECTIVES,
|
|
27962
|
+
export { CLR_ALERT_DIRECTIVES, CLR_BUTTON_GROUP_DIRECTIVES, CLR_DATAGRID_DIRECTIVES, CLR_DATEPICKER_DIRECTIVES, CLR_DRAG_AND_DROP_DIRECTIVES, CLR_DROPDOWN_DIRECTIVES, CLR_ICON_DIRECTIVES, CLR_LAYOUT_DIRECTIVES, CLR_LOADING_BUTTON_DIRECTIVES, CLR_LOADING_DIRECTIVES, CLR_MENU_POSITIONS, CLR_MODAL_DIRECTIVES, CLR_NAVIGATION_DIRECTIVES, CLR_PROGRESS_BAR_DIRECTIVES, CLR_SIGNPOST_DIRECTIVES, CLR_SPINNER_DIRECTIVES, CLR_STACK_VIEW_DIRECTIVES, CLR_TABS_DIRECTIVES, CLR_TOOLTIP_DIRECTIVES, CLR_TREE_VIEW_DIRECTIVES, CLR_VERTICAL_NAV_DIRECTIVES, CLR_WIZARD_DIRECTIVES, CONDITIONAL_DIRECTIVES, CUSTOM_BUTTON_TYPES, CdsIconCustomTag, ClarityModule, ClrAbstractContainer, ClrAccordion, ClrAccordionContent, ClrAccordionDescription, ClrAccordionModule, ClrAccordionPanel, ClrAccordionTitle, ClrAlert, ClrAlertItem, ClrAlertModule, ClrAlertText, ClrAlerts, ClrAlertsPager, ClrAlignment, ClrAriaCurrentLink, ClrAriaLivePoliteness, ClrAriaLiveService, ClrAxis, ClrButton, ClrButtonGroup, ClrButtonGroupModule, ClrButtonModule, ClrCalendar, ClrCheckbox, ClrCheckboxContainer, ClrCheckboxModule, ClrCheckboxWrapper, ClrCombobox, ClrComboboxContainer, ClrComboboxModule, ClrCommonFormsModule, ClrCommonStringsService, ClrConditionalModule, ClrControl, ClrControlContainer, ClrControlError, ClrControlHelper, ClrControlSuccess, ClrDataModule, ClrDatagrid, ClrDatagridActionBar, ClrDatagridActionOverflow, ClrDatagridCell, ClrDatagridColumn, ClrDatagridColumnSeparator, ClrDatagridColumnToggle, ClrDatagridColumnToggleButton, ClrDatagridColumnToggleTitle, ClrDatagridDetail, ClrDatagridDetailBody, ClrDatagridDetailHeader, ClrDatagridFilter, ClrDatagridFooter, ClrDatagridHideableColumn, ClrDatagridItems, ClrDatagridItemsTrackBy, ClrDatagridModule, ClrDatagridPageSize, ClrDatagridPagination, ClrDatagridPlaceholder, ClrDatagridRow, ClrDatagridRowDetail, ClrDatagridSortOrder, ClrDatalist, ClrDatalistContainer, ClrDatalistInput, ClrDatalistModule, ClrDateContainer, ClrDateInput, ClrDatepickerModule, ClrDatepickerViewManager, ClrDay, ClrDaypicker, ClrDestroyService, ClrDragAndDropModule, ClrDragEvent, ClrDragHandle, ClrDraggable, ClrDraggableGhost, ClrDropdown, ClrDropdownItem, ClrDropdownMenu, ClrDropdownModule, ClrDropdownTrigger, ClrDroppable, ClrEmphasisModule, ClrExpandableAnimation, ClrFocusOnViewInit, ClrFocusOnViewInitModule, ClrForTypeAhead, ClrForTypeAheadModule, ClrForm, ClrFormLayout, ClrFormsModule, ClrHeader, ClrIconCustomTag, ClrIconModule, ClrIfActive, ClrIfDetail, ClrIfDragged, ClrIfError, ClrIfExpanded, ClrIfOpen, ClrIfSuccess, ClrInput, ClrInputContainer, ClrInputModule, ClrLabel, ClrLayout, ClrLayoutModule, ClrLoading, ClrLoadingButton, ClrLoadingButtonModule, ClrLoadingModule, ClrLoadingState, ClrMainContainer, ClrMainContainerModule, ClrModal, ClrModalBody, ClrModalModule, ClrMonthpicker, ClrNavLevel, ClrNavigationModule, ClrOption, ClrOptionItems, ClrOptionSelected, ClrOptions, ClrPassword, ClrPasswordContainer, ClrPasswordModule, ClrPopoverAnchor, ClrPopoverContent, ClrPopoverEventsService, ClrPopoverModule, ClrPopoverPositionService, ClrPopoverToggleService, ClrProgressBar, ClrProgressBarModule, ClrRadio, ClrRadioContainer, ClrRadioModule, ClrRadioWrapper, ClrRange, ClrRangeContainer, ClrRangeModule, ClrRecursiveForOf, ClrSelect, ClrSelectContainer, ClrSelectModule, ClrSelectedState, ClrSide, ClrSignpost, ClrSignpostContent, ClrSignpostModule, ClrSignpostTrigger, ClrSpinner, ClrSpinnerModule, ClrStackBlock, ClrStackContentInput, ClrStackHeader, ClrStackInput, ClrStackSelect, ClrStackView, ClrStackViewCustomTags, ClrStackViewLabel, ClrStackViewModule, ClrStepButton, ClrStepButtonType, ClrStepper, ClrStepperModule, ClrStepperPanel, ClrTab, ClrTabContent, ClrTabLink, ClrTabOverflowContent, ClrTabs, ClrTabsModule, ClrTextarea, ClrTextareaContainer, ClrTextareaModule, ClrTimeline, ClrTimelineLayout, ClrTimelineModule, ClrTimelineStep, ClrTimelineStepDescription, ClrTimelineStepHeader, ClrTimelineStepState, ClrTimelineStepTitle, ClrTooltip, ClrTooltipContent, ClrTooltipModule, ClrTooltipTrigger, ClrTree, ClrTreeNode, ClrTreeNodeLink, ClrTreeViewModule, ClrVerticalNav, ClrVerticalNavGroup, ClrVerticalNavGroupChildren, ClrVerticalNavIcon, ClrVerticalNavLink, ClrVerticalNavModule, ClrWizard, ClrWizardButton, ClrWizardCustomTags, ClrWizardHeaderAction, ClrWizardModule, ClrWizardPage, ClrWizardPageButtons, ClrWizardPageHeaderActions, ClrWizardPageNavTitle, ClrWizardPageTitle, ClrWizardStepnav, ClrWizardStepnavItem, ClrYearpicker, DEFAULT_BUTTON_TYPES, DatagridNumericFilter, DatagridPropertyComparator, DatagridPropertyNumericFilter, DatagridPropertyStringFilter, DatagridStringFilter, EXPANDABLE_ANIMATION_DIRECTIVES, FOCUS_ON_VIEW_INIT, FOCUS_ON_VIEW_INIT_DIRECTIVES, IS_TOGGLE, IS_TOGGLE_PROVIDER, LoadingListener, MainContainerWillyWonka, NavDetectionOompaLoompa, TOGGLE_SERVICE, TOGGLE_SERVICE_PROVIDER, ToggleServiceFactory, WrappedFormControl, collapse, commonStringsDefault, fade, fadeSlide, isToggleFactory, slide, AccordionOompaLoompa as ÇlrAccordionOompaLoompa, AccordionWillyWonka as ÇlrAccordionWillyWonka, ActionableOompaLoompa as ÇlrActionableOompaLoompa, ActiveOompaLoompa as ÇlrActiveOompaLoompa, ClrFocusTrapModule as ÇlrClrFocusTrapModule, ClrPopoverCloseButton as ÇlrClrPopoverCloseButton, ClrPopoverModuleNext as ÇlrClrPopoverModuleNext, ClrPopoverOpenCloseButton as ÇlrClrPopoverOpenCloseButton, DatagridCellRenderer as ÇlrDatagridCellRenderer, DatagridDetailRegisterer as ÇlrDatagridDetailRegisterer, DatagridHeaderRenderer as ÇlrDatagridHeaderRenderer, DatagridMainRenderer as ÇlrDatagridMainRenderer, DatagridRowRenderer as ÇlrDatagridRowRenderer, DatagridWillyWonka as ÇlrDatagridWillyWonka, ExpandableOompaLoompa as ÇlrExpandableOompaLoompa, FocusTrapDirective as ÇlrFocusTrapDirective, FocusTrapTracker as ÇlrFocusTrapTracker, StepperOompaLoompa as ÇlrStepperOompaLoompa, StepperWillyWonka as ÇlrStepperWillyWonka, TabsWillyWonka as ÇlrTabsWillyWonka, WrappedCell as ÇlrWrappedCell, WrappedColumn as ÇlrWrappedColumn, WrappedRow as ÇlrWrappedRow };
|
|
28064
27963
|
//# sourceMappingURL=clr-angular.mjs.map
|