@clr/angular 17.8.1 → 17.10.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 +100 -50
- package/data/datagrid/datagrid-row.d.ts +6 -4
- package/data/datagrid/datagrid-virtual-scroll.directive.d.ts +9 -2
- package/data/datagrid/datagrid.d.ts +11 -3
- package/data/datagrid/index.d.ts +1 -0
- package/data/datagrid/interfaces/key-nav-grid-strategy.interface.d.ts +11 -0
- package/data/datagrid/interfaces/virtual-scroll-data-range.interface.d.ts +5 -0
- package/data/datagrid/providers/items.d.ts +1 -0
- package/data/datagrid/utils/key-navigation-grid.controller.d.ts +1 -16
- package/data/datagrid/utils/key-navigation-strategies/default.d.ts +15 -0
- package/data/datagrid/utils/key-navigation-strategies/expanded-columns-row.d.ts +14 -0
- package/data/datagrid/utils/key-navigation-strategies/expanded-row.d.ts +14 -0
- package/data/datagrid/utils/key-navigation-utils.d.ts +22 -0
- package/data/tree-view/tree-node.d.ts +0 -1
- package/esm2020/data/datagrid/datagrid-column.mjs +8 -12
- package/esm2020/data/datagrid/datagrid-row.mjs +30 -10
- package/esm2020/data/datagrid/datagrid-virtual-scroll.directive.mjs +45 -10
- package/esm2020/data/datagrid/datagrid.mjs +48 -17
- package/esm2020/data/datagrid/index.mjs +2 -1
- package/esm2020/data/datagrid/interfaces/key-nav-grid-strategy.interface.mjs +8 -0
- package/esm2020/data/datagrid/interfaces/virtual-scroll-data-range.interface.mjs +8 -0
- package/esm2020/data/datagrid/providers/items.mjs +5 -1
- package/esm2020/data/datagrid/utils/key-navigation-grid.controller.mjs +18 -243
- package/esm2020/data/datagrid/utils/key-navigation-strategies/default.mjs +132 -0
- package/esm2020/data/datagrid/utils/key-navigation-strategies/expanded-columns-row.mjs +132 -0
- package/esm2020/data/datagrid/utils/key-navigation-strategies/expanded-row.mjs +168 -0
- package/esm2020/data/datagrid/utils/key-navigation-utils.mjs +108 -0
- package/esm2020/data/tree-view/tree-node.mjs +3 -6
- package/esm2020/forms/checkbox/checkbox.mjs +5 -2
- package/esm2020/forms/number-input/number-input.module.mjs +3 -3
- package/esm2020/layout/breadcrumbs/breadcrumbs.mjs +2 -2
- package/esm2020/modal/modal.mjs +7 -4
- package/esm2020/popover/common/popover.mjs +2 -2
- package/esm2020/utils/animations/constants.mjs +7 -1
- package/esm2020/utils/animations/expandable-animation/base-expandable-animation.mjs +38 -0
- package/esm2020/utils/animations/expandable-animation/expandable-animation.directive.mjs +56 -0
- package/esm2020/utils/animations/expandable-animation/expandable-animation.mjs +10 -32
- package/esm2020/utils/animations/expandable-animation/expandable-animation.module.mjs +3 -2
- package/esm2020/utils/animations/expandable-animation/index.mjs +4 -2
- package/esm2020/utils/focus/focusable-item/basic-focusable-item.service.mjs +2 -2
- package/esm2020/wizard/wizard.mjs +29 -6
- package/fesm2015/clr-angular.mjs +915 -426
- package/fesm2015/clr-angular.mjs.map +1 -1
- package/fesm2020/clr-angular.mjs +936 -445
- package/fesm2020/clr-angular.mjs.map +1 -1
- package/modal/modal.d.ts +3 -2
- package/package.json +2 -2
- package/utils/animations/constants.d.ts +1 -0
- package/utils/animations/expandable-animation/base-expandable-animation.d.ts +13 -0
- package/utils/animations/expandable-animation/expandable-animation.d.ts +2 -6
- package/utils/animations/expandable-animation/expandable-animation.directive.d.ts +16 -0
- package/utils/animations/expandable-animation/expandable-animation.module.d.ts +3 -2
- package/utils/animations/expandable-animation/index.d.ts +1 -0
- package/wizard/wizard.d.ts +12 -2
package/fesm2015/clr-angular.mjs
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Directive, NgModule, Optional, Input, Injectable, Component, ChangeDetectionStrategy, EventEmitter, SkipSelf, HostBinding, Output, ContentChildren, PLATFORM_ID, Inject, ViewChild, HostListener, Renderer2, InjectionToken, ElementRef, NgZone, ChangeDetectorRef, ContentChild, ComponentFactoryResolver, KeyValueDiffers, Self, forwardRef, Attribute, TemplateRef, ViewContainerRef, LOCALE_ID, inject, Injector, VERSION, EnvironmentInjector, IterableDiffers } from '@angular/core';
|
|
2
|
+
import { Directive, NgModule, Optional, Input, Injectable, Component, ChangeDetectionStrategy, EventEmitter, SkipSelf, HostBinding, Output, ContentChildren, PLATFORM_ID, Inject, ViewChild, HostListener, Renderer2, InjectionToken, ElementRef, NgZone, ChangeDetectorRef, ContentChild, ComponentFactoryResolver, KeyValueDiffers, Self, forwardRef, Attribute, TemplateRef, ViewContainerRef, LOCALE_ID, inject, Injector, VERSION, EnvironmentInjector, IterableDiffers, ViewChildren } from '@angular/core';
|
|
3
3
|
import * as i5 from '@angular/common';
|
|
4
4
|
import { CommonModule, isPlatformBrowser, DOCUMENT, NgForOf, getLocaleDayNames, FormStyle, TranslationWidth, getLocaleMonthNames, getLocaleFirstDayOfWeek, getLocaleDateFormat, FormatWidth } from '@angular/common';
|
|
5
|
-
import { ClarityIcons, angleIcon, exclamationCircleIcon, checkCircleIcon, ellipsisHorizontalIcon, windowCloseIcon, infoCircleIcon, timesIcon, angleDoubleIcon, eventIcon, calendarIcon, folderOpenIcon, eyeHideIcon, eyeIcon, ellipsisVerticalIcon, viewColumnsIcon, arrowIcon, stepForward2Icon, filterGridCircleIcon, filterGridIcon, errorStandardIcon, helpIcon, infoStandardIcon, noteIcon, successStandardIcon, warningStandardIcon, circleIcon, dotCircleIcon } from '@cds/core/icon';
|
|
5
|
+
import { ClarityIcons, angleIcon, exclamationCircleIcon, checkCircleIcon, ellipsisHorizontalIcon, windowCloseIcon, infoCircleIcon, timesIcon, angleDoubleIcon, eventIcon, calendarIcon, folderOpenIcon, minusIcon, plusIcon, eyeHideIcon, eyeIcon, ellipsisVerticalIcon, viewColumnsIcon, arrowIcon, stepForward2Icon, filterGridCircleIcon, filterGridIcon, errorStandardIcon, helpIcon, infoStandardIcon, noteIcon, successStandardIcon, warningStandardIcon, circleIcon, dotCircleIcon } from '@cds/core/icon';
|
|
6
6
|
import { map, tap, startWith, distinctUntilChanged, filter, skipUntil, debounceTime, takeUntil, take, first, switchMap as switchMap$1 } from 'rxjs/operators';
|
|
7
7
|
import * as i3 from 'rxjs';
|
|
8
8
|
import { Subject, BehaviorSubject, Observable, fromEvent, isObservable, of, shareReplay, combineLatest, startWith as startWith$1, switchMap, merge, map as map$1, EMPTY, ReplaySubject, tap as tap$1 } from 'rxjs';
|
|
9
|
-
import
|
|
9
|
+
import * as i2 from '@angular/animations';
|
|
10
|
+
import { animation, style, animate, trigger, transition, state, useAnimation, keyframes } from '@angular/animations';
|
|
10
11
|
import * as i1 from '@angular/forms';
|
|
11
12
|
import { FormControl, FormGroup, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, SelectMultipleControlValueAccessor } from '@angular/forms';
|
|
12
13
|
import * as i1$1 from '@angular/router';
|
|
13
14
|
import { RouterModule } from '@angular/router';
|
|
14
15
|
import * as i1$2 from '@angular/cdk/a11y';
|
|
15
16
|
import { CdkTrapFocus } from '@angular/cdk/a11y';
|
|
16
|
-
import * as i2 from '@angular/cdk/drag-drop';
|
|
17
|
+
import * as i2$1 from '@angular/cdk/drag-drop';
|
|
17
18
|
import { CdkDrag, CDK_DROP_LIST, CDK_DRAG_CONFIG } from '@angular/cdk/drag-drop';
|
|
18
19
|
import * as i1$3 from '@angular/cdk/bidi';
|
|
19
20
|
import { Directionality } from '@angular/cdk/bidi';
|
|
@@ -235,6 +236,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
235
236
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
236
237
|
*/
|
|
237
238
|
const defaultAnimationTiming = '0.2s ease-in-out';
|
|
239
|
+
const defaultExpandAnimation = animation([style({ height: '{{ startHeight }}px' }), animate(defaultAnimationTiming, style({ height: '*' }))], {
|
|
240
|
+
params: {
|
|
241
|
+
startHeight: 0, // default
|
|
242
|
+
},
|
|
243
|
+
});
|
|
238
244
|
|
|
239
245
|
/*
|
|
240
246
|
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
@@ -3117,54 +3123,68 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
3117
3123
|
* This software is released under MIT license.
|
|
3118
3124
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
3119
3125
|
*/
|
|
3120
|
-
class
|
|
3126
|
+
class BaseExpandableAnimation {
|
|
3121
3127
|
constructor(element, domAdapter, renderer) {
|
|
3122
3128
|
this.element = element;
|
|
3123
3129
|
this.domAdapter = domAdapter;
|
|
3124
3130
|
this.renderer = renderer;
|
|
3125
|
-
this.clrExpandTrigger = false;
|
|
3126
3131
|
this.startHeight = 0;
|
|
3127
3132
|
}
|
|
3133
|
+
updateStartHeight() {
|
|
3134
|
+
this.startHeight = this.domAdapter.computedHeight(this.element.nativeElement) || 0;
|
|
3135
|
+
}
|
|
3136
|
+
initAnimationEffects() {
|
|
3137
|
+
this.renderer.setStyle(this.element.nativeElement, 'overflow', 'hidden');
|
|
3138
|
+
}
|
|
3139
|
+
cleanupAnimationEffects(cancelAnimations = false) {
|
|
3140
|
+
this.renderer.removeStyle(this.element.nativeElement, 'overflow');
|
|
3141
|
+
// A "safe" auto-update of the height ensuring basic OOTB user experience .
|
|
3142
|
+
// Prone to small jumps in initial animation height if data was changed in the meantime, the window was resized, etc.
|
|
3143
|
+
// For optimal behavior call manually updateStartHeight() from the parent component before initiating the update.
|
|
3144
|
+
this.updateStartHeight();
|
|
3145
|
+
if (cancelAnimations) {
|
|
3146
|
+
this.cancelElementAnimations();
|
|
3147
|
+
}
|
|
3148
|
+
}
|
|
3149
|
+
cancelElementAnimations() {
|
|
3150
|
+
this.element.nativeElement.getAnimations().forEach(animation => {
|
|
3151
|
+
if (animation.playState === 'finished') {
|
|
3152
|
+
animation.cancel(); // clears animation-style set on the element
|
|
3153
|
+
}
|
|
3154
|
+
});
|
|
3155
|
+
}
|
|
3156
|
+
}
|
|
3157
|
+
|
|
3158
|
+
/*
|
|
3159
|
+
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
3160
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
3161
|
+
* This software is released under MIT license.
|
|
3162
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
3163
|
+
*/
|
|
3164
|
+
class ClrExpandableAnimation extends BaseExpandableAnimation {
|
|
3165
|
+
constructor(element, domAdapter, renderer) {
|
|
3166
|
+
super(element, domAdapter, renderer);
|
|
3167
|
+
this.clrExpandTrigger = false;
|
|
3168
|
+
}
|
|
3128
3169
|
get expandAnimation() {
|
|
3129
3170
|
return { value: this.clrExpandTrigger, params: { startHeight: this.startHeight } };
|
|
3130
3171
|
}
|
|
3131
3172
|
animationStart(event) {
|
|
3132
3173
|
if (event.fromState !== 'void') {
|
|
3133
|
-
this.
|
|
3174
|
+
this.initAnimationEffects();
|
|
3134
3175
|
}
|
|
3135
3176
|
}
|
|
3136
3177
|
animationDone(event) {
|
|
3137
3178
|
if (event.fromState !== 'void') {
|
|
3138
|
-
this.
|
|
3139
|
-
// A "safe" auto-update of the height ensuring basic OOTB user experience .
|
|
3140
|
-
// Prone to small jumps in initial animation height if data was changed in the meantime, window was resized, etc.
|
|
3141
|
-
// For optimal behavior call manually updateStartHeight() from the parent component before initiating the update.
|
|
3142
|
-
this.updateStartHeight();
|
|
3179
|
+
this.cleanupAnimationEffects();
|
|
3143
3180
|
}
|
|
3144
3181
|
}
|
|
3145
|
-
updateStartHeight() {
|
|
3146
|
-
this.startHeight = this.domAdapter.computedHeight(this.element.nativeElement) || 0;
|
|
3147
|
-
}
|
|
3148
3182
|
}
|
|
3149
3183
|
ClrExpandableAnimation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrExpandableAnimation, deps: [{ token: i0.ElementRef }, { token: DomAdapter }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
3150
|
-
ClrExpandableAnimation.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrExpandableAnimation, selector: "clr-expandable-animation", inputs: { clrExpandTrigger: "clrExpandTrigger" }, host: { listeners: { "@expandAnimation.start": "animationStart($event)", "@expandAnimation.done": "animationDone($event)" }, properties: { "@expandAnimation": "this.expandAnimation" } }, providers: [DomAdapter], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{display:block}\n"], animations: [
|
|
3151
|
-
trigger('expandAnimation', [
|
|
3152
|
-
transition('true <=> false', [
|
|
3153
|
-
style({ height: '{{startHeight}}px' }),
|
|
3154
|
-
animate('0.2s ease-in-out', style({ height: '*' })),
|
|
3155
|
-
]),
|
|
3156
|
-
]),
|
|
3157
|
-
] });
|
|
3184
|
+
ClrExpandableAnimation.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrExpandableAnimation, selector: "clr-expandable-animation", inputs: { clrExpandTrigger: "clrExpandTrigger" }, host: { listeners: { "@expandAnimation.start": "animationStart($event)", "@expandAnimation.done": "animationDone($event)" }, properties: { "@expandAnimation": "this.expandAnimation" } }, providers: [DomAdapter], usesInheritance: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{display:block}\n"], animations: [trigger('expandAnimation', [transition('true <=> false', [useAnimation(defaultExpandAnimation)])])] });
|
|
3158
3185
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrExpandableAnimation, decorators: [{
|
|
3159
3186
|
type: Component,
|
|
3160
|
-
args: [{ selector: 'clr-expandable-animation', template: `<ng-content></ng-content>`, animations: [
|
|
3161
|
-
trigger('expandAnimation', [
|
|
3162
|
-
transition('true <=> false', [
|
|
3163
|
-
style({ height: '{{startHeight}}px' }),
|
|
3164
|
-
animate('0.2s ease-in-out', style({ height: '*' })),
|
|
3165
|
-
]),
|
|
3166
|
-
]),
|
|
3167
|
-
], providers: [DomAdapter], styles: [":host{display:block}\n"] }]
|
|
3187
|
+
args: [{ selector: 'clr-expandable-animation', template: `<ng-content></ng-content>`, animations: [trigger('expandAnimation', [transition('true <=> false', [useAnimation(defaultExpandAnimation)])])], providers: [DomAdapter], styles: [":host{display:block}\n"] }]
|
|
3168
3188
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: DomAdapter }, { type: i0.Renderer2 }]; }, propDecorators: { clrExpandTrigger: [{
|
|
3169
3189
|
type: Input
|
|
3170
3190
|
}], expandAnimation: [{
|
|
@@ -3184,7 +3204,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
3184
3204
|
* This software is released under MIT license.
|
|
3185
3205
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
3186
3206
|
*/
|
|
3187
|
-
|
|
3207
|
+
class ClrExpandableAnimationDirective extends BaseExpandableAnimation {
|
|
3208
|
+
constructor(element, domAdapter, renderer, builder) {
|
|
3209
|
+
super(element, domAdapter, renderer);
|
|
3210
|
+
this.builder = builder;
|
|
3211
|
+
this.expanded = false;
|
|
3212
|
+
}
|
|
3213
|
+
ngOnChanges(changes) {
|
|
3214
|
+
if (changes['expanded'] && !changes['expanded'].firstChange) {
|
|
3215
|
+
Promise.resolve().then(() => this.playAnimation());
|
|
3216
|
+
}
|
|
3217
|
+
}
|
|
3218
|
+
ngOnDestroy() {
|
|
3219
|
+
var _a;
|
|
3220
|
+
(_a = this.player) === null || _a === void 0 ? void 0 : _a.destroy();
|
|
3221
|
+
}
|
|
3222
|
+
playAnimation() {
|
|
3223
|
+
if (this.player) {
|
|
3224
|
+
this.player.destroy();
|
|
3225
|
+
}
|
|
3226
|
+
this.player = this.builder
|
|
3227
|
+
.build([useAnimation(defaultExpandAnimation, { params: { startHeight: this.startHeight } })])
|
|
3228
|
+
.create(this.element.nativeElement);
|
|
3229
|
+
this.player.onStart(() => this.initAnimationEffects());
|
|
3230
|
+
this.player.onDone(() => this.cleanupAnimationEffects(true));
|
|
3231
|
+
this.player.play();
|
|
3232
|
+
}
|
|
3233
|
+
}
|
|
3234
|
+
ClrExpandableAnimationDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrExpandableAnimationDirective, deps: [{ token: i0.ElementRef }, { token: DomAdapter }, { token: i0.Renderer2 }, { token: i2.AnimationBuilder }], target: i0.ɵɵFactoryTarget.Directive });
|
|
3235
|
+
ClrExpandableAnimationDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrExpandableAnimationDirective, selector: "[clrExpandableAnimation]", inputs: { expanded: ["clrExpandableAnimation", "expanded"] }, host: { properties: { "class.clr-expandable-animation": "true" } }, providers: [DomAdapter], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
|
|
3236
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrExpandableAnimationDirective, decorators: [{
|
|
3237
|
+
type: Directive,
|
|
3238
|
+
args: [{
|
|
3239
|
+
selector: '[clrExpandableAnimation]',
|
|
3240
|
+
providers: [DomAdapter],
|
|
3241
|
+
host: {
|
|
3242
|
+
'[class.clr-expandable-animation]': 'true',
|
|
3243
|
+
},
|
|
3244
|
+
}]
|
|
3245
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: DomAdapter }, { type: i0.Renderer2 }, { type: i2.AnimationBuilder }]; }, propDecorators: { expanded: [{
|
|
3246
|
+
type: Input,
|
|
3247
|
+
args: ['clrExpandableAnimation']
|
|
3248
|
+
}] } });
|
|
3249
|
+
|
|
3250
|
+
/*
|
|
3251
|
+
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
3252
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
3253
|
+
* This software is released under MIT license.
|
|
3254
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
3255
|
+
*/
|
|
3256
|
+
const EXPANDABLE_ANIMATION_DIRECTIVES = [ClrExpandableAnimation, ClrExpandableAnimationDirective];
|
|
3188
3257
|
|
|
3189
3258
|
/*
|
|
3190
3259
|
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
@@ -5185,7 +5254,7 @@ class Popover {
|
|
|
5185
5254
|
this._scroll = new Subject();
|
|
5186
5255
|
const anchor = e;
|
|
5187
5256
|
let current = e;
|
|
5188
|
-
while (current && current !== document) {
|
|
5257
|
+
while (current && current !== document && current.nodeType === Node.ELEMENT_NODE) {
|
|
5189
5258
|
if (this.scrolls(current)) {
|
|
5190
5259
|
current.addEventListener('scroll', this.boundOnScrollListener);
|
|
5191
5260
|
this.scrollableElements.push(current);
|
|
@@ -5516,7 +5585,7 @@ class BasicFocusableItem {
|
|
|
5516
5585
|
if (isPlatformBrowser(this.platformId)) {
|
|
5517
5586
|
this.renderer.setAttribute(this.el.nativeElement, 'tabindex', '0');
|
|
5518
5587
|
this.el.nativeElement.focus();
|
|
5519
|
-
this.el.nativeElement.scrollIntoView({ behavior: 'smooth', block: '
|
|
5588
|
+
this.el.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'nearest' });
|
|
5520
5589
|
}
|
|
5521
5590
|
}
|
|
5522
5591
|
blur() {
|
|
@@ -7599,11 +7668,14 @@ class ClrCheckbox extends WrappedFormControl {
|
|
|
7599
7668
|
}
|
|
7600
7669
|
}
|
|
7601
7670
|
ClrCheckbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrCheckbox, deps: [{ token: i0.ViewContainerRef }, { token: i0.Injector }, { token: i1.NgControl, optional: true, self: true }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: 'clrToggle', attribute: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
7602
|
-
ClrCheckbox.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrCheckbox, selector: "[clrCheckbox],[clrToggle]", usesInheritance: true, ngImport: i0 });
|
|
7671
|
+
ClrCheckbox.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrCheckbox, selector: "[clrCheckbox],[clrToggle]", host: { properties: { "attr.role": "toggle !== null ? \"switch\" : null" } }, usesInheritance: true, ngImport: i0 });
|
|
7603
7672
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrCheckbox, decorators: [{
|
|
7604
7673
|
type: Directive,
|
|
7605
7674
|
args: [{
|
|
7606
7675
|
selector: '[clrCheckbox],[clrToggle]',
|
|
7676
|
+
host: {
|
|
7677
|
+
'[attr.role]': 'toggle !== null ? "switch" : null',
|
|
7678
|
+
},
|
|
7607
7679
|
}]
|
|
7608
7680
|
}], ctorParameters: function () {
|
|
7609
7681
|
return [{ type: i0.ViewContainerRef }, { type: i0.Injector }, { type: i1.NgControl, decorators: [{
|
|
@@ -10046,14 +10118,14 @@ class ClrBreadcrumbs {
|
|
|
10046
10118
|
}
|
|
10047
10119
|
}
|
|
10048
10120
|
ClrBreadcrumbs.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrBreadcrumbs, deps: [{ token: ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
10049
|
-
ClrBreadcrumbs.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrBreadcrumbs, selector: "clr-breadcrumbs", inputs: { items: "items" }, outputs: { clrBreadcrumbItemClick: "clrBreadcrumbItemClick" }, host: { properties: { "attr.aria-label": "commonStrings.keys.breadcrumbsLabel", "attr.role": "\"navigation\"" }, classAttribute: "clr-breadcrumb" }, ngImport: i0, template: "<div *ngIf=\"items?.length\" role=\"list\" class=\"clr-breadcrumb-menu\">\n <clr-breadcrumb-item *ngIf=\"items.length > max && !isExpanded\">\n <button\n [attr.aria-label]=\"commonStrings.keys.expandBreadcrumbsLabel\"\n class=\"btn btn-link btn-sm clr-breadcrumb-expand\"\n (click)=\"expand()\"\n (keydown)=\"expand()\"\n >\n <cds-icon shape=\"ellipsis-horizontal\"></cds-icon>\n </button>\n </clr-breadcrumb-item>\n <clr-breadcrumb-item *ngFor=\"let breadcrumb of items | slice: -limit : items.length; let isLastItem=last\">\n <span *ngIf=\"isLastItem; else breadcrumbLinks\" aria-current=\"page\">{{ breadcrumb.label }}</span>\n\n <ng-template #breadcrumbLinks>\n <a\n *ngIf=\"breadcrumb.routerLink\"\n [routerLink]=\"breadcrumb.routerLink\"\n [queryParams]=\"breadcrumb.queryParams\"\n [target]=\"breadcrumb.target || '_self'\"\n (click)=\"handleItemClick(breadcrumb)\"\n >\n {{ breadcrumb.label }}\n </a>\n <a\n *ngIf=\"breadcrumb.href\"\n [href]=\"breadcrumb.href\"\n [target]=\"breadcrumb.target || '_self'\"\n (click)=\"handleItemClick(breadcrumb)\"\n >\n {{ breadcrumb.label }}\n </a>\n </ng-template>\n </clr-breadcrumb-item>\n</div>\n", styles: [":root [cds-theme]{--clr-breadcrumb-item-space: var(--cds-global-space-5)}.clr-breadcrumb-menu{display:flex;flex-wrap:wrap;align-items:center}.clr-breadcrumb-menu .clr-breadcrumb-item{display:flex;align-items:center;font-size:var(--cds-alias-typography-secondary-font-size);font-weight:var(--cds-alias-typography-secondary-font-weight);line-height:var(--cds-alias-typography-secondary-line-height);letter-spacing:var(--cds-alias-typography-secondary-letter-spacing)}.clr-breadcrumb-menu .clr-breadcrumb-item a{text-decoration:none;text-align:center;line-height:var(--cds-global-space-9)}.clr-breadcrumb-menu .clr-breadcrumb-item:not(:last-child):after{content:\"/\";margin:0 var(--clr-breadcrumb-item-space);color:var(--cds-alias-typography-color-400)}.clr-breadcrumb-menu .clr-breadcrumb-item:last-child{color:var(--cds-alias-typography-color-400)}.clr-breadcrumb-menu .clr-breadcrumb-expand{margin:0;padding:0;gap:0;min-width:-moz-fit-content;min-width:fit-content}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: ClrBreadcrumbItem, selector: "clr-breadcrumb-item" }, { kind: "pipe", type: i5.SlicePipe, name: "slice" }] });
|
|
10121
|
+
ClrBreadcrumbs.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrBreadcrumbs, selector: "clr-breadcrumbs", inputs: { items: "items" }, outputs: { clrBreadcrumbItemClick: "clrBreadcrumbItemClick" }, host: { properties: { "attr.aria-label": "commonStrings.keys.breadcrumbsLabel", "attr.role": "\"navigation\"" }, classAttribute: "clr-breadcrumb" }, ngImport: i0, template: "<div *ngIf=\"items?.length\" role=\"list\" class=\"clr-breadcrumb-menu\">\n <clr-breadcrumb-item *ngIf=\"items.length > max && !isExpanded\">\n <button\n [attr.aria-label]=\"commonStrings.keys.expandBreadcrumbsLabel\"\n class=\"btn btn-link btn-sm clr-breadcrumb-expand\"\n (click)=\"expand()\"\n (keydown)=\"expand()\"\n >\n <cds-icon shape=\"ellipsis-horizontal\"></cds-icon>\n </button>\n </clr-breadcrumb-item>\n <clr-breadcrumb-item *ngFor=\"let breadcrumb of items | slice: -limit : items.length; let isLastItem=last\">\n <span *ngIf=\"isLastItem; else breadcrumbLinks\" aria-current=\"page\">{{ breadcrumb.label }}</span>\n\n <ng-template #breadcrumbLinks>\n <a\n *ngIf=\"breadcrumb.routerLink\"\n [routerLink]=\"breadcrumb.routerLink\"\n [queryParams]=\"breadcrumb.queryParams\"\n [target]=\"breadcrumb.target || '_self'\"\n (click)=\"handleItemClick(breadcrumb)\"\n >\n {{ breadcrumb.label }}\n </a>\n <a\n *ngIf=\"breadcrumb.href\"\n [href]=\"breadcrumb.href\"\n [target]=\"breadcrumb.target || '_self'\"\n (click)=\"handleItemClick(breadcrumb)\"\n >\n {{ breadcrumb.label }}\n </a>\n </ng-template>\n </clr-breadcrumb-item>\n</div>\n", styles: [":root [cds-theme]{--clr-breadcrumb-item-space: var(--cds-global-space-5)}.clr-breadcrumb-menu{display:flex;flex-wrap:wrap;align-items:center}.clr-breadcrumb-menu .clr-breadcrumb-item{display:flex;align-items:center;font-size:var(--cds-alias-typography-secondary-font-size);font-weight:var(--cds-alias-typography-secondary-font-weight);line-height:var(--cds-alias-typography-secondary-line-height);letter-spacing:var(--cds-alias-typography-secondary-letter-spacing)}.clr-breadcrumb-menu .clr-breadcrumb-item a{text-decoration:none;text-align:center;line-height:var(--cds-global-space-9)}.clr-breadcrumb-menu .clr-breadcrumb-item a:visited{color:var(--clr-link-color)}.clr-breadcrumb-menu .clr-breadcrumb-item a:visited:hover{color:var(--clr-link-hover-color)}.clr-breadcrumb-menu .clr-breadcrumb-item:not(:last-child):after{content:\"/\";margin:0 var(--clr-breadcrumb-item-space);color:var(--cds-alias-typography-color-400)}.clr-breadcrumb-menu .clr-breadcrumb-item:last-child{color:var(--cds-alias-typography-color-400)}.clr-breadcrumb-menu .clr-breadcrumb-expand{margin:0;padding:0;gap:0;min-width:-moz-fit-content;min-width:fit-content}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: ClrBreadcrumbItem, selector: "clr-breadcrumb-item" }, { kind: "pipe", type: i5.SlicePipe, name: "slice" }] });
|
|
10050
10122
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrBreadcrumbs, decorators: [{
|
|
10051
10123
|
type: Component,
|
|
10052
10124
|
args: [{ selector: 'clr-breadcrumbs', host: {
|
|
10053
10125
|
class: 'clr-breadcrumb',
|
|
10054
10126
|
'[attr.aria-label]': 'commonStrings.keys.breadcrumbsLabel',
|
|
10055
10127
|
'[attr.role]': '"navigation"',
|
|
10056
|
-
}, template: "<div *ngIf=\"items?.length\" role=\"list\" class=\"clr-breadcrumb-menu\">\n <clr-breadcrumb-item *ngIf=\"items.length > max && !isExpanded\">\n <button\n [attr.aria-label]=\"commonStrings.keys.expandBreadcrumbsLabel\"\n class=\"btn btn-link btn-sm clr-breadcrumb-expand\"\n (click)=\"expand()\"\n (keydown)=\"expand()\"\n >\n <cds-icon shape=\"ellipsis-horizontal\"></cds-icon>\n </button>\n </clr-breadcrumb-item>\n <clr-breadcrumb-item *ngFor=\"let breadcrumb of items | slice: -limit : items.length; let isLastItem=last\">\n <span *ngIf=\"isLastItem; else breadcrumbLinks\" aria-current=\"page\">{{ breadcrumb.label }}</span>\n\n <ng-template #breadcrumbLinks>\n <a\n *ngIf=\"breadcrumb.routerLink\"\n [routerLink]=\"breadcrumb.routerLink\"\n [queryParams]=\"breadcrumb.queryParams\"\n [target]=\"breadcrumb.target || '_self'\"\n (click)=\"handleItemClick(breadcrumb)\"\n >\n {{ breadcrumb.label }}\n </a>\n <a\n *ngIf=\"breadcrumb.href\"\n [href]=\"breadcrumb.href\"\n [target]=\"breadcrumb.target || '_self'\"\n (click)=\"handleItemClick(breadcrumb)\"\n >\n {{ breadcrumb.label }}\n </a>\n </ng-template>\n </clr-breadcrumb-item>\n</div>\n", styles: [":root [cds-theme]{--clr-breadcrumb-item-space: var(--cds-global-space-5)}.clr-breadcrumb-menu{display:flex;flex-wrap:wrap;align-items:center}.clr-breadcrumb-menu .clr-breadcrumb-item{display:flex;align-items:center;font-size:var(--cds-alias-typography-secondary-font-size);font-weight:var(--cds-alias-typography-secondary-font-weight);line-height:var(--cds-alias-typography-secondary-line-height);letter-spacing:var(--cds-alias-typography-secondary-letter-spacing)}.clr-breadcrumb-menu .clr-breadcrumb-item a{text-decoration:none;text-align:center;line-height:var(--cds-global-space-9)}.clr-breadcrumb-menu .clr-breadcrumb-item:not(:last-child):after{content:\"/\";margin:0 var(--clr-breadcrumb-item-space);color:var(--cds-alias-typography-color-400)}.clr-breadcrumb-menu .clr-breadcrumb-item:last-child{color:var(--cds-alias-typography-color-400)}.clr-breadcrumb-menu .clr-breadcrumb-expand{margin:0;padding:0;gap:0;min-width:-moz-fit-content;min-width:fit-content}\n"] }]
|
|
10128
|
+
}, template: "<div *ngIf=\"items?.length\" role=\"list\" class=\"clr-breadcrumb-menu\">\n <clr-breadcrumb-item *ngIf=\"items.length > max && !isExpanded\">\n <button\n [attr.aria-label]=\"commonStrings.keys.expandBreadcrumbsLabel\"\n class=\"btn btn-link btn-sm clr-breadcrumb-expand\"\n (click)=\"expand()\"\n (keydown)=\"expand()\"\n >\n <cds-icon shape=\"ellipsis-horizontal\"></cds-icon>\n </button>\n </clr-breadcrumb-item>\n <clr-breadcrumb-item *ngFor=\"let breadcrumb of items | slice: -limit : items.length; let isLastItem=last\">\n <span *ngIf=\"isLastItem; else breadcrumbLinks\" aria-current=\"page\">{{ breadcrumb.label }}</span>\n\n <ng-template #breadcrumbLinks>\n <a\n *ngIf=\"breadcrumb.routerLink\"\n [routerLink]=\"breadcrumb.routerLink\"\n [queryParams]=\"breadcrumb.queryParams\"\n [target]=\"breadcrumb.target || '_self'\"\n (click)=\"handleItemClick(breadcrumb)\"\n >\n {{ breadcrumb.label }}\n </a>\n <a\n *ngIf=\"breadcrumb.href\"\n [href]=\"breadcrumb.href\"\n [target]=\"breadcrumb.target || '_self'\"\n (click)=\"handleItemClick(breadcrumb)\"\n >\n {{ breadcrumb.label }}\n </a>\n </ng-template>\n </clr-breadcrumb-item>\n</div>\n", styles: [":root [cds-theme]{--clr-breadcrumb-item-space: var(--cds-global-space-5)}.clr-breadcrumb-menu{display:flex;flex-wrap:wrap;align-items:center}.clr-breadcrumb-menu .clr-breadcrumb-item{display:flex;align-items:center;font-size:var(--cds-alias-typography-secondary-font-size);font-weight:var(--cds-alias-typography-secondary-font-weight);line-height:var(--cds-alias-typography-secondary-line-height);letter-spacing:var(--cds-alias-typography-secondary-letter-spacing)}.clr-breadcrumb-menu .clr-breadcrumb-item a{text-decoration:none;text-align:center;line-height:var(--cds-global-space-9)}.clr-breadcrumb-menu .clr-breadcrumb-item a:visited{color:var(--clr-link-color)}.clr-breadcrumb-menu .clr-breadcrumb-item a:visited:hover{color:var(--clr-link-hover-color)}.clr-breadcrumb-menu .clr-breadcrumb-item:not(:last-child):after{content:\"/\";margin:0 var(--clr-breadcrumb-item-space);color:var(--cds-alias-typography-color-400)}.clr-breadcrumb-menu .clr-breadcrumb-item:last-child{color:var(--cds-alias-typography-color-400)}.clr-breadcrumb-menu .clr-breadcrumb-expand{margin:0;padding:0;gap:0;min-width:-moz-fit-content;min-width:fit-content}\n"] }]
|
|
10057
10129
|
}], ctorParameters: function () { return [{ type: ClrCommonStringsService }]; }, propDecorators: { items: [{
|
|
10058
10130
|
type: Input
|
|
10059
10131
|
}], clrBreadcrumbItemClick: [{
|
|
@@ -16328,7 +16400,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
16328
16400
|
*/
|
|
16329
16401
|
class ClrNumberInputModule {
|
|
16330
16402
|
constructor() {
|
|
16331
|
-
ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon);
|
|
16403
|
+
ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon, minusIcon, plusIcon);
|
|
16332
16404
|
}
|
|
16333
16405
|
}
|
|
16334
16406
|
ClrNumberInputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrNumberInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
@@ -17335,7 +17407,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
17335
17407
|
class ClrExpandableAnimationModule {
|
|
17336
17408
|
}
|
|
17337
17409
|
ClrExpandableAnimationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrExpandableAnimationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
17338
|
-
ClrExpandableAnimationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: ClrExpandableAnimationModule, declarations: [ClrExpandableAnimation], imports: [CommonModule], exports: [ClrExpandableAnimation] });
|
|
17410
|
+
ClrExpandableAnimationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: ClrExpandableAnimationModule, declarations: [ClrExpandableAnimation, ClrExpandableAnimationDirective], imports: [CommonModule], exports: [ClrExpandableAnimation, ClrExpandableAnimationDirective] });
|
|
17339
17411
|
ClrExpandableAnimationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrExpandableAnimationModule, imports: [CommonModule] });
|
|
17340
17412
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrExpandableAnimationModule, decorators: [{
|
|
17341
17413
|
type: NgModule,
|
|
@@ -17359,7 +17431,7 @@ class CdkDragModule_CdkDrag extends CdkDrag {
|
|
|
17359
17431
|
super(elementRef, dropContainer, document, ngZone, viewContainerRef, config, dir, dragDrop, changeDetectorRef);
|
|
17360
17432
|
}
|
|
17361
17433
|
}
|
|
17362
|
-
CdkDragModule_CdkDrag.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: CdkDragModule_CdkDrag, deps: [{ token: i0.ElementRef }, { token: CDK_DROP_LIST, optional: true }, { token: DOCUMENT, optional: true }, { token: i0.NgZone }, { token: i0.ViewContainerRef }, { token: CDK_DRAG_CONFIG, optional: true }, { token: i1$3.Directionality }, { token: i2.DragDrop }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
17434
|
+
CdkDragModule_CdkDrag.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: CdkDragModule_CdkDrag, deps: [{ token: i0.ElementRef }, { token: CDK_DROP_LIST, optional: true }, { token: DOCUMENT, optional: true }, { token: i0.NgZone }, { token: i0.ViewContainerRef }, { token: CDK_DRAG_CONFIG, optional: true }, { token: i1$3.Directionality }, { token: i2$1.DragDrop }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
17363
17435
|
CdkDragModule_CdkDrag.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: CdkDragModule_CdkDrag, selector: "[cdkDrag]", usesInheritance: true, ngImport: i0 });
|
|
17364
17436
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: CdkDragModule_CdkDrag, decorators: [{
|
|
17365
17437
|
type: Directive,
|
|
@@ -17382,7 +17454,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
17382
17454
|
}, {
|
|
17383
17455
|
type: Inject,
|
|
17384
17456
|
args: [CDK_DRAG_CONFIG]
|
|
17385
|
-
}] }, { type: i1$3.Directionality }, { type: i2.DragDrop }, { type: i0.ChangeDetectorRef }];
|
|
17457
|
+
}] }, { type: i1$3.Directionality }, { type: i2$1.DragDrop }, { type: i0.ChangeDetectorRef }];
|
|
17386
17458
|
} });
|
|
17387
17459
|
/**
|
|
17388
17460
|
* This module allows us to avoid importing all of CdkDragDropModule which results in a smaller application bundle.
|
|
@@ -17828,335 +17900,456 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
17828
17900
|
* This software is released under MIT license.
|
|
17829
17901
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
17830
17902
|
*/
|
|
17831
|
-
|
|
17832
|
-
|
|
17833
|
-
|
|
17834
|
-
'input:not([disabled])',
|
|
17835
|
-
'button:not([disabled])',
|
|
17836
|
-
'select:not([disabled])',
|
|
17837
|
-
'textarea:not([disabled])',
|
|
17838
|
-
'iframe',
|
|
17839
|
-
'object',
|
|
17840
|
-
'embed',
|
|
17841
|
-
'[contenteditable=true]',
|
|
17842
|
-
'[role=button]:not([disabled])',
|
|
17843
|
-
];
|
|
17844
|
-
function getTabbableItems(el) {
|
|
17845
|
-
const tabbableItemSelectors = [...actionableItemSelectors, '[tabindex="0"]:not([disabled])'];
|
|
17846
|
-
const tabbableSelector = tabbableItemSelectors.join(',');
|
|
17847
|
-
return Array.from(el.querySelectorAll(tabbableSelector));
|
|
17848
|
-
}
|
|
17849
|
-
function isActionableItem(el) {
|
|
17850
|
-
const actionableSelector = actionableItemSelectors.join(',');
|
|
17851
|
-
return el.matches(actionableSelector);
|
|
17852
|
-
}
|
|
17853
|
-
class KeyNavigationGridController {
|
|
17854
|
-
constructor(zone) {
|
|
17855
|
-
this.zone = zone;
|
|
17856
|
-
this.skipItemFocus = false;
|
|
17857
|
-
this.listenersAdded = false;
|
|
17858
|
-
this.destroy$ = new Subject();
|
|
17859
|
-
this._activeCell = null;
|
|
17860
|
-
this.config = {
|
|
17861
|
-
keyGridRows: '[role=row]:not(.datagrid-placeholder):not([style*="display: none"])',
|
|
17862
|
-
keyGridCells: '[role=gridcell]:not(.datagrid-hidden-column):not(.datagrid-placeholder-content), [role=columnheader]:not(.datagrid-hidden-column):not(.datagrid-placeholder-content), .datagrid-detail-caret',
|
|
17863
|
-
keyGrid: '[role=grid]',
|
|
17864
|
-
};
|
|
17865
|
-
}
|
|
17866
|
-
get grid() {
|
|
17867
|
-
var _a;
|
|
17868
|
-
return (_a = this.host) === null || _a === void 0 ? void 0 : _a.querySelector(this.config.keyGrid);
|
|
17903
|
+
class DefaultKeyNavigationStrategy {
|
|
17904
|
+
constructor(utils) {
|
|
17905
|
+
this.utils = utils;
|
|
17869
17906
|
}
|
|
17870
|
-
|
|
17871
|
-
|
|
17872
|
-
|
|
17873
|
-
|
|
17874
|
-
|
|
17875
|
-
|
|
17876
|
-
|
|
17877
|
-
|
|
17878
|
-
|
|
17879
|
-
|
|
17880
|
-
|
|
17907
|
+
keyUp(currentCellCoords) {
|
|
17908
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
17909
|
+
if (currentCellCoords.y === 0) {
|
|
17910
|
+
return nextCellCoords;
|
|
17911
|
+
}
|
|
17912
|
+
nextCellCoords.y = currentCellCoords.y - 1;
|
|
17913
|
+
const isActionCell = this.utils.isActionCell(currentCellCoords);
|
|
17914
|
+
if (this.utils.isSingleCellExpandedRow(nextCellCoords.y) &&
|
|
17915
|
+
!isActionCell &&
|
|
17916
|
+
this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
17917
|
+
nextCellCoords.x = 0;
|
|
17918
|
+
}
|
|
17919
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
17920
|
+
if (isActionCell) {
|
|
17921
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
17922
|
+
}
|
|
17923
|
+
else {
|
|
17924
|
+
nextCellCoords.x = nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
17925
|
+
}
|
|
17926
|
+
}
|
|
17927
|
+
return nextCellCoords;
|
|
17881
17928
|
}
|
|
17882
|
-
|
|
17883
|
-
|
|
17884
|
-
|
|
17929
|
+
keyDown(currentCellCoords) {
|
|
17930
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
17931
|
+
const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;
|
|
17932
|
+
if (currentCellCoords.y >= numOfRows) {
|
|
17933
|
+
return nextCellCoords;
|
|
17885
17934
|
}
|
|
17886
|
-
this.
|
|
17887
|
-
|
|
17888
|
-
|
|
17889
|
-
|
|
17890
|
-
|
|
17891
|
-
|
|
17892
|
-
|
|
17893
|
-
|
|
17894
|
-
|
|
17895
|
-
if (activeCell) {
|
|
17896
|
-
this.setActiveCell(activeCell, { keepFocus: isActionableItem(e.target) });
|
|
17897
|
-
}
|
|
17898
|
-
}
|
|
17899
|
-
});
|
|
17900
|
-
fromEvent(this.grid, 'wheel')
|
|
17901
|
-
.pipe(takeUntil(this.destroy$))
|
|
17902
|
-
.subscribe(() => {
|
|
17903
|
-
this.removeActiveCell();
|
|
17904
|
-
});
|
|
17905
|
-
fromEvent(this.grid, 'focusout')
|
|
17906
|
-
.pipe(debounceTime(0), takeUntil(this.destroy$))
|
|
17907
|
-
.subscribe(() => {
|
|
17908
|
-
if (this.grid.contains(document.activeElement)) {
|
|
17909
|
-
return;
|
|
17910
|
-
}
|
|
17911
|
-
this.removeActiveCell();
|
|
17912
|
-
});
|
|
17913
|
-
fromEvent(this.grid, 'keydown')
|
|
17914
|
-
.pipe(takeUntil(this.destroy$))
|
|
17915
|
-
.subscribe((e) => {
|
|
17916
|
-
// Skip column resize events
|
|
17917
|
-
if (e.target.classList.contains('drag-handle') &&
|
|
17918
|
-
(e.key === Keys.ArrowLeft || e.key === Keys.ArrowRight)) {
|
|
17919
|
-
return;
|
|
17920
|
-
}
|
|
17921
|
-
if (e.key === Keys.ArrowUp ||
|
|
17922
|
-
e.key === Keys.ArrowDown ||
|
|
17923
|
-
e.key === Keys.ArrowLeft ||
|
|
17924
|
-
e.key === Keys.ArrowRight ||
|
|
17925
|
-
e.key === Keys.End ||
|
|
17926
|
-
e.key === Keys.Home ||
|
|
17927
|
-
e.key === Keys.PageUp ||
|
|
17928
|
-
e.key === Keys.PageDown) {
|
|
17929
|
-
const currentCellCoords = this.getCurrentCellCoordinates();
|
|
17930
|
-
const nextCellCoords = this.isExpandedRow(currentCellCoords.y) || this.isDetailsRow(currentCellCoords.y)
|
|
17931
|
-
? this.getNextForExpandedRowCoordinate(e, currentCellCoords)
|
|
17932
|
-
: this.getNextItemCoordinate(e, currentCellCoords);
|
|
17933
|
-
const activeItem = this.rows
|
|
17934
|
-
? Array.from(this.getCellsForRow(nextCellCoords.y))[nextCellCoords.x]
|
|
17935
|
-
: null;
|
|
17936
|
-
if (activeItem) {
|
|
17937
|
-
this.setActiveCell(activeItem);
|
|
17938
|
-
}
|
|
17939
|
-
e.preventDefault();
|
|
17940
|
-
}
|
|
17941
|
-
});
|
|
17942
|
-
});
|
|
17943
|
-
this.listenersAdded = true;
|
|
17935
|
+
const isActionCell = this.utils.isActionCell(currentCellCoords);
|
|
17936
|
+
nextCellCoords.y = currentCellCoords.y + 1;
|
|
17937
|
+
if (!isActionCell && this.utils.isRowReplaced(nextCellCoords.y)) {
|
|
17938
|
+
nextCellCoords.y = nextCellCoords.y + 1;
|
|
17939
|
+
nextCellCoords.x = this.utils.isSingleCellExpandedRow(nextCellCoords.y)
|
|
17940
|
+
? 0
|
|
17941
|
+
: nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
17942
|
+
}
|
|
17943
|
+
return nextCellCoords;
|
|
17944
17944
|
}
|
|
17945
|
-
|
|
17946
|
-
|
|
17947
|
-
|
|
17948
|
-
|
|
17945
|
+
keyLeft(currentCellCoords) {
|
|
17946
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
17947
|
+
if (currentCellCoords.x === 0) {
|
|
17948
|
+
return nextCellCoords;
|
|
17949
|
+
}
|
|
17950
|
+
nextCellCoords.x = currentCellCoords.x - 1;
|
|
17951
|
+
return nextCellCoords;
|
|
17949
17952
|
}
|
|
17950
|
-
|
|
17953
|
+
keyRight(currentCellCoords) {
|
|
17951
17954
|
var _a;
|
|
17952
|
-
|
|
17953
|
-
|
|
17954
|
-
|
|
17955
|
-
|
|
17956
|
-
|
|
17957
|
-
this._activeCell = null;
|
|
17955
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
17956
|
+
// calculate numOfColumns based on header cells.
|
|
17957
|
+
const numOfColumns = ((_a = this.utils.rows) === null || _a === void 0 ? void 0 : _a.length) - 1 ? this.utils.getCellsForRow(0).length - 1 : 0;
|
|
17958
|
+
nextCellCoords.x = currentCellCoords.x < numOfColumns ? nextCellCoords.x + 1 : nextCellCoords.x;
|
|
17959
|
+
return nextCellCoords;
|
|
17958
17960
|
}
|
|
17959
|
-
|
|
17960
|
-
|
|
17961
|
+
keyEnd(currentCellCoords, ctrlKey) {
|
|
17962
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
17963
|
+
const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;
|
|
17964
|
+
// calculate X based on header cells.
|
|
17965
|
+
nextCellCoords.x = numOfRows ? this.utils.getCellsForRow(0).length - 1 : 0;
|
|
17966
|
+
if (ctrlKey) {
|
|
17967
|
+
nextCellCoords.y = numOfRows;
|
|
17968
|
+
if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
17969
|
+
nextCellCoords.x = this.utils.getCellsForRow(nextCellCoords.y).length - 1;
|
|
17970
|
+
}
|
|
17971
|
+
}
|
|
17972
|
+
return nextCellCoords;
|
|
17961
17973
|
}
|
|
17962
|
-
|
|
17963
|
-
const
|
|
17964
|
-
|
|
17965
|
-
|
|
17974
|
+
keyHome(currentCellCoords, ctrlKey) {
|
|
17975
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
17976
|
+
nextCellCoords.x = 0;
|
|
17977
|
+
if (ctrlKey) {
|
|
17978
|
+
nextCellCoords.y = 0;
|
|
17966
17979
|
}
|
|
17967
|
-
|
|
17968
|
-
|
|
17969
|
-
|
|
17970
|
-
|
|
17971
|
-
|
|
17972
|
-
|
|
17980
|
+
return nextCellCoords;
|
|
17981
|
+
}
|
|
17982
|
+
keyPageUp(currentCellCoords) {
|
|
17983
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
17984
|
+
const itemsPerPage = this.utils.itemsPerPage;
|
|
17985
|
+
nextCellCoords.y = currentCellCoords.y - itemsPerPage > 0 ? currentCellCoords.y - itemsPerPage + 1 : 1;
|
|
17986
|
+
if (!this.utils.isActionCell(currentCellCoords)) {
|
|
17987
|
+
if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
17988
|
+
nextCellCoords.x = this.utils.isSingleCellExpandedRow(nextCellCoords.y)
|
|
17989
|
+
? 0
|
|
17990
|
+
: nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
17991
|
+
}
|
|
17992
|
+
else if (this.utils.isRowReplaced(nextCellCoords.y)) {
|
|
17993
|
+
nextCellCoords.y = nextCellCoords.y + 1;
|
|
17994
|
+
nextCellCoords.x = this.utils.isSingleCellExpandedRow(nextCellCoords.y)
|
|
17995
|
+
? 0
|
|
17996
|
+
: nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
17973
17997
|
}
|
|
17974
|
-
|
|
17975
|
-
|
|
17976
|
-
|
|
17998
|
+
}
|
|
17999
|
+
else {
|
|
18000
|
+
if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18001
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
17977
18002
|
}
|
|
17978
|
-
elementToFocus.focus();
|
|
17979
18003
|
}
|
|
18004
|
+
return nextCellCoords;
|
|
17980
18005
|
}
|
|
17981
|
-
|
|
17982
|
-
|
|
17983
|
-
|
|
18006
|
+
keyPageDown(currentCellCoords) {
|
|
18007
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18008
|
+
const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;
|
|
18009
|
+
const itemsPerPage = this.utils.itemsPerPage;
|
|
18010
|
+
nextCellCoords.y = currentCellCoords.y + itemsPerPage >= numOfRows ? numOfRows : currentCellCoords.y + itemsPerPage;
|
|
18011
|
+
if (this.utils.isActionCell(currentCellCoords) && this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18012
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
17984
18013
|
}
|
|
17985
|
-
if (
|
|
17986
|
-
|
|
17987
|
-
(e.key === Keys.Home || e.key === Keys.End || e.key === Keys.ArrowRight || e.key === Keys.ArrowLeft)) {
|
|
17988
|
-
return this.getNextItemCoordinate(e, currentCellCoords);
|
|
18014
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y) && this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {
|
|
18015
|
+
nextCellCoords.x = 0;
|
|
17989
18016
|
}
|
|
17990
|
-
|
|
17991
|
-
|
|
17992
|
-
|
|
17993
|
-
|
|
17994
|
-
|
|
17995
|
-
|
|
17996
|
-
|
|
17997
|
-
|
|
17998
|
-
|
|
17999
|
-
|
|
18000
|
-
|
|
18001
|
-
|
|
18002
|
-
|
|
18003
|
-
|
|
18004
|
-
|
|
18005
|
-
|
|
18006
|
-
|
|
18007
|
-
|
|
18008
|
-
|
|
18009
|
-
|
|
18010
|
-
|
|
18011
|
-
|
|
18012
|
-
|
|
18013
|
-
|
|
18017
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18018
|
+
nextCellCoords.x = nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
18019
|
+
}
|
|
18020
|
+
else if (this.utils.isRowReplaced(nextCellCoords.y)) {
|
|
18021
|
+
nextCellCoords.y = nextCellCoords.y + 1;
|
|
18022
|
+
nextCellCoords.x = this.utils.isSingleCellExpandedRow(nextCellCoords.y)
|
|
18023
|
+
? 0
|
|
18024
|
+
: nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
18025
|
+
}
|
|
18026
|
+
return nextCellCoords;
|
|
18027
|
+
}
|
|
18028
|
+
}
|
|
18029
|
+
|
|
18030
|
+
/*
|
|
18031
|
+
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
18032
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
18033
|
+
* This software is released under MIT license.
|
|
18034
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18035
|
+
*/
|
|
18036
|
+
class ExpandedRowKeyNavigationStrategy extends DefaultKeyNavigationStrategy {
|
|
18037
|
+
constructor(utils) {
|
|
18038
|
+
super(utils);
|
|
18039
|
+
}
|
|
18040
|
+
keyUp(currentCellCoords) {
|
|
18041
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18042
|
+
if (currentCellCoords.y === 0) {
|
|
18043
|
+
return nextCellCoords;
|
|
18044
|
+
}
|
|
18045
|
+
nextCellCoords.y = currentCellCoords.y - 1;
|
|
18046
|
+
if (!this.utils.isActionCell(currentCellCoords)) {
|
|
18047
|
+
if (this.utils.isRowReplaced(currentCellCoords.y)) {
|
|
18014
18048
|
nextCellCoords.y = nextCellCoords.y - 1;
|
|
18015
|
-
if (!this.isDetailsRow(nextCellCoords.y)) {
|
|
18016
|
-
nextCellCoords.x = currentCellCoords.x + this.actionCellCount(nextCellCoords.y);
|
|
18017
|
-
}
|
|
18018
|
-
}
|
|
18019
|
-
else if (this.isDetailsRow(currentCellCoords.y) && !this.isDetailsRow(nextCellCoords.y)) {
|
|
18020
|
-
nextCellCoords.x = currentCellCoords.x + this.actionCellCount(nextCellCoords.y);
|
|
18021
18049
|
}
|
|
18022
|
-
|
|
18023
|
-
|
|
18024
|
-
}
|
|
18025
|
-
}
|
|
18026
|
-
else if (e.key === Keys.ArrowDown && currentCellCoords.y < numOfRows) {
|
|
18027
|
-
nextCellCoords.y = currentCellCoords.y + 1;
|
|
18028
|
-
if (isSingleCellExpandedRow && !isActionCell) {
|
|
18029
|
-
if (this.isRowReplaced(nextCellCoords.y)) {
|
|
18030
|
-
nextCellCoords.y = nextCellCoords.y + 1;
|
|
18031
|
-
}
|
|
18032
|
-
if (this.isDetailsRow(nextCellCoords.y)) {
|
|
18050
|
+
switch (true) {
|
|
18051
|
+
case this.utils.isDetailsRow(nextCellCoords.y):
|
|
18033
18052
|
nextCellCoords.x = 0;
|
|
18034
|
-
|
|
18035
|
-
|
|
18036
|
-
nextCellCoords.x =
|
|
18037
|
-
|
|
18038
|
-
|
|
18039
|
-
|
|
18040
|
-
if (isActionCell || this.isRowReplaced(nextCellCoords.y)) {
|
|
18041
|
-
nextCellCoords.y = nextCellCoords.y + 1;
|
|
18042
|
-
}
|
|
18043
|
-
else if (this.getCellsForRow(currentCellCoords.y).length > numOfColumns) {
|
|
18044
|
-
nextCellCoords.x = currentCellCoords.x - this.actionCellCount(currentCellCoords.y);
|
|
18045
|
-
}
|
|
18046
|
-
else {
|
|
18047
|
-
nextCellCoords.x = currentCellCoords.x + this.actionCellCount(nextCellCoords.y);
|
|
18053
|
+
break;
|
|
18054
|
+
case this.utils.isDetailsRow(currentCellCoords.y) === false:
|
|
18055
|
+
nextCellCoords.x = currentCellCoords.x;
|
|
18056
|
+
break;
|
|
18057
|
+
default:
|
|
18058
|
+
nextCellCoords.x = this.utils.actionCellCount(nextCellCoords.y);
|
|
18048
18059
|
}
|
|
18049
18060
|
}
|
|
18050
|
-
else if (
|
|
18051
|
-
|
|
18052
|
-
|
|
18053
|
-
|
|
18054
|
-
|
|
18055
|
-
|
|
18056
|
-
|
|
18057
|
-
|
|
18061
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y) && nextCellCoords.y > 0) {
|
|
18062
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
18063
|
+
}
|
|
18064
|
+
return nextCellCoords;
|
|
18065
|
+
}
|
|
18066
|
+
keyDown(currentCellCoords) {
|
|
18067
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18068
|
+
const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;
|
|
18069
|
+
if (currentCellCoords.y >= numOfRows) {
|
|
18070
|
+
return nextCellCoords;
|
|
18058
18071
|
}
|
|
18059
|
-
|
|
18060
|
-
|
|
18061
|
-
|
|
18062
|
-
|
|
18063
|
-
|
|
18064
|
-
|
|
18072
|
+
nextCellCoords.y = currentCellCoords.y + 1;
|
|
18073
|
+
if (!this.utils.isActionCell(currentCellCoords)) {
|
|
18074
|
+
if (this.utils.isRowReplaced(nextCellCoords.y)) {
|
|
18075
|
+
nextCellCoords.y = nextCellCoords.y + 1;
|
|
18076
|
+
}
|
|
18077
|
+
if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18065
18078
|
nextCellCoords.x = 0;
|
|
18066
18079
|
}
|
|
18067
18080
|
else {
|
|
18068
|
-
nextCellCoords.x =
|
|
18081
|
+
nextCellCoords.x = this.utils.actionCellCount(nextCellCoords.y);
|
|
18069
18082
|
}
|
|
18070
18083
|
}
|
|
18071
|
-
else
|
|
18072
|
-
nextCellCoords.
|
|
18073
|
-
if (e.ctrlKey) {
|
|
18074
|
-
nextCellCoords.x = numOfColumns;
|
|
18075
|
-
nextCellCoords.y = numOfRows;
|
|
18076
|
-
}
|
|
18084
|
+
else {
|
|
18085
|
+
nextCellCoords.y = nextCellCoords.y < numOfRows ? nextCellCoords.y + 1 : nextCellCoords.y;
|
|
18077
18086
|
}
|
|
18078
|
-
|
|
18079
|
-
|
|
18087
|
+
return nextCellCoords;
|
|
18088
|
+
}
|
|
18089
|
+
keyLeft(currentCellCoords) {
|
|
18090
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18091
|
+
if (!this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isRowReplaced(currentCellCoords.y)) {
|
|
18092
|
+
return super.keyLeft(currentCellCoords);
|
|
18093
|
+
}
|
|
18094
|
+
if (currentCellCoords.x !== 0) {
|
|
18095
|
+
nextCellCoords.x = currentCellCoords.x - 1;
|
|
18096
|
+
}
|
|
18097
|
+
else if (!this.utils.isActionCell(currentCellCoords)) {
|
|
18080
18098
|
nextCellCoords.y = currentCellCoords.y - 1;
|
|
18081
|
-
|
|
18082
|
-
nextCellCoords.y = 0;
|
|
18083
|
-
}
|
|
18099
|
+
nextCellCoords.x = this.utils.actionCellCount(nextCellCoords.y) - 1;
|
|
18084
18100
|
}
|
|
18085
18101
|
return nextCellCoords;
|
|
18086
18102
|
}
|
|
18087
|
-
|
|
18088
|
-
|
|
18089
|
-
|
|
18090
|
-
|
|
18091
|
-
|
|
18092
|
-
|
|
18093
|
-
|
|
18103
|
+
keyRight(currentCellCoords) {
|
|
18104
|
+
var _a;
|
|
18105
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18106
|
+
if (!this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isRowReplaced(currentCellCoords.y)) {
|
|
18107
|
+
return super.keyRight(currentCellCoords);
|
|
18108
|
+
}
|
|
18109
|
+
// calculate numOfColumns based on header cells.
|
|
18110
|
+
const numOfColumns = ((_a = this.utils.rows) === null || _a === void 0 ? void 0 : _a.length) - 1 ? this.utils.getCellsForRow(0).length - 1 : 0;
|
|
18111
|
+
if (currentCellCoords.x >= numOfColumns) {
|
|
18112
|
+
return nextCellCoords;
|
|
18113
|
+
}
|
|
18114
|
+
if (this.utils.isActionCell(currentCellCoords) &&
|
|
18115
|
+
currentCellCoords.x === this.utils.actionCellCount(currentCellCoords.x) - 1 &&
|
|
18116
|
+
this.utils.isRowReplaced(currentCellCoords.y) &&
|
|
18117
|
+
!this.utils.isDetailsRow(currentCellCoords.y)) {
|
|
18118
|
+
nextCellCoords.y = currentCellCoords.y + 1;
|
|
18119
|
+
nextCellCoords.x = 0;
|
|
18120
|
+
}
|
|
18121
|
+
else {
|
|
18122
|
+
nextCellCoords.x = currentCellCoords.x + 1;
|
|
18123
|
+
}
|
|
18124
|
+
return nextCellCoords;
|
|
18125
|
+
}
|
|
18126
|
+
keyEnd(currentCellCoords, ctrlKey) {
|
|
18127
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18128
|
+
if ((!this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isRowReplaced(currentCellCoords.y)) || ctrlKey) {
|
|
18129
|
+
return super.keyEnd(currentCellCoords, ctrlKey);
|
|
18130
|
+
}
|
|
18131
|
+
nextCellCoords.x = this.utils.getCellsForRow(currentCellCoords.y).length - 1;
|
|
18132
|
+
return nextCellCoords;
|
|
18133
|
+
}
|
|
18134
|
+
keyHome(currentCellCoords, ctrlKey) {
|
|
18135
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18136
|
+
if (!this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isRowReplaced(currentCellCoords.y)) {
|
|
18137
|
+
return super.keyHome(currentCellCoords, ctrlKey);
|
|
18138
|
+
}
|
|
18139
|
+
nextCellCoords.x = 0;
|
|
18140
|
+
nextCellCoords.y = currentCellCoords.y - 1;
|
|
18141
|
+
if (ctrlKey) {
|
|
18142
|
+
nextCellCoords.y = 0;
|
|
18143
|
+
}
|
|
18144
|
+
return nextCellCoords;
|
|
18145
|
+
}
|
|
18146
|
+
keyPageUp(currentCellCoords) {
|
|
18147
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18148
|
+
const itemsPerPage = this.utils.itemsPerPage;
|
|
18149
|
+
nextCellCoords.y = currentCellCoords.y - itemsPerPage > 0 ? currentCellCoords.y - itemsPerPage + 1 : 1;
|
|
18150
|
+
if (!this.utils.isActionCell(currentCellCoords)) {
|
|
18151
|
+
if (this.utils.isRowReplaced(nextCellCoords.y)) {
|
|
18152
|
+
if (!this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18153
|
+
nextCellCoords.y = nextCellCoords.y + 1;
|
|
18154
|
+
nextCellCoords.x = 0;
|
|
18155
|
+
}
|
|
18094
18156
|
}
|
|
18095
|
-
if (this.isDetailsRow(
|
|
18096
|
-
if (
|
|
18097
|
-
nextCellCoords.
|
|
18157
|
+
else if (!this.utils.isDetailsRow(currentCellCoords.y)) {
|
|
18158
|
+
if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18159
|
+
nextCellCoords.x = 0;
|
|
18098
18160
|
}
|
|
18099
|
-
|
|
18100
|
-
|
|
18161
|
+
}
|
|
18162
|
+
else if (this.utils.isDetailsRow(currentCellCoords.y)) {
|
|
18163
|
+
if (!this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18164
|
+
nextCellCoords.x = this.utils.actionCellCount(nextCellCoords.y);
|
|
18101
18165
|
}
|
|
18102
18166
|
}
|
|
18103
18167
|
}
|
|
18104
|
-
else if (
|
|
18105
|
-
nextCellCoords.y =
|
|
18106
|
-
|
|
18168
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18169
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
18170
|
+
}
|
|
18171
|
+
return nextCellCoords;
|
|
18172
|
+
}
|
|
18173
|
+
keyPageDown(currentCellCoords) {
|
|
18174
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18175
|
+
const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;
|
|
18176
|
+
const itemsPerPage = this.utils.itemsPerPage;
|
|
18177
|
+
nextCellCoords.y = currentCellCoords.y + itemsPerPage >= numOfRows ? numOfRows : currentCellCoords.y + itemsPerPage;
|
|
18178
|
+
if (!this.utils.isActionCell(currentCellCoords)) {
|
|
18179
|
+
if (this.utils.isRowReplaced(nextCellCoords.y)) {
|
|
18180
|
+
if (nextCellCoords.y < numOfRows && !this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18181
|
+
nextCellCoords.y = nextCellCoords.y + 1;
|
|
18182
|
+
}
|
|
18183
|
+
}
|
|
18184
|
+
else if (this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18185
|
+
nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);
|
|
18186
|
+
}
|
|
18187
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18107
18188
|
nextCellCoords.x = 0;
|
|
18108
|
-
nextCellCoords.y = nextCellCoords.y + 1;
|
|
18109
|
-
return nextCellCoords;
|
|
18110
18189
|
}
|
|
18111
|
-
|
|
18112
|
-
|
|
18113
|
-
|
|
18190
|
+
}
|
|
18191
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18192
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
18193
|
+
}
|
|
18194
|
+
return nextCellCoords;
|
|
18195
|
+
}
|
|
18196
|
+
}
|
|
18197
|
+
|
|
18198
|
+
/*
|
|
18199
|
+
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
18200
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
18201
|
+
* This software is released under MIT license.
|
|
18202
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18203
|
+
*/
|
|
18204
|
+
class ExpandedColumnsRowKeyNavigationStrategy extends ExpandedRowKeyNavigationStrategy {
|
|
18205
|
+
constructor(utils) {
|
|
18206
|
+
super(utils);
|
|
18207
|
+
}
|
|
18208
|
+
keyUp(currentCellCoords) {
|
|
18209
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18210
|
+
if (currentCellCoords.y === 0) {
|
|
18211
|
+
return nextCellCoords;
|
|
18212
|
+
}
|
|
18213
|
+
nextCellCoords.y = currentCellCoords.y - 1;
|
|
18214
|
+
if (this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {
|
|
18215
|
+
return super.keyUp(currentCellCoords);
|
|
18216
|
+
}
|
|
18217
|
+
const isActionCell = this.utils.isActionCell(currentCellCoords);
|
|
18218
|
+
if (isActionCell && this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18219
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
18220
|
+
}
|
|
18221
|
+
else if (this.utils.isRowReplaced(nextCellCoords.y)) {
|
|
18222
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
18223
|
+
if (!this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18224
|
+
nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);
|
|
18114
18225
|
}
|
|
18115
18226
|
}
|
|
18116
|
-
else if (
|
|
18117
|
-
nextCellCoords.x = currentCellCoords.x
|
|
18227
|
+
else if (this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18228
|
+
nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);
|
|
18118
18229
|
}
|
|
18119
|
-
else if (
|
|
18120
|
-
nextCellCoords.x = currentCellCoords.x
|
|
18230
|
+
else if (!isActionCell && this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18231
|
+
nextCellCoords.x = currentCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
18232
|
+
}
|
|
18233
|
+
return nextCellCoords;
|
|
18234
|
+
}
|
|
18235
|
+
keyDown(currentCellCoords) {
|
|
18236
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18237
|
+
const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;
|
|
18238
|
+
const numOfColumns = numOfRows ? this.utils.getCellsForRow(0).length - 1 : 0;
|
|
18239
|
+
if (currentCellCoords.y >= numOfRows) {
|
|
18240
|
+
return nextCellCoords;
|
|
18241
|
+
}
|
|
18242
|
+
nextCellCoords.y = currentCellCoords.y + 1;
|
|
18243
|
+
if (this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {
|
|
18244
|
+
return super.keyDown(currentCellCoords);
|
|
18121
18245
|
}
|
|
18122
|
-
|
|
18123
|
-
nextCellCoords.
|
|
18124
|
-
|
|
18125
|
-
|
|
18246
|
+
if (!this.utils.isActionCell(currentCellCoords)) {
|
|
18247
|
+
if (this.utils.isRowReplaced(nextCellCoords.y)) {
|
|
18248
|
+
nextCellCoords.y = nextCellCoords.y < numOfRows ? nextCellCoords.y + 1 : nextCellCoords.y - 1;
|
|
18249
|
+
}
|
|
18250
|
+
else if (this.utils.getCellsForRow(currentCellCoords.y).length > numOfColumns) {
|
|
18251
|
+
nextCellCoords.x = currentCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
18252
|
+
}
|
|
18253
|
+
else {
|
|
18254
|
+
nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);
|
|
18126
18255
|
}
|
|
18127
18256
|
}
|
|
18128
|
-
else
|
|
18129
|
-
nextCellCoords.
|
|
18130
|
-
|
|
18131
|
-
|
|
18257
|
+
else {
|
|
18258
|
+
nextCellCoords.y = nextCellCoords.y < numOfRows ? nextCellCoords.y + 1 : nextCellCoords.y - 1;
|
|
18259
|
+
}
|
|
18260
|
+
return nextCellCoords;
|
|
18261
|
+
}
|
|
18262
|
+
keyLeft(currentCellCoords) {
|
|
18263
|
+
return super.keyLeft(currentCellCoords);
|
|
18264
|
+
}
|
|
18265
|
+
keyRight(currentCellCoords) {
|
|
18266
|
+
return super.keyRight(currentCellCoords);
|
|
18267
|
+
}
|
|
18268
|
+
keyEnd(currentCellCoords, ctrlKey) {
|
|
18269
|
+
return super.keyEnd(currentCellCoords, ctrlKey);
|
|
18270
|
+
}
|
|
18271
|
+
keyHome(currentCellCoords, ctrlKey) {
|
|
18272
|
+
return super.keyHome(currentCellCoords, ctrlKey);
|
|
18273
|
+
}
|
|
18274
|
+
keyPageUp(currentCellCoords) {
|
|
18275
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18276
|
+
const itemsPerPage = this.utils.itemsPerPage;
|
|
18277
|
+
nextCellCoords.y = currentCellCoords.y - itemsPerPage > 0 ? currentCellCoords.y - itemsPerPage + 1 : 1;
|
|
18278
|
+
if (this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {
|
|
18279
|
+
return super.keyPageUp(currentCellCoords);
|
|
18280
|
+
}
|
|
18281
|
+
if (!this.utils.isActionCell(currentCellCoords)) {
|
|
18282
|
+
if (this.utils.isRowReplaced(nextCellCoords.y)) {
|
|
18283
|
+
if (!this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18284
|
+
nextCellCoords.y = nextCellCoords.y + 1;
|
|
18285
|
+
nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);
|
|
18286
|
+
}
|
|
18287
|
+
}
|
|
18288
|
+
else if (this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18289
|
+
nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);
|
|
18290
|
+
}
|
|
18291
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18292
|
+
nextCellCoords.x = currentCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
18132
18293
|
}
|
|
18133
18294
|
}
|
|
18134
|
-
else if (
|
|
18135
|
-
nextCellCoords.y =
|
|
18295
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18296
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
18136
18297
|
}
|
|
18137
|
-
|
|
18138
|
-
|
|
18139
|
-
|
|
18298
|
+
return nextCellCoords;
|
|
18299
|
+
}
|
|
18300
|
+
keyPageDown(currentCellCoords) {
|
|
18301
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18302
|
+
const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;
|
|
18303
|
+
const itemsPerPage = this.utils.itemsPerPage;
|
|
18304
|
+
nextCellCoords.y = currentCellCoords.y + itemsPerPage >= numOfRows ? numOfRows : currentCellCoords.y + itemsPerPage;
|
|
18305
|
+
if (this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {
|
|
18306
|
+
return super.keyPageDown(currentCellCoords);
|
|
18307
|
+
}
|
|
18308
|
+
if (!this.utils.isActionCell(currentCellCoords)) {
|
|
18309
|
+
if (this.utils.isRowReplaced(nextCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18310
|
+
if (nextCellCoords.y < numOfRows) {
|
|
18311
|
+
nextCellCoords.y = nextCellCoords.y + 1;
|
|
18312
|
+
nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);
|
|
18313
|
+
}
|
|
18314
|
+
}
|
|
18315
|
+
else if (this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18316
|
+
nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);
|
|
18317
|
+
}
|
|
18318
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18319
|
+
nextCellCoords.x = currentCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
18320
|
+
}
|
|
18321
|
+
}
|
|
18322
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18323
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
18140
18324
|
}
|
|
18141
18325
|
return nextCellCoords;
|
|
18142
18326
|
}
|
|
18143
|
-
|
|
18327
|
+
}
|
|
18328
|
+
|
|
18329
|
+
/*
|
|
18330
|
+
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
18331
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
18332
|
+
* This software is released under MIT license.
|
|
18333
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18334
|
+
*/
|
|
18335
|
+
class KeyNavigationUtils {
|
|
18336
|
+
constructor(host, config) {
|
|
18337
|
+
this.host = host;
|
|
18338
|
+
this.config = config;
|
|
18339
|
+
}
|
|
18340
|
+
get grid() {
|
|
18144
18341
|
var _a;
|
|
18145
|
-
|
|
18146
|
-
// calculate numOfColumns based on header cells.
|
|
18147
|
-
const numOfColumns = numOfRows ? this.getCellsForRow(0).length - 1 : 0;
|
|
18148
|
-
const dir = this.host.dir;
|
|
18149
|
-
const inlineStart = dir === 'rtl' ? Keys.ArrowRight : Keys.ArrowLeft;
|
|
18150
|
-
const inlineEnd = dir === 'rtl' ? Keys.ArrowLeft : Keys.ArrowRight;
|
|
18151
|
-
const itemsPerPage = Math.floor(((_a = this.host) === null || _a === void 0 ? void 0 : _a.querySelector('.datagrid').clientHeight) / this.rows[0].clientHeight) - 1 || 0;
|
|
18152
|
-
const isActionCell = this.isActionCell(currentCellCoords);
|
|
18153
|
-
const nextCellCoords = {
|
|
18154
|
-
x: currentCellCoords.x,
|
|
18155
|
-
y: currentCellCoords.y,
|
|
18156
|
-
};
|
|
18157
|
-
return { numOfRows, numOfColumns, inlineStart, inlineEnd, itemsPerPage, isActionCell, nextCellCoords };
|
|
18342
|
+
return (_a = this.host) === null || _a === void 0 ? void 0 : _a.querySelector(this.config.keyGrid);
|
|
18158
18343
|
}
|
|
18159
|
-
|
|
18344
|
+
get rows() {
|
|
18345
|
+
var _a;
|
|
18346
|
+
return (_a = this.host) === null || _a === void 0 ? void 0 : _a.querySelectorAll(this.config.keyGridRows);
|
|
18347
|
+
}
|
|
18348
|
+
get cells() {
|
|
18349
|
+
var _a;
|
|
18350
|
+
return (_a = this.host) === null || _a === void 0 ? void 0 : _a.querySelectorAll(this.config.keyGridCells);
|
|
18351
|
+
}
|
|
18352
|
+
get currentCellCoordinates() {
|
|
18160
18353
|
const currentCell = this.cells ? Array.from(this.cells).find(i => i.getAttribute('tabindex') === '0') : null;
|
|
18161
18354
|
const currentRow = currentCell ? currentCell.closest(this.config.keyGridRows) : null;
|
|
18162
18355
|
const coordinates = {
|
|
@@ -18167,6 +18360,36 @@ class KeyNavigationGridController {
|
|
|
18167
18360
|
};
|
|
18168
18361
|
return coordinates;
|
|
18169
18362
|
}
|
|
18363
|
+
get itemsPerPage() {
|
|
18364
|
+
var _a;
|
|
18365
|
+
return Math.floor(((_a = this.host) === null || _a === void 0 ? void 0 : _a.querySelector('.datagrid').clientHeight) / this.rows[0].clientHeight) - 1 || 0;
|
|
18366
|
+
}
|
|
18367
|
+
getNextItemCoordinate(e) {
|
|
18368
|
+
const currentCellCoords = this.currentCellCoordinates;
|
|
18369
|
+
const strategy = this.getNavStrategy(currentCellCoords);
|
|
18370
|
+
const inlineStart = this.host.dir === 'rtl' ? Keys.ArrowRight : Keys.ArrowLeft;
|
|
18371
|
+
const inlineEnd = this.host.dir === 'rtl' ? Keys.ArrowLeft : Keys.ArrowRight;
|
|
18372
|
+
switch (e.key) {
|
|
18373
|
+
case Keys.ArrowUp:
|
|
18374
|
+
return strategy.keyUp(currentCellCoords);
|
|
18375
|
+
case Keys.ArrowDown:
|
|
18376
|
+
return strategy.keyDown(currentCellCoords);
|
|
18377
|
+
case inlineStart:
|
|
18378
|
+
return strategy.keyLeft(currentCellCoords);
|
|
18379
|
+
case inlineEnd:
|
|
18380
|
+
return strategy.keyRight(currentCellCoords);
|
|
18381
|
+
case Keys.Home:
|
|
18382
|
+
return strategy.keyHome(currentCellCoords, e.ctrlKey);
|
|
18383
|
+
case Keys.End:
|
|
18384
|
+
return strategy.keyEnd(currentCellCoords, e.ctrlKey);
|
|
18385
|
+
case Keys.PageUp:
|
|
18386
|
+
return strategy.keyPageUp(currentCellCoords);
|
|
18387
|
+
case Keys.PageDown:
|
|
18388
|
+
return strategy.keyPageDown(currentCellCoords);
|
|
18389
|
+
default:
|
|
18390
|
+
return currentCellCoords;
|
|
18391
|
+
}
|
|
18392
|
+
}
|
|
18170
18393
|
getCellsForRow(index) {
|
|
18171
18394
|
return this.rows[index].querySelectorAll(this.config.keyGridCells);
|
|
18172
18395
|
}
|
|
@@ -18181,10 +18404,8 @@ class KeyNavigationGridController {
|
|
|
18181
18404
|
return !!this.rows[index].closest('clr-dg-row.datagrid-row-replaced');
|
|
18182
18405
|
}
|
|
18183
18406
|
isSingleCellExpandedRow(index) {
|
|
18184
|
-
|
|
18185
|
-
|
|
18186
|
-
: this.rows[index].querySelector('.datagrid-row-detail');
|
|
18187
|
-
return (row === null || row === void 0 ? void 0 : row.querySelectorAll(this.config.keyGridCells).length) === 1;
|
|
18407
|
+
var _a;
|
|
18408
|
+
return ((_a = this.rows[index]) === null || _a === void 0 ? void 0 : _a.querySelectorAll(this.config.keyGridCells).length) === 1;
|
|
18188
18409
|
}
|
|
18189
18410
|
actionCellCount(index) {
|
|
18190
18411
|
return this.actionCellsAsArray(index).length;
|
|
@@ -18195,6 +18416,168 @@ class KeyNavigationGridController {
|
|
|
18195
18416
|
isActionCell(cellCoords) {
|
|
18196
18417
|
return !!this.actionCellsAsArray(cellCoords.y)[cellCoords.x];
|
|
18197
18418
|
}
|
|
18419
|
+
createNextCellCoords(cellCoords) {
|
|
18420
|
+
return {
|
|
18421
|
+
x: cellCoords.x,
|
|
18422
|
+
y: cellCoords.y,
|
|
18423
|
+
};
|
|
18424
|
+
}
|
|
18425
|
+
getNavStrategy(currentCellCoords) {
|
|
18426
|
+
switch (true) {
|
|
18427
|
+
case this.isSingleCellExpandedRow(currentCellCoords.y):
|
|
18428
|
+
return new ExpandedRowKeyNavigationStrategy(this);
|
|
18429
|
+
case this.isDetailsRow(currentCellCoords.y):
|
|
18430
|
+
case this.isExpandedRow(currentCellCoords.y):
|
|
18431
|
+
return new ExpandedColumnsRowKeyNavigationStrategy(this);
|
|
18432
|
+
default:
|
|
18433
|
+
return new DefaultKeyNavigationStrategy(this);
|
|
18434
|
+
}
|
|
18435
|
+
}
|
|
18436
|
+
}
|
|
18437
|
+
|
|
18438
|
+
/*
|
|
18439
|
+
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
18440
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
18441
|
+
* This software is released under MIT license.
|
|
18442
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18443
|
+
*/
|
|
18444
|
+
const actionableItemSelectors = [
|
|
18445
|
+
'a[href]',
|
|
18446
|
+
'area[href]',
|
|
18447
|
+
'input:not([disabled])',
|
|
18448
|
+
'button:not([disabled])',
|
|
18449
|
+
'select:not([disabled])',
|
|
18450
|
+
'textarea:not([disabled])',
|
|
18451
|
+
'iframe',
|
|
18452
|
+
'object',
|
|
18453
|
+
'embed',
|
|
18454
|
+
'[contenteditable=true]',
|
|
18455
|
+
'[role=button]:not([disabled])',
|
|
18456
|
+
];
|
|
18457
|
+
function getTabbableItems(el) {
|
|
18458
|
+
const tabbableItemSelectors = [...actionableItemSelectors, '[tabindex="0"]:not([disabled])'];
|
|
18459
|
+
const tabbableSelector = tabbableItemSelectors.join(',');
|
|
18460
|
+
return Array.from(el.querySelectorAll(tabbableSelector));
|
|
18461
|
+
}
|
|
18462
|
+
function isActionableItem(el) {
|
|
18463
|
+
const actionableSelector = actionableItemSelectors.join(',');
|
|
18464
|
+
return el.matches(actionableSelector);
|
|
18465
|
+
}
|
|
18466
|
+
class KeyNavigationGridController {
|
|
18467
|
+
constructor(zone) {
|
|
18468
|
+
this.zone = zone;
|
|
18469
|
+
this.skipItemFocus = false;
|
|
18470
|
+
this.listenersAdded = false;
|
|
18471
|
+
this.destroy$ = new Subject();
|
|
18472
|
+
this._activeCell = null;
|
|
18473
|
+
this.config = {
|
|
18474
|
+
keyGridRows: '[role=row]:not(.datagrid-placeholder):not([style*="display: none"])',
|
|
18475
|
+
keyGridCells: '[role=gridcell]:not(.datagrid-hidden-column):not(.datagrid-placeholder-content), [role=columnheader]:not(.datagrid-hidden-column):not(.datagrid-placeholder-content), .datagrid-detail-caret',
|
|
18476
|
+
keyGrid: '[role=grid]',
|
|
18477
|
+
};
|
|
18478
|
+
}
|
|
18479
|
+
ngOnDestroy() {
|
|
18480
|
+
this.destroy$.next();
|
|
18481
|
+
this.destroy$.complete();
|
|
18482
|
+
}
|
|
18483
|
+
addListeners() {
|
|
18484
|
+
if (this.listenersAdded) {
|
|
18485
|
+
return;
|
|
18486
|
+
}
|
|
18487
|
+
this.zone.runOutsideAngular(() => {
|
|
18488
|
+
fromEvent(this.keyNavUtils.grid, 'mousedown')
|
|
18489
|
+
.pipe(takeUntil(this.destroy$))
|
|
18490
|
+
.subscribe((e) => {
|
|
18491
|
+
// preserve right click for context menus & keyboard mouse control https://apple.stackexchange.com/questions/32715/how-do-i-open-the-context-menu-from-a-mac-keyboard
|
|
18492
|
+
if (e.buttons === 1 && !e.ctrlKey) {
|
|
18493
|
+
const activeCell = this.keyNavUtils.cells
|
|
18494
|
+
? Array.from(this.keyNavUtils.cells).find(c => c === e.target || c === e.target.closest(this.config.keyGridCells))
|
|
18495
|
+
: null;
|
|
18496
|
+
if (activeCell) {
|
|
18497
|
+
this.setActiveCell(activeCell, { keepFocus: isActionableItem(e.target) });
|
|
18498
|
+
}
|
|
18499
|
+
}
|
|
18500
|
+
});
|
|
18501
|
+
fromEvent(this.keyNavUtils.grid, 'wheel')
|
|
18502
|
+
.pipe(takeUntil(this.destroy$))
|
|
18503
|
+
.subscribe(() => {
|
|
18504
|
+
this.removeActiveCell();
|
|
18505
|
+
});
|
|
18506
|
+
fromEvent(this.keyNavUtils.grid, 'focusout')
|
|
18507
|
+
.pipe(debounceTime(0), takeUntil(this.destroy$))
|
|
18508
|
+
.subscribe(() => {
|
|
18509
|
+
if (this.keyNavUtils.grid.contains(document.activeElement)) {
|
|
18510
|
+
return;
|
|
18511
|
+
}
|
|
18512
|
+
this.removeActiveCell();
|
|
18513
|
+
});
|
|
18514
|
+
fromEvent(this.keyNavUtils.grid, 'keydown')
|
|
18515
|
+
.pipe(takeUntil(this.destroy$))
|
|
18516
|
+
.subscribe((e) => {
|
|
18517
|
+
// Skip column resize events
|
|
18518
|
+
if (e.target.classList.contains('drag-handle') &&
|
|
18519
|
+
(e.key === Keys.ArrowLeft || e.key === Keys.ArrowRight)) {
|
|
18520
|
+
return;
|
|
18521
|
+
}
|
|
18522
|
+
if (e.key === Keys.ArrowUp ||
|
|
18523
|
+
e.key === Keys.ArrowDown ||
|
|
18524
|
+
e.key === Keys.ArrowLeft ||
|
|
18525
|
+
e.key === Keys.ArrowRight ||
|
|
18526
|
+
e.key === Keys.End ||
|
|
18527
|
+
e.key === Keys.Home ||
|
|
18528
|
+
e.key === Keys.PageUp ||
|
|
18529
|
+
e.key === Keys.PageDown) {
|
|
18530
|
+
const nextCellCoords = this.keyNavUtils.getNextItemCoordinate(e);
|
|
18531
|
+
const activeItem = this.keyNavUtils.rows
|
|
18532
|
+
? Array.from(this.keyNavUtils.getCellsForRow(nextCellCoords.y))[nextCellCoords.x]
|
|
18533
|
+
: null;
|
|
18534
|
+
if (activeItem) {
|
|
18535
|
+
this.setActiveCell(activeItem);
|
|
18536
|
+
}
|
|
18537
|
+
e.preventDefault();
|
|
18538
|
+
}
|
|
18539
|
+
});
|
|
18540
|
+
});
|
|
18541
|
+
this.listenersAdded = true;
|
|
18542
|
+
}
|
|
18543
|
+
initializeKeyGrid(host) {
|
|
18544
|
+
this.keyNavUtils = new KeyNavigationUtils(host, this.config);
|
|
18545
|
+
this.addListeners();
|
|
18546
|
+
this.resetKeyGrid();
|
|
18547
|
+
}
|
|
18548
|
+
resetKeyGrid() {
|
|
18549
|
+
var _a;
|
|
18550
|
+
(_a = this.keyNavUtils.cells) === null || _a === void 0 ? void 0 : _a.forEach((i) => i.setAttribute('tabindex', '-1'));
|
|
18551
|
+
const firstCell = this.keyNavUtils.cells ? this.keyNavUtils.cells[0] : null;
|
|
18552
|
+
firstCell === null || firstCell === void 0 ? void 0 : firstCell.setAttribute('tabindex', '0');
|
|
18553
|
+
}
|
|
18554
|
+
removeActiveCell() {
|
|
18555
|
+
this._activeCell = null;
|
|
18556
|
+
}
|
|
18557
|
+
getActiveCell() {
|
|
18558
|
+
return this._activeCell;
|
|
18559
|
+
}
|
|
18560
|
+
setActiveCell(activeCell, { keepFocus } = { keepFocus: false }) {
|
|
18561
|
+
const prior = this.keyNavUtils.cells
|
|
18562
|
+
? Array.from(this.keyNavUtils.cells).find(c => c.getAttribute('tabindex') === '0')
|
|
18563
|
+
: null;
|
|
18564
|
+
if (prior) {
|
|
18565
|
+
prior.setAttribute('tabindex', '-1');
|
|
18566
|
+
}
|
|
18567
|
+
activeCell.setAttribute('tabindex', '0');
|
|
18568
|
+
this._activeCell = activeCell;
|
|
18569
|
+
if (!this.skipItemFocus && !keepFocus) {
|
|
18570
|
+
let elementToFocus;
|
|
18571
|
+
if (activeCell.getAttribute('role') === 'columnheader') {
|
|
18572
|
+
elementToFocus = activeCell;
|
|
18573
|
+
}
|
|
18574
|
+
else {
|
|
18575
|
+
const tabbableElements = getTabbableItems(activeCell);
|
|
18576
|
+
elementToFocus = tabbableElements.length ? tabbableElements[0] : activeCell;
|
|
18577
|
+
}
|
|
18578
|
+
elementToFocus.focus();
|
|
18579
|
+
}
|
|
18580
|
+
}
|
|
18198
18581
|
}
|
|
18199
18582
|
KeyNavigationGridController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: KeyNavigationGridController, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
18200
18583
|
KeyNavigationGridController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: KeyNavigationGridController });
|
|
@@ -19906,18 +20289,14 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
|
19906
20289
|
if (typeof comparator === 'string') {
|
|
19907
20290
|
this._sortBy = new DatagridPropertyComparator(comparator);
|
|
19908
20291
|
}
|
|
20292
|
+
else if (comparator) {
|
|
20293
|
+
this._sortBy = comparator;
|
|
20294
|
+
}
|
|
20295
|
+
else if (this.field) {
|
|
20296
|
+
this._sortBy = new DatagridPropertyComparator(this.field);
|
|
20297
|
+
}
|
|
19909
20298
|
else {
|
|
19910
|
-
|
|
19911
|
-
this._sortBy = comparator;
|
|
19912
|
-
}
|
|
19913
|
-
else {
|
|
19914
|
-
if (this.field) {
|
|
19915
|
-
this._sortBy = new DatagridPropertyComparator(this.field);
|
|
19916
|
-
}
|
|
19917
|
-
else {
|
|
19918
|
-
delete this._sortBy;
|
|
19919
|
-
}
|
|
19920
|
-
}
|
|
20299
|
+
delete this._sortBy;
|
|
19921
20300
|
}
|
|
19922
20301
|
}
|
|
19923
20302
|
get sortOrder() {
|
|
@@ -20300,6 +20679,10 @@ class Items {
|
|
|
20300
20679
|
this._pageSub.unsubscribe();
|
|
20301
20680
|
}
|
|
20302
20681
|
}
|
|
20682
|
+
smartenDown() {
|
|
20683
|
+
this._smart = false;
|
|
20684
|
+
this.destroy();
|
|
20685
|
+
}
|
|
20303
20686
|
smartenUp() {
|
|
20304
20687
|
this._smart = true;
|
|
20305
20688
|
/*
|
|
@@ -21090,6 +21473,60 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
21090
21473
|
args: ['click', ['$event']]
|
|
21091
21474
|
}] } });
|
|
21092
21475
|
|
|
21476
|
+
/*
|
|
21477
|
+
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
21478
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
21479
|
+
* This software is released under MIT license.
|
|
21480
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
21481
|
+
*/
|
|
21482
|
+
class DatagridCellRenderer {
|
|
21483
|
+
constructor(el, renderer, organizer) {
|
|
21484
|
+
this.el = el;
|
|
21485
|
+
this.renderer = renderer;
|
|
21486
|
+
this.subscriptions = [];
|
|
21487
|
+
this.subscriptions.push(organizer.filterRenderSteps(DatagridRenderStep.CLEAR_WIDTHS).subscribe(() => this.clearWidth()));
|
|
21488
|
+
}
|
|
21489
|
+
ngOnDestroy() {
|
|
21490
|
+
this.subscriptions.forEach(sub => sub.unsubscribe());
|
|
21491
|
+
if (this.stateSubscription) {
|
|
21492
|
+
this.stateSubscription.unsubscribe();
|
|
21493
|
+
}
|
|
21494
|
+
}
|
|
21495
|
+
resetState(state) {
|
|
21496
|
+
this.setWidth(state);
|
|
21497
|
+
this.setHidden(state);
|
|
21498
|
+
}
|
|
21499
|
+
setWidth(state) {
|
|
21500
|
+
if (state.strictWidth) {
|
|
21501
|
+
this.renderer.addClass(this.el.nativeElement, STRICT_WIDTH_CLASS);
|
|
21502
|
+
}
|
|
21503
|
+
else {
|
|
21504
|
+
this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);
|
|
21505
|
+
}
|
|
21506
|
+
this.renderer.setStyle(this.el.nativeElement, 'width', state.width + 'px');
|
|
21507
|
+
}
|
|
21508
|
+
setHidden(state) {
|
|
21509
|
+
if (state.hidden) {
|
|
21510
|
+
this.renderer.addClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);
|
|
21511
|
+
}
|
|
21512
|
+
else {
|
|
21513
|
+
this.renderer.removeClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);
|
|
21514
|
+
}
|
|
21515
|
+
}
|
|
21516
|
+
clearWidth() {
|
|
21517
|
+
this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);
|
|
21518
|
+
this.renderer.setStyle(this.el.nativeElement, 'width', null);
|
|
21519
|
+
}
|
|
21520
|
+
}
|
|
21521
|
+
DatagridCellRenderer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridCellRenderer, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DatagridRenderOrganizer }], target: i0.ɵɵFactoryTarget.Directive });
|
|
21522
|
+
DatagridCellRenderer.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: DatagridCellRenderer, selector: "clr-dg-cell", ngImport: i0 });
|
|
21523
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridCellRenderer, decorators: [{
|
|
21524
|
+
type: Directive,
|
|
21525
|
+
args: [{
|
|
21526
|
+
selector: 'clr-dg-cell',
|
|
21527
|
+
}]
|
|
21528
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DatagridRenderOrganizer }]; } });
|
|
21529
|
+
|
|
21093
21530
|
/*
|
|
21094
21531
|
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
21095
21532
|
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
@@ -21113,6 +21550,7 @@ class ClrDatagridRow {
|
|
|
21113
21550
|
this.expandedChange = new EventEmitter(false);
|
|
21114
21551
|
this.detailDisabled = false;
|
|
21115
21552
|
this.detailHidden = false;
|
|
21553
|
+
this.skeletonLoading = false;
|
|
21116
21554
|
this.displayCells = false;
|
|
21117
21555
|
this.expandAnimationTrigger = false;
|
|
21118
21556
|
/* reference to the enum so that template can access */
|
|
@@ -21247,6 +21685,16 @@ class ClrDatagridRow {
|
|
|
21247
21685
|
}
|
|
21248
21686
|
if (viewChange === DatagridDisplayMode.CALCULATE) {
|
|
21249
21687
|
this.displayCells = false;
|
|
21688
|
+
// Inserts a fixed cell if any of these conditions are true.
|
|
21689
|
+
const fixedCellConditions = [
|
|
21690
|
+
this.selection.selectionType !== this.SELECTION_TYPE.None,
|
|
21691
|
+
this.rowActionService.hasActionableRow,
|
|
21692
|
+
this.globalExpandable.hasExpandableRow,
|
|
21693
|
+
this.detailService.enabled,
|
|
21694
|
+
];
|
|
21695
|
+
fixedCellConditions
|
|
21696
|
+
.filter(Boolean)
|
|
21697
|
+
.forEach(() => this._calculatedCells.insert(this._fixedCellTemplate.createEmbeddedView(null)));
|
|
21250
21698
|
this.dgCells.forEach(cell => {
|
|
21251
21699
|
if (!cell._view.destroyed) {
|
|
21252
21700
|
this._calculatedCells.insert(cell._view);
|
|
@@ -21288,7 +21736,7 @@ class ClrDatagridRow {
|
|
|
21288
21736
|
* selection browser functionality, which is inconsistently implemented in browsers anyway.
|
|
21289
21737
|
*/
|
|
21290
21738
|
clearRanges(event) {
|
|
21291
|
-
if (event.shiftKey) {
|
|
21739
|
+
if (this.selection.rowSelectionMode && event.shiftKey) {
|
|
21292
21740
|
this.document.getSelection().removeAllRanges();
|
|
21293
21741
|
// Firefox is too persistent about its text-selection behaviour. So we need to add a preventDefault();
|
|
21294
21742
|
// We should not try to enforce this on the other browsers, though, because their toggle cycle does not get canceled by
|
|
@@ -21305,7 +21753,7 @@ class ClrDatagridRow {
|
|
|
21305
21753
|
selectRow(selected = !this.selected, $event) {
|
|
21306
21754
|
// The label also captures clicks that bubble up to the row event listener, causing
|
|
21307
21755
|
// this handler to run twice. This exits early to prevent toggling the checkbox twice.
|
|
21308
|
-
if ($event.target.tagName === 'LABEL') {
|
|
21756
|
+
if (!this.selection.rowSelectionMode || $event.target.tagName === 'LABEL') {
|
|
21309
21757
|
return;
|
|
21310
21758
|
}
|
|
21311
21759
|
if (this.selection.selectionType === this.SELECTION_TYPE.Single) {
|
|
@@ -21340,15 +21788,16 @@ class ClrDatagridRow {
|
|
|
21340
21788
|
}
|
|
21341
21789
|
}
|
|
21342
21790
|
ClrDatagridRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", 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 });
|
|
21343
|
-
ClrDatagridRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatagridRow, selector: "clr-dg-row", inputs: { detailDisabled: ["clrDgDetailDisabled", "detailDisabled"], detailHidden: ["clrDgDetailHidden", "detailHidden"], item: ["clrDgItem", "item"], clrDgSelectable: "clrDgSelectable", selected: ["clrDgSelected", "selected"], expanded: ["clrDgExpanded", "expanded"], clrDgDetailOpenLabel: "clrDgDetailOpenLabel", clrDgDetailCloseLabel: "clrDgDetailCloseLabel", clrDgRowSelectionLabel: "clrDgRowSelectionLabel" }, outputs: { selectedChanged: "clrDgSelectedChange", expandedChange: "clrDgExpandedChange" }, host: { attributes: { "role": "rowgroup" }, properties: { "class.datagrid-row": "true", "class.datagrid-selected": "selected", "attr.aria-owns": "id" } }, providers: [
|
|
21791
|
+
ClrDatagridRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatagridRow, selector: "clr-dg-row", inputs: { detailDisabled: ["clrDgDetailDisabled", "detailDisabled"], detailHidden: ["clrDgDetailHidden", "detailHidden"], skeletonLoading: ["clrDgSkeletonLoading", "skeletonLoading"], item: ["clrDgItem", "item"], clrDgSelectable: "clrDgSelectable", selected: ["clrDgSelected", "selected"], expanded: ["clrDgExpanded", "expanded"], clrDgDetailOpenLabel: "clrDgDetailOpenLabel", clrDgDetailCloseLabel: "clrDgDetailCloseLabel", clrDgRowSelectionLabel: "clrDgRowSelectionLabel" }, outputs: { selectedChanged: "clrDgSelectedChange", expandedChange: "clrDgExpandedChange" }, host: { attributes: { "role": "rowgroup" }, properties: { "class.datagrid-row": "true", "class.datagrid-row-skeleton": "skeletonLoading", "class.datagrid-selected": "selected", "attr.aria-owns": "id" } }, providers: [
|
|
21344
21792
|
DatagridIfExpandService,
|
|
21345
21793
|
{ provide: IfExpandService, useExisting: DatagridIfExpandService },
|
|
21346
21794
|
{ provide: LoadingListener, useExisting: DatagridIfExpandService },
|
|
21347
|
-
], queries: [{ propertyName: "dgCells", predicate: ClrDatagridCell }], viewQueries: [{ propertyName: "expandAnimation", first: true, predicate:
|
|
21795
|
+
], queries: [{ propertyName: "dgCells", predicate: ClrDatagridCell }], viewQueries: [{ propertyName: "expandAnimation", first: true, predicate: ClrExpandableAnimationDirective, 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 }, { propertyName: "_fixedCellTemplate", first: true, predicate: ["fixedCellTemplate"], descendants: true }], ngImport: i0, template: "<div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [clrExpandableAnimation]=\"expandAnimationTrigger\"\n (mousedown)=\"clearRanges($event)\"\n (click)=\"selectRow(!selected, $event)\"\n [class.datagrid-row-clickable]=\"selection.rowSelectionMode\"\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 tabindex=\"-1\"\n type=\"checkbox\"\n [ngModel]=\"selected\"\n (ngModelChange)=\"toggle($event)\"\n [id]=\"checkboxId\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\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\">{{clrDgRowSelectionLabel || 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 [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <clr-radio-wrapper>\n <input\n tabindex=\"-1\"\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 [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n />\n <label class=\"clr-control-label clr-col-null\" [for]=\"radioId\">\n <span class=\"clr-sr-only\">{{ clrDgRowSelectionLabel || commonStrings.keys.select }}</span>\n </label>\n </clr-radio-wrapper>\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 tabindex=\"-1\"\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]=\"expand.hasExpandTemplate && !expand.expanded ? null : 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\n *ngIf=\"detailService.enabled\"\n class=\"datagrid-detail-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <button\n tabindex=\"-1\"\n (click)=\"detailService.toggle(item, detailButton)\"\n type=\"button\"\n #detailButton\n class=\"datagrid-detail-caret-button\"\n [disabled]=\"detailDisabled\"\n *ngIf=\"!detailHidden\"\n [class.is-open]=\"detailService.isRowOpen(item)\"\n [attr.aria-label]=\"detailService.isRowOpen(item) ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-expanded]=\"detailService.isRowOpen(item)\"\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 <clr-dg-cell class=\"skeleton-loading\" *ngIf=\"skeletonLoading\"></clr-dg-cell>\n</div>\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-container #calculatedCells></ng-container>\n\n<ng-template #fixedCellTemplate>\n <div class=\"datagrid-fixed-column datagrid-cell\" role=\"gridcell\"></div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: ClrLabel, selector: "label", inputs: ["id", "for"] }, { kind: "directive", type: ClrRadio, selector: "[clrRadio]" }, { kind: "component", type: ClrRadioWrapper, selector: "clr-radio-wrapper" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ClrExpandableAnimationDirective, selector: "[clrExpandableAnimation]", inputs: ["clrExpandableAnimation"] }, { kind: "component", type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }, { kind: "component", type: ClrDatagridCell, selector: "clr-dg-cell" }, { kind: "directive", type: ClrDatagridSelectionCellDirective, selector: ".datagrid-select" }, { kind: "directive", type: DatagridCellRenderer, selector: "clr-dg-cell" }] });
|
|
21348
21796
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridRow, decorators: [{
|
|
21349
21797
|
type: Component,
|
|
21350
21798
|
args: [{ selector: 'clr-dg-row', host: {
|
|
21351
21799
|
'[class.datagrid-row]': 'true',
|
|
21800
|
+
'[class.datagrid-row-skeleton]': 'skeletonLoading',
|
|
21352
21801
|
'[class.datagrid-selected]': 'selected',
|
|
21353
21802
|
'[attr.aria-owns]': 'id',
|
|
21354
21803
|
role: 'rowgroup',
|
|
@@ -21356,7 +21805,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
21356
21805
|
DatagridIfExpandService,
|
|
21357
21806
|
{ provide: IfExpandService, useExisting: DatagridIfExpandService },
|
|
21358
21807
|
{ provide: LoadingListener, useExisting: DatagridIfExpandService },
|
|
21359
|
-
], template: "
|
|
21808
|
+
], template: "<div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [clrExpandableAnimation]=\"expandAnimationTrigger\"\n (mousedown)=\"clearRanges($event)\"\n (click)=\"selectRow(!selected, $event)\"\n [class.datagrid-row-clickable]=\"selection.rowSelectionMode\"\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 tabindex=\"-1\"\n type=\"checkbox\"\n [ngModel]=\"selected\"\n (ngModelChange)=\"toggle($event)\"\n [id]=\"checkboxId\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\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\">{{clrDgRowSelectionLabel || 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 [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <clr-radio-wrapper>\n <input\n tabindex=\"-1\"\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 [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n />\n <label class=\"clr-control-label clr-col-null\" [for]=\"radioId\">\n <span class=\"clr-sr-only\">{{ clrDgRowSelectionLabel || commonStrings.keys.select }}</span>\n </label>\n </clr-radio-wrapper>\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 tabindex=\"-1\"\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]=\"expand.hasExpandTemplate && !expand.expanded ? null : 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\n *ngIf=\"detailService.enabled\"\n class=\"datagrid-detail-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <button\n tabindex=\"-1\"\n (click)=\"detailService.toggle(item, detailButton)\"\n type=\"button\"\n #detailButton\n class=\"datagrid-detail-caret-button\"\n [disabled]=\"detailDisabled\"\n *ngIf=\"!detailHidden\"\n [class.is-open]=\"detailService.isRowOpen(item)\"\n [attr.aria-label]=\"detailService.isRowOpen(item) ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-expanded]=\"detailService.isRowOpen(item)\"\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 <clr-dg-cell class=\"skeleton-loading\" *ngIf=\"skeletonLoading\"></clr-dg-cell>\n</div>\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-container #calculatedCells></ng-container>\n\n<ng-template #fixedCellTemplate>\n <div class=\"datagrid-fixed-column datagrid-cell\" role=\"gridcell\"></div>\n</ng-template>\n" }]
|
|
21360
21809
|
}], ctorParameters: function () {
|
|
21361
21810
|
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: [{
|
|
21362
21811
|
type: Inject,
|
|
@@ -21374,12 +21823,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
21374
21823
|
}], detailHidden: [{
|
|
21375
21824
|
type: Input,
|
|
21376
21825
|
args: ['clrDgDetailHidden']
|
|
21826
|
+
}], skeletonLoading: [{
|
|
21827
|
+
type: Input,
|
|
21828
|
+
args: ['clrDgSkeletonLoading']
|
|
21377
21829
|
}], dgCells: [{
|
|
21378
21830
|
type: ContentChildren,
|
|
21379
21831
|
args: [ClrDatagridCell]
|
|
21380
21832
|
}], expandAnimation: [{
|
|
21381
21833
|
type: ViewChild,
|
|
21382
|
-
args: [
|
|
21834
|
+
args: [ClrExpandableAnimationDirective]
|
|
21383
21835
|
}], detailButton: [{
|
|
21384
21836
|
type: ViewChild,
|
|
21385
21837
|
args: ['detailButton']
|
|
@@ -21392,6 +21844,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
21392
21844
|
}], _calculatedCells: [{
|
|
21393
21845
|
type: ViewChild,
|
|
21394
21846
|
args: ['calculatedCells', { read: ViewContainerRef }]
|
|
21847
|
+
}], _fixedCellTemplate: [{
|
|
21848
|
+
type: ViewChild,
|
|
21849
|
+
args: ['fixedCellTemplate']
|
|
21395
21850
|
}], item: [{
|
|
21396
21851
|
type: Input,
|
|
21397
21852
|
args: ['clrDgItem']
|
|
@@ -21514,6 +21969,7 @@ class ClrDatagridVirtualScrollDirective {
|
|
|
21514
21969
|
this.columnsService = columnsService;
|
|
21515
21970
|
this.injector = injector;
|
|
21516
21971
|
this.renderedRangeChange = new EventEmitter();
|
|
21972
|
+
this.persistItems = true;
|
|
21517
21973
|
this._cdkFixedSizeVirtualScrollInputs = Object.assign({}, defaultCdkFixedSizeVirtualScrollInputs);
|
|
21518
21974
|
this.subscriptions = [];
|
|
21519
21975
|
this.topIndex = 0;
|
|
@@ -21591,6 +22047,22 @@ class ClrDatagridVirtualScrollDirective {
|
|
|
21591
22047
|
this._cdkFixedSizeVirtualScrollInputs.maxBufferPx = coerceNumberProperty(value);
|
|
21592
22048
|
this.updateFixedSizeVirtualScrollInputs();
|
|
21593
22049
|
}
|
|
22050
|
+
set dataRange(range) {
|
|
22051
|
+
if (!range) {
|
|
22052
|
+
return;
|
|
22053
|
+
}
|
|
22054
|
+
if (this.items.smart) {
|
|
22055
|
+
this.items.smartenDown();
|
|
22056
|
+
}
|
|
22057
|
+
this.totalItems = range.total;
|
|
22058
|
+
this.updateDataRange(range.skip, range.data);
|
|
22059
|
+
}
|
|
22060
|
+
get totalItems() {
|
|
22061
|
+
return this._totalItems;
|
|
22062
|
+
}
|
|
22063
|
+
set totalItems(value) {
|
|
22064
|
+
this._totalItems = value;
|
|
22065
|
+
}
|
|
21594
22066
|
ngAfterViewInit() {
|
|
21595
22067
|
this.injector.runInContext(() => {
|
|
21596
22068
|
this.virtualScrollViewport = this.createVirtualScrollViewportForDatagrid(this.changeDetectorRef, this.ngZone, this.renderer2, this.directionality, this.scrollDispatcher, this.viewportRuler, this.datagridElementRef, this.virtualScrollStrategy);
|
|
@@ -21600,7 +22072,9 @@ class ClrDatagridVirtualScrollDirective {
|
|
|
21600
22072
|
this.gridRoleElement = this.datagridElementRef.nativeElement.querySelector('[role="grid"]');
|
|
21601
22073
|
this.updateCdkVirtualForInputs();
|
|
21602
22074
|
this.subscriptions.push(this.items.change.subscribe(newItems => {
|
|
21603
|
-
this.
|
|
22075
|
+
if (this.items.smart) {
|
|
22076
|
+
this.cdkVirtualFor.cdkVirtualForOf = newItems;
|
|
22077
|
+
}
|
|
21604
22078
|
}), this.cdkVirtualFor.dataStream.subscribe(data => {
|
|
21605
22079
|
this.updateAriaRowCount(data.length);
|
|
21606
22080
|
}), this.virtualScrollViewport.scrolledIndexChange.subscribe(index => {
|
|
@@ -21639,6 +22113,14 @@ class ClrDatagridVirtualScrollDirective {
|
|
|
21639
22113
|
var _a;
|
|
21640
22114
|
(_a = this.virtualScrollViewport) === null || _a === void 0 ? void 0 : _a.scrollToIndex(index, behavior);
|
|
21641
22115
|
}
|
|
22116
|
+
updateDataRange(skip, data) {
|
|
22117
|
+
let items = this.cdkVirtualForOf;
|
|
22118
|
+
if (!this.persistItems || !items || (items === null || items === void 0 ? void 0 : items.length) !== this.totalItems) {
|
|
22119
|
+
items = Array(this.totalItems);
|
|
22120
|
+
}
|
|
22121
|
+
items.splice(skip, data.length, ...data);
|
|
22122
|
+
this.cdkVirtualForOf = Array.from(items);
|
|
22123
|
+
}
|
|
21642
22124
|
updateCdkVirtualForInputs() {
|
|
21643
22125
|
if (this.cdkVirtualFor) {
|
|
21644
22126
|
for (const cdkVirtualForInputKey of Object.keys(this.cdkVirtualForInputs)) {
|
|
@@ -21698,8 +22180,8 @@ class ClrDatagridVirtualScrollDirective {
|
|
|
21698
22180
|
return virtualScrollViewport;
|
|
21699
22181
|
}
|
|
21700
22182
|
}
|
|
21701
|
-
ClrDatagridVirtualScrollDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridVirtualScrollDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.IterableDiffers }, { token: Items
|
|
21702
|
-
ClrDatagridVirtualScrollDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatagridVirtualScrollDirective, selector: "[clrVirtualScroll],[ClrVirtualScroll]", inputs: { cdkVirtualForOf: ["clrVirtualRowsOf", "cdkVirtualForOf"], cdkVirtualForTrackBy: ["clrVirtualRowsTrackBy", "cdkVirtualForTrackBy"], cdkVirtualForTemplate: ["clrVirtualRowsTemplate", "cdkVirtualForTemplate"], cdkVirtualForTemplateCacheSize: ["clrVirtualRowsTemplateCacheSize", "cdkVirtualForTemplateCacheSize"], itemSize: ["clrVirtualRowsItemSize", "itemSize"], minBufferPx: ["clrVirtualRowsMinBufferPx", "minBufferPx"], maxBufferPx: ["clrVirtualRowsMaxBufferPx", "maxBufferPx"] }, outputs: { renderedRangeChange: "renderedRangeChange" }, providers: [Items], ngImport: i0 });
|
|
22183
|
+
ClrDatagridVirtualScrollDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridVirtualScrollDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.IterableDiffers }, { token: Items }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i1$3.Directionality }, { token: i3$1.ScrollDispatcher }, { token: i3$1.ViewportRuler }, { token: forwardRef(() => ClrDatagrid) }, { token: ColumnsService }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Directive });
|
|
22184
|
+
ClrDatagridVirtualScrollDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatagridVirtualScrollDirective, selector: "[clrVirtualScroll],[ClrVirtualScroll]", inputs: { persistItems: ["clrVirtualPersistItems", "persistItems"], cdkVirtualForOf: ["clrVirtualRowsOf", "cdkVirtualForOf"], cdkVirtualForTrackBy: ["clrVirtualRowsTrackBy", "cdkVirtualForTrackBy"], cdkVirtualForTemplate: ["clrVirtualRowsTemplate", "cdkVirtualForTemplate"], cdkVirtualForTemplateCacheSize: ["clrVirtualRowsTemplateCacheSize", "cdkVirtualForTemplateCacheSize"], itemSize: ["clrVirtualRowsItemSize", "itemSize"], minBufferPx: ["clrVirtualRowsMinBufferPx", "minBufferPx"], maxBufferPx: ["clrVirtualRowsMaxBufferPx", "maxBufferPx"], dataRange: ["clrVirtualDataRange", "dataRange"] }, outputs: { renderedRangeChange: "renderedRangeChange" }, providers: [Items], ngImport: i0 });
|
|
21703
22185
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridVirtualScrollDirective, decorators: [{
|
|
21704
22186
|
type: Directive,
|
|
21705
22187
|
args: [{
|
|
@@ -21707,11 +22189,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
21707
22189
|
providers: [Items],
|
|
21708
22190
|
}]
|
|
21709
22191
|
}], ctorParameters: function () {
|
|
21710
|
-
return [{ type: i0.ChangeDetectorRef }, { type: i0.IterableDiffers }, { type: Items, decorators: [{
|
|
21711
|
-
type:
|
|
21712
|
-
|
|
22192
|
+
return [{ type: i0.ChangeDetectorRef }, { type: i0.IterableDiffers }, { type: Items }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i1$3.Directionality }, { type: i3$1.ScrollDispatcher }, { type: i3$1.ViewportRuler }, { type: ClrDatagrid, decorators: [{
|
|
22193
|
+
type: Inject,
|
|
22194
|
+
args: [forwardRef(() => ClrDatagrid)]
|
|
22195
|
+
}] }, { type: ColumnsService }, { type: i0.EnvironmentInjector }];
|
|
21713
22196
|
}, propDecorators: { renderedRangeChange: [{
|
|
21714
22197
|
type: Output
|
|
22198
|
+
}], persistItems: [{
|
|
22199
|
+
type: Input,
|
|
22200
|
+
args: ['clrVirtualPersistItems']
|
|
21715
22201
|
}], cdkVirtualForOf: [{
|
|
21716
22202
|
type: Input,
|
|
21717
22203
|
args: ['clrVirtualRowsOf']
|
|
@@ -21733,6 +22219,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
21733
22219
|
}], maxBufferPx: [{
|
|
21734
22220
|
type: Input,
|
|
21735
22221
|
args: ['clrVirtualRowsMaxBufferPx']
|
|
22222
|
+
}], dataRange: [{
|
|
22223
|
+
type: Input,
|
|
22224
|
+
args: ['clrVirtualDataRange']
|
|
21736
22225
|
}] } });
|
|
21737
22226
|
function createCdkVirtualScrollViewport(datagridDivElementRef, changeDetectorRef, ngZone, renderer2, virtualScrollStrategy, directionality, scrollDispatcher, viewportRuler, scrollable) {
|
|
21738
22227
|
if (+VERSION.major < 19) {
|
|
@@ -21848,60 +22337,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
21848
22337
|
type: Injectable
|
|
21849
22338
|
}], ctorParameters: function () { return [{ type: FiltersProvider }, { type: Sort }, { type: Page }, { type: StateDebouncer }]; } });
|
|
21850
22339
|
|
|
21851
|
-
/*
|
|
21852
|
-
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
21853
|
-
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
21854
|
-
* This software is released under MIT license.
|
|
21855
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
21856
|
-
*/
|
|
21857
|
-
class DatagridCellRenderer {
|
|
21858
|
-
constructor(el, renderer, organizer) {
|
|
21859
|
-
this.el = el;
|
|
21860
|
-
this.renderer = renderer;
|
|
21861
|
-
this.subscriptions = [];
|
|
21862
|
-
this.subscriptions.push(organizer.filterRenderSteps(DatagridRenderStep.CLEAR_WIDTHS).subscribe(() => this.clearWidth()));
|
|
21863
|
-
}
|
|
21864
|
-
ngOnDestroy() {
|
|
21865
|
-
this.subscriptions.forEach(sub => sub.unsubscribe());
|
|
21866
|
-
if (this.stateSubscription) {
|
|
21867
|
-
this.stateSubscription.unsubscribe();
|
|
21868
|
-
}
|
|
21869
|
-
}
|
|
21870
|
-
resetState(state) {
|
|
21871
|
-
this.setWidth(state);
|
|
21872
|
-
this.setHidden(state);
|
|
21873
|
-
}
|
|
21874
|
-
setWidth(state) {
|
|
21875
|
-
if (state.strictWidth) {
|
|
21876
|
-
this.renderer.addClass(this.el.nativeElement, STRICT_WIDTH_CLASS);
|
|
21877
|
-
}
|
|
21878
|
-
else {
|
|
21879
|
-
this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);
|
|
21880
|
-
}
|
|
21881
|
-
this.renderer.setStyle(this.el.nativeElement, 'width', state.width + 'px');
|
|
21882
|
-
}
|
|
21883
|
-
setHidden(state) {
|
|
21884
|
-
if (state.hidden) {
|
|
21885
|
-
this.renderer.addClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);
|
|
21886
|
-
}
|
|
21887
|
-
else {
|
|
21888
|
-
this.renderer.removeClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);
|
|
21889
|
-
}
|
|
21890
|
-
}
|
|
21891
|
-
clearWidth() {
|
|
21892
|
-
this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);
|
|
21893
|
-
this.renderer.setStyle(this.el.nativeElement, 'width', null);
|
|
21894
|
-
}
|
|
21895
|
-
}
|
|
21896
|
-
DatagridCellRenderer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridCellRenderer, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DatagridRenderOrganizer }], target: i0.ɵɵFactoryTarget.Directive });
|
|
21897
|
-
DatagridCellRenderer.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: DatagridCellRenderer, selector: "clr-dg-cell", ngImport: i0 });
|
|
21898
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridCellRenderer, decorators: [{
|
|
21899
|
-
type: Directive,
|
|
21900
|
-
args: [{
|
|
21901
|
-
selector: 'clr-dg-cell',
|
|
21902
|
-
}]
|
|
21903
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DatagridRenderOrganizer }]; } });
|
|
21904
|
-
|
|
21905
22340
|
/*
|
|
21906
22341
|
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
21907
22342
|
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
@@ -21996,6 +22431,11 @@ class ClrDatagrid {
|
|
|
21996
22431
|
* Output emitted whenever the data needs to be refreshed, based on user action or external ones
|
|
21997
22432
|
*/
|
|
21998
22433
|
this.refresh = new EventEmitter(false);
|
|
22434
|
+
/**
|
|
22435
|
+
* The application can provide custom select all logic.
|
|
22436
|
+
*/
|
|
22437
|
+
this.customSelectAllEnabled = false;
|
|
22438
|
+
this.customSelectAll = new EventEmitter();
|
|
21999
22439
|
/* reference to the enum so that template can access */
|
|
22000
22440
|
this.SELECTION_TYPE = SelectionType;
|
|
22001
22441
|
/**
|
|
@@ -22062,13 +22502,18 @@ class ClrDatagrid {
|
|
|
22062
22502
|
get allSelected() {
|
|
22063
22503
|
return this.selection.isAllSelected();
|
|
22064
22504
|
}
|
|
22065
|
-
set allSelected(
|
|
22066
|
-
|
|
22067
|
-
|
|
22068
|
-
|
|
22069
|
-
|
|
22070
|
-
|
|
22071
|
-
|
|
22505
|
+
set allSelected(value) {
|
|
22506
|
+
if (this.customSelectAllEnabled) {
|
|
22507
|
+
this.customSelectAll.emit(value);
|
|
22508
|
+
}
|
|
22509
|
+
else {
|
|
22510
|
+
/**
|
|
22511
|
+
* This is a setter but we ignore the value.
|
|
22512
|
+
* It's strange, but it lets us have an indeterminate state where only
|
|
22513
|
+
* some of the items are selected.
|
|
22514
|
+
*/
|
|
22515
|
+
this.selection.toggleAll();
|
|
22516
|
+
}
|
|
22072
22517
|
}
|
|
22073
22518
|
ngAfterContentInit() {
|
|
22074
22519
|
if (!this.items.smart) {
|
|
@@ -22114,7 +22559,7 @@ class ClrDatagrid {
|
|
|
22114
22559
|
this.updateDetailState();
|
|
22115
22560
|
// TODO: determine if we can get rid of provider wiring in view init so that subscriptions can be done earlier
|
|
22116
22561
|
this.refresh.emit(this.stateProvider.state);
|
|
22117
|
-
this._subscriptions.push(this.stateProvider.change.subscribe(state => this.refresh.emit(state)), this.selection.change.subscribe(s => {
|
|
22562
|
+
this._subscriptions.push(this.stickyHeaders.changes.subscribe(() => this.resize()), this.stateProvider.change.subscribe(state => this.refresh.emit(state)), this.selection.change.subscribe(s => {
|
|
22118
22563
|
if (this.selection.selectionType === SelectionType.Single) {
|
|
22119
22564
|
this.singleSelectedChanged.emit(s);
|
|
22120
22565
|
}
|
|
@@ -22160,6 +22605,15 @@ class ClrDatagrid {
|
|
|
22160
22605
|
else {
|
|
22161
22606
|
// Set state, style for the datagrid to CALCULATE and insert row & columns into containers
|
|
22162
22607
|
this.renderer.addClass(this.el.nativeElement, 'datagrid-calculate-mode');
|
|
22608
|
+
// Inserts a fixed column if any of these conditions are true.
|
|
22609
|
+
const fixedColumnConditions = [
|
|
22610
|
+
this.rowActionService.hasActionableRow,
|
|
22611
|
+
this.selection.selectionType !== this.SELECTION_TYPE.None,
|
|
22612
|
+
this.expandableRows.hasExpandableRow || this.detailService.enabled,
|
|
22613
|
+
];
|
|
22614
|
+
fixedColumnConditions
|
|
22615
|
+
.filter(Boolean)
|
|
22616
|
+
.forEach(() => this._projectedCalculationColumns.insert(this._fixedColumnTemplate.createEmbeddedView(null)));
|
|
22163
22617
|
this.columns.forEach(column => {
|
|
22164
22618
|
this._projectedCalculationColumns.insert(column._view);
|
|
22165
22619
|
});
|
|
@@ -22186,11 +22640,9 @@ class ClrDatagrid {
|
|
|
22186
22640
|
this._subscriptions.forEach((sub) => sub.unsubscribe());
|
|
22187
22641
|
}
|
|
22188
22642
|
toggleAllSelected($event) {
|
|
22643
|
+
var _a;
|
|
22189
22644
|
$event.preventDefault();
|
|
22190
|
-
|
|
22191
|
-
return;
|
|
22192
|
-
}
|
|
22193
|
-
this.allSelected = !this.allSelected;
|
|
22645
|
+
(_a = this.selectAllCheckbox) === null || _a === void 0 ? void 0 : _a.nativeElement.click();
|
|
22194
22646
|
}
|
|
22195
22647
|
resize() {
|
|
22196
22648
|
this.organizer.resize();
|
|
@@ -22226,7 +22678,7 @@ class ClrDatagrid {
|
|
|
22226
22678
|
}
|
|
22227
22679
|
}
|
|
22228
22680
|
ClrDatagrid.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", 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: DOCUMENT }, { token: i0.ElementRef }, { token: Page }, { token: ClrCommonStringsService }, { token: KeyNavigationGridController }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
22229
|
-
ClrDatagrid.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatagrid, selector: "clr-datagrid", inputs: { loadingMoreItems: ["clrLoadingMoreItems", "loadingMoreItems"], clrDgSingleSelectionAriaLabel: "clrDgSingleSelectionAriaLabel", clrDgSingleActionableAriaLabel: "clrDgSingleActionableAriaLabel", clrDetailExpandableAriaLabel: "clrDetailExpandableAriaLabel", clrDgDisablePageFocus: "clrDgDisablePageFocus", loading: ["clrDgLoading", "loading"], selected: ["clrDgSelected", "selected"], singleSelected: ["clrDgSingleSelected", "singleSelected"], clrDgPreserveSelection: "clrDgPreserveSelection", rowSelectionMode: ["clrDgRowSelection", "rowSelectionMode"], trackBy: ["clrDgItemsTrackBy", "trackBy"] }, outputs: { selectedChanged: "clrDgSelectedChange", singleSelectedChanged: "clrDgSingleSelectedChange", refresh: "clrDgRefresh" }, host: { properties: { "class.datagrid-host": "true", "class.datagrid-detail-open": "detailService.isOpen" } }, providers: [
|
|
22681
|
+
ClrDatagrid.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatagrid, selector: "clr-datagrid", inputs: { loadingMoreItems: ["clrLoadingMoreItems", "loadingMoreItems"], clrDgSingleSelectionAriaLabel: "clrDgSingleSelectionAriaLabel", clrDgSingleActionableAriaLabel: "clrDgSingleActionableAriaLabel", clrDetailExpandableAriaLabel: "clrDetailExpandableAriaLabel", clrDgDisablePageFocus: "clrDgDisablePageFocus", customSelectAllEnabled: ["clrDgCustomSelectAllEnabled", "customSelectAllEnabled"], loading: ["clrDgLoading", "loading"], selected: ["clrDgSelected", "selected"], singleSelected: ["clrDgSingleSelected", "singleSelected"], clrDgPreserveSelection: "clrDgPreserveSelection", rowSelectionMode: ["clrDgRowSelection", "rowSelectionMode"], trackBy: ["clrDgItemsTrackBy", "trackBy"] }, outputs: { selectedChanged: "clrDgSelectedChange", singleSelectedChanged: "clrDgSingleSelectedChange", refresh: "clrDgRefresh", customSelectAll: "clrDgCustomSelectAll" }, host: { properties: { "class.datagrid-host": "true", "class.datagrid-detail-open": "detailService.isOpen" } }, providers: [
|
|
22230
22682
|
Selection,
|
|
22231
22683
|
Sort,
|
|
22232
22684
|
FiltersProvider,
|
|
@@ -22242,7 +22694,7 @@ ClrDatagrid.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
|
22242
22694
|
ColumnsService,
|
|
22243
22695
|
DisplayModeService,
|
|
22244
22696
|
KeyNavigationGridController,
|
|
22245
|
-
], queries: [{ propertyName: "virtualScroll", first: true, predicate: ClrDatagridVirtualScrollDirective, descendants: true }, { propertyName: "iterator", first: true, predicate: ClrDatagridItems, descendants: true }, { propertyName: "placeholder", first: true, predicate: ClrDatagridPlaceholder, descendants: true }, { propertyName: "columns", predicate: ClrDatagridColumn }, { propertyName: "rows", predicate: ClrDatagridRow }], viewQueries: [{ propertyName: "datagrid", first: true, predicate: ["datagrid"], descendants: true, read: ElementRef }, { propertyName: "datagridTable", first: true, predicate: ["datagridTable"], descendants: true, read: ElementRef }, { propertyName: "scrollableColumns", first: true, predicate: ["scrollableColumns"], descendants: true, read: ViewContainerRef }, { propertyName: "_projectedDisplayColumns", first: true, predicate: ["projectedDisplayColumns"], descendants: true, read: ViewContainerRef }, { propertyName: "_projectedCalculationColumns", first: true, predicate: ["projectedCalculationColumns"], descendants: true, read: ViewContainerRef }, { propertyName: "_displayedRows", first: true, predicate: ["displayedRows"], descendants: true, read: ViewContainerRef }, { propertyName: "_calculationRows", first: true, predicate: ["calculationRows"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<ng-content select=\"clr-dg-action-bar\"></ng-content>\n<div class=\"datagrid-outer-wrapper\">\n <div class=\"datagrid-inner-wrapper\">\n <div class=\"datagrid\" #datagrid [attr.aria-hidden]=\"detailService.isOpen ? true : null\">\n <div class=\"datagrid-table-wrapper\">\n <div role=\"grid\" class=\"datagrid-table\" tabindex=\"-1\" #datagridTable>\n <div role=\"rowgroup\" class=\"datagrid-header\">\n <div role=\"row\" class=\"datagrid-row\">\n <div class=\"datagrid-row-master datagrid-row-flex\">\n <div class=\"datagrid-row-sticky\">\n <!--header for datagrid where you can select multiple rows -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n (keydown.space)=\"toggleAllSelected($event)\"\n >\n <div *ngIf=\"!virtualScroll\" class=\"clr-checkbox-wrapper\">\n <!-- We need to move focus and space-key handling to the parent because of keyboard arrow key navigation,\n which is not able to transfer focus directly on the input when focused with the tab key -->\n <input\n type=\"checkbox\"\n [id]=\"selectAllId\"\n [(ngModel)]=\"allSelected\"\n [attr.aria-label]=\"commonStrings.keys.selectAll\"\n tabindex=\"-1\"\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]=\"selectAllId\" class=\"clr-control-label clr-col-null\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.selectAll}}</span>\n </label>\n </div>\n\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for datagrid where you can select one row only -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n >\n <div class=\"clr-sr-only\">{{clrDgSingleSelectionAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for single row action; only displayType if we have at least one actionable row in datagrid -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-row-actions datagrid-fixed-column\"\n *ngIf=\"rowActionService.hasActionableRow\"\n >\n <div class=\"clr-sr-only\">{{clrDgSingleActionableAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for carets; only displayType if we have at least one expandable row in datagrid -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-expandable-caret datagrid-fixed-column\"\n *ngIf=\"expandableRows.hasExpandableRow || detailService.enabled\"\n >\n <div class=\"clr-sr-only\">{{clrDetailExpandableAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n </div>\n <div class=\"datagrid-row-scrollable\">\n <ng-container #projectedDisplayColumns></ng-container>\n </div>\n </div>\n </div>\n </div>\n\n <div role=\"presentation\" class=\"datagrid-rows\">\n <clr-dg-row class=\"datagrid-row-loading\" *ngIf=\"loadingMoreItems\">\n <clr-dg-cell>\n <clr-spinner clrMedium></clr-spinner>\n <span>{{ commonStrings.keys.loading }}</span>\n </clr-dg-cell>\n </clr-dg-row>\n\n <ng-container #displayedRows></ng-container>\n\n <clr-dg-row class=\"datagrid-row-loading\" *ngIf=\"loadingMoreItems\">\n <clr-dg-cell>\n <clr-spinner clrMedium></clr-spinner>\n <span>{{ commonStrings.keys.loading }}</span>\n </clr-dg-cell>\n </clr-dg-row>\n\n <!-- Custom placeholder overrides the default empty one -->\n <ng-content select=\"clr-dg-placeholder\"></ng-content>\n <clr-dg-placeholder *ngIf=\"!placeholder\"></clr-dg-placeholder>\n </div>\n </div>\n </div>\n </div>\n <ng-content select=\"clr-dg-footer\"></ng-content>\n <div class=\"datagrid-spinner\" *ngIf=\"loading\">\n <clr-spinner clrMedium>Loading</clr-spinner>\n </div>\n </div>\n <ng-content select=\"[clrIfDetail],clr-dg-detail\"></ng-content>\n</div>\n\n<div class=\"datagrid-calculation-table\">\n <div class=\"datagrid-calculation-header\">\n <ng-container #projectedCalculationColumns></ng-container>\n </div>\n <ng-container #calculationRows></ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: ClrLabel, selector: "label", inputs: ["id", "for"] }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }, { kind: "component", type: ClrDatagridCell, selector: "clr-dg-cell" }, { kind: "component", type: ClrDatagridPlaceholder, selector: "clr-dg-placeholder" }, { kind: "component", type: ClrDatagridRow, selector: "clr-dg-row", inputs: ["clrDgDetailDisabled", "clrDgDetailHidden", "clrDgItem", "clrDgSelectable", "clrDgSelected", "clrDgExpanded", "clrDgDetailOpenLabel", "clrDgDetailCloseLabel", "clrDgRowSelectionLabel"], outputs: ["clrDgSelectedChange", "clrDgExpandedChange"] }, { kind: "directive", type: ClrDatagridSelectionCellDirective, selector: ".datagrid-select" }, { kind: "directive", type: DatagridCellRenderer, selector: "clr-dg-cell" }, { kind: "directive", type: DatagridRowRenderer, selector: "clr-dg-row, clr-dg-row-detail" }, { kind: "directive", type: ActionableOompaLoompa, selector: "clr-datagrid, clr-dg-row" }, { kind: "directive", type: ExpandableOompaLoompa, selector: "clr-datagrid, clr-dg-row" }] });
|
|
22697
|
+
], queries: [{ propertyName: "virtualScroll", first: true, predicate: ClrDatagridVirtualScrollDirective, descendants: true }, { propertyName: "iterator", first: true, predicate: ClrDatagridItems, descendants: true }, { propertyName: "placeholder", first: true, predicate: ClrDatagridPlaceholder, descendants: true }, { propertyName: "columns", predicate: ClrDatagridColumn }, { propertyName: "rows", predicate: ClrDatagridRow }], viewQueries: [{ propertyName: "datagrid", first: true, predicate: ["datagrid"], descendants: true, read: ElementRef }, { propertyName: "datagridTable", first: true, predicate: ["datagridTable"], descendants: true, read: ElementRef }, { propertyName: "scrollableColumns", first: true, predicate: ["scrollableColumns"], descendants: true, read: ViewContainerRef }, { propertyName: "_projectedDisplayColumns", first: true, predicate: ["projectedDisplayColumns"], descendants: true, read: ViewContainerRef }, { propertyName: "_projectedCalculationColumns", first: true, predicate: ["projectedCalculationColumns"], descendants: true, read: ViewContainerRef }, { propertyName: "_displayedRows", first: true, predicate: ["displayedRows"], descendants: true, read: ViewContainerRef }, { propertyName: "_calculationRows", first: true, predicate: ["calculationRows"], descendants: true, read: ViewContainerRef }, { propertyName: "_fixedColumnTemplate", first: true, predicate: ["fixedColumnTemplate"], descendants: true }, { propertyName: "selectAllCheckbox", first: true, predicate: ["selectAllCheckbox"], descendants: true }, { propertyName: "stickyHeaders", predicate: ["stickyHeader"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<ng-content select=\"clr-dg-action-bar\"></ng-content>\n<div class=\"datagrid-outer-wrapper\">\n <div class=\"datagrid-inner-wrapper\">\n <div class=\"datagrid\" #datagrid [attr.aria-hidden]=\"detailService.isOpen ? true : null\">\n <div class=\"datagrid-table-wrapper\">\n <div role=\"grid\" class=\"datagrid-table\" tabindex=\"-1\" #datagridTable>\n <div role=\"rowgroup\" class=\"datagrid-header\">\n <div role=\"row\" class=\"datagrid-row\">\n <div class=\"datagrid-row-master datagrid-row-flex\">\n <div class=\"datagrid-row-sticky\">\n <!--header for datagrid where you can select multiple rows -->\n <div\n #stickyHeader\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n (keydown.space)=\"toggleAllSelected($event)\"\n >\n <div *ngIf=\"!virtualScroll || customSelectAllEnabled\" class=\"clr-checkbox-wrapper\">\n <!-- We need to move focus and space-key handling to the parent because of keyboard arrow key navigation,\n which is not able to transfer focus directly on the input when focused with the tab key -->\n <input\n #selectAllCheckbox\n type=\"checkbox\"\n [id]=\"selectAllId\"\n [(ngModel)]=\"allSelected\"\n [attr.aria-label]=\"commonStrings.keys.selectAll\"\n tabindex=\"-1\"\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]=\"selectAllId\" class=\"clr-control-label clr-col-null\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.selectAll}}</span>\n </label>\n </div>\n\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for datagrid where you can select one row only -->\n <div\n #stickyHeader\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n >\n <div class=\"clr-sr-only\">{{clrDgSingleSelectionAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for single row action; only displayType if we have at least one actionable row in datagrid -->\n <div\n #stickyHeader\n role=\"columnheader\"\n class=\"datagrid-column datagrid-row-actions datagrid-fixed-column\"\n *ngIf=\"rowActionService.hasActionableRow\"\n >\n <div class=\"clr-sr-only\">{{clrDgSingleActionableAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for carets; only displayType if we have at least one expandable row in datagrid -->\n <div\n #stickyHeader\n role=\"columnheader\"\n class=\"datagrid-column datagrid-expandable-caret datagrid-fixed-column\"\n *ngIf=\"expandableRows.hasExpandableRow || detailService.enabled\"\n >\n <div class=\"clr-sr-only\">{{clrDetailExpandableAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n </div>\n <div class=\"datagrid-row-scrollable\">\n <ng-container #projectedDisplayColumns></ng-container>\n </div>\n </div>\n </div>\n </div>\n\n <div role=\"presentation\" class=\"datagrid-rows\">\n <clr-dg-row class=\"datagrid-row-loading\" *ngIf=\"loadingMoreItems\">\n <clr-dg-cell>\n <clr-spinner clrMedium></clr-spinner>\n <span>{{ commonStrings.keys.loading }}</span>\n </clr-dg-cell>\n </clr-dg-row>\n\n <ng-container #displayedRows></ng-container>\n\n <clr-dg-row class=\"datagrid-row-loading\" *ngIf=\"loadingMoreItems\">\n <clr-dg-cell>\n <clr-spinner clrMedium></clr-spinner>\n <span>{{ commonStrings.keys.loading }}</span>\n </clr-dg-cell>\n </clr-dg-row>\n\n <!-- Custom placeholder overrides the default empty one -->\n <ng-content select=\"clr-dg-placeholder\"></ng-content>\n <clr-dg-placeholder *ngIf=\"!placeholder\"></clr-dg-placeholder>\n </div>\n </div>\n </div>\n </div>\n <ng-content select=\"clr-dg-footer\"></ng-content>\n <div class=\"datagrid-spinner\" *ngIf=\"loading\">\n <clr-spinner clrMedium>Loading</clr-spinner>\n </div>\n </div>\n <ng-content select=\"[clrIfDetail],clr-dg-detail\"></ng-content>\n</div>\n\n<div class=\"datagrid-calculation-table\">\n <div class=\"datagrid-calculation-header\">\n <ng-container #projectedCalculationColumns></ng-container>\n </div>\n <ng-container #calculationRows></ng-container>\n</div>\n\n<ng-template #fixedColumnTemplate>\n <div class=\"datagrid-column datagrid-fixed-column\"></div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: ClrLabel, selector: "label", inputs: ["id", "for"] }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }, { kind: "component", type: ClrDatagridCell, selector: "clr-dg-cell" }, { kind: "component", type: ClrDatagridPlaceholder, selector: "clr-dg-placeholder" }, { kind: "component", type: ClrDatagridRow, selector: "clr-dg-row", inputs: ["clrDgDetailDisabled", "clrDgDetailHidden", "clrDgSkeletonLoading", "clrDgItem", "clrDgSelectable", "clrDgSelected", "clrDgExpanded", "clrDgDetailOpenLabel", "clrDgDetailCloseLabel", "clrDgRowSelectionLabel"], outputs: ["clrDgSelectedChange", "clrDgExpandedChange"] }, { kind: "directive", type: ClrDatagridSelectionCellDirective, selector: ".datagrid-select" }, { kind: "directive", type: DatagridCellRenderer, selector: "clr-dg-cell" }, { kind: "directive", type: DatagridRowRenderer, selector: "clr-dg-row, clr-dg-row-detail" }, { kind: "directive", type: ActionableOompaLoompa, selector: "clr-datagrid, clr-dg-row" }, { kind: "directive", type: ExpandableOompaLoompa, selector: "clr-datagrid, clr-dg-row" }] });
|
|
22246
22698
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagrid, decorators: [{
|
|
22247
22699
|
type: Component,
|
|
22248
22700
|
args: [{ selector: 'clr-datagrid', providers: [
|
|
@@ -22264,7 +22716,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
22264
22716
|
], host: {
|
|
22265
22717
|
'[class.datagrid-host]': 'true',
|
|
22266
22718
|
'[class.datagrid-detail-open]': 'detailService.isOpen',
|
|
22267
|
-
}, template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<ng-content select=\"clr-dg-action-bar\"></ng-content>\n<div class=\"datagrid-outer-wrapper\">\n <div class=\"datagrid-inner-wrapper\">\n <div class=\"datagrid\" #datagrid [attr.aria-hidden]=\"detailService.isOpen ? true : null\">\n <div class=\"datagrid-table-wrapper\">\n <div role=\"grid\" class=\"datagrid-table\" tabindex=\"-1\" #datagridTable>\n <div role=\"rowgroup\" class=\"datagrid-header\">\n <div role=\"row\" class=\"datagrid-row\">\n <div class=\"datagrid-row-master datagrid-row-flex\">\n <div class=\"datagrid-row-sticky\">\n <!--header for datagrid where you can select multiple rows -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n (keydown.space)=\"toggleAllSelected($event)\"\n >\n <div *ngIf=\"!virtualScroll\" class=\"clr-checkbox-wrapper\">\n <!-- We need to move focus and space-key handling to the parent because of keyboard arrow key navigation,\n which is not able to transfer focus directly on the input when focused with the tab key -->\n <input\n type=\"checkbox\"\n [id]=\"selectAllId\"\n [(ngModel)]=\"allSelected\"\n [attr.aria-label]=\"commonStrings.keys.selectAll\"\n tabindex=\"-1\"\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]=\"selectAllId\" class=\"clr-control-label clr-col-null\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.selectAll}}</span>\n </label>\n </div>\n\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for datagrid where you can select one row only -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n >\n <div class=\"clr-sr-only\">{{clrDgSingleSelectionAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for single row action; only displayType if we have at least one actionable row in datagrid -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-row-actions datagrid-fixed-column\"\n *ngIf=\"rowActionService.hasActionableRow\"\n >\n <div class=\"clr-sr-only\">{{clrDgSingleActionableAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for carets; only displayType if we have at least one expandable row in datagrid -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-expandable-caret datagrid-fixed-column\"\n *ngIf=\"expandableRows.hasExpandableRow || detailService.enabled\"\n >\n <div class=\"clr-sr-only\">{{clrDetailExpandableAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n </div>\n <div class=\"datagrid-row-scrollable\">\n <ng-container #projectedDisplayColumns></ng-container>\n </div>\n </div>\n </div>\n </div>\n\n <div role=\"presentation\" class=\"datagrid-rows\">\n <clr-dg-row class=\"datagrid-row-loading\" *ngIf=\"loadingMoreItems\">\n <clr-dg-cell>\n <clr-spinner clrMedium></clr-spinner>\n <span>{{ commonStrings.keys.loading }}</span>\n </clr-dg-cell>\n </clr-dg-row>\n\n <ng-container #displayedRows></ng-container>\n\n <clr-dg-row class=\"datagrid-row-loading\" *ngIf=\"loadingMoreItems\">\n <clr-dg-cell>\n <clr-spinner clrMedium></clr-spinner>\n <span>{{ commonStrings.keys.loading }}</span>\n </clr-dg-cell>\n </clr-dg-row>\n\n <!-- Custom placeholder overrides the default empty one -->\n <ng-content select=\"clr-dg-placeholder\"></ng-content>\n <clr-dg-placeholder *ngIf=\"!placeholder\"></clr-dg-placeholder>\n </div>\n </div>\n </div>\n </div>\n <ng-content select=\"clr-dg-footer\"></ng-content>\n <div class=\"datagrid-spinner\" *ngIf=\"loading\">\n <clr-spinner clrMedium>Loading</clr-spinner>\n </div>\n </div>\n <ng-content select=\"[clrIfDetail],clr-dg-detail\"></ng-content>\n</div>\n\n<div class=\"datagrid-calculation-table\">\n <div class=\"datagrid-calculation-header\">\n <ng-container #projectedCalculationColumns></ng-container>\n </div>\n <ng-container #calculationRows></ng-container>\n</div>\n" }]
|
|
22719
|
+
}, template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<ng-content select=\"clr-dg-action-bar\"></ng-content>\n<div class=\"datagrid-outer-wrapper\">\n <div class=\"datagrid-inner-wrapper\">\n <div class=\"datagrid\" #datagrid [attr.aria-hidden]=\"detailService.isOpen ? true : null\">\n <div class=\"datagrid-table-wrapper\">\n <div role=\"grid\" class=\"datagrid-table\" tabindex=\"-1\" #datagridTable>\n <div role=\"rowgroup\" class=\"datagrid-header\">\n <div role=\"row\" class=\"datagrid-row\">\n <div class=\"datagrid-row-master datagrid-row-flex\">\n <div class=\"datagrid-row-sticky\">\n <!--header for datagrid where you can select multiple rows -->\n <div\n #stickyHeader\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n (keydown.space)=\"toggleAllSelected($event)\"\n >\n <div *ngIf=\"!virtualScroll || customSelectAllEnabled\" class=\"clr-checkbox-wrapper\">\n <!-- We need to move focus and space-key handling to the parent because of keyboard arrow key navigation,\n which is not able to transfer focus directly on the input when focused with the tab key -->\n <input\n #selectAllCheckbox\n type=\"checkbox\"\n [id]=\"selectAllId\"\n [(ngModel)]=\"allSelected\"\n [attr.aria-label]=\"commonStrings.keys.selectAll\"\n tabindex=\"-1\"\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]=\"selectAllId\" class=\"clr-control-label clr-col-null\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.selectAll}}</span>\n </label>\n </div>\n\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for datagrid where you can select one row only -->\n <div\n #stickyHeader\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n >\n <div class=\"clr-sr-only\">{{clrDgSingleSelectionAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for single row action; only displayType if we have at least one actionable row in datagrid -->\n <div\n #stickyHeader\n role=\"columnheader\"\n class=\"datagrid-column datagrid-row-actions datagrid-fixed-column\"\n *ngIf=\"rowActionService.hasActionableRow\"\n >\n <div class=\"clr-sr-only\">{{clrDgSingleActionableAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for carets; only displayType if we have at least one expandable row in datagrid -->\n <div\n #stickyHeader\n role=\"columnheader\"\n class=\"datagrid-column datagrid-expandable-caret datagrid-fixed-column\"\n *ngIf=\"expandableRows.hasExpandableRow || detailService.enabled\"\n >\n <div class=\"clr-sr-only\">{{clrDetailExpandableAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n </div>\n <div class=\"datagrid-row-scrollable\">\n <ng-container #projectedDisplayColumns></ng-container>\n </div>\n </div>\n </div>\n </div>\n\n <div role=\"presentation\" class=\"datagrid-rows\">\n <clr-dg-row class=\"datagrid-row-loading\" *ngIf=\"loadingMoreItems\">\n <clr-dg-cell>\n <clr-spinner clrMedium></clr-spinner>\n <span>{{ commonStrings.keys.loading }}</span>\n </clr-dg-cell>\n </clr-dg-row>\n\n <ng-container #displayedRows></ng-container>\n\n <clr-dg-row class=\"datagrid-row-loading\" *ngIf=\"loadingMoreItems\">\n <clr-dg-cell>\n <clr-spinner clrMedium></clr-spinner>\n <span>{{ commonStrings.keys.loading }}</span>\n </clr-dg-cell>\n </clr-dg-row>\n\n <!-- Custom placeholder overrides the default empty one -->\n <ng-content select=\"clr-dg-placeholder\"></ng-content>\n <clr-dg-placeholder *ngIf=\"!placeholder\"></clr-dg-placeholder>\n </div>\n </div>\n </div>\n </div>\n <ng-content select=\"clr-dg-footer\"></ng-content>\n <div class=\"datagrid-spinner\" *ngIf=\"loading\">\n <clr-spinner clrMedium>Loading</clr-spinner>\n </div>\n </div>\n <ng-content select=\"[clrIfDetail],clr-dg-detail\"></ng-content>\n</div>\n\n<div class=\"datagrid-calculation-table\">\n <div class=\"datagrid-calculation-header\">\n <ng-container #projectedCalculationColumns></ng-container>\n </div>\n <ng-container #calculationRows></ng-container>\n</div>\n\n<ng-template #fixedColumnTemplate>\n <div class=\"datagrid-column datagrid-fixed-column\"></div>\n</ng-template>\n" }]
|
|
22268
22720
|
}], ctorParameters: function () {
|
|
22269
22721
|
return [{ type: DatagridRenderOrganizer }, { type: Items }, { type: ExpandableRowsCount }, { type: Selection }, { type: RowActionService }, { type: StateProvider }, { type: DisplayModeService }, { type: i0.Renderer2 }, { type: DetailService }, { type: undefined, decorators: [{
|
|
22270
22722
|
type: Inject,
|
|
@@ -22290,6 +22742,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
22290
22742
|
}], refresh: [{
|
|
22291
22743
|
type: Output,
|
|
22292
22744
|
args: ['clrDgRefresh']
|
|
22745
|
+
}], customSelectAllEnabled: [{
|
|
22746
|
+
type: Input,
|
|
22747
|
+
args: ['clrDgCustomSelectAllEnabled']
|
|
22748
|
+
}], customSelectAll: [{
|
|
22749
|
+
type: Output,
|
|
22750
|
+
args: ['clrDgCustomSelectAll']
|
|
22293
22751
|
}], virtualScroll: [{
|
|
22294
22752
|
type: ContentChild,
|
|
22295
22753
|
args: [ClrDatagridVirtualScrollDirective]
|
|
@@ -22326,6 +22784,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
22326
22784
|
}], _calculationRows: [{
|
|
22327
22785
|
type: ViewChild,
|
|
22328
22786
|
args: ['calculationRows', { read: ViewContainerRef }]
|
|
22787
|
+
}], _fixedColumnTemplate: [{
|
|
22788
|
+
type: ViewChild,
|
|
22789
|
+
args: ['fixedColumnTemplate']
|
|
22790
|
+
}], stickyHeaders: [{
|
|
22791
|
+
type: ViewChildren,
|
|
22792
|
+
args: ['stickyHeader', { emitDistinctChangesOnly: true }]
|
|
22793
|
+
}], selectAllCheckbox: [{
|
|
22794
|
+
type: ViewChild,
|
|
22795
|
+
args: ['selectAllCheckbox']
|
|
22329
22796
|
}], loading: [{
|
|
22330
22797
|
type: Input,
|
|
22331
22798
|
args: ['clrDgLoading']
|
|
@@ -25525,9 +25992,6 @@ class ClrTreeNode {
|
|
|
25525
25992
|
return null;
|
|
25526
25993
|
}
|
|
25527
25994
|
}
|
|
25528
|
-
get treeNodeContentTextOnly() {
|
|
25529
|
-
return this.treeNodeLinkList.length === 0;
|
|
25530
|
-
}
|
|
25531
25995
|
get treeNodeLink() {
|
|
25532
25996
|
return this.treeNodeLinkList && this.treeNodeLinkList.first;
|
|
25533
25997
|
}
|
|
@@ -25698,7 +26162,7 @@ class ClrTreeNode {
|
|
|
25698
26162
|
}
|
|
25699
26163
|
}
|
|
25700
26164
|
ClrTreeNode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrTreeNode, deps: [{ token: PLATFORM_ID }, { token: ClrTreeNode, optional: true, skipSelf: true }, { token: TreeFeaturesService }, { token: IfExpandService }, { token: ClrCommonStringsService }, { token: TreeFocusManagerService }, { token: i0.ElementRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
25701
|
-
ClrTreeNode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrTreeNode, selector: "clr-tree-node", inputs: { expandable: ["clrExpandable", "expandable"], disabled: ["clrDisabled", "disabled"], selected: ["clrSelected", "selected"], expanded: ["clrExpanded", "expanded"], clrForTypeAhead: "clrForTypeAhead" }, outputs: { selectedChange: "clrSelectedChange", expandedChange: "clrExpandedChange" }, host: { properties: { "class.clr-tree-node": "true", "class.disabled": "this._model.disabled" } }, providers: [TREE_FEATURES_PROVIDER, IfExpandService, { provide: LoadingListener, useExisting: IfExpandService }], queries: [{ propertyName: "treeNodeLinkList", predicate: ClrTreeNodeLink }], viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div\n #contentContainer\n role=\"treeitem\"\n class=\"clr-tree-node-content-container\"\n tabindex=\"-1\"\n [class.clr-form-control-disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-expanded]=\"isExpandable() ? expanded : null\"\n [attr.aria-selected]=\"ariaSelected\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"broadcastFocusOnContainer()\"\n>\n <button\n *ngIf=\"isExpandable() && !isModelLoading && !expandService.loading\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"clr-treenode-caret\"\n (click)=\"expandService.toggle();\"\n (focus)=\"focusTreeNode()\"\n [disabled]=\"disabled\"\n >\n <cds-icon\n class=\"clr-treenode-caret-icon\"\n shape=\"angle\"\n [attr.direction]=\"expandService.expanded ? 'down' : 'right'\"\n ></cds-icon>\n </button>\n <div class=\"clr-treenode-spinner-container\" *ngIf=\"expandService.loading || isModelLoading\">\n <span class=\"clr-treenode-spinner spinner\"></span>\n </div>\n <div class=\"clr-checkbox-wrapper clr-treenode-checkbox\" *ngIf=\"featuresService.selectable\">\n <input\n aria-hidden=\"true\"\n type=\"checkbox\"\n [id]=\"nodeId + '-check'\"\n class=\"clr-checkbox\"\n [disabled]=\"disabled\"\n [checked]=\"_model.selected.value === STATES.SELECTED\"\n [indeterminate]=\"_model.selected.value === STATES.INDETERMINATE\"\n (change)=\"_model.toggleSelection(featuresService.eager)\"\n (focus)=\"focusTreeNode()\"\n tabindex=\"-1\"\n />\n <label [for]=\"nodeId + '-check'\" class=\"clr-control-label\">\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </label>\n </div>\n <div
|
|
26165
|
+
ClrTreeNode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrTreeNode, selector: "clr-tree-node", inputs: { expandable: ["clrExpandable", "expandable"], disabled: ["clrDisabled", "disabled"], selected: ["clrSelected", "selected"], expanded: ["clrExpanded", "expanded"], clrForTypeAhead: "clrForTypeAhead" }, outputs: { selectedChange: "clrSelectedChange", expandedChange: "clrExpandedChange" }, host: { properties: { "class.clr-tree-node": "true", "class.disabled": "this._model.disabled" } }, providers: [TREE_FEATURES_PROVIDER, IfExpandService, { provide: LoadingListener, useExisting: IfExpandService }], queries: [{ propertyName: "treeNodeLinkList", predicate: ClrTreeNodeLink }], viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div\n #contentContainer\n role=\"treeitem\"\n class=\"clr-tree-node-content-container\"\n tabindex=\"-1\"\n [class.clr-form-control-disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-expanded]=\"isExpandable() ? expanded : null\"\n [attr.aria-selected]=\"ariaSelected\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"broadcastFocusOnContainer()\"\n>\n <button\n *ngIf=\"isExpandable() && !isModelLoading && !expandService.loading\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"clr-treenode-caret\"\n (click)=\"expandService.toggle();\"\n (focus)=\"focusTreeNode()\"\n [disabled]=\"disabled\"\n >\n <cds-icon\n class=\"clr-treenode-caret-icon\"\n shape=\"angle\"\n [attr.direction]=\"expandService.expanded ? 'down' : 'right'\"\n ></cds-icon>\n </button>\n <div class=\"clr-treenode-spinner-container\" *ngIf=\"expandService.loading || isModelLoading\">\n <span class=\"clr-treenode-spinner spinner\"></span>\n </div>\n <div class=\"clr-checkbox-wrapper clr-treenode-checkbox\" *ngIf=\"featuresService.selectable\">\n <input\n aria-hidden=\"true\"\n type=\"checkbox\"\n [id]=\"nodeId + '-check'\"\n class=\"clr-checkbox\"\n [disabled]=\"disabled\"\n [checked]=\"_model.selected.value === STATES.SELECTED\"\n [indeterminate]=\"_model.selected.value === STATES.INDETERMINATE\"\n (change)=\"_model.toggleSelection(featuresService.eager)\"\n (focus)=\"focusTreeNode()\"\n tabindex=\"-1\"\n />\n <label [for]=\"nodeId + '-check'\" class=\"clr-control-label\">\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </label>\n </div>\n <div class=\"clr-treenode-content\" (mouseup)=\"focusTreeNode()\" *ngIf=\"!featuresService.selectable\">\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </div>\n\n <ng-template #treenodeContent>\n <ng-content></ng-content>\n <div class=\"clr-sr-only\" *ngIf=\"featuresService.selectable || ariaSelected\">\n <span> {{ariaSelected ? commonStrings.keys.selectedTreeNode : commonStrings.keys.unselectedTreeNode}}</span>\n </div>\n </ng-template>\n</div>\n<div\n class=\"clr-treenode-children\"\n [@toggleChildrenAnim]=\"expandService.expanded ? 'expanded' : 'collapsed'\"\n [attr.role]=\"isExpandable() && !featuresService.recursion ? 'group' : null\"\n>\n <ng-content select=\"clr-tree-node\"></ng-content>\n <ng-content select=\"[clrIfExpanded]\"></ng-content>\n <clr-recursive-children [parent]=\"_model\"></clr-recursive-children>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "component", type: RecursiveChildren, selector: "clr-recursive-children", inputs: ["parent", "children"] }], animations: [
|
|
25702
26166
|
trigger('toggleChildrenAnim', [
|
|
25703
26167
|
transition('collapsed => expanded', [style({ height: 0 }), animate(200, style({ height: '*' }))]),
|
|
25704
26168
|
transition('expanded => collapsed', [style({ height: '*' }), animate(200, style({ height: 0 }))]),
|
|
@@ -25718,7 +26182,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
25718
26182
|
], host: {
|
|
25719
26183
|
'[class.clr-tree-node]': 'true',
|
|
25720
26184
|
'[class.disabled]': 'this._model.disabled',
|
|
25721
|
-
}, template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div\n #contentContainer\n role=\"treeitem\"\n class=\"clr-tree-node-content-container\"\n tabindex=\"-1\"\n [class.clr-form-control-disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-expanded]=\"isExpandable() ? expanded : null\"\n [attr.aria-selected]=\"ariaSelected\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"broadcastFocusOnContainer()\"\n>\n <button\n *ngIf=\"isExpandable() && !isModelLoading && !expandService.loading\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"clr-treenode-caret\"\n (click)=\"expandService.toggle();\"\n (focus)=\"focusTreeNode()\"\n [disabled]=\"disabled\"\n >\n <cds-icon\n class=\"clr-treenode-caret-icon\"\n shape=\"angle\"\n [attr.direction]=\"expandService.expanded ? 'down' : 'right'\"\n ></cds-icon>\n </button>\n <div class=\"clr-treenode-spinner-container\" *ngIf=\"expandService.loading || isModelLoading\">\n <span class=\"clr-treenode-spinner spinner\"></span>\n </div>\n <div class=\"clr-checkbox-wrapper clr-treenode-checkbox\" *ngIf=\"featuresService.selectable\">\n <input\n aria-hidden=\"true\"\n type=\"checkbox\"\n [id]=\"nodeId + '-check'\"\n class=\"clr-checkbox\"\n [disabled]=\"disabled\"\n [checked]=\"_model.selected.value === STATES.SELECTED\"\n [indeterminate]=\"_model.selected.value === STATES.INDETERMINATE\"\n (change)=\"_model.toggleSelection(featuresService.eager)\"\n (focus)=\"focusTreeNode()\"\n tabindex=\"-1\"\n />\n <label [for]=\"nodeId + '-check'\" class=\"clr-control-label\">\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </label>\n </div>\n <div
|
|
26185
|
+
}, template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div\n #contentContainer\n role=\"treeitem\"\n class=\"clr-tree-node-content-container\"\n tabindex=\"-1\"\n [class.clr-form-control-disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-expanded]=\"isExpandable() ? expanded : null\"\n [attr.aria-selected]=\"ariaSelected\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"broadcastFocusOnContainer()\"\n>\n <button\n *ngIf=\"isExpandable() && !isModelLoading && !expandService.loading\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"clr-treenode-caret\"\n (click)=\"expandService.toggle();\"\n (focus)=\"focusTreeNode()\"\n [disabled]=\"disabled\"\n >\n <cds-icon\n class=\"clr-treenode-caret-icon\"\n shape=\"angle\"\n [attr.direction]=\"expandService.expanded ? 'down' : 'right'\"\n ></cds-icon>\n </button>\n <div class=\"clr-treenode-spinner-container\" *ngIf=\"expandService.loading || isModelLoading\">\n <span class=\"clr-treenode-spinner spinner\"></span>\n </div>\n <div class=\"clr-checkbox-wrapper clr-treenode-checkbox\" *ngIf=\"featuresService.selectable\">\n <input\n aria-hidden=\"true\"\n type=\"checkbox\"\n [id]=\"nodeId + '-check'\"\n class=\"clr-checkbox\"\n [disabled]=\"disabled\"\n [checked]=\"_model.selected.value === STATES.SELECTED\"\n [indeterminate]=\"_model.selected.value === STATES.INDETERMINATE\"\n (change)=\"_model.toggleSelection(featuresService.eager)\"\n (focus)=\"focusTreeNode()\"\n tabindex=\"-1\"\n />\n <label [for]=\"nodeId + '-check'\" class=\"clr-control-label\">\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </label>\n </div>\n <div class=\"clr-treenode-content\" (mouseup)=\"focusTreeNode()\" *ngIf=\"!featuresService.selectable\">\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </div>\n\n <ng-template #treenodeContent>\n <ng-content></ng-content>\n <div class=\"clr-sr-only\" *ngIf=\"featuresService.selectable || ariaSelected\">\n <span> {{ariaSelected ? commonStrings.keys.selectedTreeNode : commonStrings.keys.unselectedTreeNode}}</span>\n </div>\n </ng-template>\n</div>\n<div\n class=\"clr-treenode-children\"\n [@toggleChildrenAnim]=\"expandService.expanded ? 'expanded' : 'collapsed'\"\n [attr.role]=\"isExpandable() && !featuresService.recursion ? 'group' : null\"\n>\n <ng-content select=\"clr-tree-node\"></ng-content>\n <ng-content select=\"[clrIfExpanded]\"></ng-content>\n <clr-recursive-children [parent]=\"_model\"></clr-recursive-children>\n</div>\n" }]
|
|
25722
26186
|
}], ctorParameters: function () {
|
|
25723
26187
|
return [{ type: undefined, decorators: [{
|
|
25724
26188
|
type: Inject,
|
|
@@ -26648,7 +27112,7 @@ class ClrModal {
|
|
|
26648
27112
|
}
|
|
26649
27113
|
}
|
|
26650
27114
|
ClrModal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModal, deps: [{ token: ScrollingService }, { token: ClrCommonStringsService }, { token: ModalStackService }, { token: ClrModalConfigurationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
26651
|
-
ClrModal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrModal, selector: "clr-modal", inputs: { _open: ["clrModalOpen", "_open"], closable: ["clrModalClosable", "closable"], closeButtonAriaLabel: ["clrModalCloseButtonAriaLabel", "closeButtonAriaLabel"], size: ["clrModalSize", "size"], staticBackdrop: ["clrModalStaticBackdrop", "staticBackdrop"], skipAnimation: ["clrModalSkipAnimation", "skipAnimation"], stopClose: ["clrModalPreventClose", "stopClose"], labelledBy: ["clrModalLabelledById", "labelledBy"], bypassScrollService: ["clrModalOverrideScrollService", "bypassScrollService"] }, outputs: { _openChanged: "clrModalOpenChange", altClose: "clrModalAlternateClose" }, host: { properties: { "class.open": "this._open" } }, viewQueries: [{ propertyName: "title", first: true, predicate: ["title"], descendants: true }, { propertyName: "bodyElementRef", first: true, predicate: ["body"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div *ngIf=\"_open\" class=\"modal\" [class.modal-full-screen]=\"size == 'full-screen'\">\n <!--fixme: revisit when ngClass works with exit animation-->\n <div\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n [@fadeMove]=\"fadeMove\"\n (@fadeMove.done)=\"fadeDone($event)\"\n class=\"modal-dialog\"\n [class.modal-sm]=\"size == 'sm'\"\n [class.modal-lg]=\"size == 'lg'\"\n [class.modal-xl]=\"size == 'xl'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!_open\"\n [attr.aria-labelledby]=\"labelledBy || modalId\"\n >\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n
|
|
27115
|
+
ClrModal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrModal, selector: "clr-modal", inputs: { _open: ["clrModalOpen", "_open"], closable: ["clrModalClosable", "closable"], closeButtonAriaLabel: ["clrModalCloseButtonAriaLabel", "closeButtonAriaLabel"], size: ["clrModalSize", "size"], staticBackdrop: ["clrModalStaticBackdrop", "staticBackdrop"], skipAnimation: ["clrModalSkipAnimation", "skipAnimation"], stopClose: ["clrModalPreventClose", "stopClose"], labelledBy: ["clrModalLabelledById", "labelledBy"], bypassScrollService: ["clrModalOverrideScrollService", "bypassScrollService"] }, outputs: { _openChanged: "clrModalOpenChange", altClose: "clrModalAlternateClose" }, host: { properties: { "class.open": "this._open" } }, queries: [{ propertyName: "modalContentTemplate", first: true, predicate: ["clrInternalModalContentTemplate"], descendants: true }], viewQueries: [{ propertyName: "title", first: true, predicate: ["title"], descendants: true }, { propertyName: "bodyElementRef", first: true, predicate: ["body"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div *ngIf=\"_open\" class=\"modal\" [class.modal-full-screen]=\"size == 'full-screen'\">\n <!--fixme: revisit when ngClass works with exit animation-->\n <div\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n [@fadeMove]=\"fadeMove\"\n (@fadeMove.done)=\"fadeDone($event)\"\n class=\"modal-dialog\"\n [class.modal-sm]=\"size == 'sm'\"\n [class.modal-lg]=\"size == 'lg'\"\n [class.modal-xl]=\"size == 'xl'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!_open\"\n [attr.aria-labelledby]=\"labelledBy || modalId\"\n >\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n <!-- This wizard is tightly coupled to the modal styles, so changes here could require changes in the wizard. -->\n <div *ngIf=\"!modalContentTemplate; else modalContentTemplate\" class=\"modal-content-wrapper\">\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <ng-content select=\".leading-button\"></ng-content>\n <div class=\"modal-title-wrapper\" #title [id]=\"modalId\" cdkFocusInitial tabindex=\"-1\">\n <ng-content select=\".modal-title\"></ng-content>\n </div>\n <button\n type=\"button\"\n [attr.aria-label]=\"closeButtonAriaLabel || commonStrings.keys.close\"\n class=\"close\"\n *ngIf=\"closable\"\n (click)=\"close()\"\n >\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n </div>\n <div #body class=\"modal-body-wrapper\">\n <ng-content select=\".modal-body\"></ng-content>\n </div>\n <ng-content select=\".modal-footer\"></ng-content>\n </div>\n </div>\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n </div>\n</div>\n\n<div [@fade] *ngIf=\"backdrop\" class=\"modal-backdrop\" aria-hidden=\"true\" (click)=\"backdropClick()\"></div>\n", styles: [":host{display:none}:host.open{display:inline}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]" }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }], viewProviders: [ScrollingService], animations: [
|
|
26652
27116
|
trigger('fadeMove', [
|
|
26653
27117
|
transition('* => fadeDown', [
|
|
26654
27118
|
style({ opacity: 0, transform: 'translate(0, -25%)' }),
|
|
@@ -26683,7 +27147,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
26683
27147
|
transition('void => *', [style({ opacity: 0 }), animate('0.2s ease-in-out', style({ opacity: 0.85 }))]),
|
|
26684
27148
|
transition('* => void', [animate('0.2s ease-in-out', style({ opacity: 0 }))]),
|
|
26685
27149
|
]),
|
|
26686
|
-
], template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div *ngIf=\"_open\" class=\"modal\" [class.modal-full-screen]=\"size == 'full-screen'\">\n <!--fixme: revisit when ngClass works with exit animation-->\n <div\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n [@fadeMove]=\"fadeMove\"\n (@fadeMove.done)=\"fadeDone($event)\"\n class=\"modal-dialog\"\n [class.modal-sm]=\"size == 'sm'\"\n [class.modal-lg]=\"size == 'lg'\"\n [class.modal-xl]=\"size == 'xl'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!_open\"\n [attr.aria-labelledby]=\"labelledBy || modalId\"\n >\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n
|
|
27150
|
+
], template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div *ngIf=\"_open\" class=\"modal\" [class.modal-full-screen]=\"size == 'full-screen'\">\n <!--fixme: revisit when ngClass works with exit animation-->\n <div\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n [@fadeMove]=\"fadeMove\"\n (@fadeMove.done)=\"fadeDone($event)\"\n class=\"modal-dialog\"\n [class.modal-sm]=\"size == 'sm'\"\n [class.modal-lg]=\"size == 'lg'\"\n [class.modal-xl]=\"size == 'xl'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!_open\"\n [attr.aria-labelledby]=\"labelledBy || modalId\"\n >\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n <!-- This wizard is tightly coupled to the modal styles, so changes here could require changes in the wizard. -->\n <div *ngIf=\"!modalContentTemplate; else modalContentTemplate\" class=\"modal-content-wrapper\">\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <ng-content select=\".leading-button\"></ng-content>\n <div class=\"modal-title-wrapper\" #title [id]=\"modalId\" cdkFocusInitial tabindex=\"-1\">\n <ng-content select=\".modal-title\"></ng-content>\n </div>\n <button\n type=\"button\"\n [attr.aria-label]=\"closeButtonAriaLabel || commonStrings.keys.close\"\n class=\"close\"\n *ngIf=\"closable\"\n (click)=\"close()\"\n >\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n </div>\n <div #body class=\"modal-body-wrapper\">\n <ng-content select=\".modal-body\"></ng-content>\n </div>\n <ng-content select=\".modal-footer\"></ng-content>\n </div>\n </div>\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n </div>\n</div>\n\n<div [@fade] *ngIf=\"backdrop\" class=\"modal-backdrop\" aria-hidden=\"true\" (click)=\"backdropClick()\"></div>\n", styles: [":host{display:none}:host.open{display:inline}\n"] }]
|
|
26687
27151
|
}], ctorParameters: function () { return [{ type: ScrollingService }, { type: ClrCommonStringsService }, { type: ModalStackService }, { type: ClrModalConfigurationService }]; }, propDecorators: { title: [{
|
|
26688
27152
|
type: ViewChild,
|
|
26689
27153
|
args: ['title']
|
|
@@ -26723,6 +27187,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
26723
27187
|
}], bypassScrollService: [{
|
|
26724
27188
|
type: Input,
|
|
26725
27189
|
args: ['clrModalOverrideScrollService']
|
|
27190
|
+
}], modalContentTemplate: [{
|
|
27191
|
+
type: ContentChild,
|
|
27192
|
+
args: ['clrInternalModalContentTemplate']
|
|
26726
27193
|
}], bodyElementRef: [{
|
|
26727
27194
|
type: ViewChild,
|
|
26728
27195
|
args: ['body']
|
|
@@ -29592,6 +30059,15 @@ class ClrWizard {
|
|
|
29592
30059
|
* Set the modal size of the wizard. Set using `[clrWizardSize]` input.
|
|
29593
30060
|
*/
|
|
29594
30061
|
this.size = 'xl';
|
|
30062
|
+
/**
|
|
30063
|
+
* Enable "in page" wizard. Set using `[clrWizardInPage]` input.
|
|
30064
|
+
*/
|
|
30065
|
+
this.inPage = false;
|
|
30066
|
+
/**
|
|
30067
|
+
* Make an "in page" wizard fill the `.content-area`. Set using `[clrWizardInPageFillContentArea]` input.
|
|
30068
|
+
* If you can't use this option, you will likely need to provide custom CSS to set the wizard's height and margins.
|
|
30069
|
+
*/
|
|
30070
|
+
this.inPageFillContentArea = false;
|
|
29595
30071
|
/**
|
|
29596
30072
|
* Tells the modal part of the wizard whether it should have a close "X"
|
|
29597
30073
|
* in the top right corner. Set using `[clrWizardClosable]` input.
|
|
@@ -29750,6 +30226,9 @@ class ClrWizard {
|
|
|
29750
30226
|
ngAfterContentInit() {
|
|
29751
30227
|
this.pageCollection.pages = this.pages;
|
|
29752
30228
|
this.headerActionService.wizardHeaderActions = this.headerActions;
|
|
30229
|
+
if (this.inPage) {
|
|
30230
|
+
this.open();
|
|
30231
|
+
}
|
|
29753
30232
|
this.initializeButtons();
|
|
29754
30233
|
}
|
|
29755
30234
|
ngDoCheck() {
|
|
@@ -29947,7 +30426,7 @@ class ClrWizard {
|
|
|
29947
30426
|
(_a = this.pageTitle) === null || _a === void 0 ? void 0 : _a.nativeElement.focus();
|
|
29948
30427
|
this.currentPageChanged.emit();
|
|
29949
30428
|
// scroll to top of page in case there is long page content
|
|
29950
|
-
(_b = this.
|
|
30429
|
+
(_b = this.bodyElementRef) === null || _b === void 0 ? void 0 : _b.nativeElement.scrollTo(0, 0);
|
|
29951
30430
|
});
|
|
29952
30431
|
}
|
|
29953
30432
|
updateNavOnPageChanges() {
|
|
@@ -29971,7 +30450,7 @@ class ClrWizard {
|
|
|
29971
30450
|
}
|
|
29972
30451
|
}
|
|
29973
30452
|
ClrWizard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrWizard, deps: [{ token: PLATFORM_ID }, { token: ClrCommonStringsService }, { token: WizardNavigationService }, { token: PageCollectionService }, { token: ButtonHubService }, { token: HeaderActionService }, { token: i0.ElementRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Component });
|
|
29974
|
-
ClrWizard.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrWizard, selector: "clr-wizard", inputs: { stepnavAriaLabel: ["clrWizardStepnavAriaLabel", "stepnavAriaLabel"], size: ["clrWizardSize", "size"], closable: ["clrWizardClosable", "closable"], _stopModalAnimations: ["clrWizardPreventModalAnimation", "_stopModalAnimations"], forceForward: ["clrWizardForceForwardNavigation", "forceForward"], clrWizardOpen: "clrWizardOpen", stopNext: ["clrWizardPreventDefaultNext", "stopNext"], stopCancel: ["clrWizardPreventDefaultCancel", "stopCancel"], stopNavigation: ["clrWizardPreventNavigation", "stopNavigation"], disableStepnav: ["clrWizardDisableStepnav", "disableStepnav"] }, outputs: { _openChanged: "clrWizardOpenChange", onCancel: "clrWizardOnCancel", wizardFinished: "clrWizardOnFinish", onReset: "clrWizardOnReset", currentPageChanged: "clrWizardCurrentPageChanged", onMoveNext: "clrWizardOnNext", onMovePrevious: "clrWizardOnPrevious" }, host: { properties: { "class.clr-wizard": "true", "class.wizard-md": "size == 'md'", "class.wizard-lg": "size == 'lg'", "class.wizard-xl": "size == 'xl'", "class.
|
|
30453
|
+
ClrWizard.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrWizard, selector: "clr-wizard", inputs: { stepnavAriaLabel: ["clrWizardStepnavAriaLabel", "stepnavAriaLabel"], size: ["clrWizardSize", "size"], inPage: ["clrWizardInPage", "inPage"], inPageFillContentArea: ["clrWizardInPageFillContentArea", "inPageFillContentArea"], closable: ["clrWizardClosable", "closable"], _stopModalAnimations: ["clrWizardPreventModalAnimation", "_stopModalAnimations"], forceForward: ["clrWizardForceForwardNavigation", "forceForward"], clrWizardOpen: "clrWizardOpen", stopNext: ["clrWizardPreventDefaultNext", "stopNext"], stopCancel: ["clrWizardPreventDefaultCancel", "stopCancel"], stopNavigation: ["clrWizardPreventNavigation", "stopNavigation"], disableStepnav: ["clrWizardDisableStepnav", "disableStepnav"] }, outputs: { _openChanged: "clrWizardOpenChange", onCancel: "clrWizardOnCancel", wizardFinished: "clrWizardOnFinish", onReset: "clrWizardOnReset", currentPageChanged: "clrWizardCurrentPageChanged", onMoveNext: "clrWizardOnNext", onMovePrevious: "clrWizardOnPrevious" }, host: { properties: { "class.clr-wizard": "true", "class.wizard-md": "size == 'md'", "class.wizard-lg": "size == 'lg'", "class.wizard-xl": "size == 'xl'", "class.wizard-in-page": "inPage", "class.wizard-in-page--fill-content-area": "inPage && inPageFillContentArea" } }, providers: [WizardNavigationService, PageCollectionService, ButtonHubService, HeaderActionService], queries: [{ propertyName: "wizardTitle", first: true, predicate: ClrWizardTitle, descendants: true }, { propertyName: "pages", predicate: ClrWizardPage, descendants: true }, { propertyName: "headerActions", predicate: ClrWizardHeaderAction }], viewQueries: [{ propertyName: "pageTitle", first: true, predicate: ["pageTitle"], descendants: true }, { propertyName: "bodyElementRef", first: true, predicate: ["body"], descendants: true }, { propertyName: "modal", first: true, predicate: ClrModal, descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<ng-container *ngIf=\"inPage; then wizardTemplate; else wizardModalTemplate\"></ng-container>\n\n<ng-template #wizardModalTemplate>\n <clr-modal\n [clrModalOpen]=\"_open\"\n [clrModalSize]=\"size\"\n [clrModalClosable]=\"closable\"\n [clrModalStaticBackdrop]=\"true\"\n [clrModalSkipAnimation]=\"stopModalAnimations\"\n [clrModalOverrideScrollService]=\"isInline\"\n [clrModalPreventClose]=\"true\"\n (clrModalAlternateClose)=\"modalCancel()\"\n [clrModalLabelledById]=\"wizardId\"\n >\n <ng-template #clrInternalModalContentTemplate>\n <ng-container [ngTemplateOutlet]=\"wizardTemplate\"></ng-container>\n </ng-template>\n </clr-modal>\n</ng-template>\n\n<!-- This template is tightly coupled to the modal styles. -->\n<ng-template #wizardTemplate>\n <div class=\"modal-content-wrapper\">\n <div class=\"modal-nav clr-wizard-stepnav-wrapper\" role=\"region\">\n <div class=\"clr-wizard-title\" [id]=\"wizardId\" role=\"heading\" [attr.aria-level]=\"wizardTitle.headingLevel || 1\">\n <ng-content select=\"clr-wizard-title\"></ng-content>\n </div>\n <clr-wizard-stepnav [label]=\"stepnavAriaLabel\"></clr-wizard-stepnav>\n </div>\n\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <div class=\"modal-title-wrapper\" #title cdkFocusInitial tabindex=\"-1\">\n <div\n class=\"modal-title\"\n role=\"heading\"\n [attr.aria-level]=\"navService.currentPage?.pageTitle.headingLevel || 2\"\n >\n <span tabindex=\"-1\" #pageTitle class=\"modal-title-text\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPageTitle\"></ng-template>\n </span>\n\n <div class=\"modal-header-actions-wrapper\" *ngIf=\"headerActionService.displayHeaderActionsWrapper\">\n <div *ngIf=\"headerActionService.showWizardHeaderActions\">\n <ng-content select=\"clr-wizard-header-action\"></ng-content>\n </div>\n <div *ngIf=\"headerActionService.currentPageHasHeaderActions\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.headerActions\"></ng-template>\n </div>\n </div>\n </div>\n </div>\n <button\n *ngIf=\"closable && !inPage\"\n type=\"button\"\n class=\"close\"\n [attr.aria-label]=\"commonStrings.keys.close\"\n (click)=\"modalCancel()\"\n >\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n </div>\n <div #body class=\"modal-body-wrapper\">\n <div class=\"modal-body\">\n <main clr-wizard-pages-wrapper class=\"clr-wizard-content\">\n <ng-content></ng-content>\n </main>\n </div>\n </div>\n <div class=\"modal-footer clr-wizard-footer\">\n <div class=\"clr-wizard-footer-buttons\">\n <div\n *ngIf=\"navService.currentPage && !navService.currentPage.hasButtons\"\n class=\"clr-wizard-footer-buttons-wrapper\"\n >\n <ng-content select=\"clr-wizard-button\"></ng-content>\n </div>\n <div\n *ngIf=\"navService.currentPage && navService.currentPage.hasButtons\"\n class=\"clr-wizard-footer-buttons-wrapper\"\n >\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.buttons\"></ng-template>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ClrModal, selector: "clr-modal", inputs: ["clrModalOpen", "clrModalClosable", "clrModalCloseButtonAriaLabel", "clrModalSize", "clrModalStaticBackdrop", "clrModalSkipAnimation", "clrModalPreventClose", "clrModalLabelledById", "clrModalOverrideScrollService"], outputs: ["clrModalOpenChange", "clrModalAlternateClose"] }, { kind: "directive", type: ClrModalBody, selector: ".modal-body" }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "component", type: ClrWizardStepnav, selector: "clr-wizard-stepnav", inputs: ["label"] }] });
|
|
29975
30454
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrWizard, decorators: [{
|
|
29976
30455
|
type: Component,
|
|
29977
30456
|
args: [{ selector: 'clr-wizard', providers: [WizardNavigationService, PageCollectionService, ButtonHubService, HeaderActionService], host: {
|
|
@@ -29979,8 +30458,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
29979
30458
|
'[class.wizard-md]': "size == 'md'",
|
|
29980
30459
|
'[class.wizard-lg]': "size == 'lg'",
|
|
29981
30460
|
'[class.wizard-xl]': "size == 'xl'",
|
|
29982
|
-
'[class.
|
|
29983
|
-
|
|
30461
|
+
'[class.wizard-in-page]': 'inPage',
|
|
30462
|
+
'[class.wizard-in-page--fill-content-area]': 'inPage && inPageFillContentArea',
|
|
30463
|
+
}, template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<ng-container *ngIf=\"inPage; then wizardTemplate; else wizardModalTemplate\"></ng-container>\n\n<ng-template #wizardModalTemplate>\n <clr-modal\n [clrModalOpen]=\"_open\"\n [clrModalSize]=\"size\"\n [clrModalClosable]=\"closable\"\n [clrModalStaticBackdrop]=\"true\"\n [clrModalSkipAnimation]=\"stopModalAnimations\"\n [clrModalOverrideScrollService]=\"isInline\"\n [clrModalPreventClose]=\"true\"\n (clrModalAlternateClose)=\"modalCancel()\"\n [clrModalLabelledById]=\"wizardId\"\n >\n <ng-template #clrInternalModalContentTemplate>\n <ng-container [ngTemplateOutlet]=\"wizardTemplate\"></ng-container>\n </ng-template>\n </clr-modal>\n</ng-template>\n\n<!-- This template is tightly coupled to the modal styles. -->\n<ng-template #wizardTemplate>\n <div class=\"modal-content-wrapper\">\n <div class=\"modal-nav clr-wizard-stepnav-wrapper\" role=\"region\">\n <div class=\"clr-wizard-title\" [id]=\"wizardId\" role=\"heading\" [attr.aria-level]=\"wizardTitle.headingLevel || 1\">\n <ng-content select=\"clr-wizard-title\"></ng-content>\n </div>\n <clr-wizard-stepnav [label]=\"stepnavAriaLabel\"></clr-wizard-stepnav>\n </div>\n\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <div class=\"modal-title-wrapper\" #title cdkFocusInitial tabindex=\"-1\">\n <div\n class=\"modal-title\"\n role=\"heading\"\n [attr.aria-level]=\"navService.currentPage?.pageTitle.headingLevel || 2\"\n >\n <span tabindex=\"-1\" #pageTitle class=\"modal-title-text\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPageTitle\"></ng-template>\n </span>\n\n <div class=\"modal-header-actions-wrapper\" *ngIf=\"headerActionService.displayHeaderActionsWrapper\">\n <div *ngIf=\"headerActionService.showWizardHeaderActions\">\n <ng-content select=\"clr-wizard-header-action\"></ng-content>\n </div>\n <div *ngIf=\"headerActionService.currentPageHasHeaderActions\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.headerActions\"></ng-template>\n </div>\n </div>\n </div>\n </div>\n <button\n *ngIf=\"closable && !inPage\"\n type=\"button\"\n class=\"close\"\n [attr.aria-label]=\"commonStrings.keys.close\"\n (click)=\"modalCancel()\"\n >\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n </div>\n <div #body class=\"modal-body-wrapper\">\n <div class=\"modal-body\">\n <main clr-wizard-pages-wrapper class=\"clr-wizard-content\">\n <ng-content></ng-content>\n </main>\n </div>\n </div>\n <div class=\"modal-footer clr-wizard-footer\">\n <div class=\"clr-wizard-footer-buttons\">\n <div\n *ngIf=\"navService.currentPage && !navService.currentPage.hasButtons\"\n class=\"clr-wizard-footer-buttons-wrapper\"\n >\n <ng-content select=\"clr-wizard-button\"></ng-content>\n </div>\n <div\n *ngIf=\"navService.currentPage && navService.currentPage.hasButtons\"\n class=\"clr-wizard-footer-buttons-wrapper\"\n >\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.buttons\"></ng-template>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n" }]
|
|
29984
30464
|
}], ctorParameters: function () {
|
|
29985
30465
|
return [{ type: undefined, decorators: [{
|
|
29986
30466
|
type: Inject,
|
|
@@ -29992,6 +30472,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
29992
30472
|
}], size: [{
|
|
29993
30473
|
type: Input,
|
|
29994
30474
|
args: ['clrWizardSize']
|
|
30475
|
+
}], inPage: [{
|
|
30476
|
+
type: Input,
|
|
30477
|
+
args: ['clrWizardInPage']
|
|
30478
|
+
}], inPageFillContentArea: [{
|
|
30479
|
+
type: Input,
|
|
30480
|
+
args: ['clrWizardInPageFillContentArea']
|
|
29995
30481
|
}], closable: [{
|
|
29996
30482
|
type: Input,
|
|
29997
30483
|
args: ['clrWizardClosable']
|
|
@@ -30031,6 +30517,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
30031
30517
|
}], wizardTitle: [{
|
|
30032
30518
|
type: ContentChild,
|
|
30033
30519
|
args: [ClrWizardTitle]
|
|
30520
|
+
}], bodyElementRef: [{
|
|
30521
|
+
type: ViewChild,
|
|
30522
|
+
args: ['body']
|
|
30034
30523
|
}], modal: [{
|
|
30035
30524
|
type: ViewChild,
|
|
30036
30525
|
args: [ClrModal]
|
|
@@ -30572,5 +31061,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
30572
31061
|
* Generated bundle index. Do not edit.
|
|
30573
31062
|
*/
|
|
30574
31063
|
|
|
30575
|
-
export { CHANGE_KEYS, CLR_ALERT_DIRECTIVES, CLR_BUTTON_GROUP_DIRECTIVES, CLR_DATAGRID_DIRECTIVES, CLR_DATEPICKER_DIRECTIVES, CLR_DROPDOWN_DIRECTIVES, CLR_FILE_MESSAGES_TEMPLATE_CONTEXT, 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_SIDEPANEL_DIRECTIVES, CLR_SIGNPOST_DIRECTIVES, CLR_SPINNER_DIRECTIVES, CLR_STACK_VIEW_DIRECTIVES, CLR_TABS_DIRECTIVES, CLR_TOOLTIP_DIRECTIVES, CLR_TREE_VIEW_DIRECTIVES, CLR_VERTICAL_NAV_DIRECTIVES, CLR_WIZARD_DIRECTIVES, CONDITIONAL_DIRECTIVES, CUSTOM_BUTTON_TYPES, CdsIconCustomTag, ClarityModule, ClrAbstractContainer, ClrAccordion, ClrAccordionContent, ClrAccordionDescription, ClrAccordionModule, ClrAccordionPanel, ClrAccordionTitle, ClrAlert, ClrAlertItem, ClrAlertModule, ClrAlertText, ClrAlerts, ClrAlertsPager, ClrAlignment, ClrAriaCurrentLink, ClrAxis, ClrBreadcrumbItem, ClrBreadcrumbs, ClrBreadcrumbsModule, 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, ClrDatagridDetail, ClrDatagridDetailBody, ClrDatagridDetailHeader, ClrDatagridFilter, ClrDatagridFooter, ClrDatagridHideableColumn, ClrDatagridItems, ClrDatagridModule, ClrDatagridPageSize, ClrDatagridPagination, ClrDatagridPlaceholder, ClrDatagridRow, ClrDatagridRowDetail, ClrDatagridSortOrder, ClrDatalist, ClrDatalistContainer, ClrDatalistInput, ClrDatalistModule, ClrDateContainer, ClrDateInput, ClrDateInputBase, ClrDateInputValidator, ClrDatepickerActions, ClrDatepickerModule, ClrDatepickerViewManager, ClrDay, ClrDaypicker, ClrDestroyService, ClrDropdown, ClrDropdownItem, ClrDropdownMenu, ClrDropdownModule, ClrDropdownTrigger, ClrEmphasisModule, ClrEndDateInput, ClrEndDateInputValidator, ClrExpandableAnimation, ClrFileError, ClrFileInfo, ClrFileInput, ClrFileInputContainer, ClrFileInputModule, ClrFileInputValidator, ClrFileInputValueAccessor, ClrFileList, ClrFileMessagesTemplate, ClrFileSuccess, ClrFocusOnViewInit, ClrFocusOnViewInitModule, ClrForm, ClrFormLayout, ClrFormsModule, ClrHeader, ClrIconCustomTag, ClrIconModule, ClrIfActive, ClrIfDetail, ClrIfError, ClrIfExpanded, ClrIfOpen, ClrIfSuccess, ClrInput, ClrInputContainer, ClrInputModule, ClrLabel, ClrLayout, ClrLayoutModule, ClrLoading, ClrLoadingButton, ClrLoadingButtonModule, ClrLoadingModule, ClrLoadingState, ClrMainContainer, ClrMainContainerModule, ClrModal, ClrModalBody, ClrModalConfigurationService, ClrModalHostDirective, ClrModalModule, ClrMonthpicker, ClrNavLevel, ClrNavigationModule, ClrNumberInput, ClrNumberInputContainer, ClrNumberInputModule, ClrOption, ClrOptionItems, ClrOptionSelected, ClrOptions, ClrPassword, ClrPasswordContainer, ClrPasswordModule, ClrPopoverAnchor, ClrPopoverContent, ClrPopoverEventsService, ClrPopoverHostDirective, ClrPopoverModule, ClrPopoverPositionService, ClrPopoverToggleService, ClrProgressBar, ClrProgressBarModule, ClrRadio, ClrRadioContainer, ClrRadioModule, ClrRadioWrapper, ClrRange, ClrRangeContainer, ClrRangeModule, ClrRecursiveForOf, ClrSelect, ClrSelectContainer, ClrSelectModule, ClrSelectedState, ClrSide, ClrSidePanel, ClrSidePanelModule, ClrSignpost, ClrSignpostContent, ClrSignpostModule, ClrSignpostTitle, ClrSignpostTrigger, ClrSpinner, ClrSpinnerModule, ClrStackBlock, ClrStackContentInput, ClrStackHeader, ClrStackView, ClrStackViewCustomTags, ClrStackViewLabel, ClrStackViewModule, ClrStandaloneCdkTrapFocus, ClrStartDateInput, ClrStartDateInputValidator, ClrStepButton, ClrStepButtonType, ClrStepper, ClrStepperModule, ClrStepperPanel, ClrStopEscapePropagationDirective, ClrTab, ClrTabAction, ClrTabContent, ClrTabLink, ClrTabOverflowContent, ClrTabs, ClrTabsActions, 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, ClrWizardHeaderAction, ClrWizardModule, ClrWizardPage, ClrWizardPageButtons, ClrWizardPageHeaderActions, ClrWizardPageNavTitle, ClrWizardPageTitle, ClrWizardStepnav, ClrWizardStepnavItem, ClrWizardTitle, ClrYearpicker, DEFAULT_BUTTON_TYPES, DatagridNumericFilter, DatagridPropertyComparator, DatagridPropertyNumericFilter, DatagridPropertyStringFilter, DatagridStringFilter, EXPANDABLE_ANIMATION_DIRECTIVES, FOCUS_ON_VIEW_INIT, FOCUS_ON_VIEW_INIT_DIRECTIVES, IS_TOGGLE, IS_TOGGLE_PROVIDER, LoadingListener, MainContainerWillyWonka, NavDetectionOompaLoompa, TOGGLE_SERVICE, TOGGLE_SERVICE_PROVIDER, ToggleServiceFactory, WrappedFormControl, collapse, commonStringsDefault, fade, fadeSlide, isToggleFactory, slide, AccordionOompaLoompa as ÇlrAccordionOompaLoompa, AccordionWillyWonka as ÇlrAccordionWillyWonka, ActionableOompaLoompa as ÇlrActionableOompaLoompa, ActiveOompaLoompa as ÇlrActiveOompaLoompa, ClrPopoverCloseButton as ÇlrClrPopoverCloseButton, ClrPopoverModuleNext as ÇlrClrPopoverModuleNext, ClrPopoverOpenCloseButton as ÇlrClrPopoverOpenCloseButton, DatagridCellRenderer as ÇlrDatagridCellRenderer, DatagridDetailRegisterer as ÇlrDatagridDetailRegisterer, DatagridHeaderRenderer as ÇlrDatagridHeaderRenderer, DatagridMainRenderer as ÇlrDatagridMainRenderer, DatagridRowRenderer as ÇlrDatagridRowRenderer, ClrDatagridSelectionCellDirective as ÇlrDatagridSelectionCellDirective, ClrDatagridVirtualScrollDirective as ÇlrDatagridVirtualScrollDirective, DatagridWillyWonka as ÇlrDatagridWillyWonka, ExpandableOompaLoompa as ÇlrExpandableOompaLoompa, StepperOompaLoompa as ÇlrStepperOompaLoompa, StepperWillyWonka as ÇlrStepperWillyWonka, TabsWillyWonka as ÇlrTabsWillyWonka, WrappedCell as ÇlrWrappedCell, WrappedColumn as ÇlrWrappedColumn, WrappedRow as ÇlrWrappedRow };
|
|
31064
|
+
export { BaseExpandableAnimation, CHANGE_KEYS, CLR_ALERT_DIRECTIVES, CLR_BUTTON_GROUP_DIRECTIVES, CLR_DATAGRID_DIRECTIVES, CLR_DATEPICKER_DIRECTIVES, CLR_DROPDOWN_DIRECTIVES, CLR_FILE_MESSAGES_TEMPLATE_CONTEXT, 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_SIDEPANEL_DIRECTIVES, CLR_SIGNPOST_DIRECTIVES, CLR_SPINNER_DIRECTIVES, CLR_STACK_VIEW_DIRECTIVES, CLR_TABS_DIRECTIVES, CLR_TOOLTIP_DIRECTIVES, CLR_TREE_VIEW_DIRECTIVES, CLR_VERTICAL_NAV_DIRECTIVES, CLR_WIZARD_DIRECTIVES, CONDITIONAL_DIRECTIVES, CUSTOM_BUTTON_TYPES, CdsIconCustomTag, ClarityModule, ClrAbstractContainer, ClrAccordion, ClrAccordionContent, ClrAccordionDescription, ClrAccordionModule, ClrAccordionPanel, ClrAccordionTitle, ClrAlert, ClrAlertItem, ClrAlertModule, ClrAlertText, ClrAlerts, ClrAlertsPager, ClrAlignment, ClrAriaCurrentLink, ClrAxis, ClrBreadcrumbItem, ClrBreadcrumbs, ClrBreadcrumbsModule, 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, ClrDatagridDetail, ClrDatagridDetailBody, ClrDatagridDetailHeader, ClrDatagridFilter, ClrDatagridFooter, ClrDatagridHideableColumn, ClrDatagridItems, ClrDatagridModule, ClrDatagridPageSize, ClrDatagridPagination, ClrDatagridPlaceholder, ClrDatagridRow, ClrDatagridRowDetail, ClrDatagridSortOrder, ClrDatalist, ClrDatalistContainer, ClrDatalistInput, ClrDatalistModule, ClrDateContainer, ClrDateInput, ClrDateInputBase, ClrDateInputValidator, ClrDatepickerActions, ClrDatepickerModule, ClrDatepickerViewManager, ClrDay, ClrDaypicker, ClrDestroyService, ClrDropdown, ClrDropdownItem, ClrDropdownMenu, ClrDropdownModule, ClrDropdownTrigger, ClrEmphasisModule, ClrEndDateInput, ClrEndDateInputValidator, ClrExpandableAnimation, ClrFileError, ClrFileInfo, ClrFileInput, ClrFileInputContainer, ClrFileInputModule, ClrFileInputValidator, ClrFileInputValueAccessor, ClrFileList, ClrFileMessagesTemplate, ClrFileSuccess, ClrFocusOnViewInit, ClrFocusOnViewInitModule, ClrForm, ClrFormLayout, ClrFormsModule, ClrHeader, ClrIconCustomTag, ClrIconModule, ClrIfActive, ClrIfDetail, ClrIfError, ClrIfExpanded, ClrIfOpen, ClrIfSuccess, ClrInput, ClrInputContainer, ClrInputModule, ClrLabel, ClrLayout, ClrLayoutModule, ClrLoading, ClrLoadingButton, ClrLoadingButtonModule, ClrLoadingModule, ClrLoadingState, ClrMainContainer, ClrMainContainerModule, ClrModal, ClrModalBody, ClrModalConfigurationService, ClrModalHostDirective, ClrModalModule, ClrMonthpicker, ClrNavLevel, ClrNavigationModule, ClrNumberInput, ClrNumberInputContainer, ClrNumberInputModule, ClrOption, ClrOptionItems, ClrOptionSelected, ClrOptions, ClrPassword, ClrPasswordContainer, ClrPasswordModule, ClrPopoverAnchor, ClrPopoverContent, ClrPopoverEventsService, ClrPopoverHostDirective, ClrPopoverModule, ClrPopoverPositionService, ClrPopoverToggleService, ClrProgressBar, ClrProgressBarModule, ClrRadio, ClrRadioContainer, ClrRadioModule, ClrRadioWrapper, ClrRange, ClrRangeContainer, ClrRangeModule, ClrRecursiveForOf, ClrSelect, ClrSelectContainer, ClrSelectModule, ClrSelectedState, ClrSide, ClrSidePanel, ClrSidePanelModule, ClrSignpost, ClrSignpostContent, ClrSignpostModule, ClrSignpostTitle, ClrSignpostTrigger, ClrSpinner, ClrSpinnerModule, ClrStackBlock, ClrStackContentInput, ClrStackHeader, ClrStackView, ClrStackViewCustomTags, ClrStackViewLabel, ClrStackViewModule, ClrStandaloneCdkTrapFocus, ClrStartDateInput, ClrStartDateInputValidator, ClrStepButton, ClrStepButtonType, ClrStepper, ClrStepperModule, ClrStepperPanel, ClrStopEscapePropagationDirective, ClrTab, ClrTabAction, ClrTabContent, ClrTabLink, ClrTabOverflowContent, ClrTabs, ClrTabsActions, 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, ClrWizardHeaderAction, ClrWizardModule, ClrWizardPage, ClrWizardPageButtons, ClrWizardPageHeaderActions, ClrWizardPageNavTitle, ClrWizardPageTitle, ClrWizardStepnav, ClrWizardStepnavItem, ClrWizardTitle, ClrYearpicker, DEFAULT_BUTTON_TYPES, DatagridNumericFilter, DatagridPropertyComparator, DatagridPropertyNumericFilter, DatagridPropertyStringFilter, DatagridStringFilter, EXPANDABLE_ANIMATION_DIRECTIVES, FOCUS_ON_VIEW_INIT, FOCUS_ON_VIEW_INIT_DIRECTIVES, IS_TOGGLE, IS_TOGGLE_PROVIDER, LoadingListener, MainContainerWillyWonka, NavDetectionOompaLoompa, TOGGLE_SERVICE, TOGGLE_SERVICE_PROVIDER, ToggleServiceFactory, WrappedFormControl, collapse, commonStringsDefault, fade, fadeSlide, isToggleFactory, slide, AccordionOompaLoompa as ÇlrAccordionOompaLoompa, AccordionWillyWonka as ÇlrAccordionWillyWonka, ActionableOompaLoompa as ÇlrActionableOompaLoompa, ActiveOompaLoompa as ÇlrActiveOompaLoompa, ClrPopoverCloseButton as ÇlrClrPopoverCloseButton, ClrPopoverModuleNext as ÇlrClrPopoverModuleNext, ClrPopoverOpenCloseButton as ÇlrClrPopoverOpenCloseButton, DatagridCellRenderer as ÇlrDatagridCellRenderer, DatagridDetailRegisterer as ÇlrDatagridDetailRegisterer, DatagridHeaderRenderer as ÇlrDatagridHeaderRenderer, DatagridMainRenderer as ÇlrDatagridMainRenderer, DatagridRowRenderer as ÇlrDatagridRowRenderer, ClrDatagridSelectionCellDirective as ÇlrDatagridSelectionCellDirective, ClrDatagridVirtualScrollDirective as ÇlrDatagridVirtualScrollDirective, DatagridWillyWonka as ÇlrDatagridWillyWonka, ExpandableOompaLoompa as ÇlrExpandableOompaLoompa, StepperOompaLoompa as ÇlrStepperOompaLoompa, StepperWillyWonka as ÇlrStepperWillyWonka, TabsWillyWonka as ÇlrTabsWillyWonka, WrappedCell as ÇlrWrappedCell, WrappedColumn as ÇlrWrappedColumn, WrappedRow as ÇlrWrappedRow };
|
|
30576
31065
|
//# sourceMappingURL=clr-angular.mjs.map
|