@clr/angular 13.4.2 → 13.5.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 -9
- 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/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 +158 -41
- package/fesm2015/clr-angular.mjs.map +1 -1
- package/fesm2020/clr-angular.mjs +156 -41
- package/fesm2020/clr-angular.mjs.map +1 -1
- package/package.json +3 -3
- package/utils/focus/key-focus/index.d.ts +2 -0
package/fesm2015/clr-angular.mjs
CHANGED
|
@@ -5,7 +5,7 @@ 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';
|
|
@@ -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: [{
|
|
@@ -18291,6 +18399,7 @@ ClrDatagridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versi
|
|
|
18291
18399
|
ClrDragAndDropModule,
|
|
18292
18400
|
ClrSpinnerModule,
|
|
18293
18401
|
ClrPopoverModuleNext,
|
|
18402
|
+
ClrKeyFocusModule,
|
|
18294
18403
|
ClrFocusTrapModule,
|
|
18295
18404
|
ClrFocusOnViewInitModule], exports: [
|
|
18296
18405
|
// Core
|
|
@@ -18346,6 +18455,7 @@ ClrDatagridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", versi
|
|
|
18346
18455
|
ClrDragAndDropModule,
|
|
18347
18456
|
ClrSpinnerModule,
|
|
18348
18457
|
ClrPopoverModuleNext,
|
|
18458
|
+
ClrKeyFocusModule,
|
|
18349
18459
|
ClrFocusTrapModule,
|
|
18350
18460
|
ClrFocusOnViewInitModule,
|
|
18351
18461
|
]] });
|
|
@@ -18364,12 +18474,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
18364
18474
|
ClrDragAndDropModule,
|
|
18365
18475
|
ClrSpinnerModule,
|
|
18366
18476
|
ClrPopoverModuleNext,
|
|
18477
|
+
ClrKeyFocusModule,
|
|
18367
18478
|
ClrFocusTrapModule,
|
|
18368
18479
|
ClrFocusOnViewInitModule,
|
|
18369
18480
|
],
|
|
18370
18481
|
declarations: [CLR_DATAGRID_DIRECTIVES],
|
|
18371
18482
|
exports: [CLR_DATAGRID_DIRECTIVES],
|
|
18372
|
-
entryComponents: [WrappedCell, WrappedColumn, WrappedRow],
|
|
18373
18483
|
}]
|
|
18374
18484
|
}], ctorParameters: function () { return []; } });
|
|
18375
18485
|
|
|
@@ -19985,7 +20095,9 @@ ClrDataModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
|
|
|
19985
20095
|
ClrDataModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDataModule, imports: [ClrDatagridModule, ClrStackViewModule, ClrTreeViewModule] });
|
|
19986
20096
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrDataModule, decorators: [{
|
|
19987
20097
|
type: NgModule,
|
|
19988
|
-
args: [{
|
|
20098
|
+
args: [{
|
|
20099
|
+
exports: [ClrDatagridModule, ClrStackViewModule, ClrTreeViewModule],
|
|
20100
|
+
}]
|
|
19989
20101
|
}] });
|
|
19990
20102
|
|
|
19991
20103
|
/*
|
|
@@ -21547,7 +21659,9 @@ ClrEmphasisModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versi
|
|
|
21547
21659
|
ClrEmphasisModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrEmphasisModule, imports: [ClrAlertModule] });
|
|
21548
21660
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrEmphasisModule, decorators: [{
|
|
21549
21661
|
type: NgModule,
|
|
21550
|
-
args: [{
|
|
21662
|
+
args: [{
|
|
21663
|
+
exports: [ClrAlertModule],
|
|
21664
|
+
}]
|
|
21551
21665
|
}] });
|
|
21552
21666
|
|
|
21553
21667
|
/*
|
|
@@ -22337,7 +22451,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
|
|
|
22337
22451
|
args: [{
|
|
22338
22452
|
imports: [CommonModule],
|
|
22339
22453
|
declarations: [TEMPLATE_REF_DIRECTIVES],
|
|
22340
|
-
entryComponents: [TEMPLATE_REF_DIRECTIVES],
|
|
22341
22454
|
exports: [TEMPLATE_REF_DIRECTIVES],
|
|
22342
22455
|
}]
|
|
22343
22456
|
}] });
|
|
@@ -23537,7 +23650,9 @@ ClrLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version
|
|
|
23537
23650
|
ClrLayoutModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrLayoutModule, imports: [ClrMainContainerModule, ClrNavigationModule, ClrTabsModule, ClrVerticalNavModule] });
|
|
23538
23651
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrLayoutModule, decorators: [{
|
|
23539
23652
|
type: NgModule,
|
|
23540
|
-
args: [{
|
|
23653
|
+
args: [{
|
|
23654
|
+
exports: [ClrMainContainerModule, ClrNavigationModule, ClrTabsModule, ClrVerticalNavModule],
|
|
23655
|
+
}]
|
|
23541
23656
|
}] });
|
|
23542
23657
|
|
|
23543
23658
|
/*
|
|
@@ -24270,7 +24385,9 @@ ClrPopoverModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
|
|
|
24270
24385
|
ClrPopoverModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrPopoverModule, imports: [ClrDropdownModule, ClrSignpostModule, ClrTooltipModule] });
|
|
24271
24386
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ClrPopoverModule, decorators: [{
|
|
24272
24387
|
type: NgModule,
|
|
24273
|
-
args: [{
|
|
24388
|
+
args: [{
|
|
24389
|
+
exports: [ClrDropdownModule, ClrSignpostModule, ClrTooltipModule],
|
|
24390
|
+
}]
|
|
24274
24391
|
}] });
|
|
24275
24392
|
|
|
24276
24393
|
/*
|