@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/fesm2020/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
|
/*
|
|
@@ -1192,9 +1196,7 @@ class ClrStepper {
|
|
|
1192
1196
|
this.subscriptions.forEach(s => s.unsubscribe());
|
|
1193
1197
|
}
|
|
1194
1198
|
listenForFormResetChanges() {
|
|
1195
|
-
return this.form.
|
|
1196
|
-
.pipe(filter(() => this.form.pristine)) // https://github.com/angular/angular/issues/10887
|
|
1197
|
-
.subscribe(() => this.stepperService.resetPanels());
|
|
1199
|
+
return fromControlReset(this.form.form).subscribe(() => this.stepperService.resetPanels());
|
|
1198
1200
|
}
|
|
1199
1201
|
listenForPanelsCompleted() {
|
|
1200
1202
|
return this.stepperService.panelsCompleted.subscribe(panelsCompleted => {
|
|
@@ -1244,6 +1246,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
1244
1246
|
type: ContentChildren,
|
|
1245
1247
|
args: [ClrStepperPanel, { descendants: true }]
|
|
1246
1248
|
}] } });
|
|
1249
|
+
function fromControlReset(control) {
|
|
1250
|
+
return new Observable(observer => {
|
|
1251
|
+
const unpatchedControlReset = control.reset;
|
|
1252
|
+
control.reset = () => {
|
|
1253
|
+
observer.next();
|
|
1254
|
+
unpatchedControlReset.apply(control);
|
|
1255
|
+
};
|
|
1256
|
+
return () => {
|
|
1257
|
+
control.reset = unpatchedControlReset;
|
|
1258
|
+
};
|
|
1259
|
+
});
|
|
1260
|
+
}
|
|
1247
1261
|
|
|
1248
1262
|
/*
|
|
1249
1263
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
@@ -2962,7 +2976,10 @@ ClrHostWrappingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", v
|
|
|
2962
2976
|
ClrHostWrappingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrHostWrappingModule });
|
|
2963
2977
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrHostWrappingModule, decorators: [{
|
|
2964
2978
|
type: NgModule,
|
|
2965
|
-
args: [{
|
|
2979
|
+
args: [{
|
|
2980
|
+
declarations: [EmptyAnchor],
|
|
2981
|
+
exports: [EmptyAnchor],
|
|
2982
|
+
}]
|
|
2966
2983
|
}] });
|
|
2967
2984
|
|
|
2968
2985
|
/*
|
|
@@ -4108,7 +4125,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
4108
4125
|
ClrControlContainer,
|
|
4109
4126
|
ClrControl,
|
|
4110
4127
|
],
|
|
4111
|
-
entryComponents: [ClrControlContainer],
|
|
4112
4128
|
}]
|
|
4113
4129
|
}], ctorParameters: function () { return []; } });
|
|
4114
4130
|
|
|
@@ -4343,7 +4359,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
4343
4359
|
imports: [CommonModule, ClrIconModule, ClrCommonFormsModule, ClrHostWrappingModule],
|
|
4344
4360
|
declarations: [ClrCheckbox, ClrCheckboxContainer, ClrCheckboxWrapper],
|
|
4345
4361
|
exports: [ClrCommonFormsModule, ClrCheckbox, ClrCheckboxContainer, ClrCheckboxWrapper],
|
|
4346
|
-
entryComponents: [ClrCheckboxWrapper],
|
|
4347
4362
|
}]
|
|
4348
4363
|
}], ctorParameters: function () { return []; } });
|
|
4349
4364
|
|
|
@@ -4831,7 +4846,11 @@ ClrConditionalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", ve
|
|
|
4831
4846
|
ClrConditionalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrConditionalModule, imports: [[CommonModule]] });
|
|
4832
4847
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrConditionalModule, decorators: [{
|
|
4833
4848
|
type: NgModule,
|
|
4834
|
-
args: [{
|
|
4849
|
+
args: [{
|
|
4850
|
+
imports: [CommonModule],
|
|
4851
|
+
declarations: [CONDITIONAL_DIRECTIVES],
|
|
4852
|
+
exports: [CONDITIONAL_DIRECTIVES],
|
|
4853
|
+
}]
|
|
4835
4854
|
}] });
|
|
4836
4855
|
|
|
4837
4856
|
/*
|
|
@@ -6734,7 +6753,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
6734
6753
|
imports: [CommonModule, FormsModule, ClrIconModule, ClrCommonFormsModule],
|
|
6735
6754
|
declarations: [ClrInput, ClrInputContainer],
|
|
6736
6755
|
exports: [ClrCommonFormsModule, ClrInput, ClrInputContainer],
|
|
6737
|
-
entryComponents: [ClrInputContainer],
|
|
6738
6756
|
}]
|
|
6739
6757
|
}], ctorParameters: function () { return []; } });
|
|
6740
6758
|
|
|
@@ -9433,7 +9451,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
9433
9451
|
],
|
|
9434
9452
|
declarations: [CLR_DATEPICKER_DIRECTIVES],
|
|
9435
9453
|
exports: [CLR_DATEPICKER_DIRECTIVES],
|
|
9436
|
-
entryComponents: [ClrDateContainer],
|
|
9437
9454
|
}]
|
|
9438
9455
|
}], ctorParameters: function () { return []; } });
|
|
9439
9456
|
|
|
@@ -9667,7 +9684,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
9667
9684
|
imports: [CommonModule, FormsModule, ClrIconModule, ClrCommonFormsModule],
|
|
9668
9685
|
declarations: [ClrPassword, ClrPasswordContainer],
|
|
9669
9686
|
exports: [ClrCommonFormsModule, ClrPassword, ClrPasswordContainer],
|
|
9670
|
-
entryComponents: [ClrPasswordContainer],
|
|
9671
9687
|
}]
|
|
9672
9688
|
}], ctorParameters: function () { return []; } });
|
|
9673
9689
|
|
|
@@ -9868,7 +9884,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
9868
9884
|
imports: [CommonModule, ClrCommonFormsModule, ClrHostWrappingModule, ClrIconModule],
|
|
9869
9885
|
declarations: [ClrRadio, ClrRadioContainer, ClrRadioWrapper],
|
|
9870
9886
|
exports: [ClrCommonFormsModule, ClrRadio, ClrRadioContainer, ClrRadioWrapper],
|
|
9871
|
-
entryComponents: [ClrRadioWrapper],
|
|
9872
9887
|
}]
|
|
9873
9888
|
}], ctorParameters: function () { return []; } });
|
|
9874
9889
|
|
|
@@ -10024,7 +10039,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
10024
10039
|
imports: [CommonModule, ClrCommonFormsModule, ClrHostWrappingModule, ClrIconModule],
|
|
10025
10040
|
declarations: [ClrRange, ClrRangeContainer],
|
|
10026
10041
|
exports: [ClrCommonFormsModule, ClrRange, ClrRangeContainer],
|
|
10027
|
-
entryComponents: [ClrRangeContainer],
|
|
10028
10042
|
}]
|
|
10029
10043
|
}], ctorParameters: function () { return []; } });
|
|
10030
10044
|
|
|
@@ -10170,7 +10184,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
10170
10184
|
imports: [CommonModule, FormsModule, ClrIconModule, ClrCommonFormsModule],
|
|
10171
10185
|
declarations: [ClrSelect, ClrSelectContainer],
|
|
10172
10186
|
exports: [ClrCommonFormsModule, ClrSelect, ClrSelectContainer],
|
|
10173
|
-
entryComponents: [ClrSelectContainer],
|
|
10174
10187
|
}]
|
|
10175
10188
|
}], ctorParameters: function () { return []; } });
|
|
10176
10189
|
|
|
@@ -10291,7 +10304,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
10291
10304
|
imports: [CommonModule, FormsModule, ClrIconModule, ClrCommonFormsModule],
|
|
10292
10305
|
declarations: [ClrTextarea, ClrTextareaContainer],
|
|
10293
10306
|
exports: [ClrCommonFormsModule, ClrTextarea, ClrTextareaContainer],
|
|
10294
|
-
entryComponents: [ClrTextareaContainer],
|
|
10295
10307
|
}]
|
|
10296
10308
|
}], ctorParameters: function () { return []; } });
|
|
10297
10309
|
|
|
@@ -11412,7 +11424,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
11412
11424
|
args: [{
|
|
11413
11425
|
imports: [CommonModule],
|
|
11414
11426
|
declarations: [CLR_DRAG_AND_DROP_DIRECTIVES],
|
|
11415
|
-
entryComponents: [ClrDraggableGhost],
|
|
11416
11427
|
exports: [CLR_DRAG_AND_DROP_DIRECTIVES],
|
|
11417
11428
|
}]
|
|
11418
11429
|
}] });
|
|
@@ -11547,7 +11558,11 @@ ClrLoadingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
|
|
|
11547
11558
|
ClrLoadingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrLoadingModule, imports: [[CommonModule]] });
|
|
11548
11559
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrLoadingModule, decorators: [{
|
|
11549
11560
|
type: NgModule,
|
|
11550
|
-
args: [{
|
|
11561
|
+
args: [{
|
|
11562
|
+
imports: [CommonModule],
|
|
11563
|
+
declarations: [CLR_LOADING_DIRECTIVES],
|
|
11564
|
+
exports: [CLR_LOADING_DIRECTIVES],
|
|
11565
|
+
}]
|
|
11551
11566
|
}] });
|
|
11552
11567
|
|
|
11553
11568
|
/*
|
|
@@ -11615,7 +11630,11 @@ ClrOutsideClickModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", v
|
|
|
11615
11630
|
ClrOutsideClickModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrOutsideClickModule, imports: [[CommonModule]] });
|
|
11616
11631
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrOutsideClickModule, decorators: [{
|
|
11617
11632
|
type: NgModule,
|
|
11618
|
-
args: [{
|
|
11633
|
+
args: [{
|
|
11634
|
+
imports: [CommonModule],
|
|
11635
|
+
declarations: [OUSTIDE_CLICK_DIRECTIVES],
|
|
11636
|
+
exports: [OUSTIDE_CLICK_DIRECTIVES],
|
|
11637
|
+
}]
|
|
11619
11638
|
}] });
|
|
11620
11639
|
|
|
11621
11640
|
/*
|
|
@@ -14505,6 +14524,10 @@ class Selection {
|
|
|
14505
14524
|
* Subscriptions to the other providers changes.
|
|
14506
14525
|
*/
|
|
14507
14526
|
this.subscriptions = [];
|
|
14527
|
+
/**
|
|
14528
|
+
* Shift key state, for use in range selection.
|
|
14529
|
+
*/
|
|
14530
|
+
this.shiftPressed = false;
|
|
14508
14531
|
this.valueCollector = new Subject();
|
|
14509
14532
|
/**
|
|
14510
14533
|
* The Observable that lets other classes subscribe to selection changes
|
|
@@ -14887,7 +14910,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
14887
14910
|
*/
|
|
14888
14911
|
let nbRow = 0;
|
|
14889
14912
|
class ClrDatagridRow {
|
|
14890
|
-
constructor(selection, rowActionService, globalExpandable, expand, detailService, displayMode, vcr, renderer, el, commonStrings) {
|
|
14913
|
+
constructor(selection, rowActionService, globalExpandable, expand, detailService, displayMode, vcr, renderer, el, commonStrings, items, document) {
|
|
14891
14914
|
this.selection = selection;
|
|
14892
14915
|
this.rowActionService = rowActionService;
|
|
14893
14916
|
this.globalExpandable = globalExpandable;
|
|
@@ -14898,6 +14921,8 @@ class ClrDatagridRow {
|
|
|
14898
14921
|
this.renderer = renderer;
|
|
14899
14922
|
this.el = el;
|
|
14900
14923
|
this.commonStrings = commonStrings;
|
|
14924
|
+
this.items = items;
|
|
14925
|
+
this.document = document;
|
|
14901
14926
|
/* reference to the enum so that template can access */
|
|
14902
14927
|
this.SELECTION_TYPE = SelectionType;
|
|
14903
14928
|
this.expandAnimationTrigger = false;
|
|
@@ -14928,6 +14953,24 @@ class ClrDatagridRow {
|
|
|
14928
14953
|
}
|
|
14929
14954
|
}));
|
|
14930
14955
|
}
|
|
14956
|
+
/**
|
|
14957
|
+
* The default behavior in Chrome and Firefox for shift-clicking on a label is to perform text-selection.
|
|
14958
|
+
* This prevents our intended range-selection, because this text-selection overrides our shift-click event.
|
|
14959
|
+
* We need to clear the stored selection range when shift-clicking. This will override the mostly unused shift-click
|
|
14960
|
+
* selection browser functionality, which is inconsistently implemented in browsers anyway.
|
|
14961
|
+
*/
|
|
14962
|
+
clearRanges(event) {
|
|
14963
|
+
if (event.shiftKey) {
|
|
14964
|
+
this.document.getSelection().removeAllRanges();
|
|
14965
|
+
// Firefox is too persistent about its text-selection behaviour. So we need to add a preventDefault();
|
|
14966
|
+
// We should not try to enforce this on the other browsers, though, because their toggle cycle does not get canceled by
|
|
14967
|
+
// the preventDefault() and they toggle the checkbox second time, effectively retrurning it to not-selected.
|
|
14968
|
+
if (window.navigator.userAgent.indexOf('Firefox') !== -1) {
|
|
14969
|
+
event.preventDefault();
|
|
14970
|
+
this.toggle(true);
|
|
14971
|
+
}
|
|
14972
|
+
}
|
|
14973
|
+
}
|
|
14931
14974
|
/**
|
|
14932
14975
|
* Indicates if the row is selected
|
|
14933
14976
|
*/
|
|
@@ -14944,6 +14987,12 @@ class ClrDatagridRow {
|
|
|
14944
14987
|
this._selected = value;
|
|
14945
14988
|
}
|
|
14946
14989
|
else {
|
|
14990
|
+
if (value && this.selection.selectionType === SelectionType.Multi) {
|
|
14991
|
+
this.rangeSelect();
|
|
14992
|
+
}
|
|
14993
|
+
else {
|
|
14994
|
+
this.selection.rangeStart = null;
|
|
14995
|
+
}
|
|
14947
14996
|
this.selection.setSelected(this.item, value);
|
|
14948
14997
|
}
|
|
14949
14998
|
}
|
|
@@ -15031,6 +15080,29 @@ class ClrDatagridRow {
|
|
|
15031
15080
|
this.expandAnimationTrigger = !this.expandAnimationTrigger;
|
|
15032
15081
|
}));
|
|
15033
15082
|
}
|
|
15083
|
+
rangeSelect() {
|
|
15084
|
+
const items = this.items.displayed;
|
|
15085
|
+
if (!items) {
|
|
15086
|
+
return;
|
|
15087
|
+
}
|
|
15088
|
+
const startIx = items.indexOf(this.selection.rangeStart);
|
|
15089
|
+
if (this.selection.rangeStart &&
|
|
15090
|
+
this.selection.current.includes(this.selection.rangeStart) &&
|
|
15091
|
+
this.selection.shiftPressed &&
|
|
15092
|
+
startIx !== -1) {
|
|
15093
|
+
const endIx = items.indexOf(this.item);
|
|
15094
|
+
// Using Set to remove duplicates
|
|
15095
|
+
const newSelection = new Set(this.selection.current.concat(items.slice(Math.min(startIx, endIx), Math.max(startIx, endIx) + 1)));
|
|
15096
|
+
this.selection.clearSelection();
|
|
15097
|
+
this.selection.current.push(...newSelection);
|
|
15098
|
+
}
|
|
15099
|
+
else {
|
|
15100
|
+
// page number has changed or
|
|
15101
|
+
// no Shift was pressed or
|
|
15102
|
+
// rangeStart not yet set
|
|
15103
|
+
this.selection.rangeStart = this.item;
|
|
15104
|
+
}
|
|
15105
|
+
}
|
|
15034
15106
|
ngOnDestroy() {
|
|
15035
15107
|
this.subscriptions.forEach((sub) => sub.unsubscribe());
|
|
15036
15108
|
}
|
|
@@ -15042,12 +15114,12 @@ class ClrDatagridRow {
|
|
|
15042
15114
|
return this.wrappedInjector.get(WrappedRow, this.vcr).rowView;
|
|
15043
15115
|
}
|
|
15044
15116
|
}
|
|
15045
|
-
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 });
|
|
15117
|
+
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 });
|
|
15046
15118
|
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: [
|
|
15047
15119
|
DatagridIfExpandService,
|
|
15048
15120
|
{ provide: IfExpandService, useExisting: DatagridIfExpandService },
|
|
15049
15121
|
{ provide: LoadingListener, useExisting: DatagridIfExpandService },
|
|
15050
|
-
], 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" }] });
|
|
15122
|
+
], 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" }] });
|
|
15051
15123
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagridRow, decorators: [{
|
|
15052
15124
|
type: Component,
|
|
15053
15125
|
args: [{ selector: 'clr-dg-row', host: {
|
|
@@ -15059,8 +15131,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
15059
15131
|
DatagridIfExpandService,
|
|
15060
15132
|
{ provide: IfExpandService, useExisting: DatagridIfExpandService },
|
|
15061
15133
|
{ provide: LoadingListener, useExisting: DatagridIfExpandService },
|
|
15062
|
-
], 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" }]
|
|
15063
|
-
}], ctorParameters: function () { return [{ type: Selection }, { type: RowActionService }, { type: ExpandableRowsCount }, { type: DatagridIfExpandService }, { type: DetailService }, { type: DisplayModeService }, { type: i0.ViewContainerRef }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: ClrCommonStringsService }
|
|
15134
|
+
], 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" }]
|
|
15135
|
+
}], ctorParameters: function () { 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: [{
|
|
15136
|
+
type: Inject,
|
|
15137
|
+
args: [DOCUMENT]
|
|
15138
|
+
}] }]; }, propDecorators: { expandAnimation: [{
|
|
15064
15139
|
type: ViewChild,
|
|
15065
15140
|
args: [ClrExpandableAnimation]
|
|
15066
15141
|
}], item: [{
|
|
@@ -15408,7 +15483,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
15408
15483
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15409
15484
|
*/
|
|
15410
15485
|
class ClrDatagrid {
|
|
15411
|
-
constructor(organizer, items, expandableRows, selection, rowActionService, stateProvider, displayMode, renderer, detailService, datagridId, el, page, commonStrings, columnsService, keyNavigation) {
|
|
15486
|
+
constructor(organizer, items, expandableRows, selection, rowActionService, stateProvider, displayMode, renderer, detailService, datagridId, document, el, page, commonStrings, columnsService, keyNavigation, zone) {
|
|
15412
15487
|
this.organizer = organizer;
|
|
15413
15488
|
this.items = items;
|
|
15414
15489
|
this.expandableRows = expandableRows;
|
|
@@ -15418,11 +15493,13 @@ class ClrDatagrid {
|
|
|
15418
15493
|
this.displayMode = displayMode;
|
|
15419
15494
|
this.renderer = renderer;
|
|
15420
15495
|
this.detailService = detailService;
|
|
15496
|
+
this.document = document;
|
|
15421
15497
|
this.el = el;
|
|
15422
15498
|
this.page = page;
|
|
15423
15499
|
this.commonStrings = commonStrings;
|
|
15424
15500
|
this.columnsService = columnsService;
|
|
15425
15501
|
this.keyNavigation = keyNavigation;
|
|
15502
|
+
this.zone = zone;
|
|
15426
15503
|
/* reference to the enum so that template can access */
|
|
15427
15504
|
this.SELECTION_TYPE = SelectionType;
|
|
15428
15505
|
/**
|
|
@@ -15607,6 +15684,19 @@ class ClrDatagrid {
|
|
|
15607
15684
|
});
|
|
15608
15685
|
}
|
|
15609
15686
|
}));
|
|
15687
|
+
// We need to preserve shift state, so it can be used on selection change, regardless of the input event
|
|
15688
|
+
// that triggered the change. This helps us to easily resolve the k/b only case together with the mouse selection case.
|
|
15689
|
+
this.zone.runOutsideAngular(() => {
|
|
15690
|
+
this._subscriptions.push(fromEvent(this.document.body, 'keydown').subscribe((event) => {
|
|
15691
|
+
if (event.key === 'Shift') {
|
|
15692
|
+
this.selection.shiftPressed = true;
|
|
15693
|
+
}
|
|
15694
|
+
}), fromEvent(this.document.body, 'keyup').subscribe((event) => {
|
|
15695
|
+
if (event.key === 'Shift') {
|
|
15696
|
+
this.selection.shiftPressed = false;
|
|
15697
|
+
}
|
|
15698
|
+
}));
|
|
15699
|
+
});
|
|
15610
15700
|
}
|
|
15611
15701
|
ngOnDestroy() {
|
|
15612
15702
|
this._subscriptions.forEach((sub) => sub.unsubscribe());
|
|
@@ -15615,7 +15705,7 @@ class ClrDatagrid {
|
|
|
15615
15705
|
this.organizer.resize();
|
|
15616
15706
|
}
|
|
15617
15707
|
}
|
|
15618
|
-
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 });
|
|
15708
|
+
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 });
|
|
15619
15709
|
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: [
|
|
15620
15710
|
Selection,
|
|
15621
15711
|
Sort,
|
|
@@ -15660,7 +15750,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
15660
15750
|
}], ctorParameters: function () { return [{ type: DatagridRenderOrganizer }, { type: Items }, { type: ExpandableRowsCount }, { type: Selection }, { type: RowActionService }, { type: StateProvider }, { type: DisplayModeService }, { type: i0.Renderer2 }, { type: DetailService }, { type: undefined, decorators: [{
|
|
15661
15751
|
type: Inject,
|
|
15662
15752
|
args: [UNIQUE_ID]
|
|
15663
|
-
}] }, { type:
|
|
15753
|
+
}] }, { type: undefined, decorators: [{
|
|
15754
|
+
type: Inject,
|
|
15755
|
+
args: [DOCUMENT]
|
|
15756
|
+
}] }, { type: i0.ElementRef }, { type: Page }, { type: ClrCommonStringsService }, { type: ColumnsService }, { type: KeyNavigationGridController }, { type: i0.NgZone }]; }, propDecorators: { loading: [{
|
|
15664
15757
|
type: Input,
|
|
15665
15758
|
args: ['clrDgLoading']
|
|
15666
15759
|
}], refresh: [{
|
|
@@ -15741,6 +15834,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
15741
15834
|
}]
|
|
15742
15835
|
}] });
|
|
15743
15836
|
|
|
15837
|
+
/*
|
|
15838
|
+
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
15839
|
+
* This software is released under MIT license.
|
|
15840
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15841
|
+
*/
|
|
15842
|
+
|
|
15744
15843
|
/*
|
|
15745
15844
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
15746
15845
|
* This software is released under MIT license.
|
|
@@ -15768,7 +15867,7 @@ class ClrDatagridActionOverflow {
|
|
|
15768
15867
|
this.subscriptions.push(this.smartToggleService.openChange.subscribe(openState => {
|
|
15769
15868
|
this.open = openState;
|
|
15770
15869
|
if (openState) {
|
|
15771
|
-
this.
|
|
15870
|
+
this.initializeFocus();
|
|
15772
15871
|
}
|
|
15773
15872
|
}));
|
|
15774
15873
|
this.popoverId = 'clr-action-menu' + clrDgActionId++;
|
|
@@ -15780,13 +15879,15 @@ class ClrDatagridActionOverflow {
|
|
|
15780
15879
|
closeOverflowContent(event) {
|
|
15781
15880
|
this.smartToggleService.toggleWithEvent(event);
|
|
15782
15881
|
}
|
|
15783
|
-
|
|
15882
|
+
initializeFocus() {
|
|
15784
15883
|
if (isPlatformBrowser(this.platformId)) {
|
|
15785
15884
|
this.zone.runOutsideAngular(() => {
|
|
15786
15885
|
setTimeout(() => {
|
|
15787
|
-
const
|
|
15788
|
-
if (
|
|
15789
|
-
|
|
15886
|
+
const buttons = Array.from(document.querySelectorAll('button.action-item'));
|
|
15887
|
+
if (buttons.length) {
|
|
15888
|
+
this.keyFocus.current = 0;
|
|
15889
|
+
this.keyFocus.focusableItems = buttons;
|
|
15890
|
+
this.keyFocus.focusCurrent();
|
|
15790
15891
|
}
|
|
15791
15892
|
});
|
|
15792
15893
|
});
|
|
@@ -15806,7 +15907,7 @@ class ClrDatagridActionOverflow {
|
|
|
15806
15907
|
}
|
|
15807
15908
|
}
|
|
15808
15909
|
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 });
|
|
15809
|
-
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: `
|
|
15910
|
+
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: `
|
|
15810
15911
|
<button
|
|
15811
15912
|
class="datagrid-action-toggle"
|
|
15812
15913
|
type="button"
|
|
@@ -15827,13 +15928,14 @@ ClrDatagridActionOverflow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
|
|
|
15827
15928
|
[id]="popoverId"
|
|
15828
15929
|
[attr.aria-hidden]="!open"
|
|
15829
15930
|
[attr.id]="popoverId"
|
|
15931
|
+
clrKeyFocus
|
|
15830
15932
|
clrFocusTrap
|
|
15831
15933
|
(click)="closeOverflowContent($event)"
|
|
15832
15934
|
*clrPopoverContent="open; at: smartPosition; outsideClickToClose: true; scrollToClose: true"
|
|
15833
15935
|
>
|
|
15834
15936
|
<ng-content></ng-content>
|
|
15835
15937
|
</div>
|
|
15836
|
-
`, 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"] }] });
|
|
15938
|
+
`, 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"] }] });
|
|
15837
15939
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDatagridActionOverflow, decorators: [{
|
|
15838
15940
|
type: Component,
|
|
15839
15941
|
args: [{
|
|
@@ -15860,6 +15962,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
15860
15962
|
[id]="popoverId"
|
|
15861
15963
|
[attr.aria-hidden]="!open"
|
|
15862
15964
|
[attr.id]="popoverId"
|
|
15965
|
+
clrKeyFocus
|
|
15863
15966
|
clrFocusTrap
|
|
15864
15967
|
(click)="closeOverflowContent($event)"
|
|
15865
15968
|
*clrPopoverContent="open; at: smartPosition; outsideClickToClose: true; scrollToClose: true"
|
|
@@ -15874,7 +15977,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
15874
15977
|
}] }, { type: i0.NgZone }, { type: ClrPopoverToggleService }, { type: undefined, decorators: [{
|
|
15875
15978
|
type: Inject,
|
|
15876
15979
|
args: [UNIQUE_ID]
|
|
15877
|
-
}] }]; }, propDecorators: {
|
|
15980
|
+
}] }]; }, propDecorators: { keyFocus: [{
|
|
15981
|
+
type: ViewChild,
|
|
15982
|
+
args: [ClrKeyFocus]
|
|
15983
|
+
}], open: [{
|
|
15878
15984
|
type: Input,
|
|
15879
15985
|
args: ['clrDgActionOverflowOpen']
|
|
15880
15986
|
}], openChange: [{
|
|
@@ -16823,232 +16929,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
16823
16929
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16824
16930
|
*/
|
|
16825
16931
|
|
|
16826
|
-
/*
|
|
16827
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16828
|
-
* This software is released under MIT license.
|
|
16829
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16830
|
-
*/
|
|
16831
|
-
const FOCUSABLE_ELEMENT_SELECTORS = new InjectionToken('FocusableElements');
|
|
16832
|
-
const FOCUSABLE_ELEMENT_SELECTORS_PROVIDER = {
|
|
16833
|
-
provide: FOCUSABLE_ELEMENT_SELECTORS,
|
|
16834
|
-
useValue: [
|
|
16835
|
-
'a[href]',
|
|
16836
|
-
'area[href]',
|
|
16837
|
-
'input:not([disabled])',
|
|
16838
|
-
'button:not([disabled])',
|
|
16839
|
-
'select:not([disabled])',
|
|
16840
|
-
'textarea:not([disabled])',
|
|
16841
|
-
'iframe',
|
|
16842
|
-
'object',
|
|
16843
|
-
'embed',
|
|
16844
|
-
'*[tabindex]',
|
|
16845
|
-
'*[contenteditable=true]',
|
|
16846
|
-
'[role=button]:not([disabled])',
|
|
16847
|
-
],
|
|
16848
|
-
};
|
|
16849
|
-
|
|
16850
|
-
/*
|
|
16851
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16852
|
-
* This software is released under MIT license.
|
|
16853
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16854
|
-
*/
|
|
16855
|
-
const CLR_LIST_KEY_NAVIGATION_CONFIG = new InjectionToken('ClrListKeyNavigationConfig');
|
|
16856
|
-
const CLR_LIST_KEY_NAVIGATION_COFNIG_PROVIDER = {
|
|
16857
|
-
provide: CLR_LIST_KEY_NAVIGATION_CONFIG,
|
|
16858
|
-
useValue: {
|
|
16859
|
-
keyListItems: 'keyListItems',
|
|
16860
|
-
layout: 'vertical',
|
|
16861
|
-
manageFocus: true,
|
|
16862
|
-
manageTabindex: true,
|
|
16863
|
-
loop: false,
|
|
16864
|
-
dir: null,
|
|
16865
|
-
},
|
|
16866
|
-
};
|
|
16867
|
-
|
|
16868
|
-
/*
|
|
16869
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16870
|
-
* This software is released under MIT license.
|
|
16871
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16872
|
-
*/
|
|
16873
|
-
function getNextKeyListItem(item, items, config) {
|
|
16874
|
-
const { code, layout, loop, dir } = config;
|
|
16875
|
-
let i = items.indexOf(item);
|
|
16876
|
-
const previous = i;
|
|
16877
|
-
const inlineStart = dir === 'rtl' ? KeyNavigationCode.ArrowRight : KeyNavigationCode.ArrowLeft;
|
|
16878
|
-
const inlineEnd = dir === 'rtl' ? KeyNavigationCode.ArrowLeft : KeyNavigationCode.ArrowRight;
|
|
16879
|
-
const numOfItems = items.length - 1;
|
|
16880
|
-
if (layout !== 'horizontal' && code === KeyNavigationCode.ArrowUp && i !== 0) {
|
|
16881
|
-
i = i - 1;
|
|
16882
|
-
}
|
|
16883
|
-
else if (layout !== 'horizontal' && code === KeyNavigationCode.ArrowUp && i === 0 && loop) {
|
|
16884
|
-
i = numOfItems;
|
|
16885
|
-
}
|
|
16886
|
-
else if (layout !== 'horizontal' && code === KeyNavigationCode.ArrowDown && i < numOfItems) {
|
|
16887
|
-
i = i + 1;
|
|
16888
|
-
}
|
|
16889
|
-
else if (layout !== 'horizontal' && code === KeyNavigationCode.ArrowDown && i === numOfItems && loop) {
|
|
16890
|
-
i = 0;
|
|
16891
|
-
}
|
|
16892
|
-
else if (layout !== 'vertical' && code === inlineStart && i !== 0) {
|
|
16893
|
-
i = i - 1;
|
|
16894
|
-
}
|
|
16895
|
-
else if (layout !== 'vertical' && code === inlineEnd && i < numOfItems) {
|
|
16896
|
-
i = i + 1;
|
|
16897
|
-
}
|
|
16898
|
-
else if (code === KeyNavigationCode.End) {
|
|
16899
|
-
i = numOfItems;
|
|
16900
|
-
}
|
|
16901
|
-
else if (code === KeyNavigationCode.Home) {
|
|
16902
|
-
i = 0;
|
|
16903
|
-
}
|
|
16904
|
-
else if (code === KeyNavigationCode.PageUp) {
|
|
16905
|
-
i = i - 4 > 0 ? i - 4 : 0;
|
|
16906
|
-
}
|
|
16907
|
-
else if (code === KeyNavigationCode.PageDown) {
|
|
16908
|
-
i = i + 4 < numOfItems ? i + 4 : numOfItems;
|
|
16909
|
-
}
|
|
16910
|
-
return { next: i, previous };
|
|
16911
|
-
}
|
|
16912
|
-
|
|
16913
|
-
/*
|
|
16914
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
16915
|
-
* This software is released under MIT license.
|
|
16916
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
16917
|
-
*/
|
|
16918
|
-
class ClrKeyNavigationList {
|
|
16919
|
-
constructor(host, defaultConfig, focusableElementSelectors) {
|
|
16920
|
-
this.host = host;
|
|
16921
|
-
this.defaultConfig = defaultConfig;
|
|
16922
|
-
this.focusableElementSelectors = focusableElementSelectors;
|
|
16923
|
-
this.config = {
|
|
16924
|
-
...this.defaultConfig,
|
|
16925
|
-
dir: this.getClosestDirAttribute(),
|
|
16926
|
-
};
|
|
16927
|
-
}
|
|
16928
|
-
set configuration(config) {
|
|
16929
|
-
this.config = {
|
|
16930
|
-
...this.defaultConfig,
|
|
16931
|
-
dir: this.getClosestDirAttribute(),
|
|
16932
|
-
...config,
|
|
16933
|
-
};
|
|
16934
|
-
}
|
|
16935
|
-
ngAfterViewInit() {
|
|
16936
|
-
this.initializeTabIndex();
|
|
16937
|
-
}
|
|
16938
|
-
onClick(e) {
|
|
16939
|
-
this.clickItem(e);
|
|
16940
|
-
}
|
|
16941
|
-
onKeyDown(e) {
|
|
16942
|
-
this.focusItem(e);
|
|
16943
|
-
}
|
|
16944
|
-
initializeTabIndex() {
|
|
16945
|
-
if (this.config.manageFocus && this.config.manageTabindex) {
|
|
16946
|
-
initializeKeyListItems(this.getListItems());
|
|
16947
|
-
}
|
|
16948
|
-
}
|
|
16949
|
-
clickItem(e) {
|
|
16950
|
-
const activeItem = this.getActiveItem(e);
|
|
16951
|
-
if (activeItem) {
|
|
16952
|
-
this.setActiveItem(e, activeItem);
|
|
16953
|
-
}
|
|
16954
|
-
}
|
|
16955
|
-
focusItem(e) {
|
|
16956
|
-
if (validKeyNavigationCode(e)) {
|
|
16957
|
-
const activeItem = this.getActiveItem(e);
|
|
16958
|
-
if (activeItem) {
|
|
16959
|
-
const listItems = this.getListItems();
|
|
16960
|
-
const { next, previous } = getNextKeyListItem(activeItem, Array.from(listItems), {
|
|
16961
|
-
...this.config,
|
|
16962
|
-
dir: this.getClosestDirAttribute(),
|
|
16963
|
-
code: e.code,
|
|
16964
|
-
});
|
|
16965
|
-
if (next !== previous) {
|
|
16966
|
-
this.setActiveItem(e, listItems[next], listItems[previous]);
|
|
16967
|
-
}
|
|
16968
|
-
}
|
|
16969
|
-
}
|
|
16970
|
-
}
|
|
16971
|
-
getActiveItem(e) {
|
|
16972
|
-
const listItems = this.getListItems();
|
|
16973
|
-
return Array.from(listItems).find(c => c === e.target.closest(listItems[0].tagName.toLocaleLowerCase()) ?? c === e.target);
|
|
16974
|
-
}
|
|
16975
|
-
setActiveItem(e, activeItem, previousItem) {
|
|
16976
|
-
if (this.config.manageFocus) {
|
|
16977
|
-
if (this.config.manageTabindex) {
|
|
16978
|
-
setActiveKeyListItem(this.getListItems(), activeItem);
|
|
16979
|
-
}
|
|
16980
|
-
const items = getFlattenedFocusableItems(activeItem);
|
|
16981
|
-
const item = items[0] ?? activeItem;
|
|
16982
|
-
focusElement(item);
|
|
16983
|
-
e.preventDefault();
|
|
16984
|
-
}
|
|
16985
|
-
activeItem.dispatchEvent(new CustomEvent('cdsKeyChange', {
|
|
16986
|
-
bubbles: true,
|
|
16987
|
-
detail: {
|
|
16988
|
-
activeItem,
|
|
16989
|
-
previousItem,
|
|
16990
|
-
code: e.code,
|
|
16991
|
-
metaKey: e.ctrlKey || e.metaKey,
|
|
16992
|
-
keyListItems: this.config.keyListItems,
|
|
16993
|
-
},
|
|
16994
|
-
}));
|
|
16995
|
-
}
|
|
16996
|
-
getListItems() {
|
|
16997
|
-
return this.host.nativeElement.querySelectorAll(this.focusableElementSelectors.join(','));
|
|
16998
|
-
}
|
|
16999
|
-
getClosestDirAttribute() {
|
|
17000
|
-
const el = this.host.nativeElement.closest('[dir]');
|
|
17001
|
-
return el ? el.getAttribute('dir') : null;
|
|
17002
|
-
}
|
|
17003
|
-
}
|
|
17004
|
-
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 });
|
|
17005
|
-
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 });
|
|
17006
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrKeyNavigationList, decorators: [{
|
|
17007
|
-
type: Directive,
|
|
17008
|
-
args: [{
|
|
17009
|
-
selector: '[clrKeyNavigationList]',
|
|
17010
|
-
}]
|
|
17011
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: undefined, decorators: [{
|
|
17012
|
-
type: Inject,
|
|
17013
|
-
args: [CLR_LIST_KEY_NAVIGATION_CONFIG]
|
|
17014
|
-
}] }, { type: undefined, decorators: [{
|
|
17015
|
-
type: Inject,
|
|
17016
|
-
args: [FOCUSABLE_ELEMENT_SELECTORS]
|
|
17017
|
-
}] }]; }, propDecorators: { configuration: [{
|
|
17018
|
-
type: Input
|
|
17019
|
-
}], onClick: [{
|
|
17020
|
-
type: HostListener,
|
|
17021
|
-
args: ['click', ['$event']]
|
|
17022
|
-
}], onKeyDown: [{
|
|
17023
|
-
type: HostListener,
|
|
17024
|
-
args: ['keydown', ['$event']]
|
|
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 ClrKeyNavigationListModule {
|
|
17033
|
-
}
|
|
17034
|
-
ClrKeyNavigationListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrKeyNavigationListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
17035
|
-
ClrKeyNavigationListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrKeyNavigationListModule, declarations: [ClrKeyNavigationList], exports: [ClrKeyNavigationList] });
|
|
17036
|
-
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] });
|
|
17037
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrKeyNavigationListModule, decorators: [{
|
|
17038
|
-
type: NgModule,
|
|
17039
|
-
args: [{
|
|
17040
|
-
declarations: [ClrKeyNavigationList],
|
|
17041
|
-
exports: [ClrKeyNavigationList],
|
|
17042
|
-
providers: [CLR_LIST_KEY_NAVIGATION_COFNIG_PROVIDER, FOCUSABLE_ELEMENT_SELECTORS_PROVIDER],
|
|
17043
|
-
}]
|
|
17044
|
-
}] });
|
|
17045
|
-
|
|
17046
|
-
/*
|
|
17047
|
-
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
17048
|
-
* This software is released under MIT license.
|
|
17049
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
17050
|
-
*/
|
|
17051
|
-
|
|
17052
16932
|
/*
|
|
17053
16933
|
* Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
|
|
17054
16934
|
* This software is released under MIT license.
|
|
@@ -18401,6 +18281,7 @@ ClrDatagridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versi
|
|
|
18401
18281
|
ClrDragAndDropModule,
|
|
18402
18282
|
ClrSpinnerModule,
|
|
18403
18283
|
ClrPopoverModuleNext,
|
|
18284
|
+
ClrKeyFocusModule,
|
|
18404
18285
|
ClrFocusTrapModule,
|
|
18405
18286
|
ClrFocusOnViewInitModule], exports: [
|
|
18406
18287
|
// Core
|
|
@@ -18455,6 +18336,7 @@ ClrDatagridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", versi
|
|
|
18455
18336
|
ClrDragAndDropModule,
|
|
18456
18337
|
ClrSpinnerModule,
|
|
18457
18338
|
ClrPopoverModuleNext,
|
|
18339
|
+
ClrKeyFocusModule,
|
|
18458
18340
|
ClrFocusTrapModule,
|
|
18459
18341
|
ClrFocusOnViewInitModule,
|
|
18460
18342
|
]] });
|
|
@@ -18473,12 +18355,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
18473
18355
|
ClrDragAndDropModule,
|
|
18474
18356
|
ClrSpinnerModule,
|
|
18475
18357
|
ClrPopoverModuleNext,
|
|
18358
|
+
ClrKeyFocusModule,
|
|
18476
18359
|
ClrFocusTrapModule,
|
|
18477
18360
|
ClrFocusOnViewInitModule,
|
|
18478
18361
|
],
|
|
18479
18362
|
declarations: [CLR_DATAGRID_DIRECTIVES],
|
|
18480
18363
|
exports: [CLR_DATAGRID_DIRECTIVES],
|
|
18481
|
-
entryComponents: [WrappedCell, WrappedColumn, WrappedRow],
|
|
18482
18364
|
}]
|
|
18483
18365
|
}], ctorParameters: function () { return []; } });
|
|
18484
18366
|
|
|
@@ -20084,7 +19966,9 @@ ClrDataModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
|
|
|
20084
19966
|
ClrDataModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDataModule, imports: [ClrDatagridModule, ClrStackViewModule, ClrTreeViewModule] });
|
|
20085
19967
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDataModule, decorators: [{
|
|
20086
19968
|
type: NgModule,
|
|
20087
|
-
args: [{
|
|
19969
|
+
args: [{
|
|
19970
|
+
exports: [ClrDatagridModule, ClrStackViewModule, ClrTreeViewModule],
|
|
19971
|
+
}]
|
|
20088
19972
|
}] });
|
|
20089
19973
|
|
|
20090
19974
|
/*
|
|
@@ -21633,7 +21517,9 @@ ClrEmphasisModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versi
|
|
|
21633
21517
|
ClrEmphasisModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrEmphasisModule, imports: [ClrAlertModule] });
|
|
21634
21518
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrEmphasisModule, decorators: [{
|
|
21635
21519
|
type: NgModule,
|
|
21636
|
-
args: [{
|
|
21520
|
+
args: [{
|
|
21521
|
+
exports: [ClrAlertModule],
|
|
21522
|
+
}]
|
|
21637
21523
|
}] });
|
|
21638
21524
|
|
|
21639
21525
|
/*
|
|
@@ -22419,7 +22305,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
22419
22305
|
args: [{
|
|
22420
22306
|
imports: [CommonModule],
|
|
22421
22307
|
declarations: [TEMPLATE_REF_DIRECTIVES],
|
|
22422
|
-
entryComponents: [TEMPLATE_REF_DIRECTIVES],
|
|
22423
22308
|
exports: [TEMPLATE_REF_DIRECTIVES],
|
|
22424
22309
|
}]
|
|
22425
22310
|
}] });
|
|
@@ -23607,7 +23492,9 @@ ClrLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version
|
|
|
23607
23492
|
ClrLayoutModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrLayoutModule, imports: [ClrMainContainerModule, ClrNavigationModule, ClrTabsModule, ClrVerticalNavModule] });
|
|
23608
23493
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrLayoutModule, decorators: [{
|
|
23609
23494
|
type: NgModule,
|
|
23610
|
-
args: [{
|
|
23495
|
+
args: [{
|
|
23496
|
+
exports: [ClrMainContainerModule, ClrNavigationModule, ClrTabsModule, ClrVerticalNavModule],
|
|
23497
|
+
}]
|
|
23611
23498
|
}] });
|
|
23612
23499
|
|
|
23613
23500
|
/*
|
|
@@ -24332,7 +24219,9 @@ ClrPopoverModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
|
|
|
24332
24219
|
ClrPopoverModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrPopoverModule, imports: [ClrDropdownModule, ClrSignpostModule, ClrTooltipModule] });
|
|
24333
24220
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrPopoverModule, decorators: [{
|
|
24334
24221
|
type: NgModule,
|
|
24335
|
-
args: [{
|
|
24222
|
+
args: [{
|
|
24223
|
+
exports: [ClrDropdownModule, ClrSignpostModule, ClrTooltipModule],
|
|
24224
|
+
}]
|
|
24336
24225
|
}] });
|
|
24337
24226
|
|
|
24338
24227
|
/*
|
|
@@ -27927,5 +27816,5 @@ const CLR_MENU_POSITIONS = [
|
|
|
27927
27816
|
* Generated bundle index. Do not edit.
|
|
27928
27817
|
*/
|
|
27929
27818
|
|
|
27930
|
-
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,
|
|
27819
|
+
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 };
|
|
27931
27820
|
//# sourceMappingURL=clr-angular.mjs.map
|