@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/fesm2020/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';
|
|
@@ -233,6 +234,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
233
234
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
234
235
|
*/
|
|
235
236
|
const defaultAnimationTiming = '0.2s ease-in-out';
|
|
237
|
+
const defaultExpandAnimation = animation([style({ height: '{{ startHeight }}px' }), animate(defaultAnimationTiming, style({ height: '*' }))], {
|
|
238
|
+
params: {
|
|
239
|
+
startHeight: 0, // default
|
|
240
|
+
},
|
|
241
|
+
});
|
|
236
242
|
|
|
237
243
|
/*
|
|
238
244
|
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
@@ -3104,54 +3110,68 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
3104
3110
|
* This software is released under MIT license.
|
|
3105
3111
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
3106
3112
|
*/
|
|
3107
|
-
class
|
|
3113
|
+
class BaseExpandableAnimation {
|
|
3108
3114
|
constructor(element, domAdapter, renderer) {
|
|
3109
3115
|
this.element = element;
|
|
3110
3116
|
this.domAdapter = domAdapter;
|
|
3111
3117
|
this.renderer = renderer;
|
|
3112
|
-
this.clrExpandTrigger = false;
|
|
3113
3118
|
this.startHeight = 0;
|
|
3114
3119
|
}
|
|
3120
|
+
updateStartHeight() {
|
|
3121
|
+
this.startHeight = this.domAdapter.computedHeight(this.element.nativeElement) || 0;
|
|
3122
|
+
}
|
|
3123
|
+
initAnimationEffects() {
|
|
3124
|
+
this.renderer.setStyle(this.element.nativeElement, 'overflow', 'hidden');
|
|
3125
|
+
}
|
|
3126
|
+
cleanupAnimationEffects(cancelAnimations = false) {
|
|
3127
|
+
this.renderer.removeStyle(this.element.nativeElement, 'overflow');
|
|
3128
|
+
// A "safe" auto-update of the height ensuring basic OOTB user experience .
|
|
3129
|
+
// Prone to small jumps in initial animation height if data was changed in the meantime, the window was resized, etc.
|
|
3130
|
+
// For optimal behavior call manually updateStartHeight() from the parent component before initiating the update.
|
|
3131
|
+
this.updateStartHeight();
|
|
3132
|
+
if (cancelAnimations) {
|
|
3133
|
+
this.cancelElementAnimations();
|
|
3134
|
+
}
|
|
3135
|
+
}
|
|
3136
|
+
cancelElementAnimations() {
|
|
3137
|
+
this.element.nativeElement.getAnimations().forEach(animation => {
|
|
3138
|
+
if (animation.playState === 'finished') {
|
|
3139
|
+
animation.cancel(); // clears animation-style set on the element
|
|
3140
|
+
}
|
|
3141
|
+
});
|
|
3142
|
+
}
|
|
3143
|
+
}
|
|
3144
|
+
|
|
3145
|
+
/*
|
|
3146
|
+
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
3147
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
3148
|
+
* This software is released under MIT license.
|
|
3149
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
3150
|
+
*/
|
|
3151
|
+
class ClrExpandableAnimation extends BaseExpandableAnimation {
|
|
3152
|
+
constructor(element, domAdapter, renderer) {
|
|
3153
|
+
super(element, domAdapter, renderer);
|
|
3154
|
+
this.clrExpandTrigger = false;
|
|
3155
|
+
}
|
|
3115
3156
|
get expandAnimation() {
|
|
3116
3157
|
return { value: this.clrExpandTrigger, params: { startHeight: this.startHeight } };
|
|
3117
3158
|
}
|
|
3118
3159
|
animationStart(event) {
|
|
3119
3160
|
if (event.fromState !== 'void') {
|
|
3120
|
-
this.
|
|
3161
|
+
this.initAnimationEffects();
|
|
3121
3162
|
}
|
|
3122
3163
|
}
|
|
3123
3164
|
animationDone(event) {
|
|
3124
3165
|
if (event.fromState !== 'void') {
|
|
3125
|
-
this.
|
|
3126
|
-
// A "safe" auto-update of the height ensuring basic OOTB user experience .
|
|
3127
|
-
// Prone to small jumps in initial animation height if data was changed in the meantime, window was resized, etc.
|
|
3128
|
-
// For optimal behavior call manually updateStartHeight() from the parent component before initiating the update.
|
|
3129
|
-
this.updateStartHeight();
|
|
3166
|
+
this.cleanupAnimationEffects();
|
|
3130
3167
|
}
|
|
3131
3168
|
}
|
|
3132
|
-
updateStartHeight() {
|
|
3133
|
-
this.startHeight = this.domAdapter.computedHeight(this.element.nativeElement) || 0;
|
|
3134
|
-
}
|
|
3135
3169
|
}
|
|
3136
3170
|
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 });
|
|
3137
|
-
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: [
|
|
3138
|
-
trigger('expandAnimation', [
|
|
3139
|
-
transition('true <=> false', [
|
|
3140
|
-
style({ height: '{{startHeight}}px' }),
|
|
3141
|
-
animate('0.2s ease-in-out', style({ height: '*' })),
|
|
3142
|
-
]),
|
|
3143
|
-
]),
|
|
3144
|
-
] });
|
|
3171
|
+
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)])])] });
|
|
3145
3172
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrExpandableAnimation, decorators: [{
|
|
3146
3173
|
type: Component,
|
|
3147
|
-
args: [{ selector: 'clr-expandable-animation', template: `<ng-content></ng-content>`, animations: [
|
|
3148
|
-
trigger('expandAnimation', [
|
|
3149
|
-
transition('true <=> false', [
|
|
3150
|
-
style({ height: '{{startHeight}}px' }),
|
|
3151
|
-
animate('0.2s ease-in-out', style({ height: '*' })),
|
|
3152
|
-
]),
|
|
3153
|
-
]),
|
|
3154
|
-
], providers: [DomAdapter], styles: [":host{display:block}\n"] }]
|
|
3174
|
+
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"] }]
|
|
3155
3175
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: DomAdapter }, { type: i0.Renderer2 }]; }, propDecorators: { clrExpandTrigger: [{
|
|
3156
3176
|
type: Input
|
|
3157
3177
|
}], expandAnimation: [{
|
|
@@ -3171,7 +3191,55 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
3171
3191
|
* This software is released under MIT license.
|
|
3172
3192
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
3173
3193
|
*/
|
|
3174
|
-
|
|
3194
|
+
class ClrExpandableAnimationDirective extends BaseExpandableAnimation {
|
|
3195
|
+
constructor(element, domAdapter, renderer, builder) {
|
|
3196
|
+
super(element, domAdapter, renderer);
|
|
3197
|
+
this.builder = builder;
|
|
3198
|
+
this.expanded = false;
|
|
3199
|
+
}
|
|
3200
|
+
ngOnChanges(changes) {
|
|
3201
|
+
if (changes['expanded'] && !changes['expanded'].firstChange) {
|
|
3202
|
+
Promise.resolve().then(() => this.playAnimation());
|
|
3203
|
+
}
|
|
3204
|
+
}
|
|
3205
|
+
ngOnDestroy() {
|
|
3206
|
+
this.player?.destroy();
|
|
3207
|
+
}
|
|
3208
|
+
playAnimation() {
|
|
3209
|
+
if (this.player) {
|
|
3210
|
+
this.player.destroy();
|
|
3211
|
+
}
|
|
3212
|
+
this.player = this.builder
|
|
3213
|
+
.build([useAnimation(defaultExpandAnimation, { params: { startHeight: this.startHeight } })])
|
|
3214
|
+
.create(this.element.nativeElement);
|
|
3215
|
+
this.player.onStart(() => this.initAnimationEffects());
|
|
3216
|
+
this.player.onDone(() => this.cleanupAnimationEffects(true));
|
|
3217
|
+
this.player.play();
|
|
3218
|
+
}
|
|
3219
|
+
}
|
|
3220
|
+
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 });
|
|
3221
|
+
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 });
|
|
3222
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrExpandableAnimationDirective, decorators: [{
|
|
3223
|
+
type: Directive,
|
|
3224
|
+
args: [{
|
|
3225
|
+
selector: '[clrExpandableAnimation]',
|
|
3226
|
+
providers: [DomAdapter],
|
|
3227
|
+
host: {
|
|
3228
|
+
'[class.clr-expandable-animation]': 'true',
|
|
3229
|
+
},
|
|
3230
|
+
}]
|
|
3231
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: DomAdapter }, { type: i0.Renderer2 }, { type: i2.AnimationBuilder }]; }, propDecorators: { expanded: [{
|
|
3232
|
+
type: Input,
|
|
3233
|
+
args: ['clrExpandableAnimation']
|
|
3234
|
+
}] } });
|
|
3235
|
+
|
|
3236
|
+
/*
|
|
3237
|
+
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
3238
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
3239
|
+
* This software is released under MIT license.
|
|
3240
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
3241
|
+
*/
|
|
3242
|
+
const EXPANDABLE_ANIMATION_DIRECTIVES = [ClrExpandableAnimation, ClrExpandableAnimationDirective];
|
|
3175
3243
|
|
|
3176
3244
|
/*
|
|
3177
3245
|
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
@@ -5167,7 +5235,7 @@ class Popover {
|
|
|
5167
5235
|
this._scroll = new Subject();
|
|
5168
5236
|
const anchor = e;
|
|
5169
5237
|
let current = e;
|
|
5170
|
-
while (current && current !== document) {
|
|
5238
|
+
while (current && current !== document && current.nodeType === Node.ELEMENT_NODE) {
|
|
5171
5239
|
if (this.scrolls(current)) {
|
|
5172
5240
|
current.addEventListener('scroll', this.boundOnScrollListener);
|
|
5173
5241
|
this.scrollableElements.push(current);
|
|
@@ -5494,7 +5562,7 @@ class BasicFocusableItem {
|
|
|
5494
5562
|
if (isPlatformBrowser(this.platformId)) {
|
|
5495
5563
|
this.renderer.setAttribute(this.el.nativeElement, 'tabindex', '0');
|
|
5496
5564
|
this.el.nativeElement.focus();
|
|
5497
|
-
this.el.nativeElement.scrollIntoView({ behavior: 'smooth', block: '
|
|
5565
|
+
this.el.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'nearest' });
|
|
5498
5566
|
}
|
|
5499
5567
|
}
|
|
5500
5568
|
blur() {
|
|
@@ -7546,11 +7614,14 @@ class ClrCheckbox extends WrappedFormControl {
|
|
|
7546
7614
|
}
|
|
7547
7615
|
}
|
|
7548
7616
|
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 });
|
|
7549
|
-
ClrCheckbox.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrCheckbox, selector: "[clrCheckbox],[clrToggle]", usesInheritance: true, ngImport: i0 });
|
|
7617
|
+
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 });
|
|
7550
7618
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrCheckbox, decorators: [{
|
|
7551
7619
|
type: Directive,
|
|
7552
7620
|
args: [{
|
|
7553
7621
|
selector: '[clrCheckbox],[clrToggle]',
|
|
7622
|
+
host: {
|
|
7623
|
+
'[attr.role]': 'toggle !== null ? "switch" : null',
|
|
7624
|
+
},
|
|
7554
7625
|
}]
|
|
7555
7626
|
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.Injector }, { type: i1.NgControl, decorators: [{
|
|
7556
7627
|
type: Self
|
|
@@ -9962,14 +10033,14 @@ class ClrBreadcrumbs {
|
|
|
9962
10033
|
}
|
|
9963
10034
|
}
|
|
9964
10035
|
ClrBreadcrumbs.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrBreadcrumbs, deps: [{ token: ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
9965
|
-
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" }] });
|
|
10036
|
+
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" }] });
|
|
9966
10037
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrBreadcrumbs, decorators: [{
|
|
9967
10038
|
type: Component,
|
|
9968
10039
|
args: [{ selector: 'clr-breadcrumbs', host: {
|
|
9969
10040
|
class: 'clr-breadcrumb',
|
|
9970
10041
|
'[attr.aria-label]': 'commonStrings.keys.breadcrumbsLabel',
|
|
9971
10042
|
'[attr.role]': '"navigation"',
|
|
9972
|
-
}, 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"] }]
|
|
10043
|
+
}, 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"] }]
|
|
9973
10044
|
}], ctorParameters: function () { return [{ type: ClrCommonStringsService }]; }, propDecorators: { items: [{
|
|
9974
10045
|
type: Input
|
|
9975
10046
|
}], clrBreadcrumbItemClick: [{
|
|
@@ -16189,7 +16260,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
16189
16260
|
*/
|
|
16190
16261
|
class ClrNumberInputModule {
|
|
16191
16262
|
constructor() {
|
|
16192
|
-
ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon);
|
|
16263
|
+
ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon, minusIcon, plusIcon);
|
|
16193
16264
|
}
|
|
16194
16265
|
}
|
|
16195
16266
|
ClrNumberInputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrNumberInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
@@ -17177,7 +17248,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
17177
17248
|
class ClrExpandableAnimationModule {
|
|
17178
17249
|
}
|
|
17179
17250
|
ClrExpandableAnimationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrExpandableAnimationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
17180
|
-
ClrExpandableAnimationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: ClrExpandableAnimationModule, declarations: [ClrExpandableAnimation], imports: [CommonModule], exports: [ClrExpandableAnimation] });
|
|
17251
|
+
ClrExpandableAnimationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: ClrExpandableAnimationModule, declarations: [ClrExpandableAnimation, ClrExpandableAnimationDirective], imports: [CommonModule], exports: [ClrExpandableAnimation, ClrExpandableAnimationDirective] });
|
|
17181
17252
|
ClrExpandableAnimationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrExpandableAnimationModule, imports: [CommonModule] });
|
|
17182
17253
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrExpandableAnimationModule, decorators: [{
|
|
17183
17254
|
type: NgModule,
|
|
@@ -17201,7 +17272,7 @@ class CdkDragModule_CdkDrag extends CdkDrag {
|
|
|
17201
17272
|
super(elementRef, dropContainer, document, ngZone, viewContainerRef, config, dir, dragDrop, changeDetectorRef);
|
|
17202
17273
|
}
|
|
17203
17274
|
}
|
|
17204
|
-
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 });
|
|
17275
|
+
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 });
|
|
17205
17276
|
CdkDragModule_CdkDrag.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: CdkDragModule_CdkDrag, selector: "[cdkDrag]", usesInheritance: true, ngImport: i0 });
|
|
17206
17277
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: CdkDragModule_CdkDrag, decorators: [{
|
|
17207
17278
|
type: Directive,
|
|
@@ -17223,7 +17294,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
17223
17294
|
}, {
|
|
17224
17295
|
type: Inject,
|
|
17225
17296
|
args: [CDK_DRAG_CONFIG]
|
|
17226
|
-
}] }, { type: i1$3.Directionality }, { type: i2.DragDrop }, { type: i0.ChangeDetectorRef }]; } });
|
|
17297
|
+
}] }, { type: i1$3.Directionality }, { type: i2$1.DragDrop }, { type: i0.ChangeDetectorRef }]; } });
|
|
17227
17298
|
/**
|
|
17228
17299
|
* This module allows us to avoid importing all of CdkDragDropModule which results in a smaller application bundle.
|
|
17229
17300
|
*/
|
|
@@ -17668,330 +17739,451 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
17668
17739
|
* This software is released under MIT license.
|
|
17669
17740
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
17670
17741
|
*/
|
|
17671
|
-
|
|
17672
|
-
|
|
17673
|
-
|
|
17674
|
-
'input:not([disabled])',
|
|
17675
|
-
'button:not([disabled])',
|
|
17676
|
-
'select:not([disabled])',
|
|
17677
|
-
'textarea:not([disabled])',
|
|
17678
|
-
'iframe',
|
|
17679
|
-
'object',
|
|
17680
|
-
'embed',
|
|
17681
|
-
'[contenteditable=true]',
|
|
17682
|
-
'[role=button]:not([disabled])',
|
|
17683
|
-
];
|
|
17684
|
-
function getTabbableItems(el) {
|
|
17685
|
-
const tabbableItemSelectors = [...actionableItemSelectors, '[tabindex="0"]:not([disabled])'];
|
|
17686
|
-
const tabbableSelector = tabbableItemSelectors.join(',');
|
|
17687
|
-
return Array.from(el.querySelectorAll(tabbableSelector));
|
|
17688
|
-
}
|
|
17689
|
-
function isActionableItem(el) {
|
|
17690
|
-
const actionableSelector = actionableItemSelectors.join(',');
|
|
17691
|
-
return el.matches(actionableSelector);
|
|
17692
|
-
}
|
|
17693
|
-
class KeyNavigationGridController {
|
|
17694
|
-
constructor(zone) {
|
|
17695
|
-
this.zone = zone;
|
|
17696
|
-
this.skipItemFocus = false;
|
|
17697
|
-
this.listenersAdded = false;
|
|
17698
|
-
this.destroy$ = new Subject();
|
|
17699
|
-
this._activeCell = null;
|
|
17700
|
-
this.config = {
|
|
17701
|
-
keyGridRows: '[role=row]:not(.datagrid-placeholder):not([style*="display: none"])',
|
|
17702
|
-
keyGridCells: '[role=gridcell]:not(.datagrid-hidden-column):not(.datagrid-placeholder-content), [role=columnheader]:not(.datagrid-hidden-column):not(.datagrid-placeholder-content), .datagrid-detail-caret',
|
|
17703
|
-
keyGrid: '[role=grid]',
|
|
17704
|
-
};
|
|
17705
|
-
}
|
|
17706
|
-
get grid() {
|
|
17707
|
-
return this.host?.querySelector(this.config.keyGrid);
|
|
17708
|
-
}
|
|
17709
|
-
get rows() {
|
|
17710
|
-
return this.host?.querySelectorAll(this.config.keyGridRows);
|
|
17711
|
-
}
|
|
17712
|
-
get cells() {
|
|
17713
|
-
return this.host?.querySelectorAll(this.config.keyGridCells);
|
|
17714
|
-
}
|
|
17715
|
-
ngOnDestroy() {
|
|
17716
|
-
this.destroy$.next();
|
|
17717
|
-
this.destroy$.complete();
|
|
17718
|
-
}
|
|
17719
|
-
addListeners() {
|
|
17720
|
-
if (this.listenersAdded) {
|
|
17721
|
-
return;
|
|
17722
|
-
}
|
|
17723
|
-
this.zone.runOutsideAngular(() => {
|
|
17724
|
-
fromEvent(this.grid, 'mousedown')
|
|
17725
|
-
.pipe(takeUntil(this.destroy$))
|
|
17726
|
-
.subscribe((e) => {
|
|
17727
|
-
// 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
|
|
17728
|
-
if (e.buttons === 1 && !e.ctrlKey) {
|
|
17729
|
-
const activeCell = this.cells
|
|
17730
|
-
? Array.from(this.cells).find(c => c === e.target || c === e.target.closest(this.config.keyGridCells))
|
|
17731
|
-
: null;
|
|
17732
|
-
if (activeCell) {
|
|
17733
|
-
this.setActiveCell(activeCell, { keepFocus: isActionableItem(e.target) });
|
|
17734
|
-
}
|
|
17735
|
-
}
|
|
17736
|
-
});
|
|
17737
|
-
fromEvent(this.grid, 'wheel')
|
|
17738
|
-
.pipe(takeUntil(this.destroy$))
|
|
17739
|
-
.subscribe(() => {
|
|
17740
|
-
this.removeActiveCell();
|
|
17741
|
-
});
|
|
17742
|
-
fromEvent(this.grid, 'focusout')
|
|
17743
|
-
.pipe(debounceTime(0), takeUntil(this.destroy$))
|
|
17744
|
-
.subscribe(() => {
|
|
17745
|
-
if (this.grid.contains(document.activeElement)) {
|
|
17746
|
-
return;
|
|
17747
|
-
}
|
|
17748
|
-
this.removeActiveCell();
|
|
17749
|
-
});
|
|
17750
|
-
fromEvent(this.grid, 'keydown')
|
|
17751
|
-
.pipe(takeUntil(this.destroy$))
|
|
17752
|
-
.subscribe((e) => {
|
|
17753
|
-
// Skip column resize events
|
|
17754
|
-
if (e.target.classList.contains('drag-handle') &&
|
|
17755
|
-
(e.key === Keys.ArrowLeft || e.key === Keys.ArrowRight)) {
|
|
17756
|
-
return;
|
|
17757
|
-
}
|
|
17758
|
-
if (e.key === Keys.ArrowUp ||
|
|
17759
|
-
e.key === Keys.ArrowDown ||
|
|
17760
|
-
e.key === Keys.ArrowLeft ||
|
|
17761
|
-
e.key === Keys.ArrowRight ||
|
|
17762
|
-
e.key === Keys.End ||
|
|
17763
|
-
e.key === Keys.Home ||
|
|
17764
|
-
e.key === Keys.PageUp ||
|
|
17765
|
-
e.key === Keys.PageDown) {
|
|
17766
|
-
const currentCellCoords = this.getCurrentCellCoordinates();
|
|
17767
|
-
const nextCellCoords = this.isExpandedRow(currentCellCoords.y) || this.isDetailsRow(currentCellCoords.y)
|
|
17768
|
-
? this.getNextForExpandedRowCoordinate(e, currentCellCoords)
|
|
17769
|
-
: this.getNextItemCoordinate(e, currentCellCoords);
|
|
17770
|
-
const activeItem = this.rows
|
|
17771
|
-
? Array.from(this.getCellsForRow(nextCellCoords.y))[nextCellCoords.x]
|
|
17772
|
-
: null;
|
|
17773
|
-
if (activeItem) {
|
|
17774
|
-
this.setActiveCell(activeItem);
|
|
17775
|
-
}
|
|
17776
|
-
e.preventDefault();
|
|
17777
|
-
}
|
|
17778
|
-
});
|
|
17779
|
-
});
|
|
17780
|
-
this.listenersAdded = true;
|
|
17781
|
-
}
|
|
17782
|
-
initializeKeyGrid(host) {
|
|
17783
|
-
this.host = host;
|
|
17784
|
-
this.addListeners();
|
|
17785
|
-
this.resetKeyGrid();
|
|
17786
|
-
}
|
|
17787
|
-
resetKeyGrid() {
|
|
17788
|
-
this.cells?.forEach((i) => i.setAttribute('tabindex', '-1'));
|
|
17789
|
-
const firstCell = this.cells ? this.cells[0] : null;
|
|
17790
|
-
firstCell?.setAttribute('tabindex', '0');
|
|
17791
|
-
}
|
|
17792
|
-
removeActiveCell() {
|
|
17793
|
-
this._activeCell = null;
|
|
17794
|
-
}
|
|
17795
|
-
getActiveCell() {
|
|
17796
|
-
return this._activeCell;
|
|
17797
|
-
}
|
|
17798
|
-
setActiveCell(activeCell, { keepFocus } = { keepFocus: false }) {
|
|
17799
|
-
const prior = this.cells ? Array.from(this.cells).find(c => c.getAttribute('tabindex') === '0') : null;
|
|
17800
|
-
if (prior) {
|
|
17801
|
-
prior.setAttribute('tabindex', '-1');
|
|
17802
|
-
}
|
|
17803
|
-
activeCell.setAttribute('tabindex', '0');
|
|
17804
|
-
this._activeCell = activeCell;
|
|
17805
|
-
if (!this.skipItemFocus && !keepFocus) {
|
|
17806
|
-
let elementToFocus;
|
|
17807
|
-
if (activeCell.getAttribute('role') === 'columnheader') {
|
|
17808
|
-
elementToFocus = activeCell;
|
|
17809
|
-
}
|
|
17810
|
-
else {
|
|
17811
|
-
const tabbableElements = getTabbableItems(activeCell);
|
|
17812
|
-
elementToFocus = tabbableElements.length ? tabbableElements[0] : activeCell;
|
|
17813
|
-
}
|
|
17814
|
-
elementToFocus.focus();
|
|
17815
|
-
}
|
|
17742
|
+
class DefaultKeyNavigationStrategy {
|
|
17743
|
+
constructor(utils) {
|
|
17744
|
+
this.utils = utils;
|
|
17816
17745
|
}
|
|
17817
|
-
|
|
17818
|
-
|
|
17819
|
-
|
|
17746
|
+
keyUp(currentCellCoords) {
|
|
17747
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
17748
|
+
if (currentCellCoords.y === 0) {
|
|
17749
|
+
return nextCellCoords;
|
|
17820
17750
|
}
|
|
17821
|
-
|
|
17822
|
-
|
|
17823
|
-
|
|
17824
|
-
|
|
17751
|
+
nextCellCoords.y = currentCellCoords.y - 1;
|
|
17752
|
+
const isActionCell = this.utils.isActionCell(currentCellCoords);
|
|
17753
|
+
if (this.utils.isSingleCellExpandedRow(nextCellCoords.y) &&
|
|
17754
|
+
!isActionCell &&
|
|
17755
|
+
this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
17756
|
+
nextCellCoords.x = 0;
|
|
17825
17757
|
}
|
|
17826
|
-
|
|
17827
|
-
|
|
17828
|
-
if (e.key === Keys.ArrowUp && currentCellCoords.y !== 0) {
|
|
17829
|
-
nextCellCoords.y = currentCellCoords.y - 1;
|
|
17830
|
-
if (isSingleCellExpandedRow && !isActionCell) {
|
|
17831
|
-
if (this.isRowReplaced(currentCellCoords.y)) {
|
|
17832
|
-
nextCellCoords.y = nextCellCoords.y - 1;
|
|
17833
|
-
}
|
|
17834
|
-
if (this.isDetailsRow(nextCellCoords.y)) {
|
|
17835
|
-
nextCellCoords.x = 0;
|
|
17836
|
-
}
|
|
17837
|
-
else if (this.isDetailsRow(currentCellCoords.y) === false) {
|
|
17838
|
-
// false check is intentional, the ! operator may be missed easily in this case
|
|
17839
|
-
nextCellCoords.x = currentCellCoords.x;
|
|
17840
|
-
}
|
|
17841
|
-
else {
|
|
17842
|
-
nextCellCoords.x = this.actionCellCount(nextCellCoords.y);
|
|
17843
|
-
}
|
|
17844
|
-
return nextCellCoords;
|
|
17845
|
-
}
|
|
17846
|
-
if (isActionCell && this.isDetailsRow(nextCellCoords.y)) {
|
|
17758
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
17759
|
+
if (isActionCell) {
|
|
17847
17760
|
nextCellCoords.y = nextCellCoords.y - 1;
|
|
17848
17761
|
}
|
|
17849
|
-
else if (this.isRowReplaced(nextCellCoords.y)) {
|
|
17850
|
-
nextCellCoords.y = nextCellCoords.y - 1;
|
|
17851
|
-
if (!this.isDetailsRow(nextCellCoords.y)) {
|
|
17852
|
-
nextCellCoords.x = currentCellCoords.x + this.actionCellCount(nextCellCoords.y);
|
|
17853
|
-
}
|
|
17854
|
-
}
|
|
17855
|
-
else if (this.isDetailsRow(currentCellCoords.y) && !this.isDetailsRow(nextCellCoords.y)) {
|
|
17856
|
-
nextCellCoords.x = currentCellCoords.x + this.actionCellCount(nextCellCoords.y);
|
|
17857
|
-
}
|
|
17858
|
-
else if (!isActionCell && this.isDetailsRow(nextCellCoords.y)) {
|
|
17859
|
-
nextCellCoords.x = currentCellCoords.x - this.actionCellCount(currentCellCoords.y);
|
|
17860
|
-
}
|
|
17861
|
-
}
|
|
17862
|
-
else if (e.key === Keys.ArrowDown && currentCellCoords.y < numOfRows) {
|
|
17863
|
-
nextCellCoords.y = currentCellCoords.y + 1;
|
|
17864
|
-
if (isSingleCellExpandedRow && !isActionCell) {
|
|
17865
|
-
if (this.isRowReplaced(nextCellCoords.y)) {
|
|
17866
|
-
nextCellCoords.y = nextCellCoords.y + 1;
|
|
17867
|
-
}
|
|
17868
|
-
if (this.isDetailsRow(nextCellCoords.y)) {
|
|
17869
|
-
nextCellCoords.x = 0;
|
|
17870
|
-
}
|
|
17871
|
-
else {
|
|
17872
|
-
nextCellCoords.x = this.actionCellCount(nextCellCoords.y);
|
|
17873
|
-
}
|
|
17874
|
-
return nextCellCoords;
|
|
17875
|
-
}
|
|
17876
|
-
if (isActionCell || this.isRowReplaced(nextCellCoords.y)) {
|
|
17877
|
-
nextCellCoords.y = nextCellCoords.y + 1;
|
|
17878
|
-
}
|
|
17879
|
-
else if (this.getCellsForRow(currentCellCoords.y).length > numOfColumns) {
|
|
17880
|
-
nextCellCoords.x = currentCellCoords.x - this.actionCellCount(currentCellCoords.y);
|
|
17881
|
-
}
|
|
17882
17762
|
else {
|
|
17883
|
-
nextCellCoords.x =
|
|
17763
|
+
nextCellCoords.x = nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
17884
17764
|
}
|
|
17885
17765
|
}
|
|
17886
|
-
|
|
17887
|
-
|
|
17888
|
-
|
|
17889
|
-
|
|
17890
|
-
|
|
17891
|
-
|
|
17892
|
-
|
|
17893
|
-
}
|
|
17766
|
+
return nextCellCoords;
|
|
17767
|
+
}
|
|
17768
|
+
keyDown(currentCellCoords) {
|
|
17769
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
17770
|
+
const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;
|
|
17771
|
+
if (currentCellCoords.y >= numOfRows) {
|
|
17772
|
+
return nextCellCoords;
|
|
17894
17773
|
}
|
|
17895
|
-
|
|
17896
|
-
|
|
17897
|
-
|
|
17898
|
-
|
|
17899
|
-
|
|
17900
|
-
|
|
17901
|
-
nextCellCoords.x
|
|
17902
|
-
}
|
|
17903
|
-
else {
|
|
17904
|
-
nextCellCoords.x = currentCellCoords.x + 1;
|
|
17905
|
-
}
|
|
17774
|
+
const isActionCell = this.utils.isActionCell(currentCellCoords);
|
|
17775
|
+
nextCellCoords.y = currentCellCoords.y + 1;
|
|
17776
|
+
if (!isActionCell && this.utils.isRowReplaced(nextCellCoords.y)) {
|
|
17777
|
+
nextCellCoords.y = nextCellCoords.y + 1;
|
|
17778
|
+
nextCellCoords.x = this.utils.isSingleCellExpandedRow(nextCellCoords.y)
|
|
17779
|
+
? 0
|
|
17780
|
+
: nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
17906
17781
|
}
|
|
17907
|
-
|
|
17908
|
-
|
|
17909
|
-
|
|
17910
|
-
|
|
17911
|
-
|
|
17912
|
-
|
|
17782
|
+
return nextCellCoords;
|
|
17783
|
+
}
|
|
17784
|
+
keyLeft(currentCellCoords) {
|
|
17785
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
17786
|
+
if (currentCellCoords.x === 0) {
|
|
17787
|
+
return nextCellCoords;
|
|
17913
17788
|
}
|
|
17914
|
-
|
|
17915
|
-
|
|
17916
|
-
|
|
17917
|
-
|
|
17918
|
-
|
|
17789
|
+
nextCellCoords.x = currentCellCoords.x - 1;
|
|
17790
|
+
return nextCellCoords;
|
|
17791
|
+
}
|
|
17792
|
+
keyRight(currentCellCoords) {
|
|
17793
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
17794
|
+
// calculate numOfColumns based on header cells.
|
|
17795
|
+
const numOfColumns = this.utils.rows?.length - 1 ? this.utils.getCellsForRow(0).length - 1 : 0;
|
|
17796
|
+
nextCellCoords.x = currentCellCoords.x < numOfColumns ? nextCellCoords.x + 1 : nextCellCoords.x;
|
|
17797
|
+
return nextCellCoords;
|
|
17798
|
+
}
|
|
17799
|
+
keyEnd(currentCellCoords, ctrlKey) {
|
|
17800
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
17801
|
+
const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;
|
|
17802
|
+
// calculate X based on header cells.
|
|
17803
|
+
nextCellCoords.x = numOfRows ? this.utils.getCellsForRow(0).length - 1 : 0;
|
|
17804
|
+
if (ctrlKey) {
|
|
17805
|
+
nextCellCoords.y = numOfRows;
|
|
17806
|
+
if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
17807
|
+
nextCellCoords.x = this.utils.getCellsForRow(nextCellCoords.y).length - 1;
|
|
17919
17808
|
}
|
|
17920
17809
|
}
|
|
17921
17810
|
return nextCellCoords;
|
|
17922
17811
|
}
|
|
17923
|
-
|
|
17924
|
-
const
|
|
17925
|
-
|
|
17926
|
-
|
|
17927
|
-
|
|
17928
|
-
nextCellCoords.x = 0;
|
|
17929
|
-
return nextCellCoords;
|
|
17930
|
-
}
|
|
17931
|
-
if (this.isDetailsRow(nextCellCoords.y)) {
|
|
17932
|
-
if (isActionCell) {
|
|
17933
|
-
nextCellCoords.y = nextCellCoords.y - 1;
|
|
17934
|
-
}
|
|
17935
|
-
else {
|
|
17936
|
-
nextCellCoords.x = nextCellCoords.x - this.actionCellCount(currentCellCoords.y);
|
|
17937
|
-
}
|
|
17938
|
-
}
|
|
17812
|
+
keyHome(currentCellCoords, ctrlKey) {
|
|
17813
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
17814
|
+
nextCellCoords.x = 0;
|
|
17815
|
+
if (ctrlKey) {
|
|
17816
|
+
nextCellCoords.y = 0;
|
|
17939
17817
|
}
|
|
17940
|
-
|
|
17941
|
-
|
|
17942
|
-
|
|
17943
|
-
|
|
17944
|
-
|
|
17945
|
-
|
|
17946
|
-
|
|
17947
|
-
if (
|
|
17818
|
+
return nextCellCoords;
|
|
17819
|
+
}
|
|
17820
|
+
keyPageUp(currentCellCoords) {
|
|
17821
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
17822
|
+
const itemsPerPage = this.utils.itemsPerPage;
|
|
17823
|
+
nextCellCoords.y = currentCellCoords.y - itemsPerPage > 0 ? currentCellCoords.y - itemsPerPage + 1 : 1;
|
|
17824
|
+
if (!this.utils.isActionCell(currentCellCoords)) {
|
|
17825
|
+
if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
17826
|
+
nextCellCoords.x = this.utils.isSingleCellExpandedRow(nextCellCoords.y)
|
|
17827
|
+
? 0
|
|
17828
|
+
: nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
17829
|
+
}
|
|
17830
|
+
else if (this.utils.isRowReplaced(nextCellCoords.y)) {
|
|
17948
17831
|
nextCellCoords.y = nextCellCoords.y + 1;
|
|
17949
|
-
nextCellCoords.x =
|
|
17832
|
+
nextCellCoords.x = this.utils.isSingleCellExpandedRow(nextCellCoords.y)
|
|
17833
|
+
? 0
|
|
17834
|
+
: nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
17950
17835
|
}
|
|
17951
17836
|
}
|
|
17952
|
-
else
|
|
17953
|
-
nextCellCoords.
|
|
17954
|
-
|
|
17955
|
-
else if (e.key === inlineEnd && currentCellCoords.x < numOfColumns) {
|
|
17956
|
-
nextCellCoords.x = currentCellCoords.x + 1;
|
|
17957
|
-
}
|
|
17958
|
-
else if (e.key === Keys.End) {
|
|
17959
|
-
nextCellCoords.x = numOfColumns;
|
|
17960
|
-
if (e.ctrlKey) {
|
|
17961
|
-
nextCellCoords.y = numOfRows;
|
|
17837
|
+
else {
|
|
17838
|
+
if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
17839
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
17962
17840
|
}
|
|
17963
17841
|
}
|
|
17964
|
-
|
|
17842
|
+
return nextCellCoords;
|
|
17843
|
+
}
|
|
17844
|
+
keyPageDown(currentCellCoords) {
|
|
17845
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
17846
|
+
const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;
|
|
17847
|
+
const itemsPerPage = this.utils.itemsPerPage;
|
|
17848
|
+
nextCellCoords.y = currentCellCoords.y + itemsPerPage >= numOfRows ? numOfRows : currentCellCoords.y + itemsPerPage;
|
|
17849
|
+
if (this.utils.isActionCell(currentCellCoords) && this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
17850
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
17851
|
+
}
|
|
17852
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y) && this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {
|
|
17965
17853
|
nextCellCoords.x = 0;
|
|
17966
|
-
if (e.ctrlKey) {
|
|
17967
|
-
nextCellCoords.y = 0;
|
|
17968
|
-
}
|
|
17969
17854
|
}
|
|
17970
|
-
else if (
|
|
17971
|
-
nextCellCoords.
|
|
17855
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
17856
|
+
nextCellCoords.x = nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
17972
17857
|
}
|
|
17973
|
-
else if (
|
|
17974
|
-
nextCellCoords.y =
|
|
17975
|
-
|
|
17858
|
+
else if (this.utils.isRowReplaced(nextCellCoords.y)) {
|
|
17859
|
+
nextCellCoords.y = nextCellCoords.y + 1;
|
|
17860
|
+
nextCellCoords.x = this.utils.isSingleCellExpandedRow(nextCellCoords.y)
|
|
17861
|
+
? 0
|
|
17862
|
+
: nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
17976
17863
|
}
|
|
17977
17864
|
return nextCellCoords;
|
|
17978
17865
|
}
|
|
17979
|
-
|
|
17980
|
-
|
|
17981
|
-
|
|
17982
|
-
|
|
17983
|
-
|
|
17984
|
-
|
|
17985
|
-
|
|
17986
|
-
|
|
17987
|
-
|
|
17988
|
-
|
|
17989
|
-
|
|
17990
|
-
|
|
17991
|
-
|
|
17992
|
-
|
|
17866
|
+
}
|
|
17867
|
+
|
|
17868
|
+
/*
|
|
17869
|
+
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
17870
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
17871
|
+
* This software is released under MIT license.
|
|
17872
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
17873
|
+
*/
|
|
17874
|
+
class ExpandedRowKeyNavigationStrategy extends DefaultKeyNavigationStrategy {
|
|
17875
|
+
constructor(utils) {
|
|
17876
|
+
super(utils);
|
|
17877
|
+
}
|
|
17878
|
+
keyUp(currentCellCoords) {
|
|
17879
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
17880
|
+
if (currentCellCoords.y === 0) {
|
|
17881
|
+
return nextCellCoords;
|
|
17882
|
+
}
|
|
17883
|
+
nextCellCoords.y = currentCellCoords.y - 1;
|
|
17884
|
+
if (!this.utils.isActionCell(currentCellCoords)) {
|
|
17885
|
+
if (this.utils.isRowReplaced(currentCellCoords.y)) {
|
|
17886
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
17887
|
+
}
|
|
17888
|
+
switch (true) {
|
|
17889
|
+
case this.utils.isDetailsRow(nextCellCoords.y):
|
|
17890
|
+
nextCellCoords.x = 0;
|
|
17891
|
+
break;
|
|
17892
|
+
case this.utils.isDetailsRow(currentCellCoords.y) === false:
|
|
17893
|
+
nextCellCoords.x = currentCellCoords.x;
|
|
17894
|
+
break;
|
|
17895
|
+
default:
|
|
17896
|
+
nextCellCoords.x = this.utils.actionCellCount(nextCellCoords.y);
|
|
17897
|
+
}
|
|
17898
|
+
}
|
|
17899
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y) && nextCellCoords.y > 0) {
|
|
17900
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
17901
|
+
}
|
|
17902
|
+
return nextCellCoords;
|
|
17903
|
+
}
|
|
17904
|
+
keyDown(currentCellCoords) {
|
|
17905
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
17906
|
+
const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;
|
|
17907
|
+
if (currentCellCoords.y >= numOfRows) {
|
|
17908
|
+
return nextCellCoords;
|
|
17909
|
+
}
|
|
17910
|
+
nextCellCoords.y = currentCellCoords.y + 1;
|
|
17911
|
+
if (!this.utils.isActionCell(currentCellCoords)) {
|
|
17912
|
+
if (this.utils.isRowReplaced(nextCellCoords.y)) {
|
|
17913
|
+
nextCellCoords.y = nextCellCoords.y + 1;
|
|
17914
|
+
}
|
|
17915
|
+
if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
17916
|
+
nextCellCoords.x = 0;
|
|
17917
|
+
}
|
|
17918
|
+
else {
|
|
17919
|
+
nextCellCoords.x = this.utils.actionCellCount(nextCellCoords.y);
|
|
17920
|
+
}
|
|
17921
|
+
}
|
|
17922
|
+
else {
|
|
17923
|
+
nextCellCoords.y = nextCellCoords.y < numOfRows ? nextCellCoords.y + 1 : nextCellCoords.y;
|
|
17924
|
+
}
|
|
17925
|
+
return nextCellCoords;
|
|
17926
|
+
}
|
|
17927
|
+
keyLeft(currentCellCoords) {
|
|
17928
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
17929
|
+
if (!this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isRowReplaced(currentCellCoords.y)) {
|
|
17930
|
+
return super.keyLeft(currentCellCoords);
|
|
17931
|
+
}
|
|
17932
|
+
if (currentCellCoords.x !== 0) {
|
|
17933
|
+
nextCellCoords.x = currentCellCoords.x - 1;
|
|
17934
|
+
}
|
|
17935
|
+
else if (!this.utils.isActionCell(currentCellCoords)) {
|
|
17936
|
+
nextCellCoords.y = currentCellCoords.y - 1;
|
|
17937
|
+
nextCellCoords.x = this.utils.actionCellCount(nextCellCoords.y) - 1;
|
|
17938
|
+
}
|
|
17939
|
+
return nextCellCoords;
|
|
17940
|
+
}
|
|
17941
|
+
keyRight(currentCellCoords) {
|
|
17942
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
17943
|
+
if (!this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isRowReplaced(currentCellCoords.y)) {
|
|
17944
|
+
return super.keyRight(currentCellCoords);
|
|
17945
|
+
}
|
|
17946
|
+
// calculate numOfColumns based on header cells.
|
|
17947
|
+
const numOfColumns = this.utils.rows?.length - 1 ? this.utils.getCellsForRow(0).length - 1 : 0;
|
|
17948
|
+
if (currentCellCoords.x >= numOfColumns) {
|
|
17949
|
+
return nextCellCoords;
|
|
17950
|
+
}
|
|
17951
|
+
if (this.utils.isActionCell(currentCellCoords) &&
|
|
17952
|
+
currentCellCoords.x === this.utils.actionCellCount(currentCellCoords.x) - 1 &&
|
|
17953
|
+
this.utils.isRowReplaced(currentCellCoords.y) &&
|
|
17954
|
+
!this.utils.isDetailsRow(currentCellCoords.y)) {
|
|
17955
|
+
nextCellCoords.y = currentCellCoords.y + 1;
|
|
17956
|
+
nextCellCoords.x = 0;
|
|
17957
|
+
}
|
|
17958
|
+
else {
|
|
17959
|
+
nextCellCoords.x = currentCellCoords.x + 1;
|
|
17960
|
+
}
|
|
17961
|
+
return nextCellCoords;
|
|
17962
|
+
}
|
|
17963
|
+
keyEnd(currentCellCoords, ctrlKey) {
|
|
17964
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
17965
|
+
if ((!this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isRowReplaced(currentCellCoords.y)) || ctrlKey) {
|
|
17966
|
+
return super.keyEnd(currentCellCoords, ctrlKey);
|
|
17967
|
+
}
|
|
17968
|
+
nextCellCoords.x = this.utils.getCellsForRow(currentCellCoords.y).length - 1;
|
|
17969
|
+
return nextCellCoords;
|
|
17970
|
+
}
|
|
17971
|
+
keyHome(currentCellCoords, ctrlKey) {
|
|
17972
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
17973
|
+
if (!this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isRowReplaced(currentCellCoords.y)) {
|
|
17974
|
+
return super.keyHome(currentCellCoords, ctrlKey);
|
|
17975
|
+
}
|
|
17976
|
+
nextCellCoords.x = 0;
|
|
17977
|
+
nextCellCoords.y = currentCellCoords.y - 1;
|
|
17978
|
+
if (ctrlKey) {
|
|
17979
|
+
nextCellCoords.y = 0;
|
|
17980
|
+
}
|
|
17981
|
+
return nextCellCoords;
|
|
17982
|
+
}
|
|
17983
|
+
keyPageUp(currentCellCoords) {
|
|
17984
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
17985
|
+
const itemsPerPage = this.utils.itemsPerPage;
|
|
17986
|
+
nextCellCoords.y = currentCellCoords.y - itemsPerPage > 0 ? currentCellCoords.y - itemsPerPage + 1 : 1;
|
|
17987
|
+
if (!this.utils.isActionCell(currentCellCoords)) {
|
|
17988
|
+
if (this.utils.isRowReplaced(nextCellCoords.y)) {
|
|
17989
|
+
if (!this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
17990
|
+
nextCellCoords.y = nextCellCoords.y + 1;
|
|
17991
|
+
nextCellCoords.x = 0;
|
|
17992
|
+
}
|
|
17993
|
+
}
|
|
17994
|
+
else if (!this.utils.isDetailsRow(currentCellCoords.y)) {
|
|
17995
|
+
if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
17996
|
+
nextCellCoords.x = 0;
|
|
17997
|
+
}
|
|
17998
|
+
}
|
|
17999
|
+
else if (this.utils.isDetailsRow(currentCellCoords.y)) {
|
|
18000
|
+
if (!this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18001
|
+
nextCellCoords.x = this.utils.actionCellCount(nextCellCoords.y);
|
|
18002
|
+
}
|
|
18003
|
+
}
|
|
18004
|
+
}
|
|
18005
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18006
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
18007
|
+
}
|
|
18008
|
+
return nextCellCoords;
|
|
18009
|
+
}
|
|
18010
|
+
keyPageDown(currentCellCoords) {
|
|
18011
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18012
|
+
const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;
|
|
18013
|
+
const itemsPerPage = this.utils.itemsPerPage;
|
|
18014
|
+
nextCellCoords.y = currentCellCoords.y + itemsPerPage >= numOfRows ? numOfRows : currentCellCoords.y + itemsPerPage;
|
|
18015
|
+
if (!this.utils.isActionCell(currentCellCoords)) {
|
|
18016
|
+
if (this.utils.isRowReplaced(nextCellCoords.y)) {
|
|
18017
|
+
if (nextCellCoords.y < numOfRows && !this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18018
|
+
nextCellCoords.y = nextCellCoords.y + 1;
|
|
18019
|
+
}
|
|
18020
|
+
}
|
|
18021
|
+
else if (this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18022
|
+
nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);
|
|
18023
|
+
}
|
|
18024
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18025
|
+
nextCellCoords.x = 0;
|
|
18026
|
+
}
|
|
18027
|
+
}
|
|
18028
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18029
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
18030
|
+
}
|
|
18031
|
+
return nextCellCoords;
|
|
18032
|
+
}
|
|
18033
|
+
}
|
|
18034
|
+
|
|
18035
|
+
/*
|
|
18036
|
+
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
18037
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
18038
|
+
* This software is released under MIT license.
|
|
18039
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18040
|
+
*/
|
|
18041
|
+
class ExpandedColumnsRowKeyNavigationStrategy extends ExpandedRowKeyNavigationStrategy {
|
|
18042
|
+
constructor(utils) {
|
|
18043
|
+
super(utils);
|
|
17993
18044
|
}
|
|
17994
|
-
|
|
18045
|
+
keyUp(currentCellCoords) {
|
|
18046
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18047
|
+
if (currentCellCoords.y === 0) {
|
|
18048
|
+
return nextCellCoords;
|
|
18049
|
+
}
|
|
18050
|
+
nextCellCoords.y = currentCellCoords.y - 1;
|
|
18051
|
+
if (this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {
|
|
18052
|
+
return super.keyUp(currentCellCoords);
|
|
18053
|
+
}
|
|
18054
|
+
const isActionCell = this.utils.isActionCell(currentCellCoords);
|
|
18055
|
+
if (isActionCell && this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18056
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
18057
|
+
}
|
|
18058
|
+
else if (this.utils.isRowReplaced(nextCellCoords.y)) {
|
|
18059
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
18060
|
+
if (!this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18061
|
+
nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);
|
|
18062
|
+
}
|
|
18063
|
+
}
|
|
18064
|
+
else if (this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18065
|
+
nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);
|
|
18066
|
+
}
|
|
18067
|
+
else if (!isActionCell && this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18068
|
+
nextCellCoords.x = currentCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
18069
|
+
}
|
|
18070
|
+
return nextCellCoords;
|
|
18071
|
+
}
|
|
18072
|
+
keyDown(currentCellCoords) {
|
|
18073
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18074
|
+
const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;
|
|
18075
|
+
const numOfColumns = numOfRows ? this.utils.getCellsForRow(0).length - 1 : 0;
|
|
18076
|
+
if (currentCellCoords.y >= numOfRows) {
|
|
18077
|
+
return nextCellCoords;
|
|
18078
|
+
}
|
|
18079
|
+
nextCellCoords.y = currentCellCoords.y + 1;
|
|
18080
|
+
if (this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {
|
|
18081
|
+
return super.keyDown(currentCellCoords);
|
|
18082
|
+
}
|
|
18083
|
+
if (!this.utils.isActionCell(currentCellCoords)) {
|
|
18084
|
+
if (this.utils.isRowReplaced(nextCellCoords.y)) {
|
|
18085
|
+
nextCellCoords.y = nextCellCoords.y < numOfRows ? nextCellCoords.y + 1 : nextCellCoords.y - 1;
|
|
18086
|
+
}
|
|
18087
|
+
else if (this.utils.getCellsForRow(currentCellCoords.y).length > numOfColumns) {
|
|
18088
|
+
nextCellCoords.x = currentCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
18089
|
+
}
|
|
18090
|
+
else {
|
|
18091
|
+
nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);
|
|
18092
|
+
}
|
|
18093
|
+
}
|
|
18094
|
+
else {
|
|
18095
|
+
nextCellCoords.y = nextCellCoords.y < numOfRows ? nextCellCoords.y + 1 : nextCellCoords.y - 1;
|
|
18096
|
+
}
|
|
18097
|
+
return nextCellCoords;
|
|
18098
|
+
}
|
|
18099
|
+
keyLeft(currentCellCoords) {
|
|
18100
|
+
return super.keyLeft(currentCellCoords);
|
|
18101
|
+
}
|
|
18102
|
+
keyRight(currentCellCoords) {
|
|
18103
|
+
return super.keyRight(currentCellCoords);
|
|
18104
|
+
}
|
|
18105
|
+
keyEnd(currentCellCoords, ctrlKey) {
|
|
18106
|
+
return super.keyEnd(currentCellCoords, ctrlKey);
|
|
18107
|
+
}
|
|
18108
|
+
keyHome(currentCellCoords, ctrlKey) {
|
|
18109
|
+
return super.keyHome(currentCellCoords, ctrlKey);
|
|
18110
|
+
}
|
|
18111
|
+
keyPageUp(currentCellCoords) {
|
|
18112
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18113
|
+
const itemsPerPage = this.utils.itemsPerPage;
|
|
18114
|
+
nextCellCoords.y = currentCellCoords.y - itemsPerPage > 0 ? currentCellCoords.y - itemsPerPage + 1 : 1;
|
|
18115
|
+
if (this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {
|
|
18116
|
+
return super.keyPageUp(currentCellCoords);
|
|
18117
|
+
}
|
|
18118
|
+
if (!this.utils.isActionCell(currentCellCoords)) {
|
|
18119
|
+
if (this.utils.isRowReplaced(nextCellCoords.y)) {
|
|
18120
|
+
if (!this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18121
|
+
nextCellCoords.y = nextCellCoords.y + 1;
|
|
18122
|
+
nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);
|
|
18123
|
+
}
|
|
18124
|
+
}
|
|
18125
|
+
else if (this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18126
|
+
nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);
|
|
18127
|
+
}
|
|
18128
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18129
|
+
nextCellCoords.x = currentCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
18130
|
+
}
|
|
18131
|
+
}
|
|
18132
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18133
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
18134
|
+
}
|
|
18135
|
+
return nextCellCoords;
|
|
18136
|
+
}
|
|
18137
|
+
keyPageDown(currentCellCoords) {
|
|
18138
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18139
|
+
const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;
|
|
18140
|
+
const itemsPerPage = this.utils.itemsPerPage;
|
|
18141
|
+
nextCellCoords.y = currentCellCoords.y + itemsPerPage >= numOfRows ? numOfRows : currentCellCoords.y + itemsPerPage;
|
|
18142
|
+
if (this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {
|
|
18143
|
+
return super.keyPageDown(currentCellCoords);
|
|
18144
|
+
}
|
|
18145
|
+
if (!this.utils.isActionCell(currentCellCoords)) {
|
|
18146
|
+
if (this.utils.isRowReplaced(nextCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18147
|
+
if (nextCellCoords.y < numOfRows) {
|
|
18148
|
+
nextCellCoords.y = nextCellCoords.y + 1;
|
|
18149
|
+
nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);
|
|
18150
|
+
}
|
|
18151
|
+
}
|
|
18152
|
+
else if (this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18153
|
+
nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);
|
|
18154
|
+
}
|
|
18155
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18156
|
+
nextCellCoords.x = currentCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
18157
|
+
}
|
|
18158
|
+
}
|
|
18159
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18160
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
18161
|
+
}
|
|
18162
|
+
return nextCellCoords;
|
|
18163
|
+
}
|
|
18164
|
+
}
|
|
18165
|
+
|
|
18166
|
+
/*
|
|
18167
|
+
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
18168
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
18169
|
+
* This software is released under MIT license.
|
|
18170
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18171
|
+
*/
|
|
18172
|
+
class KeyNavigationUtils {
|
|
18173
|
+
constructor(host, config) {
|
|
18174
|
+
this.host = host;
|
|
18175
|
+
this.config = config;
|
|
18176
|
+
}
|
|
18177
|
+
get grid() {
|
|
18178
|
+
return this.host?.querySelector(this.config.keyGrid);
|
|
18179
|
+
}
|
|
18180
|
+
get rows() {
|
|
18181
|
+
return this.host?.querySelectorAll(this.config.keyGridRows);
|
|
18182
|
+
}
|
|
18183
|
+
get cells() {
|
|
18184
|
+
return this.host?.querySelectorAll(this.config.keyGridCells);
|
|
18185
|
+
}
|
|
18186
|
+
get currentCellCoordinates() {
|
|
17995
18187
|
const currentCell = this.cells ? Array.from(this.cells).find(i => i.getAttribute('tabindex') === '0') : null;
|
|
17996
18188
|
const currentRow = currentCell ? currentCell.closest(this.config.keyGridRows) : null;
|
|
17997
18189
|
const coordinates = {
|
|
@@ -18002,6 +18194,35 @@ class KeyNavigationGridController {
|
|
|
18002
18194
|
};
|
|
18003
18195
|
return coordinates;
|
|
18004
18196
|
}
|
|
18197
|
+
get itemsPerPage() {
|
|
18198
|
+
return Math.floor(this.host?.querySelector('.datagrid').clientHeight / this.rows[0].clientHeight) - 1 || 0;
|
|
18199
|
+
}
|
|
18200
|
+
getNextItemCoordinate(e) {
|
|
18201
|
+
const currentCellCoords = this.currentCellCoordinates;
|
|
18202
|
+
const strategy = this.getNavStrategy(currentCellCoords);
|
|
18203
|
+
const inlineStart = this.host.dir === 'rtl' ? Keys.ArrowRight : Keys.ArrowLeft;
|
|
18204
|
+
const inlineEnd = this.host.dir === 'rtl' ? Keys.ArrowLeft : Keys.ArrowRight;
|
|
18205
|
+
switch (e.key) {
|
|
18206
|
+
case Keys.ArrowUp:
|
|
18207
|
+
return strategy.keyUp(currentCellCoords);
|
|
18208
|
+
case Keys.ArrowDown:
|
|
18209
|
+
return strategy.keyDown(currentCellCoords);
|
|
18210
|
+
case inlineStart:
|
|
18211
|
+
return strategy.keyLeft(currentCellCoords);
|
|
18212
|
+
case inlineEnd:
|
|
18213
|
+
return strategy.keyRight(currentCellCoords);
|
|
18214
|
+
case Keys.Home:
|
|
18215
|
+
return strategy.keyHome(currentCellCoords, e.ctrlKey);
|
|
18216
|
+
case Keys.End:
|
|
18217
|
+
return strategy.keyEnd(currentCellCoords, e.ctrlKey);
|
|
18218
|
+
case Keys.PageUp:
|
|
18219
|
+
return strategy.keyPageUp(currentCellCoords);
|
|
18220
|
+
case Keys.PageDown:
|
|
18221
|
+
return strategy.keyPageDown(currentCellCoords);
|
|
18222
|
+
default:
|
|
18223
|
+
return currentCellCoords;
|
|
18224
|
+
}
|
|
18225
|
+
}
|
|
18005
18226
|
getCellsForRow(index) {
|
|
18006
18227
|
return this.rows[index].querySelectorAll(this.config.keyGridCells);
|
|
18007
18228
|
}
|
|
@@ -18016,10 +18237,7 @@ class KeyNavigationGridController {
|
|
|
18016
18237
|
return !!this.rows[index].closest('clr-dg-row.datagrid-row-replaced');
|
|
18017
18238
|
}
|
|
18018
18239
|
isSingleCellExpandedRow(index) {
|
|
18019
|
-
|
|
18020
|
-
? this.rows[index]
|
|
18021
|
-
: this.rows[index].querySelector('.datagrid-row-detail');
|
|
18022
|
-
return row?.querySelectorAll(this.config.keyGridCells).length === 1;
|
|
18240
|
+
return this.rows[index]?.querySelectorAll(this.config.keyGridCells).length === 1;
|
|
18023
18241
|
}
|
|
18024
18242
|
actionCellCount(index) {
|
|
18025
18243
|
return this.actionCellsAsArray(index).length;
|
|
@@ -18030,6 +18248,167 @@ class KeyNavigationGridController {
|
|
|
18030
18248
|
isActionCell(cellCoords) {
|
|
18031
18249
|
return !!this.actionCellsAsArray(cellCoords.y)[cellCoords.x];
|
|
18032
18250
|
}
|
|
18251
|
+
createNextCellCoords(cellCoords) {
|
|
18252
|
+
return {
|
|
18253
|
+
x: cellCoords.x,
|
|
18254
|
+
y: cellCoords.y,
|
|
18255
|
+
};
|
|
18256
|
+
}
|
|
18257
|
+
getNavStrategy(currentCellCoords) {
|
|
18258
|
+
switch (true) {
|
|
18259
|
+
case this.isSingleCellExpandedRow(currentCellCoords.y):
|
|
18260
|
+
return new ExpandedRowKeyNavigationStrategy(this);
|
|
18261
|
+
case this.isDetailsRow(currentCellCoords.y):
|
|
18262
|
+
case this.isExpandedRow(currentCellCoords.y):
|
|
18263
|
+
return new ExpandedColumnsRowKeyNavigationStrategy(this);
|
|
18264
|
+
default:
|
|
18265
|
+
return new DefaultKeyNavigationStrategy(this);
|
|
18266
|
+
}
|
|
18267
|
+
}
|
|
18268
|
+
}
|
|
18269
|
+
|
|
18270
|
+
/*
|
|
18271
|
+
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
18272
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
18273
|
+
* This software is released under MIT license.
|
|
18274
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18275
|
+
*/
|
|
18276
|
+
const actionableItemSelectors = [
|
|
18277
|
+
'a[href]',
|
|
18278
|
+
'area[href]',
|
|
18279
|
+
'input:not([disabled])',
|
|
18280
|
+
'button:not([disabled])',
|
|
18281
|
+
'select:not([disabled])',
|
|
18282
|
+
'textarea:not([disabled])',
|
|
18283
|
+
'iframe',
|
|
18284
|
+
'object',
|
|
18285
|
+
'embed',
|
|
18286
|
+
'[contenteditable=true]',
|
|
18287
|
+
'[role=button]:not([disabled])',
|
|
18288
|
+
];
|
|
18289
|
+
function getTabbableItems(el) {
|
|
18290
|
+
const tabbableItemSelectors = [...actionableItemSelectors, '[tabindex="0"]:not([disabled])'];
|
|
18291
|
+
const tabbableSelector = tabbableItemSelectors.join(',');
|
|
18292
|
+
return Array.from(el.querySelectorAll(tabbableSelector));
|
|
18293
|
+
}
|
|
18294
|
+
function isActionableItem(el) {
|
|
18295
|
+
const actionableSelector = actionableItemSelectors.join(',');
|
|
18296
|
+
return el.matches(actionableSelector);
|
|
18297
|
+
}
|
|
18298
|
+
class KeyNavigationGridController {
|
|
18299
|
+
constructor(zone) {
|
|
18300
|
+
this.zone = zone;
|
|
18301
|
+
this.skipItemFocus = false;
|
|
18302
|
+
this.listenersAdded = false;
|
|
18303
|
+
this.destroy$ = new Subject();
|
|
18304
|
+
this._activeCell = null;
|
|
18305
|
+
this.config = {
|
|
18306
|
+
keyGridRows: '[role=row]:not(.datagrid-placeholder):not([style*="display: none"])',
|
|
18307
|
+
keyGridCells: '[role=gridcell]:not(.datagrid-hidden-column):not(.datagrid-placeholder-content), [role=columnheader]:not(.datagrid-hidden-column):not(.datagrid-placeholder-content), .datagrid-detail-caret',
|
|
18308
|
+
keyGrid: '[role=grid]',
|
|
18309
|
+
};
|
|
18310
|
+
}
|
|
18311
|
+
ngOnDestroy() {
|
|
18312
|
+
this.destroy$.next();
|
|
18313
|
+
this.destroy$.complete();
|
|
18314
|
+
}
|
|
18315
|
+
addListeners() {
|
|
18316
|
+
if (this.listenersAdded) {
|
|
18317
|
+
return;
|
|
18318
|
+
}
|
|
18319
|
+
this.zone.runOutsideAngular(() => {
|
|
18320
|
+
fromEvent(this.keyNavUtils.grid, 'mousedown')
|
|
18321
|
+
.pipe(takeUntil(this.destroy$))
|
|
18322
|
+
.subscribe((e) => {
|
|
18323
|
+
// 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
|
|
18324
|
+
if (e.buttons === 1 && !e.ctrlKey) {
|
|
18325
|
+
const activeCell = this.keyNavUtils.cells
|
|
18326
|
+
? Array.from(this.keyNavUtils.cells).find(c => c === e.target || c === e.target.closest(this.config.keyGridCells))
|
|
18327
|
+
: null;
|
|
18328
|
+
if (activeCell) {
|
|
18329
|
+
this.setActiveCell(activeCell, { keepFocus: isActionableItem(e.target) });
|
|
18330
|
+
}
|
|
18331
|
+
}
|
|
18332
|
+
});
|
|
18333
|
+
fromEvent(this.keyNavUtils.grid, 'wheel')
|
|
18334
|
+
.pipe(takeUntil(this.destroy$))
|
|
18335
|
+
.subscribe(() => {
|
|
18336
|
+
this.removeActiveCell();
|
|
18337
|
+
});
|
|
18338
|
+
fromEvent(this.keyNavUtils.grid, 'focusout')
|
|
18339
|
+
.pipe(debounceTime(0), takeUntil(this.destroy$))
|
|
18340
|
+
.subscribe(() => {
|
|
18341
|
+
if (this.keyNavUtils.grid.contains(document.activeElement)) {
|
|
18342
|
+
return;
|
|
18343
|
+
}
|
|
18344
|
+
this.removeActiveCell();
|
|
18345
|
+
});
|
|
18346
|
+
fromEvent(this.keyNavUtils.grid, 'keydown')
|
|
18347
|
+
.pipe(takeUntil(this.destroy$))
|
|
18348
|
+
.subscribe((e) => {
|
|
18349
|
+
// Skip column resize events
|
|
18350
|
+
if (e.target.classList.contains('drag-handle') &&
|
|
18351
|
+
(e.key === Keys.ArrowLeft || e.key === Keys.ArrowRight)) {
|
|
18352
|
+
return;
|
|
18353
|
+
}
|
|
18354
|
+
if (e.key === Keys.ArrowUp ||
|
|
18355
|
+
e.key === Keys.ArrowDown ||
|
|
18356
|
+
e.key === Keys.ArrowLeft ||
|
|
18357
|
+
e.key === Keys.ArrowRight ||
|
|
18358
|
+
e.key === Keys.End ||
|
|
18359
|
+
e.key === Keys.Home ||
|
|
18360
|
+
e.key === Keys.PageUp ||
|
|
18361
|
+
e.key === Keys.PageDown) {
|
|
18362
|
+
const nextCellCoords = this.keyNavUtils.getNextItemCoordinate(e);
|
|
18363
|
+
const activeItem = this.keyNavUtils.rows
|
|
18364
|
+
? Array.from(this.keyNavUtils.getCellsForRow(nextCellCoords.y))[nextCellCoords.x]
|
|
18365
|
+
: null;
|
|
18366
|
+
if (activeItem) {
|
|
18367
|
+
this.setActiveCell(activeItem);
|
|
18368
|
+
}
|
|
18369
|
+
e.preventDefault();
|
|
18370
|
+
}
|
|
18371
|
+
});
|
|
18372
|
+
});
|
|
18373
|
+
this.listenersAdded = true;
|
|
18374
|
+
}
|
|
18375
|
+
initializeKeyGrid(host) {
|
|
18376
|
+
this.keyNavUtils = new KeyNavigationUtils(host, this.config);
|
|
18377
|
+
this.addListeners();
|
|
18378
|
+
this.resetKeyGrid();
|
|
18379
|
+
}
|
|
18380
|
+
resetKeyGrid() {
|
|
18381
|
+
this.keyNavUtils.cells?.forEach((i) => i.setAttribute('tabindex', '-1'));
|
|
18382
|
+
const firstCell = this.keyNavUtils.cells ? this.keyNavUtils.cells[0] : null;
|
|
18383
|
+
firstCell?.setAttribute('tabindex', '0');
|
|
18384
|
+
}
|
|
18385
|
+
removeActiveCell() {
|
|
18386
|
+
this._activeCell = null;
|
|
18387
|
+
}
|
|
18388
|
+
getActiveCell() {
|
|
18389
|
+
return this._activeCell;
|
|
18390
|
+
}
|
|
18391
|
+
setActiveCell(activeCell, { keepFocus } = { keepFocus: false }) {
|
|
18392
|
+
const prior = this.keyNavUtils.cells
|
|
18393
|
+
? Array.from(this.keyNavUtils.cells).find(c => c.getAttribute('tabindex') === '0')
|
|
18394
|
+
: null;
|
|
18395
|
+
if (prior) {
|
|
18396
|
+
prior.setAttribute('tabindex', '-1');
|
|
18397
|
+
}
|
|
18398
|
+
activeCell.setAttribute('tabindex', '0');
|
|
18399
|
+
this._activeCell = activeCell;
|
|
18400
|
+
if (!this.skipItemFocus && !keepFocus) {
|
|
18401
|
+
let elementToFocus;
|
|
18402
|
+
if (activeCell.getAttribute('role') === 'columnheader') {
|
|
18403
|
+
elementToFocus = activeCell;
|
|
18404
|
+
}
|
|
18405
|
+
else {
|
|
18406
|
+
const tabbableElements = getTabbableItems(activeCell);
|
|
18407
|
+
elementToFocus = tabbableElements.length ? tabbableElements[0] : activeCell;
|
|
18408
|
+
}
|
|
18409
|
+
elementToFocus.focus();
|
|
18410
|
+
}
|
|
18411
|
+
}
|
|
18033
18412
|
}
|
|
18034
18413
|
KeyNavigationGridController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: KeyNavigationGridController, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
18035
18414
|
KeyNavigationGridController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: KeyNavigationGridController });
|
|
@@ -19727,18 +20106,14 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
|
19727
20106
|
if (typeof comparator === 'string') {
|
|
19728
20107
|
this._sortBy = new DatagridPropertyComparator(comparator);
|
|
19729
20108
|
}
|
|
20109
|
+
else if (comparator) {
|
|
20110
|
+
this._sortBy = comparator;
|
|
20111
|
+
}
|
|
20112
|
+
else if (this.field) {
|
|
20113
|
+
this._sortBy = new DatagridPropertyComparator(this.field);
|
|
20114
|
+
}
|
|
19730
20115
|
else {
|
|
19731
|
-
|
|
19732
|
-
this._sortBy = comparator;
|
|
19733
|
-
}
|
|
19734
|
-
else {
|
|
19735
|
-
if (this.field) {
|
|
19736
|
-
this._sortBy = new DatagridPropertyComparator(this.field);
|
|
19737
|
-
}
|
|
19738
|
-
else {
|
|
19739
|
-
delete this._sortBy;
|
|
19740
|
-
}
|
|
19741
|
-
}
|
|
20116
|
+
delete this._sortBy;
|
|
19742
20117
|
}
|
|
19743
20118
|
}
|
|
19744
20119
|
get sortOrder() {
|
|
@@ -20121,6 +20496,10 @@ class Items {
|
|
|
20121
20496
|
this._pageSub.unsubscribe();
|
|
20122
20497
|
}
|
|
20123
20498
|
}
|
|
20499
|
+
smartenDown() {
|
|
20500
|
+
this._smart = false;
|
|
20501
|
+
this.destroy();
|
|
20502
|
+
}
|
|
20124
20503
|
smartenUp() {
|
|
20125
20504
|
this._smart = true;
|
|
20126
20505
|
/*
|
|
@@ -20910,6 +21289,60 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
20910
21289
|
args: ['click', ['$event']]
|
|
20911
21290
|
}] } });
|
|
20912
21291
|
|
|
21292
|
+
/*
|
|
21293
|
+
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
21294
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
21295
|
+
* This software is released under MIT license.
|
|
21296
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
21297
|
+
*/
|
|
21298
|
+
class DatagridCellRenderer {
|
|
21299
|
+
constructor(el, renderer, organizer) {
|
|
21300
|
+
this.el = el;
|
|
21301
|
+
this.renderer = renderer;
|
|
21302
|
+
this.subscriptions = [];
|
|
21303
|
+
this.subscriptions.push(organizer.filterRenderSteps(DatagridRenderStep.CLEAR_WIDTHS).subscribe(() => this.clearWidth()));
|
|
21304
|
+
}
|
|
21305
|
+
ngOnDestroy() {
|
|
21306
|
+
this.subscriptions.forEach(sub => sub.unsubscribe());
|
|
21307
|
+
if (this.stateSubscription) {
|
|
21308
|
+
this.stateSubscription.unsubscribe();
|
|
21309
|
+
}
|
|
21310
|
+
}
|
|
21311
|
+
resetState(state) {
|
|
21312
|
+
this.setWidth(state);
|
|
21313
|
+
this.setHidden(state);
|
|
21314
|
+
}
|
|
21315
|
+
setWidth(state) {
|
|
21316
|
+
if (state.strictWidth) {
|
|
21317
|
+
this.renderer.addClass(this.el.nativeElement, STRICT_WIDTH_CLASS);
|
|
21318
|
+
}
|
|
21319
|
+
else {
|
|
21320
|
+
this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);
|
|
21321
|
+
}
|
|
21322
|
+
this.renderer.setStyle(this.el.nativeElement, 'width', state.width + 'px');
|
|
21323
|
+
}
|
|
21324
|
+
setHidden(state) {
|
|
21325
|
+
if (state.hidden) {
|
|
21326
|
+
this.renderer.addClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);
|
|
21327
|
+
}
|
|
21328
|
+
else {
|
|
21329
|
+
this.renderer.removeClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);
|
|
21330
|
+
}
|
|
21331
|
+
}
|
|
21332
|
+
clearWidth() {
|
|
21333
|
+
this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);
|
|
21334
|
+
this.renderer.setStyle(this.el.nativeElement, 'width', null);
|
|
21335
|
+
}
|
|
21336
|
+
}
|
|
21337
|
+
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 });
|
|
21338
|
+
DatagridCellRenderer.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: DatagridCellRenderer, selector: "clr-dg-cell", ngImport: i0 });
|
|
21339
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridCellRenderer, decorators: [{
|
|
21340
|
+
type: Directive,
|
|
21341
|
+
args: [{
|
|
21342
|
+
selector: 'clr-dg-cell',
|
|
21343
|
+
}]
|
|
21344
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DatagridRenderOrganizer }]; } });
|
|
21345
|
+
|
|
20913
21346
|
/*
|
|
20914
21347
|
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
20915
21348
|
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
@@ -20933,6 +21366,7 @@ class ClrDatagridRow {
|
|
|
20933
21366
|
this.expandedChange = new EventEmitter(false);
|
|
20934
21367
|
this.detailDisabled = false;
|
|
20935
21368
|
this.detailHidden = false;
|
|
21369
|
+
this.skeletonLoading = false;
|
|
20936
21370
|
this.displayCells = false;
|
|
20937
21371
|
this.expandAnimationTrigger = false;
|
|
20938
21372
|
/* reference to the enum so that template can access */
|
|
@@ -21067,6 +21501,16 @@ class ClrDatagridRow {
|
|
|
21067
21501
|
}
|
|
21068
21502
|
if (viewChange === DatagridDisplayMode.CALCULATE) {
|
|
21069
21503
|
this.displayCells = false;
|
|
21504
|
+
// Inserts a fixed cell if any of these conditions are true.
|
|
21505
|
+
const fixedCellConditions = [
|
|
21506
|
+
this.selection.selectionType !== this.SELECTION_TYPE.None,
|
|
21507
|
+
this.rowActionService.hasActionableRow,
|
|
21508
|
+
this.globalExpandable.hasExpandableRow,
|
|
21509
|
+
this.detailService.enabled,
|
|
21510
|
+
];
|
|
21511
|
+
fixedCellConditions
|
|
21512
|
+
.filter(Boolean)
|
|
21513
|
+
.forEach(() => this._calculatedCells.insert(this._fixedCellTemplate.createEmbeddedView(null)));
|
|
21070
21514
|
this.dgCells.forEach(cell => {
|
|
21071
21515
|
if (!cell._view.destroyed) {
|
|
21072
21516
|
this._calculatedCells.insert(cell._view);
|
|
@@ -21108,7 +21552,7 @@ class ClrDatagridRow {
|
|
|
21108
21552
|
* selection browser functionality, which is inconsistently implemented in browsers anyway.
|
|
21109
21553
|
*/
|
|
21110
21554
|
clearRanges(event) {
|
|
21111
|
-
if (event.shiftKey) {
|
|
21555
|
+
if (this.selection.rowSelectionMode && event.shiftKey) {
|
|
21112
21556
|
this.document.getSelection().removeAllRanges();
|
|
21113
21557
|
// Firefox is too persistent about its text-selection behaviour. So we need to add a preventDefault();
|
|
21114
21558
|
// We should not try to enforce this on the other browsers, though, because their toggle cycle does not get canceled by
|
|
@@ -21125,7 +21569,7 @@ class ClrDatagridRow {
|
|
|
21125
21569
|
selectRow(selected = !this.selected, $event) {
|
|
21126
21570
|
// The label also captures clicks that bubble up to the row event listener, causing
|
|
21127
21571
|
// this handler to run twice. This exits early to prevent toggling the checkbox twice.
|
|
21128
|
-
if ($event.target.tagName === 'LABEL') {
|
|
21572
|
+
if (!this.selection.rowSelectionMode || $event.target.tagName === 'LABEL') {
|
|
21129
21573
|
return;
|
|
21130
21574
|
}
|
|
21131
21575
|
if (this.selection.selectionType === this.SELECTION_TYPE.Single) {
|
|
@@ -21160,15 +21604,16 @@ class ClrDatagridRow {
|
|
|
21160
21604
|
}
|
|
21161
21605
|
}
|
|
21162
21606
|
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 });
|
|
21163
|
-
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: [
|
|
21607
|
+
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: [
|
|
21164
21608
|
DatagridIfExpandService,
|
|
21165
21609
|
{ provide: IfExpandService, useExisting: DatagridIfExpandService },
|
|
21166
21610
|
{ provide: LoadingListener, useExisting: DatagridIfExpandService },
|
|
21167
|
-
], queries: [{ propertyName: "dgCells", predicate: ClrDatagridCell }], viewQueries: [{ propertyName: "expandAnimation", first: true, predicate:
|
|
21611
|
+
], 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" }] });
|
|
21168
21612
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridRow, decorators: [{
|
|
21169
21613
|
type: Component,
|
|
21170
21614
|
args: [{ selector: 'clr-dg-row', host: {
|
|
21171
21615
|
'[class.datagrid-row]': 'true',
|
|
21616
|
+
'[class.datagrid-row-skeleton]': 'skeletonLoading',
|
|
21172
21617
|
'[class.datagrid-selected]': 'selected',
|
|
21173
21618
|
'[attr.aria-owns]': 'id',
|
|
21174
21619
|
role: 'rowgroup',
|
|
@@ -21176,7 +21621,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
21176
21621
|
DatagridIfExpandService,
|
|
21177
21622
|
{ provide: IfExpandService, useExisting: DatagridIfExpandService },
|
|
21178
21623
|
{ provide: LoadingListener, useExisting: DatagridIfExpandService },
|
|
21179
|
-
], template: "
|
|
21624
|
+
], 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" }]
|
|
21180
21625
|
}], ctorParameters: function () { return [{ type: Selection }, { type: RowActionService }, { type: ExpandableRowsCount }, { type: DatagridIfExpandService }, { type: DetailService }, { type: DisplayModeService }, { type: i0.ViewContainerRef }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: ClrCommonStringsService }, { type: Items }, { type: undefined, decorators: [{
|
|
21181
21626
|
type: Inject,
|
|
21182
21627
|
args: [DOCUMENT]
|
|
@@ -21192,12 +21637,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
21192
21637
|
}], detailHidden: [{
|
|
21193
21638
|
type: Input,
|
|
21194
21639
|
args: ['clrDgDetailHidden']
|
|
21640
|
+
}], skeletonLoading: [{
|
|
21641
|
+
type: Input,
|
|
21642
|
+
args: ['clrDgSkeletonLoading']
|
|
21195
21643
|
}], dgCells: [{
|
|
21196
21644
|
type: ContentChildren,
|
|
21197
21645
|
args: [ClrDatagridCell]
|
|
21198
21646
|
}], expandAnimation: [{
|
|
21199
21647
|
type: ViewChild,
|
|
21200
|
-
args: [
|
|
21648
|
+
args: [ClrExpandableAnimationDirective]
|
|
21201
21649
|
}], detailButton: [{
|
|
21202
21650
|
type: ViewChild,
|
|
21203
21651
|
args: ['detailButton']
|
|
@@ -21210,6 +21658,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
21210
21658
|
}], _calculatedCells: [{
|
|
21211
21659
|
type: ViewChild,
|
|
21212
21660
|
args: ['calculatedCells', { read: ViewContainerRef }]
|
|
21661
|
+
}], _fixedCellTemplate: [{
|
|
21662
|
+
type: ViewChild,
|
|
21663
|
+
args: ['fixedCellTemplate']
|
|
21213
21664
|
}], item: [{
|
|
21214
21665
|
type: Input,
|
|
21215
21666
|
args: ['clrDgItem']
|
|
@@ -21332,6 +21783,7 @@ class ClrDatagridVirtualScrollDirective {
|
|
|
21332
21783
|
this.columnsService = columnsService;
|
|
21333
21784
|
this.injector = injector;
|
|
21334
21785
|
this.renderedRangeChange = new EventEmitter();
|
|
21786
|
+
this.persistItems = true;
|
|
21335
21787
|
this._cdkFixedSizeVirtualScrollInputs = { ...defaultCdkFixedSizeVirtualScrollInputs };
|
|
21336
21788
|
this.subscriptions = [];
|
|
21337
21789
|
this.topIndex = 0;
|
|
@@ -21408,6 +21860,22 @@ class ClrDatagridVirtualScrollDirective {
|
|
|
21408
21860
|
this._cdkFixedSizeVirtualScrollInputs.maxBufferPx = coerceNumberProperty(value);
|
|
21409
21861
|
this.updateFixedSizeVirtualScrollInputs();
|
|
21410
21862
|
}
|
|
21863
|
+
set dataRange(range) {
|
|
21864
|
+
if (!range) {
|
|
21865
|
+
return;
|
|
21866
|
+
}
|
|
21867
|
+
if (this.items.smart) {
|
|
21868
|
+
this.items.smartenDown();
|
|
21869
|
+
}
|
|
21870
|
+
this.totalItems = range.total;
|
|
21871
|
+
this.updateDataRange(range.skip, range.data);
|
|
21872
|
+
}
|
|
21873
|
+
get totalItems() {
|
|
21874
|
+
return this._totalItems;
|
|
21875
|
+
}
|
|
21876
|
+
set totalItems(value) {
|
|
21877
|
+
this._totalItems = value;
|
|
21878
|
+
}
|
|
21411
21879
|
ngAfterViewInit() {
|
|
21412
21880
|
this.injector.runInContext(() => {
|
|
21413
21881
|
this.virtualScrollViewport = this.createVirtualScrollViewportForDatagrid(this.changeDetectorRef, this.ngZone, this.renderer2, this.directionality, this.scrollDispatcher, this.viewportRuler, this.datagridElementRef, this.virtualScrollStrategy);
|
|
@@ -21417,7 +21885,9 @@ class ClrDatagridVirtualScrollDirective {
|
|
|
21417
21885
|
this.gridRoleElement = this.datagridElementRef.nativeElement.querySelector('[role="grid"]');
|
|
21418
21886
|
this.updateCdkVirtualForInputs();
|
|
21419
21887
|
this.subscriptions.push(this.items.change.subscribe(newItems => {
|
|
21420
|
-
this.
|
|
21888
|
+
if (this.items.smart) {
|
|
21889
|
+
this.cdkVirtualFor.cdkVirtualForOf = newItems;
|
|
21890
|
+
}
|
|
21421
21891
|
}), this.cdkVirtualFor.dataStream.subscribe(data => {
|
|
21422
21892
|
this.updateAriaRowCount(data.length);
|
|
21423
21893
|
}), this.virtualScrollViewport.scrolledIndexChange.subscribe(index => {
|
|
@@ -21453,6 +21923,14 @@ class ClrDatagridVirtualScrollDirective {
|
|
|
21453
21923
|
scrollToIndex(index, behavior = 'auto') {
|
|
21454
21924
|
this.virtualScrollViewport?.scrollToIndex(index, behavior);
|
|
21455
21925
|
}
|
|
21926
|
+
updateDataRange(skip, data) {
|
|
21927
|
+
let items = this.cdkVirtualForOf;
|
|
21928
|
+
if (!this.persistItems || !items || items?.length !== this.totalItems) {
|
|
21929
|
+
items = Array(this.totalItems);
|
|
21930
|
+
}
|
|
21931
|
+
items.splice(skip, data.length, ...data);
|
|
21932
|
+
this.cdkVirtualForOf = Array.from(items);
|
|
21933
|
+
}
|
|
21456
21934
|
updateCdkVirtualForInputs() {
|
|
21457
21935
|
if (this.cdkVirtualFor) {
|
|
21458
21936
|
for (const cdkVirtualForInputKey of Object.keys(this.cdkVirtualForInputs)) {
|
|
@@ -21510,18 +21988,22 @@ class ClrDatagridVirtualScrollDirective {
|
|
|
21510
21988
|
return virtualScrollViewport;
|
|
21511
21989
|
}
|
|
21512
21990
|
}
|
|
21513
|
-
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
|
|
21514
|
-
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 });
|
|
21991
|
+
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 });
|
|
21992
|
+
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 });
|
|
21515
21993
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridVirtualScrollDirective, decorators: [{
|
|
21516
21994
|
type: Directive,
|
|
21517
21995
|
args: [{
|
|
21518
21996
|
selector: '[clrVirtualScroll],[ClrVirtualScroll]',
|
|
21519
21997
|
providers: [Items],
|
|
21520
21998
|
}]
|
|
21521
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.IterableDiffers }, { type: Items, decorators: [{
|
|
21522
|
-
type:
|
|
21523
|
-
|
|
21999
|
+
}], ctorParameters: function () { 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: [{
|
|
22000
|
+
type: Inject,
|
|
22001
|
+
args: [forwardRef(() => ClrDatagrid)]
|
|
22002
|
+
}] }, { type: ColumnsService }, { type: i0.EnvironmentInjector }]; }, propDecorators: { renderedRangeChange: [{
|
|
21524
22003
|
type: Output
|
|
22004
|
+
}], persistItems: [{
|
|
22005
|
+
type: Input,
|
|
22006
|
+
args: ['clrVirtualPersistItems']
|
|
21525
22007
|
}], cdkVirtualForOf: [{
|
|
21526
22008
|
type: Input,
|
|
21527
22009
|
args: ['clrVirtualRowsOf']
|
|
@@ -21543,6 +22025,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
21543
22025
|
}], maxBufferPx: [{
|
|
21544
22026
|
type: Input,
|
|
21545
22027
|
args: ['clrVirtualRowsMaxBufferPx']
|
|
22028
|
+
}], dataRange: [{
|
|
22029
|
+
type: Input,
|
|
22030
|
+
args: ['clrVirtualDataRange']
|
|
21546
22031
|
}] } });
|
|
21547
22032
|
function createCdkVirtualScrollViewport(datagridDivElementRef, changeDetectorRef, ngZone, renderer2, virtualScrollStrategy, directionality, scrollDispatcher, viewportRuler, scrollable) {
|
|
21548
22033
|
if (+VERSION.major < 19) {
|
|
@@ -21658,60 +22143,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
21658
22143
|
type: Injectable
|
|
21659
22144
|
}], ctorParameters: function () { return [{ type: FiltersProvider }, { type: Sort }, { type: Page }, { type: StateDebouncer }]; } });
|
|
21660
22145
|
|
|
21661
|
-
/*
|
|
21662
|
-
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
21663
|
-
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
21664
|
-
* This software is released under MIT license.
|
|
21665
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
21666
|
-
*/
|
|
21667
|
-
class DatagridCellRenderer {
|
|
21668
|
-
constructor(el, renderer, organizer) {
|
|
21669
|
-
this.el = el;
|
|
21670
|
-
this.renderer = renderer;
|
|
21671
|
-
this.subscriptions = [];
|
|
21672
|
-
this.subscriptions.push(organizer.filterRenderSteps(DatagridRenderStep.CLEAR_WIDTHS).subscribe(() => this.clearWidth()));
|
|
21673
|
-
}
|
|
21674
|
-
ngOnDestroy() {
|
|
21675
|
-
this.subscriptions.forEach(sub => sub.unsubscribe());
|
|
21676
|
-
if (this.stateSubscription) {
|
|
21677
|
-
this.stateSubscription.unsubscribe();
|
|
21678
|
-
}
|
|
21679
|
-
}
|
|
21680
|
-
resetState(state) {
|
|
21681
|
-
this.setWidth(state);
|
|
21682
|
-
this.setHidden(state);
|
|
21683
|
-
}
|
|
21684
|
-
setWidth(state) {
|
|
21685
|
-
if (state.strictWidth) {
|
|
21686
|
-
this.renderer.addClass(this.el.nativeElement, STRICT_WIDTH_CLASS);
|
|
21687
|
-
}
|
|
21688
|
-
else {
|
|
21689
|
-
this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);
|
|
21690
|
-
}
|
|
21691
|
-
this.renderer.setStyle(this.el.nativeElement, 'width', state.width + 'px');
|
|
21692
|
-
}
|
|
21693
|
-
setHidden(state) {
|
|
21694
|
-
if (state.hidden) {
|
|
21695
|
-
this.renderer.addClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);
|
|
21696
|
-
}
|
|
21697
|
-
else {
|
|
21698
|
-
this.renderer.removeClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);
|
|
21699
|
-
}
|
|
21700
|
-
}
|
|
21701
|
-
clearWidth() {
|
|
21702
|
-
this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);
|
|
21703
|
-
this.renderer.setStyle(this.el.nativeElement, 'width', null);
|
|
21704
|
-
}
|
|
21705
|
-
}
|
|
21706
|
-
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 });
|
|
21707
|
-
DatagridCellRenderer.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: DatagridCellRenderer, selector: "clr-dg-cell", ngImport: i0 });
|
|
21708
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridCellRenderer, decorators: [{
|
|
21709
|
-
type: Directive,
|
|
21710
|
-
args: [{
|
|
21711
|
-
selector: 'clr-dg-cell',
|
|
21712
|
-
}]
|
|
21713
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DatagridRenderOrganizer }]; } });
|
|
21714
|
-
|
|
21715
22146
|
/*
|
|
21716
22147
|
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
21717
22148
|
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
@@ -21806,6 +22237,11 @@ class ClrDatagrid {
|
|
|
21806
22237
|
* Output emitted whenever the data needs to be refreshed, based on user action or external ones
|
|
21807
22238
|
*/
|
|
21808
22239
|
this.refresh = new EventEmitter(false);
|
|
22240
|
+
/**
|
|
22241
|
+
* The application can provide custom select all logic.
|
|
22242
|
+
*/
|
|
22243
|
+
this.customSelectAllEnabled = false;
|
|
22244
|
+
this.customSelectAll = new EventEmitter();
|
|
21809
22245
|
/* reference to the enum so that template can access */
|
|
21810
22246
|
this.SELECTION_TYPE = SelectionType;
|
|
21811
22247
|
/**
|
|
@@ -21872,13 +22308,18 @@ class ClrDatagrid {
|
|
|
21872
22308
|
get allSelected() {
|
|
21873
22309
|
return this.selection.isAllSelected();
|
|
21874
22310
|
}
|
|
21875
|
-
set allSelected(
|
|
21876
|
-
|
|
21877
|
-
|
|
21878
|
-
|
|
21879
|
-
|
|
21880
|
-
|
|
21881
|
-
|
|
22311
|
+
set allSelected(value) {
|
|
22312
|
+
if (this.customSelectAllEnabled) {
|
|
22313
|
+
this.customSelectAll.emit(value);
|
|
22314
|
+
}
|
|
22315
|
+
else {
|
|
22316
|
+
/**
|
|
22317
|
+
* This is a setter but we ignore the value.
|
|
22318
|
+
* It's strange, but it lets us have an indeterminate state where only
|
|
22319
|
+
* some of the items are selected.
|
|
22320
|
+
*/
|
|
22321
|
+
this.selection.toggleAll();
|
|
22322
|
+
}
|
|
21882
22323
|
}
|
|
21883
22324
|
ngAfterContentInit() {
|
|
21884
22325
|
if (!this.items.smart) {
|
|
@@ -21924,7 +22365,7 @@ class ClrDatagrid {
|
|
|
21924
22365
|
this.updateDetailState();
|
|
21925
22366
|
// TODO: determine if we can get rid of provider wiring in view init so that subscriptions can be done earlier
|
|
21926
22367
|
this.refresh.emit(this.stateProvider.state);
|
|
21927
|
-
this._subscriptions.push(this.stateProvider.change.subscribe(state => this.refresh.emit(state)), this.selection.change.subscribe(s => {
|
|
22368
|
+
this._subscriptions.push(this.stickyHeaders.changes.subscribe(() => this.resize()), this.stateProvider.change.subscribe(state => this.refresh.emit(state)), this.selection.change.subscribe(s => {
|
|
21928
22369
|
if (this.selection.selectionType === SelectionType.Single) {
|
|
21929
22370
|
this.singleSelectedChanged.emit(s);
|
|
21930
22371
|
}
|
|
@@ -21970,6 +22411,15 @@ class ClrDatagrid {
|
|
|
21970
22411
|
else {
|
|
21971
22412
|
// Set state, style for the datagrid to CALCULATE and insert row & columns into containers
|
|
21972
22413
|
this.renderer.addClass(this.el.nativeElement, 'datagrid-calculate-mode');
|
|
22414
|
+
// Inserts a fixed column if any of these conditions are true.
|
|
22415
|
+
const fixedColumnConditions = [
|
|
22416
|
+
this.rowActionService.hasActionableRow,
|
|
22417
|
+
this.selection.selectionType !== this.SELECTION_TYPE.None,
|
|
22418
|
+
this.expandableRows.hasExpandableRow || this.detailService.enabled,
|
|
22419
|
+
];
|
|
22420
|
+
fixedColumnConditions
|
|
22421
|
+
.filter(Boolean)
|
|
22422
|
+
.forEach(() => this._projectedCalculationColumns.insert(this._fixedColumnTemplate.createEmbeddedView(null)));
|
|
21973
22423
|
this.columns.forEach(column => {
|
|
21974
22424
|
this._projectedCalculationColumns.insert(column._view);
|
|
21975
22425
|
});
|
|
@@ -21997,10 +22447,7 @@ class ClrDatagrid {
|
|
|
21997
22447
|
}
|
|
21998
22448
|
toggleAllSelected($event) {
|
|
21999
22449
|
$event.preventDefault();
|
|
22000
|
-
|
|
22001
|
-
return;
|
|
22002
|
-
}
|
|
22003
|
-
this.allSelected = !this.allSelected;
|
|
22450
|
+
this.selectAllCheckbox?.nativeElement.click();
|
|
22004
22451
|
}
|
|
22005
22452
|
resize() {
|
|
22006
22453
|
this.organizer.resize();
|
|
@@ -22036,7 +22483,7 @@ class ClrDatagrid {
|
|
|
22036
22483
|
}
|
|
22037
22484
|
}
|
|
22038
22485
|
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 });
|
|
22039
|
-
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: [
|
|
22486
|
+
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: [
|
|
22040
22487
|
Selection,
|
|
22041
22488
|
Sort,
|
|
22042
22489
|
FiltersProvider,
|
|
@@ -22052,7 +22499,7 @@ ClrDatagrid.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
|
22052
22499
|
ColumnsService,
|
|
22053
22500
|
DisplayModeService,
|
|
22054
22501
|
KeyNavigationGridController,
|
|
22055
|
-
], 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" }] });
|
|
22502
|
+
], 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" }] });
|
|
22056
22503
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagrid, decorators: [{
|
|
22057
22504
|
type: Component,
|
|
22058
22505
|
args: [{ selector: 'clr-datagrid', providers: [
|
|
@@ -22074,7 +22521,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
22074
22521
|
], host: {
|
|
22075
22522
|
'[class.datagrid-host]': 'true',
|
|
22076
22523
|
'[class.datagrid-detail-open]': 'detailService.isOpen',
|
|
22077
|
-
}, 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" }]
|
|
22524
|
+
}, 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" }]
|
|
22078
22525
|
}], ctorParameters: function () { return [{ type: DatagridRenderOrganizer }, { type: Items }, { type: ExpandableRowsCount }, { type: Selection }, { type: RowActionService }, { type: StateProvider }, { type: DisplayModeService }, { type: i0.Renderer2 }, { type: DetailService }, { type: undefined, decorators: [{
|
|
22079
22526
|
type: Inject,
|
|
22080
22527
|
args: [DOCUMENT]
|
|
@@ -22098,6 +22545,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
22098
22545
|
}], refresh: [{
|
|
22099
22546
|
type: Output,
|
|
22100
22547
|
args: ['clrDgRefresh']
|
|
22548
|
+
}], customSelectAllEnabled: [{
|
|
22549
|
+
type: Input,
|
|
22550
|
+
args: ['clrDgCustomSelectAllEnabled']
|
|
22551
|
+
}], customSelectAll: [{
|
|
22552
|
+
type: Output,
|
|
22553
|
+
args: ['clrDgCustomSelectAll']
|
|
22101
22554
|
}], virtualScroll: [{
|
|
22102
22555
|
type: ContentChild,
|
|
22103
22556
|
args: [ClrDatagridVirtualScrollDirective]
|
|
@@ -22134,6 +22587,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
22134
22587
|
}], _calculationRows: [{
|
|
22135
22588
|
type: ViewChild,
|
|
22136
22589
|
args: ['calculationRows', { read: ViewContainerRef }]
|
|
22590
|
+
}], _fixedColumnTemplate: [{
|
|
22591
|
+
type: ViewChild,
|
|
22592
|
+
args: ['fixedColumnTemplate']
|
|
22593
|
+
}], stickyHeaders: [{
|
|
22594
|
+
type: ViewChildren,
|
|
22595
|
+
args: ['stickyHeader', { emitDistinctChangesOnly: true }]
|
|
22596
|
+
}], selectAllCheckbox: [{
|
|
22597
|
+
type: ViewChild,
|
|
22598
|
+
args: ['selectAllCheckbox']
|
|
22137
22599
|
}], loading: [{
|
|
22138
22600
|
type: Input,
|
|
22139
22601
|
args: ['clrDgLoading']
|
|
@@ -25315,9 +25777,6 @@ class ClrTreeNode {
|
|
|
25315
25777
|
return null;
|
|
25316
25778
|
}
|
|
25317
25779
|
}
|
|
25318
|
-
get treeNodeContentTextOnly() {
|
|
25319
|
-
return this.treeNodeLinkList.length === 0;
|
|
25320
|
-
}
|
|
25321
25780
|
get treeNodeLink() {
|
|
25322
25781
|
return this.treeNodeLinkList && this.treeNodeLinkList.first;
|
|
25323
25782
|
}
|
|
@@ -25488,7 +25947,7 @@ class ClrTreeNode {
|
|
|
25488
25947
|
}
|
|
25489
25948
|
}
|
|
25490
25949
|
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 });
|
|
25491
|
-
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
|
|
25950
|
+
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: [
|
|
25492
25951
|
trigger('toggleChildrenAnim', [
|
|
25493
25952
|
transition('collapsed => expanded', [style({ height: 0 }), animate(200, style({ height: '*' }))]),
|
|
25494
25953
|
transition('expanded => collapsed', [style({ height: '*' }), animate(200, style({ height: 0 }))]),
|
|
@@ -25508,7 +25967,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
25508
25967
|
], host: {
|
|
25509
25968
|
'[class.clr-tree-node]': 'true',
|
|
25510
25969
|
'[class.disabled]': 'this._model.disabled',
|
|
25511
|
-
}, 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
|
|
25970
|
+
}, 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" }]
|
|
25512
25971
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
25513
25972
|
type: Inject,
|
|
25514
25973
|
args: [PLATFORM_ID]
|
|
@@ -26431,7 +26890,7 @@ class ClrModal {
|
|
|
26431
26890
|
}
|
|
26432
26891
|
}
|
|
26433
26892
|
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 });
|
|
26434
|
-
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
|
|
26893
|
+
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: [
|
|
26435
26894
|
trigger('fadeMove', [
|
|
26436
26895
|
transition('* => fadeDown', [
|
|
26437
26896
|
style({ opacity: 0, transform: 'translate(0, -25%)' }),
|
|
@@ -26466,7 +26925,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
26466
26925
|
transition('void => *', [style({ opacity: 0 }), animate('0.2s ease-in-out', style({ opacity: 0.85 }))]),
|
|
26467
26926
|
transition('* => void', [animate('0.2s ease-in-out', style({ opacity: 0 }))]),
|
|
26468
26927
|
]),
|
|
26469
|
-
], 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
|
|
26928
|
+
], 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"] }]
|
|
26470
26929
|
}], ctorParameters: function () { return [{ type: ScrollingService }, { type: ClrCommonStringsService }, { type: ModalStackService }, { type: ClrModalConfigurationService }]; }, propDecorators: { title: [{
|
|
26471
26930
|
type: ViewChild,
|
|
26472
26931
|
args: ['title']
|
|
@@ -26506,6 +26965,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
26506
26965
|
}], bypassScrollService: [{
|
|
26507
26966
|
type: Input,
|
|
26508
26967
|
args: ['clrModalOverrideScrollService']
|
|
26968
|
+
}], modalContentTemplate: [{
|
|
26969
|
+
type: ContentChild,
|
|
26970
|
+
args: ['clrInternalModalContentTemplate']
|
|
26509
26971
|
}], bodyElementRef: [{
|
|
26510
26972
|
type: ViewChild,
|
|
26511
26973
|
args: ['body']
|
|
@@ -29373,6 +29835,15 @@ class ClrWizard {
|
|
|
29373
29835
|
* Set the modal size of the wizard. Set using `[clrWizardSize]` input.
|
|
29374
29836
|
*/
|
|
29375
29837
|
this.size = 'xl';
|
|
29838
|
+
/**
|
|
29839
|
+
* Enable "in page" wizard. Set using `[clrWizardInPage]` input.
|
|
29840
|
+
*/
|
|
29841
|
+
this.inPage = false;
|
|
29842
|
+
/**
|
|
29843
|
+
* Make an "in page" wizard fill the `.content-area`. Set using `[clrWizardInPageFillContentArea]` input.
|
|
29844
|
+
* If you can't use this option, you will likely need to provide custom CSS to set the wizard's height and margins.
|
|
29845
|
+
*/
|
|
29846
|
+
this.inPageFillContentArea = false;
|
|
29376
29847
|
/**
|
|
29377
29848
|
* Tells the modal part of the wizard whether it should have a close "X"
|
|
29378
29849
|
* in the top right corner. Set using `[clrWizardClosable]` input.
|
|
@@ -29531,6 +30002,9 @@ class ClrWizard {
|
|
|
29531
30002
|
ngAfterContentInit() {
|
|
29532
30003
|
this.pageCollection.pages = this.pages;
|
|
29533
30004
|
this.headerActionService.wizardHeaderActions = this.headerActions;
|
|
30005
|
+
if (this.inPage) {
|
|
30006
|
+
this.open();
|
|
30007
|
+
}
|
|
29534
30008
|
this.initializeButtons();
|
|
29535
30009
|
}
|
|
29536
30010
|
ngDoCheck() {
|
|
@@ -29725,7 +30199,7 @@ class ClrWizard {
|
|
|
29725
30199
|
this.pageTitle?.nativeElement.focus();
|
|
29726
30200
|
this.currentPageChanged.emit();
|
|
29727
30201
|
// scroll to top of page in case there is long page content
|
|
29728
|
-
this.
|
|
30202
|
+
this.bodyElementRef?.nativeElement.scrollTo(0, 0);
|
|
29729
30203
|
});
|
|
29730
30204
|
}
|
|
29731
30205
|
updateNavOnPageChanges() {
|
|
@@ -29749,7 +30223,7 @@ class ClrWizard {
|
|
|
29749
30223
|
}
|
|
29750
30224
|
}
|
|
29751
30225
|
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 });
|
|
29752
|
-
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.
|
|
30226
|
+
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"] }] });
|
|
29753
30227
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrWizard, decorators: [{
|
|
29754
30228
|
type: Component,
|
|
29755
30229
|
args: [{ selector: 'clr-wizard', providers: [WizardNavigationService, PageCollectionService, ButtonHubService, HeaderActionService], host: {
|
|
@@ -29757,8 +30231,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
29757
30231
|
'[class.wizard-md]': "size == 'md'",
|
|
29758
30232
|
'[class.wizard-lg]': "size == 'lg'",
|
|
29759
30233
|
'[class.wizard-xl]': "size == 'xl'",
|
|
29760
|
-
'[class.
|
|
29761
|
-
|
|
30234
|
+
'[class.wizard-in-page]': 'inPage',
|
|
30235
|
+
'[class.wizard-in-page--fill-content-area]': 'inPage && inPageFillContentArea',
|
|
30236
|
+
}, 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" }]
|
|
29762
30237
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
29763
30238
|
type: Inject,
|
|
29764
30239
|
args: [PLATFORM_ID]
|
|
@@ -29768,6 +30243,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
29768
30243
|
}], size: [{
|
|
29769
30244
|
type: Input,
|
|
29770
30245
|
args: ['clrWizardSize']
|
|
30246
|
+
}], inPage: [{
|
|
30247
|
+
type: Input,
|
|
30248
|
+
args: ['clrWizardInPage']
|
|
30249
|
+
}], inPageFillContentArea: [{
|
|
30250
|
+
type: Input,
|
|
30251
|
+
args: ['clrWizardInPageFillContentArea']
|
|
29771
30252
|
}], closable: [{
|
|
29772
30253
|
type: Input,
|
|
29773
30254
|
args: ['clrWizardClosable']
|
|
@@ -29807,6 +30288,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
29807
30288
|
}], wizardTitle: [{
|
|
29808
30289
|
type: ContentChild,
|
|
29809
30290
|
args: [ClrWizardTitle]
|
|
30291
|
+
}], bodyElementRef: [{
|
|
30292
|
+
type: ViewChild,
|
|
30293
|
+
args: ['body']
|
|
29810
30294
|
}], modal: [{
|
|
29811
30295
|
type: ViewChild,
|
|
29812
30296
|
args: [ClrModal]
|
|
@@ -30386,9 +30870,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
30386
30870
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
30387
30871
|
*/
|
|
30388
30872
|
|
|
30873
|
+
/*
|
|
30874
|
+
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
30875
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
30876
|
+
* This software is released under MIT license.
|
|
30877
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
30878
|
+
*/
|
|
30879
|
+
|
|
30389
30880
|
/**
|
|
30390
30881
|
* Generated bundle index. Do not edit.
|
|
30391
30882
|
*/
|
|
30392
30883
|
|
|
30393
|
-
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 };
|
|
30884
|
+
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 };
|
|
30394
30885
|
//# sourceMappingURL=clr-angular.mjs.map
|