@clr/angular 17.9.0 → 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 +92 -52
- package/data/datagrid/datagrid-row.d.ts +5 -4
- package/data/datagrid/datagrid-virtual-scroll.directive.d.ts +3 -7
- 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/esm2020/data/datagrid/datagrid-column.mjs +8 -12
- package/esm2020/data/datagrid/datagrid-row.mjs +21 -8
- package/esm2020/data/datagrid/datagrid-virtual-scroll.directive.mjs +23 -20
- 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/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 +790 -338
- package/fesm2015/clr-angular.mjs.map +1 -1
- package/fesm2020/clr-angular.mjs +788 -334
- package/fesm2020/clr-angular.mjs.map +1 -1
- package/modal/modal.d.ts +3 -2
- package/package.json +2 -2
- package/utils/animations/constants.d.ts +1 -0
- package/utils/animations/expandable-animation/base-expandable-animation.d.ts +13 -0
- package/utils/animations/expandable-animation/expandable-animation.d.ts +2 -6
- package/utils/animations/expandable-animation/expandable-animation.directive.d.ts +16 -0
- package/utils/animations/expandable-animation/expandable-animation.module.d.ts +3 -2
- package/utils/animations/expandable-animation/index.d.ts +1 -0
- package/wizard/wizard.d.ts +12 -2
package/fesm2015/clr-angular.mjs
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Directive, NgModule, Optional, Input, Injectable, Component, ChangeDetectionStrategy, EventEmitter, SkipSelf, HostBinding, Output, ContentChildren, PLATFORM_ID, Inject, ViewChild, HostListener, Renderer2, InjectionToken, ElementRef, NgZone, ChangeDetectorRef, ContentChild, ComponentFactoryResolver, KeyValueDiffers, Self, forwardRef, Attribute, TemplateRef, ViewContainerRef, LOCALE_ID, inject, Injector, VERSION, EnvironmentInjector, IterableDiffers } from '@angular/core';
|
|
2
|
+
import { Directive, NgModule, Optional, Input, Injectable, Component, ChangeDetectionStrategy, EventEmitter, SkipSelf, HostBinding, Output, ContentChildren, PLATFORM_ID, Inject, ViewChild, HostListener, Renderer2, InjectionToken, ElementRef, NgZone, ChangeDetectorRef, ContentChild, ComponentFactoryResolver, KeyValueDiffers, Self, forwardRef, Attribute, TemplateRef, ViewContainerRef, LOCALE_ID, inject, Injector, VERSION, EnvironmentInjector, IterableDiffers, ViewChildren } from '@angular/core';
|
|
3
3
|
import * as i5 from '@angular/common';
|
|
4
4
|
import { CommonModule, isPlatformBrowser, DOCUMENT, NgForOf, getLocaleDayNames, FormStyle, TranslationWidth, getLocaleMonthNames, getLocaleFirstDayOfWeek, getLocaleDateFormat, FormatWidth } from '@angular/common';
|
|
5
5
|
import { ClarityIcons, angleIcon, exclamationCircleIcon, checkCircleIcon, ellipsisHorizontalIcon, windowCloseIcon, infoCircleIcon, timesIcon, angleDoubleIcon, eventIcon, calendarIcon, folderOpenIcon, minusIcon, plusIcon, eyeHideIcon, eyeIcon, ellipsisVerticalIcon, viewColumnsIcon, arrowIcon, stepForward2Icon, filterGridCircleIcon, filterGridIcon, errorStandardIcon, helpIcon, infoStandardIcon, noteIcon, successStandardIcon, warningStandardIcon, circleIcon, dotCircleIcon } from '@cds/core/icon';
|
|
6
6
|
import { map, tap, startWith, distinctUntilChanged, filter, skipUntil, debounceTime, takeUntil, take, first, switchMap as switchMap$1 } from 'rxjs/operators';
|
|
7
7
|
import * as i3 from 'rxjs';
|
|
8
8
|
import { Subject, BehaviorSubject, Observable, fromEvent, isObservable, of, shareReplay, combineLatest, startWith as startWith$1, switchMap, merge, map as map$1, EMPTY, ReplaySubject, tap as tap$1 } from 'rxjs';
|
|
9
|
-
import
|
|
9
|
+
import * as i2 from '@angular/animations';
|
|
10
|
+
import { animation, style, animate, trigger, transition, state, useAnimation, keyframes } from '@angular/animations';
|
|
10
11
|
import * as i1 from '@angular/forms';
|
|
11
12
|
import { FormControl, FormGroup, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, SelectMultipleControlValueAccessor } from '@angular/forms';
|
|
12
13
|
import * as i1$1 from '@angular/router';
|
|
13
14
|
import { RouterModule } from '@angular/router';
|
|
14
15
|
import * as i1$2 from '@angular/cdk/a11y';
|
|
15
16
|
import { CdkTrapFocus } from '@angular/cdk/a11y';
|
|
16
|
-
import * as i2 from '@angular/cdk/drag-drop';
|
|
17
|
+
import * as i2$1 from '@angular/cdk/drag-drop';
|
|
17
18
|
import { CdkDrag, CDK_DROP_LIST, CDK_DRAG_CONFIG } from '@angular/cdk/drag-drop';
|
|
18
19
|
import * as i1$3 from '@angular/cdk/bidi';
|
|
19
20
|
import { Directionality } from '@angular/cdk/bidi';
|
|
@@ -235,6 +236,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
235
236
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
236
237
|
*/
|
|
237
238
|
const defaultAnimationTiming = '0.2s ease-in-out';
|
|
239
|
+
const defaultExpandAnimation = animation([style({ height: '{{ startHeight }}px' }), animate(defaultAnimationTiming, style({ height: '*' }))], {
|
|
240
|
+
params: {
|
|
241
|
+
startHeight: 0, // default
|
|
242
|
+
},
|
|
243
|
+
});
|
|
238
244
|
|
|
239
245
|
/*
|
|
240
246
|
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
@@ -3117,54 +3123,68 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
3117
3123
|
* This software is released under MIT license.
|
|
3118
3124
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
3119
3125
|
*/
|
|
3120
|
-
class
|
|
3126
|
+
class BaseExpandableAnimation {
|
|
3121
3127
|
constructor(element, domAdapter, renderer) {
|
|
3122
3128
|
this.element = element;
|
|
3123
3129
|
this.domAdapter = domAdapter;
|
|
3124
3130
|
this.renderer = renderer;
|
|
3125
|
-
this.clrExpandTrigger = false;
|
|
3126
3131
|
this.startHeight = 0;
|
|
3127
3132
|
}
|
|
3133
|
+
updateStartHeight() {
|
|
3134
|
+
this.startHeight = this.domAdapter.computedHeight(this.element.nativeElement) || 0;
|
|
3135
|
+
}
|
|
3136
|
+
initAnimationEffects() {
|
|
3137
|
+
this.renderer.setStyle(this.element.nativeElement, 'overflow', 'hidden');
|
|
3138
|
+
}
|
|
3139
|
+
cleanupAnimationEffects(cancelAnimations = false) {
|
|
3140
|
+
this.renderer.removeStyle(this.element.nativeElement, 'overflow');
|
|
3141
|
+
// A "safe" auto-update of the height ensuring basic OOTB user experience .
|
|
3142
|
+
// Prone to small jumps in initial animation height if data was changed in the meantime, the window was resized, etc.
|
|
3143
|
+
// For optimal behavior call manually updateStartHeight() from the parent component before initiating the update.
|
|
3144
|
+
this.updateStartHeight();
|
|
3145
|
+
if (cancelAnimations) {
|
|
3146
|
+
this.cancelElementAnimations();
|
|
3147
|
+
}
|
|
3148
|
+
}
|
|
3149
|
+
cancelElementAnimations() {
|
|
3150
|
+
this.element.nativeElement.getAnimations().forEach(animation => {
|
|
3151
|
+
if (animation.playState === 'finished') {
|
|
3152
|
+
animation.cancel(); // clears animation-style set on the element
|
|
3153
|
+
}
|
|
3154
|
+
});
|
|
3155
|
+
}
|
|
3156
|
+
}
|
|
3157
|
+
|
|
3158
|
+
/*
|
|
3159
|
+
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
3160
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
3161
|
+
* This software is released under MIT license.
|
|
3162
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
3163
|
+
*/
|
|
3164
|
+
class ClrExpandableAnimation extends BaseExpandableAnimation {
|
|
3165
|
+
constructor(element, domAdapter, renderer) {
|
|
3166
|
+
super(element, domAdapter, renderer);
|
|
3167
|
+
this.clrExpandTrigger = false;
|
|
3168
|
+
}
|
|
3128
3169
|
get expandAnimation() {
|
|
3129
3170
|
return { value: this.clrExpandTrigger, params: { startHeight: this.startHeight } };
|
|
3130
3171
|
}
|
|
3131
3172
|
animationStart(event) {
|
|
3132
3173
|
if (event.fromState !== 'void') {
|
|
3133
|
-
this.
|
|
3174
|
+
this.initAnimationEffects();
|
|
3134
3175
|
}
|
|
3135
3176
|
}
|
|
3136
3177
|
animationDone(event) {
|
|
3137
3178
|
if (event.fromState !== 'void') {
|
|
3138
|
-
this.
|
|
3139
|
-
// A "safe" auto-update of the height ensuring basic OOTB user experience .
|
|
3140
|
-
// Prone to small jumps in initial animation height if data was changed in the meantime, window was resized, etc.
|
|
3141
|
-
// For optimal behavior call manually updateStartHeight() from the parent component before initiating the update.
|
|
3142
|
-
this.updateStartHeight();
|
|
3179
|
+
this.cleanupAnimationEffects();
|
|
3143
3180
|
}
|
|
3144
3181
|
}
|
|
3145
|
-
updateStartHeight() {
|
|
3146
|
-
this.startHeight = this.domAdapter.computedHeight(this.element.nativeElement) || 0;
|
|
3147
|
-
}
|
|
3148
3182
|
}
|
|
3149
3183
|
ClrExpandableAnimation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrExpandableAnimation, deps: [{ token: i0.ElementRef }, { token: DomAdapter }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
3150
|
-
ClrExpandableAnimation.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrExpandableAnimation, selector: "clr-expandable-animation", inputs: { clrExpandTrigger: "clrExpandTrigger" }, host: { listeners: { "@expandAnimation.start": "animationStart($event)", "@expandAnimation.done": "animationDone($event)" }, properties: { "@expandAnimation": "this.expandAnimation" } }, providers: [DomAdapter], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{display:block}\n"], animations: [
|
|
3151
|
-
trigger('expandAnimation', [
|
|
3152
|
-
transition('true <=> false', [
|
|
3153
|
-
style({ height: '{{startHeight}}px' }),
|
|
3154
|
-
animate('0.2s ease-in-out', style({ height: '*' })),
|
|
3155
|
-
]),
|
|
3156
|
-
]),
|
|
3157
|
-
] });
|
|
3184
|
+
ClrExpandableAnimation.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrExpandableAnimation, selector: "clr-expandable-animation", inputs: { clrExpandTrigger: "clrExpandTrigger" }, host: { listeners: { "@expandAnimation.start": "animationStart($event)", "@expandAnimation.done": "animationDone($event)" }, properties: { "@expandAnimation": "this.expandAnimation" } }, providers: [DomAdapter], usesInheritance: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{display:block}\n"], animations: [trigger('expandAnimation', [transition('true <=> false', [useAnimation(defaultExpandAnimation)])])] });
|
|
3158
3185
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrExpandableAnimation, decorators: [{
|
|
3159
3186
|
type: Component,
|
|
3160
|
-
args: [{ selector: 'clr-expandable-animation', template: `<ng-content></ng-content>`, animations: [
|
|
3161
|
-
trigger('expandAnimation', [
|
|
3162
|
-
transition('true <=> false', [
|
|
3163
|
-
style({ height: '{{startHeight}}px' }),
|
|
3164
|
-
animate('0.2s ease-in-out', style({ height: '*' })),
|
|
3165
|
-
]),
|
|
3166
|
-
]),
|
|
3167
|
-
], providers: [DomAdapter], styles: [":host{display:block}\n"] }]
|
|
3187
|
+
args: [{ selector: 'clr-expandable-animation', template: `<ng-content></ng-content>`, animations: [trigger('expandAnimation', [transition('true <=> false', [useAnimation(defaultExpandAnimation)])])], providers: [DomAdapter], styles: [":host{display:block}\n"] }]
|
|
3168
3188
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: DomAdapter }, { type: i0.Renderer2 }]; }, propDecorators: { clrExpandTrigger: [{
|
|
3169
3189
|
type: Input
|
|
3170
3190
|
}], expandAnimation: [{
|
|
@@ -3184,7 +3204,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
3184
3204
|
* This software is released under MIT license.
|
|
3185
3205
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
3186
3206
|
*/
|
|
3187
|
-
|
|
3207
|
+
class ClrExpandableAnimationDirective extends BaseExpandableAnimation {
|
|
3208
|
+
constructor(element, domAdapter, renderer, builder) {
|
|
3209
|
+
super(element, domAdapter, renderer);
|
|
3210
|
+
this.builder = builder;
|
|
3211
|
+
this.expanded = false;
|
|
3212
|
+
}
|
|
3213
|
+
ngOnChanges(changes) {
|
|
3214
|
+
if (changes['expanded'] && !changes['expanded'].firstChange) {
|
|
3215
|
+
Promise.resolve().then(() => this.playAnimation());
|
|
3216
|
+
}
|
|
3217
|
+
}
|
|
3218
|
+
ngOnDestroy() {
|
|
3219
|
+
var _a;
|
|
3220
|
+
(_a = this.player) === null || _a === void 0 ? void 0 : _a.destroy();
|
|
3221
|
+
}
|
|
3222
|
+
playAnimation() {
|
|
3223
|
+
if (this.player) {
|
|
3224
|
+
this.player.destroy();
|
|
3225
|
+
}
|
|
3226
|
+
this.player = this.builder
|
|
3227
|
+
.build([useAnimation(defaultExpandAnimation, { params: { startHeight: this.startHeight } })])
|
|
3228
|
+
.create(this.element.nativeElement);
|
|
3229
|
+
this.player.onStart(() => this.initAnimationEffects());
|
|
3230
|
+
this.player.onDone(() => this.cleanupAnimationEffects(true));
|
|
3231
|
+
this.player.play();
|
|
3232
|
+
}
|
|
3233
|
+
}
|
|
3234
|
+
ClrExpandableAnimationDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrExpandableAnimationDirective, deps: [{ token: i0.ElementRef }, { token: DomAdapter }, { token: i0.Renderer2 }, { token: i2.AnimationBuilder }], target: i0.ɵɵFactoryTarget.Directive });
|
|
3235
|
+
ClrExpandableAnimationDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrExpandableAnimationDirective, selector: "[clrExpandableAnimation]", inputs: { expanded: ["clrExpandableAnimation", "expanded"] }, host: { properties: { "class.clr-expandable-animation": "true" } }, providers: [DomAdapter], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
|
|
3236
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrExpandableAnimationDirective, decorators: [{
|
|
3237
|
+
type: Directive,
|
|
3238
|
+
args: [{
|
|
3239
|
+
selector: '[clrExpandableAnimation]',
|
|
3240
|
+
providers: [DomAdapter],
|
|
3241
|
+
host: {
|
|
3242
|
+
'[class.clr-expandable-animation]': 'true',
|
|
3243
|
+
},
|
|
3244
|
+
}]
|
|
3245
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: DomAdapter }, { type: i0.Renderer2 }, { type: i2.AnimationBuilder }]; }, propDecorators: { expanded: [{
|
|
3246
|
+
type: Input,
|
|
3247
|
+
args: ['clrExpandableAnimation']
|
|
3248
|
+
}] } });
|
|
3249
|
+
|
|
3250
|
+
/*
|
|
3251
|
+
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
3252
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
3253
|
+
* This software is released under MIT license.
|
|
3254
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
3255
|
+
*/
|
|
3256
|
+
const EXPANDABLE_ANIMATION_DIRECTIVES = [ClrExpandableAnimation, ClrExpandableAnimationDirective];
|
|
3188
3257
|
|
|
3189
3258
|
/*
|
|
3190
3259
|
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
@@ -5185,7 +5254,7 @@ class Popover {
|
|
|
5185
5254
|
this._scroll = new Subject();
|
|
5186
5255
|
const anchor = e;
|
|
5187
5256
|
let current = e;
|
|
5188
|
-
while (current && current !== document) {
|
|
5257
|
+
while (current && current !== document && current.nodeType === Node.ELEMENT_NODE) {
|
|
5189
5258
|
if (this.scrolls(current)) {
|
|
5190
5259
|
current.addEventListener('scroll', this.boundOnScrollListener);
|
|
5191
5260
|
this.scrollableElements.push(current);
|
|
@@ -5516,7 +5585,7 @@ class BasicFocusableItem {
|
|
|
5516
5585
|
if (isPlatformBrowser(this.platformId)) {
|
|
5517
5586
|
this.renderer.setAttribute(this.el.nativeElement, 'tabindex', '0');
|
|
5518
5587
|
this.el.nativeElement.focus();
|
|
5519
|
-
this.el.nativeElement.scrollIntoView({ behavior: 'smooth', block: '
|
|
5588
|
+
this.el.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'nearest' });
|
|
5520
5589
|
}
|
|
5521
5590
|
}
|
|
5522
5591
|
blur() {
|
|
@@ -10049,14 +10118,14 @@ class ClrBreadcrumbs {
|
|
|
10049
10118
|
}
|
|
10050
10119
|
}
|
|
10051
10120
|
ClrBreadcrumbs.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrBreadcrumbs, deps: [{ token: ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
10052
|
-
ClrBreadcrumbs.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrBreadcrumbs, selector: "clr-breadcrumbs", inputs: { items: "items" }, outputs: { clrBreadcrumbItemClick: "clrBreadcrumbItemClick" }, host: { properties: { "attr.aria-label": "commonStrings.keys.breadcrumbsLabel", "attr.role": "\"navigation\"" }, classAttribute: "clr-breadcrumb" }, ngImport: i0, template: "<div *ngIf=\"items?.length\" role=\"list\" class=\"clr-breadcrumb-menu\">\n <clr-breadcrumb-item *ngIf=\"items.length > max && !isExpanded\">\n <button\n [attr.aria-label]=\"commonStrings.keys.expandBreadcrumbsLabel\"\n class=\"btn btn-link btn-sm clr-breadcrumb-expand\"\n (click)=\"expand()\"\n (keydown)=\"expand()\"\n >\n <cds-icon shape=\"ellipsis-horizontal\"></cds-icon>\n </button>\n </clr-breadcrumb-item>\n <clr-breadcrumb-item *ngFor=\"let breadcrumb of items | slice: -limit : items.length; let isLastItem=last\">\n <span *ngIf=\"isLastItem; else breadcrumbLinks\" aria-current=\"page\">{{ breadcrumb.label }}</span>\n\n <ng-template #breadcrumbLinks>\n <a\n *ngIf=\"breadcrumb.routerLink\"\n [routerLink]=\"breadcrumb.routerLink\"\n [queryParams]=\"breadcrumb.queryParams\"\n [target]=\"breadcrumb.target || '_self'\"\n (click)=\"handleItemClick(breadcrumb)\"\n >\n {{ breadcrumb.label }}\n </a>\n <a\n *ngIf=\"breadcrumb.href\"\n [href]=\"breadcrumb.href\"\n [target]=\"breadcrumb.target || '_self'\"\n (click)=\"handleItemClick(breadcrumb)\"\n >\n {{ breadcrumb.label }}\n </a>\n </ng-template>\n </clr-breadcrumb-item>\n</div>\n", styles: [":root [cds-theme]{--clr-breadcrumb-item-space: var(--cds-global-space-5)}.clr-breadcrumb-menu{display:flex;flex-wrap:wrap;align-items:center}.clr-breadcrumb-menu .clr-breadcrumb-item{display:flex;align-items:center;font-size:var(--cds-alias-typography-secondary-font-size);font-weight:var(--cds-alias-typography-secondary-font-weight);line-height:var(--cds-alias-typography-secondary-line-height);letter-spacing:var(--cds-alias-typography-secondary-letter-spacing)}.clr-breadcrumb-menu .clr-breadcrumb-item a{text-decoration:none;text-align:center;line-height:var(--cds-global-space-9)}.clr-breadcrumb-menu .clr-breadcrumb-item:not(:last-child):after{content:\"/\";margin:0 var(--clr-breadcrumb-item-space);color:var(--cds-alias-typography-color-400)}.clr-breadcrumb-menu .clr-breadcrumb-item:last-child{color:var(--cds-alias-typography-color-400)}.clr-breadcrumb-menu .clr-breadcrumb-expand{margin:0;padding:0;gap:0;min-width:-moz-fit-content;min-width:fit-content}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: ClrBreadcrumbItem, selector: "clr-breadcrumb-item" }, { kind: "pipe", type: i5.SlicePipe, name: "slice" }] });
|
|
10121
|
+
ClrBreadcrumbs.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrBreadcrumbs, selector: "clr-breadcrumbs", inputs: { items: "items" }, outputs: { clrBreadcrumbItemClick: "clrBreadcrumbItemClick" }, host: { properties: { "attr.aria-label": "commonStrings.keys.breadcrumbsLabel", "attr.role": "\"navigation\"" }, classAttribute: "clr-breadcrumb" }, ngImport: i0, template: "<div *ngIf=\"items?.length\" role=\"list\" class=\"clr-breadcrumb-menu\">\n <clr-breadcrumb-item *ngIf=\"items.length > max && !isExpanded\">\n <button\n [attr.aria-label]=\"commonStrings.keys.expandBreadcrumbsLabel\"\n class=\"btn btn-link btn-sm clr-breadcrumb-expand\"\n (click)=\"expand()\"\n (keydown)=\"expand()\"\n >\n <cds-icon shape=\"ellipsis-horizontal\"></cds-icon>\n </button>\n </clr-breadcrumb-item>\n <clr-breadcrumb-item *ngFor=\"let breadcrumb of items | slice: -limit : items.length; let isLastItem=last\">\n <span *ngIf=\"isLastItem; else breadcrumbLinks\" aria-current=\"page\">{{ breadcrumb.label }}</span>\n\n <ng-template #breadcrumbLinks>\n <a\n *ngIf=\"breadcrumb.routerLink\"\n [routerLink]=\"breadcrumb.routerLink\"\n [queryParams]=\"breadcrumb.queryParams\"\n [target]=\"breadcrumb.target || '_self'\"\n (click)=\"handleItemClick(breadcrumb)\"\n >\n {{ breadcrumb.label }}\n </a>\n <a\n *ngIf=\"breadcrumb.href\"\n [href]=\"breadcrumb.href\"\n [target]=\"breadcrumb.target || '_self'\"\n (click)=\"handleItemClick(breadcrumb)\"\n >\n {{ breadcrumb.label }}\n </a>\n </ng-template>\n </clr-breadcrumb-item>\n</div>\n", styles: [":root [cds-theme]{--clr-breadcrumb-item-space: var(--cds-global-space-5)}.clr-breadcrumb-menu{display:flex;flex-wrap:wrap;align-items:center}.clr-breadcrumb-menu .clr-breadcrumb-item{display:flex;align-items:center;font-size:var(--cds-alias-typography-secondary-font-size);font-weight:var(--cds-alias-typography-secondary-font-weight);line-height:var(--cds-alias-typography-secondary-line-height);letter-spacing:var(--cds-alias-typography-secondary-letter-spacing)}.clr-breadcrumb-menu .clr-breadcrumb-item a{text-decoration:none;text-align:center;line-height:var(--cds-global-space-9)}.clr-breadcrumb-menu .clr-breadcrumb-item a:visited{color:var(--clr-link-color)}.clr-breadcrumb-menu .clr-breadcrumb-item a:visited:hover{color:var(--clr-link-hover-color)}.clr-breadcrumb-menu .clr-breadcrumb-item:not(:last-child):after{content:\"/\";margin:0 var(--clr-breadcrumb-item-space);color:var(--cds-alias-typography-color-400)}.clr-breadcrumb-menu .clr-breadcrumb-item:last-child{color:var(--cds-alias-typography-color-400)}.clr-breadcrumb-menu .clr-breadcrumb-expand{margin:0;padding:0;gap:0;min-width:-moz-fit-content;min-width:fit-content}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: ClrBreadcrumbItem, selector: "clr-breadcrumb-item" }, { kind: "pipe", type: i5.SlicePipe, name: "slice" }] });
|
|
10053
10122
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrBreadcrumbs, decorators: [{
|
|
10054
10123
|
type: Component,
|
|
10055
10124
|
args: [{ selector: 'clr-breadcrumbs', host: {
|
|
10056
10125
|
class: 'clr-breadcrumb',
|
|
10057
10126
|
'[attr.aria-label]': 'commonStrings.keys.breadcrumbsLabel',
|
|
10058
10127
|
'[attr.role]': '"navigation"',
|
|
10059
|
-
}, template: "<div *ngIf=\"items?.length\" role=\"list\" class=\"clr-breadcrumb-menu\">\n <clr-breadcrumb-item *ngIf=\"items.length > max && !isExpanded\">\n <button\n [attr.aria-label]=\"commonStrings.keys.expandBreadcrumbsLabel\"\n class=\"btn btn-link btn-sm clr-breadcrumb-expand\"\n (click)=\"expand()\"\n (keydown)=\"expand()\"\n >\n <cds-icon shape=\"ellipsis-horizontal\"></cds-icon>\n </button>\n </clr-breadcrumb-item>\n <clr-breadcrumb-item *ngFor=\"let breadcrumb of items | slice: -limit : items.length; let isLastItem=last\">\n <span *ngIf=\"isLastItem; else breadcrumbLinks\" aria-current=\"page\">{{ breadcrumb.label }}</span>\n\n <ng-template #breadcrumbLinks>\n <a\n *ngIf=\"breadcrumb.routerLink\"\n [routerLink]=\"breadcrumb.routerLink\"\n [queryParams]=\"breadcrumb.queryParams\"\n [target]=\"breadcrumb.target || '_self'\"\n (click)=\"handleItemClick(breadcrumb)\"\n >\n {{ breadcrumb.label }}\n </a>\n <a\n *ngIf=\"breadcrumb.href\"\n [href]=\"breadcrumb.href\"\n [target]=\"breadcrumb.target || '_self'\"\n (click)=\"handleItemClick(breadcrumb)\"\n >\n {{ breadcrumb.label }}\n </a>\n </ng-template>\n </clr-breadcrumb-item>\n</div>\n", styles: [":root [cds-theme]{--clr-breadcrumb-item-space: var(--cds-global-space-5)}.clr-breadcrumb-menu{display:flex;flex-wrap:wrap;align-items:center}.clr-breadcrumb-menu .clr-breadcrumb-item{display:flex;align-items:center;font-size:var(--cds-alias-typography-secondary-font-size);font-weight:var(--cds-alias-typography-secondary-font-weight);line-height:var(--cds-alias-typography-secondary-line-height);letter-spacing:var(--cds-alias-typography-secondary-letter-spacing)}.clr-breadcrumb-menu .clr-breadcrumb-item a{text-decoration:none;text-align:center;line-height:var(--cds-global-space-9)}.clr-breadcrumb-menu .clr-breadcrumb-item:not(:last-child):after{content:\"/\";margin:0 var(--clr-breadcrumb-item-space);color:var(--cds-alias-typography-color-400)}.clr-breadcrumb-menu .clr-breadcrumb-item:last-child{color:var(--cds-alias-typography-color-400)}.clr-breadcrumb-menu .clr-breadcrumb-expand{margin:0;padding:0;gap:0;min-width:-moz-fit-content;min-width:fit-content}\n"] }]
|
|
10128
|
+
}, template: "<div *ngIf=\"items?.length\" role=\"list\" class=\"clr-breadcrumb-menu\">\n <clr-breadcrumb-item *ngIf=\"items.length > max && !isExpanded\">\n <button\n [attr.aria-label]=\"commonStrings.keys.expandBreadcrumbsLabel\"\n class=\"btn btn-link btn-sm clr-breadcrumb-expand\"\n (click)=\"expand()\"\n (keydown)=\"expand()\"\n >\n <cds-icon shape=\"ellipsis-horizontal\"></cds-icon>\n </button>\n </clr-breadcrumb-item>\n <clr-breadcrumb-item *ngFor=\"let breadcrumb of items | slice: -limit : items.length; let isLastItem=last\">\n <span *ngIf=\"isLastItem; else breadcrumbLinks\" aria-current=\"page\">{{ breadcrumb.label }}</span>\n\n <ng-template #breadcrumbLinks>\n <a\n *ngIf=\"breadcrumb.routerLink\"\n [routerLink]=\"breadcrumb.routerLink\"\n [queryParams]=\"breadcrumb.queryParams\"\n [target]=\"breadcrumb.target || '_self'\"\n (click)=\"handleItemClick(breadcrumb)\"\n >\n {{ breadcrumb.label }}\n </a>\n <a\n *ngIf=\"breadcrumb.href\"\n [href]=\"breadcrumb.href\"\n [target]=\"breadcrumb.target || '_self'\"\n (click)=\"handleItemClick(breadcrumb)\"\n >\n {{ breadcrumb.label }}\n </a>\n </ng-template>\n </clr-breadcrumb-item>\n</div>\n", styles: [":root [cds-theme]{--clr-breadcrumb-item-space: var(--cds-global-space-5)}.clr-breadcrumb-menu{display:flex;flex-wrap:wrap;align-items:center}.clr-breadcrumb-menu .clr-breadcrumb-item{display:flex;align-items:center;font-size:var(--cds-alias-typography-secondary-font-size);font-weight:var(--cds-alias-typography-secondary-font-weight);line-height:var(--cds-alias-typography-secondary-line-height);letter-spacing:var(--cds-alias-typography-secondary-letter-spacing)}.clr-breadcrumb-menu .clr-breadcrumb-item a{text-decoration:none;text-align:center;line-height:var(--cds-global-space-9)}.clr-breadcrumb-menu .clr-breadcrumb-item a:visited{color:var(--clr-link-color)}.clr-breadcrumb-menu .clr-breadcrumb-item a:visited:hover{color:var(--clr-link-hover-color)}.clr-breadcrumb-menu .clr-breadcrumb-item:not(:last-child):after{content:\"/\";margin:0 var(--clr-breadcrumb-item-space);color:var(--cds-alias-typography-color-400)}.clr-breadcrumb-menu .clr-breadcrumb-item:last-child{color:var(--cds-alias-typography-color-400)}.clr-breadcrumb-menu .clr-breadcrumb-expand{margin:0;padding:0;gap:0;min-width:-moz-fit-content;min-width:fit-content}\n"] }]
|
|
10060
10129
|
}], ctorParameters: function () { return [{ type: ClrCommonStringsService }]; }, propDecorators: { items: [{
|
|
10061
10130
|
type: Input
|
|
10062
10131
|
}], clrBreadcrumbItemClick: [{
|
|
@@ -17338,7 +17407,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
17338
17407
|
class ClrExpandableAnimationModule {
|
|
17339
17408
|
}
|
|
17340
17409
|
ClrExpandableAnimationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrExpandableAnimationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
17341
|
-
ClrExpandableAnimationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: ClrExpandableAnimationModule, declarations: [ClrExpandableAnimation], imports: [CommonModule], exports: [ClrExpandableAnimation] });
|
|
17410
|
+
ClrExpandableAnimationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: ClrExpandableAnimationModule, declarations: [ClrExpandableAnimation, ClrExpandableAnimationDirective], imports: [CommonModule], exports: [ClrExpandableAnimation, ClrExpandableAnimationDirective] });
|
|
17342
17411
|
ClrExpandableAnimationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrExpandableAnimationModule, imports: [CommonModule] });
|
|
17343
17412
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrExpandableAnimationModule, decorators: [{
|
|
17344
17413
|
type: NgModule,
|
|
@@ -17362,7 +17431,7 @@ class CdkDragModule_CdkDrag extends CdkDrag {
|
|
|
17362
17431
|
super(elementRef, dropContainer, document, ngZone, viewContainerRef, config, dir, dragDrop, changeDetectorRef);
|
|
17363
17432
|
}
|
|
17364
17433
|
}
|
|
17365
|
-
CdkDragModule_CdkDrag.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: CdkDragModule_CdkDrag, deps: [{ token: i0.ElementRef }, { token: CDK_DROP_LIST, optional: true }, { token: DOCUMENT, optional: true }, { token: i0.NgZone }, { token: i0.ViewContainerRef }, { token: CDK_DRAG_CONFIG, optional: true }, { token: i1$3.Directionality }, { token: i2.DragDrop }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
17434
|
+
CdkDragModule_CdkDrag.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: CdkDragModule_CdkDrag, deps: [{ token: i0.ElementRef }, { token: CDK_DROP_LIST, optional: true }, { token: DOCUMENT, optional: true }, { token: i0.NgZone }, { token: i0.ViewContainerRef }, { token: CDK_DRAG_CONFIG, optional: true }, { token: i1$3.Directionality }, { token: i2$1.DragDrop }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
17366
17435
|
CdkDragModule_CdkDrag.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: CdkDragModule_CdkDrag, selector: "[cdkDrag]", usesInheritance: true, ngImport: i0 });
|
|
17367
17436
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: CdkDragModule_CdkDrag, decorators: [{
|
|
17368
17437
|
type: Directive,
|
|
@@ -17385,7 +17454,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
17385
17454
|
}, {
|
|
17386
17455
|
type: Inject,
|
|
17387
17456
|
args: [CDK_DRAG_CONFIG]
|
|
17388
|
-
}] }, { type: i1$3.Directionality }, { type: i2.DragDrop }, { type: i0.ChangeDetectorRef }];
|
|
17457
|
+
}] }, { type: i1$3.Directionality }, { type: i2$1.DragDrop }, { type: i0.ChangeDetectorRef }];
|
|
17389
17458
|
} });
|
|
17390
17459
|
/**
|
|
17391
17460
|
* This module allows us to avoid importing all of CdkDragDropModule which results in a smaller application bundle.
|
|
@@ -17825,6 +17894,547 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
17825
17894
|
type: Directive
|
|
17826
17895
|
}], ctorParameters: function () { return [{ type: FiltersProvider }]; } });
|
|
17827
17896
|
|
|
17897
|
+
/*
|
|
17898
|
+
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
17899
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
17900
|
+
* This software is released under MIT license.
|
|
17901
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
17902
|
+
*/
|
|
17903
|
+
class DefaultKeyNavigationStrategy {
|
|
17904
|
+
constructor(utils) {
|
|
17905
|
+
this.utils = utils;
|
|
17906
|
+
}
|
|
17907
|
+
keyUp(currentCellCoords) {
|
|
17908
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
17909
|
+
if (currentCellCoords.y === 0) {
|
|
17910
|
+
return nextCellCoords;
|
|
17911
|
+
}
|
|
17912
|
+
nextCellCoords.y = currentCellCoords.y - 1;
|
|
17913
|
+
const isActionCell = this.utils.isActionCell(currentCellCoords);
|
|
17914
|
+
if (this.utils.isSingleCellExpandedRow(nextCellCoords.y) &&
|
|
17915
|
+
!isActionCell &&
|
|
17916
|
+
this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
17917
|
+
nextCellCoords.x = 0;
|
|
17918
|
+
}
|
|
17919
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
17920
|
+
if (isActionCell) {
|
|
17921
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
17922
|
+
}
|
|
17923
|
+
else {
|
|
17924
|
+
nextCellCoords.x = nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
17925
|
+
}
|
|
17926
|
+
}
|
|
17927
|
+
return nextCellCoords;
|
|
17928
|
+
}
|
|
17929
|
+
keyDown(currentCellCoords) {
|
|
17930
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
17931
|
+
const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;
|
|
17932
|
+
if (currentCellCoords.y >= numOfRows) {
|
|
17933
|
+
return nextCellCoords;
|
|
17934
|
+
}
|
|
17935
|
+
const isActionCell = this.utils.isActionCell(currentCellCoords);
|
|
17936
|
+
nextCellCoords.y = currentCellCoords.y + 1;
|
|
17937
|
+
if (!isActionCell && this.utils.isRowReplaced(nextCellCoords.y)) {
|
|
17938
|
+
nextCellCoords.y = nextCellCoords.y + 1;
|
|
17939
|
+
nextCellCoords.x = this.utils.isSingleCellExpandedRow(nextCellCoords.y)
|
|
17940
|
+
? 0
|
|
17941
|
+
: nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
17942
|
+
}
|
|
17943
|
+
return nextCellCoords;
|
|
17944
|
+
}
|
|
17945
|
+
keyLeft(currentCellCoords) {
|
|
17946
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
17947
|
+
if (currentCellCoords.x === 0) {
|
|
17948
|
+
return nextCellCoords;
|
|
17949
|
+
}
|
|
17950
|
+
nextCellCoords.x = currentCellCoords.x - 1;
|
|
17951
|
+
return nextCellCoords;
|
|
17952
|
+
}
|
|
17953
|
+
keyRight(currentCellCoords) {
|
|
17954
|
+
var _a;
|
|
17955
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
17956
|
+
// calculate numOfColumns based on header cells.
|
|
17957
|
+
const numOfColumns = ((_a = this.utils.rows) === null || _a === void 0 ? void 0 : _a.length) - 1 ? this.utils.getCellsForRow(0).length - 1 : 0;
|
|
17958
|
+
nextCellCoords.x = currentCellCoords.x < numOfColumns ? nextCellCoords.x + 1 : nextCellCoords.x;
|
|
17959
|
+
return nextCellCoords;
|
|
17960
|
+
}
|
|
17961
|
+
keyEnd(currentCellCoords, ctrlKey) {
|
|
17962
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
17963
|
+
const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;
|
|
17964
|
+
// calculate X based on header cells.
|
|
17965
|
+
nextCellCoords.x = numOfRows ? this.utils.getCellsForRow(0).length - 1 : 0;
|
|
17966
|
+
if (ctrlKey) {
|
|
17967
|
+
nextCellCoords.y = numOfRows;
|
|
17968
|
+
if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
17969
|
+
nextCellCoords.x = this.utils.getCellsForRow(nextCellCoords.y).length - 1;
|
|
17970
|
+
}
|
|
17971
|
+
}
|
|
17972
|
+
return nextCellCoords;
|
|
17973
|
+
}
|
|
17974
|
+
keyHome(currentCellCoords, ctrlKey) {
|
|
17975
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
17976
|
+
nextCellCoords.x = 0;
|
|
17977
|
+
if (ctrlKey) {
|
|
17978
|
+
nextCellCoords.y = 0;
|
|
17979
|
+
}
|
|
17980
|
+
return nextCellCoords;
|
|
17981
|
+
}
|
|
17982
|
+
keyPageUp(currentCellCoords) {
|
|
17983
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
17984
|
+
const itemsPerPage = this.utils.itemsPerPage;
|
|
17985
|
+
nextCellCoords.y = currentCellCoords.y - itemsPerPage > 0 ? currentCellCoords.y - itemsPerPage + 1 : 1;
|
|
17986
|
+
if (!this.utils.isActionCell(currentCellCoords)) {
|
|
17987
|
+
if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
17988
|
+
nextCellCoords.x = this.utils.isSingleCellExpandedRow(nextCellCoords.y)
|
|
17989
|
+
? 0
|
|
17990
|
+
: nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
17991
|
+
}
|
|
17992
|
+
else if (this.utils.isRowReplaced(nextCellCoords.y)) {
|
|
17993
|
+
nextCellCoords.y = nextCellCoords.y + 1;
|
|
17994
|
+
nextCellCoords.x = this.utils.isSingleCellExpandedRow(nextCellCoords.y)
|
|
17995
|
+
? 0
|
|
17996
|
+
: nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
17997
|
+
}
|
|
17998
|
+
}
|
|
17999
|
+
else {
|
|
18000
|
+
if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18001
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
18002
|
+
}
|
|
18003
|
+
}
|
|
18004
|
+
return nextCellCoords;
|
|
18005
|
+
}
|
|
18006
|
+
keyPageDown(currentCellCoords) {
|
|
18007
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18008
|
+
const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;
|
|
18009
|
+
const itemsPerPage = this.utils.itemsPerPage;
|
|
18010
|
+
nextCellCoords.y = currentCellCoords.y + itemsPerPage >= numOfRows ? numOfRows : currentCellCoords.y + itemsPerPage;
|
|
18011
|
+
if (this.utils.isActionCell(currentCellCoords) && this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18012
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
18013
|
+
}
|
|
18014
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y) && this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {
|
|
18015
|
+
nextCellCoords.x = 0;
|
|
18016
|
+
}
|
|
18017
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18018
|
+
nextCellCoords.x = nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
18019
|
+
}
|
|
18020
|
+
else if (this.utils.isRowReplaced(nextCellCoords.y)) {
|
|
18021
|
+
nextCellCoords.y = nextCellCoords.y + 1;
|
|
18022
|
+
nextCellCoords.x = this.utils.isSingleCellExpandedRow(nextCellCoords.y)
|
|
18023
|
+
? 0
|
|
18024
|
+
: nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
18025
|
+
}
|
|
18026
|
+
return nextCellCoords;
|
|
18027
|
+
}
|
|
18028
|
+
}
|
|
18029
|
+
|
|
18030
|
+
/*
|
|
18031
|
+
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
18032
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
18033
|
+
* This software is released under MIT license.
|
|
18034
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18035
|
+
*/
|
|
18036
|
+
class ExpandedRowKeyNavigationStrategy extends DefaultKeyNavigationStrategy {
|
|
18037
|
+
constructor(utils) {
|
|
18038
|
+
super(utils);
|
|
18039
|
+
}
|
|
18040
|
+
keyUp(currentCellCoords) {
|
|
18041
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18042
|
+
if (currentCellCoords.y === 0) {
|
|
18043
|
+
return nextCellCoords;
|
|
18044
|
+
}
|
|
18045
|
+
nextCellCoords.y = currentCellCoords.y - 1;
|
|
18046
|
+
if (!this.utils.isActionCell(currentCellCoords)) {
|
|
18047
|
+
if (this.utils.isRowReplaced(currentCellCoords.y)) {
|
|
18048
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
18049
|
+
}
|
|
18050
|
+
switch (true) {
|
|
18051
|
+
case this.utils.isDetailsRow(nextCellCoords.y):
|
|
18052
|
+
nextCellCoords.x = 0;
|
|
18053
|
+
break;
|
|
18054
|
+
case this.utils.isDetailsRow(currentCellCoords.y) === false:
|
|
18055
|
+
nextCellCoords.x = currentCellCoords.x;
|
|
18056
|
+
break;
|
|
18057
|
+
default:
|
|
18058
|
+
nextCellCoords.x = this.utils.actionCellCount(nextCellCoords.y);
|
|
18059
|
+
}
|
|
18060
|
+
}
|
|
18061
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y) && nextCellCoords.y > 0) {
|
|
18062
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
18063
|
+
}
|
|
18064
|
+
return nextCellCoords;
|
|
18065
|
+
}
|
|
18066
|
+
keyDown(currentCellCoords) {
|
|
18067
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18068
|
+
const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;
|
|
18069
|
+
if (currentCellCoords.y >= numOfRows) {
|
|
18070
|
+
return nextCellCoords;
|
|
18071
|
+
}
|
|
18072
|
+
nextCellCoords.y = currentCellCoords.y + 1;
|
|
18073
|
+
if (!this.utils.isActionCell(currentCellCoords)) {
|
|
18074
|
+
if (this.utils.isRowReplaced(nextCellCoords.y)) {
|
|
18075
|
+
nextCellCoords.y = nextCellCoords.y + 1;
|
|
18076
|
+
}
|
|
18077
|
+
if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18078
|
+
nextCellCoords.x = 0;
|
|
18079
|
+
}
|
|
18080
|
+
else {
|
|
18081
|
+
nextCellCoords.x = this.utils.actionCellCount(nextCellCoords.y);
|
|
18082
|
+
}
|
|
18083
|
+
}
|
|
18084
|
+
else {
|
|
18085
|
+
nextCellCoords.y = nextCellCoords.y < numOfRows ? nextCellCoords.y + 1 : nextCellCoords.y;
|
|
18086
|
+
}
|
|
18087
|
+
return nextCellCoords;
|
|
18088
|
+
}
|
|
18089
|
+
keyLeft(currentCellCoords) {
|
|
18090
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18091
|
+
if (!this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isRowReplaced(currentCellCoords.y)) {
|
|
18092
|
+
return super.keyLeft(currentCellCoords);
|
|
18093
|
+
}
|
|
18094
|
+
if (currentCellCoords.x !== 0) {
|
|
18095
|
+
nextCellCoords.x = currentCellCoords.x - 1;
|
|
18096
|
+
}
|
|
18097
|
+
else if (!this.utils.isActionCell(currentCellCoords)) {
|
|
18098
|
+
nextCellCoords.y = currentCellCoords.y - 1;
|
|
18099
|
+
nextCellCoords.x = this.utils.actionCellCount(nextCellCoords.y) - 1;
|
|
18100
|
+
}
|
|
18101
|
+
return nextCellCoords;
|
|
18102
|
+
}
|
|
18103
|
+
keyRight(currentCellCoords) {
|
|
18104
|
+
var _a;
|
|
18105
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18106
|
+
if (!this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isRowReplaced(currentCellCoords.y)) {
|
|
18107
|
+
return super.keyRight(currentCellCoords);
|
|
18108
|
+
}
|
|
18109
|
+
// calculate numOfColumns based on header cells.
|
|
18110
|
+
const numOfColumns = ((_a = this.utils.rows) === null || _a === void 0 ? void 0 : _a.length) - 1 ? this.utils.getCellsForRow(0).length - 1 : 0;
|
|
18111
|
+
if (currentCellCoords.x >= numOfColumns) {
|
|
18112
|
+
return nextCellCoords;
|
|
18113
|
+
}
|
|
18114
|
+
if (this.utils.isActionCell(currentCellCoords) &&
|
|
18115
|
+
currentCellCoords.x === this.utils.actionCellCount(currentCellCoords.x) - 1 &&
|
|
18116
|
+
this.utils.isRowReplaced(currentCellCoords.y) &&
|
|
18117
|
+
!this.utils.isDetailsRow(currentCellCoords.y)) {
|
|
18118
|
+
nextCellCoords.y = currentCellCoords.y + 1;
|
|
18119
|
+
nextCellCoords.x = 0;
|
|
18120
|
+
}
|
|
18121
|
+
else {
|
|
18122
|
+
nextCellCoords.x = currentCellCoords.x + 1;
|
|
18123
|
+
}
|
|
18124
|
+
return nextCellCoords;
|
|
18125
|
+
}
|
|
18126
|
+
keyEnd(currentCellCoords, ctrlKey) {
|
|
18127
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18128
|
+
if ((!this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isRowReplaced(currentCellCoords.y)) || ctrlKey) {
|
|
18129
|
+
return super.keyEnd(currentCellCoords, ctrlKey);
|
|
18130
|
+
}
|
|
18131
|
+
nextCellCoords.x = this.utils.getCellsForRow(currentCellCoords.y).length - 1;
|
|
18132
|
+
return nextCellCoords;
|
|
18133
|
+
}
|
|
18134
|
+
keyHome(currentCellCoords, ctrlKey) {
|
|
18135
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18136
|
+
if (!this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isRowReplaced(currentCellCoords.y)) {
|
|
18137
|
+
return super.keyHome(currentCellCoords, ctrlKey);
|
|
18138
|
+
}
|
|
18139
|
+
nextCellCoords.x = 0;
|
|
18140
|
+
nextCellCoords.y = currentCellCoords.y - 1;
|
|
18141
|
+
if (ctrlKey) {
|
|
18142
|
+
nextCellCoords.y = 0;
|
|
18143
|
+
}
|
|
18144
|
+
return nextCellCoords;
|
|
18145
|
+
}
|
|
18146
|
+
keyPageUp(currentCellCoords) {
|
|
18147
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18148
|
+
const itemsPerPage = this.utils.itemsPerPage;
|
|
18149
|
+
nextCellCoords.y = currentCellCoords.y - itemsPerPage > 0 ? currentCellCoords.y - itemsPerPage + 1 : 1;
|
|
18150
|
+
if (!this.utils.isActionCell(currentCellCoords)) {
|
|
18151
|
+
if (this.utils.isRowReplaced(nextCellCoords.y)) {
|
|
18152
|
+
if (!this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18153
|
+
nextCellCoords.y = nextCellCoords.y + 1;
|
|
18154
|
+
nextCellCoords.x = 0;
|
|
18155
|
+
}
|
|
18156
|
+
}
|
|
18157
|
+
else if (!this.utils.isDetailsRow(currentCellCoords.y)) {
|
|
18158
|
+
if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18159
|
+
nextCellCoords.x = 0;
|
|
18160
|
+
}
|
|
18161
|
+
}
|
|
18162
|
+
else if (this.utils.isDetailsRow(currentCellCoords.y)) {
|
|
18163
|
+
if (!this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18164
|
+
nextCellCoords.x = this.utils.actionCellCount(nextCellCoords.y);
|
|
18165
|
+
}
|
|
18166
|
+
}
|
|
18167
|
+
}
|
|
18168
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18169
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
18170
|
+
}
|
|
18171
|
+
return nextCellCoords;
|
|
18172
|
+
}
|
|
18173
|
+
keyPageDown(currentCellCoords) {
|
|
18174
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18175
|
+
const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;
|
|
18176
|
+
const itemsPerPage = this.utils.itemsPerPage;
|
|
18177
|
+
nextCellCoords.y = currentCellCoords.y + itemsPerPage >= numOfRows ? numOfRows : currentCellCoords.y + itemsPerPage;
|
|
18178
|
+
if (!this.utils.isActionCell(currentCellCoords)) {
|
|
18179
|
+
if (this.utils.isRowReplaced(nextCellCoords.y)) {
|
|
18180
|
+
if (nextCellCoords.y < numOfRows && !this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18181
|
+
nextCellCoords.y = nextCellCoords.y + 1;
|
|
18182
|
+
}
|
|
18183
|
+
}
|
|
18184
|
+
else if (this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18185
|
+
nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);
|
|
18186
|
+
}
|
|
18187
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18188
|
+
nextCellCoords.x = 0;
|
|
18189
|
+
}
|
|
18190
|
+
}
|
|
18191
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18192
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
18193
|
+
}
|
|
18194
|
+
return nextCellCoords;
|
|
18195
|
+
}
|
|
18196
|
+
}
|
|
18197
|
+
|
|
18198
|
+
/*
|
|
18199
|
+
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
18200
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
18201
|
+
* This software is released under MIT license.
|
|
18202
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18203
|
+
*/
|
|
18204
|
+
class ExpandedColumnsRowKeyNavigationStrategy extends ExpandedRowKeyNavigationStrategy {
|
|
18205
|
+
constructor(utils) {
|
|
18206
|
+
super(utils);
|
|
18207
|
+
}
|
|
18208
|
+
keyUp(currentCellCoords) {
|
|
18209
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18210
|
+
if (currentCellCoords.y === 0) {
|
|
18211
|
+
return nextCellCoords;
|
|
18212
|
+
}
|
|
18213
|
+
nextCellCoords.y = currentCellCoords.y - 1;
|
|
18214
|
+
if (this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {
|
|
18215
|
+
return super.keyUp(currentCellCoords);
|
|
18216
|
+
}
|
|
18217
|
+
const isActionCell = this.utils.isActionCell(currentCellCoords);
|
|
18218
|
+
if (isActionCell && this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18219
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
18220
|
+
}
|
|
18221
|
+
else if (this.utils.isRowReplaced(nextCellCoords.y)) {
|
|
18222
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
18223
|
+
if (!this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18224
|
+
nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);
|
|
18225
|
+
}
|
|
18226
|
+
}
|
|
18227
|
+
else if (this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18228
|
+
nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);
|
|
18229
|
+
}
|
|
18230
|
+
else if (!isActionCell && this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18231
|
+
nextCellCoords.x = currentCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
18232
|
+
}
|
|
18233
|
+
return nextCellCoords;
|
|
18234
|
+
}
|
|
18235
|
+
keyDown(currentCellCoords) {
|
|
18236
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18237
|
+
const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;
|
|
18238
|
+
const numOfColumns = numOfRows ? this.utils.getCellsForRow(0).length - 1 : 0;
|
|
18239
|
+
if (currentCellCoords.y >= numOfRows) {
|
|
18240
|
+
return nextCellCoords;
|
|
18241
|
+
}
|
|
18242
|
+
nextCellCoords.y = currentCellCoords.y + 1;
|
|
18243
|
+
if (this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {
|
|
18244
|
+
return super.keyDown(currentCellCoords);
|
|
18245
|
+
}
|
|
18246
|
+
if (!this.utils.isActionCell(currentCellCoords)) {
|
|
18247
|
+
if (this.utils.isRowReplaced(nextCellCoords.y)) {
|
|
18248
|
+
nextCellCoords.y = nextCellCoords.y < numOfRows ? nextCellCoords.y + 1 : nextCellCoords.y - 1;
|
|
18249
|
+
}
|
|
18250
|
+
else if (this.utils.getCellsForRow(currentCellCoords.y).length > numOfColumns) {
|
|
18251
|
+
nextCellCoords.x = currentCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
18252
|
+
}
|
|
18253
|
+
else {
|
|
18254
|
+
nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);
|
|
18255
|
+
}
|
|
18256
|
+
}
|
|
18257
|
+
else {
|
|
18258
|
+
nextCellCoords.y = nextCellCoords.y < numOfRows ? nextCellCoords.y + 1 : nextCellCoords.y - 1;
|
|
18259
|
+
}
|
|
18260
|
+
return nextCellCoords;
|
|
18261
|
+
}
|
|
18262
|
+
keyLeft(currentCellCoords) {
|
|
18263
|
+
return super.keyLeft(currentCellCoords);
|
|
18264
|
+
}
|
|
18265
|
+
keyRight(currentCellCoords) {
|
|
18266
|
+
return super.keyRight(currentCellCoords);
|
|
18267
|
+
}
|
|
18268
|
+
keyEnd(currentCellCoords, ctrlKey) {
|
|
18269
|
+
return super.keyEnd(currentCellCoords, ctrlKey);
|
|
18270
|
+
}
|
|
18271
|
+
keyHome(currentCellCoords, ctrlKey) {
|
|
18272
|
+
return super.keyHome(currentCellCoords, ctrlKey);
|
|
18273
|
+
}
|
|
18274
|
+
keyPageUp(currentCellCoords) {
|
|
18275
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18276
|
+
const itemsPerPage = this.utils.itemsPerPage;
|
|
18277
|
+
nextCellCoords.y = currentCellCoords.y - itemsPerPage > 0 ? currentCellCoords.y - itemsPerPage + 1 : 1;
|
|
18278
|
+
if (this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {
|
|
18279
|
+
return super.keyPageUp(currentCellCoords);
|
|
18280
|
+
}
|
|
18281
|
+
if (!this.utils.isActionCell(currentCellCoords)) {
|
|
18282
|
+
if (this.utils.isRowReplaced(nextCellCoords.y)) {
|
|
18283
|
+
if (!this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18284
|
+
nextCellCoords.y = nextCellCoords.y + 1;
|
|
18285
|
+
nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);
|
|
18286
|
+
}
|
|
18287
|
+
}
|
|
18288
|
+
else if (this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18289
|
+
nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);
|
|
18290
|
+
}
|
|
18291
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18292
|
+
nextCellCoords.x = currentCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
18293
|
+
}
|
|
18294
|
+
}
|
|
18295
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18296
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
18297
|
+
}
|
|
18298
|
+
return nextCellCoords;
|
|
18299
|
+
}
|
|
18300
|
+
keyPageDown(currentCellCoords) {
|
|
18301
|
+
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18302
|
+
const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;
|
|
18303
|
+
const itemsPerPage = this.utils.itemsPerPage;
|
|
18304
|
+
nextCellCoords.y = currentCellCoords.y + itemsPerPage >= numOfRows ? numOfRows : currentCellCoords.y + itemsPerPage;
|
|
18305
|
+
if (this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {
|
|
18306
|
+
return super.keyPageDown(currentCellCoords);
|
|
18307
|
+
}
|
|
18308
|
+
if (!this.utils.isActionCell(currentCellCoords)) {
|
|
18309
|
+
if (this.utils.isRowReplaced(nextCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18310
|
+
if (nextCellCoords.y < numOfRows) {
|
|
18311
|
+
nextCellCoords.y = nextCellCoords.y + 1;
|
|
18312
|
+
nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);
|
|
18313
|
+
}
|
|
18314
|
+
}
|
|
18315
|
+
else if (this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18316
|
+
nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);
|
|
18317
|
+
}
|
|
18318
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18319
|
+
nextCellCoords.x = currentCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);
|
|
18320
|
+
}
|
|
18321
|
+
}
|
|
18322
|
+
else if (this.utils.isDetailsRow(nextCellCoords.y)) {
|
|
18323
|
+
nextCellCoords.y = nextCellCoords.y - 1;
|
|
18324
|
+
}
|
|
18325
|
+
return nextCellCoords;
|
|
18326
|
+
}
|
|
18327
|
+
}
|
|
18328
|
+
|
|
18329
|
+
/*
|
|
18330
|
+
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
18331
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
18332
|
+
* This software is released under MIT license.
|
|
18333
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18334
|
+
*/
|
|
18335
|
+
class KeyNavigationUtils {
|
|
18336
|
+
constructor(host, config) {
|
|
18337
|
+
this.host = host;
|
|
18338
|
+
this.config = config;
|
|
18339
|
+
}
|
|
18340
|
+
get grid() {
|
|
18341
|
+
var _a;
|
|
18342
|
+
return (_a = this.host) === null || _a === void 0 ? void 0 : _a.querySelector(this.config.keyGrid);
|
|
18343
|
+
}
|
|
18344
|
+
get rows() {
|
|
18345
|
+
var _a;
|
|
18346
|
+
return (_a = this.host) === null || _a === void 0 ? void 0 : _a.querySelectorAll(this.config.keyGridRows);
|
|
18347
|
+
}
|
|
18348
|
+
get cells() {
|
|
18349
|
+
var _a;
|
|
18350
|
+
return (_a = this.host) === null || _a === void 0 ? void 0 : _a.querySelectorAll(this.config.keyGridCells);
|
|
18351
|
+
}
|
|
18352
|
+
get currentCellCoordinates() {
|
|
18353
|
+
const currentCell = this.cells ? Array.from(this.cells).find(i => i.getAttribute('tabindex') === '0') : null;
|
|
18354
|
+
const currentRow = currentCell ? currentCell.closest(this.config.keyGridRows) : null;
|
|
18355
|
+
const coordinates = {
|
|
18356
|
+
x: currentRow && currentCell
|
|
18357
|
+
? Array.from(currentRow.querySelectorAll(this.config.keyGridCells)).indexOf(currentCell)
|
|
18358
|
+
: 0,
|
|
18359
|
+
y: currentRow && currentCell && this.rows ? Array.from(this.rows).indexOf(currentRow) : 0,
|
|
18360
|
+
};
|
|
18361
|
+
return coordinates;
|
|
18362
|
+
}
|
|
18363
|
+
get itemsPerPage() {
|
|
18364
|
+
var _a;
|
|
18365
|
+
return Math.floor(((_a = this.host) === null || _a === void 0 ? void 0 : _a.querySelector('.datagrid').clientHeight) / this.rows[0].clientHeight) - 1 || 0;
|
|
18366
|
+
}
|
|
18367
|
+
getNextItemCoordinate(e) {
|
|
18368
|
+
const currentCellCoords = this.currentCellCoordinates;
|
|
18369
|
+
const strategy = this.getNavStrategy(currentCellCoords);
|
|
18370
|
+
const inlineStart = this.host.dir === 'rtl' ? Keys.ArrowRight : Keys.ArrowLeft;
|
|
18371
|
+
const inlineEnd = this.host.dir === 'rtl' ? Keys.ArrowLeft : Keys.ArrowRight;
|
|
18372
|
+
switch (e.key) {
|
|
18373
|
+
case Keys.ArrowUp:
|
|
18374
|
+
return strategy.keyUp(currentCellCoords);
|
|
18375
|
+
case Keys.ArrowDown:
|
|
18376
|
+
return strategy.keyDown(currentCellCoords);
|
|
18377
|
+
case inlineStart:
|
|
18378
|
+
return strategy.keyLeft(currentCellCoords);
|
|
18379
|
+
case inlineEnd:
|
|
18380
|
+
return strategy.keyRight(currentCellCoords);
|
|
18381
|
+
case Keys.Home:
|
|
18382
|
+
return strategy.keyHome(currentCellCoords, e.ctrlKey);
|
|
18383
|
+
case Keys.End:
|
|
18384
|
+
return strategy.keyEnd(currentCellCoords, e.ctrlKey);
|
|
18385
|
+
case Keys.PageUp:
|
|
18386
|
+
return strategy.keyPageUp(currentCellCoords);
|
|
18387
|
+
case Keys.PageDown:
|
|
18388
|
+
return strategy.keyPageDown(currentCellCoords);
|
|
18389
|
+
default:
|
|
18390
|
+
return currentCellCoords;
|
|
18391
|
+
}
|
|
18392
|
+
}
|
|
18393
|
+
getCellsForRow(index) {
|
|
18394
|
+
return this.rows[index].querySelectorAll(this.config.keyGridCells);
|
|
18395
|
+
}
|
|
18396
|
+
isExpandedRow(index) {
|
|
18397
|
+
const selectedElement = this.rows[index].querySelector('.datagrid-row-detail');
|
|
18398
|
+
return selectedElement ? selectedElement.style.display !== 'none' : false;
|
|
18399
|
+
}
|
|
18400
|
+
isDetailsRow(index) {
|
|
18401
|
+
return this.rows[index].classList.contains('datagrid-row-detail');
|
|
18402
|
+
}
|
|
18403
|
+
isRowReplaced(index) {
|
|
18404
|
+
return !!this.rows[index].closest('clr-dg-row.datagrid-row-replaced');
|
|
18405
|
+
}
|
|
18406
|
+
isSingleCellExpandedRow(index) {
|
|
18407
|
+
var _a;
|
|
18408
|
+
return ((_a = this.rows[index]) === null || _a === void 0 ? void 0 : _a.querySelectorAll(this.config.keyGridCells).length) === 1;
|
|
18409
|
+
}
|
|
18410
|
+
actionCellCount(index) {
|
|
18411
|
+
return this.actionCellsAsArray(index).length;
|
|
18412
|
+
}
|
|
18413
|
+
actionCellsAsArray(index) {
|
|
18414
|
+
return Array.from(this.rows[index].querySelectorAll('.datagrid-row-sticky .datagrid-cell, .datagrid-row-sticky .datagrid-column'));
|
|
18415
|
+
}
|
|
18416
|
+
isActionCell(cellCoords) {
|
|
18417
|
+
return !!this.actionCellsAsArray(cellCoords.y)[cellCoords.x];
|
|
18418
|
+
}
|
|
18419
|
+
createNextCellCoords(cellCoords) {
|
|
18420
|
+
return {
|
|
18421
|
+
x: cellCoords.x,
|
|
18422
|
+
y: cellCoords.y,
|
|
18423
|
+
};
|
|
18424
|
+
}
|
|
18425
|
+
getNavStrategy(currentCellCoords) {
|
|
18426
|
+
switch (true) {
|
|
18427
|
+
case this.isSingleCellExpandedRow(currentCellCoords.y):
|
|
18428
|
+
return new ExpandedRowKeyNavigationStrategy(this);
|
|
18429
|
+
case this.isDetailsRow(currentCellCoords.y):
|
|
18430
|
+
case this.isExpandedRow(currentCellCoords.y):
|
|
18431
|
+
return new ExpandedColumnsRowKeyNavigationStrategy(this);
|
|
18432
|
+
default:
|
|
18433
|
+
return new DefaultKeyNavigationStrategy(this);
|
|
18434
|
+
}
|
|
18435
|
+
}
|
|
18436
|
+
}
|
|
18437
|
+
|
|
17828
18438
|
/*
|
|
17829
18439
|
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
17830
18440
|
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
@@ -17866,18 +18476,6 @@ class KeyNavigationGridController {
|
|
|
17866
18476
|
keyGrid: '[role=grid]',
|
|
17867
18477
|
};
|
|
17868
18478
|
}
|
|
17869
|
-
get grid() {
|
|
17870
|
-
var _a;
|
|
17871
|
-
return (_a = this.host) === null || _a === void 0 ? void 0 : _a.querySelector(this.config.keyGrid);
|
|
17872
|
-
}
|
|
17873
|
-
get rows() {
|
|
17874
|
-
var _a;
|
|
17875
|
-
return (_a = this.host) === null || _a === void 0 ? void 0 : _a.querySelectorAll(this.config.keyGridRows);
|
|
17876
|
-
}
|
|
17877
|
-
get cells() {
|
|
17878
|
-
var _a;
|
|
17879
|
-
return (_a = this.host) === null || _a === void 0 ? void 0 : _a.querySelectorAll(this.config.keyGridCells);
|
|
17880
|
-
}
|
|
17881
18479
|
ngOnDestroy() {
|
|
17882
18480
|
this.destroy$.next();
|
|
17883
18481
|
this.destroy$.complete();
|
|
@@ -17887,33 +18485,33 @@ class KeyNavigationGridController {
|
|
|
17887
18485
|
return;
|
|
17888
18486
|
}
|
|
17889
18487
|
this.zone.runOutsideAngular(() => {
|
|
17890
|
-
fromEvent(this.grid, 'mousedown')
|
|
18488
|
+
fromEvent(this.keyNavUtils.grid, 'mousedown')
|
|
17891
18489
|
.pipe(takeUntil(this.destroy$))
|
|
17892
18490
|
.subscribe((e) => {
|
|
17893
18491
|
// preserve right click for context menus & keyboard mouse control https://apple.stackexchange.com/questions/32715/how-do-i-open-the-context-menu-from-a-mac-keyboard
|
|
17894
18492
|
if (e.buttons === 1 && !e.ctrlKey) {
|
|
17895
|
-
const activeCell = this.cells
|
|
17896
|
-
? Array.from(this.cells).find(c => c === e.target || c === e.target.closest(this.config.keyGridCells))
|
|
18493
|
+
const activeCell = this.keyNavUtils.cells
|
|
18494
|
+
? Array.from(this.keyNavUtils.cells).find(c => c === e.target || c === e.target.closest(this.config.keyGridCells))
|
|
17897
18495
|
: null;
|
|
17898
18496
|
if (activeCell) {
|
|
17899
18497
|
this.setActiveCell(activeCell, { keepFocus: isActionableItem(e.target) });
|
|
17900
18498
|
}
|
|
17901
18499
|
}
|
|
17902
18500
|
});
|
|
17903
|
-
fromEvent(this.grid, 'wheel')
|
|
18501
|
+
fromEvent(this.keyNavUtils.grid, 'wheel')
|
|
17904
18502
|
.pipe(takeUntil(this.destroy$))
|
|
17905
18503
|
.subscribe(() => {
|
|
17906
18504
|
this.removeActiveCell();
|
|
17907
18505
|
});
|
|
17908
|
-
fromEvent(this.grid, 'focusout')
|
|
18506
|
+
fromEvent(this.keyNavUtils.grid, 'focusout')
|
|
17909
18507
|
.pipe(debounceTime(0), takeUntil(this.destroy$))
|
|
17910
18508
|
.subscribe(() => {
|
|
17911
|
-
if (this.grid.contains(document.activeElement)) {
|
|
18509
|
+
if (this.keyNavUtils.grid.contains(document.activeElement)) {
|
|
17912
18510
|
return;
|
|
17913
18511
|
}
|
|
17914
18512
|
this.removeActiveCell();
|
|
17915
18513
|
});
|
|
17916
|
-
fromEvent(this.grid, 'keydown')
|
|
18514
|
+
fromEvent(this.keyNavUtils.grid, 'keydown')
|
|
17917
18515
|
.pipe(takeUntil(this.destroy$))
|
|
17918
18516
|
.subscribe((e) => {
|
|
17919
18517
|
// Skip column resize events
|
|
@@ -17929,12 +18527,9 @@ class KeyNavigationGridController {
|
|
|
17929
18527
|
e.key === Keys.Home ||
|
|
17930
18528
|
e.key === Keys.PageUp ||
|
|
17931
18529
|
e.key === Keys.PageDown) {
|
|
17932
|
-
const
|
|
17933
|
-
const
|
|
17934
|
-
? this.
|
|
17935
|
-
: this.getNextItemCoordinate(e, currentCellCoords);
|
|
17936
|
-
const activeItem = this.rows
|
|
17937
|
-
? Array.from(this.getCellsForRow(nextCellCoords.y))[nextCellCoords.x]
|
|
18530
|
+
const nextCellCoords = this.keyNavUtils.getNextItemCoordinate(e);
|
|
18531
|
+
const activeItem = this.keyNavUtils.rows
|
|
18532
|
+
? Array.from(this.keyNavUtils.getCellsForRow(nextCellCoords.y))[nextCellCoords.x]
|
|
17938
18533
|
: null;
|
|
17939
18534
|
if (activeItem) {
|
|
17940
18535
|
this.setActiveCell(activeItem);
|
|
@@ -17946,14 +18541,14 @@ class KeyNavigationGridController {
|
|
|
17946
18541
|
this.listenersAdded = true;
|
|
17947
18542
|
}
|
|
17948
18543
|
initializeKeyGrid(host) {
|
|
17949
|
-
this.
|
|
18544
|
+
this.keyNavUtils = new KeyNavigationUtils(host, this.config);
|
|
17950
18545
|
this.addListeners();
|
|
17951
18546
|
this.resetKeyGrid();
|
|
17952
18547
|
}
|
|
17953
18548
|
resetKeyGrid() {
|
|
17954
18549
|
var _a;
|
|
17955
|
-
(_a = this.cells) === null || _a === void 0 ? void 0 : _a.forEach((i) => i.setAttribute('tabindex', '-1'));
|
|
17956
|
-
const firstCell = this.cells ? this.cells[0] : null;
|
|
18550
|
+
(_a = this.keyNavUtils.cells) === null || _a === void 0 ? void 0 : _a.forEach((i) => i.setAttribute('tabindex', '-1'));
|
|
18551
|
+
const firstCell = this.keyNavUtils.cells ? this.keyNavUtils.cells[0] : null;
|
|
17957
18552
|
firstCell === null || firstCell === void 0 ? void 0 : firstCell.setAttribute('tabindex', '0');
|
|
17958
18553
|
}
|
|
17959
18554
|
removeActiveCell() {
|
|
@@ -17963,7 +18558,9 @@ class KeyNavigationGridController {
|
|
|
17963
18558
|
return this._activeCell;
|
|
17964
18559
|
}
|
|
17965
18560
|
setActiveCell(activeCell, { keepFocus } = { keepFocus: false }) {
|
|
17966
|
-
const prior = this.
|
|
18561
|
+
const prior = this.keyNavUtils.cells
|
|
18562
|
+
? Array.from(this.keyNavUtils.cells).find(c => c.getAttribute('tabindex') === '0')
|
|
18563
|
+
: null;
|
|
17967
18564
|
if (prior) {
|
|
17968
18565
|
prior.setAttribute('tabindex', '-1');
|
|
17969
18566
|
}
|
|
@@ -17981,223 +18578,6 @@ class KeyNavigationGridController {
|
|
|
17981
18578
|
elementToFocus.focus();
|
|
17982
18579
|
}
|
|
17983
18580
|
}
|
|
17984
|
-
getNextForExpandedRowCoordinate(e, currentCellCoords) {
|
|
17985
|
-
if (e.key === Keys.PageUp || e.key === Keys.PageDown) {
|
|
17986
|
-
return this.getNextItemCoordinate(e, currentCellCoords);
|
|
17987
|
-
}
|
|
17988
|
-
if (!this.isDetailsRow(currentCellCoords.y) &&
|
|
17989
|
-
!this.isRowReplaced(currentCellCoords.y) &&
|
|
17990
|
-
(e.key === Keys.Home || e.key === Keys.End || e.key === Keys.ArrowRight || e.key === Keys.ArrowLeft)) {
|
|
17991
|
-
return this.getNextItemCoordinate(e, currentCellCoords);
|
|
17992
|
-
}
|
|
17993
|
-
const { numOfRows, numOfColumns, inlineStart, inlineEnd, isActionCell, nextCellCoords } = this.getCalcVariables(currentCellCoords);
|
|
17994
|
-
const isSingleCellExpandedRow = this.isSingleCellExpandedRow(currentCellCoords.y);
|
|
17995
|
-
if (e.key === Keys.ArrowUp && currentCellCoords.y !== 0) {
|
|
17996
|
-
nextCellCoords.y = currentCellCoords.y - 1;
|
|
17997
|
-
if (isSingleCellExpandedRow && !isActionCell) {
|
|
17998
|
-
if (this.isRowReplaced(currentCellCoords.y)) {
|
|
17999
|
-
nextCellCoords.y = nextCellCoords.y - 1;
|
|
18000
|
-
}
|
|
18001
|
-
if (this.isDetailsRow(nextCellCoords.y)) {
|
|
18002
|
-
nextCellCoords.x = 0;
|
|
18003
|
-
}
|
|
18004
|
-
else if (this.isDetailsRow(currentCellCoords.y) === false) {
|
|
18005
|
-
// false check is intentional, the ! operator may be missed easily in this case
|
|
18006
|
-
nextCellCoords.x = currentCellCoords.x;
|
|
18007
|
-
}
|
|
18008
|
-
else {
|
|
18009
|
-
nextCellCoords.x = this.actionCellCount(nextCellCoords.y);
|
|
18010
|
-
}
|
|
18011
|
-
return nextCellCoords;
|
|
18012
|
-
}
|
|
18013
|
-
if (isActionCell && this.isDetailsRow(nextCellCoords.y)) {
|
|
18014
|
-
nextCellCoords.y = nextCellCoords.y - 1;
|
|
18015
|
-
}
|
|
18016
|
-
else if (this.isRowReplaced(nextCellCoords.y)) {
|
|
18017
|
-
nextCellCoords.y = nextCellCoords.y - 1;
|
|
18018
|
-
if (!this.isDetailsRow(nextCellCoords.y)) {
|
|
18019
|
-
nextCellCoords.x = currentCellCoords.x + this.actionCellCount(nextCellCoords.y);
|
|
18020
|
-
}
|
|
18021
|
-
}
|
|
18022
|
-
else if (this.isDetailsRow(currentCellCoords.y) && !this.isDetailsRow(nextCellCoords.y)) {
|
|
18023
|
-
nextCellCoords.x = currentCellCoords.x + this.actionCellCount(nextCellCoords.y);
|
|
18024
|
-
}
|
|
18025
|
-
else if (!isActionCell && this.isDetailsRow(nextCellCoords.y)) {
|
|
18026
|
-
nextCellCoords.x = currentCellCoords.x - this.actionCellCount(currentCellCoords.y);
|
|
18027
|
-
}
|
|
18028
|
-
}
|
|
18029
|
-
else if (e.key === Keys.ArrowDown && currentCellCoords.y < numOfRows) {
|
|
18030
|
-
nextCellCoords.y = currentCellCoords.y + 1;
|
|
18031
|
-
if (isSingleCellExpandedRow && !isActionCell) {
|
|
18032
|
-
if (this.isRowReplaced(nextCellCoords.y)) {
|
|
18033
|
-
nextCellCoords.y = nextCellCoords.y + 1;
|
|
18034
|
-
}
|
|
18035
|
-
if (this.isDetailsRow(nextCellCoords.y)) {
|
|
18036
|
-
nextCellCoords.x = 0;
|
|
18037
|
-
}
|
|
18038
|
-
else {
|
|
18039
|
-
nextCellCoords.x = this.actionCellCount(nextCellCoords.y);
|
|
18040
|
-
}
|
|
18041
|
-
return nextCellCoords;
|
|
18042
|
-
}
|
|
18043
|
-
if (isActionCell || this.isRowReplaced(nextCellCoords.y)) {
|
|
18044
|
-
nextCellCoords.y = nextCellCoords.y + 1;
|
|
18045
|
-
}
|
|
18046
|
-
else if (this.getCellsForRow(currentCellCoords.y).length > numOfColumns) {
|
|
18047
|
-
nextCellCoords.x = currentCellCoords.x - this.actionCellCount(currentCellCoords.y);
|
|
18048
|
-
}
|
|
18049
|
-
else {
|
|
18050
|
-
nextCellCoords.x = currentCellCoords.x + this.actionCellCount(nextCellCoords.y);
|
|
18051
|
-
}
|
|
18052
|
-
}
|
|
18053
|
-
else if (e.key === inlineStart) {
|
|
18054
|
-
if (currentCellCoords.x !== 0) {
|
|
18055
|
-
nextCellCoords.x = currentCellCoords.x - 1;
|
|
18056
|
-
}
|
|
18057
|
-
else if (!isActionCell) {
|
|
18058
|
-
nextCellCoords.y = currentCellCoords.y - 1;
|
|
18059
|
-
nextCellCoords.x = this.actionCellCount(nextCellCoords.y) - 1;
|
|
18060
|
-
}
|
|
18061
|
-
}
|
|
18062
|
-
else if (e.key === inlineEnd && currentCellCoords.x < numOfColumns) {
|
|
18063
|
-
if (isActionCell &&
|
|
18064
|
-
currentCellCoords.x === this.actionCellCount(currentCellCoords.x) - 1 &&
|
|
18065
|
-
this.isRowReplaced(currentCellCoords.y) &&
|
|
18066
|
-
!this.isDetailsRow(currentCellCoords.y)) {
|
|
18067
|
-
nextCellCoords.y = currentCellCoords.y + 1;
|
|
18068
|
-
nextCellCoords.x = 0;
|
|
18069
|
-
}
|
|
18070
|
-
else {
|
|
18071
|
-
nextCellCoords.x = currentCellCoords.x + 1;
|
|
18072
|
-
}
|
|
18073
|
-
}
|
|
18074
|
-
else if (e.key === Keys.End) {
|
|
18075
|
-
nextCellCoords.x = this.getCellsForRow(currentCellCoords.y).length - 1;
|
|
18076
|
-
if (e.ctrlKey) {
|
|
18077
|
-
nextCellCoords.x = numOfColumns;
|
|
18078
|
-
nextCellCoords.y = numOfRows;
|
|
18079
|
-
}
|
|
18080
|
-
}
|
|
18081
|
-
else if (e.key === Keys.Home) {
|
|
18082
|
-
nextCellCoords.x = 0;
|
|
18083
|
-
nextCellCoords.y = currentCellCoords.y - 1;
|
|
18084
|
-
if (e.ctrlKey) {
|
|
18085
|
-
nextCellCoords.y = 0;
|
|
18086
|
-
}
|
|
18087
|
-
}
|
|
18088
|
-
return nextCellCoords;
|
|
18089
|
-
}
|
|
18090
|
-
getNextItemCoordinate(e, currentCellCoords) {
|
|
18091
|
-
const { numOfRows, numOfColumns, inlineStart, inlineEnd, itemsPerPage, isActionCell, nextCellCoords } = this.getCalcVariables(currentCellCoords);
|
|
18092
|
-
if (e.key === Keys.ArrowUp && currentCellCoords.y !== 0) {
|
|
18093
|
-
nextCellCoords.y = currentCellCoords.y - 1;
|
|
18094
|
-
if (this.isSingleCellExpandedRow(nextCellCoords.y) && !isActionCell && this.isDetailsRow(nextCellCoords.y)) {
|
|
18095
|
-
nextCellCoords.x = 0;
|
|
18096
|
-
return nextCellCoords;
|
|
18097
|
-
}
|
|
18098
|
-
if (this.isDetailsRow(nextCellCoords.y)) {
|
|
18099
|
-
if (isActionCell) {
|
|
18100
|
-
nextCellCoords.y = nextCellCoords.y - 1;
|
|
18101
|
-
}
|
|
18102
|
-
else {
|
|
18103
|
-
nextCellCoords.x = nextCellCoords.x - this.actionCellCount(currentCellCoords.y);
|
|
18104
|
-
}
|
|
18105
|
-
}
|
|
18106
|
-
}
|
|
18107
|
-
else if (e.key === Keys.ArrowDown && currentCellCoords.y < numOfRows) {
|
|
18108
|
-
nextCellCoords.y = currentCellCoords.y + 1;
|
|
18109
|
-
if (this.isSingleCellExpandedRow(nextCellCoords.y) && !isActionCell && this.isRowReplaced(nextCellCoords.y)) {
|
|
18110
|
-
nextCellCoords.x = 0;
|
|
18111
|
-
nextCellCoords.y = nextCellCoords.y + 1;
|
|
18112
|
-
return nextCellCoords;
|
|
18113
|
-
}
|
|
18114
|
-
if (!isActionCell && this.isRowReplaced(nextCellCoords.y)) {
|
|
18115
|
-
nextCellCoords.y = nextCellCoords.y + 1;
|
|
18116
|
-
nextCellCoords.x = nextCellCoords.x - this.actionCellCount(currentCellCoords.y);
|
|
18117
|
-
}
|
|
18118
|
-
}
|
|
18119
|
-
else if (e.key === inlineStart && currentCellCoords.x !== 0) {
|
|
18120
|
-
nextCellCoords.x = currentCellCoords.x - 1;
|
|
18121
|
-
}
|
|
18122
|
-
else if (e.key === inlineEnd && currentCellCoords.x < numOfColumns) {
|
|
18123
|
-
nextCellCoords.x = currentCellCoords.x + 1;
|
|
18124
|
-
}
|
|
18125
|
-
else if (e.key === Keys.End) {
|
|
18126
|
-
nextCellCoords.x = numOfColumns;
|
|
18127
|
-
if (e.ctrlKey) {
|
|
18128
|
-
nextCellCoords.y = numOfRows;
|
|
18129
|
-
}
|
|
18130
|
-
}
|
|
18131
|
-
else if (e.key === Keys.Home) {
|
|
18132
|
-
nextCellCoords.x = 0;
|
|
18133
|
-
if (e.ctrlKey) {
|
|
18134
|
-
nextCellCoords.y = 0;
|
|
18135
|
-
}
|
|
18136
|
-
}
|
|
18137
|
-
else if (e.key === Keys.PageUp) {
|
|
18138
|
-
nextCellCoords.y = currentCellCoords.y - itemsPerPage > 0 ? currentCellCoords.y - itemsPerPage + 1 : 1;
|
|
18139
|
-
}
|
|
18140
|
-
else if (e.key === Keys.PageDown) {
|
|
18141
|
-
nextCellCoords.y =
|
|
18142
|
-
currentCellCoords.y + itemsPerPage < numOfRows ? currentCellCoords.y + itemsPerPage : numOfRows;
|
|
18143
|
-
}
|
|
18144
|
-
return nextCellCoords;
|
|
18145
|
-
}
|
|
18146
|
-
getCalcVariables(currentCellCoords) {
|
|
18147
|
-
var _a;
|
|
18148
|
-
const numOfRows = this.rows ? this.rows.length - 1 : 0;
|
|
18149
|
-
// calculate numOfColumns based on header cells.
|
|
18150
|
-
const numOfColumns = numOfRows ? this.getCellsForRow(0).length - 1 : 0;
|
|
18151
|
-
const dir = this.host.dir;
|
|
18152
|
-
const inlineStart = dir === 'rtl' ? Keys.ArrowRight : Keys.ArrowLeft;
|
|
18153
|
-
const inlineEnd = dir === 'rtl' ? Keys.ArrowLeft : Keys.ArrowRight;
|
|
18154
|
-
const itemsPerPage = Math.floor(((_a = this.host) === null || _a === void 0 ? void 0 : _a.querySelector('.datagrid').clientHeight) / this.rows[0].clientHeight) - 1 || 0;
|
|
18155
|
-
const isActionCell = this.isActionCell(currentCellCoords);
|
|
18156
|
-
const nextCellCoords = {
|
|
18157
|
-
x: currentCellCoords.x,
|
|
18158
|
-
y: currentCellCoords.y,
|
|
18159
|
-
};
|
|
18160
|
-
return { numOfRows, numOfColumns, inlineStart, inlineEnd, itemsPerPage, isActionCell, nextCellCoords };
|
|
18161
|
-
}
|
|
18162
|
-
getCurrentCellCoordinates() {
|
|
18163
|
-
const currentCell = this.cells ? Array.from(this.cells).find(i => i.getAttribute('tabindex') === '0') : null;
|
|
18164
|
-
const currentRow = currentCell ? currentCell.closest(this.config.keyGridRows) : null;
|
|
18165
|
-
const coordinates = {
|
|
18166
|
-
x: currentRow && currentCell
|
|
18167
|
-
? Array.from(currentRow.querySelectorAll(this.config.keyGridCells)).indexOf(currentCell)
|
|
18168
|
-
: 0,
|
|
18169
|
-
y: currentRow && currentCell && this.rows ? Array.from(this.rows).indexOf(currentRow) : 0,
|
|
18170
|
-
};
|
|
18171
|
-
return coordinates;
|
|
18172
|
-
}
|
|
18173
|
-
getCellsForRow(index) {
|
|
18174
|
-
return this.rows[index].querySelectorAll(this.config.keyGridCells);
|
|
18175
|
-
}
|
|
18176
|
-
isExpandedRow(index) {
|
|
18177
|
-
const selectedElement = this.rows[index].querySelector('.datagrid-row-detail');
|
|
18178
|
-
return selectedElement ? selectedElement.style.display !== 'none' : false;
|
|
18179
|
-
}
|
|
18180
|
-
isDetailsRow(index) {
|
|
18181
|
-
return this.rows[index].classList.contains('datagrid-row-detail');
|
|
18182
|
-
}
|
|
18183
|
-
isRowReplaced(index) {
|
|
18184
|
-
return !!this.rows[index].closest('clr-dg-row.datagrid-row-replaced');
|
|
18185
|
-
}
|
|
18186
|
-
isSingleCellExpandedRow(index) {
|
|
18187
|
-
const row = this.rows[index].classList.contains('datagrid-row-detail')
|
|
18188
|
-
? this.rows[index]
|
|
18189
|
-
: this.rows[index].querySelector('.datagrid-row-detail');
|
|
18190
|
-
return (row === null || row === void 0 ? void 0 : row.querySelectorAll(this.config.keyGridCells).length) === 1;
|
|
18191
|
-
}
|
|
18192
|
-
actionCellCount(index) {
|
|
18193
|
-
return this.actionCellsAsArray(index).length;
|
|
18194
|
-
}
|
|
18195
|
-
actionCellsAsArray(index) {
|
|
18196
|
-
return Array.from(this.rows[index].querySelectorAll('.datagrid-row-sticky .datagrid-cell, .datagrid-row-sticky .datagrid-column'));
|
|
18197
|
-
}
|
|
18198
|
-
isActionCell(cellCoords) {
|
|
18199
|
-
return !!this.actionCellsAsArray(cellCoords.y)[cellCoords.x];
|
|
18200
|
-
}
|
|
18201
18581
|
}
|
|
18202
18582
|
KeyNavigationGridController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: KeyNavigationGridController, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
18203
18583
|
KeyNavigationGridController.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: KeyNavigationGridController });
|
|
@@ -19909,18 +20289,14 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
|
19909
20289
|
if (typeof comparator === 'string') {
|
|
19910
20290
|
this._sortBy = new DatagridPropertyComparator(comparator);
|
|
19911
20291
|
}
|
|
20292
|
+
else if (comparator) {
|
|
20293
|
+
this._sortBy = comparator;
|
|
20294
|
+
}
|
|
20295
|
+
else if (this.field) {
|
|
20296
|
+
this._sortBy = new DatagridPropertyComparator(this.field);
|
|
20297
|
+
}
|
|
19912
20298
|
else {
|
|
19913
|
-
|
|
19914
|
-
this._sortBy = comparator;
|
|
19915
|
-
}
|
|
19916
|
-
else {
|
|
19917
|
-
if (this.field) {
|
|
19918
|
-
this._sortBy = new DatagridPropertyComparator(this.field);
|
|
19919
|
-
}
|
|
19920
|
-
else {
|
|
19921
|
-
delete this._sortBy;
|
|
19922
|
-
}
|
|
19923
|
-
}
|
|
20299
|
+
delete this._sortBy;
|
|
19924
20300
|
}
|
|
19925
20301
|
}
|
|
19926
20302
|
get sortOrder() {
|
|
@@ -20303,6 +20679,10 @@ class Items {
|
|
|
20303
20679
|
this._pageSub.unsubscribe();
|
|
20304
20680
|
}
|
|
20305
20681
|
}
|
|
20682
|
+
smartenDown() {
|
|
20683
|
+
this._smart = false;
|
|
20684
|
+
this.destroy();
|
|
20685
|
+
}
|
|
20306
20686
|
smartenUp() {
|
|
20307
20687
|
this._smart = true;
|
|
20308
20688
|
/*
|
|
@@ -21305,6 +21685,16 @@ class ClrDatagridRow {
|
|
|
21305
21685
|
}
|
|
21306
21686
|
if (viewChange === DatagridDisplayMode.CALCULATE) {
|
|
21307
21687
|
this.displayCells = false;
|
|
21688
|
+
// Inserts a fixed cell if any of these conditions are true.
|
|
21689
|
+
const fixedCellConditions = [
|
|
21690
|
+
this.selection.selectionType !== this.SELECTION_TYPE.None,
|
|
21691
|
+
this.rowActionService.hasActionableRow,
|
|
21692
|
+
this.globalExpandable.hasExpandableRow,
|
|
21693
|
+
this.detailService.enabled,
|
|
21694
|
+
];
|
|
21695
|
+
fixedCellConditions
|
|
21696
|
+
.filter(Boolean)
|
|
21697
|
+
.forEach(() => this._calculatedCells.insert(this._fixedCellTemplate.createEmbeddedView(null)));
|
|
21308
21698
|
this.dgCells.forEach(cell => {
|
|
21309
21699
|
if (!cell._view.destroyed) {
|
|
21310
21700
|
this._calculatedCells.insert(cell._view);
|
|
@@ -21346,7 +21736,7 @@ class ClrDatagridRow {
|
|
|
21346
21736
|
* selection browser functionality, which is inconsistently implemented in browsers anyway.
|
|
21347
21737
|
*/
|
|
21348
21738
|
clearRanges(event) {
|
|
21349
|
-
if (event.shiftKey) {
|
|
21739
|
+
if (this.selection.rowSelectionMode && event.shiftKey) {
|
|
21350
21740
|
this.document.getSelection().removeAllRanges();
|
|
21351
21741
|
// Firefox is too persistent about its text-selection behaviour. So we need to add a preventDefault();
|
|
21352
21742
|
// We should not try to enforce this on the other browsers, though, because their toggle cycle does not get canceled by
|
|
@@ -21363,7 +21753,7 @@ class ClrDatagridRow {
|
|
|
21363
21753
|
selectRow(selected = !this.selected, $event) {
|
|
21364
21754
|
// The label also captures clicks that bubble up to the row event listener, causing
|
|
21365
21755
|
// this handler to run twice. This exits early to prevent toggling the checkbox twice.
|
|
21366
|
-
if ($event.target.tagName === 'LABEL') {
|
|
21756
|
+
if (!this.selection.rowSelectionMode || $event.target.tagName === 'LABEL') {
|
|
21367
21757
|
return;
|
|
21368
21758
|
}
|
|
21369
21759
|
if (this.selection.selectionType === this.SELECTION_TYPE.Single) {
|
|
@@ -21402,7 +21792,7 @@ ClrDatagridRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version
|
|
|
21402
21792
|
DatagridIfExpandService,
|
|
21403
21793
|
{ provide: IfExpandService, useExisting: DatagridIfExpandService },
|
|
21404
21794
|
{ provide: LoadingListener, useExisting: DatagridIfExpandService },
|
|
21405
|
-
], queries: [{ propertyName: "dgCells", predicate: ClrDatagridCell }], viewQueries: [{ propertyName: "expandAnimation", first: true, predicate: ClrExpandableAnimation, descendants: true }, { propertyName: "detailButton", first: true, predicate: ["detailButton"], descendants: true }, { propertyName: "_stickyCells", first: true, predicate: ["stickyCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_scrollableCells", first: true, predicate: ["scrollableCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_calculatedCells", first: true, predicate: ["calculatedCells"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n We need to wrap the #rowContent in label element if we are in rowSelectionMode.\n Clicking of that wrapper label will equate to clicking on the whole row, which triggers the checkbox to toggle.\n-->\n<div\n class=\"datagrid-row-clickable\"\n *ngIf=\"selection.rowSelectionMode\"\n (mousedown)=\"clearRanges($event)\"\n (click)=\"selectRow(!selected, $event)\"\n>\n <clr-expandable-animation [clrExpandTrigger]=\"expandAnimationTrigger\" *ngIf=\"expand.expandable\">\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n </clr-expandable-animation>\n <ng-template [ngTemplateOutlet]=\"rowContent\" *ngIf=\"!expand.expandable\"></ng-template>\n</div>\n\n<clr-expandable-animation\n *ngIf=\"!selection.rowSelectionMode && expand.expandable\"\n [clrExpandTrigger]=\"expandAnimationTrigger\"\n>\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n</clr-expandable-animation>\n\n<ng-template *ngIf=\"!selection.rowSelectionMode && !expand.expandable\" [ngTemplateOutlet]=\"rowContent\"></ng-template>\n\n<!--\n We need the \"project into template\" hacks because we need this in 2 different places\n depending on whether the details replace the row or not.\n-->\n<ng-template #detail>\n <ng-content select=\"clr-dg-row-detail\"></ng-content>\n</ng-template>\n\n<ng-template #rowContent>\n <div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [class.datagrid-row-detail-open]=\"detailService.isRowOpen(item)\"\n >\n <div class=\"datagrid-row-sticky\">\n <!-- Sticky elements here -->\n <ng-container #stickyCells>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <div class=\"clr-checkbox-wrapper\">\n <input\n 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</ng-template>\n\n<ng-container #calculatedCells></ng-container>\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: "component", type: ClrExpandableAnimation, selector: "clr-expandable-animation", inputs: ["clrExpandTrigger"] }, { 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" }] });
|
|
21795
|
+
], queries: [{ propertyName: "dgCells", predicate: ClrDatagridCell }], viewQueries: [{ propertyName: "expandAnimation", first: true, predicate: ClrExpandableAnimationDirective, descendants: true }, { propertyName: "detailButton", first: true, predicate: ["detailButton"], descendants: true }, { propertyName: "_stickyCells", first: true, predicate: ["stickyCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_scrollableCells", first: true, predicate: ["scrollableCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_calculatedCells", first: true, predicate: ["calculatedCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_fixedCellTemplate", first: true, predicate: ["fixedCellTemplate"], descendants: true }], ngImport: i0, template: "<div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [clrExpandableAnimation]=\"expandAnimationTrigger\"\n (mousedown)=\"clearRanges($event)\"\n (click)=\"selectRow(!selected, $event)\"\n [class.datagrid-row-clickable]=\"selection.rowSelectionMode\"\n [class.datagrid-row-detail-open]=\"detailService.isRowOpen(item)\"\n>\n <div class=\"datagrid-row-sticky\">\n <!-- Sticky elements here -->\n <ng-container #stickyCells>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <div class=\"clr-checkbox-wrapper\">\n <input\n tabindex=\"-1\"\n type=\"checkbox\"\n [ngModel]=\"selected\"\n (ngModelChange)=\"toggle($event)\"\n [id]=\"checkboxId\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"checkboxId\" class=\"clr-control-label clr-col-null\" (click)=\"clearRanges($event)\">\n <span class=\"clr-sr-only\">{{clrDgRowSelectionLabel || commonStrings.keys.select}}</span>\n </label>\n </div>\n </div>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <clr-radio-wrapper>\n <input\n tabindex=\"-1\"\n type=\"radio\"\n clrRadio\n [id]=\"radioId\"\n [name]=\"selection.id + '-radio'\"\n [value]=\"item\"\n [(ngModel)]=\"selection.currentSingle\"\n [checked]=\"selection.currentSingle === item\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n />\n <label class=\"clr-control-label clr-col-null\" [for]=\"radioId\">\n <span class=\"clr-sr-only\">{{ clrDgRowSelectionLabel || commonStrings.keys.select }}</span>\n </label>\n </clr-radio-wrapper>\n </div>\n <div\n *ngIf=\"rowActionService.hasActionableRow\"\n class=\"datagrid-row-actions datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-content select=\"clr-dg-action-overflow\"></ng-content>\n </div>\n <div\n *ngIf=\"globalExpandable.hasExpandableRow\"\n class=\"datagrid-expandable-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-container *ngIf=\"expand.expandable\">\n <button\n tabindex=\"-1\"\n *ngIf=\"!expand.loading\"\n (click)=\"toggleExpand()\"\n type=\"button\"\n class=\"datagrid-expandable-caret-button\"\n [attr.aria-expanded]=\"expand.expanded\"\n [attr.aria-label]=\"expand.expanded ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-controls]=\"expand.hasExpandTemplate && !expand.expanded ? null : expandableId\"\n >\n <cds-icon\n shape=\"angle\"\n class=\"datagrid-expandable-caret-icon\"\n [attr.direction]=\"expand.expanded ? 'down' : 'right'\"\n [attr.title]=\"expand.expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n <clr-spinner *ngIf=\"expand.loading\" clrSmall>{{ commonStrings.keys.loading }}</clr-spinner>\n </ng-container>\n </div>\n <div\n *ngIf=\"detailService.enabled\"\n class=\"datagrid-detail-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <button\n tabindex=\"-1\"\n (click)=\"detailService.toggle(item, detailButton)\"\n type=\"button\"\n #detailButton\n class=\"datagrid-detail-caret-button\"\n [disabled]=\"detailDisabled\"\n *ngIf=\"!detailHidden\"\n [class.is-open]=\"detailService.isRowOpen(item)\"\n [attr.aria-label]=\"detailService.isRowOpen(item) ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-expanded]=\"detailService.isRowOpen(item)\"\n [attr.aria-controls]=\"detailService.id\"\n aria-haspopup=\"dialog\"\n >\n <cds-icon\n shape=\"angle-double\"\n [attr.direction]=\"detailService.isRowOpen(item) ? 'left' : 'right'\"\n class=\"datagrid-detail-caret-icon\"\n [attr.title]=\"detailService.isRowOpen(item) ? commonStrings.keys.close: commonStrings.keys.open\"\n ></cds-icon>\n </button>\n </div>\n </ng-container>\n <!-- placeholder for projecting other sticky cells as pinned-->\n </div>\n <div class=\"datagrid-row-scrollable\" [ngClass]=\"{'is-replaced': replaced && expanded}\">\n <div class=\"datagrid-scrolling-cells\">\n <ng-content select=\"clr-dg-cell\"></ng-content>\n <ng-container #scrollableCells></ng-container>\n </div>\n <!-- details here when replace, re-visit when sticky container is used for pinned cells -->\n <ng-template *ngIf=\"replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n <ng-template *ngIf=\"!replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n </div>\n <clr-dg-cell class=\"skeleton-loading\" *ngIf=\"skeletonLoading\"></clr-dg-cell>\n</div>\n<!--\n We need the \"project into template\" hacks because we need this in 2 different places\n depending on whether the details replace the row or not.\n-->\n<ng-template #detail>\n <ng-content select=\"clr-dg-row-detail\"></ng-content>\n</ng-template>\n\n<ng-container #calculatedCells></ng-container>\n\n<ng-template #fixedCellTemplate>\n <div class=\"datagrid-fixed-column datagrid-cell\" role=\"gridcell\"></div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: ClrLabel, selector: "label", inputs: ["id", "for"] }, { kind: "directive", type: ClrRadio, selector: "[clrRadio]" }, { kind: "component", type: ClrRadioWrapper, selector: "clr-radio-wrapper" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ClrExpandableAnimationDirective, selector: "[clrExpandableAnimation]", inputs: ["clrExpandableAnimation"] }, { kind: "component", type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }, { kind: "component", type: ClrDatagridCell, selector: "clr-dg-cell" }, { kind: "directive", type: ClrDatagridSelectionCellDirective, selector: ".datagrid-select" }, { kind: "directive", type: DatagridCellRenderer, selector: "clr-dg-cell" }] });
|
|
21406
21796
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridRow, decorators: [{
|
|
21407
21797
|
type: Component,
|
|
21408
21798
|
args: [{ selector: 'clr-dg-row', host: {
|
|
@@ -21415,7 +21805,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
21415
21805
|
DatagridIfExpandService,
|
|
21416
21806
|
{ provide: IfExpandService, useExisting: DatagridIfExpandService },
|
|
21417
21807
|
{ provide: LoadingListener, useExisting: DatagridIfExpandService },
|
|
21418
|
-
], template: "
|
|
21808
|
+
], template: "<div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [clrExpandableAnimation]=\"expandAnimationTrigger\"\n (mousedown)=\"clearRanges($event)\"\n (click)=\"selectRow(!selected, $event)\"\n [class.datagrid-row-clickable]=\"selection.rowSelectionMode\"\n [class.datagrid-row-detail-open]=\"detailService.isRowOpen(item)\"\n>\n <div class=\"datagrid-row-sticky\">\n <!-- Sticky elements here -->\n <ng-container #stickyCells>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <div class=\"clr-checkbox-wrapper\">\n <input\n tabindex=\"-1\"\n type=\"checkbox\"\n [ngModel]=\"selected\"\n (ngModelChange)=\"toggle($event)\"\n [id]=\"checkboxId\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"checkboxId\" class=\"clr-control-label clr-col-null\" (click)=\"clearRanges($event)\">\n <span class=\"clr-sr-only\">{{clrDgRowSelectionLabel || commonStrings.keys.select}}</span>\n </label>\n </div>\n </div>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <clr-radio-wrapper>\n <input\n tabindex=\"-1\"\n type=\"radio\"\n clrRadio\n [id]=\"radioId\"\n [name]=\"selection.id + '-radio'\"\n [value]=\"item\"\n [(ngModel)]=\"selection.currentSingle\"\n [checked]=\"selection.currentSingle === item\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n />\n <label class=\"clr-control-label clr-col-null\" [for]=\"radioId\">\n <span class=\"clr-sr-only\">{{ clrDgRowSelectionLabel || commonStrings.keys.select }}</span>\n </label>\n </clr-radio-wrapper>\n </div>\n <div\n *ngIf=\"rowActionService.hasActionableRow\"\n class=\"datagrid-row-actions datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-content select=\"clr-dg-action-overflow\"></ng-content>\n </div>\n <div\n *ngIf=\"globalExpandable.hasExpandableRow\"\n class=\"datagrid-expandable-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-container *ngIf=\"expand.expandable\">\n <button\n tabindex=\"-1\"\n *ngIf=\"!expand.loading\"\n (click)=\"toggleExpand()\"\n type=\"button\"\n class=\"datagrid-expandable-caret-button\"\n [attr.aria-expanded]=\"expand.expanded\"\n [attr.aria-label]=\"expand.expanded ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-controls]=\"expand.hasExpandTemplate && !expand.expanded ? null : expandableId\"\n >\n <cds-icon\n shape=\"angle\"\n class=\"datagrid-expandable-caret-icon\"\n [attr.direction]=\"expand.expanded ? 'down' : 'right'\"\n [attr.title]=\"expand.expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n <clr-spinner *ngIf=\"expand.loading\" clrSmall>{{ commonStrings.keys.loading }}</clr-spinner>\n </ng-container>\n </div>\n <div\n *ngIf=\"detailService.enabled\"\n class=\"datagrid-detail-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <button\n tabindex=\"-1\"\n (click)=\"detailService.toggle(item, detailButton)\"\n type=\"button\"\n #detailButton\n class=\"datagrid-detail-caret-button\"\n [disabled]=\"detailDisabled\"\n *ngIf=\"!detailHidden\"\n [class.is-open]=\"detailService.isRowOpen(item)\"\n [attr.aria-label]=\"detailService.isRowOpen(item) ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-expanded]=\"detailService.isRowOpen(item)\"\n [attr.aria-controls]=\"detailService.id\"\n aria-haspopup=\"dialog\"\n >\n <cds-icon\n shape=\"angle-double\"\n [attr.direction]=\"detailService.isRowOpen(item) ? 'left' : 'right'\"\n class=\"datagrid-detail-caret-icon\"\n [attr.title]=\"detailService.isRowOpen(item) ? commonStrings.keys.close: commonStrings.keys.open\"\n ></cds-icon>\n </button>\n </div>\n </ng-container>\n <!-- placeholder for projecting other sticky cells as pinned-->\n </div>\n <div class=\"datagrid-row-scrollable\" [ngClass]=\"{'is-replaced': replaced && expanded}\">\n <div class=\"datagrid-scrolling-cells\">\n <ng-content select=\"clr-dg-cell\"></ng-content>\n <ng-container #scrollableCells></ng-container>\n </div>\n <!-- details here when replace, re-visit when sticky container is used for pinned cells -->\n <ng-template *ngIf=\"replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n <ng-template *ngIf=\"!replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n </div>\n <clr-dg-cell class=\"skeleton-loading\" *ngIf=\"skeletonLoading\"></clr-dg-cell>\n</div>\n<!--\n We need the \"project into template\" hacks because we need this in 2 different places\n depending on whether the details replace the row or not.\n-->\n<ng-template #detail>\n <ng-content select=\"clr-dg-row-detail\"></ng-content>\n</ng-template>\n\n<ng-container #calculatedCells></ng-container>\n\n<ng-template #fixedCellTemplate>\n <div class=\"datagrid-fixed-column datagrid-cell\" role=\"gridcell\"></div>\n</ng-template>\n" }]
|
|
21419
21809
|
}], ctorParameters: function () {
|
|
21420
21810
|
return [{ type: Selection }, { type: RowActionService }, { type: ExpandableRowsCount }, { type: DatagridIfExpandService }, { type: DetailService }, { type: DisplayModeService }, { type: i0.ViewContainerRef }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: ClrCommonStringsService }, { type: Items }, { type: undefined, decorators: [{
|
|
21421
21811
|
type: Inject,
|
|
@@ -21441,7 +21831,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
21441
21831
|
args: [ClrDatagridCell]
|
|
21442
21832
|
}], expandAnimation: [{
|
|
21443
21833
|
type: ViewChild,
|
|
21444
|
-
args: [
|
|
21834
|
+
args: [ClrExpandableAnimationDirective]
|
|
21445
21835
|
}], detailButton: [{
|
|
21446
21836
|
type: ViewChild,
|
|
21447
21837
|
args: ['detailButton']
|
|
@@ -21454,6 +21844,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
21454
21844
|
}], _calculatedCells: [{
|
|
21455
21845
|
type: ViewChild,
|
|
21456
21846
|
args: ['calculatedCells', { read: ViewContainerRef }]
|
|
21847
|
+
}], _fixedCellTemplate: [{
|
|
21848
|
+
type: ViewChild,
|
|
21849
|
+
args: ['fixedCellTemplate']
|
|
21457
21850
|
}], item: [{
|
|
21458
21851
|
type: Input,
|
|
21459
21852
|
args: ['clrDgItem']
|
|
@@ -21655,6 +22048,12 @@ class ClrDatagridVirtualScrollDirective {
|
|
|
21655
22048
|
this.updateFixedSizeVirtualScrollInputs();
|
|
21656
22049
|
}
|
|
21657
22050
|
set dataRange(range) {
|
|
22051
|
+
if (!range) {
|
|
22052
|
+
return;
|
|
22053
|
+
}
|
|
22054
|
+
if (this.items.smart) {
|
|
22055
|
+
this.items.smartenDown();
|
|
22056
|
+
}
|
|
21658
22057
|
this.totalItems = range.total;
|
|
21659
22058
|
this.updateDataRange(range.skip, range.data);
|
|
21660
22059
|
}
|
|
@@ -21662,11 +22061,7 @@ class ClrDatagridVirtualScrollDirective {
|
|
|
21662
22061
|
return this._totalItems;
|
|
21663
22062
|
}
|
|
21664
22063
|
set totalItems(value) {
|
|
21665
|
-
if (this._totalItems === value) {
|
|
21666
|
-
return;
|
|
21667
|
-
}
|
|
21668
22064
|
this._totalItems = value;
|
|
21669
|
-
this.populatePlaceholderData();
|
|
21670
22065
|
}
|
|
21671
22066
|
ngAfterViewInit() {
|
|
21672
22067
|
this.injector.runInContext(() => {
|
|
@@ -21677,7 +22072,9 @@ class ClrDatagridVirtualScrollDirective {
|
|
|
21677
22072
|
this.gridRoleElement = this.datagridElementRef.nativeElement.querySelector('[role="grid"]');
|
|
21678
22073
|
this.updateCdkVirtualForInputs();
|
|
21679
22074
|
this.subscriptions.push(this.items.change.subscribe(newItems => {
|
|
21680
|
-
this.
|
|
22075
|
+
if (this.items.smart) {
|
|
22076
|
+
this.cdkVirtualFor.cdkVirtualForOf = newItems;
|
|
22077
|
+
}
|
|
21681
22078
|
}), this.cdkVirtualFor.dataStream.subscribe(data => {
|
|
21682
22079
|
this.updateAriaRowCount(data.length);
|
|
21683
22080
|
}), this.virtualScrollViewport.scrolledIndexChange.subscribe(index => {
|
|
@@ -21716,16 +22113,13 @@ class ClrDatagridVirtualScrollDirective {
|
|
|
21716
22113
|
var _a;
|
|
21717
22114
|
(_a = this.virtualScrollViewport) === null || _a === void 0 ? void 0 : _a.scrollToIndex(index, behavior);
|
|
21718
22115
|
}
|
|
21719
|
-
populatePlaceholderData() {
|
|
21720
|
-
this.cdkVirtualForOf = Array(this.totalItems);
|
|
21721
|
-
}
|
|
21722
22116
|
updateDataRange(skip, data) {
|
|
21723
|
-
|
|
21724
|
-
|
|
22117
|
+
let items = this.cdkVirtualForOf;
|
|
22118
|
+
if (!this.persistItems || !items || (items === null || items === void 0 ? void 0 : items.length) !== this.totalItems) {
|
|
22119
|
+
items = Array(this.totalItems);
|
|
21725
22120
|
}
|
|
21726
|
-
const items = this.items.all;
|
|
21727
22121
|
items.splice(skip, data.length, ...data);
|
|
21728
|
-
this.
|
|
22122
|
+
this.cdkVirtualForOf = Array.from(items);
|
|
21729
22123
|
}
|
|
21730
22124
|
updateCdkVirtualForInputs() {
|
|
21731
22125
|
if (this.cdkVirtualFor) {
|
|
@@ -21786,7 +22180,7 @@ class ClrDatagridVirtualScrollDirective {
|
|
|
21786
22180
|
return virtualScrollViewport;
|
|
21787
22181
|
}
|
|
21788
22182
|
}
|
|
21789
|
-
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
|
|
22183
|
+
ClrDatagridVirtualScrollDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridVirtualScrollDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.IterableDiffers }, { token: Items }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i1$3.Directionality }, { token: i3$1.ScrollDispatcher }, { token: i3$1.ViewportRuler }, { token: forwardRef(() => ClrDatagrid) }, { token: ColumnsService }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Directive });
|
|
21790
22184
|
ClrDatagridVirtualScrollDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatagridVirtualScrollDirective, selector: "[clrVirtualScroll],[ClrVirtualScroll]", inputs: { persistItems: ["clrVirtualPersistItems", "persistItems"], cdkVirtualForOf: ["clrVirtualRowsOf", "cdkVirtualForOf"], cdkVirtualForTrackBy: ["clrVirtualRowsTrackBy", "cdkVirtualForTrackBy"], cdkVirtualForTemplate: ["clrVirtualRowsTemplate", "cdkVirtualForTemplate"], cdkVirtualForTemplateCacheSize: ["clrVirtualRowsTemplateCacheSize", "cdkVirtualForTemplateCacheSize"], itemSize: ["clrVirtualRowsItemSize", "itemSize"], minBufferPx: ["clrVirtualRowsMinBufferPx", "minBufferPx"], maxBufferPx: ["clrVirtualRowsMaxBufferPx", "maxBufferPx"], dataRange: ["clrVirtualDataRange", "dataRange"] }, outputs: { renderedRangeChange: "renderedRangeChange" }, providers: [Items], ngImport: i0 });
|
|
21791
22185
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridVirtualScrollDirective, decorators: [{
|
|
21792
22186
|
type: Directive,
|
|
@@ -21795,9 +22189,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
21795
22189
|
providers: [Items],
|
|
21796
22190
|
}]
|
|
21797
22191
|
}], ctorParameters: function () {
|
|
21798
|
-
return [{ type: i0.ChangeDetectorRef }, { type: i0.IterableDiffers }, { type: Items, decorators: [{
|
|
21799
|
-
type:
|
|
21800
|
-
|
|
22192
|
+
return [{ type: i0.ChangeDetectorRef }, { type: i0.IterableDiffers }, { type: Items }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i1$3.Directionality }, { type: i3$1.ScrollDispatcher }, { type: i3$1.ViewportRuler }, { type: ClrDatagrid, decorators: [{
|
|
22193
|
+
type: Inject,
|
|
22194
|
+
args: [forwardRef(() => ClrDatagrid)]
|
|
22195
|
+
}] }, { type: ColumnsService }, { type: i0.EnvironmentInjector }];
|
|
21801
22196
|
}, propDecorators: { renderedRangeChange: [{
|
|
21802
22197
|
type: Output
|
|
21803
22198
|
}], persistItems: [{
|
|
@@ -22036,6 +22431,11 @@ class ClrDatagrid {
|
|
|
22036
22431
|
* Output emitted whenever the data needs to be refreshed, based on user action or external ones
|
|
22037
22432
|
*/
|
|
22038
22433
|
this.refresh = new EventEmitter(false);
|
|
22434
|
+
/**
|
|
22435
|
+
* The application can provide custom select all logic.
|
|
22436
|
+
*/
|
|
22437
|
+
this.customSelectAllEnabled = false;
|
|
22438
|
+
this.customSelectAll = new EventEmitter();
|
|
22039
22439
|
/* reference to the enum so that template can access */
|
|
22040
22440
|
this.SELECTION_TYPE = SelectionType;
|
|
22041
22441
|
/**
|
|
@@ -22102,13 +22502,18 @@ class ClrDatagrid {
|
|
|
22102
22502
|
get allSelected() {
|
|
22103
22503
|
return this.selection.isAllSelected();
|
|
22104
22504
|
}
|
|
22105
|
-
set allSelected(
|
|
22106
|
-
|
|
22107
|
-
|
|
22108
|
-
|
|
22109
|
-
|
|
22110
|
-
|
|
22111
|
-
|
|
22505
|
+
set allSelected(value) {
|
|
22506
|
+
if (this.customSelectAllEnabled) {
|
|
22507
|
+
this.customSelectAll.emit(value);
|
|
22508
|
+
}
|
|
22509
|
+
else {
|
|
22510
|
+
/**
|
|
22511
|
+
* This is a setter but we ignore the value.
|
|
22512
|
+
* It's strange, but it lets us have an indeterminate state where only
|
|
22513
|
+
* some of the items are selected.
|
|
22514
|
+
*/
|
|
22515
|
+
this.selection.toggleAll();
|
|
22516
|
+
}
|
|
22112
22517
|
}
|
|
22113
22518
|
ngAfterContentInit() {
|
|
22114
22519
|
if (!this.items.smart) {
|
|
@@ -22154,7 +22559,7 @@ class ClrDatagrid {
|
|
|
22154
22559
|
this.updateDetailState();
|
|
22155
22560
|
// TODO: determine if we can get rid of provider wiring in view init so that subscriptions can be done earlier
|
|
22156
22561
|
this.refresh.emit(this.stateProvider.state);
|
|
22157
|
-
this._subscriptions.push(this.stateProvider.change.subscribe(state => this.refresh.emit(state)), this.selection.change.subscribe(s => {
|
|
22562
|
+
this._subscriptions.push(this.stickyHeaders.changes.subscribe(() => this.resize()), this.stateProvider.change.subscribe(state => this.refresh.emit(state)), this.selection.change.subscribe(s => {
|
|
22158
22563
|
if (this.selection.selectionType === SelectionType.Single) {
|
|
22159
22564
|
this.singleSelectedChanged.emit(s);
|
|
22160
22565
|
}
|
|
@@ -22200,6 +22605,15 @@ class ClrDatagrid {
|
|
|
22200
22605
|
else {
|
|
22201
22606
|
// Set state, style for the datagrid to CALCULATE and insert row & columns into containers
|
|
22202
22607
|
this.renderer.addClass(this.el.nativeElement, 'datagrid-calculate-mode');
|
|
22608
|
+
// Inserts a fixed column if any of these conditions are true.
|
|
22609
|
+
const fixedColumnConditions = [
|
|
22610
|
+
this.rowActionService.hasActionableRow,
|
|
22611
|
+
this.selection.selectionType !== this.SELECTION_TYPE.None,
|
|
22612
|
+
this.expandableRows.hasExpandableRow || this.detailService.enabled,
|
|
22613
|
+
];
|
|
22614
|
+
fixedColumnConditions
|
|
22615
|
+
.filter(Boolean)
|
|
22616
|
+
.forEach(() => this._projectedCalculationColumns.insert(this._fixedColumnTemplate.createEmbeddedView(null)));
|
|
22203
22617
|
this.columns.forEach(column => {
|
|
22204
22618
|
this._projectedCalculationColumns.insert(column._view);
|
|
22205
22619
|
});
|
|
@@ -22226,11 +22640,9 @@ class ClrDatagrid {
|
|
|
22226
22640
|
this._subscriptions.forEach((sub) => sub.unsubscribe());
|
|
22227
22641
|
}
|
|
22228
22642
|
toggleAllSelected($event) {
|
|
22643
|
+
var _a;
|
|
22229
22644
|
$event.preventDefault();
|
|
22230
|
-
|
|
22231
|
-
return;
|
|
22232
|
-
}
|
|
22233
|
-
this.allSelected = !this.allSelected;
|
|
22645
|
+
(_a = this.selectAllCheckbox) === null || _a === void 0 ? void 0 : _a.nativeElement.click();
|
|
22234
22646
|
}
|
|
22235
22647
|
resize() {
|
|
22236
22648
|
this.organizer.resize();
|
|
@@ -22266,7 +22678,7 @@ class ClrDatagrid {
|
|
|
22266
22678
|
}
|
|
22267
22679
|
}
|
|
22268
22680
|
ClrDatagrid.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagrid, deps: [{ token: DatagridRenderOrganizer }, { token: Items }, { token: ExpandableRowsCount }, { token: Selection }, { token: RowActionService }, { token: StateProvider }, { token: DisplayModeService }, { token: i0.Renderer2 }, { token: DetailService }, { token: DOCUMENT }, { token: i0.ElementRef }, { token: Page }, { token: ClrCommonStringsService }, { token: KeyNavigationGridController }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
22269
|
-
ClrDatagrid.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatagrid, selector: "clr-datagrid", inputs: { loadingMoreItems: ["clrLoadingMoreItems", "loadingMoreItems"], clrDgSingleSelectionAriaLabel: "clrDgSingleSelectionAriaLabel", clrDgSingleActionableAriaLabel: "clrDgSingleActionableAriaLabel", clrDetailExpandableAriaLabel: "clrDetailExpandableAriaLabel", clrDgDisablePageFocus: "clrDgDisablePageFocus", loading: ["clrDgLoading", "loading"], selected: ["clrDgSelected", "selected"], singleSelected: ["clrDgSingleSelected", "singleSelected"], clrDgPreserveSelection: "clrDgPreserveSelection", rowSelectionMode: ["clrDgRowSelection", "rowSelectionMode"], trackBy: ["clrDgItemsTrackBy", "trackBy"] }, outputs: { selectedChanged: "clrDgSelectedChange", singleSelectedChanged: "clrDgSingleSelectedChange", refresh: "clrDgRefresh" }, host: { properties: { "class.datagrid-host": "true", "class.datagrid-detail-open": "detailService.isOpen" } }, providers: [
|
|
22681
|
+
ClrDatagrid.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatagrid, selector: "clr-datagrid", inputs: { loadingMoreItems: ["clrLoadingMoreItems", "loadingMoreItems"], clrDgSingleSelectionAriaLabel: "clrDgSingleSelectionAriaLabel", clrDgSingleActionableAriaLabel: "clrDgSingleActionableAriaLabel", clrDetailExpandableAriaLabel: "clrDetailExpandableAriaLabel", clrDgDisablePageFocus: "clrDgDisablePageFocus", customSelectAllEnabled: ["clrDgCustomSelectAllEnabled", "customSelectAllEnabled"], loading: ["clrDgLoading", "loading"], selected: ["clrDgSelected", "selected"], singleSelected: ["clrDgSingleSelected", "singleSelected"], clrDgPreserveSelection: "clrDgPreserveSelection", rowSelectionMode: ["clrDgRowSelection", "rowSelectionMode"], trackBy: ["clrDgItemsTrackBy", "trackBy"] }, outputs: { selectedChanged: "clrDgSelectedChange", singleSelectedChanged: "clrDgSingleSelectedChange", refresh: "clrDgRefresh", customSelectAll: "clrDgCustomSelectAll" }, host: { properties: { "class.datagrid-host": "true", "class.datagrid-detail-open": "detailService.isOpen" } }, providers: [
|
|
22270
22682
|
Selection,
|
|
22271
22683
|
Sort,
|
|
22272
22684
|
FiltersProvider,
|
|
@@ -22282,7 +22694,7 @@ ClrDatagrid.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
|
22282
22694
|
ColumnsService,
|
|
22283
22695
|
DisplayModeService,
|
|
22284
22696
|
KeyNavigationGridController,
|
|
22285
|
-
], 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", "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" }] });
|
|
22697
|
+
], queries: [{ propertyName: "virtualScroll", first: true, predicate: ClrDatagridVirtualScrollDirective, descendants: true }, { propertyName: "iterator", first: true, predicate: ClrDatagridItems, descendants: true }, { propertyName: "placeholder", first: true, predicate: ClrDatagridPlaceholder, descendants: true }, { propertyName: "columns", predicate: ClrDatagridColumn }, { propertyName: "rows", predicate: ClrDatagridRow }], viewQueries: [{ propertyName: "datagrid", first: true, predicate: ["datagrid"], descendants: true, read: ElementRef }, { propertyName: "datagridTable", first: true, predicate: ["datagridTable"], descendants: true, read: ElementRef }, { propertyName: "scrollableColumns", first: true, predicate: ["scrollableColumns"], descendants: true, read: ViewContainerRef }, { propertyName: "_projectedDisplayColumns", first: true, predicate: ["projectedDisplayColumns"], descendants: true, read: ViewContainerRef }, { propertyName: "_projectedCalculationColumns", first: true, predicate: ["projectedCalculationColumns"], descendants: true, read: ViewContainerRef }, { propertyName: "_displayedRows", first: true, predicate: ["displayedRows"], descendants: true, read: ViewContainerRef }, { propertyName: "_calculationRows", first: true, predicate: ["calculationRows"], descendants: true, read: ViewContainerRef }, { propertyName: "_fixedColumnTemplate", first: true, predicate: ["fixedColumnTemplate"], descendants: true }, { propertyName: "selectAllCheckbox", first: true, predicate: ["selectAllCheckbox"], descendants: true }, { propertyName: "stickyHeaders", predicate: ["stickyHeader"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<ng-content select=\"clr-dg-action-bar\"></ng-content>\n<div class=\"datagrid-outer-wrapper\">\n <div class=\"datagrid-inner-wrapper\">\n <div class=\"datagrid\" #datagrid [attr.aria-hidden]=\"detailService.isOpen ? true : null\">\n <div class=\"datagrid-table-wrapper\">\n <div role=\"grid\" class=\"datagrid-table\" tabindex=\"-1\" #datagridTable>\n <div role=\"rowgroup\" class=\"datagrid-header\">\n <div role=\"row\" class=\"datagrid-row\">\n <div class=\"datagrid-row-master datagrid-row-flex\">\n <div class=\"datagrid-row-sticky\">\n <!--header for datagrid where you can select multiple rows -->\n <div\n #stickyHeader\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n (keydown.space)=\"toggleAllSelected($event)\"\n >\n <div *ngIf=\"!virtualScroll || customSelectAllEnabled\" class=\"clr-checkbox-wrapper\">\n <!-- We need to move focus and space-key handling to the parent because of keyboard arrow key navigation,\n which is not able to transfer focus directly on the input when focused with the tab key -->\n <input\n #selectAllCheckbox\n type=\"checkbox\"\n [id]=\"selectAllId\"\n [(ngModel)]=\"allSelected\"\n [attr.aria-label]=\"commonStrings.keys.selectAll\"\n tabindex=\"-1\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"selectAllId\" class=\"clr-control-label clr-col-null\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.selectAll}}</span>\n </label>\n </div>\n\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for datagrid where you can select one row only -->\n <div\n #stickyHeader\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n >\n <div class=\"clr-sr-only\">{{clrDgSingleSelectionAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for single row action; only displayType if we have at least one actionable row in datagrid -->\n <div\n #stickyHeader\n role=\"columnheader\"\n class=\"datagrid-column datagrid-row-actions datagrid-fixed-column\"\n *ngIf=\"rowActionService.hasActionableRow\"\n >\n <div class=\"clr-sr-only\">{{clrDgSingleActionableAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for carets; only displayType if we have at least one expandable row in datagrid -->\n <div\n #stickyHeader\n role=\"columnheader\"\n class=\"datagrid-column datagrid-expandable-caret datagrid-fixed-column\"\n *ngIf=\"expandableRows.hasExpandableRow || detailService.enabled\"\n >\n <div class=\"clr-sr-only\">{{clrDetailExpandableAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n </div>\n <div class=\"datagrid-row-scrollable\">\n <ng-container #projectedDisplayColumns></ng-container>\n </div>\n </div>\n </div>\n </div>\n\n <div role=\"presentation\" class=\"datagrid-rows\">\n <clr-dg-row class=\"datagrid-row-loading\" *ngIf=\"loadingMoreItems\">\n <clr-dg-cell>\n <clr-spinner clrMedium></clr-spinner>\n <span>{{ commonStrings.keys.loading }}</span>\n </clr-dg-cell>\n </clr-dg-row>\n\n <ng-container #displayedRows></ng-container>\n\n <clr-dg-row class=\"datagrid-row-loading\" *ngIf=\"loadingMoreItems\">\n <clr-dg-cell>\n <clr-spinner clrMedium></clr-spinner>\n <span>{{ commonStrings.keys.loading }}</span>\n </clr-dg-cell>\n </clr-dg-row>\n\n <!-- Custom placeholder overrides the default empty one -->\n <ng-content select=\"clr-dg-placeholder\"></ng-content>\n <clr-dg-placeholder *ngIf=\"!placeholder\"></clr-dg-placeholder>\n </div>\n </div>\n </div>\n </div>\n <ng-content select=\"clr-dg-footer\"></ng-content>\n <div class=\"datagrid-spinner\" *ngIf=\"loading\">\n <clr-spinner clrMedium>Loading</clr-spinner>\n </div>\n </div>\n <ng-content select=\"[clrIfDetail],clr-dg-detail\"></ng-content>\n</div>\n\n<div class=\"datagrid-calculation-table\">\n <div class=\"datagrid-calculation-header\">\n <ng-container #projectedCalculationColumns></ng-container>\n </div>\n <ng-container #calculationRows></ng-container>\n</div>\n\n<ng-template #fixedColumnTemplate>\n <div class=\"datagrid-column datagrid-fixed-column\"></div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: ClrLabel, selector: "label", inputs: ["id", "for"] }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }, { kind: "component", type: ClrDatagridCell, selector: "clr-dg-cell" }, { kind: "component", type: ClrDatagridPlaceholder, selector: "clr-dg-placeholder" }, { kind: "component", type: ClrDatagridRow, selector: "clr-dg-row", inputs: ["clrDgDetailDisabled", "clrDgDetailHidden", "clrDgSkeletonLoading", "clrDgItem", "clrDgSelectable", "clrDgSelected", "clrDgExpanded", "clrDgDetailOpenLabel", "clrDgDetailCloseLabel", "clrDgRowSelectionLabel"], outputs: ["clrDgSelectedChange", "clrDgExpandedChange"] }, { kind: "directive", type: ClrDatagridSelectionCellDirective, selector: ".datagrid-select" }, { kind: "directive", type: DatagridCellRenderer, selector: "clr-dg-cell" }, { kind: "directive", type: DatagridRowRenderer, selector: "clr-dg-row, clr-dg-row-detail" }, { kind: "directive", type: ActionableOompaLoompa, selector: "clr-datagrid, clr-dg-row" }, { kind: "directive", type: ExpandableOompaLoompa, selector: "clr-datagrid, clr-dg-row" }] });
|
|
22286
22698
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagrid, decorators: [{
|
|
22287
22699
|
type: Component,
|
|
22288
22700
|
args: [{ selector: 'clr-datagrid', providers: [
|
|
@@ -22304,7 +22716,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
22304
22716
|
], host: {
|
|
22305
22717
|
'[class.datagrid-host]': 'true',
|
|
22306
22718
|
'[class.datagrid-detail-open]': 'detailService.isOpen',
|
|
22307
|
-
}, template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<ng-content select=\"clr-dg-action-bar\"></ng-content>\n<div class=\"datagrid-outer-wrapper\">\n <div class=\"datagrid-inner-wrapper\">\n <div class=\"datagrid\" #datagrid [attr.aria-hidden]=\"detailService.isOpen ? true : null\">\n <div class=\"datagrid-table-wrapper\">\n <div role=\"grid\" class=\"datagrid-table\" tabindex=\"-1\" #datagridTable>\n <div role=\"rowgroup\" class=\"datagrid-header\">\n <div role=\"row\" class=\"datagrid-row\">\n <div class=\"datagrid-row-master datagrid-row-flex\">\n <div class=\"datagrid-row-sticky\">\n <!--header for datagrid where you can select multiple rows -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n (keydown.space)=\"toggleAllSelected($event)\"\n >\n <div *ngIf=\"!virtualScroll\" class=\"clr-checkbox-wrapper\">\n <!-- We need to move focus and space-key handling to the parent because of keyboard arrow key navigation,\n which is not able to transfer focus directly on the input when focused with the tab key -->\n <input\n type=\"checkbox\"\n [id]=\"selectAllId\"\n [(ngModel)]=\"allSelected\"\n [attr.aria-label]=\"commonStrings.keys.selectAll\"\n tabindex=\"-1\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"selectAllId\" class=\"clr-control-label clr-col-null\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.selectAll}}</span>\n </label>\n </div>\n\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for datagrid where you can select one row only -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n >\n <div class=\"clr-sr-only\">{{clrDgSingleSelectionAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for single row action; only displayType if we have at least one actionable row in datagrid -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-row-actions datagrid-fixed-column\"\n *ngIf=\"rowActionService.hasActionableRow\"\n >\n <div class=\"clr-sr-only\">{{clrDgSingleActionableAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for carets; only displayType if we have at least one expandable row in datagrid -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-expandable-caret datagrid-fixed-column\"\n *ngIf=\"expandableRows.hasExpandableRow || detailService.enabled\"\n >\n <div class=\"clr-sr-only\">{{clrDetailExpandableAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n </div>\n <div class=\"datagrid-row-scrollable\">\n <ng-container #projectedDisplayColumns></ng-container>\n </div>\n </div>\n </div>\n </div>\n\n <div role=\"presentation\" class=\"datagrid-rows\">\n <clr-dg-row class=\"datagrid-row-loading\" *ngIf=\"loadingMoreItems\">\n <clr-dg-cell>\n <clr-spinner clrMedium></clr-spinner>\n <span>{{ commonStrings.keys.loading }}</span>\n </clr-dg-cell>\n </clr-dg-row>\n\n <ng-container #displayedRows></ng-container>\n\n <clr-dg-row class=\"datagrid-row-loading\" *ngIf=\"loadingMoreItems\">\n <clr-dg-cell>\n <clr-spinner clrMedium></clr-spinner>\n <span>{{ commonStrings.keys.loading }}</span>\n </clr-dg-cell>\n </clr-dg-row>\n\n <!-- Custom placeholder overrides the default empty one -->\n <ng-content select=\"clr-dg-placeholder\"></ng-content>\n <clr-dg-placeholder *ngIf=\"!placeholder\"></clr-dg-placeholder>\n </div>\n </div>\n </div>\n </div>\n <ng-content select=\"clr-dg-footer\"></ng-content>\n <div class=\"datagrid-spinner\" *ngIf=\"loading\">\n <clr-spinner clrMedium>Loading</clr-spinner>\n </div>\n </div>\n <ng-content select=\"[clrIfDetail],clr-dg-detail\"></ng-content>\n</div>\n\n<div class=\"datagrid-calculation-table\">\n <div class=\"datagrid-calculation-header\">\n <ng-container #projectedCalculationColumns></ng-container>\n </div>\n <ng-container #calculationRows></ng-container>\n</div>\n" }]
|
|
22719
|
+
}, template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<ng-content select=\"clr-dg-action-bar\"></ng-content>\n<div class=\"datagrid-outer-wrapper\">\n <div class=\"datagrid-inner-wrapper\">\n <div class=\"datagrid\" #datagrid [attr.aria-hidden]=\"detailService.isOpen ? true : null\">\n <div class=\"datagrid-table-wrapper\">\n <div role=\"grid\" class=\"datagrid-table\" tabindex=\"-1\" #datagridTable>\n <div role=\"rowgroup\" class=\"datagrid-header\">\n <div role=\"row\" class=\"datagrid-row\">\n <div class=\"datagrid-row-master datagrid-row-flex\">\n <div class=\"datagrid-row-sticky\">\n <!--header for datagrid where you can select multiple rows -->\n <div\n #stickyHeader\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n (keydown.space)=\"toggleAllSelected($event)\"\n >\n <div *ngIf=\"!virtualScroll || customSelectAllEnabled\" class=\"clr-checkbox-wrapper\">\n <!-- We need to move focus and space-key handling to the parent because of keyboard arrow key navigation,\n which is not able to transfer focus directly on the input when focused with the tab key -->\n <input\n #selectAllCheckbox\n type=\"checkbox\"\n [id]=\"selectAllId\"\n [(ngModel)]=\"allSelected\"\n [attr.aria-label]=\"commonStrings.keys.selectAll\"\n tabindex=\"-1\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"selectAllId\" class=\"clr-control-label clr-col-null\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.selectAll}}</span>\n </label>\n </div>\n\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for datagrid where you can select one row only -->\n <div\n #stickyHeader\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n >\n <div class=\"clr-sr-only\">{{clrDgSingleSelectionAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for single row action; only displayType if we have at least one actionable row in datagrid -->\n <div\n #stickyHeader\n role=\"columnheader\"\n class=\"datagrid-column datagrid-row-actions datagrid-fixed-column\"\n *ngIf=\"rowActionService.hasActionableRow\"\n >\n <div class=\"clr-sr-only\">{{clrDgSingleActionableAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for carets; only displayType if we have at least one expandable row in datagrid -->\n <div\n #stickyHeader\n role=\"columnheader\"\n class=\"datagrid-column datagrid-expandable-caret datagrid-fixed-column\"\n *ngIf=\"expandableRows.hasExpandableRow || detailService.enabled\"\n >\n <div class=\"clr-sr-only\">{{clrDetailExpandableAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n </div>\n <div class=\"datagrid-row-scrollable\">\n <ng-container #projectedDisplayColumns></ng-container>\n </div>\n </div>\n </div>\n </div>\n\n <div role=\"presentation\" class=\"datagrid-rows\">\n <clr-dg-row class=\"datagrid-row-loading\" *ngIf=\"loadingMoreItems\">\n <clr-dg-cell>\n <clr-spinner clrMedium></clr-spinner>\n <span>{{ commonStrings.keys.loading }}</span>\n </clr-dg-cell>\n </clr-dg-row>\n\n <ng-container #displayedRows></ng-container>\n\n <clr-dg-row class=\"datagrid-row-loading\" *ngIf=\"loadingMoreItems\">\n <clr-dg-cell>\n <clr-spinner clrMedium></clr-spinner>\n <span>{{ commonStrings.keys.loading }}</span>\n </clr-dg-cell>\n </clr-dg-row>\n\n <!-- Custom placeholder overrides the default empty one -->\n <ng-content select=\"clr-dg-placeholder\"></ng-content>\n <clr-dg-placeholder *ngIf=\"!placeholder\"></clr-dg-placeholder>\n </div>\n </div>\n </div>\n </div>\n <ng-content select=\"clr-dg-footer\"></ng-content>\n <div class=\"datagrid-spinner\" *ngIf=\"loading\">\n <clr-spinner clrMedium>Loading</clr-spinner>\n </div>\n </div>\n <ng-content select=\"[clrIfDetail],clr-dg-detail\"></ng-content>\n</div>\n\n<div class=\"datagrid-calculation-table\">\n <div class=\"datagrid-calculation-header\">\n <ng-container #projectedCalculationColumns></ng-container>\n </div>\n <ng-container #calculationRows></ng-container>\n</div>\n\n<ng-template #fixedColumnTemplate>\n <div class=\"datagrid-column datagrid-fixed-column\"></div>\n</ng-template>\n" }]
|
|
22308
22720
|
}], ctorParameters: function () {
|
|
22309
22721
|
return [{ type: DatagridRenderOrganizer }, { type: Items }, { type: ExpandableRowsCount }, { type: Selection }, { type: RowActionService }, { type: StateProvider }, { type: DisplayModeService }, { type: i0.Renderer2 }, { type: DetailService }, { type: undefined, decorators: [{
|
|
22310
22722
|
type: Inject,
|
|
@@ -22330,6 +22742,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
22330
22742
|
}], refresh: [{
|
|
22331
22743
|
type: Output,
|
|
22332
22744
|
args: ['clrDgRefresh']
|
|
22745
|
+
}], customSelectAllEnabled: [{
|
|
22746
|
+
type: Input,
|
|
22747
|
+
args: ['clrDgCustomSelectAllEnabled']
|
|
22748
|
+
}], customSelectAll: [{
|
|
22749
|
+
type: Output,
|
|
22750
|
+
args: ['clrDgCustomSelectAll']
|
|
22333
22751
|
}], virtualScroll: [{
|
|
22334
22752
|
type: ContentChild,
|
|
22335
22753
|
args: [ClrDatagridVirtualScrollDirective]
|
|
@@ -22366,6 +22784,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
22366
22784
|
}], _calculationRows: [{
|
|
22367
22785
|
type: ViewChild,
|
|
22368
22786
|
args: ['calculationRows', { read: ViewContainerRef }]
|
|
22787
|
+
}], _fixedColumnTemplate: [{
|
|
22788
|
+
type: ViewChild,
|
|
22789
|
+
args: ['fixedColumnTemplate']
|
|
22790
|
+
}], stickyHeaders: [{
|
|
22791
|
+
type: ViewChildren,
|
|
22792
|
+
args: ['stickyHeader', { emitDistinctChangesOnly: true }]
|
|
22793
|
+
}], selectAllCheckbox: [{
|
|
22794
|
+
type: ViewChild,
|
|
22795
|
+
args: ['selectAllCheckbox']
|
|
22369
22796
|
}], loading: [{
|
|
22370
22797
|
type: Input,
|
|
22371
22798
|
args: ['clrDgLoading']
|
|
@@ -26685,7 +27112,7 @@ class ClrModal {
|
|
|
26685
27112
|
}
|
|
26686
27113
|
}
|
|
26687
27114
|
ClrModal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModal, deps: [{ token: ScrollingService }, { token: ClrCommonStringsService }, { token: ModalStackService }, { token: ClrModalConfigurationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
26688
|
-
ClrModal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrModal, selector: "clr-modal", inputs: { _open: ["clrModalOpen", "_open"], closable: ["clrModalClosable", "closable"], closeButtonAriaLabel: ["clrModalCloseButtonAriaLabel", "closeButtonAriaLabel"], size: ["clrModalSize", "size"], staticBackdrop: ["clrModalStaticBackdrop", "staticBackdrop"], skipAnimation: ["clrModalSkipAnimation", "skipAnimation"], stopClose: ["clrModalPreventClose", "stopClose"], labelledBy: ["clrModalLabelledById", "labelledBy"], bypassScrollService: ["clrModalOverrideScrollService", "bypassScrollService"] }, outputs: { _openChanged: "clrModalOpenChange", altClose: "clrModalAlternateClose" }, host: { properties: { "class.open": "this._open" } }, viewQueries: [{ propertyName: "title", first: true, predicate: ["title"], descendants: true }, { propertyName: "bodyElementRef", first: true, predicate: ["body"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div *ngIf=\"_open\" class=\"modal\" [class.modal-full-screen]=\"size == 'full-screen'\">\n <!--fixme: revisit when ngClass works with exit animation-->\n <div\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n [@fadeMove]=\"fadeMove\"\n (@fadeMove.done)=\"fadeDone($event)\"\n class=\"modal-dialog\"\n [class.modal-sm]=\"size == 'sm'\"\n [class.modal-lg]=\"size == 'lg'\"\n [class.modal-xl]=\"size == 'xl'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!_open\"\n [attr.aria-labelledby]=\"labelledBy || modalId\"\n >\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n
|
|
27115
|
+
ClrModal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrModal, selector: "clr-modal", inputs: { _open: ["clrModalOpen", "_open"], closable: ["clrModalClosable", "closable"], closeButtonAriaLabel: ["clrModalCloseButtonAriaLabel", "closeButtonAriaLabel"], size: ["clrModalSize", "size"], staticBackdrop: ["clrModalStaticBackdrop", "staticBackdrop"], skipAnimation: ["clrModalSkipAnimation", "skipAnimation"], stopClose: ["clrModalPreventClose", "stopClose"], labelledBy: ["clrModalLabelledById", "labelledBy"], bypassScrollService: ["clrModalOverrideScrollService", "bypassScrollService"] }, outputs: { _openChanged: "clrModalOpenChange", altClose: "clrModalAlternateClose" }, host: { properties: { "class.open": "this._open" } }, queries: [{ propertyName: "modalContentTemplate", first: true, predicate: ["clrInternalModalContentTemplate"], descendants: true }], viewQueries: [{ propertyName: "title", first: true, predicate: ["title"], descendants: true }, { propertyName: "bodyElementRef", first: true, predicate: ["body"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div *ngIf=\"_open\" class=\"modal\" [class.modal-full-screen]=\"size == 'full-screen'\">\n <!--fixme: revisit when ngClass works with exit animation-->\n <div\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n [@fadeMove]=\"fadeMove\"\n (@fadeMove.done)=\"fadeDone($event)\"\n class=\"modal-dialog\"\n [class.modal-sm]=\"size == 'sm'\"\n [class.modal-lg]=\"size == 'lg'\"\n [class.modal-xl]=\"size == 'xl'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!_open\"\n [attr.aria-labelledby]=\"labelledBy || modalId\"\n >\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n <!-- This wizard is tightly coupled to the modal styles, so changes here could require changes in the wizard. -->\n <div *ngIf=\"!modalContentTemplate; else modalContentTemplate\" class=\"modal-content-wrapper\">\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <ng-content select=\".leading-button\"></ng-content>\n <div class=\"modal-title-wrapper\" #title [id]=\"modalId\" cdkFocusInitial tabindex=\"-1\">\n <ng-content select=\".modal-title\"></ng-content>\n </div>\n <button\n type=\"button\"\n [attr.aria-label]=\"closeButtonAriaLabel || commonStrings.keys.close\"\n class=\"close\"\n *ngIf=\"closable\"\n (click)=\"close()\"\n >\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n </div>\n <div #body class=\"modal-body-wrapper\">\n <ng-content select=\".modal-body\"></ng-content>\n </div>\n <ng-content select=\".modal-footer\"></ng-content>\n </div>\n </div>\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n </div>\n</div>\n\n<div [@fade] *ngIf=\"backdrop\" class=\"modal-backdrop\" aria-hidden=\"true\" (click)=\"backdropClick()\"></div>\n", styles: [":host{display:none}:host.open{display:inline}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]" }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }], viewProviders: [ScrollingService], animations: [
|
|
26689
27116
|
trigger('fadeMove', [
|
|
26690
27117
|
transition('* => fadeDown', [
|
|
26691
27118
|
style({ opacity: 0, transform: 'translate(0, -25%)' }),
|
|
@@ -26720,7 +27147,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
26720
27147
|
transition('void => *', [style({ opacity: 0 }), animate('0.2s ease-in-out', style({ opacity: 0.85 }))]),
|
|
26721
27148
|
transition('* => void', [animate('0.2s ease-in-out', style({ opacity: 0 }))]),
|
|
26722
27149
|
]),
|
|
26723
|
-
], template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div *ngIf=\"_open\" class=\"modal\" [class.modal-full-screen]=\"size == 'full-screen'\">\n <!--fixme: revisit when ngClass works with exit animation-->\n <div\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n [@fadeMove]=\"fadeMove\"\n (@fadeMove.done)=\"fadeDone($event)\"\n class=\"modal-dialog\"\n [class.modal-sm]=\"size == 'sm'\"\n [class.modal-lg]=\"size == 'lg'\"\n [class.modal-xl]=\"size == 'xl'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!_open\"\n [attr.aria-labelledby]=\"labelledBy || modalId\"\n >\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n
|
|
27150
|
+
], template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div *ngIf=\"_open\" class=\"modal\" [class.modal-full-screen]=\"size == 'full-screen'\">\n <!--fixme: revisit when ngClass works with exit animation-->\n <div\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n [@fadeMove]=\"fadeMove\"\n (@fadeMove.done)=\"fadeDone($event)\"\n class=\"modal-dialog\"\n [class.modal-sm]=\"size == 'sm'\"\n [class.modal-lg]=\"size == 'lg'\"\n [class.modal-xl]=\"size == 'xl'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!_open\"\n [attr.aria-labelledby]=\"labelledBy || modalId\"\n >\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n <!-- This wizard is tightly coupled to the modal styles, so changes here could require changes in the wizard. -->\n <div *ngIf=\"!modalContentTemplate; else modalContentTemplate\" class=\"modal-content-wrapper\">\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <ng-content select=\".leading-button\"></ng-content>\n <div class=\"modal-title-wrapper\" #title [id]=\"modalId\" cdkFocusInitial tabindex=\"-1\">\n <ng-content select=\".modal-title\"></ng-content>\n </div>\n <button\n type=\"button\"\n [attr.aria-label]=\"closeButtonAriaLabel || commonStrings.keys.close\"\n class=\"close\"\n *ngIf=\"closable\"\n (click)=\"close()\"\n >\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n </div>\n <div #body class=\"modal-body-wrapper\">\n <ng-content select=\".modal-body\"></ng-content>\n </div>\n <ng-content select=\".modal-footer\"></ng-content>\n </div>\n </div>\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n </div>\n</div>\n\n<div [@fade] *ngIf=\"backdrop\" class=\"modal-backdrop\" aria-hidden=\"true\" (click)=\"backdropClick()\"></div>\n", styles: [":host{display:none}:host.open{display:inline}\n"] }]
|
|
26724
27151
|
}], ctorParameters: function () { return [{ type: ScrollingService }, { type: ClrCommonStringsService }, { type: ModalStackService }, { type: ClrModalConfigurationService }]; }, propDecorators: { title: [{
|
|
26725
27152
|
type: ViewChild,
|
|
26726
27153
|
args: ['title']
|
|
@@ -26760,6 +27187,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
26760
27187
|
}], bypassScrollService: [{
|
|
26761
27188
|
type: Input,
|
|
26762
27189
|
args: ['clrModalOverrideScrollService']
|
|
27190
|
+
}], modalContentTemplate: [{
|
|
27191
|
+
type: ContentChild,
|
|
27192
|
+
args: ['clrInternalModalContentTemplate']
|
|
26763
27193
|
}], bodyElementRef: [{
|
|
26764
27194
|
type: ViewChild,
|
|
26765
27195
|
args: ['body']
|
|
@@ -29629,6 +30059,15 @@ class ClrWizard {
|
|
|
29629
30059
|
* Set the modal size of the wizard. Set using `[clrWizardSize]` input.
|
|
29630
30060
|
*/
|
|
29631
30061
|
this.size = 'xl';
|
|
30062
|
+
/**
|
|
30063
|
+
* Enable "in page" wizard. Set using `[clrWizardInPage]` input.
|
|
30064
|
+
*/
|
|
30065
|
+
this.inPage = false;
|
|
30066
|
+
/**
|
|
30067
|
+
* Make an "in page" wizard fill the `.content-area`. Set using `[clrWizardInPageFillContentArea]` input.
|
|
30068
|
+
* If you can't use this option, you will likely need to provide custom CSS to set the wizard's height and margins.
|
|
30069
|
+
*/
|
|
30070
|
+
this.inPageFillContentArea = false;
|
|
29632
30071
|
/**
|
|
29633
30072
|
* Tells the modal part of the wizard whether it should have a close "X"
|
|
29634
30073
|
* in the top right corner. Set using `[clrWizardClosable]` input.
|
|
@@ -29787,6 +30226,9 @@ class ClrWizard {
|
|
|
29787
30226
|
ngAfterContentInit() {
|
|
29788
30227
|
this.pageCollection.pages = this.pages;
|
|
29789
30228
|
this.headerActionService.wizardHeaderActions = this.headerActions;
|
|
30229
|
+
if (this.inPage) {
|
|
30230
|
+
this.open();
|
|
30231
|
+
}
|
|
29790
30232
|
this.initializeButtons();
|
|
29791
30233
|
}
|
|
29792
30234
|
ngDoCheck() {
|
|
@@ -29984,7 +30426,7 @@ class ClrWizard {
|
|
|
29984
30426
|
(_a = this.pageTitle) === null || _a === void 0 ? void 0 : _a.nativeElement.focus();
|
|
29985
30427
|
this.currentPageChanged.emit();
|
|
29986
30428
|
// scroll to top of page in case there is long page content
|
|
29987
|
-
(_b = this.
|
|
30429
|
+
(_b = this.bodyElementRef) === null || _b === void 0 ? void 0 : _b.nativeElement.scrollTo(0, 0);
|
|
29988
30430
|
});
|
|
29989
30431
|
}
|
|
29990
30432
|
updateNavOnPageChanges() {
|
|
@@ -30008,7 +30450,7 @@ class ClrWizard {
|
|
|
30008
30450
|
}
|
|
30009
30451
|
}
|
|
30010
30452
|
ClrWizard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrWizard, deps: [{ token: PLATFORM_ID }, { token: ClrCommonStringsService }, { token: WizardNavigationService }, { token: PageCollectionService }, { token: ButtonHubService }, { token: HeaderActionService }, { token: i0.ElementRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Component });
|
|
30011
|
-
ClrWizard.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrWizard, selector: "clr-wizard", inputs: { stepnavAriaLabel: ["clrWizardStepnavAriaLabel", "stepnavAriaLabel"], size: ["clrWizardSize", "size"], closable: ["clrWizardClosable", "closable"], _stopModalAnimations: ["clrWizardPreventModalAnimation", "_stopModalAnimations"], forceForward: ["clrWizardForceForwardNavigation", "forceForward"], clrWizardOpen: "clrWizardOpen", stopNext: ["clrWizardPreventDefaultNext", "stopNext"], stopCancel: ["clrWizardPreventDefaultCancel", "stopCancel"], stopNavigation: ["clrWizardPreventNavigation", "stopNavigation"], disableStepnav: ["clrWizardDisableStepnav", "disableStepnav"] }, outputs: { _openChanged: "clrWizardOpenChange", onCancel: "clrWizardOnCancel", wizardFinished: "clrWizardOnFinish", onReset: "clrWizardOnReset", currentPageChanged: "clrWizardCurrentPageChanged", onMoveNext: "clrWizardOnNext", onMovePrevious: "clrWizardOnPrevious" }, host: { properties: { "class.clr-wizard": "true", "class.wizard-md": "size == 'md'", "class.wizard-lg": "size == 'lg'", "class.wizard-xl": "size == 'xl'", "class.
|
|
30453
|
+
ClrWizard.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrWizard, selector: "clr-wizard", inputs: { stepnavAriaLabel: ["clrWizardStepnavAriaLabel", "stepnavAriaLabel"], size: ["clrWizardSize", "size"], inPage: ["clrWizardInPage", "inPage"], inPageFillContentArea: ["clrWizardInPageFillContentArea", "inPageFillContentArea"], closable: ["clrWizardClosable", "closable"], _stopModalAnimations: ["clrWizardPreventModalAnimation", "_stopModalAnimations"], forceForward: ["clrWizardForceForwardNavigation", "forceForward"], clrWizardOpen: "clrWizardOpen", stopNext: ["clrWizardPreventDefaultNext", "stopNext"], stopCancel: ["clrWizardPreventDefaultCancel", "stopCancel"], stopNavigation: ["clrWizardPreventNavigation", "stopNavigation"], disableStepnav: ["clrWizardDisableStepnav", "disableStepnav"] }, outputs: { _openChanged: "clrWizardOpenChange", onCancel: "clrWizardOnCancel", wizardFinished: "clrWizardOnFinish", onReset: "clrWizardOnReset", currentPageChanged: "clrWizardCurrentPageChanged", onMoveNext: "clrWizardOnNext", onMovePrevious: "clrWizardOnPrevious" }, host: { properties: { "class.clr-wizard": "true", "class.wizard-md": "size == 'md'", "class.wizard-lg": "size == 'lg'", "class.wizard-xl": "size == 'xl'", "class.wizard-in-page": "inPage", "class.wizard-in-page--fill-content-area": "inPage && inPageFillContentArea" } }, providers: [WizardNavigationService, PageCollectionService, ButtonHubService, HeaderActionService], queries: [{ propertyName: "wizardTitle", first: true, predicate: ClrWizardTitle, descendants: true }, { propertyName: "pages", predicate: ClrWizardPage, descendants: true }, { propertyName: "headerActions", predicate: ClrWizardHeaderAction }], viewQueries: [{ propertyName: "pageTitle", first: true, predicate: ["pageTitle"], descendants: true }, { propertyName: "bodyElementRef", first: true, predicate: ["body"], descendants: true }, { propertyName: "modal", first: true, predicate: ClrModal, descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<ng-container *ngIf=\"inPage; then wizardTemplate; else wizardModalTemplate\"></ng-container>\n\n<ng-template #wizardModalTemplate>\n <clr-modal\n [clrModalOpen]=\"_open\"\n [clrModalSize]=\"size\"\n [clrModalClosable]=\"closable\"\n [clrModalStaticBackdrop]=\"true\"\n [clrModalSkipAnimation]=\"stopModalAnimations\"\n [clrModalOverrideScrollService]=\"isInline\"\n [clrModalPreventClose]=\"true\"\n (clrModalAlternateClose)=\"modalCancel()\"\n [clrModalLabelledById]=\"wizardId\"\n >\n <ng-template #clrInternalModalContentTemplate>\n <ng-container [ngTemplateOutlet]=\"wizardTemplate\"></ng-container>\n </ng-template>\n </clr-modal>\n</ng-template>\n\n<!-- This template is tightly coupled to the modal styles. -->\n<ng-template #wizardTemplate>\n <div class=\"modal-content-wrapper\">\n <div class=\"modal-nav clr-wizard-stepnav-wrapper\" role=\"region\">\n <div class=\"clr-wizard-title\" [id]=\"wizardId\" role=\"heading\" [attr.aria-level]=\"wizardTitle.headingLevel || 1\">\n <ng-content select=\"clr-wizard-title\"></ng-content>\n </div>\n <clr-wizard-stepnav [label]=\"stepnavAriaLabel\"></clr-wizard-stepnav>\n </div>\n\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <div class=\"modal-title-wrapper\" #title cdkFocusInitial tabindex=\"-1\">\n <div\n class=\"modal-title\"\n role=\"heading\"\n [attr.aria-level]=\"navService.currentPage?.pageTitle.headingLevel || 2\"\n >\n <span tabindex=\"-1\" #pageTitle class=\"modal-title-text\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPageTitle\"></ng-template>\n </span>\n\n <div class=\"modal-header-actions-wrapper\" *ngIf=\"headerActionService.displayHeaderActionsWrapper\">\n <div *ngIf=\"headerActionService.showWizardHeaderActions\">\n <ng-content select=\"clr-wizard-header-action\"></ng-content>\n </div>\n <div *ngIf=\"headerActionService.currentPageHasHeaderActions\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.headerActions\"></ng-template>\n </div>\n </div>\n </div>\n </div>\n <button\n *ngIf=\"closable && !inPage\"\n type=\"button\"\n class=\"close\"\n [attr.aria-label]=\"commonStrings.keys.close\"\n (click)=\"modalCancel()\"\n >\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n </div>\n <div #body class=\"modal-body-wrapper\">\n <div class=\"modal-body\">\n <main clr-wizard-pages-wrapper class=\"clr-wizard-content\">\n <ng-content></ng-content>\n </main>\n </div>\n </div>\n <div class=\"modal-footer clr-wizard-footer\">\n <div class=\"clr-wizard-footer-buttons\">\n <div\n *ngIf=\"navService.currentPage && !navService.currentPage.hasButtons\"\n class=\"clr-wizard-footer-buttons-wrapper\"\n >\n <ng-content select=\"clr-wizard-button\"></ng-content>\n </div>\n <div\n *ngIf=\"navService.currentPage && navService.currentPage.hasButtons\"\n class=\"clr-wizard-footer-buttons-wrapper\"\n >\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.buttons\"></ng-template>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ClrModal, selector: "clr-modal", inputs: ["clrModalOpen", "clrModalClosable", "clrModalCloseButtonAriaLabel", "clrModalSize", "clrModalStaticBackdrop", "clrModalSkipAnimation", "clrModalPreventClose", "clrModalLabelledById", "clrModalOverrideScrollService"], outputs: ["clrModalOpenChange", "clrModalAlternateClose"] }, { kind: "directive", type: ClrModalBody, selector: ".modal-body" }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "component", type: ClrWizardStepnav, selector: "clr-wizard-stepnav", inputs: ["label"] }] });
|
|
30012
30454
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrWizard, decorators: [{
|
|
30013
30455
|
type: Component,
|
|
30014
30456
|
args: [{ selector: 'clr-wizard', providers: [WizardNavigationService, PageCollectionService, ButtonHubService, HeaderActionService], host: {
|
|
@@ -30016,8 +30458,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
30016
30458
|
'[class.wizard-md]': "size == 'md'",
|
|
30017
30459
|
'[class.wizard-lg]': "size == 'lg'",
|
|
30018
30460
|
'[class.wizard-xl]': "size == 'xl'",
|
|
30019
|
-
'[class.
|
|
30020
|
-
|
|
30461
|
+
'[class.wizard-in-page]': 'inPage',
|
|
30462
|
+
'[class.wizard-in-page--fill-content-area]': 'inPage && inPageFillContentArea',
|
|
30463
|
+
}, template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<ng-container *ngIf=\"inPage; then wizardTemplate; else wizardModalTemplate\"></ng-container>\n\n<ng-template #wizardModalTemplate>\n <clr-modal\n [clrModalOpen]=\"_open\"\n [clrModalSize]=\"size\"\n [clrModalClosable]=\"closable\"\n [clrModalStaticBackdrop]=\"true\"\n [clrModalSkipAnimation]=\"stopModalAnimations\"\n [clrModalOverrideScrollService]=\"isInline\"\n [clrModalPreventClose]=\"true\"\n (clrModalAlternateClose)=\"modalCancel()\"\n [clrModalLabelledById]=\"wizardId\"\n >\n <ng-template #clrInternalModalContentTemplate>\n <ng-container [ngTemplateOutlet]=\"wizardTemplate\"></ng-container>\n </ng-template>\n </clr-modal>\n</ng-template>\n\n<!-- This template is tightly coupled to the modal styles. -->\n<ng-template #wizardTemplate>\n <div class=\"modal-content-wrapper\">\n <div class=\"modal-nav clr-wizard-stepnav-wrapper\" role=\"region\">\n <div class=\"clr-wizard-title\" [id]=\"wizardId\" role=\"heading\" [attr.aria-level]=\"wizardTitle.headingLevel || 1\">\n <ng-content select=\"clr-wizard-title\"></ng-content>\n </div>\n <clr-wizard-stepnav [label]=\"stepnavAriaLabel\"></clr-wizard-stepnav>\n </div>\n\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <div class=\"modal-title-wrapper\" #title cdkFocusInitial tabindex=\"-1\">\n <div\n class=\"modal-title\"\n role=\"heading\"\n [attr.aria-level]=\"navService.currentPage?.pageTitle.headingLevel || 2\"\n >\n <span tabindex=\"-1\" #pageTitle class=\"modal-title-text\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPageTitle\"></ng-template>\n </span>\n\n <div class=\"modal-header-actions-wrapper\" *ngIf=\"headerActionService.displayHeaderActionsWrapper\">\n <div *ngIf=\"headerActionService.showWizardHeaderActions\">\n <ng-content select=\"clr-wizard-header-action\"></ng-content>\n </div>\n <div *ngIf=\"headerActionService.currentPageHasHeaderActions\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.headerActions\"></ng-template>\n </div>\n </div>\n </div>\n </div>\n <button\n *ngIf=\"closable && !inPage\"\n type=\"button\"\n class=\"close\"\n [attr.aria-label]=\"commonStrings.keys.close\"\n (click)=\"modalCancel()\"\n >\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n </div>\n <div #body class=\"modal-body-wrapper\">\n <div class=\"modal-body\">\n <main clr-wizard-pages-wrapper class=\"clr-wizard-content\">\n <ng-content></ng-content>\n </main>\n </div>\n </div>\n <div class=\"modal-footer clr-wizard-footer\">\n <div class=\"clr-wizard-footer-buttons\">\n <div\n *ngIf=\"navService.currentPage && !navService.currentPage.hasButtons\"\n class=\"clr-wizard-footer-buttons-wrapper\"\n >\n <ng-content select=\"clr-wizard-button\"></ng-content>\n </div>\n <div\n *ngIf=\"navService.currentPage && navService.currentPage.hasButtons\"\n class=\"clr-wizard-footer-buttons-wrapper\"\n >\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.buttons\"></ng-template>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n" }]
|
|
30021
30464
|
}], ctorParameters: function () {
|
|
30022
30465
|
return [{ type: undefined, decorators: [{
|
|
30023
30466
|
type: Inject,
|
|
@@ -30029,6 +30472,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
30029
30472
|
}], size: [{
|
|
30030
30473
|
type: Input,
|
|
30031
30474
|
args: ['clrWizardSize']
|
|
30475
|
+
}], inPage: [{
|
|
30476
|
+
type: Input,
|
|
30477
|
+
args: ['clrWizardInPage']
|
|
30478
|
+
}], inPageFillContentArea: [{
|
|
30479
|
+
type: Input,
|
|
30480
|
+
args: ['clrWizardInPageFillContentArea']
|
|
30032
30481
|
}], closable: [{
|
|
30033
30482
|
type: Input,
|
|
30034
30483
|
args: ['clrWizardClosable']
|
|
@@ -30068,6 +30517,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
30068
30517
|
}], wizardTitle: [{
|
|
30069
30518
|
type: ContentChild,
|
|
30070
30519
|
args: [ClrWizardTitle]
|
|
30520
|
+
}], bodyElementRef: [{
|
|
30521
|
+
type: ViewChild,
|
|
30522
|
+
args: ['body']
|
|
30071
30523
|
}], modal: [{
|
|
30072
30524
|
type: ViewChild,
|
|
30073
30525
|
args: [ClrModal]
|
|
@@ -30609,5 +31061,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
30609
31061
|
* Generated bundle index. Do not edit.
|
|
30610
31062
|
*/
|
|
30611
31063
|
|
|
30612
|
-
export { CHANGE_KEYS, CLR_ALERT_DIRECTIVES, CLR_BUTTON_GROUP_DIRECTIVES, CLR_DATAGRID_DIRECTIVES, CLR_DATEPICKER_DIRECTIVES, CLR_DROPDOWN_DIRECTIVES, CLR_FILE_MESSAGES_TEMPLATE_CONTEXT, CLR_ICON_DIRECTIVES, CLR_LAYOUT_DIRECTIVES, CLR_LOADING_BUTTON_DIRECTIVES, CLR_LOADING_DIRECTIVES, CLR_MENU_POSITIONS, CLR_MODAL_DIRECTIVES, CLR_NAVIGATION_DIRECTIVES, CLR_PROGRESS_BAR_DIRECTIVES, CLR_SIDEPANEL_DIRECTIVES, CLR_SIGNPOST_DIRECTIVES, CLR_SPINNER_DIRECTIVES, CLR_STACK_VIEW_DIRECTIVES, CLR_TABS_DIRECTIVES, CLR_TOOLTIP_DIRECTIVES, CLR_TREE_VIEW_DIRECTIVES, CLR_VERTICAL_NAV_DIRECTIVES, CLR_WIZARD_DIRECTIVES, CONDITIONAL_DIRECTIVES, CUSTOM_BUTTON_TYPES, CdsIconCustomTag, ClarityModule, ClrAbstractContainer, ClrAccordion, ClrAccordionContent, ClrAccordionDescription, ClrAccordionModule, ClrAccordionPanel, ClrAccordionTitle, ClrAlert, ClrAlertItem, ClrAlertModule, ClrAlertText, ClrAlerts, ClrAlertsPager, ClrAlignment, ClrAriaCurrentLink, ClrAxis, ClrBreadcrumbItem, ClrBreadcrumbs, ClrBreadcrumbsModule, ClrButton, ClrButtonGroup, ClrButtonGroupModule, ClrButtonModule, ClrCalendar, ClrCheckbox, ClrCheckboxContainer, ClrCheckboxModule, ClrCheckboxWrapper, ClrCombobox, ClrComboboxContainer, ClrComboboxModule, ClrCommonFormsModule, ClrCommonStringsService, ClrConditionalModule, ClrControl, ClrControlContainer, ClrControlError, ClrControlHelper, ClrControlSuccess, ClrDataModule, ClrDatagrid, ClrDatagridActionBar, ClrDatagridActionOverflow, ClrDatagridCell, ClrDatagridColumn, ClrDatagridColumnSeparator, ClrDatagridColumnToggle, ClrDatagridColumnToggleButton, ClrDatagridDetail, ClrDatagridDetailBody, ClrDatagridDetailHeader, ClrDatagridFilter, ClrDatagridFooter, ClrDatagridHideableColumn, ClrDatagridItems, ClrDatagridModule, ClrDatagridPageSize, ClrDatagridPagination, ClrDatagridPlaceholder, ClrDatagridRow, ClrDatagridRowDetail, ClrDatagridSortOrder, ClrDatalist, ClrDatalistContainer, ClrDatalistInput, ClrDatalistModule, ClrDateContainer, ClrDateInput, ClrDateInputBase, ClrDateInputValidator, ClrDatepickerActions, ClrDatepickerModule, ClrDatepickerViewManager, ClrDay, ClrDaypicker, ClrDestroyService, ClrDropdown, ClrDropdownItem, ClrDropdownMenu, ClrDropdownModule, ClrDropdownTrigger, ClrEmphasisModule, ClrEndDateInput, ClrEndDateInputValidator, ClrExpandableAnimation, ClrFileError, ClrFileInfo, ClrFileInput, ClrFileInputContainer, ClrFileInputModule, ClrFileInputValidator, ClrFileInputValueAccessor, ClrFileList, ClrFileMessagesTemplate, ClrFileSuccess, ClrFocusOnViewInit, ClrFocusOnViewInitModule, ClrForm, ClrFormLayout, ClrFormsModule, ClrHeader, ClrIconCustomTag, ClrIconModule, ClrIfActive, ClrIfDetail, ClrIfError, ClrIfExpanded, ClrIfOpen, ClrIfSuccess, ClrInput, ClrInputContainer, ClrInputModule, ClrLabel, ClrLayout, ClrLayoutModule, ClrLoading, ClrLoadingButton, ClrLoadingButtonModule, ClrLoadingModule, ClrLoadingState, ClrMainContainer, ClrMainContainerModule, ClrModal, ClrModalBody, ClrModalConfigurationService, ClrModalHostDirective, ClrModalModule, ClrMonthpicker, ClrNavLevel, ClrNavigationModule, ClrNumberInput, ClrNumberInputContainer, ClrNumberInputModule, ClrOption, ClrOptionItems, ClrOptionSelected, ClrOptions, ClrPassword, ClrPasswordContainer, ClrPasswordModule, ClrPopoverAnchor, ClrPopoverContent, ClrPopoverEventsService, ClrPopoverHostDirective, ClrPopoverModule, ClrPopoverPositionService, ClrPopoverToggleService, ClrProgressBar, ClrProgressBarModule, ClrRadio, ClrRadioContainer, ClrRadioModule, ClrRadioWrapper, ClrRange, ClrRangeContainer, ClrRangeModule, ClrRecursiveForOf, ClrSelect, ClrSelectContainer, ClrSelectModule, ClrSelectedState, ClrSide, ClrSidePanel, ClrSidePanelModule, ClrSignpost, ClrSignpostContent, ClrSignpostModule, ClrSignpostTitle, ClrSignpostTrigger, ClrSpinner, ClrSpinnerModule, ClrStackBlock, ClrStackContentInput, ClrStackHeader, ClrStackView, ClrStackViewCustomTags, ClrStackViewLabel, ClrStackViewModule, ClrStandaloneCdkTrapFocus, ClrStartDateInput, ClrStartDateInputValidator, ClrStepButton, ClrStepButtonType, ClrStepper, ClrStepperModule, ClrStepperPanel, ClrStopEscapePropagationDirective, ClrTab, ClrTabAction, ClrTabContent, ClrTabLink, ClrTabOverflowContent, ClrTabs, ClrTabsActions, ClrTabsModule, ClrTextarea, ClrTextareaContainer, ClrTextareaModule, ClrTimeline, ClrTimelineLayout, ClrTimelineModule, ClrTimelineStep, ClrTimelineStepDescription, ClrTimelineStepHeader, ClrTimelineStepState, ClrTimelineStepTitle, ClrTooltip, ClrTooltipContent, ClrTooltipModule, ClrTooltipTrigger, ClrTree, ClrTreeNode, ClrTreeNodeLink, ClrTreeViewModule, ClrVerticalNav, ClrVerticalNavGroup, ClrVerticalNavGroupChildren, ClrVerticalNavIcon, ClrVerticalNavLink, ClrVerticalNavModule, ClrWizard, ClrWizardButton, ClrWizardHeaderAction, ClrWizardModule, ClrWizardPage, ClrWizardPageButtons, ClrWizardPageHeaderActions, ClrWizardPageNavTitle, ClrWizardPageTitle, ClrWizardStepnav, ClrWizardStepnavItem, ClrWizardTitle, ClrYearpicker, DEFAULT_BUTTON_TYPES, DatagridNumericFilter, DatagridPropertyComparator, DatagridPropertyNumericFilter, DatagridPropertyStringFilter, DatagridStringFilter, EXPANDABLE_ANIMATION_DIRECTIVES, FOCUS_ON_VIEW_INIT, FOCUS_ON_VIEW_INIT_DIRECTIVES, IS_TOGGLE, IS_TOGGLE_PROVIDER, LoadingListener, MainContainerWillyWonka, NavDetectionOompaLoompa, TOGGLE_SERVICE, TOGGLE_SERVICE_PROVIDER, ToggleServiceFactory, WrappedFormControl, collapse, commonStringsDefault, fade, fadeSlide, isToggleFactory, slide, AccordionOompaLoompa as ÇlrAccordionOompaLoompa, AccordionWillyWonka as ÇlrAccordionWillyWonka, ActionableOompaLoompa as ÇlrActionableOompaLoompa, ActiveOompaLoompa as ÇlrActiveOompaLoompa, ClrPopoverCloseButton as ÇlrClrPopoverCloseButton, ClrPopoverModuleNext as ÇlrClrPopoverModuleNext, ClrPopoverOpenCloseButton as ÇlrClrPopoverOpenCloseButton, DatagridCellRenderer as ÇlrDatagridCellRenderer, DatagridDetailRegisterer as ÇlrDatagridDetailRegisterer, DatagridHeaderRenderer as ÇlrDatagridHeaderRenderer, DatagridMainRenderer as ÇlrDatagridMainRenderer, DatagridRowRenderer as ÇlrDatagridRowRenderer, ClrDatagridSelectionCellDirective as ÇlrDatagridSelectionCellDirective, ClrDatagridVirtualScrollDirective as ÇlrDatagridVirtualScrollDirective, DatagridWillyWonka as ÇlrDatagridWillyWonka, ExpandableOompaLoompa as ÇlrExpandableOompaLoompa, StepperOompaLoompa as ÇlrStepperOompaLoompa, StepperWillyWonka as ÇlrStepperWillyWonka, TabsWillyWonka as ÇlrTabsWillyWonka, WrappedCell as ÇlrWrappedCell, WrappedColumn as ÇlrWrappedColumn, WrappedRow as ÇlrWrappedRow };
|
|
31064
|
+
export { BaseExpandableAnimation, CHANGE_KEYS, CLR_ALERT_DIRECTIVES, CLR_BUTTON_GROUP_DIRECTIVES, CLR_DATAGRID_DIRECTIVES, CLR_DATEPICKER_DIRECTIVES, CLR_DROPDOWN_DIRECTIVES, CLR_FILE_MESSAGES_TEMPLATE_CONTEXT, CLR_ICON_DIRECTIVES, CLR_LAYOUT_DIRECTIVES, CLR_LOADING_BUTTON_DIRECTIVES, CLR_LOADING_DIRECTIVES, CLR_MENU_POSITIONS, CLR_MODAL_DIRECTIVES, CLR_NAVIGATION_DIRECTIVES, CLR_PROGRESS_BAR_DIRECTIVES, CLR_SIDEPANEL_DIRECTIVES, CLR_SIGNPOST_DIRECTIVES, CLR_SPINNER_DIRECTIVES, CLR_STACK_VIEW_DIRECTIVES, CLR_TABS_DIRECTIVES, CLR_TOOLTIP_DIRECTIVES, CLR_TREE_VIEW_DIRECTIVES, CLR_VERTICAL_NAV_DIRECTIVES, CLR_WIZARD_DIRECTIVES, CONDITIONAL_DIRECTIVES, CUSTOM_BUTTON_TYPES, CdsIconCustomTag, ClarityModule, ClrAbstractContainer, ClrAccordion, ClrAccordionContent, ClrAccordionDescription, ClrAccordionModule, ClrAccordionPanel, ClrAccordionTitle, ClrAlert, ClrAlertItem, ClrAlertModule, ClrAlertText, ClrAlerts, ClrAlertsPager, ClrAlignment, ClrAriaCurrentLink, ClrAxis, ClrBreadcrumbItem, ClrBreadcrumbs, ClrBreadcrumbsModule, ClrButton, ClrButtonGroup, ClrButtonGroupModule, ClrButtonModule, ClrCalendar, ClrCheckbox, ClrCheckboxContainer, ClrCheckboxModule, ClrCheckboxWrapper, ClrCombobox, ClrComboboxContainer, ClrComboboxModule, ClrCommonFormsModule, ClrCommonStringsService, ClrConditionalModule, ClrControl, ClrControlContainer, ClrControlError, ClrControlHelper, ClrControlSuccess, ClrDataModule, ClrDatagrid, ClrDatagridActionBar, ClrDatagridActionOverflow, ClrDatagridCell, ClrDatagridColumn, ClrDatagridColumnSeparator, ClrDatagridColumnToggle, ClrDatagridColumnToggleButton, ClrDatagridDetail, ClrDatagridDetailBody, ClrDatagridDetailHeader, ClrDatagridFilter, ClrDatagridFooter, ClrDatagridHideableColumn, ClrDatagridItems, ClrDatagridModule, ClrDatagridPageSize, ClrDatagridPagination, ClrDatagridPlaceholder, ClrDatagridRow, ClrDatagridRowDetail, ClrDatagridSortOrder, ClrDatalist, ClrDatalistContainer, ClrDatalistInput, ClrDatalistModule, ClrDateContainer, ClrDateInput, ClrDateInputBase, ClrDateInputValidator, ClrDatepickerActions, ClrDatepickerModule, ClrDatepickerViewManager, ClrDay, ClrDaypicker, ClrDestroyService, ClrDropdown, ClrDropdownItem, ClrDropdownMenu, ClrDropdownModule, ClrDropdownTrigger, ClrEmphasisModule, ClrEndDateInput, ClrEndDateInputValidator, ClrExpandableAnimation, ClrFileError, ClrFileInfo, ClrFileInput, ClrFileInputContainer, ClrFileInputModule, ClrFileInputValidator, ClrFileInputValueAccessor, ClrFileList, ClrFileMessagesTemplate, ClrFileSuccess, ClrFocusOnViewInit, ClrFocusOnViewInitModule, ClrForm, ClrFormLayout, ClrFormsModule, ClrHeader, ClrIconCustomTag, ClrIconModule, ClrIfActive, ClrIfDetail, ClrIfError, ClrIfExpanded, ClrIfOpen, ClrIfSuccess, ClrInput, ClrInputContainer, ClrInputModule, ClrLabel, ClrLayout, ClrLayoutModule, ClrLoading, ClrLoadingButton, ClrLoadingButtonModule, ClrLoadingModule, ClrLoadingState, ClrMainContainer, ClrMainContainerModule, ClrModal, ClrModalBody, ClrModalConfigurationService, ClrModalHostDirective, ClrModalModule, ClrMonthpicker, ClrNavLevel, ClrNavigationModule, ClrNumberInput, ClrNumberInputContainer, ClrNumberInputModule, ClrOption, ClrOptionItems, ClrOptionSelected, ClrOptions, ClrPassword, ClrPasswordContainer, ClrPasswordModule, ClrPopoverAnchor, ClrPopoverContent, ClrPopoverEventsService, ClrPopoverHostDirective, ClrPopoverModule, ClrPopoverPositionService, ClrPopoverToggleService, ClrProgressBar, ClrProgressBarModule, ClrRadio, ClrRadioContainer, ClrRadioModule, ClrRadioWrapper, ClrRange, ClrRangeContainer, ClrRangeModule, ClrRecursiveForOf, ClrSelect, ClrSelectContainer, ClrSelectModule, ClrSelectedState, ClrSide, ClrSidePanel, ClrSidePanelModule, ClrSignpost, ClrSignpostContent, ClrSignpostModule, ClrSignpostTitle, ClrSignpostTrigger, ClrSpinner, ClrSpinnerModule, ClrStackBlock, ClrStackContentInput, ClrStackHeader, ClrStackView, ClrStackViewCustomTags, ClrStackViewLabel, ClrStackViewModule, ClrStandaloneCdkTrapFocus, ClrStartDateInput, ClrStartDateInputValidator, ClrStepButton, ClrStepButtonType, ClrStepper, ClrStepperModule, ClrStepperPanel, ClrStopEscapePropagationDirective, ClrTab, ClrTabAction, ClrTabContent, ClrTabLink, ClrTabOverflowContent, ClrTabs, ClrTabsActions, ClrTabsModule, ClrTextarea, ClrTextareaContainer, ClrTextareaModule, ClrTimeline, ClrTimelineLayout, ClrTimelineModule, ClrTimelineStep, ClrTimelineStepDescription, ClrTimelineStepHeader, ClrTimelineStepState, ClrTimelineStepTitle, ClrTooltip, ClrTooltipContent, ClrTooltipModule, ClrTooltipTrigger, ClrTree, ClrTreeNode, ClrTreeNodeLink, ClrTreeViewModule, ClrVerticalNav, ClrVerticalNavGroup, ClrVerticalNavGroupChildren, ClrVerticalNavIcon, ClrVerticalNavLink, ClrVerticalNavModule, ClrWizard, ClrWizardButton, ClrWizardHeaderAction, ClrWizardModule, ClrWizardPage, ClrWizardPageButtons, ClrWizardPageHeaderActions, ClrWizardPageNavTitle, ClrWizardPageTitle, ClrWizardStepnav, ClrWizardStepnavItem, ClrWizardTitle, ClrYearpicker, DEFAULT_BUTTON_TYPES, DatagridNumericFilter, DatagridPropertyComparator, DatagridPropertyNumericFilter, DatagridPropertyStringFilter, DatagridStringFilter, EXPANDABLE_ANIMATION_DIRECTIVES, FOCUS_ON_VIEW_INIT, FOCUS_ON_VIEW_INIT_DIRECTIVES, IS_TOGGLE, IS_TOGGLE_PROVIDER, LoadingListener, MainContainerWillyWonka, NavDetectionOompaLoompa, TOGGLE_SERVICE, TOGGLE_SERVICE_PROVIDER, ToggleServiceFactory, WrappedFormControl, collapse, commonStringsDefault, fade, fadeSlide, isToggleFactory, slide, AccordionOompaLoompa as ÇlrAccordionOompaLoompa, AccordionWillyWonka as ÇlrAccordionWillyWonka, ActionableOompaLoompa as ÇlrActionableOompaLoompa, ActiveOompaLoompa as ÇlrActiveOompaLoompa, ClrPopoverCloseButton as ÇlrClrPopoverCloseButton, ClrPopoverModuleNext as ÇlrClrPopoverModuleNext, ClrPopoverOpenCloseButton as ÇlrClrPopoverOpenCloseButton, DatagridCellRenderer as ÇlrDatagridCellRenderer, DatagridDetailRegisterer as ÇlrDatagridDetailRegisterer, DatagridHeaderRenderer as ÇlrDatagridHeaderRenderer, DatagridMainRenderer as ÇlrDatagridMainRenderer, DatagridRowRenderer as ÇlrDatagridRowRenderer, ClrDatagridSelectionCellDirective as ÇlrDatagridSelectionCellDirective, ClrDatagridVirtualScrollDirective as ÇlrDatagridVirtualScrollDirective, DatagridWillyWonka as ÇlrDatagridWillyWonka, ExpandableOompaLoompa as ÇlrExpandableOompaLoompa, StepperOompaLoompa as ÇlrStepperOompaLoompa, StepperWillyWonka as ÇlrStepperWillyWonka, TabsWillyWonka as ÇlrTabsWillyWonka, WrappedCell as ÇlrWrappedCell, WrappedColumn as ÇlrWrappedColumn, WrappedRow as ÇlrWrappedRow };
|
|
30613
31065
|
//# sourceMappingURL=clr-angular.mjs.map
|