@clr/angular 17.10.0 → 17.11.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 +96 -40
- package/data/datagrid/datagrid-column.d.ts +6 -1
- package/data/datagrid/datagrid-filter.d.ts +2 -9
- package/data/datagrid/datagrid-row.d.ts +1 -0
- package/data/datagrid/datagrid-virtual-scroll.directive.d.ts +2 -0
- package/data/datagrid/datagrid.d.ts +4 -1
- package/data/datagrid/utils/datagrid-filter-registrar.d.ts +1 -1
- package/data/datagrid/utils/key-navigation-grid.controller.d.ts +7 -8
- package/data/datagrid/utils/key-navigation-strategies/expanded-columns-row.d.ts +0 -2
- package/data/datagrid/utils/key-navigation-strategies/expanded-row.d.ts +0 -2
- package/data/datagrid/utils/key-navigation-utils.d.ts +2 -0
- package/esm2020/accordion/stepper/stepper-panel.mjs +3 -3
- package/esm2020/button/button-group/button.mjs +20 -4
- package/esm2020/data/datagrid/datagrid-column.mjs +33 -17
- package/esm2020/data/datagrid/datagrid-detail-header.mjs +3 -3
- package/esm2020/data/datagrid/datagrid-filter.mjs +2 -21
- package/esm2020/data/datagrid/datagrid-pagination.mjs +35 -31
- package/esm2020/data/datagrid/datagrid-row.mjs +6 -7
- package/esm2020/data/datagrid/datagrid-virtual-scroll.directive.mjs +30 -32
- package/esm2020/data/datagrid/datagrid.mjs +43 -11
- package/esm2020/data/datagrid/utils/datagrid-filter-registrar.mjs +1 -1
- package/esm2020/data/datagrid/utils/key-navigation-grid.controller.mjs +32 -34
- package/esm2020/data/datagrid/utils/key-navigation-strategies/expanded-columns-row.mjs +1 -4
- package/esm2020/data/datagrid/utils/key-navigation-strategies/expanded-row.mjs +1 -4
- package/esm2020/data/datagrid/utils/key-navigation-utils.mjs +15 -2
- package/esm2020/data/stack-view/stack-block.mjs +3 -3
- package/esm2020/emphasis/alert/alert.mjs +3 -3
- package/esm2020/forms/combobox/combobox.mjs +3 -3
- package/esm2020/forms/combobox/combobox.module.mjs +20 -3
- package/esm2020/forms/combobox/index.mjs +2 -1
- package/esm2020/forms/combobox/option-group.mjs +42 -0
- package/esm2020/forms/combobox/option-items.directive.mjs +5 -1
- package/esm2020/forms/combobox/options.mjs +3 -3
- package/esm2020/forms/common/abstract-control.mjs +1 -1
- package/esm2020/forms/common/if-control-state/abstract-if-state.mjs +1 -1
- package/esm2020/forms/datepicker/datepicker-view-manager.mjs +3 -3
- package/esm2020/forms/file-input/file-input-container.mjs +2 -2
- package/esm2020/forms/file-input/file-input.mjs +11 -4
- package/esm2020/forms/number-input/number-input-container.mjs +6 -3
- package/esm2020/forms/number-input/number-input.mjs +10 -3
- package/esm2020/layout/breadcrumbs/breadcrumbs.mjs +2 -2
- package/esm2020/modal/index.mjs +2 -2
- package/esm2020/modal/modal-host.component.mjs +29 -0
- package/esm2020/modal/modal.mjs +7 -3
- package/esm2020/modal/modal.module.mjs +4 -4
- package/esm2020/modal/side-panel.mjs +102 -47
- package/esm2020/popover/common/abstract-popover.mjs +8 -2
- package/esm2020/popover/dropdown/dropdown-item.mjs +10 -4
- package/esm2020/popover/dropdown/dropdown-trigger.mjs +12 -4
- package/esm2020/popover/dropdown/utils/content-wrapping.mjs +22 -0
- package/esm2020/utils/animations/expandable-animation/base-expandable-animation.mjs +9 -1
- package/esm2020/utils/animations/expandable-animation/expandable-animation.mjs +5 -6
- package/esm2020/utils/chocolate/oompa-loompa.mjs +1 -1
- package/esm2020/utils/i18n/common-strings.default.mjs +2 -1
- package/esm2020/utils/i18n/common-strings.interface.mjs +1 -1
- package/esm2020/wizard/wizard-stepnav-item.mjs +60 -24
- package/esm2020/wizard/wizard.mjs +3 -3
- package/fesm2015/clr-angular.mjs +594 -315
- package/fesm2015/clr-angular.mjs.map +1 -1
- package/fesm2020/clr-angular.mjs +589 -313
- package/fesm2020/clr-angular.mjs.map +1 -1
- package/forms/combobox/combobox.module.d.ts +12 -11
- package/forms/combobox/index.d.ts +1 -0
- package/forms/combobox/option-group.d.ts +9 -0
- package/forms/combobox/option-items.directive.d.ts +1 -0
- package/forms/common/abstract-control.d.ts +1 -1
- package/forms/common/if-control-state/abstract-if-state.d.ts +1 -1
- package/forms/file-input/file-input.d.ts +2 -0
- package/forms/number-input/number-input-container.d.ts +1 -0
- package/forms/number-input/number-input.d.ts +2 -0
- package/modal/index.d.ts +1 -1
- package/modal/modal-host.component.d.ts +5 -0
- package/modal/modal.module.d.ts +2 -2
- package/modal/side-panel.d.ts +18 -10
- package/package.json +2 -2
- package/popover/common/abstract-popover.d.ts +1 -1
- package/popover/dropdown/dropdown-item.d.ts +5 -1
- package/popover/dropdown/dropdown-trigger.d.ts +5 -2
- package/popover/dropdown/utils/content-wrapping.d.ts +2 -0
- package/utils/animations/expandable-animation/base-expandable-animation.d.ts +3 -0
- package/utils/animations/expandable-animation/expandable-animation.d.ts +0 -3
- package/utils/chocolate/oompa-loompa.d.ts +1 -1
- package/utils/i18n/common-strings.interface.d.ts +4 -0
- package/wizard/wizard-stepnav-item.d.ts +16 -2
- package/esm2020/modal/modal-host.directive.mjs +0 -20
- package/modal/modal-host.directive.d.ts +0 -5
package/fesm2015/clr-angular.mjs
CHANGED
|
@@ -378,6 +378,7 @@ const commonStringsDefault = {
|
|
|
378
378
|
datagridExpandableRowsHelperText: `Screen reader table commands may not work for viewing expanded content, please use your screen reader's browse mode to read the content exposed by this button`,
|
|
379
379
|
// Wizard
|
|
380
380
|
wizardStep: 'Step',
|
|
381
|
+
wizardStepCurrent: 'Current',
|
|
381
382
|
wizardStepSuccess: 'Completed',
|
|
382
383
|
wizardStepError: 'Error',
|
|
383
384
|
wizardStepnavAriaLabel: 'Wizard steps',
|
|
@@ -1258,10 +1259,10 @@ class ClrStepperPanel extends ClrAccordionPanel {
|
|
|
1258
1259
|
}
|
|
1259
1260
|
}
|
|
1260
1261
|
ClrStepperPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrStepperPanel, deps: [{ token: PLATFORM_ID }, { token: ClrCommonStringsService }, { token: i1.FormGroupName, optional: true }, { token: i1.NgModelGroup, optional: true }, { token: StepperService }, { token: IfExpandService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
1261
|
-
ClrStepperPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrStepperPanel, selector: "clr-stepper-panel", host: { properties: { "class.clr-stepper-panel": "true" } }, providers: [IfExpandService], viewQueries: [{ propertyName: "headerButton", first: true, predicate: ["headerButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"panel | async; let panel\">\n <div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-accordion-header clr-stepper-header\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [attr.aria-disabled]=\"panel.disabled\"\n [attr.aria-controls]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-expanded]=\"panel.open\"\n [class.clr-accordion-header-has-description]=\"(accordionDescription.changes | async)?.length || accordionDescription.length\"\n #headerButton\n >\n <span class=\"clr-step-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle clr-step-angle\"></cds-icon>\n <cds-icon\n
|
|
1262
|
+
ClrStepperPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrStepperPanel, selector: "clr-stepper-panel", host: { properties: { "class.clr-stepper-panel": "true" } }, providers: [IfExpandService], viewQueries: [{ propertyName: "headerButton", first: true, predicate: ["headerButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"panel | async; let panel\">\n <div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-accordion-header clr-stepper-header\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [attr.aria-disabled]=\"panel.disabled\"\n [attr.aria-controls]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-expanded]=\"panel.open\"\n [class.clr-accordion-header-has-description]=\"(accordionDescription.changes | async)?.length || accordionDescription.length\"\n #headerButton\n >\n <span class=\"clr-step-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle clr-step-angle\"></cds-icon>\n <span class=\"clr-step-status-icon\">\n <cds-icon\n status=\"danger\"\n *ngIf=\"panel.status === AccordionStatus.Error\"\n shape=\"exclamation-circle\"\n class=\"clr-step-error-icon\"\n ></cds-icon>\n <cds-icon\n status=\"success\"\n *ngIf=\"panel.status === AccordionStatus.Complete\"\n shape=\"check-circle\"\n class=\"clr-step-complete-icon\"\n ></cds-icon>\n </span>\n </span>\n <span class=\"clr-step-title-wrapper\">\n <span class=\"clr-step-number\">{{panelNumber}}.</span>\n <ng-content select=\"clr-step-title\"></ng-content>\n </span>\n <ng-content select=\"clr-step-description\"></ng-content>\n </button>\n <div class=\"clr-sr-only\" role=\"status\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\"> {{ stepErrorText(panelNumber)}} </ng-container>\n <ng-container *ngIf=\"panel.status === AccordionStatus.Complete\">\n {{ stepCompleteText(panelNumber)}}\n </ng-container>\n </div>\n </div>\n <div\n @skipInitialRender\n role=\"region\"\n class=\"clr-accordion-content-region\"\n [id]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-hidden]=\"!panel.open\"\n [attr.aria-labelledby]=\"getAccordionHeaderId(panel.templateId)\"\n >\n <div\n *ngIf=\"panel.open\"\n @toggle\n (@toggle.done)=\"collapsePanelOnAnimationDone(panel)\"\n class=\"clr-accordion-content\"\n >\n <div class=\"clr-accordion-inner-content\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</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: CdsIconCustomTag, selector: "cds-icon" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], animations: stepAnimation, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1262
1263
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrStepperPanel, decorators: [{
|
|
1263
1264
|
type: Component,
|
|
1264
|
-
args: [{ selector: 'clr-stepper-panel', host: { '[class.clr-stepper-panel]': 'true' }, changeDetection: ChangeDetectionStrategy.OnPush, animations: stepAnimation, providers: [IfExpandService], template: "<ng-container *ngIf=\"panel | async; let panel\">\n <div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-accordion-header clr-stepper-header\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [attr.aria-disabled]=\"panel.disabled\"\n [attr.aria-controls]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-expanded]=\"panel.open\"\n [class.clr-accordion-header-has-description]=\"(accordionDescription.changes | async)?.length || accordionDescription.length\"\n #headerButton\n >\n <span class=\"clr-step-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle clr-step-angle\"></cds-icon>\n <cds-icon\n
|
|
1265
|
+
args: [{ selector: 'clr-stepper-panel', host: { '[class.clr-stepper-panel]': 'true' }, changeDetection: ChangeDetectionStrategy.OnPush, animations: stepAnimation, providers: [IfExpandService], template: "<ng-container *ngIf=\"panel | async; let panel\">\n <div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-accordion-header clr-stepper-header\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [attr.aria-disabled]=\"panel.disabled\"\n [attr.aria-controls]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-expanded]=\"panel.open\"\n [class.clr-accordion-header-has-description]=\"(accordionDescription.changes | async)?.length || accordionDescription.length\"\n #headerButton\n >\n <span class=\"clr-step-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle clr-step-angle\"></cds-icon>\n <span class=\"clr-step-status-icon\">\n <cds-icon\n status=\"danger\"\n *ngIf=\"panel.status === AccordionStatus.Error\"\n shape=\"exclamation-circle\"\n class=\"clr-step-error-icon\"\n ></cds-icon>\n <cds-icon\n status=\"success\"\n *ngIf=\"panel.status === AccordionStatus.Complete\"\n shape=\"check-circle\"\n class=\"clr-step-complete-icon\"\n ></cds-icon>\n </span>\n </span>\n <span class=\"clr-step-title-wrapper\">\n <span class=\"clr-step-number\">{{panelNumber}}.</span>\n <ng-content select=\"clr-step-title\"></ng-content>\n </span>\n <ng-content select=\"clr-step-description\"></ng-content>\n </button>\n <div class=\"clr-sr-only\" role=\"status\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\"> {{ stepErrorText(panelNumber)}} </ng-container>\n <ng-container *ngIf=\"panel.status === AccordionStatus.Complete\">\n {{ stepCompleteText(panelNumber)}}\n </ng-container>\n </div>\n </div>\n <div\n @skipInitialRender\n role=\"region\"\n class=\"clr-accordion-content-region\"\n [id]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-hidden]=\"!panel.open\"\n [attr.aria-labelledby]=\"getAccordionHeaderId(panel.templateId)\"\n >\n <div\n *ngIf=\"panel.open\"\n @toggle\n (@toggle.done)=\"collapsePanelOnAnimationDone(panel)\"\n class=\"clr-accordion-content\"\n >\n <div class=\"clr-accordion-inner-content\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n" }]
|
|
1265
1266
|
}], ctorParameters: function () {
|
|
1266
1267
|
return [{ type: undefined, decorators: [{
|
|
1267
1268
|
type: Inject,
|
|
@@ -2636,10 +2637,18 @@ ClrButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15
|
|
|
2636
2637
|
[attr.id]="id"
|
|
2637
2638
|
>
|
|
2638
2639
|
<span class="spinner spinner-inline" *ngIf="loading"></span>
|
|
2639
|
-
<ng-
|
|
2640
|
+
<ng-container *ngIf="inMenu; then inMenuTemplate; else defaultTemplate"></ng-container>
|
|
2640
2641
|
</button>
|
|
2641
2642
|
</ng-template>
|
|
2642
|
-
|
|
2643
|
+
<ng-template #defaultTemplate>
|
|
2644
|
+
<ng-content></ng-content>
|
|
2645
|
+
</ng-template>
|
|
2646
|
+
<ng-template #inMenuTemplate>
|
|
2647
|
+
<span class="dropdown-item-content">
|
|
2648
|
+
<ng-container [ngTemplateOutlet]="defaultTemplate"></ng-container>
|
|
2649
|
+
</span>
|
|
2650
|
+
</ng-template>
|
|
2651
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
2643
2652
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrButton, decorators: [{
|
|
2644
2653
|
type: Component,
|
|
2645
2654
|
args: [{
|
|
@@ -2656,9 +2665,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
2656
2665
|
[attr.id]="id"
|
|
2657
2666
|
>
|
|
2658
2667
|
<span class="spinner spinner-inline" *ngIf="loading"></span>
|
|
2659
|
-
<ng-
|
|
2668
|
+
<ng-container *ngIf="inMenu; then inMenuTemplate; else defaultTemplate"></ng-container>
|
|
2660
2669
|
</button>
|
|
2661
2670
|
</ng-template>
|
|
2671
|
+
<ng-template #defaultTemplate>
|
|
2672
|
+
<ng-content></ng-content>
|
|
2673
|
+
</ng-template>
|
|
2674
|
+
<ng-template #inMenuTemplate>
|
|
2675
|
+
<span class="dropdown-item-content">
|
|
2676
|
+
<ng-container [ngTemplateOutlet]="defaultTemplate"></ng-container>
|
|
2677
|
+
</span>
|
|
2678
|
+
</ng-template>
|
|
2662
2679
|
`,
|
|
2663
2680
|
providers: [{ provide: LoadingListener, useExisting: ClrButton }],
|
|
2664
2681
|
}]
|
|
@@ -3154,6 +3171,11 @@ class BaseExpandableAnimation {
|
|
|
3154
3171
|
});
|
|
3155
3172
|
}
|
|
3156
3173
|
}
|
|
3174
|
+
BaseExpandableAnimation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: BaseExpandableAnimation, deps: [{ token: i0.ElementRef }, { token: DomAdapter }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
3175
|
+
BaseExpandableAnimation.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: BaseExpandableAnimation, ngImport: i0 });
|
|
3176
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: BaseExpandableAnimation, decorators: [{
|
|
3177
|
+
type: Directive
|
|
3178
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: DomAdapter }, { type: i0.Renderer2 }]; } });
|
|
3157
3179
|
|
|
3158
3180
|
/*
|
|
3159
3181
|
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
@@ -3162,8 +3184,8 @@ class BaseExpandableAnimation {
|
|
|
3162
3184
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
3163
3185
|
*/
|
|
3164
3186
|
class ClrExpandableAnimation extends BaseExpandableAnimation {
|
|
3165
|
-
constructor(
|
|
3166
|
-
super(
|
|
3187
|
+
constructor() {
|
|
3188
|
+
super(...arguments);
|
|
3167
3189
|
this.clrExpandTrigger = false;
|
|
3168
3190
|
}
|
|
3169
3191
|
get expandAnimation() {
|
|
@@ -3180,12 +3202,12 @@ class ClrExpandableAnimation extends BaseExpandableAnimation {
|
|
|
3180
3202
|
}
|
|
3181
3203
|
}
|
|
3182
3204
|
}
|
|
3183
|
-
ClrExpandableAnimation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrExpandableAnimation, deps:
|
|
3205
|
+
ClrExpandableAnimation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrExpandableAnimation, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
3184
3206
|
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)])])] });
|
|
3185
3207
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrExpandableAnimation, decorators: [{
|
|
3186
3208
|
type: Component,
|
|
3187
3209
|
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"] }]
|
|
3188
|
-
}],
|
|
3210
|
+
}], propDecorators: { clrExpandTrigger: [{
|
|
3189
3211
|
type: Input
|
|
3190
3212
|
}], expandAnimation: [{
|
|
3191
3213
|
type: HostBinding,
|
|
@@ -5307,7 +5329,13 @@ class AbstractPopover {
|
|
|
5307
5329
|
this.documentESCListener = null;
|
|
5308
5330
|
this.closeOnOutsideClickCallback = event => {
|
|
5309
5331
|
// The anchor element containing the click event origin means, the click wasn't triggered outside.
|
|
5310
|
-
if (
|
|
5332
|
+
if (event.target.shadowRoot) {
|
|
5333
|
+
const containsNode = event.composedPath().some((element) => element === this.anchorElem);
|
|
5334
|
+
if (containsNode) {
|
|
5335
|
+
return;
|
|
5336
|
+
}
|
|
5337
|
+
}
|
|
5338
|
+
else if (this.anchorElem.contains(event.target)) {
|
|
5311
5339
|
return;
|
|
5312
5340
|
}
|
|
5313
5341
|
this.toggleService.open = false;
|
|
@@ -5521,6 +5549,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
5521
5549
|
args: ['clrPosition']
|
|
5522
5550
|
}] } });
|
|
5523
5551
|
|
|
5552
|
+
/*
|
|
5553
|
+
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
5554
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
5555
|
+
* This software is released under MIT license.
|
|
5556
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
5557
|
+
*/
|
|
5558
|
+
function wrapHostContentInsideSpan(hostElement, renderer, wrapperClass) {
|
|
5559
|
+
if (!hostElement || !renderer) {
|
|
5560
|
+
return;
|
|
5561
|
+
}
|
|
5562
|
+
const wrapper = renderer.createElement('span');
|
|
5563
|
+
if (wrapperClass) {
|
|
5564
|
+
renderer.addClass(wrapper, wrapperClass);
|
|
5565
|
+
}
|
|
5566
|
+
// Move all existing children into the wrapper
|
|
5567
|
+
// We must loop while there are child nodes and re-append them to wrapper.
|
|
5568
|
+
while (hostElement.firstChild) {
|
|
5569
|
+
renderer.appendChild(wrapper, hostElement.firstChild);
|
|
5570
|
+
}
|
|
5571
|
+
renderer.appendChild(hostElement, wrapper);
|
|
5572
|
+
}
|
|
5573
|
+
|
|
5524
5574
|
/*
|
|
5525
5575
|
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
5526
5576
|
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
@@ -5528,8 +5578,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
5528
5578
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
5529
5579
|
*/
|
|
5530
5580
|
class ClrDropdownTrigger {
|
|
5531
|
-
constructor(dropdown, toggleService, el, focusHandler) {
|
|
5581
|
+
constructor(dropdown, toggleService, el, focusHandler, renderer) {
|
|
5532
5582
|
this.toggleService = toggleService;
|
|
5583
|
+
this.el = el;
|
|
5584
|
+
this.renderer = renderer;
|
|
5533
5585
|
this.isRootLevelToggle = true;
|
|
5534
5586
|
// if the containing dropdown has a parent, then this is not the root level one
|
|
5535
5587
|
if (dropdown.parent) {
|
|
@@ -5543,8 +5595,13 @@ class ClrDropdownTrigger {
|
|
|
5543
5595
|
onDropdownTriggerClick(event) {
|
|
5544
5596
|
this.toggleService.toggleWithEvent(event);
|
|
5545
5597
|
}
|
|
5598
|
+
ngAfterViewInit() {
|
|
5599
|
+
if (!this.isRootLevelToggle) {
|
|
5600
|
+
wrapHostContentInsideSpan(this.el.nativeElement, this.renderer, 'dropdown-item-content');
|
|
5601
|
+
}
|
|
5602
|
+
}
|
|
5546
5603
|
}
|
|
5547
|
-
ClrDropdownTrigger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDropdownTrigger, deps: [{ token: ClrDropdown }, { token: ClrPopoverToggleService }, { token: i0.ElementRef }, { token: DropdownFocusHandler }], target: i0.ɵɵFactoryTarget.Directive });
|
|
5604
|
+
ClrDropdownTrigger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDropdownTrigger, deps: [{ token: ClrDropdown }, { token: ClrPopoverToggleService }, { token: i0.ElementRef }, { token: DropdownFocusHandler }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
5548
5605
|
ClrDropdownTrigger.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrDropdownTrigger, selector: "[clrDropdownTrigger],[clrDropdownToggle]", host: { listeners: { "click": "onDropdownTriggerClick($event)" }, properties: { "class.dropdown-toggle": "isRootLevelToggle", "class.dropdown-item": "!isRootLevelToggle", "class.expandable": "!isRootLevelToggle", "class.active": "active", "attr.aria-haspopup": "\"menu\"", "attr.aria-expanded": "active" } }, ngImport: i0 });
|
|
5549
5606
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDropdownTrigger, decorators: [{
|
|
5550
5607
|
type: Directive,
|
|
@@ -5560,7 +5617,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
5560
5617
|
'[attr.aria-expanded]': 'active',
|
|
5561
5618
|
},
|
|
5562
5619
|
}]
|
|
5563
|
-
}], ctorParameters: function () { return [{ type: ClrDropdown }, { type: ClrPopoverToggleService }, { type: i0.ElementRef }, { type: DropdownFocusHandler }]; }, propDecorators: { onDropdownTriggerClick: [{
|
|
5620
|
+
}], ctorParameters: function () { return [{ type: ClrDropdown }, { type: ClrPopoverToggleService }, { type: i0.ElementRef }, { type: DropdownFocusHandler }, { type: i0.Renderer2 }]; }, propDecorators: { onDropdownTriggerClick: [{
|
|
5564
5621
|
type: HostListener,
|
|
5565
5622
|
args: ['click', ['$event']]
|
|
5566
5623
|
}] } });
|
|
@@ -5624,10 +5681,12 @@ const BASIC_FOCUSABLE_ITEM_PROVIDER = [
|
|
|
5624
5681
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
5625
5682
|
*/
|
|
5626
5683
|
class ClrDropdownItem {
|
|
5627
|
-
constructor(dropdown, _dropdownService, focusableItem) {
|
|
5684
|
+
constructor(dropdown, _dropdownService, focusableItem, el, renderer) {
|
|
5628
5685
|
this.dropdown = dropdown;
|
|
5629
5686
|
this._dropdownService = _dropdownService;
|
|
5630
5687
|
this.focusableItem = focusableItem;
|
|
5688
|
+
this.el = el;
|
|
5689
|
+
this.renderer = renderer;
|
|
5631
5690
|
}
|
|
5632
5691
|
get disabled() {
|
|
5633
5692
|
return this.focusableItem.disabled;
|
|
@@ -5645,6 +5704,9 @@ class ClrDropdownItem {
|
|
|
5645
5704
|
set dropdownItemId(value) {
|
|
5646
5705
|
this.focusableItem.id = value;
|
|
5647
5706
|
}
|
|
5707
|
+
ngAfterViewInit() {
|
|
5708
|
+
wrapHostContentInsideSpan(this.el.nativeElement, this.renderer, 'dropdown-item-content');
|
|
5709
|
+
}
|
|
5648
5710
|
onDropdownItemClick() {
|
|
5649
5711
|
// Move focus back to the root dropdown trigger.
|
|
5650
5712
|
// This is done BEFORE the dropdown is closed so that focus gets moved properly if a modal is opened.
|
|
@@ -5682,7 +5744,7 @@ class ClrDropdownItem {
|
|
|
5682
5744
|
return rootDropdown;
|
|
5683
5745
|
}
|
|
5684
5746
|
}
|
|
5685
|
-
ClrDropdownItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDropdownItem, deps: [{ token: ClrDropdown }, { token: RootDropdownService }, { token: FocusableItem }], target: i0.ɵɵFactoryTarget.Directive });
|
|
5747
|
+
ClrDropdownItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDropdownItem, deps: [{ token: ClrDropdown }, { token: RootDropdownService }, { token: FocusableItem }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
5686
5748
|
ClrDropdownItem.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrDropdownItem, selector: "[clrDropdownItem]", inputs: { disabled: ["clrDisabled", "disabled"], dropdownItemId: ["id", "dropdownItemId"] }, host: { listeners: { "click": "onDropdownItemClick()", "keydown.space": "onSpaceKeydown($event)", "keydown.enter": "onEnterKeydown($event)" }, properties: { "class.disabled": "disabled", "class.dropdown-item": "true", "attr.role": "\"menuitem\"", "attr.aria-disabled": "disabled", "attr.id": "dropdownItemId" } }, providers: [BASIC_FOCUSABLE_ITEM_PROVIDER], ngImport: i0 });
|
|
5687
5749
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDropdownItem, decorators: [{
|
|
5688
5750
|
type: Directive,
|
|
@@ -5697,7 +5759,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
5697
5759
|
},
|
|
5698
5760
|
providers: [BASIC_FOCUSABLE_ITEM_PROVIDER],
|
|
5699
5761
|
}]
|
|
5700
|
-
}], ctorParameters: function () { return [{ type: ClrDropdown }, { type: RootDropdownService }, { type: FocusableItem }]; }, propDecorators: { disabled: [{
|
|
5762
|
+
}], ctorParameters: function () { return [{ type: ClrDropdown }, { type: RootDropdownService }, { type: FocusableItem }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { disabled: [{
|
|
5701
5763
|
type: Input,
|
|
5702
5764
|
args: ['clrDisabled']
|
|
5703
5765
|
}], dropdownItemId: [{
|
|
@@ -9062,7 +9124,7 @@ class ClrOptions {
|
|
|
9062
9124
|
}
|
|
9063
9125
|
}
|
|
9064
9126
|
ClrOptions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrOptions, deps: [{ token: OptionSelectionService }, { token: IF_ACTIVE_ID }, { token: i0.ElementRef }, { token: ClrCommonStringsService }, { token: ComboboxFocusHandler }, { token: ClrPopoverToggleService }, { token: POPOVER_HOST_ANCHOR, optional: true }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
|
|
9065
|
-
ClrOptions.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrOptions, selector: "clr-options", inputs: { optionsId: ["id", "optionsId"] }, host: { properties: { "class.clr-combobox-options": "true", "attr.role": "\"listbox\"", "id": "optionsId" } }, providers: [{ provide: LoadingListener, useExisting: ClrOptions }], queries: [{ propertyName: "items", predicate: ClrOption }], ngImport: i0, template: `
|
|
9127
|
+
ClrOptions.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrOptions, selector: "clr-options", inputs: { optionsId: ["id", "optionsId"] }, host: { properties: { "class.clr-combobox-options": "true", "attr.role": "\"listbox\"", "id": "optionsId" } }, providers: [{ provide: LoadingListener, useExisting: ClrOptions }], queries: [{ propertyName: "items", predicate: ClrOption, descendants: true }], ngImport: i0, template: `
|
|
9066
9128
|
<div *ngIf="optionSelectionService.loading" class="clr-combobox-options-loading">
|
|
9067
9129
|
<clr-spinner clrInline>
|
|
9068
9130
|
{{ commonStrings.keys.loading }}
|
|
@@ -9131,7 +9193,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
9131
9193
|
args: ['id']
|
|
9132
9194
|
}], items: [{
|
|
9133
9195
|
type: ContentChildren,
|
|
9134
|
-
args: [ClrOption]
|
|
9196
|
+
args: [ClrOption, { descendants: true }]
|
|
9135
9197
|
}] } });
|
|
9136
9198
|
|
|
9137
9199
|
/*
|
|
@@ -9410,7 +9472,7 @@ ClrCombobox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
|
9410
9472
|
IF_ACTIVE_ID_PROVIDER,
|
|
9411
9473
|
FOCUS_SERVICE_PROVIDER,
|
|
9412
9474
|
COMBOBOX_FOCUS_HANDLER_PROVIDER,
|
|
9413
|
-
], queries: [{ propertyName: "optionSelected", first: true, predicate: ClrOptionSelected, descendants: true }, { propertyName: "options", first: true, predicate: ClrOptions, descendants: true }], viewQueries: [{ propertyName: "textbox", first: true, predicate: ["textboxInput"], descendants: true }, { propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }], usesInheritance: true, hostDirectives: [{ directive: ClrPopoverHostDirective }], 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<!-- The (click) handler is needed to auto-focus on input field which can not currently occupy the whole\n width of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverAnchor\n (click)=\"focusInput()\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"invalid\"\n [class.disabled]=\"control?.disabled? true: null\"\n>\n <span\n *ngIf=\"multiSelect && optionSelectionService.selectionModel.model\"\n role=\"grid\"\n clrRovingTabindex\n [clrRovingTabindexDisabled]=\"control?.disabled\"\n clrDirection=\"both\"\n [attr.aria-label]=\"getSelectionAriaLabel()\"\n [attr.aria-disabled]=\"control?.disabled? true: null\"\n >\n <span *ngFor=\"let item of multiSelectModel; let i = index\" class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n <ng-container\n *ngIf=\"optionSelected\"\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n ></ng-container>\n </span>\n </span>\n <span role=\"gridcell\">\n <button\n clrKeyFocusItem\n type=\"button\"\n class=\"clr-combobox-remove-btn\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxDelete + ' ' + optionSelectionService.selectionModel.toString(displayField, i)\"\n (click)=\"unselect(item)\"\n >\n <cds-icon shape=\"window-close\" size=\"12\"></cds-icon>\n </button>\n </span>\n </span>\n </span>\n\n <
|
|
9475
|
+
], queries: [{ propertyName: "optionSelected", first: true, predicate: ClrOptionSelected, descendants: true }, { propertyName: "options", first: true, predicate: ClrOptions, descendants: true }], viewQueries: [{ propertyName: "textbox", first: true, predicate: ["textboxInput"], descendants: true }, { propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }], usesInheritance: true, hostDirectives: [{ directive: ClrPopoverHostDirective }], 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<!-- The (click) handler is needed to auto-focus on input field which can not currently occupy the whole\n width of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverAnchor\n (click)=\"focusInput()\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"invalid\"\n [class.disabled]=\"control?.disabled? true: null\"\n>\n <span\n *ngIf=\"multiSelect && optionSelectionService.selectionModel.model && multiSelectModel.length > 0\"\n role=\"grid\"\n clrRovingTabindex\n [clrRovingTabindexDisabled]=\"control?.disabled\"\n clrDirection=\"both\"\n [attr.aria-label]=\"getSelectionAriaLabel()\"\n [attr.aria-disabled]=\"control?.disabled? true: null\"\n class=\"clr-combobox-pills\"\n >\n <span *ngFor=\"let item of multiSelectModel; let i = index\" class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n <ng-container\n *ngIf=\"optionSelected\"\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n ></ng-container>\n </span>\n </span>\n <span role=\"gridcell\">\n <button\n clrKeyFocusItem\n type=\"button\"\n class=\"clr-combobox-remove-btn\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxDelete + ' ' + optionSelectionService.selectionModel.toString(displayField, i)\"\n (click)=\"unselect(item)\"\n >\n <cds-icon shape=\"window-close\" size=\"12\"></cds-icon>\n </button>\n </span>\n </span>\n </span>\n\n <input\n #textboxInput\n type=\"text\"\n role=\"combobox\"\n [id]=\"inputId()\"\n class=\"clr-input clr-combobox-input\"\n [(ngModel)]=\"searchText\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n [attr.aria-expanded]=\"openState\"\n [attr.aria-owns]=\"ariaOwns\"\n aria-haspopup=\"listbox\"\n aria-autocomplete=\"list\"\n autocomplete=\"off\"\n [attr.aria-invalid]=\"control?.invalid? true: null\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-activedescendant]=\"getActiveDescendant()\"\n [attr.placeholder]=\"placeholder\"\n />\n\n <!-- No click handler, as it uses the handler on the .clr-combobox-wrapper -->\n <button\n clrPopoverOpenCloseButton\n #trigger\n type=\"button\"\n class=\"clr-combobox-trigger\"\n tabindex=\"-1\"\n [disabled]=\"control?.disabled || null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxOpen\"\n >\n <cds-icon shape=\"angle\" direction=\"down\"></cds-icon>\n </button>\n\n <div class=\"clr-focus-indicator\" [class.clr-focus]=\"focused\"></div>\n</div>\n\n<!-- Both close handlers are handled manually due to issues in Edge browser.\n Additionally 'outsideClickToClose' has complex handling that's necessary\n to be manual due to the component architecture -->\n<div role=\"dialog\" *clrPopoverContent=\"openState at smartPosition; outsideClickToClose: false; scrollToClose: false\">\n <ng-content></ng-content>\n</div>\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: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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.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: CdsIconCustomTag, selector: "cds-icon" }, { kind: "component", type: ClrRovingTabindex, selector: "[clrRovingTabindex]", inputs: ["clrRovingTabindex", "clrRovingTabindexDisabled"] }, { kind: "directive", type: ClrKeyFocusItem, selector: "[clrKeyFocusItem]" }, { kind: "directive", type: ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { kind: "directive", type: ClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { kind: "directive", type: ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }] });
|
|
9414
9476
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrCombobox, decorators: [{
|
|
9415
9477
|
type: Component,
|
|
9416
9478
|
args: [{ selector: 'clr-combobox', providers: [
|
|
@@ -9423,7 +9485,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
9423
9485
|
'[class.aria-required]': 'true',
|
|
9424
9486
|
'[class.clr-combobox]': 'true',
|
|
9425
9487
|
'[class.clr-combobox-disabled]': 'control?.disabled',
|
|
9426
|
-
}, 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<!-- The (click) handler is needed to auto-focus on input field which can not currently occupy the whole\n width of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverAnchor\n (click)=\"focusInput()\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"invalid\"\n [class.disabled]=\"control?.disabled? true: null\"\n>\n <span\n *ngIf=\"multiSelect && optionSelectionService.selectionModel.model\"\n role=\"grid\"\n clrRovingTabindex\n [clrRovingTabindexDisabled]=\"control?.disabled\"\n clrDirection=\"both\"\n [attr.aria-label]=\"getSelectionAriaLabel()\"\n [attr.aria-disabled]=\"control?.disabled? true: null\"\n >\n <span *ngFor=\"let item of multiSelectModel; let i = index\" class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n <ng-container\n *ngIf=\"optionSelected\"\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n ></ng-container>\n </span>\n </span>\n <span role=\"gridcell\">\n <button\n clrKeyFocusItem\n type=\"button\"\n class=\"clr-combobox-remove-btn\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxDelete + ' ' + optionSelectionService.selectionModel.toString(displayField, i)\"\n (click)=\"unselect(item)\"\n >\n <cds-icon shape=\"window-close\" size=\"12\"></cds-icon>\n </button>\n </span>\n </span>\n </span>\n\n <
|
|
9488
|
+
}, 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<!-- The (click) handler is needed to auto-focus on input field which can not currently occupy the whole\n width of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverAnchor\n (click)=\"focusInput()\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"invalid\"\n [class.disabled]=\"control?.disabled? true: null\"\n>\n <span\n *ngIf=\"multiSelect && optionSelectionService.selectionModel.model && multiSelectModel.length > 0\"\n role=\"grid\"\n clrRovingTabindex\n [clrRovingTabindexDisabled]=\"control?.disabled\"\n clrDirection=\"both\"\n [attr.aria-label]=\"getSelectionAriaLabel()\"\n [attr.aria-disabled]=\"control?.disabled? true: null\"\n class=\"clr-combobox-pills\"\n >\n <span *ngFor=\"let item of multiSelectModel; let i = index\" class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n <ng-container\n *ngIf=\"optionSelected\"\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n ></ng-container>\n </span>\n </span>\n <span role=\"gridcell\">\n <button\n clrKeyFocusItem\n type=\"button\"\n class=\"clr-combobox-remove-btn\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxDelete + ' ' + optionSelectionService.selectionModel.toString(displayField, i)\"\n (click)=\"unselect(item)\"\n >\n <cds-icon shape=\"window-close\" size=\"12\"></cds-icon>\n </button>\n </span>\n </span>\n </span>\n\n <input\n #textboxInput\n type=\"text\"\n role=\"combobox\"\n [id]=\"inputId()\"\n class=\"clr-input clr-combobox-input\"\n [(ngModel)]=\"searchText\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n [attr.aria-expanded]=\"openState\"\n [attr.aria-owns]=\"ariaOwns\"\n aria-haspopup=\"listbox\"\n aria-autocomplete=\"list\"\n autocomplete=\"off\"\n [attr.aria-invalid]=\"control?.invalid? true: null\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-activedescendant]=\"getActiveDescendant()\"\n [attr.placeholder]=\"placeholder\"\n />\n\n <!-- No click handler, as it uses the handler on the .clr-combobox-wrapper -->\n <button\n clrPopoverOpenCloseButton\n #trigger\n type=\"button\"\n class=\"clr-combobox-trigger\"\n tabindex=\"-1\"\n [disabled]=\"control?.disabled || null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxOpen\"\n >\n <cds-icon shape=\"angle\" direction=\"down\"></cds-icon>\n </button>\n\n <div class=\"clr-focus-indicator\" [class.clr-focus]=\"focused\"></div>\n</div>\n\n<!-- Both close handlers are handled manually due to issues in Edge browser.\n Additionally 'outsideClickToClose' has complex handling that's necessary\n to be manual due to the component architecture -->\n<div role=\"dialog\" *clrPopoverContent=\"openState at smartPosition; outsideClickToClose: false; scrollToClose: false\">\n <ng-content></ng-content>\n</div>\n" }]
|
|
9427
9489
|
}], ctorParameters: function () {
|
|
9428
9490
|
return [{ type: i0.ViewContainerRef }, { type: i0.Injector }, { type: i1.NgControl, decorators: [{
|
|
9429
9491
|
type: Self
|
|
@@ -9501,6 +9563,10 @@ class ClrOptionItems {
|
|
|
9501
9563
|
this._filterField = field;
|
|
9502
9564
|
this.optionService.displayField = field;
|
|
9503
9565
|
}
|
|
9566
|
+
get hasResults() {
|
|
9567
|
+
// explicity return `undefined` instead of `false` if the answer is not known
|
|
9568
|
+
return this.filteredItems ? this.filteredItems.length : undefined;
|
|
9569
|
+
}
|
|
9504
9570
|
ngDoCheck() {
|
|
9505
9571
|
if (!this.differ) {
|
|
9506
9572
|
this.differ = this.differs.find(this.filteredItems).create(this.iterableProxy.ngForTrackBy);
|
|
@@ -9570,6 +9636,44 @@ function normalizeValue(value) {
|
|
|
9570
9636
|
.toLowerCase();
|
|
9571
9637
|
}
|
|
9572
9638
|
|
|
9639
|
+
/*
|
|
9640
|
+
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
9641
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
9642
|
+
* This software is released under MIT license.
|
|
9643
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
9644
|
+
*/
|
|
9645
|
+
class ClrOptionGroup {
|
|
9646
|
+
constructor() {
|
|
9647
|
+
this.labelId = uniqueIdFactory();
|
|
9648
|
+
}
|
|
9649
|
+
}
|
|
9650
|
+
ClrOptionGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrOptionGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9651
|
+
ClrOptionGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrOptionGroup, selector: "clr-option-group", inputs: { label: ["clrOptionGroupLabel", "label"] }, host: { properties: { "attr.role": "\"group\"", "attr.aria-labelledby": "labelId", "style.display": "clrOptionItems.hasResults ? undefined : \"none\"" } }, queries: [{ propertyName: "clrOptionItems", first: true, predicate: ClrOptionItems, descendants: true }], ngImport: i0, template: `
|
|
9652
|
+
<span [id]="labelId" class="clr-option-group-label" role="presentation">{{ label }}</span>
|
|
9653
|
+
<ng-content></ng-content>
|
|
9654
|
+
`, isInline: true });
|
|
9655
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrOptionGroup, decorators: [{
|
|
9656
|
+
type: Component,
|
|
9657
|
+
args: [{
|
|
9658
|
+
selector: 'clr-option-group',
|
|
9659
|
+
host: {
|
|
9660
|
+
'[attr.role]': '"group"',
|
|
9661
|
+
'[attr.aria-labelledby]': 'labelId',
|
|
9662
|
+
'[style.display]': 'clrOptionItems.hasResults ? undefined : "none"',
|
|
9663
|
+
},
|
|
9664
|
+
template: `
|
|
9665
|
+
<span [id]="labelId" class="clr-option-group-label" role="presentation">{{ label }}</span>
|
|
9666
|
+
<ng-content></ng-content>
|
|
9667
|
+
`,
|
|
9668
|
+
}]
|
|
9669
|
+
}], propDecorators: { label: [{
|
|
9670
|
+
type: Input,
|
|
9671
|
+
args: ['clrOptionGroupLabel']
|
|
9672
|
+
}], clrOptionItems: [{
|
|
9673
|
+
type: ContentChild,
|
|
9674
|
+
args: [ClrOptionItems]
|
|
9675
|
+
}] } });
|
|
9676
|
+
|
|
9573
9677
|
/*
|
|
9574
9678
|
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
9575
9679
|
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
@@ -9582,7 +9686,13 @@ class ClrComboboxModule {
|
|
|
9582
9686
|
}
|
|
9583
9687
|
}
|
|
9584
9688
|
ClrComboboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrComboboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9585
|
-
ClrComboboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: ClrComboboxModule, declarations: [ClrCombobox,
|
|
9689
|
+
ClrComboboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: ClrComboboxModule, declarations: [ClrCombobox,
|
|
9690
|
+
ClrComboboxContainer,
|
|
9691
|
+
ClrOptions,
|
|
9692
|
+
ClrOption,
|
|
9693
|
+
ClrOptionGroup,
|
|
9694
|
+
ClrOptionSelected,
|
|
9695
|
+
ClrOptionItems], imports: [CommonModule,
|
|
9586
9696
|
FormsModule,
|
|
9587
9697
|
ClrIconModule,
|
|
9588
9698
|
ClrKeyFocusModule,
|
|
@@ -9594,6 +9704,7 @@ ClrComboboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versi
|
|
|
9594
9704
|
ClrComboboxContainer,
|
|
9595
9705
|
ClrOptions,
|
|
9596
9706
|
ClrOption,
|
|
9707
|
+
ClrOptionGroup,
|
|
9597
9708
|
ClrOptionSelected,
|
|
9598
9709
|
ClrConditionalModule,
|
|
9599
9710
|
ClrOptionItems] });
|
|
@@ -9619,13 +9730,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
9619
9730
|
ClrPopoverModuleNext,
|
|
9620
9731
|
ClrSpinnerModule,
|
|
9621
9732
|
],
|
|
9622
|
-
declarations: [
|
|
9733
|
+
declarations: [
|
|
9734
|
+
ClrCombobox,
|
|
9735
|
+
ClrComboboxContainer,
|
|
9736
|
+
ClrOptions,
|
|
9737
|
+
ClrOption,
|
|
9738
|
+
ClrOptionGroup,
|
|
9739
|
+
ClrOptionSelected,
|
|
9740
|
+
ClrOptionItems,
|
|
9741
|
+
],
|
|
9623
9742
|
exports: [
|
|
9624
9743
|
ClrCommonFormsModule,
|
|
9625
9744
|
ClrCombobox,
|
|
9626
9745
|
ClrComboboxContainer,
|
|
9627
9746
|
ClrOptions,
|
|
9628
9747
|
ClrOption,
|
|
9748
|
+
ClrOptionGroup,
|
|
9629
9749
|
ClrOptionSelected,
|
|
9630
9750
|
ClrConditionalModule,
|
|
9631
9751
|
ClrOptionItems,
|
|
@@ -10118,14 +10238,14 @@ class ClrBreadcrumbs {
|
|
|
10118
10238
|
}
|
|
10119
10239
|
}
|
|
10120
10240
|
ClrBreadcrumbs.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrBreadcrumbs, deps: [{ token: ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
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(--
|
|
10241
|
+
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(--clr-base-gap-s)}.clr-breadcrumb-menu{display:flex;flex-wrap:wrap;align-items:center}.clr-breadcrumb-menu .clr-breadcrumb-item{display:flex;align-items:center;height:var(--clr-base-row-height-s);color:var(--cds-alias-typography-color-400);font-size:var(--clr-base-typography-font-size-inline);font-weight:var(--cds-alias-typography-secondary-font-weight);line-height:var(--clr-base-typography-line-height-16);letter-spacing:calc(-.1 * (1rem / var(--cds-global-base)))}.clr-breadcrumb-menu .clr-breadcrumb-item a{text-decoration:none;text-align:center}.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 a:visited:active{color:var(--clr-link-active-color)}.clr-breadcrumb-menu .clr-breadcrumb-item:not(:last-child):after{content:\"/\";margin:0 var(--clr-breadcrumb-item-space)}.clr-breadcrumb-menu .clr-breadcrumb-expand{height:var(--clr-base-icon-size-l);width:var(--clr-base-icon-size-l);min-height:var(--clr-base-icon-size-l);min-width:var(--clr-base-icon-size-l);margin:0;padding:0;gap:0}\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" }] });
|
|
10122
10242
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrBreadcrumbs, decorators: [{
|
|
10123
10243
|
type: Component,
|
|
10124
10244
|
args: [{ selector: 'clr-breadcrumbs', host: {
|
|
10125
10245
|
class: 'clr-breadcrumb',
|
|
10126
10246
|
'[attr.aria-label]': 'commonStrings.keys.breadcrumbsLabel',
|
|
10127
10247
|
'[attr.role]': '"navigation"',
|
|
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(--
|
|
10248
|
+
}, 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(--clr-base-gap-s)}.clr-breadcrumb-menu{display:flex;flex-wrap:wrap;align-items:center}.clr-breadcrumb-menu .clr-breadcrumb-item{display:flex;align-items:center;height:var(--clr-base-row-height-s);color:var(--cds-alias-typography-color-400);font-size:var(--clr-base-typography-font-size-inline);font-weight:var(--cds-alias-typography-secondary-font-weight);line-height:var(--clr-base-typography-line-height-16);letter-spacing:calc(-.1 * (1rem / var(--cds-global-base)))}.clr-breadcrumb-menu .clr-breadcrumb-item a{text-decoration:none;text-align:center}.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 a:visited:active{color:var(--clr-link-active-color)}.clr-breadcrumb-menu .clr-breadcrumb-item:not(:last-child):after{content:\"/\";margin:0 var(--clr-breadcrumb-item-space)}.clr-breadcrumb-menu .clr-breadcrumb-expand{height:var(--clr-base-icon-size-l);width:var(--clr-base-icon-size-l);min-height:var(--clr-base-icon-size-l);min-width:var(--clr-base-icon-size-l);margin:0;padding:0;gap:0}\n"] }]
|
|
10129
10249
|
}], ctorParameters: function () { return [{ type: ClrCommonStringsService }]; }, propDecorators: { items: [{
|
|
10130
10250
|
type: Input
|
|
10131
10251
|
}], clrBreadcrumbItemClick: [{
|
|
@@ -14932,7 +15052,7 @@ class ClrDatepickerViewManager {
|
|
|
14932
15052
|
}
|
|
14933
15053
|
}
|
|
14934
15054
|
ClrDatepickerViewManager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatepickerViewManager, deps: [{ token: ClrCommonStringsService }, { token: ViewManagerService }, { token: DateNavigationService }, { token: DateIOService }], target: i0.ɵɵFactoryTarget.Component });
|
|
14935
|
-
ClrDatepickerViewManager.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatepickerViewManager, selector: "clr-datepicker-view-manager", host: { attributes: { "role": "dialog" }, properties: { "class.datepicker": "true", "class.has-range-option": "hasRangeOptions", "class.has-action-buttons": "hasActionButtons", "attr.aria-modal": "true", "attr.aria-label": "commonStrings.keys.datepickerDialogLabel" } }, providers: [DatepickerFocusService], 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=\"hasRangeOptions; else calendarView\">\n <clr-vertical-nav class=\"clr-date-range-picker-nav\">\n <ng-container *ngFor=\"let option of dateRangeOptions\">\n <a\n clrVerticalNavLink\n href=\"javascript:void(0)\"\n [attr.aria-label]=\"option?.label\"\n tabindex=\"0\"\n (keyup.enter)=\"onRangeOptionSelect(option)\"\n (click)=\"onRangeOptionSelect(option)\"\n >\n {{option.label}}\n </a>\n </ng-container>\n </clr-vertical-nav>\n\n <
|
|
15055
|
+
ClrDatepickerViewManager.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatepickerViewManager, selector: "clr-datepicker-view-manager", host: { attributes: { "role": "dialog" }, properties: { "class.datepicker": "true", "class.has-range-option": "hasRangeOptions", "class.has-action-buttons": "hasActionButtons", "attr.aria-modal": "true", "attr.aria-label": "commonStrings.keys.datepickerDialogLabel" } }, providers: [DatepickerFocusService], 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=\"hasRangeOptions; else calendarView\">\n <clr-vertical-nav class=\"clr-date-range-picker-nav\">\n <ng-container *ngFor=\"let option of dateRangeOptions\">\n <a\n clrVerticalNavLink\n href=\"javascript:void(0)\"\n [attr.aria-label]=\"option?.label\"\n tabindex=\"0\"\n (keyup.enter)=\"onRangeOptionSelect(option)\"\n (click)=\"onRangeOptionSelect(option)\"\n >\n {{option.label}}\n </a>\n </ng-container>\n </clr-vertical-nav>\n\n <ng-container *ngTemplateOutlet=\"calendarView\"></ng-container>\n</ng-container>\n\n<ng-template #calendarView>\n <div class=\"datepicker-view-manager\">\n <clr-monthpicker *ngIf=\"isMonthView\"></clr-monthpicker>\n <clr-yearpicker *ngIf=\"isYearView\"></clr-yearpicker>\n <clr-daypicker *ngIf=\"isDayView\"></clr-daypicker>\n <clr-datepicker-actions *ngIf=\"hasActionButtons\"></clr-datepicker-actions>\n </div>\n</ng-template>\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: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ClrVerticalNav, selector: "clr-vertical-nav", inputs: ["clrVerticalNavToggleLabel", "clrVerticalNavCollapsible", "clrVerticalNavCollapsed"], outputs: ["clrVerticalNavCollapsedChange"] }, { kind: "component", type: ClrVerticalNavLink, selector: "[clrVerticalNavLink]" }, { kind: "component", type: ClrMonthpicker, selector: "clr-monthpicker" }, { kind: "component", type: ClrYearpicker, selector: "clr-yearpicker" }, { kind: "component", type: ClrDaypicker, selector: "clr-daypicker" }, { kind: "component", type: ClrDatepickerActions, selector: "clr-datepicker-actions" }] });
|
|
14936
15056
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatepickerViewManager, decorators: [{
|
|
14937
15057
|
type: Component,
|
|
14938
15058
|
args: [{ selector: 'clr-datepicker-view-manager', providers: [DatepickerFocusService], host: {
|
|
@@ -14942,7 +15062,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
14942
15062
|
'[attr.aria-modal]': 'true',
|
|
14943
15063
|
'[attr.aria-label]': 'commonStrings.keys.datepickerDialogLabel',
|
|
14944
15064
|
role: 'dialog',
|
|
14945
|
-
}, 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=\"hasRangeOptions; else calendarView\">\n <clr-vertical-nav class=\"clr-date-range-picker-nav\">\n <ng-container *ngFor=\"let option of dateRangeOptions\">\n <a\n clrVerticalNavLink\n href=\"javascript:void(0)\"\n [attr.aria-label]=\"option?.label\"\n tabindex=\"0\"\n (keyup.enter)=\"onRangeOptionSelect(option)\"\n (click)=\"onRangeOptionSelect(option)\"\n >\n {{option.label}}\n </a>\n </ng-container>\n </clr-vertical-nav>\n\n <
|
|
15065
|
+
}, 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=\"hasRangeOptions; else calendarView\">\n <clr-vertical-nav class=\"clr-date-range-picker-nav\">\n <ng-container *ngFor=\"let option of dateRangeOptions\">\n <a\n clrVerticalNavLink\n href=\"javascript:void(0)\"\n [attr.aria-label]=\"option?.label\"\n tabindex=\"0\"\n (keyup.enter)=\"onRangeOptionSelect(option)\"\n (click)=\"onRangeOptionSelect(option)\"\n >\n {{option.label}}\n </a>\n </ng-container>\n </clr-vertical-nav>\n\n <ng-container *ngTemplateOutlet=\"calendarView\"></ng-container>\n</ng-container>\n\n<ng-template #calendarView>\n <div class=\"datepicker-view-manager\">\n <clr-monthpicker *ngIf=\"isMonthView\"></clr-monthpicker>\n <clr-yearpicker *ngIf=\"isYearView\"></clr-yearpicker>\n <clr-daypicker *ngIf=\"isDayView\"></clr-daypicker>\n <clr-datepicker-actions *ngIf=\"hasActionButtons\"></clr-datepicker-actions>\n </div>\n</ng-template>\n" }]
|
|
14946
15066
|
}], ctorParameters: function () { return [{ type: ClrCommonStringsService }, { type: ViewManagerService }, { type: DateNavigationService }, { type: DateIOService }]; } });
|
|
14947
15067
|
|
|
14948
15068
|
/*
|
|
@@ -15736,7 +15856,7 @@ class ClrFileInputContainer extends ClrAbstractContainer {
|
|
|
15736
15856
|
return this.fileInput.elementRef.nativeElement.multiple;
|
|
15737
15857
|
}
|
|
15738
15858
|
get disabled() {
|
|
15739
|
-
return this.fileInput.elementRef.nativeElement.disabled;
|
|
15859
|
+
return this.fileInput.elementRef.nativeElement.disabled || (this.control && this.control.disabled);
|
|
15740
15860
|
}
|
|
15741
15861
|
get browseButtonText() {
|
|
15742
15862
|
var _a, _b;
|
|
@@ -15960,9 +16080,13 @@ class ClrFileInput extends WrappedFormControl {
|
|
|
15960
16080
|
constructor(injector, renderer, viewContainerRef, elementRef, control, commonStrings) {
|
|
15961
16081
|
super(viewContainerRef, ClrFileInputContainer, injector, control, renderer, elementRef);
|
|
15962
16082
|
this.elementRef = elementRef;
|
|
16083
|
+
this.control = control;
|
|
15963
16084
|
this.commonStrings = commonStrings;
|
|
15964
16085
|
this.selection = undefined;
|
|
15965
16086
|
}
|
|
16087
|
+
get disabled() {
|
|
16088
|
+
return this.control && this.control.disabled;
|
|
16089
|
+
}
|
|
15966
16090
|
handleChange() {
|
|
15967
16091
|
this.updateSelection();
|
|
15968
16092
|
}
|
|
@@ -15994,7 +16118,7 @@ class ClrFileInput extends WrappedFormControl {
|
|
|
15994
16118
|
}
|
|
15995
16119
|
}
|
|
15996
16120
|
ClrFileInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInput, deps: [{ token: i0.Injector }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: i1.NgControl, optional: true, self: true }, { token: ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
15997
|
-
ClrFileInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrFileInput, selector: "input[type=\"file\"][clrFileInput]", host: { attributes: { "tabindex": "-1", "aria-hidden": "true" }, listeners: { "change": "handleChange()" }, properties: { "class.clr-file-input": "true" } }, usesInheritance: true, ngImport: i0 });
|
|
16121
|
+
ClrFileInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrFileInput, selector: "input[type=\"file\"][clrFileInput]", host: { attributes: { "tabindex": "-1", "aria-hidden": "true" }, listeners: { "change": "handleChange()" }, properties: { "class.clr-file-input": "true", "disabled": "this.disabled" } }, usesInheritance: true, ngImport: i0 });
|
|
15998
16122
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInput, decorators: [{
|
|
15999
16123
|
type: Directive,
|
|
16000
16124
|
args: [{
|
|
@@ -16011,7 +16135,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
16011
16135
|
}, {
|
|
16012
16136
|
type: Optional
|
|
16013
16137
|
}] }, { type: ClrCommonStringsService }];
|
|
16014
|
-
}, propDecorators: {
|
|
16138
|
+
}, propDecorators: { disabled: [{
|
|
16139
|
+
type: HostBinding,
|
|
16140
|
+
args: ['disabled']
|
|
16141
|
+
}], handleChange: [{
|
|
16015
16142
|
type: HostListener,
|
|
16016
16143
|
args: ['change']
|
|
16017
16144
|
}] } });
|
|
@@ -16207,6 +16334,9 @@ class ClrNumberInputContainer extends ClrAbstractContainer {
|
|
|
16207
16334
|
this.focus = false;
|
|
16208
16335
|
this.subscriptions.push(focusService.focusChange.subscribe(state => (this.focus = state)));
|
|
16209
16336
|
}
|
|
16337
|
+
focusOut() {
|
|
16338
|
+
this.input.dispatchBlur();
|
|
16339
|
+
}
|
|
16210
16340
|
}
|
|
16211
16341
|
ClrNumberInputContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrNumberInputContainer, deps: [{ token: ControlClassService }, { token: LayoutService, optional: true }, { token: NgControlService }, { token: FocusService }, { token: IfControlStateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
16212
16342
|
ClrNumberInputContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrNumberInputContainer, selector: "clr-number-input-container", host: { properties: { "class.clr-form-control": "true", "class.clr-form-control-disabled": "control?.disabled", "class.clr-form-control-readonly": "input.readonly", "class.clr-row": "addGrid()" } }, providers: [FocusService, IfControlStateService, NgControlService, ControlIdService, ControlClassService], queries: [{ propertyName: "input", first: true, predicate: i0.forwardRef(function () { return ClrNumberInput; }), descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
@@ -16214,7 +16344,7 @@ ClrNumberInputContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
|
|
|
16214
16344
|
<label *ngIf="!label && addGrid()"></label>
|
|
16215
16345
|
<div class="clr-control-container" [ngClass]="controlClass()">
|
|
16216
16346
|
<div class="clr-number-input-wrapper">
|
|
16217
|
-
<div class="clr-input-group" [class.clr-focus]="focus">
|
|
16347
|
+
<div class="clr-input-group" [class.clr-focus]="focus" (focusout)="focusOut()">
|
|
16218
16348
|
<ng-content select="[clrNumberInput]"></ng-content>
|
|
16219
16349
|
<div class="clr-input-group-actions">
|
|
16220
16350
|
<button
|
|
@@ -16265,7 +16395,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
16265
16395
|
<label *ngIf="!label && addGrid()"></label>
|
|
16266
16396
|
<div class="clr-control-container" [ngClass]="controlClass()">
|
|
16267
16397
|
<div class="clr-number-input-wrapper">
|
|
16268
|
-
<div class="clr-input-group" [class.clr-focus]="focus">
|
|
16398
|
+
<div class="clr-input-group" [class.clr-focus]="focus" (focusout)="focusOut()">
|
|
16269
16399
|
<ng-content select="[clrNumberInput]"></ng-content>
|
|
16270
16400
|
<div class="clr-input-group-actions">
|
|
16271
16401
|
<button
|
|
@@ -16359,14 +16489,21 @@ class ClrNumberInput extends WrappedFormControl {
|
|
|
16359
16489
|
}
|
|
16360
16490
|
stepUp() {
|
|
16361
16491
|
this.el.nativeElement.stepUp();
|
|
16362
|
-
this.
|
|
16492
|
+
this.dispatchStepChangeEvents();
|
|
16363
16493
|
this.control.control.markAllAsTouched();
|
|
16364
16494
|
}
|
|
16365
16495
|
stepDown() {
|
|
16366
16496
|
this.el.nativeElement.stepDown();
|
|
16367
|
-
this.
|
|
16497
|
+
this.dispatchStepChangeEvents();
|
|
16368
16498
|
this.control.control.markAllAsTouched();
|
|
16369
16499
|
}
|
|
16500
|
+
dispatchBlur() {
|
|
16501
|
+
this.el.nativeElement.dispatchEvent(new Event('blur', { bubbles: true, cancelable: true }));
|
|
16502
|
+
}
|
|
16503
|
+
dispatchStepChangeEvents() {
|
|
16504
|
+
this.el.nativeElement.dispatchEvent(new Event('input', { bubbles: true, cancelable: true }));
|
|
16505
|
+
this.el.nativeElement.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));
|
|
16506
|
+
}
|
|
16370
16507
|
}
|
|
16371
16508
|
ClrNumberInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrNumberInput, deps: [{ token: FocusService, optional: true }, { token: i0.ViewContainerRef }, { token: i0.Injector }, { token: i1.NgControl, optional: true, self: true }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
16372
16509
|
ClrNumberInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrNumberInput, selector: "input[type=\"number\"][clrNumberInput]", host: { listeners: { "focus": "triggerFocus()", "blur": "triggerValidation()" }, properties: { "class.clr-input": "true", "class.clr-number-input": "true" } }, usesInheritance: true, ngImport: i0 });
|
|
@@ -18034,9 +18171,6 @@ class DefaultKeyNavigationStrategy {
|
|
|
18034
18171
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18035
18172
|
*/
|
|
18036
18173
|
class ExpandedRowKeyNavigationStrategy extends DefaultKeyNavigationStrategy {
|
|
18037
|
-
constructor(utils) {
|
|
18038
|
-
super(utils);
|
|
18039
|
-
}
|
|
18040
18174
|
keyUp(currentCellCoords) {
|
|
18041
18175
|
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18042
18176
|
if (currentCellCoords.y === 0) {
|
|
@@ -18202,9 +18336,6 @@ class ExpandedRowKeyNavigationStrategy extends DefaultKeyNavigationStrategy {
|
|
|
18202
18336
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
18203
18337
|
*/
|
|
18204
18338
|
class ExpandedColumnsRowKeyNavigationStrategy extends ExpandedRowKeyNavigationStrategy {
|
|
18205
|
-
constructor(utils) {
|
|
18206
|
-
super(utils);
|
|
18207
|
-
}
|
|
18208
18339
|
keyUp(currentCellCoords) {
|
|
18209
18340
|
const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);
|
|
18210
18341
|
if (currentCellCoords.y === 0) {
|
|
@@ -18360,9 +18491,22 @@ class KeyNavigationUtils {
|
|
|
18360
18491
|
};
|
|
18361
18492
|
return coordinates;
|
|
18362
18493
|
}
|
|
18494
|
+
get averageRowHeight() {
|
|
18495
|
+
const heightSum = Array.from(this.rows.values()).reduce((sum, row) => {
|
|
18496
|
+
return sum + row.clientHeight;
|
|
18497
|
+
}, 0);
|
|
18498
|
+
return Math.round(heightSum / this.rows.length);
|
|
18499
|
+
}
|
|
18363
18500
|
get itemsPerPage() {
|
|
18364
18501
|
var _a;
|
|
18365
|
-
return Math.floor(((_a = this.host) === null || _a === void 0 ? void 0 : _a.querySelector('.datagrid').clientHeight) / this.
|
|
18502
|
+
return Math.floor(((_a = this.host) === null || _a === void 0 ? void 0 : _a.querySelector('.datagrid').clientHeight) / this.averageRowHeight) - 1 || 0;
|
|
18503
|
+
}
|
|
18504
|
+
setAriaRowIndexTo(cellCoords) {
|
|
18505
|
+
let ariaRowIndex = this.rows[cellCoords.y].getAttribute('aria-rowindex');
|
|
18506
|
+
if (!ariaRowIndex) {
|
|
18507
|
+
ariaRowIndex = this.rows[cellCoords.y - 1].getAttribute('aria-rowindex');
|
|
18508
|
+
}
|
|
18509
|
+
cellCoords.ariaRowIndex = ariaRowIndex;
|
|
18366
18510
|
}
|
|
18367
18511
|
getNextItemCoordinate(e) {
|
|
18368
18512
|
const currentCellCoords = this.currentCellCoordinates;
|
|
@@ -18466,15 +18610,16 @@ function isActionableItem(el) {
|
|
|
18466
18610
|
class KeyNavigationGridController {
|
|
18467
18611
|
constructor(zone) {
|
|
18468
18612
|
this.zone = zone;
|
|
18613
|
+
this.nextCellCoordsEmitter = new EventEmitter(false);
|
|
18469
18614
|
this.skipItemFocus = false;
|
|
18470
|
-
this.
|
|
18471
|
-
this.destroy$ = new Subject();
|
|
18472
|
-
this._activeCell = null;
|
|
18615
|
+
this.preventScrollOnFocus = false;
|
|
18473
18616
|
this.config = {
|
|
18474
18617
|
keyGridRows: '[role=row]:not(.datagrid-placeholder):not([style*="display: none"])',
|
|
18475
18618
|
keyGridCells: '[role=gridcell]:not(.datagrid-hidden-column):not(.datagrid-placeholder-content), [role=columnheader]:not(.datagrid-hidden-column):not(.datagrid-placeholder-content), .datagrid-detail-caret',
|
|
18476
18619
|
keyGrid: '[role=grid]',
|
|
18477
18620
|
};
|
|
18621
|
+
this.listenersAdded = false;
|
|
18622
|
+
this.destroy$ = new Subject();
|
|
18478
18623
|
}
|
|
18479
18624
|
ngOnDestroy() {
|
|
18480
18625
|
this.destroy$.next();
|
|
@@ -18494,22 +18639,17 @@ class KeyNavigationGridController {
|
|
|
18494
18639
|
? Array.from(this.keyNavUtils.cells).find(c => c === e.target || c === e.target.closest(this.config.keyGridCells))
|
|
18495
18640
|
: null;
|
|
18496
18641
|
if (activeCell) {
|
|
18497
|
-
this.setActiveCell(activeCell
|
|
18642
|
+
this.setActiveCell(activeCell);
|
|
18643
|
+
if (!isActionableItem(e.target)) {
|
|
18644
|
+
this.focusElement(activeCell);
|
|
18645
|
+
}
|
|
18498
18646
|
}
|
|
18499
18647
|
}
|
|
18500
18648
|
});
|
|
18501
18649
|
fromEvent(this.keyNavUtils.grid, 'wheel')
|
|
18502
18650
|
.pipe(takeUntil(this.destroy$))
|
|
18503
18651
|
.subscribe(() => {
|
|
18504
|
-
this.
|
|
18505
|
-
});
|
|
18506
|
-
fromEvent(this.keyNavUtils.grid, 'focusout')
|
|
18507
|
-
.pipe(debounceTime(0), takeUntil(this.destroy$))
|
|
18508
|
-
.subscribe(() => {
|
|
18509
|
-
if (this.keyNavUtils.grid.contains(document.activeElement)) {
|
|
18510
|
-
return;
|
|
18511
|
-
}
|
|
18512
|
-
this.removeActiveCell();
|
|
18652
|
+
this.nextCellCoordsEmitter.emit(null);
|
|
18513
18653
|
});
|
|
18514
18654
|
fromEvent(this.keyNavUtils.grid, 'keydown')
|
|
18515
18655
|
.pipe(takeUntil(this.destroy$))
|
|
@@ -18528,11 +18668,17 @@ class KeyNavigationGridController {
|
|
|
18528
18668
|
e.key === Keys.PageUp ||
|
|
18529
18669
|
e.key === Keys.PageDown) {
|
|
18530
18670
|
const nextCellCoords = this.keyNavUtils.getNextItemCoordinate(e);
|
|
18671
|
+
if (nextCellCoords.y > 0 &&
|
|
18672
|
+
(e.key === Keys.ArrowUp || e.key === Keys.ArrowDown || e.key === Keys.PageUp || e.key === Keys.PageDown)) {
|
|
18673
|
+
this.keyNavUtils.setAriaRowIndexTo(nextCellCoords);
|
|
18674
|
+
this.nextCellCoordsEmitter.emit(nextCellCoords);
|
|
18675
|
+
}
|
|
18531
18676
|
const activeItem = this.keyNavUtils.rows
|
|
18532
18677
|
? Array.from(this.keyNavUtils.getCellsForRow(nextCellCoords.y))[nextCellCoords.x]
|
|
18533
18678
|
: null;
|
|
18534
18679
|
if (activeItem) {
|
|
18535
18680
|
this.setActiveCell(activeItem);
|
|
18681
|
+
this.focusElement(activeItem, { preventScroll: this.preventScrollOnFocus });
|
|
18536
18682
|
}
|
|
18537
18683
|
e.preventDefault();
|
|
18538
18684
|
}
|
|
@@ -18551,13 +18697,7 @@ class KeyNavigationGridController {
|
|
|
18551
18697
|
const firstCell = this.keyNavUtils.cells ? this.keyNavUtils.cells[0] : null;
|
|
18552
18698
|
firstCell === null || firstCell === void 0 ? void 0 : firstCell.setAttribute('tabindex', '0');
|
|
18553
18699
|
}
|
|
18554
|
-
|
|
18555
|
-
this._activeCell = null;
|
|
18556
|
-
}
|
|
18557
|
-
getActiveCell() {
|
|
18558
|
-
return this._activeCell;
|
|
18559
|
-
}
|
|
18560
|
-
setActiveCell(activeCell, { keepFocus } = { keepFocus: false }) {
|
|
18700
|
+
setActiveCell(activeCell) {
|
|
18561
18701
|
const prior = this.keyNavUtils.cells
|
|
18562
18702
|
? Array.from(this.keyNavUtils.cells).find(c => c.getAttribute('tabindex') === '0')
|
|
18563
18703
|
: null;
|
|
@@ -18565,18 +18705,20 @@ class KeyNavigationGridController {
|
|
|
18565
18705
|
prior.setAttribute('tabindex', '-1');
|
|
18566
18706
|
}
|
|
18567
18707
|
activeCell.setAttribute('tabindex', '0');
|
|
18568
|
-
|
|
18569
|
-
|
|
18570
|
-
|
|
18571
|
-
|
|
18572
|
-
elementToFocus = activeCell;
|
|
18573
|
-
}
|
|
18574
|
-
else {
|
|
18575
|
-
const tabbableElements = getTabbableItems(activeCell);
|
|
18576
|
-
elementToFocus = tabbableElements.length ? tabbableElements[0] : activeCell;
|
|
18577
|
-
}
|
|
18578
|
-
elementToFocus.focus();
|
|
18708
|
+
}
|
|
18709
|
+
focusElement(activeCell, options = { preventScroll: false }) {
|
|
18710
|
+
if (this.skipItemFocus) {
|
|
18711
|
+
return;
|
|
18579
18712
|
}
|
|
18713
|
+
let elementToFocus;
|
|
18714
|
+
if (activeCell.getAttribute('role') === 'columnheader') {
|
|
18715
|
+
elementToFocus = activeCell;
|
|
18716
|
+
}
|
|
18717
|
+
else {
|
|
18718
|
+
const tabbableElements = getTabbableItems(activeCell);
|
|
18719
|
+
elementToFocus = tabbableElements.length ? tabbableElements[0] : activeCell;
|
|
18720
|
+
}
|
|
18721
|
+
elementToFocus.focus(options);
|
|
18580
18722
|
}
|
|
18581
18723
|
}
|
|
18582
18724
|
KeyNavigationGridController.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: KeyNavigationGridController, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -18648,36 +18790,17 @@ class ClrDatagridFilter extends DatagridFilterRegistrar {
|
|
|
18648
18790
|
get active() {
|
|
18649
18791
|
return !!this.filter && this.filter.isActive();
|
|
18650
18792
|
}
|
|
18651
|
-
ngOnChanges() {
|
|
18652
|
-
setTimeout(() => {
|
|
18653
|
-
this.setToggleButtonAriaLabel();
|
|
18654
|
-
});
|
|
18655
|
-
}
|
|
18656
18793
|
ngOnDestroy() {
|
|
18657
18794
|
super.ngOnDestroy();
|
|
18658
18795
|
this.subs.forEach(sub => sub.unsubscribe());
|
|
18659
18796
|
}
|
|
18660
|
-
/**
|
|
18661
|
-
* This is not in a getter to prevent "expression has changed after it was checked" errors.
|
|
18662
|
-
* And it's more performant this way since it only runs on change.
|
|
18663
|
-
*/
|
|
18664
|
-
setToggleButtonAriaLabel() {
|
|
18665
|
-
var _a;
|
|
18666
|
-
const columnElement = (_a = this.elementRef.nativeElement) === null || _a === void 0 ? void 0 : _a.closest('clr-dg-column');
|
|
18667
|
-
const columnTitleElement = columnElement === null || columnElement === void 0 ? void 0 : columnElement.querySelector('.datagrid-column-title');
|
|
18668
|
-
const columnTitle = columnTitleElement === null || columnTitleElement === void 0 ? void 0 : columnTitleElement.textContent.trim().toLocaleLowerCase();
|
|
18669
|
-
this.toggleButtonAriaLabel = this.commonStrings.parse(this.commonStrings.keys.datagridFilterAriaLabel, {
|
|
18670
|
-
COLUMN: columnTitle || '',
|
|
18671
|
-
});
|
|
18672
|
-
}
|
|
18673
18797
|
}
|
|
18674
18798
|
ClrDatagridFilter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridFilter, deps: [{ token: FiltersProvider }, { token: ClrCommonStringsService }, { token: ClrPopoverToggleService }, { token: PLATFORM_ID }, { token: i0.ElementRef }, { token: KeyNavigationGridController, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
18675
|
-
ClrDatagridFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatagridFilter, selector: "clr-dg-filter", inputs: { open: ["clrDgFilterOpen", "open"], customFilter: ["clrDgFilter", "customFilter"] }, outputs: { openChange: "clrDgFilterOpenChange" }, providers: [{ provide: CustomFilter, useExisting: ClrDatagridFilter }], viewQueries: [{ propertyName: "anchor", first: true, predicate: ["anchor"], descendants: true, read: ElementRef }], usesInheritance: true,
|
|
18799
|
+
ClrDatagridFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatagridFilter, selector: "clr-dg-filter", inputs: { open: ["clrDgFilterOpen", "open"], customFilter: ["clrDgFilter", "customFilter"] }, outputs: { openChange: "clrDgFilterOpenChange" }, providers: [{ provide: CustomFilter, useExisting: ClrDatagridFilter }], viewQueries: [{ propertyName: "anchor", first: true, predicate: ["anchor"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: `
|
|
18676
18800
|
<button
|
|
18677
18801
|
class="datagrid-filter-toggle"
|
|
18678
18802
|
type="button"
|
|
18679
18803
|
#anchor
|
|
18680
|
-
[attr.aria-label]="toggleButtonAriaLabel"
|
|
18681
18804
|
[attr.aria-expanded]="ariaExpanded"
|
|
18682
18805
|
[attr.aria-controls]="popoverId"
|
|
18683
18806
|
clrPopoverAnchor
|
|
@@ -18720,7 +18843,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
18720
18843
|
class="datagrid-filter-toggle"
|
|
18721
18844
|
type="button"
|
|
18722
18845
|
#anchor
|
|
18723
|
-
[attr.aria-label]="toggleButtonAriaLabel"
|
|
18724
18846
|
[attr.aria-expanded]="ariaExpanded"
|
|
18725
18847
|
[attr.aria-controls]="popoverId"
|
|
18726
18848
|
clrPopoverAnchor
|
|
@@ -20223,13 +20345,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
20223
20345
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
20224
20346
|
*/
|
|
20225
20347
|
class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
20226
|
-
constructor(el, _sort, filters, vcr, detailService, changeDetectorRef) {
|
|
20348
|
+
constructor(el, _sort, filters, vcr, detailService, changeDetectorRef, commonStrings) {
|
|
20227
20349
|
super(filters);
|
|
20228
20350
|
this.el = el;
|
|
20229
20351
|
this._sort = _sort;
|
|
20230
20352
|
this.vcr = vcr;
|
|
20231
20353
|
this.detailService = detailService;
|
|
20232
20354
|
this.changeDetectorRef = changeDetectorRef;
|
|
20355
|
+
this.commonStrings = commonStrings;
|
|
20233
20356
|
this.sortOrderChange = new EventEmitter();
|
|
20234
20357
|
this.filterValueChange = new EventEmitter();
|
|
20235
20358
|
/**
|
|
@@ -20399,6 +20522,9 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
|
20399
20522
|
ngOnInit() {
|
|
20400
20523
|
this.wrappedInjector = new HostWrapper(WrappedColumn, this.vcr);
|
|
20401
20524
|
}
|
|
20525
|
+
ngAfterViewInit() {
|
|
20526
|
+
this.setFilterToggleAriaLabel();
|
|
20527
|
+
}
|
|
20402
20528
|
ngOnChanges(changes) {
|
|
20403
20529
|
if (changes.colType &&
|
|
20404
20530
|
changes.colType.currentValue &&
|
|
@@ -20438,6 +20564,15 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
|
20438
20564
|
}
|
|
20439
20565
|
});
|
|
20440
20566
|
}
|
|
20567
|
+
setFilterToggleAriaLabel() {
|
|
20568
|
+
var _a;
|
|
20569
|
+
const filterToggle = this.el.nativeElement.querySelector('.datagrid-filter-toggle');
|
|
20570
|
+
if (filterToggle) {
|
|
20571
|
+
filterToggle.ariaLabel = this.commonStrings.parse(this.commonStrings.keys.datagridFilterAriaLabel, {
|
|
20572
|
+
COLUMN: (_a = this === null || this === void 0 ? void 0 : this.titleContainer) === null || _a === void 0 ? void 0 : _a.nativeElement.textContent.trim().toLocaleLowerCase(),
|
|
20573
|
+
});
|
|
20574
|
+
}
|
|
20575
|
+
}
|
|
20441
20576
|
listenForSortingChanges() {
|
|
20442
20577
|
return this._sort.change.subscribe(sort => {
|
|
20443
20578
|
// Need to manually mark the component to be checked
|
|
@@ -20467,10 +20602,10 @@ class ClrDatagridColumn extends DatagridFilterRegistrar {
|
|
|
20467
20602
|
}
|
|
20468
20603
|
}
|
|
20469
20604
|
}
|
|
20470
|
-
ClrDatagridColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridColumn, deps: [{ token: i0.ElementRef }, { token: Sort }, { token: FiltersProvider }, { token: i0.ViewContainerRef }, { token: DetailService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
20471
|
-
ClrDatagridColumn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatagridColumn, selector: "clr-dg-column", inputs: { filterStringPlaceholder: ["clrFilterStringPlaceholder", "filterStringPlaceholder"], filterNumberMaxPlaceholder: ["clrFilterNumberMaxPlaceholder", "filterNumberMaxPlaceholder"], filterNumberMinPlaceholder: ["clrFilterNumberMinPlaceholder", "filterNumberMinPlaceholder"], colType: ["clrDgColType", "colType"], field: ["clrDgField", "field"], sortBy: ["clrDgSortBy", "sortBy"], sortOrder: ["clrDgSortOrder", "sortOrder"], updateFilterValue: ["clrFilterValue", "updateFilterValue"] }, outputs: { sortOrderChange: "clrDgSortOrderChange", filterValueChange: "clrFilterValueChange" }, host: { attributes: { "role": "columnheader" }, properties: { "class.datagrid-column": "true", "attr.aria-sort": "ariaSort" } }, queries: [{ propertyName: "projectedFilter", first: true, predicate: CustomFilter, descendants: true }], usesInheritance: true, usesOnChanges: true, hostDirectives: [{ directive: ClrPopoverHostDirective }], ngImport: i0, template: `
|
|
20605
|
+
ClrDatagridColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridColumn, deps: [{ token: i0.ElementRef }, { token: Sort }, { token: FiltersProvider }, { token: i0.ViewContainerRef }, { token: DetailService }, { token: i0.ChangeDetectorRef }, { token: ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
20606
|
+
ClrDatagridColumn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatagridColumn, selector: "clr-dg-column", inputs: { filterStringPlaceholder: ["clrFilterStringPlaceholder", "filterStringPlaceholder"], filterNumberMaxPlaceholder: ["clrFilterNumberMaxPlaceholder", "filterNumberMaxPlaceholder"], filterNumberMinPlaceholder: ["clrFilterNumberMinPlaceholder", "filterNumberMinPlaceholder"], colType: ["clrDgColType", "colType"], field: ["clrDgField", "field"], sortBy: ["clrDgSortBy", "sortBy"], sortOrder: ["clrDgSortOrder", "sortOrder"], updateFilterValue: ["clrFilterValue", "updateFilterValue"] }, outputs: { sortOrderChange: "clrDgSortOrderChange", filterValueChange: "clrFilterValueChange" }, host: { attributes: { "role": "columnheader" }, properties: { "class.datagrid-column": "true", "attr.aria-sort": "ariaSort" } }, queries: [{ propertyName: "projectedFilter", first: true, predicate: CustomFilter, descendants: true }], viewQueries: [{ propertyName: "titleContainer", first: true, predicate: ["titleContainer"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, hostDirectives: [{ directive: ClrPopoverHostDirective }], ngImport: i0, template: `
|
|
20472
20607
|
<div class="datagrid-column-flex">
|
|
20473
|
-
<button class="datagrid-column-title" *ngIf="sortable" (click)="sort()" type="button">
|
|
20608
|
+
<button class="datagrid-column-title" *ngIf="sortable" (click)="sort()" type="button" #titleContainer>
|
|
20474
20609
|
<ng-container *ngTemplateOutlet="columnTitle"></ng-container>
|
|
20475
20610
|
<cds-icon
|
|
20476
20611
|
*ngIf="sortDirection"
|
|
@@ -20502,7 +20637,7 @@ ClrDatagridColumn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
|
|
|
20502
20637
|
<ng-content></ng-content>
|
|
20503
20638
|
</ng-template>
|
|
20504
20639
|
|
|
20505
|
-
<span class="datagrid-column-title" *ngIf="!sortable">
|
|
20640
|
+
<span class="datagrid-column-title" *ngIf="!sortable" #titleContainer>
|
|
20506
20641
|
<ng-container *ngTemplateOutlet="columnTitle"></ng-container>
|
|
20507
20642
|
</span>
|
|
20508
20643
|
|
|
@@ -20515,7 +20650,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
20515
20650
|
selector: 'clr-dg-column',
|
|
20516
20651
|
template: `
|
|
20517
20652
|
<div class="datagrid-column-flex">
|
|
20518
|
-
<button class="datagrid-column-title" *ngIf="sortable" (click)="sort()" type="button">
|
|
20653
|
+
<button class="datagrid-column-title" *ngIf="sortable" (click)="sort()" type="button" #titleContainer>
|
|
20519
20654
|
<ng-container *ngTemplateOutlet="columnTitle"></ng-container>
|
|
20520
20655
|
<cds-icon
|
|
20521
20656
|
*ngIf="sortDirection"
|
|
@@ -20547,7 +20682,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
20547
20682
|
<ng-content></ng-content>
|
|
20548
20683
|
</ng-template>
|
|
20549
20684
|
|
|
20550
|
-
<span class="datagrid-column-title" *ngIf="!sortable">
|
|
20685
|
+
<span class="datagrid-column-title" *ngIf="!sortable" #titleContainer>
|
|
20551
20686
|
<ng-container *ngTemplateOutlet="columnTitle"></ng-container>
|
|
20552
20687
|
</span>
|
|
20553
20688
|
|
|
@@ -20562,7 +20697,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
20562
20697
|
},
|
|
20563
20698
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
20564
20699
|
}]
|
|
20565
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: Sort }, { type: FiltersProvider }, { type: i0.ViewContainerRef }, { type: DetailService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { filterStringPlaceholder: [{
|
|
20700
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: Sort }, { type: FiltersProvider }, { type: i0.ViewContainerRef }, { type: DetailService }, { type: i0.ChangeDetectorRef }, { type: ClrCommonStringsService }]; }, propDecorators: { filterStringPlaceholder: [{
|
|
20566
20701
|
type: Input,
|
|
20567
20702
|
args: ['clrFilterStringPlaceholder']
|
|
20568
20703
|
}], filterNumberMaxPlaceholder: [{
|
|
@@ -20577,6 +20712,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
20577
20712
|
}], filterValueChange: [{
|
|
20578
20713
|
type: Output,
|
|
20579
20714
|
args: ['clrFilterValueChange']
|
|
20715
|
+
}], titleContainer: [{
|
|
20716
|
+
type: ViewChild,
|
|
20717
|
+
args: ['titleContainer', { read: ElementRef }]
|
|
20580
20718
|
}], colType: [{
|
|
20581
20719
|
type: Input,
|
|
20582
20720
|
args: ['clrDgColType']
|
|
@@ -21473,60 +21611,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
21473
21611
|
args: ['click', ['$event']]
|
|
21474
21612
|
}] } });
|
|
21475
21613
|
|
|
21476
|
-
/*
|
|
21477
|
-
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
21478
|
-
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
21479
|
-
* This software is released under MIT license.
|
|
21480
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
21481
|
-
*/
|
|
21482
|
-
class DatagridCellRenderer {
|
|
21483
|
-
constructor(el, renderer, organizer) {
|
|
21484
|
-
this.el = el;
|
|
21485
|
-
this.renderer = renderer;
|
|
21486
|
-
this.subscriptions = [];
|
|
21487
|
-
this.subscriptions.push(organizer.filterRenderSteps(DatagridRenderStep.CLEAR_WIDTHS).subscribe(() => this.clearWidth()));
|
|
21488
|
-
}
|
|
21489
|
-
ngOnDestroy() {
|
|
21490
|
-
this.subscriptions.forEach(sub => sub.unsubscribe());
|
|
21491
|
-
if (this.stateSubscription) {
|
|
21492
|
-
this.stateSubscription.unsubscribe();
|
|
21493
|
-
}
|
|
21494
|
-
}
|
|
21495
|
-
resetState(state) {
|
|
21496
|
-
this.setWidth(state);
|
|
21497
|
-
this.setHidden(state);
|
|
21498
|
-
}
|
|
21499
|
-
setWidth(state) {
|
|
21500
|
-
if (state.strictWidth) {
|
|
21501
|
-
this.renderer.addClass(this.el.nativeElement, STRICT_WIDTH_CLASS);
|
|
21502
|
-
}
|
|
21503
|
-
else {
|
|
21504
|
-
this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);
|
|
21505
|
-
}
|
|
21506
|
-
this.renderer.setStyle(this.el.nativeElement, 'width', state.width + 'px');
|
|
21507
|
-
}
|
|
21508
|
-
setHidden(state) {
|
|
21509
|
-
if (state.hidden) {
|
|
21510
|
-
this.renderer.addClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);
|
|
21511
|
-
}
|
|
21512
|
-
else {
|
|
21513
|
-
this.renderer.removeClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);
|
|
21514
|
-
}
|
|
21515
|
-
}
|
|
21516
|
-
clearWidth() {
|
|
21517
|
-
this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);
|
|
21518
|
-
this.renderer.setStyle(this.el.nativeElement, 'width', null);
|
|
21519
|
-
}
|
|
21520
|
-
}
|
|
21521
|
-
DatagridCellRenderer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridCellRenderer, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DatagridRenderOrganizer }], target: i0.ɵɵFactoryTarget.Directive });
|
|
21522
|
-
DatagridCellRenderer.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: DatagridCellRenderer, selector: "clr-dg-cell", ngImport: i0 });
|
|
21523
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridCellRenderer, decorators: [{
|
|
21524
|
-
type: Directive,
|
|
21525
|
-
args: [{
|
|
21526
|
-
selector: 'clr-dg-cell',
|
|
21527
|
-
}]
|
|
21528
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DatagridRenderOrganizer }]; } });
|
|
21529
|
-
|
|
21530
21614
|
/*
|
|
21531
21615
|
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
21532
21616
|
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
@@ -21543,6 +21627,7 @@ class ClrDatagridRow {
|
|
|
21543
21627
|
this.detailService = detailService;
|
|
21544
21628
|
this.displayMode = displayMode;
|
|
21545
21629
|
this.vcr = vcr;
|
|
21630
|
+
this.el = el;
|
|
21546
21631
|
this.commonStrings = commonStrings;
|
|
21547
21632
|
this.items = items;
|
|
21548
21633
|
this.document = document;
|
|
@@ -21753,7 +21838,7 @@ class ClrDatagridRow {
|
|
|
21753
21838
|
selectRow(selected = !this.selected, $event) {
|
|
21754
21839
|
// The label also captures clicks that bubble up to the row event listener, causing
|
|
21755
21840
|
// this handler to run twice. This exits early to prevent toggling the checkbox twice.
|
|
21756
|
-
if (!this.selection.rowSelectionMode || $event.target.tagName === 'LABEL') {
|
|
21841
|
+
if (!this.selection.rowSelectionMode || $event.target.tagName === 'LABEL' || !this._selectable) {
|
|
21757
21842
|
return;
|
|
21758
21843
|
}
|
|
21759
21844
|
if (this.selection.selectionType === this.SELECTION_TYPE.Single) {
|
|
@@ -21792,7 +21877,7 @@ ClrDatagridRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version
|
|
|
21792
21877
|
DatagridIfExpandService,
|
|
21793
21878
|
{ provide: IfExpandService, useExisting: DatagridIfExpandService },
|
|
21794
21879
|
{ provide: LoadingListener, useExisting: DatagridIfExpandService },
|
|
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
|
|
21880
|
+
], 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</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: "directive", type: ClrDatagridSelectionCellDirective, selector: ".datagrid-select" }] });
|
|
21796
21881
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridRow, decorators: [{
|
|
21797
21882
|
type: Component,
|
|
21798
21883
|
args: [{ selector: 'clr-dg-row', host: {
|
|
@@ -21805,7 +21890,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
21805
21890
|
DatagridIfExpandService,
|
|
21806
21891
|
{ provide: IfExpandService, useExisting: DatagridIfExpandService },
|
|
21807
21892
|
{ provide: LoadingListener, useExisting: DatagridIfExpandService },
|
|
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
|
|
21893
|
+
], 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</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" }]
|
|
21809
21894
|
}], ctorParameters: function () {
|
|
21810
21895
|
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: [{
|
|
21811
21896
|
type: Inject,
|
|
@@ -21955,6 +22040,7 @@ const defaultCdkFixedSizeVirtualScrollInputs = {
|
|
|
21955
22040
|
};
|
|
21956
22041
|
class ClrDatagridVirtualScrollDirective {
|
|
21957
22042
|
constructor(changeDetectorRef, iterableDiffers, items, ngZone, renderer2, templateRef, viewContainerRef, directionality, scrollDispatcher, viewportRuler, datagrid, columnsService, injector) {
|
|
22043
|
+
var _a;
|
|
21958
22044
|
this.changeDetectorRef = changeDetectorRef;
|
|
21959
22045
|
this.iterableDiffers = iterableDiffers;
|
|
21960
22046
|
this.items = items;
|
|
@@ -21970,9 +22056,11 @@ class ClrDatagridVirtualScrollDirective {
|
|
|
21970
22056
|
this.injector = injector;
|
|
21971
22057
|
this.renderedRangeChange = new EventEmitter();
|
|
21972
22058
|
this.persistItems = true;
|
|
22059
|
+
this.shouldUpdateAriaRowIndexes = false;
|
|
21973
22060
|
this._cdkFixedSizeVirtualScrollInputs = Object.assign({}, defaultCdkFixedSizeVirtualScrollInputs);
|
|
21974
22061
|
this.subscriptions = [];
|
|
21975
22062
|
this.topIndex = 0;
|
|
22063
|
+
// @deprecated remove the mutation observer when `datagrid-compact` class is deleted
|
|
21976
22064
|
this.mutationChanges = new MutationObserver((mutations) => {
|
|
21977
22065
|
mutations.forEach((mutation) => {
|
|
21978
22066
|
// it is possible this to be called twice because the old class is removed and the new added
|
|
@@ -21990,12 +22078,21 @@ class ClrDatagridVirtualScrollDirective {
|
|
|
21990
22078
|
this.datagridElementRef = datagrid.el;
|
|
21991
22079
|
// default
|
|
21992
22080
|
this.cdkVirtualForTemplateCacheSize = 20;
|
|
22081
|
+
const rowHeightToken = window.getComputedStyle(document.body).getPropertyValue('--clr-table-row-height');
|
|
22082
|
+
const rowHeightValue = +((_a = /calc\(([0-9]+) \* calc\(\(1rem \/ 20\) \* 1\)\)/.exec(rowHeightToken)) === null || _a === void 0 ? void 0 : _a[1]);
|
|
22083
|
+
if (rowHeightValue && this.itemSize > rowHeightValue) {
|
|
22084
|
+
this.itemSize = rowHeightValue;
|
|
22085
|
+
}
|
|
21993
22086
|
this.mutationChanges.observe(this.datagridElementRef.nativeElement, {
|
|
21994
22087
|
attributeFilter: ['class'],
|
|
21995
22088
|
attributeOldValue: true,
|
|
21996
22089
|
});
|
|
21997
22090
|
this.virtualScrollStrategy = new FixedSizeVirtualScrollStrategy(this._cdkFixedSizeVirtualScrollInputs.itemSize, this._cdkFixedSizeVirtualScrollInputs.minBufferPx, this._cdkFixedSizeVirtualScrollInputs.maxBufferPx);
|
|
21998
22091
|
}
|
|
22092
|
+
get totalContentHeight() {
|
|
22093
|
+
var _a;
|
|
22094
|
+
return ((_a = this.virtualScrollViewport) === null || _a === void 0 ? void 0 : _a._totalContentHeight) || '';
|
|
22095
|
+
}
|
|
21999
22096
|
get cdkVirtualForOf() {
|
|
22000
22097
|
return this.cdkVirtualForInputs.cdkVirtualForOf;
|
|
22001
22098
|
}
|
|
@@ -22075,12 +22172,14 @@ class ClrDatagridVirtualScrollDirective {
|
|
|
22075
22172
|
if (this.items.smart) {
|
|
22076
22173
|
this.cdkVirtualFor.cdkVirtualForOf = newItems;
|
|
22077
22174
|
}
|
|
22175
|
+
this.shouldUpdateAriaRowIndexes = true;
|
|
22078
22176
|
}), this.cdkVirtualFor.dataStream.subscribe(data => {
|
|
22079
22177
|
this.updateAriaRowCount(data.length);
|
|
22080
22178
|
}), this.virtualScrollViewport.scrolledIndexChange.subscribe(index => {
|
|
22081
22179
|
this.topIndex = index;
|
|
22082
22180
|
}), this.virtualScrollViewport.renderedRangeStream.subscribe(renderedRange => {
|
|
22083
22181
|
this.renderedRangeChange.emit(renderedRange);
|
|
22182
|
+
this.shouldUpdateAriaRowIndexes = true;
|
|
22084
22183
|
}), this.datagrid.refresh.subscribe(datagridState => {
|
|
22085
22184
|
if (datagridState.filters) {
|
|
22086
22185
|
this.scrollToIndex(0);
|
|
@@ -22092,7 +22191,10 @@ class ClrDatagridVirtualScrollDirective {
|
|
|
22092
22191
|
ngDoCheck() {
|
|
22093
22192
|
var _a;
|
|
22094
22193
|
(_a = this.cdkVirtualFor) === null || _a === void 0 ? void 0 : _a.ngDoCheck();
|
|
22095
|
-
this.
|
|
22194
|
+
if (this.shouldUpdateAriaRowIndexes) {
|
|
22195
|
+
this.updateAriaRowIndexes();
|
|
22196
|
+
this.shouldUpdateAriaRowIndexes = false;
|
|
22197
|
+
}
|
|
22096
22198
|
}
|
|
22097
22199
|
ngOnDestroy() {
|
|
22098
22200
|
var _a, _b, _c;
|
|
@@ -22145,38 +22247,17 @@ class ClrDatagridVirtualScrollDirective {
|
|
|
22145
22247
|
const rootElements = viewRef.rootNodes;
|
|
22146
22248
|
const datagridRowElement = rootElements.find(rowElement => rowElement.tagName === 'CLR-DG-ROW');
|
|
22147
22249
|
const rowRoleElement = datagridRowElement === null || datagridRowElement === void 0 ? void 0 : datagridRowElement.querySelector('[role="row"]');
|
|
22148
|
-
|
|
22149
|
-
rowRoleElement === null || rowRoleElement === void 0 ? void 0 : rowRoleElement.
|
|
22250
|
+
const newAriaRowIndex = (viewRef.context.index + 1).toString();
|
|
22251
|
+
if ((rowRoleElement === null || rowRoleElement === void 0 ? void 0 : rowRoleElement.getAttribute('aria-rowindex')) !== newAriaRowIndex) {
|
|
22252
|
+
// aria-rowindex should start with one, not zero, so we have to add one to the zero-based index
|
|
22253
|
+
rowRoleElement === null || rowRoleElement === void 0 ? void 0 : rowRoleElement.setAttribute('aria-rowindex', newAriaRowIndex);
|
|
22254
|
+
}
|
|
22150
22255
|
}
|
|
22151
22256
|
}
|
|
22152
22257
|
createVirtualScrollViewportForDatagrid(changeDetectorRef, ngZone, renderer2, directionality, scrollDispatcher, viewportRuler, datagridElementRef, virtualScrollStrategy) {
|
|
22153
|
-
const
|
|
22154
|
-
const datagridTableElement = datagridElementRef.nativeElement.querySelector('.datagrid-table');
|
|
22258
|
+
const datagridContentElement = datagridElementRef.nativeElement.querySelector('.datagrid-content');
|
|
22155
22259
|
const datagridRowsElement = datagridElementRef.nativeElement.querySelector('.datagrid-rows');
|
|
22156
|
-
const
|
|
22157
|
-
let topOffset = 0;
|
|
22158
|
-
let totalContentSize = 0;
|
|
22159
|
-
function updateDatagridElementStyles() {
|
|
22160
|
-
datagridRowsElement.style.transform = `translateY(${topOffset}px)`;
|
|
22161
|
-
datagridRowsElement.style.height = `${totalContentSize - topOffset}px`;
|
|
22162
|
-
}
|
|
22163
|
-
const virtualScrollViewport = createCdkVirtualScrollViewport(datagridDivElementRef, changeDetectorRef, ngZone, renderer2, virtualScrollStrategy, directionality, scrollDispatcher, viewportRuler, null);
|
|
22164
|
-
virtualScrollViewport._contentWrapper = {
|
|
22165
|
-
nativeElement: {
|
|
22166
|
-
style: {
|
|
22167
|
-
set transform(value) {
|
|
22168
|
-
var _a;
|
|
22169
|
-
topOffset = value === undefined ? 0 : +((_a = /translateY\(([0-9]+)px\)/.exec(value)) === null || _a === void 0 ? void 0 : _a[1]);
|
|
22170
|
-
updateDatagridElementStyles();
|
|
22171
|
-
},
|
|
22172
|
-
},
|
|
22173
|
-
},
|
|
22174
|
-
};
|
|
22175
|
-
virtualScrollViewport.setTotalContentSize = (value) => {
|
|
22176
|
-
totalContentSize = value;
|
|
22177
|
-
datagridTableElement.style.height = `${totalContentSize}px`;
|
|
22178
|
-
updateDatagridElementStyles();
|
|
22179
|
-
};
|
|
22260
|
+
const virtualScrollViewport = createCdkVirtualScrollViewport(new ElementRef(datagridContentElement), new ElementRef(datagridRowsElement), changeDetectorRef, ngZone, renderer2, virtualScrollStrategy, directionality, scrollDispatcher, viewportRuler, null);
|
|
22180
22261
|
return virtualScrollViewport;
|
|
22181
22262
|
}
|
|
22182
22263
|
}
|
|
@@ -22223,9 +22304,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
22223
22304
|
type: Input,
|
|
22224
22305
|
args: ['clrVirtualDataRange']
|
|
22225
22306
|
}] } });
|
|
22226
|
-
function createCdkVirtualScrollViewport(datagridDivElementRef, changeDetectorRef, ngZone, renderer2, virtualScrollStrategy, directionality, scrollDispatcher, viewportRuler, scrollable) {
|
|
22307
|
+
function createCdkVirtualScrollViewport(datagridDivElementRef, contentWrapper, changeDetectorRef, ngZone, renderer2, virtualScrollStrategy, directionality, scrollDispatcher, viewportRuler, scrollable) {
|
|
22308
|
+
let viewPort;
|
|
22227
22309
|
if (+VERSION.major < 19) {
|
|
22228
|
-
|
|
22310
|
+
viewPort = new CdkVirtualScrollViewport(datagridDivElementRef, changeDetectorRef, ngZone, virtualScrollStrategy, directionality, scrollDispatcher, viewportRuler, scrollable);
|
|
22229
22311
|
}
|
|
22230
22312
|
else {
|
|
22231
22313
|
const virtualScrollViewportInjector = Injector.create({
|
|
@@ -22243,8 +22325,10 @@ function createCdkVirtualScrollViewport(datagridDivElementRef, changeDetectorRef
|
|
|
22243
22325
|
{ provide: CdkVirtualScrollViewport, useClass: CdkVirtualScrollViewport },
|
|
22244
22326
|
],
|
|
22245
22327
|
});
|
|
22246
|
-
|
|
22328
|
+
viewPort = virtualScrollViewportInjector.get(CdkVirtualScrollViewport);
|
|
22247
22329
|
}
|
|
22330
|
+
viewPort._contentWrapper = contentWrapper;
|
|
22331
|
+
return viewPort;
|
|
22248
22332
|
}
|
|
22249
22333
|
function createCdkVirtualForOfDirective(viewContainerRef, templateRef, iterableDiffers, viewRepeater, virtualScrollViewport, ngZone) {
|
|
22250
22334
|
if (+VERSION.major < 19) {
|
|
@@ -22337,6 +22421,60 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
22337
22421
|
type: Injectable
|
|
22338
22422
|
}], ctorParameters: function () { return [{ type: FiltersProvider }, { type: Sort }, { type: Page }, { type: StateDebouncer }]; } });
|
|
22339
22423
|
|
|
22424
|
+
/*
|
|
22425
|
+
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
22426
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
22427
|
+
* This software is released under MIT license.
|
|
22428
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
22429
|
+
*/
|
|
22430
|
+
class DatagridCellRenderer {
|
|
22431
|
+
constructor(el, renderer, organizer) {
|
|
22432
|
+
this.el = el;
|
|
22433
|
+
this.renderer = renderer;
|
|
22434
|
+
this.subscriptions = [];
|
|
22435
|
+
this.subscriptions.push(organizer.filterRenderSteps(DatagridRenderStep.CLEAR_WIDTHS).subscribe(() => this.clearWidth()));
|
|
22436
|
+
}
|
|
22437
|
+
ngOnDestroy() {
|
|
22438
|
+
this.subscriptions.forEach(sub => sub.unsubscribe());
|
|
22439
|
+
if (this.stateSubscription) {
|
|
22440
|
+
this.stateSubscription.unsubscribe();
|
|
22441
|
+
}
|
|
22442
|
+
}
|
|
22443
|
+
resetState(state) {
|
|
22444
|
+
this.setWidth(state);
|
|
22445
|
+
this.setHidden(state);
|
|
22446
|
+
}
|
|
22447
|
+
setWidth(state) {
|
|
22448
|
+
if (state.strictWidth) {
|
|
22449
|
+
this.renderer.addClass(this.el.nativeElement, STRICT_WIDTH_CLASS);
|
|
22450
|
+
}
|
|
22451
|
+
else {
|
|
22452
|
+
this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);
|
|
22453
|
+
}
|
|
22454
|
+
this.renderer.setStyle(this.el.nativeElement, 'width', state.width + 'px');
|
|
22455
|
+
}
|
|
22456
|
+
setHidden(state) {
|
|
22457
|
+
if (state.hidden) {
|
|
22458
|
+
this.renderer.addClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);
|
|
22459
|
+
}
|
|
22460
|
+
else {
|
|
22461
|
+
this.renderer.removeClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);
|
|
22462
|
+
}
|
|
22463
|
+
}
|
|
22464
|
+
clearWidth() {
|
|
22465
|
+
this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);
|
|
22466
|
+
this.renderer.setStyle(this.el.nativeElement, 'width', null);
|
|
22467
|
+
}
|
|
22468
|
+
}
|
|
22469
|
+
DatagridCellRenderer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridCellRenderer, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DatagridRenderOrganizer }], target: i0.ɵɵFactoryTarget.Directive });
|
|
22470
|
+
DatagridCellRenderer.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: DatagridCellRenderer, selector: "clr-dg-cell", ngImport: i0 });
|
|
22471
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridCellRenderer, decorators: [{
|
|
22472
|
+
type: Directive,
|
|
22473
|
+
args: [{
|
|
22474
|
+
selector: 'clr-dg-cell',
|
|
22475
|
+
}]
|
|
22476
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DatagridRenderOrganizer }]; } });
|
|
22477
|
+
|
|
22340
22478
|
/*
|
|
22341
22479
|
* Copyright (c) 2016-2025 Broadcom. All Rights Reserved.
|
|
22342
22480
|
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
@@ -22541,13 +22679,18 @@ class ClrDatagrid {
|
|
|
22541
22679
|
});
|
|
22542
22680
|
this.updateDetailState();
|
|
22543
22681
|
// retain active cell when navigating with Up/Down Arrows, PageUp and PageDown buttons in virtual scroller
|
|
22544
|
-
if (this.virtualScroll) {
|
|
22545
|
-
|
|
22546
|
-
|
|
22547
|
-
|
|
22548
|
-
setTimeout(() => this.keyNavigation.setActiveCell(active));
|
|
22682
|
+
if (this.virtualScroll && this.activeCellCoords) {
|
|
22683
|
+
this.zone.runOutsideAngular(() => {
|
|
22684
|
+
const row = Array.from(this.rows).find(row => {
|
|
22685
|
+
return row.el.nativeElement.children[0].ariaRowIndex === this.activeCellCoords.ariaRowIndex;
|
|
22549
22686
|
});
|
|
22550
|
-
|
|
22687
|
+
if (!row) {
|
|
22688
|
+
return;
|
|
22689
|
+
}
|
|
22690
|
+
const activeCell = row.el.nativeElement.querySelectorAll(this.keyNavigation.config.keyGridCells)[this.activeCellCoords.x];
|
|
22691
|
+
this.keyNavigation.setActiveCell(activeCell);
|
|
22692
|
+
this.keyNavigation.focusElement(activeCell, { preventScroll: true });
|
|
22693
|
+
});
|
|
22551
22694
|
}
|
|
22552
22695
|
}));
|
|
22553
22696
|
}
|
|
@@ -22556,6 +22699,8 @@ class ClrDatagrid {
|
|
|
22556
22699
|
*/
|
|
22557
22700
|
ngAfterViewInit() {
|
|
22558
22701
|
this.keyNavigation.initializeKeyGrid(this.el.nativeElement);
|
|
22702
|
+
// the virtual scroll will handle the scrolling
|
|
22703
|
+
this.keyNavigation.preventScrollOnFocus = !!this.virtualScroll;
|
|
22559
22704
|
this.updateDetailState();
|
|
22560
22705
|
// TODO: determine if we can get rid of provider wiring in view init so that subscriptions can be done earlier
|
|
22561
22706
|
this.refresh.emit(this.stateProvider.state);
|
|
@@ -22635,6 +22780,25 @@ class ClrDatagrid {
|
|
|
22635
22780
|
}
|
|
22636
22781
|
}));
|
|
22637
22782
|
});
|
|
22783
|
+
if (this.virtualScroll) {
|
|
22784
|
+
this._subscriptions.push(fromEvent(this.contentWrapper.nativeElement, 'scroll').subscribe(() => {
|
|
22785
|
+
this.datagridHeader.nativeElement.scrollLeft = this.contentWrapper.nativeElement.scrollLeft;
|
|
22786
|
+
}), this.keyNavigation.nextCellCoordsEmitter.subscribe(cellCoords => {
|
|
22787
|
+
var _a;
|
|
22788
|
+
if (!(cellCoords === null || cellCoords === void 0 ? void 0 : cellCoords.ariaRowIndex)) {
|
|
22789
|
+
this.activeCellCoords = null;
|
|
22790
|
+
return;
|
|
22791
|
+
}
|
|
22792
|
+
if (cellCoords.ariaRowIndex === ((_a = this.activeCellCoords) === null || _a === void 0 ? void 0 : _a.ariaRowIndex)) {
|
|
22793
|
+
this.activeCellCoords = cellCoords;
|
|
22794
|
+
return;
|
|
22795
|
+
}
|
|
22796
|
+
this.activeCellCoords = cellCoords;
|
|
22797
|
+
// aria-rowindex is always + 1. Check virtual scroller updateAriaRowIndexes method.
|
|
22798
|
+
const rowIndex = Number(cellCoords.ariaRowIndex) - 1;
|
|
22799
|
+
this.virtualScroll.scrollToIndex(rowIndex);
|
|
22800
|
+
}));
|
|
22801
|
+
}
|
|
22638
22802
|
}
|
|
22639
22803
|
ngOnDestroy() {
|
|
22640
22804
|
this._subscriptions.forEach((sub) => sub.unsubscribe());
|
|
@@ -22678,7 +22842,7 @@ class ClrDatagrid {
|
|
|
22678
22842
|
}
|
|
22679
22843
|
}
|
|
22680
22844
|
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 });
|
|
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: [
|
|
22845
|
+
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", "class.datagrid-virtual-scroll": "!!virtualScroll" } }, providers: [
|
|
22682
22846
|
Selection,
|
|
22683
22847
|
Sort,
|
|
22684
22848
|
FiltersProvider,
|
|
@@ -22694,7 +22858,7 @@ ClrDatagrid.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
|
22694
22858
|
ColumnsService,
|
|
22695
22859
|
DisplayModeService,
|
|
22696
22860
|
KeyNavigationGridController,
|
|
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" }] });
|
|
22861
|
+
], 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, emitDistinctChangesOnly: false }], viewQueries: [{ propertyName: "datagrid", first: true, predicate: ["datagrid"], descendants: true, read: ElementRef }, { propertyName: "datagridTable", first: true, predicate: ["datagridTable"], descendants: true, read: ElementRef }, { propertyName: "datagridHeader", first: true, predicate: ["datagridHeader"], descendants: true, read: ElementRef }, { propertyName: "contentWrapper", first: true, predicate: ["contentWrapper"], 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\" #datagridHeader>\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 *ngIf=\"virtualScroll\" class=\"datagrid-row-sticky datagrid-row-sticky-scroll\">\n <div class=\"datagrid-column\"></div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"datagrid-content\" [class.datagrid-content-virtual]=\"virtualScroll\" #contentWrapper>\n <div\n *ngIf=\"virtualScroll\"\n class=\"datagrid-content-virtual-spacer\"\n [style.height]=\"virtualScroll?.totalContentHeight\"\n ></div>\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 </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" }] });
|
|
22698
22862
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagrid, decorators: [{
|
|
22699
22863
|
type: Component,
|
|
22700
22864
|
args: [{ selector: 'clr-datagrid', providers: [
|
|
@@ -22716,7 +22880,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
22716
22880
|
], host: {
|
|
22717
22881
|
'[class.datagrid-host]': 'true',
|
|
22718
22882
|
'[class.datagrid-detail-open]': 'detailService.isOpen',
|
|
22719
|
-
|
|
22883
|
+
'[class.datagrid-virtual-scroll]': '!!virtualScroll',
|
|
22884
|
+
}, 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\" #datagridHeader>\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 *ngIf=\"virtualScroll\" class=\"datagrid-row-sticky datagrid-row-sticky-scroll\">\n <div class=\"datagrid-column\"></div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"datagrid-content\" [class.datagrid-content-virtual]=\"virtualScroll\" #contentWrapper>\n <div\n *ngIf=\"virtualScroll\"\n class=\"datagrid-content-virtual-spacer\"\n [style.height]=\"virtualScroll?.totalContentHeight\"\n ></div>\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 </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" }]
|
|
22720
22885
|
}], ctorParameters: function () {
|
|
22721
22886
|
return [{ type: DatagridRenderOrganizer }, { type: Items }, { type: ExpandableRowsCount }, { type: Selection }, { type: RowActionService }, { type: StateProvider }, { type: DisplayModeService }, { type: i0.Renderer2 }, { type: DetailService }, { type: undefined, decorators: [{
|
|
22722
22887
|
type: Inject,
|
|
@@ -22762,13 +22927,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
22762
22927
|
args: [ClrDatagridColumn]
|
|
22763
22928
|
}], rows: [{
|
|
22764
22929
|
type: ContentChildren,
|
|
22765
|
-
args: [ClrDatagridRow]
|
|
22930
|
+
args: [ClrDatagridRow, { emitDistinctChangesOnly: false }]
|
|
22766
22931
|
}], datagrid: [{
|
|
22767
22932
|
type: ViewChild,
|
|
22768
22933
|
args: ['datagrid', { read: ElementRef }]
|
|
22769
22934
|
}], datagridTable: [{
|
|
22770
22935
|
type: ViewChild,
|
|
22771
22936
|
args: ['datagridTable', { read: ElementRef }]
|
|
22937
|
+
}], datagridHeader: [{
|
|
22938
|
+
type: ViewChild,
|
|
22939
|
+
args: ['datagridHeader', { read: ElementRef }]
|
|
22940
|
+
}], contentWrapper: [{
|
|
22941
|
+
type: ViewChild,
|
|
22942
|
+
args: ['contentWrapper', { read: ElementRef }]
|
|
22772
22943
|
}], scrollableColumns: [{
|
|
22773
22944
|
type: ViewChild,
|
|
22774
22945
|
args: ['scrollableColumns', { read: ViewContainerRef }]
|
|
@@ -23260,7 +23431,7 @@ ClrDatagridDetailHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
|
|
|
23260
23431
|
<div class="datagrid-detail-pane-close">
|
|
23261
23432
|
<button
|
|
23262
23433
|
type="button"
|
|
23263
|
-
class="btn btn-link"
|
|
23434
|
+
class="btn btn-icon btn-link"
|
|
23264
23435
|
(click)="detailService.close()"
|
|
23265
23436
|
[attr.aria-label]="commonStrings.keys.close"
|
|
23266
23437
|
>
|
|
@@ -23282,7 +23453,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
23282
23453
|
<div class="datagrid-detail-pane-close">
|
|
23283
23454
|
<button
|
|
23284
23455
|
type="button"
|
|
23285
|
-
class="btn btn-link"
|
|
23456
|
+
class="btn btn-icon btn-link"
|
|
23286
23457
|
(click)="detailService.close()"
|
|
23287
23458
|
[attr.aria-label]="commonStrings.keys.close"
|
|
23288
23459
|
>
|
|
@@ -23959,22 +24130,24 @@ ClrDatagridPagination.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
|
23959
24130
|
<span class="clr-sr-only">{{ commonStrings.keys.previousPage }}</span>
|
|
23960
24131
|
<cds-icon shape="angle" direction="left"></cds-icon>
|
|
23961
24132
|
</button>
|
|
23962
|
-
<
|
|
23963
|
-
|
|
23964
|
-
|
|
23965
|
-
|
|
23966
|
-
|
|
23967
|
-
|
|
23968
|
-
|
|
23969
|
-
|
|
23970
|
-
|
|
23971
|
-
|
|
23972
|
-
|
|
23973
|
-
|
|
23974
|
-
<
|
|
23975
|
-
|
|
24133
|
+
<div class="pagination-pages">
|
|
24134
|
+
<input
|
|
24135
|
+
*ngIf="!disableCurrentPageInput; else readOnly"
|
|
24136
|
+
#currentPageInput
|
|
24137
|
+
type="text"
|
|
24138
|
+
class="pagination-current clr-input"
|
|
24139
|
+
[size]="page.last.toString().length"
|
|
24140
|
+
[value]="page.current"
|
|
24141
|
+
(keydown.enter)="updateCurrentPage($event)"
|
|
24142
|
+
(blur)="verifyCurrentPage($event)"
|
|
24143
|
+
[attr.aria-label]="commonStrings.keys.currentPage"
|
|
24144
|
+
/>
|
|
24145
|
+
<ng-template #readOnly>
|
|
24146
|
+
<span>{{ page.current }}</span>
|
|
24147
|
+
</ng-template>
|
|
23976
24148
|
|
|
23977
|
-
|
|
24149
|
+
/ <span [attr.aria-label]="commonStrings.keys.totalPages">{{ page.last }}</span>
|
|
24150
|
+
</div>
|
|
23978
24151
|
<button
|
|
23979
24152
|
type="button"
|
|
23980
24153
|
class="pagination-next"
|
|
@@ -24059,22 +24232,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
24059
24232
|
<span class="clr-sr-only">{{ commonStrings.keys.previousPage }}</span>
|
|
24060
24233
|
<cds-icon shape="angle" direction="left"></cds-icon>
|
|
24061
24234
|
</button>
|
|
24062
|
-
<
|
|
24063
|
-
|
|
24064
|
-
|
|
24065
|
-
|
|
24066
|
-
|
|
24067
|
-
|
|
24068
|
-
|
|
24069
|
-
|
|
24070
|
-
|
|
24071
|
-
|
|
24072
|
-
|
|
24073
|
-
|
|
24074
|
-
<
|
|
24075
|
-
|
|
24235
|
+
<div class="pagination-pages">
|
|
24236
|
+
<input
|
|
24237
|
+
*ngIf="!disableCurrentPageInput; else readOnly"
|
|
24238
|
+
#currentPageInput
|
|
24239
|
+
type="text"
|
|
24240
|
+
class="pagination-current clr-input"
|
|
24241
|
+
[size]="page.last.toString().length"
|
|
24242
|
+
[value]="page.current"
|
|
24243
|
+
(keydown.enter)="updateCurrentPage($event)"
|
|
24244
|
+
(blur)="verifyCurrentPage($event)"
|
|
24245
|
+
[attr.aria-label]="commonStrings.keys.currentPage"
|
|
24246
|
+
/>
|
|
24247
|
+
<ng-template #readOnly>
|
|
24248
|
+
<span>{{ page.current }}</span>
|
|
24249
|
+
</ng-template>
|
|
24076
24250
|
|
|
24077
|
-
|
|
24251
|
+
/ <span [attr.aria-label]="commonStrings.keys.totalPages">{{ page.last }}</span>
|
|
24252
|
+
</div>
|
|
24078
24253
|
<button
|
|
24079
24254
|
type="button"
|
|
24080
24255
|
class="pagination-next"
|
|
@@ -25020,7 +25195,7 @@ ClrStackBlock.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version:
|
|
|
25020
25195
|
[attr.aria-expanded]="ariaExpanded"
|
|
25021
25196
|
[attr.aria-controls]="getStackChildrenId()"
|
|
25022
25197
|
>
|
|
25023
|
-
<cds-icon shape="angle" class="stack-block-caret"
|
|
25198
|
+
<cds-icon shape="angle" class="stack-block-caret" [attr.direction]="caretDirection"></cds-icon>
|
|
25024
25199
|
<span class="clr-sr-only" *ngIf="getChangedValue">{{ commonStrings.keys.stackViewChanged }}</span>
|
|
25025
25200
|
<div class="stack-view-key">
|
|
25026
25201
|
<!-- This structure changed to fix #3567 and the a11y request was to move away from dl's -->
|
|
@@ -25063,7 +25238,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
25063
25238
|
[attr.aria-expanded]="ariaExpanded"
|
|
25064
25239
|
[attr.aria-controls]="getStackChildrenId()"
|
|
25065
25240
|
>
|
|
25066
|
-
<cds-icon shape="angle" class="stack-block-caret"
|
|
25241
|
+
<cds-icon shape="angle" class="stack-block-caret" [attr.direction]="caretDirection"></cds-icon>
|
|
25067
25242
|
<span class="clr-sr-only" *ngIf="getChangedValue">{{ commonStrings.keys.stackViewChanged }}</span>
|
|
25068
25243
|
<div class="stack-view-key">
|
|
25069
25244
|
<!-- This structure changed to fix #3567 and the a11y request was to move away from dl's -->
|
|
@@ -26655,10 +26830,10 @@ class ClrAlert {
|
|
|
26655
26830
|
}
|
|
26656
26831
|
}
|
|
26657
26832
|
ClrAlert.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrAlert, deps: [{ token: AlertIconAndTypesService }, { token: i0.ChangeDetectorRef }, { token: MultiAlertService, optional: true }, { token: ClrCommonStringsService }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
26658
|
-
ClrAlert.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrAlert, selector: "clr-alert", inputs: { isSmall: ["clrAlertSizeSmall", "isSmall"], closable: ["clrAlertClosable", "closable"], isAppLevel: ["clrAlertAppLevel", "isAppLevel"], clrCloseButtonAriaLabel: "clrCloseButtonAriaLabel", isLightweight: ["clrAlertLightweight", "isLightweight"], alertType: ["clrAlertType", "alertType"], alertIconShape: ["clrAlertIcon", "alertIconShape"], closed: ["clrAlertClosed", "closed"] }, outputs: { _closedChanged: "clrAlertClosedChange" }, providers: [AlertIconAndTypesService], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div\n *ngIf=\"!_closed\"\n class=\"alert\"\n [ngClass]=\"alertClass\"\n [class.alert-sm]=\"isSmall\"\n [class.alert-lightweight]=\"isLightweight\"\n [class.alert-app-level]=\"isAppLevel\"\n>\n <div class=\"alert-items\">\n <ng-content></ng-content>\n </div>\n <button type=\"button\" class=\"close\" *ngIf=\"closable\" (click)=\"close()\" [attr.aria-label]=\"clrCloseButtonAriaLabel\">\n <cds-icon shape=\"
|
|
26833
|
+
ClrAlert.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrAlert, selector: "clr-alert", inputs: { isSmall: ["clrAlertSizeSmall", "isSmall"], closable: ["clrAlertClosable", "closable"], isAppLevel: ["clrAlertAppLevel", "isAppLevel"], clrCloseButtonAriaLabel: "clrCloseButtonAriaLabel", isLightweight: ["clrAlertLightweight", "isLightweight"], alertType: ["clrAlertType", "alertType"], alertIconShape: ["clrAlertIcon", "alertIconShape"], closed: ["clrAlertClosed", "closed"] }, outputs: { _closedChanged: "clrAlertClosedChange" }, providers: [AlertIconAndTypesService], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div\n *ngIf=\"!_closed\"\n class=\"alert\"\n [ngClass]=\"alertClass\"\n [class.alert-sm]=\"isSmall\"\n [class.alert-lightweight]=\"isLightweight\"\n [class.alert-app-level]=\"isAppLevel\"\n>\n <div class=\"alert-items\">\n <ng-content></ng-content>\n </div>\n <button type=\"button\" class=\"close\" *ngIf=\"closable\" (click)=\"close()\" [attr.aria-label]=\"clrCloseButtonAriaLabel\">\n <cds-icon shape=\"times\"></cds-icon>\n </button>\n</div>\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: CdsIconCustomTag, selector: "cds-icon" }] });
|
|
26659
26834
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrAlert, decorators: [{
|
|
26660
26835
|
type: Component,
|
|
26661
|
-
args: [{ selector: 'clr-alert', providers: [AlertIconAndTypesService], template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div\n *ngIf=\"!_closed\"\n class=\"alert\"\n [ngClass]=\"alertClass\"\n [class.alert-sm]=\"isSmall\"\n [class.alert-lightweight]=\"isLightweight\"\n [class.alert-app-level]=\"isAppLevel\"\n>\n <div class=\"alert-items\">\n <ng-content></ng-content>\n </div>\n <button type=\"button\" class=\"close\" *ngIf=\"closable\" (click)=\"close()\" [attr.aria-label]=\"clrCloseButtonAriaLabel\">\n <cds-icon shape=\"
|
|
26836
|
+
args: [{ selector: 'clr-alert', providers: [AlertIconAndTypesService], template: "<!--\n ~ Copyright (c) 2016-2025 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div\n *ngIf=\"!_closed\"\n class=\"alert\"\n [ngClass]=\"alertClass\"\n [class.alert-sm]=\"isSmall\"\n [class.alert-lightweight]=\"isLightweight\"\n [class.alert-app-level]=\"isAppLevel\"\n>\n <div class=\"alert-items\">\n <ng-content></ng-content>\n </div>\n <button type=\"button\" class=\"close\" *ngIf=\"closable\" (click)=\"close()\" [attr.aria-label]=\"clrCloseButtonAriaLabel\">\n <cds-icon shape=\"times\"></cds-icon>\n </button>\n</div>\n" }]
|
|
26662
26837
|
}], ctorParameters: function () {
|
|
26663
26838
|
return [{ type: AlertIconAndTypesService }, { type: i0.ChangeDetectorRef }, { type: MultiAlertService, decorators: [{
|
|
26664
26839
|
type: Optional
|
|
@@ -27112,7 +27287,7 @@ class ClrModal {
|
|
|
27112
27287
|
}
|
|
27113
27288
|
}
|
|
27114
27289
|
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 });
|
|
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
|
|
27290
|
+
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 [@fade] *ngIf=\"backdrop\" class=\"modal-backdrop\" aria-hidden=\"true\" (click)=\"backdropClick()\"></div>\n</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: [
|
|
27116
27291
|
trigger('fadeMove', [
|
|
27117
27292
|
transition('* => fadeDown', [
|
|
27118
27293
|
style({ opacity: 0, transform: 'translate(0, -25%)' }),
|
|
@@ -27123,6 +27298,8 @@ ClrModal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.
|
|
|
27123
27298
|
]),
|
|
27124
27299
|
transition('* => fadeLeft', [style({ opacity: 0, transform: 'translate(25%, 0)' }), animate('0.2s ease-in-out')]),
|
|
27125
27300
|
transition('fadeLeft => *', [animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(25%, 0)' }))]),
|
|
27301
|
+
transition('* => fadeUp', [style({ opacity: 0, transform: 'translate(0, 50%)' }), animate('0.2s ease-in-out')]),
|
|
27302
|
+
transition('fadeUp => *', [animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(0, 50%)' }))]),
|
|
27126
27303
|
]),
|
|
27127
27304
|
trigger('fade', [
|
|
27128
27305
|
transition('void => *', [style({ opacity: 0 }), animate('0.2s ease-in-out', style({ opacity: 0.85 }))]),
|
|
@@ -27142,12 +27319,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
27142
27319
|
]),
|
|
27143
27320
|
transition('* => fadeLeft', [style({ opacity: 0, transform: 'translate(25%, 0)' }), animate('0.2s ease-in-out')]),
|
|
27144
27321
|
transition('fadeLeft => *', [animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(25%, 0)' }))]),
|
|
27322
|
+
transition('* => fadeUp', [style({ opacity: 0, transform: 'translate(0, 50%)' }), animate('0.2s ease-in-out')]),
|
|
27323
|
+
transition('fadeUp => *', [animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(0, 50%)' }))]),
|
|
27145
27324
|
]),
|
|
27146
27325
|
trigger('fade', [
|
|
27147
27326
|
transition('void => *', [style({ opacity: 0 }), animate('0.2s ease-in-out', style({ opacity: 0.85 }))]),
|
|
27148
27327
|
transition('* => void', [animate('0.2s ease-in-out', style({ opacity: 0 }))]),
|
|
27149
27328
|
]),
|
|
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
|
|
27329
|
+
], 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 [@fade] *ngIf=\"backdrop\" class=\"modal-backdrop\" aria-hidden=\"true\" (click)=\"backdropClick()\"></div>\n</div>\n", styles: [":host{display:none}:host.open{display:inline}\n"] }]
|
|
27151
27330
|
}], ctorParameters: function () { return [{ type: ScrollingService }, { type: ClrCommonStringsService }, { type: ModalStackService }, { type: ClrModalConfigurationService }]; }, propDecorators: { title: [{
|
|
27152
27331
|
type: ViewChild,
|
|
27153
27332
|
args: ['title']
|
|
@@ -27264,15 +27443,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
27264
27443
|
* This software is released under MIT license.
|
|
27265
27444
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
27266
27445
|
*/
|
|
27267
|
-
class
|
|
27446
|
+
class ClrModalHostComponent {
|
|
27268
27447
|
}
|
|
27269
|
-
|
|
27270
|
-
|
|
27271
|
-
|
|
27272
|
-
|
|
27448
|
+
ClrModalHostComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalHostComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
27449
|
+
ClrModalHostComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrModalHostComponent, selector: "[clrModalHost]", host: { properties: { "class.clr-modal-host": "true" } }, ngImport: i0, template: `
|
|
27450
|
+
<div class="clr-modal-host-scrollable">
|
|
27451
|
+
<ng-content></ng-content>
|
|
27452
|
+
</div>
|
|
27453
|
+
`, isInline: true });
|
|
27454
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalHostComponent, decorators: [{
|
|
27455
|
+
type: Component,
|
|
27273
27456
|
args: [{
|
|
27274
27457
|
selector: '[clrModalHost]',
|
|
27275
27458
|
host: { '[class.clr-modal-host]': 'true' },
|
|
27459
|
+
template: `
|
|
27460
|
+
<div class="clr-modal-host-scrollable">
|
|
27461
|
+
<ng-content></ng-content>
|
|
27462
|
+
</div>
|
|
27463
|
+
`,
|
|
27276
27464
|
}]
|
|
27277
27465
|
}] });
|
|
27278
27466
|
|
|
@@ -27282,14 +27470,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
27282
27470
|
* This software is released under MIT license.
|
|
27283
27471
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
27284
27472
|
*/
|
|
27285
|
-
const CLR_MODAL_DIRECTIVES = [ClrModal, ClrModalBody,
|
|
27473
|
+
const CLR_MODAL_DIRECTIVES = [ClrModal, ClrModalBody, ClrModalHostComponent];
|
|
27286
27474
|
class ClrModalModule {
|
|
27287
27475
|
constructor() {
|
|
27288
27476
|
ClarityIcons.addIcons(windowCloseIcon);
|
|
27289
27477
|
}
|
|
27290
27478
|
}
|
|
27291
27479
|
ClrModalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
27292
|
-
ClrModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: ClrModalModule, declarations: [ClrModal, ClrModalBody,
|
|
27480
|
+
ClrModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: ClrModalModule, declarations: [ClrModal, ClrModalBody, ClrModalHostComponent], imports: [CommonModule, CdkTrapFocusModule, ClrIconModule], exports: [ClrModal, ClrModalBody, ClrModalHostComponent, ClrIconModule] });
|
|
27293
27481
|
ClrModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalModule, imports: [CommonModule, CdkTrapFocusModule, ClrIconModule, ClrIconModule] });
|
|
27294
27482
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalModule, decorators: [{
|
|
27295
27483
|
type: NgModule,
|
|
@@ -27311,16 +27499,29 @@ class ClrSidePanel {
|
|
|
27311
27499
|
this.element = element;
|
|
27312
27500
|
this.configuration = configuration;
|
|
27313
27501
|
this.commonStrings = commonStrings;
|
|
27314
|
-
this._open = false;
|
|
27315
27502
|
this.openChange = new EventEmitter(false);
|
|
27316
27503
|
this.skipAnimation = false;
|
|
27317
27504
|
this.staticBackdrop = false;
|
|
27505
|
+
this.closable = true;
|
|
27318
27506
|
this.preventClose = false;
|
|
27319
27507
|
this.altClose = new EventEmitter(false);
|
|
27320
27508
|
this._pinnable = false;
|
|
27321
27509
|
this._pinned = false;
|
|
27510
|
+
this._position = 'right';
|
|
27511
|
+
this.__open = false;
|
|
27322
27512
|
this._size = 'md';
|
|
27323
27513
|
}
|
|
27514
|
+
get _open() {
|
|
27515
|
+
return this.__open;
|
|
27516
|
+
}
|
|
27517
|
+
set _open(open) {
|
|
27518
|
+
if (open !== this.__open) {
|
|
27519
|
+
this.__open = open;
|
|
27520
|
+
if (this.pinned) {
|
|
27521
|
+
this.updateModalState();
|
|
27522
|
+
}
|
|
27523
|
+
}
|
|
27524
|
+
}
|
|
27324
27525
|
get size() {
|
|
27325
27526
|
return this._size;
|
|
27326
27527
|
}
|
|
@@ -27330,9 +27531,22 @@ class ClrSidePanel {
|
|
|
27330
27531
|
}
|
|
27331
27532
|
if (this._size !== value) {
|
|
27332
27533
|
this._size = value;
|
|
27333
|
-
if (this.
|
|
27334
|
-
this.
|
|
27335
|
-
|
|
27534
|
+
if (this.pinned) {
|
|
27535
|
+
this.updateModalState();
|
|
27536
|
+
}
|
|
27537
|
+
}
|
|
27538
|
+
}
|
|
27539
|
+
get position() {
|
|
27540
|
+
return this._position;
|
|
27541
|
+
}
|
|
27542
|
+
set position(position) {
|
|
27543
|
+
if (position && position !== this._position) {
|
|
27544
|
+
this._position = position;
|
|
27545
|
+
if (this._position === 'right') {
|
|
27546
|
+
this.configuration.fadeMove = 'fadeLeft';
|
|
27547
|
+
}
|
|
27548
|
+
else if (this._position === 'bottom') {
|
|
27549
|
+
this.configuration.fadeMove = 'fadeUp';
|
|
27336
27550
|
}
|
|
27337
27551
|
}
|
|
27338
27552
|
}
|
|
@@ -27340,17 +27554,9 @@ class ClrSidePanel {
|
|
|
27340
27554
|
return this._pinned;
|
|
27341
27555
|
}
|
|
27342
27556
|
set pinned(pinned) {
|
|
27343
|
-
|
|
27344
|
-
|
|
27345
|
-
|
|
27346
|
-
this.originalStopClose = this.modal.stopClose;
|
|
27347
|
-
this.modal.stopClose = true;
|
|
27348
|
-
this.displaySideBySide();
|
|
27349
|
-
}
|
|
27350
|
-
else {
|
|
27351
|
-
this.modal.stopClose = this.originalStopClose;
|
|
27352
|
-
this.displayOverlapping();
|
|
27353
|
-
}
|
|
27557
|
+
this._pinned = pinned;
|
|
27558
|
+
if (this.modal) {
|
|
27559
|
+
this.updateModalState();
|
|
27354
27560
|
}
|
|
27355
27561
|
}
|
|
27356
27562
|
get clrSidePanelBackdrop() {
|
|
@@ -27367,28 +27573,37 @@ class ClrSidePanel {
|
|
|
27367
27573
|
set clrSidePanelPinnable(pinnable) {
|
|
27368
27574
|
this._pinnable = pinnable;
|
|
27369
27575
|
}
|
|
27576
|
+
get modal() {
|
|
27577
|
+
return this._modal;
|
|
27578
|
+
}
|
|
27579
|
+
set modal(modal) {
|
|
27580
|
+
this._modal = modal;
|
|
27581
|
+
this.originalStopClose = this.modal.stopClose;
|
|
27582
|
+
this.updateModalState();
|
|
27583
|
+
}
|
|
27370
27584
|
get hostElement() {
|
|
27371
27585
|
return this.element.nativeElement.closest('.clr-modal-host') || document.body;
|
|
27372
27586
|
}
|
|
27587
|
+
get bottomPositionCssClass() {
|
|
27588
|
+
return this.position === 'bottom';
|
|
27589
|
+
}
|
|
27373
27590
|
ngOnInit() {
|
|
27374
27591
|
this.configuration.fadeMove = 'fadeLeft';
|
|
27375
|
-
|
|
27376
|
-
|
|
27377
|
-
if (changes && Object.prototype.hasOwnProperty.call(changes, '_open')) {
|
|
27378
|
-
if (changes._open.currentValue) {
|
|
27379
|
-
if (this.clrSidePanelPinnable && this.pinned) {
|
|
27380
|
-
this.displaySideBySide();
|
|
27381
|
-
}
|
|
27382
|
-
}
|
|
27383
|
-
else {
|
|
27384
|
-
if (this.clrSidePanelPinnable && this.pinned) {
|
|
27385
|
-
this.displayOverlapping();
|
|
27386
|
-
}
|
|
27387
|
-
}
|
|
27592
|
+
if (this.position === 'bottom') {
|
|
27593
|
+
this.configuration.fadeMove = 'fadeUp';
|
|
27388
27594
|
}
|
|
27389
27595
|
}
|
|
27390
27596
|
ngOnDestroy() {
|
|
27391
|
-
this.
|
|
27597
|
+
this.cleanupPinnedClasses();
|
|
27598
|
+
}
|
|
27599
|
+
handleModalOpen(open) {
|
|
27600
|
+
if (open) {
|
|
27601
|
+
this.updateModalState();
|
|
27602
|
+
}
|
|
27603
|
+
else {
|
|
27604
|
+
this.cleanupPinnedClasses();
|
|
27605
|
+
}
|
|
27606
|
+
this.openChange.emit(open);
|
|
27392
27607
|
}
|
|
27393
27608
|
open() {
|
|
27394
27609
|
this.modal.open();
|
|
@@ -27406,28 +27621,41 @@ class ClrSidePanel {
|
|
|
27406
27621
|
this.modal.close();
|
|
27407
27622
|
}
|
|
27408
27623
|
}
|
|
27409
|
-
|
|
27410
|
-
|
|
27624
|
+
updateModalState() {
|
|
27625
|
+
if (!this.modal) {
|
|
27626
|
+
return;
|
|
27627
|
+
}
|
|
27628
|
+
if (this.pinned) {
|
|
27629
|
+
this.modal.stopClose = true;
|
|
27630
|
+
this.updatePinnedClasses();
|
|
27631
|
+
}
|
|
27632
|
+
else {
|
|
27633
|
+
this.modal.stopClose = this.originalStopClose;
|
|
27634
|
+
this.cleanupPinnedClasses();
|
|
27635
|
+
}
|
|
27411
27636
|
}
|
|
27412
|
-
|
|
27413
|
-
this.hostElement.
|
|
27414
|
-
|
|
27415
|
-
|
|
27416
|
-
|
|
27637
|
+
cleanupPinnedClasses() {
|
|
27638
|
+
[this.hostElement, document.body].forEach(host => {
|
|
27639
|
+
host.classList.forEach(className => {
|
|
27640
|
+
if (className.startsWith('clr-side-panel-pinned-')) {
|
|
27641
|
+
host.classList.remove(className);
|
|
27642
|
+
}
|
|
27643
|
+
});
|
|
27417
27644
|
});
|
|
27418
27645
|
}
|
|
27646
|
+
updatePinnedClasses() {
|
|
27647
|
+
this.cleanupPinnedClasses();
|
|
27648
|
+
this.hostElement.classList.add(`clr-side-panel-pinned-${this.position}-${this.size}`);
|
|
27649
|
+
}
|
|
27419
27650
|
}
|
|
27420
27651
|
ClrSidePanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrSidePanel, deps: [{ token: i0.ElementRef }, { token: ClrModalConfigurationService }, { token: ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
27421
|
-
ClrSidePanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrSidePanel, selector: "clr-side-panel", inputs: {
|
|
27652
|
+
ClrSidePanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrSidePanel, selector: "clr-side-panel", inputs: { closeButtonAriaLabel: ["clrSidePanelCloseButtonAriaLabel", "closeButtonAriaLabel"], skipAnimation: ["clrSidePanelSkipAnimation", "skipAnimation"], labelledById: ["clrSidePanelLabelledById", "labelledById"], staticBackdrop: ["clrSidePanelStaticBackdrop", "staticBackdrop"], closable: ["clrSidePanelClosable", "closable"], preventClose: ["clrSidePanelPreventClose", "preventClose"], _open: ["clrSidePanelOpen", "_open"], size: ["clrSidePanelSize", "size"], position: ["clrSidePanelPosition", "position"], pinned: ["clrSidePanelPinned", "pinned"], clrSidePanelBackdrop: "clrSidePanelBackdrop", clrSidePanelPinnable: "clrSidePanelPinnable" }, outputs: { openChange: "clrSidePanelOpenChange", altClose: "clrSidePanelAlternateClose" }, host: { listeners: { "document:pointerup": "documentClick($event)" }, properties: { "class.side-panel": "true", "class.side-panel-bottom": "this.bottomPositionCssClass" } }, viewQueries: [{ propertyName: "modal", first: true, predicate: ClrModal, descendants: true }], ngImport: i0, template: "<clr-modal\n [clrModalOpen]=\"_open\"\n (clrModalOpenChange)=\"handleModalOpen($event)\"\n [clrModalCloseButtonAriaLabel]=\"closeButtonAriaLabel\"\n [clrModalSize]=\"size\"\n [clrModalSkipAnimation]=\"skipAnimation\"\n [clrModalStaticBackdrop]=\"staticBackdrop\"\n [clrModalLabelledById]=\"labelledById\"\n [clrModalPreventClose]=\"preventClose\"\n [clrModalClosable]=\"closable\"\n (clrModalAlternateClose)=\"altClose.emit($event)\"\n [clrModalOverrideScrollService]=\"true\"\n>\n <button\n type=\"button\"\n [attr.aria-label]=\"commonStrings.keys.sidePanelPin\"\n class=\"leading-button pinnable\"\n *ngIf=\"clrSidePanelPinnable\"\n (click)=\"togglePinned()\"\n >\n <cds-icon [attr.shape]=\"pinned ? 'unpin' : 'pin'\"></cds-icon>\n </button>\n <div class=\"modal-title\"><ng-content select=\".side-panel-title\"></ng-content></div>\n <div class=\"modal-body\"><ng-content select=\".side-panel-body\"></ng-content></div>\n <div class=\"modal-footer\"><ng-content select=\".side-panel-footer\"></ng-content></div>\n</clr-modal>\n", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { 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" }] });
|
|
27422
27653
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrSidePanel, decorators: [{
|
|
27423
27654
|
type: Component,
|
|
27424
27655
|
args: [{ selector: 'clr-side-panel', host: {
|
|
27425
27656
|
'[class.side-panel]': 'true',
|
|
27426
|
-
}, template: "<clr-modal\n [clrModalOpen]=\"_open\"\n (clrModalOpenChange)=\"
|
|
27427
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ClrModalConfigurationService }, { type: ClrCommonStringsService }]; }, propDecorators: {
|
|
27428
|
-
type: Input,
|
|
27429
|
-
args: ['clrSidePanelOpen']
|
|
27430
|
-
}], openChange: [{
|
|
27657
|
+
}, template: "<clr-modal\n [clrModalOpen]=\"_open\"\n (clrModalOpenChange)=\"handleModalOpen($event)\"\n [clrModalCloseButtonAriaLabel]=\"closeButtonAriaLabel\"\n [clrModalSize]=\"size\"\n [clrModalSkipAnimation]=\"skipAnimation\"\n [clrModalStaticBackdrop]=\"staticBackdrop\"\n [clrModalLabelledById]=\"labelledById\"\n [clrModalPreventClose]=\"preventClose\"\n [clrModalClosable]=\"closable\"\n (clrModalAlternateClose)=\"altClose.emit($event)\"\n [clrModalOverrideScrollService]=\"true\"\n>\n <button\n type=\"button\"\n [attr.aria-label]=\"commonStrings.keys.sidePanelPin\"\n class=\"leading-button pinnable\"\n *ngIf=\"clrSidePanelPinnable\"\n (click)=\"togglePinned()\"\n >\n <cds-icon [attr.shape]=\"pinned ? 'unpin' : 'pin'\"></cds-icon>\n </button>\n <div class=\"modal-title\"><ng-content select=\".side-panel-title\"></ng-content></div>\n <div class=\"modal-body\"><ng-content select=\".side-panel-body\"></ng-content></div>\n <div class=\"modal-footer\"><ng-content select=\".side-panel-footer\"></ng-content></div>\n</clr-modal>\n" }]
|
|
27658
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ClrModalConfigurationService }, { type: ClrCommonStringsService }]; }, propDecorators: { openChange: [{
|
|
27431
27659
|
type: Output,
|
|
27432
27660
|
args: ['clrSidePanelOpenChange']
|
|
27433
27661
|
}], closeButtonAriaLabel: [{
|
|
@@ -27442,22 +27670,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
27442
27670
|
}], staticBackdrop: [{
|
|
27443
27671
|
type: Input,
|
|
27444
27672
|
args: ['clrSidePanelStaticBackdrop']
|
|
27673
|
+
}], closable: [{
|
|
27674
|
+
type: Input,
|
|
27675
|
+
args: ['clrSidePanelClosable']
|
|
27445
27676
|
}], preventClose: [{
|
|
27446
27677
|
type: Input,
|
|
27447
27678
|
args: ['clrSidePanelPreventClose']
|
|
27448
27679
|
}], altClose: [{
|
|
27449
27680
|
type: Output,
|
|
27450
27681
|
args: ['clrSidePanelAlternateClose']
|
|
27451
|
-
}],
|
|
27452
|
-
type:
|
|
27453
|
-
args: [
|
|
27682
|
+
}], _open: [{
|
|
27683
|
+
type: Input,
|
|
27684
|
+
args: ['clrSidePanelOpen']
|
|
27454
27685
|
}], size: [{
|
|
27455
27686
|
type: Input,
|
|
27456
27687
|
args: ['clrSidePanelSize']
|
|
27688
|
+
}], position: [{
|
|
27689
|
+
type: Input,
|
|
27690
|
+
args: ['clrSidePanelPosition']
|
|
27691
|
+
}], pinned: [{
|
|
27692
|
+
type: Input,
|
|
27693
|
+
args: ['clrSidePanelPinned']
|
|
27457
27694
|
}], clrSidePanelBackdrop: [{
|
|
27458
27695
|
type: Input
|
|
27459
27696
|
}], clrSidePanelPinnable: [{
|
|
27460
27697
|
type: Input
|
|
27698
|
+
}], modal: [{
|
|
27699
|
+
type: ViewChild,
|
|
27700
|
+
args: [ClrModal]
|
|
27701
|
+
}], bottomPositionCssClass: [{
|
|
27702
|
+
type: HostBinding,
|
|
27703
|
+
args: ['class.side-panel-bottom']
|
|
27461
27704
|
}], documentClick: [{
|
|
27462
27705
|
type: HostListener,
|
|
27463
27706
|
args: ['document:pointerup', ['$event']]
|
|
@@ -29832,10 +30075,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
29832
30075
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
29833
30076
|
*/
|
|
29834
30077
|
class ClrWizardStepnavItem {
|
|
29835
|
-
constructor(navService, pageCollection, commonStrings) {
|
|
30078
|
+
constructor(navService, pageCollection, commonStrings, elementRef) {
|
|
29836
30079
|
this.navService = navService;
|
|
29837
30080
|
this.pageCollection = pageCollection;
|
|
29838
30081
|
this.commonStrings = commonStrings;
|
|
30082
|
+
this.elementRef = elementRef;
|
|
30083
|
+
/**
|
|
30084
|
+
* This is used to prevent the steps from scrolling as the user clicks on the steps.
|
|
30085
|
+
*/
|
|
30086
|
+
this.skipNextScroll = false;
|
|
29839
30087
|
}
|
|
29840
30088
|
get id() {
|
|
29841
30089
|
this.pageGuard();
|
|
@@ -29881,12 +30129,43 @@ class ClrWizardStepnavItem {
|
|
|
29881
30129
|
const allIds = this.isComplete ? [this.stepIconId, ...textIds] : textIds;
|
|
29882
30130
|
return allIds.join(' ');
|
|
29883
30131
|
}
|
|
30132
|
+
get icon() {
|
|
30133
|
+
if (this.isCurrent) {
|
|
30134
|
+
return {
|
|
30135
|
+
shape: 'dot-circle',
|
|
30136
|
+
label: this.commonStrings.keys.wizardStepCurrent || this.commonStrings.keys.timelineStepCurrent,
|
|
30137
|
+
};
|
|
30138
|
+
}
|
|
30139
|
+
else if (this.hasError) {
|
|
30140
|
+
return {
|
|
30141
|
+
shape: 'error-standard',
|
|
30142
|
+
label: this.commonStrings.keys.wizardStepError || this.commonStrings.keys.timelineStepError,
|
|
30143
|
+
};
|
|
30144
|
+
}
|
|
30145
|
+
else if (this.isComplete) {
|
|
30146
|
+
return {
|
|
30147
|
+
shape: 'success-standard',
|
|
30148
|
+
label: this.commonStrings.keys.wizardStepSuccess || this.commonStrings.keys.timelineStepSuccess,
|
|
30149
|
+
};
|
|
30150
|
+
}
|
|
30151
|
+
else {
|
|
30152
|
+
return null;
|
|
30153
|
+
}
|
|
30154
|
+
}
|
|
30155
|
+
ngOnInit() {
|
|
30156
|
+
this.subscription = this.ensureCurrentStepIsScrolledIntoView().subscribe();
|
|
30157
|
+
}
|
|
30158
|
+
ngOnDestroy() {
|
|
30159
|
+
var _a;
|
|
30160
|
+
(_a = this.subscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
30161
|
+
}
|
|
29884
30162
|
click() {
|
|
29885
30163
|
this.pageGuard();
|
|
29886
30164
|
// if we click on our own stepnav or a disabled stepnav, we don't want to do anything
|
|
29887
30165
|
if (this.isDisabled || this.isCurrent) {
|
|
29888
30166
|
return;
|
|
29889
30167
|
}
|
|
30168
|
+
this.skipNextScroll = true;
|
|
29890
30169
|
this.navService.goTo(this.page);
|
|
29891
30170
|
}
|
|
29892
30171
|
pageGuard() {
|
|
@@ -29894,8 +30173,20 @@ class ClrWizardStepnavItem {
|
|
|
29894
30173
|
throw new Error('Wizard stepnav item is not associated with a wizard page.');
|
|
29895
30174
|
}
|
|
29896
30175
|
}
|
|
30176
|
+
ensureCurrentStepIsScrolledIntoView() {
|
|
30177
|
+
// Don't use "smooth" scrolling when the wizard is first opened to avoid a delay in scrolling the current step into view.
|
|
30178
|
+
// The current step when the wizard is opened might not be the first step. For example, the wizard can be closed and re-opened.
|
|
30179
|
+
let scrollBehavior = 'auto';
|
|
30180
|
+
return this.navService.currentPageChanged.pipe(startWith$1(this.navService.currentPage), tap$1(currentPage => {
|
|
30181
|
+
if (!this.skipNextScroll && currentPage === this.page) {
|
|
30182
|
+
this.elementRef.nativeElement.scrollIntoView({ behavior: scrollBehavior, block: 'center', inline: 'center' });
|
|
30183
|
+
}
|
|
30184
|
+
scrollBehavior = 'smooth';
|
|
30185
|
+
this.skipNextScroll = false;
|
|
30186
|
+
}));
|
|
30187
|
+
}
|
|
29897
30188
|
}
|
|
29898
|
-
ClrWizardStepnavItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrWizardStepnavItem, deps: [{ token: WizardNavigationService }, { token: PageCollectionService }, { token: ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
30189
|
+
ClrWizardStepnavItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrWizardStepnavItem, deps: [{ token: WizardNavigationService }, { token: PageCollectionService }, { token: ClrCommonStringsService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
29899
30190
|
ClrWizardStepnavItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrWizardStepnavItem, selector: "[clr-wizard-stepnav-item]", inputs: { page: "page" }, host: { properties: { "id": "id", "attr.aria-current": "stepAriaCurrent", "attr.aria-controls": "page.id", "class.clr-nav-link": "true", "class.nav-item": "true", "class.active": "isCurrent", "class.disabled": "isDisabled", "class.no-click": "!canNavigate", "class.complete": "isComplete", "class.error": "hasError" } }, ngImport: i0, template: `
|
|
29900
30191
|
<button
|
|
29901
30192
|
type="button"
|
|
@@ -29906,18 +30197,12 @@ ClrWizardStepnavItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", v
|
|
|
29906
30197
|
>
|
|
29907
30198
|
<div class="clr-wizard-stepnav-link-icon">
|
|
29908
30199
|
<cds-icon
|
|
29909
|
-
*ngIf="
|
|
29910
|
-
[id]="stepIconId"
|
|
29911
|
-
shape="error-standard"
|
|
29912
|
-
role="img"
|
|
29913
|
-
[attr.aria-label]="commonStrings.keys.wizardStepError"
|
|
29914
|
-
></cds-icon>
|
|
29915
|
-
<cds-icon
|
|
29916
|
-
*ngIf="!hasError && isComplete"
|
|
30200
|
+
*ngIf="icon; let icon"
|
|
29917
30201
|
[id]="stepIconId"
|
|
29918
|
-
shape="success-standard"
|
|
29919
30202
|
role="img"
|
|
29920
|
-
|
|
30203
|
+
class="clr-wizard-stepnav-link-icon"
|
|
30204
|
+
[attr.shape]="icon.shape"
|
|
30205
|
+
[attr.aria-label]="icon.label"
|
|
29921
30206
|
></cds-icon>
|
|
29922
30207
|
</div>
|
|
29923
30208
|
|
|
@@ -29944,18 +30229,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
29944
30229
|
>
|
|
29945
30230
|
<div class="clr-wizard-stepnav-link-icon">
|
|
29946
30231
|
<cds-icon
|
|
29947
|
-
*ngIf="
|
|
29948
|
-
[id]="stepIconId"
|
|
29949
|
-
shape="error-standard"
|
|
29950
|
-
role="img"
|
|
29951
|
-
[attr.aria-label]="commonStrings.keys.wizardStepError"
|
|
29952
|
-
></cds-icon>
|
|
29953
|
-
<cds-icon
|
|
29954
|
-
*ngIf="!hasError && isComplete"
|
|
30232
|
+
*ngIf="icon; let icon"
|
|
29955
30233
|
[id]="stepIconId"
|
|
29956
|
-
shape="success-standard"
|
|
29957
30234
|
role="img"
|
|
29958
|
-
|
|
30235
|
+
class="clr-wizard-stepnav-link-icon"
|
|
30236
|
+
[attr.shape]="icon.shape"
|
|
30237
|
+
[attr.aria-label]="icon.label"
|
|
29959
30238
|
></cds-icon>
|
|
29960
30239
|
</div>
|
|
29961
30240
|
|
|
@@ -29981,7 +30260,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
29981
30260
|
'[class.error]': 'hasError',
|
|
29982
30261
|
},
|
|
29983
30262
|
}]
|
|
29984
|
-
}], ctorParameters: function () { return [{ type: WizardNavigationService }, { type: PageCollectionService }, { type: ClrCommonStringsService }]; }, propDecorators: { page: [{
|
|
30263
|
+
}], ctorParameters: function () { return [{ type: WizardNavigationService }, { type: PageCollectionService }, { type: ClrCommonStringsService }, { type: i0.ElementRef }]; }, propDecorators: { page: [{
|
|
29985
30264
|
type: Input,
|
|
29986
30265
|
args: ['page']
|
|
29987
30266
|
}] } });
|
|
@@ -30450,7 +30729,7 @@ class ClrWizard {
|
|
|
30450
30729
|
}
|
|
30451
30730
|
}
|
|
30452
30731
|
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 });
|
|
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
|
|
30732
|
+
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 </div>\n </div>\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 <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"] }] });
|
|
30454
30733
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrWizard, decorators: [{
|
|
30455
30734
|
type: Component,
|
|
30456
30735
|
args: [{ selector: 'clr-wizard', providers: [WizardNavigationService, PageCollectionService, ButtonHubService, HeaderActionService], host: {
|
|
@@ -30460,7 +30739,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
30460
30739
|
'[class.wizard-xl]': "size == 'xl'",
|
|
30461
30740
|
'[class.wizard-in-page]': 'inPage',
|
|
30462
30741
|
'[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
|
|
30742
|
+
}, 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 </div>\n </div>\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 <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" }]
|
|
30464
30743
|
}], ctorParameters: function () {
|
|
30465
30744
|
return [{ type: undefined, decorators: [{
|
|
30466
30745
|
type: Inject,
|
|
@@ -31061,5 +31340,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
31061
31340
|
* Generated bundle index. Do not edit.
|
|
31062
31341
|
*/
|
|
31063
31342
|
|
|
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,
|
|
31343
|
+
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, ClrModalHostComponent, ClrModalModule, ClrMonthpicker, ClrNavLevel, ClrNavigationModule, ClrNumberInput, ClrNumberInputContainer, ClrNumberInputModule, ClrOption, ClrOptionGroup, 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 };
|
|
31065
31344
|
//# sourceMappingURL=clr-angular.mjs.map
|