@clr/angular 17.1.0 → 17.2.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 +377 -141
- package/clr-angular.module.d.ts +7 -6
- package/data/datagrid/datagrid-virtual-scroll.directive.d.ts +59 -0
- package/data/datagrid/datagrid.d.ts +7 -4
- package/data/datagrid/datagrid.module.d.ts +31 -30
- package/data/datagrid/index.d.ts +1 -0
- package/data/datagrid/interfaces/column-state.interface.d.ts +1 -0
- package/data/datagrid/providers/detail.service.d.ts +1 -0
- package/data/datagrid/render/cell-renderer.d.ts +3 -6
- package/data/datagrid/render/header-renderer.d.ts +2 -3
- package/data/datagrid/render/main-renderer.d.ts +5 -1
- package/data/datagrid/render/row-renderer.d.ts +4 -3
- package/data/datagrid/utils/key-navigation-grid.controller.d.ts +4 -1
- package/esm2020/accordion/accordion-panel.mjs +3 -3
- package/esm2020/accordion/stepper/stepper-panel.mjs +8 -4
- package/esm2020/clr-angular.module.mjs +5 -1
- package/esm2020/data/datagrid/datagrid-row.mjs +3 -3
- package/esm2020/data/datagrid/datagrid-selection-cell.directive.mjs +2 -2
- package/esm2020/data/datagrid/datagrid-virtual-scroll.directive.mjs +225 -0
- package/esm2020/data/datagrid/datagrid.mjs +32 -10
- package/esm2020/data/datagrid/datagrid.module.mjs +5 -1
- package/esm2020/data/datagrid/index.mjs +2 -1
- package/esm2020/data/datagrid/interfaces/column-state.interface.mjs +1 -1
- package/esm2020/data/datagrid/providers/detail.service.mjs +6 -1
- package/esm2020/data/datagrid/render/cell-renderer.mjs +10 -33
- package/esm2020/data/datagrid/render/header-renderer.mjs +25 -43
- package/esm2020/data/datagrid/render/main-renderer.mjs +54 -9
- package/esm2020/data/datagrid/render/render-organizer.mjs +2 -2
- package/esm2020/data/datagrid/render/row-renderer.mjs +5 -5
- package/esm2020/data/datagrid/utils/key-navigation-grid.controller.mjs +17 -4
- package/esm2020/forms/combobox/combobox.mjs +3 -3
- package/esm2020/forms/datalist/datalist-container.mjs +1 -4
- package/esm2020/forms/datepicker/datepicker-view-manager.mjs +3 -3
- package/esm2020/forms/file-input/file-input-container.mjs +157 -0
- package/esm2020/forms/file-input/file-input-validator.mjs +72 -0
- package/esm2020/forms/file-input/file-input-value-accessor.mjs +53 -0
- package/esm2020/forms/file-input/file-input.helpers.mjs +22 -0
- package/esm2020/forms/file-input/file-input.mjs +68 -0
- package/esm2020/forms/file-input/file-input.module.mjs +43 -0
- package/esm2020/forms/file-input/index.mjs +12 -0
- package/esm2020/forms/forms.module.mjs +5 -1
- package/esm2020/forms/index.mjs +2 -1
- package/esm2020/modal/index.mjs +3 -1
- package/esm2020/modal/modal-configuration.service.mjs +20 -0
- package/esm2020/modal/modal.mjs +47 -18
- package/esm2020/modal/modal.module.mjs +4 -2
- package/esm2020/modal/side-panel.mjs +90 -0
- package/esm2020/modal/side-panel.module.mjs +28 -0
- package/esm2020/utils/animations/expandable-animation/expandable-animation.mjs +17 -12
- package/esm2020/utils/dom-adapter/dom-adapter.mjs +13 -4
- package/esm2020/utils/i18n/common-strings.default.mjs +6 -1
- package/esm2020/utils/i18n/common-strings.interface.mjs +1 -1
- package/esm2020/wizard/wizard.mjs +29 -6
- package/fesm2015/clr-angular.mjs +1123 -264
- package/fesm2015/clr-angular.mjs.map +1 -1
- package/fesm2020/clr-angular.mjs +1114 -266
- package/fesm2020/clr-angular.mjs.map +1 -1
- package/forms/file-input/file-input-container.d.ts +16 -0
- package/forms/file-input/file-input-validator.d.ts +12 -0
- package/forms/file-input/file-input-value-accessor.d.ts +15 -0
- package/forms/file-input/file-input.d.ts +21 -0
- package/forms/file-input/file-input.helpers.d.ts +3 -0
- package/forms/file-input/file-input.module.d.ts +14 -0
- package/forms/file-input/index.d.ts +5 -0
- package/forms/forms.module.d.ts +9 -8
- package/forms/index.d.ts +1 -0
- package/modal/index.d.ts +2 -0
- package/modal/modal-configuration.service.d.ts +7 -0
- package/modal/modal.d.ts +8 -2
- package/modal/side-panel.d.ts +26 -0
- package/modal/side-panel.module.d.ts +13 -0
- package/package.json +2 -2
- package/utils/animations/expandable-animation/expandable-animation.d.ts +5 -4
- package/utils/i18n/common-strings.interface.d.ts +4 -0
- package/wizard/wizard.d.ts +12 -2
package/fesm2015/clr-angular.mjs
CHANGED
|
@@ -1,19 +1,23 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Directive, NgModule, Optional, Input, Injectable, Component, ChangeDetectionStrategy, EventEmitter, HostBinding, Output, ContentChildren, PLATFORM_ID, Inject, ViewChild, HostListener, SkipSelf, Renderer2, InjectionToken, ElementRef, ContentChild, ComponentFactoryResolver, KeyValueDiffers, Self, Attribute, LOCALE_ID, ViewContainerRef, NgZone, ChangeDetectorRef, TemplateRef } from '@angular/core';
|
|
2
|
+
import { Directive, NgModule, Optional, Input, Injectable, Component, ChangeDetectionStrategy, EventEmitter, HostBinding, Output, ContentChildren, PLATFORM_ID, Inject, ViewChild, HostListener, SkipSelf, Renderer2, InjectionToken, ElementRef, ContentChild, ComponentFactoryResolver, KeyValueDiffers, Self, Attribute, LOCALE_ID, inject, forwardRef, ViewContainerRef, NgZone, ChangeDetectorRef, TemplateRef } from '@angular/core';
|
|
3
3
|
import * as i5 from '@angular/common';
|
|
4
4
|
import { CommonModule, isPlatformBrowser, DOCUMENT, NgForOf, getLocaleDayNames, FormStyle, TranslationWidth, getLocaleMonthNames, getLocaleFirstDayOfWeek, getLocaleDateFormat, FormatWidth } from '@angular/common';
|
|
5
|
-
import { ClarityIcons, angleIcon, exclamationCircleIcon, checkCircleIcon, ellipsisHorizontalIcon, windowCloseIcon, eventIcon, calendarIcon, eyeHideIcon, eyeIcon, ellipsisVerticalIcon, viewColumnsIcon, arrowIcon, timesIcon, stepForward2Icon, angleDoubleIcon, filterGridCircleIcon, filterGridIcon, errorStandardIcon, helpIcon, infoStandardIcon, noteIcon, successStandardIcon, warningStandardIcon, infoCircleIcon, circleIcon, dotCircleIcon } from '@cds/core/icon';
|
|
5
|
+
import { ClarityIcons, angleIcon, exclamationCircleIcon, checkCircleIcon, ellipsisHorizontalIcon, windowCloseIcon, eventIcon, calendarIcon, folderOpenIcon, eyeHideIcon, eyeIcon, ellipsisVerticalIcon, viewColumnsIcon, arrowIcon, timesIcon, stepForward2Icon, angleDoubleIcon, filterGridCircleIcon, filterGridIcon, errorStandardIcon, helpIcon, infoStandardIcon, noteIcon, successStandardIcon, warningStandardIcon, infoCircleIcon, circleIcon, dotCircleIcon } from '@cds/core/icon';
|
|
6
6
|
import { map, tap, startWith, distinctUntilChanged, filter, skipUntil, debounceTime, takeUntil, take, first, switchMap } from 'rxjs/operators';
|
|
7
7
|
import * as i3 from 'rxjs';
|
|
8
8
|
import { Subject, BehaviorSubject, Observable, fromEvent, isObservable, of, ReplaySubject, combineLatest, merge } from 'rxjs';
|
|
9
9
|
import { trigger, transition, style, animate, state, keyframes } from '@angular/animations';
|
|
10
10
|
import * as i1 from '@angular/forms';
|
|
11
|
-
import { FormControl, FormGroup, FormsModule, NG_VALIDATORS, SelectMultipleControlValueAccessor } from '@angular/forms';
|
|
11
|
+
import { FormControl, FormGroup, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, SelectMultipleControlValueAccessor } from '@angular/forms';
|
|
12
12
|
import * as i1$1 from '@angular/cdk/a11y';
|
|
13
13
|
import { CdkTrapFocus } from '@angular/cdk/a11y';
|
|
14
14
|
import * as i2 from '@angular/cdk/drag-drop';
|
|
15
15
|
import { CdkDrag, CDK_DROP_LIST, CDK_DRAG_CONFIG } from '@angular/cdk/drag-drop';
|
|
16
16
|
import * as i1$2 from '@angular/cdk/bidi';
|
|
17
|
+
import { coerceNumberProperty } from '@angular/cdk/coercion';
|
|
18
|
+
import { _RecycleViewRepeaterStrategy } from '@angular/cdk/collections';
|
|
19
|
+
import * as i3$1 from '@angular/cdk/scrolling';
|
|
20
|
+
import { FixedSizeVirtualScrollStrategy, CdkVirtualForOf, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
|
|
17
21
|
import * as i1$3 from '@angular/router';
|
|
18
22
|
import '@cds/core/internal-components/close-button/register.js';
|
|
19
23
|
import '@cds/core/icon/register';
|
|
@@ -388,6 +392,11 @@ const commonStringsDefault = {
|
|
|
388
392
|
// Accordion/Stepper
|
|
389
393
|
stepComplete: 'Step {STEP} complete',
|
|
390
394
|
stepError: 'Error in step {STEP}',
|
|
395
|
+
// File input
|
|
396
|
+
browse: 'Browse',
|
|
397
|
+
fileCount: '{COUNT} files',
|
|
398
|
+
clearFile: 'Clear {FILE}',
|
|
399
|
+
clearFiles: 'Clear {COUNT} files',
|
|
391
400
|
};
|
|
392
401
|
|
|
393
402
|
/*
|
|
@@ -641,10 +650,10 @@ class ClrAccordionPanel {
|
|
|
641
650
|
}
|
|
642
651
|
}
|
|
643
652
|
ClrAccordionPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrAccordionPanel, deps: [{ token: ClrCommonStringsService }, { token: AccordionService }, { token: IfExpandService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
644
|
-
ClrAccordionPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrAccordionPanel, selector: "clr-accordion-panel", inputs: { disabled: ["clrAccordionPanelDisabled", "disabled"], panelOpen: ["clrAccordionPanelOpen", "panelOpen"] }, outputs: { panelOpenChange: "clrAccordionPanelOpenChange" }, host: { properties: { "class.clr-accordion-panel": "true", "class.clr-accordion-panel-disabled": "this.disabled" } }, providers: [IfExpandService], queries: [{ propertyName: "accordionDescription", predicate: ClrAccordionDescription }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"panel | async; let panel\">\n <div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-accordion-header\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [disabled]=\"isAccordion && panel.disabled\"\n [attr.aria-disabled]=\"!isAccordion && 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-
|
|
653
|
+
ClrAccordionPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrAccordionPanel, selector: "clr-accordion-panel", inputs: { disabled: ["clrAccordionPanelDisabled", "disabled"], panelOpen: ["clrAccordionPanelOpen", "panelOpen"] }, outputs: { panelOpenChange: "clrAccordionPanelOpenChange" }, host: { properties: { "class.clr-accordion-panel": "true", "class.clr-accordion-panel-disabled": "this.disabled" } }, providers: [IfExpandService], queries: [{ propertyName: "accordionDescription", predicate: ClrAccordionDescription }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"panel | async; let panel\">\n <div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-accordion-header\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [disabled]=\"isAccordion && panel.disabled\"\n [attr.aria-disabled]=\"!isAccordion && 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-accordion-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle\"></cds-icon>\n <span class=\"clr-accordion-number\">{{panelNumber}}.</span>\n <cds-icon status=\"danger\" shape=\"exclamation-circle\" class=\"clr-accordion-error-icon\"></cds-icon>\n <cds-icon status=\"success\" shape=\"check-circle\" class=\"clr-accordion-complete-icon\"></cds-icon>\n </span>\n <ng-content select=\"clr-accordion-title, clr-step-title\"></ng-content>\n <ng-content select=\"clr-accordion-description, 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: panelAnimation, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
645
654
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrAccordionPanel, decorators: [{
|
|
646
655
|
type: Component,
|
|
647
|
-
args: [{ selector: 'clr-accordion-panel', host: { '[class.clr-accordion-panel]': 'true' }, changeDetection: ChangeDetectionStrategy.OnPush, animations: panelAnimation, providers: [IfExpandService], template: "<ng-container *ngIf=\"panel | async; let panel\">\n <div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-accordion-header\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [disabled]=\"isAccordion && panel.disabled\"\n [attr.aria-disabled]=\"!isAccordion && 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-
|
|
656
|
+
args: [{ selector: 'clr-accordion-panel', host: { '[class.clr-accordion-panel]': 'true' }, changeDetection: ChangeDetectionStrategy.OnPush, animations: panelAnimation, providers: [IfExpandService], template: "<ng-container *ngIf=\"panel | async; let panel\">\n <div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-accordion-header\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [disabled]=\"isAccordion && panel.disabled\"\n [attr.aria-disabled]=\"!isAccordion && 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-accordion-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle\"></cds-icon>\n <span class=\"clr-accordion-number\">{{panelNumber}}.</span>\n <cds-icon status=\"danger\" shape=\"exclamation-circle\" class=\"clr-accordion-error-icon\"></cds-icon>\n <cds-icon status=\"success\" shape=\"check-circle\" class=\"clr-accordion-complete-icon\"></cds-icon>\n </span>\n <ng-content select=\"clr-accordion-title, clr-step-title\"></ng-content>\n <ng-content select=\"clr-accordion-description, 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" }]
|
|
648
657
|
}], ctorParameters: function () { return [{ type: ClrCommonStringsService }, { type: AccordionService }, { type: IfExpandService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{
|
|
649
658
|
type: Input,
|
|
650
659
|
args: ['clrAccordionPanelDisabled']
|
|
@@ -1170,7 +1179,11 @@ class ClrStepperPanel extends ClrAccordionPanel {
|
|
|
1170
1179
|
listenToFocusChanges() {
|
|
1171
1180
|
this.subscriptions.push(this.stepperService.activeStep
|
|
1172
1181
|
.pipe(filter(panelId => isPlatformBrowser(this.platformId) && panelId === this.id))
|
|
1173
|
-
.subscribe(() =>
|
|
1182
|
+
.subscribe(() => {
|
|
1183
|
+
//Adding timeout so that the status of the previous step is read by Voice Over on Safari,
|
|
1184
|
+
//before focusing on the next stepper panel header
|
|
1185
|
+
setTimeout(() => this.headerButton.nativeElement.focus(), 1500);
|
|
1186
|
+
}));
|
|
1174
1187
|
}
|
|
1175
1188
|
triggerAllFormControlValidationIfError(panel) {
|
|
1176
1189
|
if (panel.status === AccordionStatus.Error) {
|
|
@@ -1179,10 +1192,10 @@ class ClrStepperPanel extends ClrAccordionPanel {
|
|
|
1179
1192
|
}
|
|
1180
1193
|
}
|
|
1181
1194
|
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 });
|
|
1182
|
-
ClrStepperPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrStepperPanel, selector: "clr-stepper-panel", host: { properties: { "class.clr-accordion-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\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [disabled]=\"isAccordion && panel.disabled\"\n [attr.aria-disabled]=\"!isAccordion && 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-
|
|
1195
|
+
ClrStepperPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrStepperPanel, selector: "clr-stepper-panel", host: { properties: { "class.clr-accordion-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\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [disabled]=\"isAccordion && panel.disabled\"\n [attr.aria-disabled]=\"!isAccordion && 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-accordion-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle\"></cds-icon>\n <span class=\"clr-accordion-number\">{{panelNumber}}.</span>\n <cds-icon status=\"danger\" shape=\"exclamation-circle\" class=\"clr-accordion-error-icon\"></cds-icon>\n <cds-icon status=\"success\" shape=\"check-circle\" class=\"clr-accordion-complete-icon\"></cds-icon>\n </span>\n <ng-content select=\"clr-accordion-title, clr-step-title\"></ng-content>\n <ng-content select=\"clr-accordion-description, 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 });
|
|
1183
1196
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrStepperPanel, decorators: [{
|
|
1184
1197
|
type: Component,
|
|
1185
|
-
args: [{ selector: 'clr-stepper-panel', host: { '[class.clr-accordion-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\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [disabled]=\"isAccordion && panel.disabled\"\n [attr.aria-disabled]=\"!isAccordion && 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-
|
|
1198
|
+
args: [{ selector: 'clr-stepper-panel', host: { '[class.clr-accordion-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\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [disabled]=\"isAccordion && panel.disabled\"\n [attr.aria-disabled]=\"!isAccordion && 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-accordion-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle\"></cds-icon>\n <span class=\"clr-accordion-number\">{{panelNumber}}.</span>\n <cds-icon status=\"danger\" shape=\"exclamation-circle\" class=\"clr-accordion-error-icon\"></cds-icon>\n <cds-icon status=\"success\" shape=\"check-circle\" class=\"clr-accordion-complete-icon\"></cds-icon>\n </span>\n <ng-content select=\"clr-accordion-title, clr-step-title\"></ng-content>\n <ng-content select=\"clr-accordion-description, 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" }]
|
|
1186
1199
|
}], ctorParameters: function () {
|
|
1187
1200
|
return [{ type: undefined, decorators: [{
|
|
1188
1201
|
type: Inject,
|
|
@@ -2965,10 +2978,19 @@ function collapse() {
|
|
|
2965
2978
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
2966
2979
|
*/
|
|
2967
2980
|
class DomAdapter {
|
|
2981
|
+
/*
|
|
2982
|
+
We clone the element and take its measurements from outside the grid
|
|
2983
|
+
so we don't trigger reflow for the whole datagrid.
|
|
2984
|
+
*/
|
|
2968
2985
|
userDefinedWidth(element) {
|
|
2969
|
-
element.
|
|
2970
|
-
|
|
2971
|
-
|
|
2986
|
+
const clonedElement = element.cloneNode(true);
|
|
2987
|
+
if (clonedElement.id) {
|
|
2988
|
+
clonedElement.id = clonedElement.id + '-clone';
|
|
2989
|
+
}
|
|
2990
|
+
clonedElement.classList.add('datagrid-cell-width-zero');
|
|
2991
|
+
document.body.appendChild(clonedElement);
|
|
2992
|
+
const userDefinedWidth = this.clientRect(clonedElement).width;
|
|
2993
|
+
clonedElement.remove();
|
|
2972
2994
|
return userDefinedWidth;
|
|
2973
2995
|
}
|
|
2974
2996
|
scrollBarWidth(element) {
|
|
@@ -3015,27 +3037,32 @@ class ClrExpandableAnimation {
|
|
|
3015
3037
|
this.element = element;
|
|
3016
3038
|
this.domAdapter = domAdapter;
|
|
3017
3039
|
this.renderer = renderer;
|
|
3040
|
+
this.clrExpandTrigger = false;
|
|
3018
3041
|
this.startHeight = 0;
|
|
3019
3042
|
}
|
|
3020
3043
|
get expandAnimation() {
|
|
3021
3044
|
return { value: this.clrExpandTrigger, params: { startHeight: this.startHeight } };
|
|
3022
3045
|
}
|
|
3023
|
-
animationStart() {
|
|
3024
|
-
|
|
3046
|
+
animationStart(event) {
|
|
3047
|
+
if (event.fromState !== 'void') {
|
|
3048
|
+
this.renderer.setStyle(this.element.nativeElement, 'overflow', 'hidden');
|
|
3049
|
+
}
|
|
3025
3050
|
}
|
|
3026
|
-
animationDone() {
|
|
3027
|
-
|
|
3028
|
-
|
|
3029
|
-
|
|
3030
|
-
|
|
3031
|
-
|
|
3051
|
+
animationDone(event) {
|
|
3052
|
+
if (event.fromState !== 'void') {
|
|
3053
|
+
this.renderer.removeStyle(this.element.nativeElement, 'overflow');
|
|
3054
|
+
// A "safe" auto-update of the height ensuring basic OOTB user experience .
|
|
3055
|
+
// Prone to small jumps in initial animation height if data was changed in the meantime, window was resized, etc.
|
|
3056
|
+
// For optimal behavior call manually updateStartHeight() from the parent component before initiating the update.
|
|
3057
|
+
this.updateStartHeight();
|
|
3058
|
+
}
|
|
3032
3059
|
}
|
|
3033
3060
|
updateStartHeight() {
|
|
3034
3061
|
this.startHeight = this.domAdapter.computedHeight(this.element.nativeElement) || 0;
|
|
3035
3062
|
}
|
|
3036
3063
|
}
|
|
3037
3064
|
ClrExpandableAnimation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrExpandableAnimation, deps: [{ token: i0.ElementRef }, { token: DomAdapter }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
3038
|
-
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()", "@expandAnimation.done": "animationDone()" }, properties: { "@expandAnimation": "this.expandAnimation" } }, providers: [DomAdapter], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{display:block}\n"], animations: [
|
|
3065
|
+
ClrExpandableAnimation.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrExpandableAnimation, selector: "clr-expandable-animation", inputs: { clrExpandTrigger: "clrExpandTrigger" }, host: { listeners: { "@expandAnimation.start": "animationStart($event)", "@expandAnimation.done": "animationDone($event)" }, properties: { "@expandAnimation": "this.expandAnimation" } }, providers: [DomAdapter], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{display:block}\n"], animations: [
|
|
3039
3066
|
trigger('expandAnimation', [
|
|
3040
3067
|
transition('true <=> false', [
|
|
3041
3068
|
style({ height: '{{startHeight}}px' }),
|
|
@@ -3060,10 +3087,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
3060
3087
|
args: ['@expandAnimation']
|
|
3061
3088
|
}], animationStart: [{
|
|
3062
3089
|
type: HostListener,
|
|
3063
|
-
args: ['@expandAnimation.start']
|
|
3090
|
+
args: ['@expandAnimation.start', ['$event']]
|
|
3064
3091
|
}], animationDone: [{
|
|
3065
3092
|
type: HostListener,
|
|
3066
|
-
args: ['@expandAnimation.done']
|
|
3093
|
+
args: ['@expandAnimation.done', ['$event']]
|
|
3067
3094
|
}] } });
|
|
3068
3095
|
|
|
3069
3096
|
/*
|
|
@@ -7301,7 +7328,7 @@ ClrCombobox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
|
7301
7328
|
IF_ACTIVE_ID_PROVIDER,
|
|
7302
7329
|
FOCUS_SERVICE_PROVIDER,
|
|
7303
7330
|
COMBOBOX_FOCUS_HANDLER_PROVIDER,
|
|
7304
|
-
], 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
|
|
7331
|
+
], 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-2024 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 <span class=\"clr-combobox-input-wrapper\">\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 </span>\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"] }] });
|
|
7305
7332
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrCombobox, decorators: [{
|
|
7306
7333
|
type: Component,
|
|
7307
7334
|
args: [{ selector: 'clr-combobox', providers: [
|
|
@@ -7314,7 +7341,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
7314
7341
|
'[class.aria-required]': 'true',
|
|
7315
7342
|
'[class.clr-combobox]': 'true',
|
|
7316
7343
|
'[class.clr-combobox-disabled]': 'control?.disabled',
|
|
7317
|
-
}, template: "<!--\n
|
|
7344
|
+
}, template: "<!--\n ~ Copyright (c) 2016-2024 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 <span class=\"clr-combobox-input-wrapper\">\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 </span>\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" }]
|
|
7318
7345
|
}], ctorParameters: function () {
|
|
7319
7346
|
return [{ type: i0.ViewContainerRef }, { type: i0.Injector }, { type: i1.NgControl, decorators: [{
|
|
7320
7347
|
type: Self
|
|
@@ -7769,7 +7796,6 @@ class ClrDatalistContainer extends ClrAbstractContainer {
|
|
|
7769
7796
|
ClrDatalistContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatalistContainer, deps: [{ token: ControlClassService }, { token: LayoutService, optional: true }, { token: NgControlService }, { token: FocusService }, { token: IfControlStateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
7770
7797
|
ClrDatalistContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatalistContainer, selector: "clr-datalist-container", host: { properties: { "class.clr-form-control": "true", "class.clr-form-control-disabled": "control?.disabled", "class.clr-row": "addGrid()" } }, providers: [
|
|
7771
7798
|
ControlClassService,
|
|
7772
|
-
LayoutService,
|
|
7773
7799
|
ControlIdService,
|
|
7774
7800
|
FocusService,
|
|
7775
7801
|
NgControlService,
|
|
@@ -7846,7 +7872,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
7846
7872
|
},
|
|
7847
7873
|
providers: [
|
|
7848
7874
|
ControlClassService,
|
|
7849
|
-
LayoutService,
|
|
7850
7875
|
ControlIdService,
|
|
7851
7876
|
FocusService,
|
|
7852
7877
|
NgControlService,
|
|
@@ -9657,7 +9682,7 @@ class ClrDatepickerViewManager {
|
|
|
9657
9682
|
}
|
|
9658
9683
|
}
|
|
9659
9684
|
ClrDatepickerViewManager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatepickerViewManager, deps: [{ token: ClrCommonStringsService }, { token: ViewManagerService }], target: i0.ɵɵFactoryTarget.Component });
|
|
9660
|
-
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", "attr.aria-modal": "true", "attr.aria-label": "commonStrings.keys.datepickerDialogLabel" } }, providers: [DatepickerFocusService], ngImport: i0, template: "<!--\n
|
|
9685
|
+
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", "attr.aria-modal": "true", "attr.aria-label": "commonStrings.keys.datepickerDialogLabel" } }, providers: [DatepickerFocusService], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2024 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<clr-monthpicker *ngIf=\"isMonthView\"></clr-monthpicker>\n<clr-yearpicker *ngIf=\"isYearView\"></clr-yearpicker>\n<clr-daypicker *ngIf=\"isDayView\"></clr-daypicker>\n", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ClrMonthpicker, selector: "clr-monthpicker" }, { kind: "component", type: ClrYearpicker, selector: "clr-yearpicker" }, { kind: "component", type: ClrDaypicker, selector: "clr-daypicker" }] });
|
|
9661
9686
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatepickerViewManager, decorators: [{
|
|
9662
9687
|
type: Component,
|
|
9663
9688
|
args: [{ selector: 'clr-datepicker-view-manager', providers: [DatepickerFocusService], host: {
|
|
@@ -9665,7 +9690,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
9665
9690
|
'[attr.aria-modal]': 'true',
|
|
9666
9691
|
'[attr.aria-label]': 'commonStrings.keys.datepickerDialogLabel',
|
|
9667
9692
|
role: 'dialog',
|
|
9668
|
-
}, template: "<!--\n
|
|
9693
|
+
}, template: "<!--\n ~ Copyright (c) 2016-2024 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<clr-monthpicker *ngIf=\"isMonthView\"></clr-monthpicker>\n<clr-yearpicker *ngIf=\"isYearView\"></clr-yearpicker>\n<clr-daypicker *ngIf=\"isDayView\"></clr-daypicker>\n" }]
|
|
9669
9694
|
}], ctorParameters: function () { return [{ type: ClrCommonStringsService }, { type: ViewManagerService }]; } });
|
|
9670
9695
|
|
|
9671
9696
|
/*
|
|
@@ -10294,6 +10319,395 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
10294
10319
|
}]
|
|
10295
10320
|
}], ctorParameters: function () { return []; } });
|
|
10296
10321
|
|
|
10322
|
+
/*
|
|
10323
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
10324
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
10325
|
+
* This software is released under MIT license.
|
|
10326
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
10327
|
+
*/
|
|
10328
|
+
class ClrFileInputContainer extends ClrAbstractContainer {
|
|
10329
|
+
constructor() {
|
|
10330
|
+
super(...arguments);
|
|
10331
|
+
this.commonStrings = inject(ClrCommonStringsService);
|
|
10332
|
+
}
|
|
10333
|
+
get disabled() {
|
|
10334
|
+
return this.fileInput.elementRef.nativeElement.disabled;
|
|
10335
|
+
}
|
|
10336
|
+
get browseButtonDescribedBy() {
|
|
10337
|
+
return this.fileInput.elementRef.nativeElement.getAttribute('aria-describedby');
|
|
10338
|
+
}
|
|
10339
|
+
browse() {
|
|
10340
|
+
this.fileInput.elementRef.nativeElement.click();
|
|
10341
|
+
}
|
|
10342
|
+
clearSelectedFiles() {
|
|
10343
|
+
this.fileInput.elementRef.nativeElement.value = '';
|
|
10344
|
+
this.fileInput.elementRef.nativeElement.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));
|
|
10345
|
+
this.browseButtonElementRef.nativeElement.focus();
|
|
10346
|
+
}
|
|
10347
|
+
}
|
|
10348
|
+
ClrFileInputContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInputContainer, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
10349
|
+
ClrFileInputContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrFileInputContainer, selector: "clr-file-input-container", inputs: { customButtonLabel: ["clrButtonLabel", "customButtonLabel"] }, host: { properties: { "class.clr-form-control": "true", "class.clr-form-control-disabled": "disabled", "class.clr-row": "addGrid()" } }, providers: [IfControlStateService, NgControlService, ControlIdService, ControlClassService], queries: [{ propertyName: "fileInput", first: true, predicate: i0.forwardRef(function () { return ClrFileInput; }), descendants: true }], viewQueries: [{ propertyName: "browseButtonElementRef", first: true, predicate: ["browseButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
10350
|
+
<ng-content select="label"></ng-content>
|
|
10351
|
+
<label *ngIf="!label && addGrid()"></label>
|
|
10352
|
+
<div class="clr-control-container" [ngClass]="controlClass()">
|
|
10353
|
+
<div class="clr-file-input-wrapper">
|
|
10354
|
+
<ng-content select="[clrFileInput]"></ng-content>
|
|
10355
|
+
<button
|
|
10356
|
+
#browseButton
|
|
10357
|
+
type="button"
|
|
10358
|
+
class="btn btn-sm clr-file-input-browse-button"
|
|
10359
|
+
[attr.aria-describedby]="browseButtonDescribedBy"
|
|
10360
|
+
[disabled]="disabled"
|
|
10361
|
+
(click)="browse()"
|
|
10362
|
+
>
|
|
10363
|
+
<cds-icon shape="folder-open"></cds-icon>
|
|
10364
|
+
<span class="clr-file-input-browse-button-text">
|
|
10365
|
+
{{ fileInput?.selection?.buttonLabel || customButtonLabel || commonStrings.keys.browse }}
|
|
10366
|
+
</span>
|
|
10367
|
+
</button>
|
|
10368
|
+
<button
|
|
10369
|
+
*ngIf="fileInput?.selection?.fileCount"
|
|
10370
|
+
type="button"
|
|
10371
|
+
class="btn btn-sm clr-file-input-clear-button"
|
|
10372
|
+
[attr.aria-label]="fileInput?.selection?.clearFilesButtonLabel"
|
|
10373
|
+
(click)="clearSelectedFiles()"
|
|
10374
|
+
>
|
|
10375
|
+
<cds-icon shape="times" status="neutral" size="md"></cds-icon>
|
|
10376
|
+
</button>
|
|
10377
|
+
<cds-icon
|
|
10378
|
+
*ngIf="showInvalid"
|
|
10379
|
+
class="clr-validate-icon"
|
|
10380
|
+
shape="exclamation-circle"
|
|
10381
|
+
status="danger"
|
|
10382
|
+
aria-hidden="true"
|
|
10383
|
+
></cds-icon>
|
|
10384
|
+
<cds-icon
|
|
10385
|
+
*ngIf="showValid"
|
|
10386
|
+
class="clr-validate-icon"
|
|
10387
|
+
shape="check-circle"
|
|
10388
|
+
status="success"
|
|
10389
|
+
aria-hidden="true"
|
|
10390
|
+
></cds-icon>
|
|
10391
|
+
</div>
|
|
10392
|
+
<ng-content select="clr-control-helper" *ngIf="showHelper"></ng-content>
|
|
10393
|
+
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
10394
|
+
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
10395
|
+
</div>
|
|
10396
|
+
`, isInline: true, 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: "directive", type: ClrLabel, selector: "label", inputs: ["for"] }] });
|
|
10397
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInputContainer, decorators: [{
|
|
10398
|
+
type: Component,
|
|
10399
|
+
args: [{
|
|
10400
|
+
selector: 'clr-file-input-container',
|
|
10401
|
+
template: `
|
|
10402
|
+
<ng-content select="label"></ng-content>
|
|
10403
|
+
<label *ngIf="!label && addGrid()"></label>
|
|
10404
|
+
<div class="clr-control-container" [ngClass]="controlClass()">
|
|
10405
|
+
<div class="clr-file-input-wrapper">
|
|
10406
|
+
<ng-content select="[clrFileInput]"></ng-content>
|
|
10407
|
+
<button
|
|
10408
|
+
#browseButton
|
|
10409
|
+
type="button"
|
|
10410
|
+
class="btn btn-sm clr-file-input-browse-button"
|
|
10411
|
+
[attr.aria-describedby]="browseButtonDescribedBy"
|
|
10412
|
+
[disabled]="disabled"
|
|
10413
|
+
(click)="browse()"
|
|
10414
|
+
>
|
|
10415
|
+
<cds-icon shape="folder-open"></cds-icon>
|
|
10416
|
+
<span class="clr-file-input-browse-button-text">
|
|
10417
|
+
{{ fileInput?.selection?.buttonLabel || customButtonLabel || commonStrings.keys.browse }}
|
|
10418
|
+
</span>
|
|
10419
|
+
</button>
|
|
10420
|
+
<button
|
|
10421
|
+
*ngIf="fileInput?.selection?.fileCount"
|
|
10422
|
+
type="button"
|
|
10423
|
+
class="btn btn-sm clr-file-input-clear-button"
|
|
10424
|
+
[attr.aria-label]="fileInput?.selection?.clearFilesButtonLabel"
|
|
10425
|
+
(click)="clearSelectedFiles()"
|
|
10426
|
+
>
|
|
10427
|
+
<cds-icon shape="times" status="neutral" size="md"></cds-icon>
|
|
10428
|
+
</button>
|
|
10429
|
+
<cds-icon
|
|
10430
|
+
*ngIf="showInvalid"
|
|
10431
|
+
class="clr-validate-icon"
|
|
10432
|
+
shape="exclamation-circle"
|
|
10433
|
+
status="danger"
|
|
10434
|
+
aria-hidden="true"
|
|
10435
|
+
></cds-icon>
|
|
10436
|
+
<cds-icon
|
|
10437
|
+
*ngIf="showValid"
|
|
10438
|
+
class="clr-validate-icon"
|
|
10439
|
+
shape="check-circle"
|
|
10440
|
+
status="success"
|
|
10441
|
+
aria-hidden="true"
|
|
10442
|
+
></cds-icon>
|
|
10443
|
+
</div>
|
|
10444
|
+
<ng-content select="clr-control-helper" *ngIf="showHelper"></ng-content>
|
|
10445
|
+
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
10446
|
+
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
10447
|
+
</div>
|
|
10448
|
+
`,
|
|
10449
|
+
host: {
|
|
10450
|
+
'[class.clr-form-control]': 'true',
|
|
10451
|
+
'[class.clr-form-control-disabled]': 'disabled',
|
|
10452
|
+
'[class.clr-row]': 'addGrid()',
|
|
10453
|
+
},
|
|
10454
|
+
providers: [IfControlStateService, NgControlService, ControlIdService, ControlClassService],
|
|
10455
|
+
}]
|
|
10456
|
+
}], propDecorators: { customButtonLabel: [{
|
|
10457
|
+
type: Input,
|
|
10458
|
+
args: ['clrButtonLabel']
|
|
10459
|
+
}], fileInput: [{
|
|
10460
|
+
type: ContentChild,
|
|
10461
|
+
args: [forwardRef(() => ClrFileInput)]
|
|
10462
|
+
}], browseButtonElementRef: [{
|
|
10463
|
+
type: ViewChild,
|
|
10464
|
+
args: ['browseButton']
|
|
10465
|
+
}] } });
|
|
10466
|
+
|
|
10467
|
+
/*
|
|
10468
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
10469
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
10470
|
+
* This software is released under MIT license.
|
|
10471
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
10472
|
+
*/
|
|
10473
|
+
class ClrFileInput extends WrappedFormControl {
|
|
10474
|
+
constructor(injector, renderer, viewContainerRef, elementRef, control, commonStrings) {
|
|
10475
|
+
super(viewContainerRef, ClrFileInputContainer, injector, control, renderer, elementRef);
|
|
10476
|
+
this.elementRef = elementRef;
|
|
10477
|
+
this.commonStrings = commonStrings;
|
|
10478
|
+
this.selection = undefined;
|
|
10479
|
+
}
|
|
10480
|
+
handleChange() {
|
|
10481
|
+
this.updateSelection();
|
|
10482
|
+
}
|
|
10483
|
+
updateSelection() {
|
|
10484
|
+
const files = this.elementRef.nativeElement.files;
|
|
10485
|
+
let selectionButtonLabel;
|
|
10486
|
+
let clearFilesButtonLabel;
|
|
10487
|
+
if ((files === null || files === void 0 ? void 0 : files.length) === 1) {
|
|
10488
|
+
const filename = files[0].name;
|
|
10489
|
+
selectionButtonLabel = filename;
|
|
10490
|
+
clearFilesButtonLabel = this.commonStrings.parse(this.commonStrings.keys.clearFile, {
|
|
10491
|
+
FILE: filename,
|
|
10492
|
+
});
|
|
10493
|
+
}
|
|
10494
|
+
else if ((files === null || files === void 0 ? void 0 : files.length) > 1) {
|
|
10495
|
+
const fileCount = files.length.toString();
|
|
10496
|
+
selectionButtonLabel = this.commonStrings.parse(this.commonStrings.keys.fileCount, {
|
|
10497
|
+
COUNT: fileCount,
|
|
10498
|
+
});
|
|
10499
|
+
clearFilesButtonLabel = this.commonStrings.parse(this.commonStrings.keys.clearFiles, {
|
|
10500
|
+
COUNT: fileCount,
|
|
10501
|
+
});
|
|
10502
|
+
}
|
|
10503
|
+
this.selection = {
|
|
10504
|
+
fileCount: files.length,
|
|
10505
|
+
buttonLabel: selectionButtonLabel,
|
|
10506
|
+
clearFilesButtonLabel,
|
|
10507
|
+
};
|
|
10508
|
+
}
|
|
10509
|
+
}
|
|
10510
|
+
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 });
|
|
10511
|
+
ClrFileInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrFileInput, selector: "input[type=\"file\"][clrFileInput]", host: { listeners: { "change": "handleChange()" }, properties: { "class.clr-file-input": "true" } }, usesInheritance: true, ngImport: i0 });
|
|
10512
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInput, decorators: [{
|
|
10513
|
+
type: Directive,
|
|
10514
|
+
args: [{
|
|
10515
|
+
selector: 'input[type="file"][clrFileInput]',
|
|
10516
|
+
host: {
|
|
10517
|
+
'[class.clr-file-input]': 'true',
|
|
10518
|
+
},
|
|
10519
|
+
}]
|
|
10520
|
+
}], ctorParameters: function () {
|
|
10521
|
+
return [{ type: i0.Injector }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }, { type: i0.ElementRef }, { type: i1.NgControl, decorators: [{
|
|
10522
|
+
type: Self
|
|
10523
|
+
}, {
|
|
10524
|
+
type: Optional
|
|
10525
|
+
}] }, { type: ClrCommonStringsService }];
|
|
10526
|
+
}, propDecorators: { handleChange: [{
|
|
10527
|
+
type: HostListener,
|
|
10528
|
+
args: ['change']
|
|
10529
|
+
}] } });
|
|
10530
|
+
|
|
10531
|
+
/*
|
|
10532
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
10533
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
10534
|
+
* This software is released under MIT license.
|
|
10535
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
10536
|
+
*/
|
|
10537
|
+
class ClrFileInputValidator {
|
|
10538
|
+
constructor(elementRef) {
|
|
10539
|
+
this.elementRef = elementRef;
|
|
10540
|
+
}
|
|
10541
|
+
validate(control) {
|
|
10542
|
+
const files = control.value;
|
|
10543
|
+
const fileInputElement = this.elementRef.nativeElement;
|
|
10544
|
+
const errors = {};
|
|
10545
|
+
// required validation (native attribute)
|
|
10546
|
+
if (fileInputElement.required && (files === null || files === void 0 ? void 0 : files.length) === 0) {
|
|
10547
|
+
errors.required = true;
|
|
10548
|
+
}
|
|
10549
|
+
// accept validation (native attribute)
|
|
10550
|
+
if (fileInputElement.accept && (files === null || files === void 0 ? void 0 : files.length) > 0) {
|
|
10551
|
+
const accept = fileInputElement.accept.split(',').map(type => type.trim());
|
|
10552
|
+
for (let i = 0; i < files.length; i++) {
|
|
10553
|
+
const file = files.item(i);
|
|
10554
|
+
const [fileExtension] = file.name.match(/\..+$/);
|
|
10555
|
+
if (!accept.includes(file.type) && !accept.includes(fileExtension)) {
|
|
10556
|
+
errors.accept = errors.accept || [];
|
|
10557
|
+
errors.accept.push({ name: file.name, accept, type: file.type, extension: fileExtension });
|
|
10558
|
+
}
|
|
10559
|
+
}
|
|
10560
|
+
}
|
|
10561
|
+
// min file validation (custom input)
|
|
10562
|
+
if (this.minFileSize && (files === null || files === void 0 ? void 0 : files.length) > 0) {
|
|
10563
|
+
for (let i = 0; i < files.length; i++) {
|
|
10564
|
+
const file = files.item(i);
|
|
10565
|
+
if (file.size < this.minFileSize) {
|
|
10566
|
+
errors.minFileSize = errors.minFileSize || [];
|
|
10567
|
+
errors.minFileSize.push({ name: file.name, minFileSize: this.minFileSize, actualFileSize: file.size });
|
|
10568
|
+
}
|
|
10569
|
+
}
|
|
10570
|
+
}
|
|
10571
|
+
// max file validation (custom input)
|
|
10572
|
+
if (this.maxFileSize && (files === null || files === void 0 ? void 0 : files.length) > 0) {
|
|
10573
|
+
for (let i = 0; i < files.length; i++) {
|
|
10574
|
+
const file = files.item(i);
|
|
10575
|
+
if (file.size > this.maxFileSize) {
|
|
10576
|
+
errors.maxFileSize = errors.maxFileSize || [];
|
|
10577
|
+
errors.maxFileSize.push({ name: file.name, maxFileSize: this.maxFileSize, actualFileSize: file.size });
|
|
10578
|
+
}
|
|
10579
|
+
}
|
|
10580
|
+
}
|
|
10581
|
+
return Object.keys(errors).length ? errors : null;
|
|
10582
|
+
}
|
|
10583
|
+
}
|
|
10584
|
+
ClrFileInputValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInputValidator, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
10585
|
+
ClrFileInputValidator.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrFileInputValidator, selector: "input[type=\"file\"][clrFileInput]", inputs: { minFileSize: ["clrMinFileSize", "minFileSize"], maxFileSize: ["clrMaxFileSize", "maxFileSize"] }, providers: [{ provide: NG_VALIDATORS, useExisting: ClrFileInputValidator, multi: true }], ngImport: i0 });
|
|
10586
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInputValidator, decorators: [{
|
|
10587
|
+
type: Directive,
|
|
10588
|
+
args: [{
|
|
10589
|
+
selector: 'input[type="file"][clrFileInput]',
|
|
10590
|
+
providers: [{ provide: NG_VALIDATORS, useExisting: ClrFileInputValidator, multi: true }],
|
|
10591
|
+
}]
|
|
10592
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { minFileSize: [{
|
|
10593
|
+
type: Input,
|
|
10594
|
+
args: ['clrMinFileSize']
|
|
10595
|
+
}], maxFileSize: [{
|
|
10596
|
+
type: Input,
|
|
10597
|
+
args: ['clrMaxFileSize']
|
|
10598
|
+
}] } });
|
|
10599
|
+
|
|
10600
|
+
/*
|
|
10601
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
10602
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
10603
|
+
* This software is released under MIT license.
|
|
10604
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
10605
|
+
*/
|
|
10606
|
+
function buildFileList(files) {
|
|
10607
|
+
const dataTransfer = new DataTransfer();
|
|
10608
|
+
for (const file of files) {
|
|
10609
|
+
dataTransfer.items.add(file);
|
|
10610
|
+
}
|
|
10611
|
+
return dataTransfer.files;
|
|
10612
|
+
}
|
|
10613
|
+
function selectFiles(fileInputElement, files) {
|
|
10614
|
+
fileInputElement.files = files instanceof FileList ? files : buildFileList(files);
|
|
10615
|
+
fileInputElement.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));
|
|
10616
|
+
}
|
|
10617
|
+
function clearFiles(fileInputElement) {
|
|
10618
|
+
fileInputElement.value = '';
|
|
10619
|
+
fileInputElement.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));
|
|
10620
|
+
}
|
|
10621
|
+
|
|
10622
|
+
/*
|
|
10623
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
10624
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
10625
|
+
* This software is released under MIT license.
|
|
10626
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
10627
|
+
*/
|
|
10628
|
+
class ClrFileInputValueAccessor {
|
|
10629
|
+
constructor(elementRef) {
|
|
10630
|
+
this.elementRef = elementRef;
|
|
10631
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
10632
|
+
this.onChange = (_value) => { };
|
|
10633
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
10634
|
+
this.onTouched = () => { };
|
|
10635
|
+
}
|
|
10636
|
+
writeValue(value) {
|
|
10637
|
+
if (value !== undefined && value !== null && !(value instanceof FileList)) {
|
|
10638
|
+
throw new Error('The value of a file input control must be a FileList.');
|
|
10639
|
+
}
|
|
10640
|
+
if (value) {
|
|
10641
|
+
selectFiles(this.elementRef.nativeElement, value);
|
|
10642
|
+
}
|
|
10643
|
+
else if (this.elementRef.nativeElement.files.length) {
|
|
10644
|
+
clearFiles(this.elementRef.nativeElement);
|
|
10645
|
+
}
|
|
10646
|
+
}
|
|
10647
|
+
registerOnChange(fn) {
|
|
10648
|
+
this.onChange = fn;
|
|
10649
|
+
}
|
|
10650
|
+
registerOnTouched(fn) {
|
|
10651
|
+
this.onTouched = fn;
|
|
10652
|
+
}
|
|
10653
|
+
handleChange() {
|
|
10654
|
+
this.onTouched();
|
|
10655
|
+
this.onChange(this.elementRef.nativeElement.files);
|
|
10656
|
+
}
|
|
10657
|
+
}
|
|
10658
|
+
ClrFileInputValueAccessor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInputValueAccessor, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
10659
|
+
ClrFileInputValueAccessor.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrFileInputValueAccessor, selector: "input[type=\"file\"][clrFileInput]", host: { listeners: { "change": "handleChange()" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: ClrFileInputValueAccessor, multi: true }], ngImport: i0 });
|
|
10660
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInputValueAccessor, decorators: [{
|
|
10661
|
+
type: Directive,
|
|
10662
|
+
args: [{
|
|
10663
|
+
selector: 'input[type="file"][clrFileInput]',
|
|
10664
|
+
providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: ClrFileInputValueAccessor, multi: true }],
|
|
10665
|
+
}]
|
|
10666
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { handleChange: [{
|
|
10667
|
+
type: HostListener,
|
|
10668
|
+
args: ['change']
|
|
10669
|
+
}] } });
|
|
10670
|
+
|
|
10671
|
+
/*
|
|
10672
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
10673
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
10674
|
+
* This software is released under MIT license.
|
|
10675
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
10676
|
+
*/
|
|
10677
|
+
class ClrFileInputModule {
|
|
10678
|
+
constructor() {
|
|
10679
|
+
ClarityIcons.addIcons(folderOpenIcon);
|
|
10680
|
+
}
|
|
10681
|
+
}
|
|
10682
|
+
ClrFileInputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10683
|
+
ClrFileInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInputModule, declarations: [ClrFileInput, ClrFileInputContainer, ClrFileInputValidator, ClrFileInputValueAccessor], imports: [CommonModule, ClrIconModule, ClrCommonFormsModule], exports: [ClrCommonFormsModule,
|
|
10684
|
+
ClrFileInput,
|
|
10685
|
+
ClrFileInputContainer,
|
|
10686
|
+
ClrFileInputValidator,
|
|
10687
|
+
ClrFileInputValueAccessor] });
|
|
10688
|
+
ClrFileInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInputModule, imports: [CommonModule, ClrIconModule, ClrCommonFormsModule, ClrCommonFormsModule] });
|
|
10689
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInputModule, decorators: [{
|
|
10690
|
+
type: NgModule,
|
|
10691
|
+
args: [{
|
|
10692
|
+
imports: [CommonModule, ClrIconModule, ClrCommonFormsModule],
|
|
10693
|
+
declarations: [ClrFileInput, ClrFileInputContainer, ClrFileInputValidator, ClrFileInputValueAccessor],
|
|
10694
|
+
exports: [
|
|
10695
|
+
ClrCommonFormsModule,
|
|
10696
|
+
ClrFileInput,
|
|
10697
|
+
ClrFileInputContainer,
|
|
10698
|
+
ClrFileInputValidator,
|
|
10699
|
+
ClrFileInputValueAccessor,
|
|
10700
|
+
],
|
|
10701
|
+
}]
|
|
10702
|
+
}], ctorParameters: function () { return []; } });
|
|
10703
|
+
|
|
10704
|
+
/*
|
|
10705
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
10706
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
10707
|
+
* This software is released under MIT license.
|
|
10708
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
10709
|
+
*/
|
|
10710
|
+
|
|
10297
10711
|
/*
|
|
10298
10712
|
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
10299
10713
|
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
@@ -11236,6 +11650,7 @@ ClrFormsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version:
|
|
|
11236
11650
|
ClrCheckboxModule,
|
|
11237
11651
|
ClrComboboxModule,
|
|
11238
11652
|
ClrDatepickerModule,
|
|
11653
|
+
ClrFileInputModule,
|
|
11239
11654
|
ClrInputModule,
|
|
11240
11655
|
ClrPasswordModule,
|
|
11241
11656
|
ClrRadioModule,
|
|
@@ -11247,6 +11662,7 @@ ClrFormsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version:
|
|
|
11247
11662
|
ClrCheckboxModule,
|
|
11248
11663
|
ClrComboboxModule,
|
|
11249
11664
|
ClrDatepickerModule,
|
|
11665
|
+
ClrFileInputModule,
|
|
11250
11666
|
ClrInputModule,
|
|
11251
11667
|
ClrPasswordModule,
|
|
11252
11668
|
ClrRadioModule,
|
|
@@ -11263,6 +11679,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
11263
11679
|
ClrCheckboxModule,
|
|
11264
11680
|
ClrComboboxModule,
|
|
11265
11681
|
ClrDatepickerModule,
|
|
11682
|
+
ClrFileInputModule,
|
|
11266
11683
|
ClrInputModule,
|
|
11267
11684
|
ClrPasswordModule,
|
|
11268
11685
|
ClrRadioModule,
|
|
@@ -12729,6 +13146,11 @@ class DetailService {
|
|
|
12729
13146
|
this.toggleState = false;
|
|
12730
13147
|
this._state.next(this.toggleState);
|
|
12731
13148
|
this.modalStackService.trackModalClose(this);
|
|
13149
|
+
// In the case of browser zoom greater than 250%, the detail pane toggle button is not visible on the page.
|
|
13150
|
+
// Wait for the detail pane to close, and return focus to the detail toggle button.
|
|
13151
|
+
setTimeout(() => this.returnFocus(), 0);
|
|
13152
|
+
}
|
|
13153
|
+
returnFocus() {
|
|
12732
13154
|
if (this.button) {
|
|
12733
13155
|
this.button.focus();
|
|
12734
13156
|
this.button = null;
|
|
@@ -13038,7 +13460,7 @@ class DatagridRenderOrganizer {
|
|
|
13038
13460
|
this._renderStep.next(DatagridRenderStep.CLEAR_WIDTHS);
|
|
13039
13461
|
}
|
|
13040
13462
|
this._renderStep.next(DatagridRenderStep.COMPUTE_COLUMN_WIDTHS);
|
|
13041
|
-
this._renderStep.next(DatagridRenderStep.ALIGN_COLUMNS);
|
|
13463
|
+
this._renderStep.next(DatagridRenderStep.ALIGN_COLUMNS); // NOT USED
|
|
13042
13464
|
this.alreadySized = true;
|
|
13043
13465
|
this._renderStep.next(DatagridRenderStep.CALCULATE_MODE_OFF);
|
|
13044
13466
|
}
|
|
@@ -14753,6 +15175,7 @@ class ClrDatagridSelectionCellDirective {
|
|
|
14753
15175
|
this.selection = selection;
|
|
14754
15176
|
}
|
|
14755
15177
|
onSelectionCellClick(event) {
|
|
15178
|
+
var _a;
|
|
14756
15179
|
// We want to effectively expand the selection click target to the entire selection cell.
|
|
14757
15180
|
// If row selection is enabled, do nothing because the entire selection cell is already clickable.
|
|
14758
15181
|
if (this.selection.rowSelectionMode) {
|
|
@@ -14760,7 +15183,7 @@ class ClrDatagridSelectionCellDirective {
|
|
|
14760
15183
|
}
|
|
14761
15184
|
// If click was outside the label/input, forward the click to the input.
|
|
14762
15185
|
if (event.target.tagName !== 'LABEL' && event.target.tagName !== 'INPUT') {
|
|
14763
|
-
event.target.querySelector('input').click();
|
|
15186
|
+
(_a = event.target.querySelector('input')) === null || _a === void 0 ? void 0 : _a.click();
|
|
14764
15187
|
}
|
|
14765
15188
|
}
|
|
14766
15189
|
}
|
|
@@ -15030,7 +15453,7 @@ ClrDatagridRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version
|
|
|
15030
15453
|
DatagridIfExpandService,
|
|
15031
15454
|
{ provide: IfExpandService, useExisting: DatagridIfExpandService },
|
|
15032
15455
|
{ provide: LoadingListener, useExisting: DatagridIfExpandService },
|
|
15033
|
-
], queries: [{ propertyName: "dgCells", predicate: ClrDatagridCell }], viewQueries: [{ propertyName: "expandAnimation", first: true, predicate: ClrExpandableAnimation, descendants: true }, { propertyName: "detailButton", first: true, predicate: ["detailButton"], descendants: true }, { propertyName: "_stickyCells", first: true, predicate: ["stickyCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_scrollableCells", first: true, predicate: ["scrollableCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_calculatedCells", first: true, predicate: ["calculatedCells"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n We need to wrap the #rowContent in label element if we are in rowSelectionMode.\n Clicking of that wrapper label will equate to clicking on the whole row, which triggers the checkbox to toggle.\n-->\n<div\n class=\"datagrid-row-clickable\"\n *ngIf=\"selection.rowSelectionMode\"\n (mousedown)=\"clearRanges($event)\"\n (click)=\"selectRow(!selected, $event)\"\n>\n <clr-expandable-animation [clrExpandTrigger]=\"expandAnimationTrigger\" *ngIf=\"expand.expandable\">\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n </clr-expandable-animation>\n <ng-template [ngTemplateOutlet]=\"rowContent\" *ngIf=\"!expand.expandable\"></ng-template>\n</div>\n\n<clr-expandable-animation\n *ngIf=\"!selection.rowSelectionMode && expand.expandable\"\n [clrExpandTrigger]=\"expandAnimationTrigger\"\n>\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n</clr-expandable-animation>\n\n<ng-template *ngIf=\"!selection.rowSelectionMode && !expand.expandable\" [ngTemplateOutlet]=\"rowContent\"></ng-template>\n\n<!--\n We need the \"project into template\" hacks because we need this in 2 different places\n depending on whether the details replace the row or not.\n-->\n<ng-template #detail>\n <ng-content select=\"clr-dg-row-detail\"></ng-content>\n</ng-template>\n\n<ng-template #rowContent>\n <div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [class.datagrid-row-detail-open]=\"detailService.isRowOpen(item)\"\n >\n <div class=\"datagrid-row-sticky\">\n <!-- Sticky elements here -->\n <ng-container #stickyCells>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <clr-checkbox-wrapper>\n <input\n type=\"checkbox\"\n clrCheckbox\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 </clr-checkbox-wrapper>\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 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 *ngIf=\"!expand.loading\"\n (click)=\"toggleExpand()\"\n type=\"button\"\n class=\"datagrid-expandable-caret-button\"\n [attr.aria-expanded]=\"expand.expanded\"\n [attr.aria-label]=\"expand.expanded ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-controls]=\"expandableId\"\n >\n <cds-icon\n shape=\"angle\"\n class=\"datagrid-expandable-caret-icon\"\n [attr.direction]=\"expand.expanded ? 'down' : 'right'\"\n [attr.title]=\"expand.expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n <clr-spinner *ngIf=\"expand.loading\" clrSmall>{{ commonStrings.keys.loading }}</clr-spinner>\n </ng-container>\n </div>\n <div
|
|
15456
|
+
], queries: [{ propertyName: "dgCells", predicate: ClrDatagridCell }], viewQueries: [{ propertyName: "expandAnimation", first: true, predicate: ClrExpandableAnimation, descendants: true }, { propertyName: "detailButton", first: true, predicate: ["detailButton"], descendants: true }, { propertyName: "_stickyCells", first: true, predicate: ["stickyCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_scrollableCells", first: true, predicate: ["scrollableCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_calculatedCells", first: true, predicate: ["calculatedCells"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n We need to wrap the #rowContent in label element if we are in rowSelectionMode.\n Clicking of that wrapper label will equate to clicking on the whole row, which triggers the checkbox to toggle.\n-->\n<div\n class=\"datagrid-row-clickable\"\n *ngIf=\"selection.rowSelectionMode\"\n (mousedown)=\"clearRanges($event)\"\n (click)=\"selectRow(!selected, $event)\"\n>\n <clr-expandable-animation [clrExpandTrigger]=\"expandAnimationTrigger\" *ngIf=\"expand.expandable\">\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n </clr-expandable-animation>\n <ng-template [ngTemplateOutlet]=\"rowContent\" *ngIf=\"!expand.expandable\"></ng-template>\n</div>\n\n<clr-expandable-animation\n *ngIf=\"!selection.rowSelectionMode && expand.expandable\"\n [clrExpandTrigger]=\"expandAnimationTrigger\"\n>\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n</clr-expandable-animation>\n\n<ng-template *ngIf=\"!selection.rowSelectionMode && !expand.expandable\" [ngTemplateOutlet]=\"rowContent\"></ng-template>\n\n<!--\n We need the \"project into template\" hacks because we need this in 2 different places\n depending on whether the details replace the row or not.\n-->\n<ng-template #detail>\n <ng-content select=\"clr-dg-row-detail\"></ng-content>\n</ng-template>\n\n<ng-template #rowContent>\n <div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [class.datagrid-row-detail-open]=\"detailService.isRowOpen(item)\"\n >\n <div class=\"datagrid-row-sticky\">\n <!-- Sticky elements here -->\n <ng-container #stickyCells>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <clr-checkbox-wrapper>\n <input\n type=\"checkbox\"\n clrCheckbox\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 </clr-checkbox-wrapper>\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 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 *ngIf=\"!expand.loading\"\n (click)=\"toggleExpand()\"\n type=\"button\"\n class=\"datagrid-expandable-caret-button\"\n [attr.aria-expanded]=\"expand.expanded\"\n [attr.aria-label]=\"expand.expanded ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-controls]=\"expandableId\"\n >\n <cds-icon\n shape=\"angle\"\n class=\"datagrid-expandable-caret-icon\"\n [attr.direction]=\"expand.expanded ? 'down' : 'right'\"\n [attr.title]=\"expand.expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n <clr-spinner *ngIf=\"expand.loading\" clrSmall>{{ commonStrings.keys.loading }}</clr-spinner>\n </ng-container>\n </div>\n <div\n *ngIf=\"detailService.enabled\"\n class=\"datagrid-detail-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <button\n (click)=\"detailService.toggle(item, detailButton)\"\n type=\"button\"\n #detailButton\n class=\"datagrid-detail-caret-button\"\n [class.is-open]=\"detailService.isRowOpen(item)\"\n [attr.aria-label]=\"detailService.isRowOpen(item) ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-expanded]=\"detailService.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</ng-template>\n\n<ng-container #calculatedCells></ng-container>\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: ClrLabel, selector: "label", inputs: ["for"] }, { kind: "directive", type: ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { kind: "component", type: ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }, { kind: "directive", type: ClrRadio, selector: "[clrRadio]" }, { kind: "component", type: ClrRadioWrapper, selector: "clr-radio-wrapper" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ClrExpandableAnimation, selector: "clr-expandable-animation", inputs: ["clrExpandTrigger"] }, { kind: "component", type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }, { kind: "directive", type: ClrDatagridSelectionCellDirective, selector: ".datagrid-select" }] });
|
|
15034
15457
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridRow, decorators: [{
|
|
15035
15458
|
type: Component,
|
|
15036
15459
|
args: [{ selector: 'clr-dg-row', host: {
|
|
@@ -15042,7 +15465,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
15042
15465
|
DatagridIfExpandService,
|
|
15043
15466
|
{ provide: IfExpandService, useExisting: DatagridIfExpandService },
|
|
15044
15467
|
{ provide: LoadingListener, useExisting: DatagridIfExpandService },
|
|
15045
|
-
], template: "<!--\n We need to wrap the #rowContent in label element if we are in rowSelectionMode.\n Clicking of that wrapper label will equate to clicking on the whole row, which triggers the checkbox to toggle.\n-->\n<div\n class=\"datagrid-row-clickable\"\n *ngIf=\"selection.rowSelectionMode\"\n (mousedown)=\"clearRanges($event)\"\n (click)=\"selectRow(!selected, $event)\"\n>\n <clr-expandable-animation [clrExpandTrigger]=\"expandAnimationTrigger\" *ngIf=\"expand.expandable\">\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n </clr-expandable-animation>\n <ng-template [ngTemplateOutlet]=\"rowContent\" *ngIf=\"!expand.expandable\"></ng-template>\n</div>\n\n<clr-expandable-animation\n *ngIf=\"!selection.rowSelectionMode && expand.expandable\"\n [clrExpandTrigger]=\"expandAnimationTrigger\"\n>\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n</clr-expandable-animation>\n\n<ng-template *ngIf=\"!selection.rowSelectionMode && !expand.expandable\" [ngTemplateOutlet]=\"rowContent\"></ng-template>\n\n<!--\n We need the \"project into template\" hacks because we need this in 2 different places\n depending on whether the details replace the row or not.\n-->\n<ng-template #detail>\n <ng-content select=\"clr-dg-row-detail\"></ng-content>\n</ng-template>\n\n<ng-template #rowContent>\n <div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [class.datagrid-row-detail-open]=\"detailService.isRowOpen(item)\"\n >\n <div class=\"datagrid-row-sticky\">\n <!-- Sticky elements here -->\n <ng-container #stickyCells>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <clr-checkbox-wrapper>\n <input\n type=\"checkbox\"\n clrCheckbox\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 </clr-checkbox-wrapper>\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 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 *ngIf=\"!expand.loading\"\n (click)=\"toggleExpand()\"\n type=\"button\"\n class=\"datagrid-expandable-caret-button\"\n [attr.aria-expanded]=\"expand.expanded\"\n [attr.aria-label]=\"expand.expanded ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-controls]=\"expandableId\"\n >\n <cds-icon\n shape=\"angle\"\n class=\"datagrid-expandable-caret-icon\"\n [attr.direction]=\"expand.expanded ? 'down' : 'right'\"\n [attr.title]=\"expand.expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n <clr-spinner *ngIf=\"expand.loading\" clrSmall>{{ commonStrings.keys.loading }}</clr-spinner>\n </ng-container>\n </div>\n <div
|
|
15468
|
+
], template: "<!--\n We need to wrap the #rowContent in label element if we are in rowSelectionMode.\n Clicking of that wrapper label will equate to clicking on the whole row, which triggers the checkbox to toggle.\n-->\n<div\n class=\"datagrid-row-clickable\"\n *ngIf=\"selection.rowSelectionMode\"\n (mousedown)=\"clearRanges($event)\"\n (click)=\"selectRow(!selected, $event)\"\n>\n <clr-expandable-animation [clrExpandTrigger]=\"expandAnimationTrigger\" *ngIf=\"expand.expandable\">\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n </clr-expandable-animation>\n <ng-template [ngTemplateOutlet]=\"rowContent\" *ngIf=\"!expand.expandable\"></ng-template>\n</div>\n\n<clr-expandable-animation\n *ngIf=\"!selection.rowSelectionMode && expand.expandable\"\n [clrExpandTrigger]=\"expandAnimationTrigger\"\n>\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n</clr-expandable-animation>\n\n<ng-template *ngIf=\"!selection.rowSelectionMode && !expand.expandable\" [ngTemplateOutlet]=\"rowContent\"></ng-template>\n\n<!--\n We need the \"project into template\" hacks because we need this in 2 different places\n depending on whether the details replace the row or not.\n-->\n<ng-template #detail>\n <ng-content select=\"clr-dg-row-detail\"></ng-content>\n</ng-template>\n\n<ng-template #rowContent>\n <div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [class.datagrid-row-detail-open]=\"detailService.isRowOpen(item)\"\n >\n <div class=\"datagrid-row-sticky\">\n <!-- Sticky elements here -->\n <ng-container #stickyCells>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <clr-checkbox-wrapper>\n <input\n type=\"checkbox\"\n clrCheckbox\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 </clr-checkbox-wrapper>\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 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 *ngIf=\"!expand.loading\"\n (click)=\"toggleExpand()\"\n type=\"button\"\n class=\"datagrid-expandable-caret-button\"\n [attr.aria-expanded]=\"expand.expanded\"\n [attr.aria-label]=\"expand.expanded ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-controls]=\"expandableId\"\n >\n <cds-icon\n shape=\"angle\"\n class=\"datagrid-expandable-caret-icon\"\n [attr.direction]=\"expand.expanded ? 'down' : 'right'\"\n [attr.title]=\"expand.expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n <clr-spinner *ngIf=\"expand.loading\" clrSmall>{{ commonStrings.keys.loading }}</clr-spinner>\n </ng-container>\n </div>\n <div\n *ngIf=\"detailService.enabled\"\n class=\"datagrid-detail-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <button\n (click)=\"detailService.toggle(item, detailButton)\"\n type=\"button\"\n #detailButton\n class=\"datagrid-detail-caret-button\"\n [class.is-open]=\"detailService.isRowOpen(item)\"\n [attr.aria-label]=\"detailService.isRowOpen(item) ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-expanded]=\"detailService.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</ng-template>\n\n<ng-container #calculatedCells></ng-container>\n" }]
|
|
15046
15469
|
}], ctorParameters: function () {
|
|
15047
15470
|
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: [{
|
|
15048
15471
|
type: Inject,
|
|
@@ -15253,6 +15676,7 @@ class KeyNavigationGridController {
|
|
|
15253
15676
|
this.zone = zone;
|
|
15254
15677
|
this.listenersAdded = false;
|
|
15255
15678
|
this.destroy$ = new Subject();
|
|
15679
|
+
this._activeCell = null;
|
|
15256
15680
|
this.config = {
|
|
15257
15681
|
keyGridRows: '[role=row]:not(.datagrid-placeholder)',
|
|
15258
15682
|
keyGridCells: '[role=gridcell]:not(.datagrid-hidden-column):not(.datagrid-placeholder-content), [role=columnheader]:not(.datagrid-hidden-column):not(.datagrid-placeholder-content), .datagrid-detail-caret',
|
|
@@ -15293,6 +15717,11 @@ class KeyNavigationGridController {
|
|
|
15293
15717
|
}
|
|
15294
15718
|
}
|
|
15295
15719
|
});
|
|
15720
|
+
fromEvent(this.grid, 'wheel')
|
|
15721
|
+
.pipe(takeUntil(this.destroy$))
|
|
15722
|
+
.subscribe(() => {
|
|
15723
|
+
this.removeActiveCell();
|
|
15724
|
+
});
|
|
15296
15725
|
fromEvent(this.grid, 'keydown')
|
|
15297
15726
|
.pipe(takeUntil(this.destroy$))
|
|
15298
15727
|
.subscribe((e) => {
|
|
@@ -15333,6 +15762,12 @@ class KeyNavigationGridController {
|
|
|
15333
15762
|
const firstCell = this.cells ? this.cells[0] : null;
|
|
15334
15763
|
firstCell === null || firstCell === void 0 ? void 0 : firstCell.setAttribute('tabindex', '0');
|
|
15335
15764
|
}
|
|
15765
|
+
removeActiveCell() {
|
|
15766
|
+
this._activeCell = null;
|
|
15767
|
+
}
|
|
15768
|
+
getActiveCell() {
|
|
15769
|
+
return this._activeCell;
|
|
15770
|
+
}
|
|
15336
15771
|
setActiveCell(activeCell) {
|
|
15337
15772
|
const prior = this.cells ? Array.from(this.cells).find(c => c.getAttribute('tabindex') === '0') : null;
|
|
15338
15773
|
if (prior) {
|
|
@@ -15342,15 +15777,17 @@ class KeyNavigationGridController {
|
|
|
15342
15777
|
const items = getTabableItems(activeCell);
|
|
15343
15778
|
const item = activeCell.getAttribute('role') !== 'columnheader' && items[0] ? items[0] : activeCell;
|
|
15344
15779
|
item.focus();
|
|
15780
|
+
this._activeCell = item;
|
|
15345
15781
|
}
|
|
15346
15782
|
getNextItemCoordinate(e) {
|
|
15783
|
+
var _a;
|
|
15347
15784
|
let currentCell = this.cells ? Array.from(this.cells).find(i => i.getAttribute('tabindex') === '0') : null;
|
|
15348
15785
|
if (e.code === 'Tab') {
|
|
15349
15786
|
currentCell = document.activeElement;
|
|
15350
15787
|
}
|
|
15351
15788
|
const currentRow = this.rows && currentCell ? Array.from(this.rows).find(r => r.contains(currentCell)) : null;
|
|
15352
15789
|
const numOfRows = this.rows ? this.rows.length - 1 : 0;
|
|
15353
|
-
const numOfColumns = this.cells ? this.cells.length / this.rows.length - 1 : 0;
|
|
15790
|
+
const numOfColumns = this.cells ? Math.floor(this.cells.length / this.rows.length - 1) : 0;
|
|
15354
15791
|
let x = currentRow && currentCell
|
|
15355
15792
|
? Array.from(currentRow.querySelectorAll(this.config.keyGridCells)).indexOf(currentCell)
|
|
15356
15793
|
: 0;
|
|
@@ -15358,7 +15795,7 @@ class KeyNavigationGridController {
|
|
|
15358
15795
|
const dir = this.host.dir;
|
|
15359
15796
|
const inlineStart = dir === 'rtl' ? 'ArrowRight' : 'ArrowLeft';
|
|
15360
15797
|
const inlineEnd = dir === 'rtl' ? 'ArrowLeft' : 'ArrowRight';
|
|
15361
|
-
const itemsPerPage = this.rows.
|
|
15798
|
+
const itemsPerPage = Math.floor(((_a = this.host) === null || _a === void 0 ? void 0 : _a.querySelector('.datagrid').clientHeight) / this.rows[0].clientHeight) - 1 || 0;
|
|
15362
15799
|
if (e.code === 'ArrowUp' && y !== 0) {
|
|
15363
15800
|
y = y - 1;
|
|
15364
15801
|
}
|
|
@@ -15384,7 +15821,7 @@ class KeyNavigationGridController {
|
|
|
15384
15821
|
}
|
|
15385
15822
|
}
|
|
15386
15823
|
else if (e.code === 'PageUp') {
|
|
15387
|
-
y = y - itemsPerPage > 0 ? y - itemsPerPage :
|
|
15824
|
+
y = y - itemsPerPage > 0 ? y - itemsPerPage + 1 : 1;
|
|
15388
15825
|
}
|
|
15389
15826
|
else if (e.code === 'PageDown') {
|
|
15390
15827
|
y = y + itemsPerPage < numOfRows ? y + itemsPerPage : numOfRows;
|
|
@@ -15404,27 +15841,152 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
15404
15841
|
* This software is released under MIT license.
|
|
15405
15842
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15406
15843
|
*/
|
|
15407
|
-
|
|
15408
|
-
|
|
15409
|
-
|
|
15410
|
-
|
|
15411
|
-
|
|
15412
|
-
|
|
15413
|
-
|
|
15414
|
-
|
|
15415
|
-
|
|
15416
|
-
|
|
15417
|
-
|
|
15418
|
-
|
|
15844
|
+
// @TODO The top two are not used now, which is probably a performance drag that was broken along the way.
|
|
15845
|
+
// There was a previous pattern to hide everything to do computation then display, for Firefox, needs revisiting.
|
|
15846
|
+
const NO_LAYOUT_CLASS = 'datagrid-no-layout';
|
|
15847
|
+
const COMPUTE_WIDTH_CLASS = 'datagrid-computing-columns-width';
|
|
15848
|
+
const STRICT_WIDTH_CLASS = 'datagrid-fixed-width';
|
|
15849
|
+
const HIDDEN_COLUMN_CLASS = 'datagrid-hidden-column';
|
|
15850
|
+
|
|
15851
|
+
/*
|
|
15852
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
15853
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
15854
|
+
* This software is released under MIT license.
|
|
15855
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15856
|
+
*/
|
|
15857
|
+
class DatagridCellRenderer {
|
|
15858
|
+
constructor(el, renderer, organizer) {
|
|
15419
15859
|
this.el = el;
|
|
15420
|
-
this.
|
|
15421
|
-
this.
|
|
15422
|
-
this.
|
|
15423
|
-
|
|
15424
|
-
|
|
15425
|
-
this.
|
|
15426
|
-
this.
|
|
15427
|
-
|
|
15860
|
+
this.renderer = renderer;
|
|
15861
|
+
this.subscriptions = [];
|
|
15862
|
+
this.subscriptions.push(organizer.filterRenderSteps(DatagridRenderStep.CLEAR_WIDTHS).subscribe(() => this.clearWidth()));
|
|
15863
|
+
}
|
|
15864
|
+
ngOnDestroy() {
|
|
15865
|
+
this.subscriptions.forEach(sub => sub.unsubscribe());
|
|
15866
|
+
if (this.stateSubscription) {
|
|
15867
|
+
this.stateSubscription.unsubscribe();
|
|
15868
|
+
}
|
|
15869
|
+
}
|
|
15870
|
+
resetState(state) {
|
|
15871
|
+
state.changes = ALL_COLUMN_CHANGES;
|
|
15872
|
+
this.setWidth(state);
|
|
15873
|
+
this.setHidden(state);
|
|
15874
|
+
}
|
|
15875
|
+
setWidth(state) {
|
|
15876
|
+
if (state.strictWidth) {
|
|
15877
|
+
this.renderer.addClass(this.el.nativeElement, STRICT_WIDTH_CLASS);
|
|
15878
|
+
}
|
|
15879
|
+
else {
|
|
15880
|
+
this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);
|
|
15881
|
+
}
|
|
15882
|
+
this.renderer.setStyle(this.el.nativeElement, 'width', state.width + 'px');
|
|
15883
|
+
}
|
|
15884
|
+
setHidden(state) {
|
|
15885
|
+
if (state.hidden) {
|
|
15886
|
+
this.renderer.addClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);
|
|
15887
|
+
}
|
|
15888
|
+
else {
|
|
15889
|
+
this.renderer.removeClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);
|
|
15890
|
+
}
|
|
15891
|
+
}
|
|
15892
|
+
clearWidth() {
|
|
15893
|
+
this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);
|
|
15894
|
+
this.renderer.setStyle(this.el.nativeElement, 'width', null);
|
|
15895
|
+
}
|
|
15896
|
+
}
|
|
15897
|
+
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 });
|
|
15898
|
+
DatagridCellRenderer.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: DatagridCellRenderer, selector: "clr-dg-cell", ngImport: i0 });
|
|
15899
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridCellRenderer, decorators: [{
|
|
15900
|
+
type: Directive,
|
|
15901
|
+
args: [{
|
|
15902
|
+
selector: 'clr-dg-cell',
|
|
15903
|
+
}]
|
|
15904
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DatagridRenderOrganizer }]; } });
|
|
15905
|
+
|
|
15906
|
+
/*
|
|
15907
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
15908
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
15909
|
+
* This software is released under MIT license.
|
|
15910
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15911
|
+
*/
|
|
15912
|
+
class DatagridRowRenderer {
|
|
15913
|
+
constructor(columnsService) {
|
|
15914
|
+
this.columnsService = columnsService;
|
|
15915
|
+
this.subscriptions = [];
|
|
15916
|
+
}
|
|
15917
|
+
ngAfterContentInit() {
|
|
15918
|
+
this.setCellsState(); // case #3 and #4
|
|
15919
|
+
this.subscriptions.push(this.cells.changes.subscribe(() => {
|
|
15920
|
+
this.setCellsState(); // case #2
|
|
15921
|
+
// Note on case #2: In the case of dynamic columns, when one column (header/cell together) gets deleted,
|
|
15922
|
+
// this.cells.changes emits before this.columnsService.columns gets updated in MainRenderer
|
|
15923
|
+
// when this.headers.changes emits as well. So that means there will be n+1 column state providers
|
|
15924
|
+
// when this.cells.changes emits. Hence, we should quit earlier there. But this method will be called
|
|
15925
|
+
// right after again when this.headers.changes emits. By then, there will be the same number of column state
|
|
15926
|
+
// providers as column headers.
|
|
15927
|
+
}));
|
|
15928
|
+
}
|
|
15929
|
+
ngOnDestroy() {
|
|
15930
|
+
this.subscriptions.forEach(sub => sub.unsubscribe());
|
|
15931
|
+
}
|
|
15932
|
+
setCellsState() {
|
|
15933
|
+
// This method runs in four cases:
|
|
15934
|
+
// 1. When the initial rows appear on the first page.
|
|
15935
|
+
// In this case, the method will be called in DatagridMainRenderer.
|
|
15936
|
+
// 2. When columns (corresponding header/cells) get added and deleted.
|
|
15937
|
+
// In this case, the method will be called in DatagridMainRenderer. (Read the note on this case above).
|
|
15938
|
+
// 3. When rows load asynchronously.
|
|
15939
|
+
// In this case, the method will be called in this class.
|
|
15940
|
+
// 4. When rows load after switching pages.
|
|
15941
|
+
// In this case, the method will be called in this class (Basically, same as the case 3).
|
|
15942
|
+
if (this.cells.length === this.columnsService.columns.length) {
|
|
15943
|
+
this.cells.forEach((cell, index) => {
|
|
15944
|
+
if (this.columnsService.columns[index]) {
|
|
15945
|
+
cell.resetState(this.columnsService.columns[index].value);
|
|
15946
|
+
}
|
|
15947
|
+
});
|
|
15948
|
+
}
|
|
15949
|
+
}
|
|
15950
|
+
}
|
|
15951
|
+
DatagridRowRenderer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridRowRenderer, deps: [{ token: ColumnsService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
15952
|
+
DatagridRowRenderer.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: DatagridRowRenderer, selector: "clr-dg-row, clr-dg-row-detail", queries: [{ propertyName: "cells", predicate: DatagridCellRenderer }], ngImport: i0 });
|
|
15953
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridRowRenderer, decorators: [{
|
|
15954
|
+
type: Directive,
|
|
15955
|
+
args: [{
|
|
15956
|
+
selector: 'clr-dg-row, clr-dg-row-detail',
|
|
15957
|
+
}]
|
|
15958
|
+
}], ctorParameters: function () { return [{ type: ColumnsService }]; }, propDecorators: { cells: [{
|
|
15959
|
+
type: ContentChildren,
|
|
15960
|
+
args: [DatagridCellRenderer]
|
|
15961
|
+
}] } });
|
|
15962
|
+
|
|
15963
|
+
/*
|
|
15964
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
15965
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
15966
|
+
* This software is released under MIT license.
|
|
15967
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15968
|
+
*/
|
|
15969
|
+
class ClrDatagrid {
|
|
15970
|
+
constructor(organizer, items, expandableRows, selection, rowActionService, stateProvider, displayMode, renderer, detailService, document, el, page, commonStrings, columnsService, keyNavigation, zone) {
|
|
15971
|
+
this.organizer = organizer;
|
|
15972
|
+
this.items = items;
|
|
15973
|
+
this.expandableRows = expandableRows;
|
|
15974
|
+
this.selection = selection;
|
|
15975
|
+
this.rowActionService = rowActionService;
|
|
15976
|
+
this.stateProvider = stateProvider;
|
|
15977
|
+
this.displayMode = displayMode;
|
|
15978
|
+
this.renderer = renderer;
|
|
15979
|
+
this.detailService = detailService;
|
|
15980
|
+
this.document = document;
|
|
15981
|
+
this.el = el;
|
|
15982
|
+
this.page = page;
|
|
15983
|
+
this.commonStrings = commonStrings;
|
|
15984
|
+
this.columnsService = columnsService;
|
|
15985
|
+
this.keyNavigation = keyNavigation;
|
|
15986
|
+
this.zone = zone;
|
|
15987
|
+
this.clrDgSingleSelectionAriaLabel = this.commonStrings.keys.singleSelectionAriaLabel;
|
|
15988
|
+
this.clrDgSingleActionableAriaLabel = this.commonStrings.keys.singleActionableAriaLabel;
|
|
15989
|
+
this.clrDetailExpandableAriaLabel = this.commonStrings.keys.detailExpandableAriaLabel;
|
|
15428
15990
|
// Allows disabling of the auto focus on page/state changes (excludes focus management inside of popups)
|
|
15429
15991
|
this.clrDgDisablePageFocus = false;
|
|
15430
15992
|
this.selectedChanged = new EventEmitter(false);
|
|
@@ -15537,7 +16099,19 @@ class ClrDatagrid {
|
|
|
15537
16099
|
/**
|
|
15538
16100
|
* Reopen updated row or close it
|
|
15539
16101
|
*/
|
|
15540
|
-
|
|
16102
|
+
if (row) {
|
|
16103
|
+
this.detailService.open(row.item, row.detailButton.nativeElement);
|
|
16104
|
+
}
|
|
16105
|
+
else if (!this.hasVirtualScroller || !row) {
|
|
16106
|
+
this.detailService.close();
|
|
16107
|
+
}
|
|
16108
|
+
}
|
|
16109
|
+
// retain active cell when navigating with PageUp and PageDown buttons in virtual scroller
|
|
16110
|
+
const active = this.keyNavigation.getActiveCell();
|
|
16111
|
+
if (active) {
|
|
16112
|
+
this.zone.runOutsideAngular(() => {
|
|
16113
|
+
setTimeout(() => this.keyNavigation.setActiveCell(active));
|
|
16114
|
+
});
|
|
15541
16115
|
}
|
|
15542
16116
|
}));
|
|
15543
16117
|
}
|
|
@@ -15563,8 +16137,6 @@ class ClrDatagrid {
|
|
|
15563
16137
|
this.datagridTable.nativeElement.focus();
|
|
15564
16138
|
}
|
|
15565
16139
|
}),
|
|
15566
|
-
// Reinitialize arrow key navigation on hide/unhide columns
|
|
15567
|
-
combineLatest(this.columnsService.columns).subscribe(() => { var _a; return (_a = this.keyNavigation) === null || _a === void 0 ? void 0 : _a.resetKeyGrid(); }),
|
|
15568
16140
|
// A subscription that listens for displayMode changes on the datagrid
|
|
15569
16141
|
this.displayMode.view.subscribe(viewChange => {
|
|
15570
16142
|
// Remove any projected columns from the projectedDisplayColumns container
|
|
@@ -15632,7 +16204,7 @@ class ClrDatagrid {
|
|
|
15632
16204
|
}
|
|
15633
16205
|
}
|
|
15634
16206
|
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: ColumnsService }, { token: KeyNavigationGridController }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
15635
|
-
ClrDatagrid.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatagrid, selector: "clr-datagrid", inputs: { clrDgSingleSelectionAriaLabel: "clrDgSingleSelectionAriaLabel", clrDgSingleActionableAriaLabel: "clrDgSingleActionableAriaLabel", clrDetailExpandableAriaLabel: "clrDetailExpandableAriaLabel", clrDgDisablePageFocus: "clrDgDisablePageFocus", loading: ["clrDgLoading", "loading"], selected: ["clrDgSelected", "selected"], singleSelected: ["clrDgSingleSelected", "singleSelected"], clrDgPreserveSelection: "clrDgPreserveSelection", rowSelectionMode: ["clrDgRowSelection", "rowSelectionMode"], trackBy: ["clrDgItemsTrackBy", "trackBy"] }, outputs: { selectedChanged: "clrDgSelectedChange", singleSelectedChanged: "clrDgSingleSelectedChange", refresh: "clrDgRefresh" }, host: { properties: { "class.datagrid-host": "true", "class.datagrid-detail-open": "detailService.isOpen" } }, providers: [
|
|
16207
|
+
ClrDatagrid.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatagrid, selector: "clr-datagrid", inputs: { loadingMoreItems: ["clrLoadingMoreItems", "loadingMoreItems"], clrDgSingleSelectionAriaLabel: "clrDgSingleSelectionAriaLabel", clrDgSingleActionableAriaLabel: "clrDgSingleActionableAriaLabel", clrDetailExpandableAriaLabel: "clrDetailExpandableAriaLabel", clrDgDisablePageFocus: "clrDgDisablePageFocus", loading: ["clrDgLoading", "loading"], selected: ["clrDgSelected", "selected"], singleSelected: ["clrDgSingleSelected", "singleSelected"], clrDgPreserveSelection: "clrDgPreserveSelection", rowSelectionMode: ["clrDgRowSelection", "rowSelectionMode"], trackBy: ["clrDgItemsTrackBy", "trackBy"] }, outputs: { selectedChanged: "clrDgSelectedChange", singleSelectedChanged: "clrDgSingleSelectedChange", refresh: "clrDgRefresh" }, host: { properties: { "class.datagrid-host": "true", "class.datagrid-detail-open": "detailService.isOpen" } }, providers: [
|
|
15636
16208
|
Selection,
|
|
15637
16209
|
Sort,
|
|
15638
16210
|
FiltersProvider,
|
|
@@ -15648,7 +16220,7 @@ ClrDatagrid.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
|
15648
16220
|
ColumnsService,
|
|
15649
16221
|
DisplayModeService,
|
|
15650
16222
|
KeyNavigationGridController,
|
|
15651
|
-
], queries: [{ 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: "datagridTable", first: true, predicate: ["datagridTable"], descendants: true, read: ElementRef }, { propertyName: "scrollableColumns", first: true, predicate: ["scrollableColumns"], descendants: true, read: ViewContainerRef }, { propertyName: "_projectedDisplayColumns", first: true, predicate: ["projectedDisplayColumns"], descendants: true, read: ViewContainerRef }, { propertyName: "_projectedCalculationColumns", first: true, predicate: ["projectedCalculationColumns"], descendants: true, read: ViewContainerRef }, { propertyName: "_displayedRows", first: true, predicate: ["displayedRows"], descendants: true, read: ViewContainerRef }, { propertyName: "_calculationRows", first: true, predicate: ["calculationRows"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2024 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<ng-content select=\"clr-dg-action-bar\"></ng-content>\n<div class=\"datagrid-outer-wrapper\">\n <div class=\"datagrid-inner-wrapper\">\n <div class=\"datagrid\" #datagrid [attr.aria-hidden]=\"detailService.isOpen ? true : null\">\n <div class=\"datagrid-table-wrapper\">\n <div role=\"grid\" class=\"datagrid-table\" tabindex=\"-1\" #datagridTable>\n <div role=\"rowgroup\" class=\"datagrid-header\">\n <div role=\"row\" class=\"datagrid-row\">\n <div class=\"datagrid-row-master datagrid-row-flex\">\n <div class=\"datagrid-row-sticky\">\n <!--header for datagrid where you can select multiple rows -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n (keydown.space)=\"allSelected = !allSelected; $event.preventDefault()\"\n >\n <div class=\"clr-checkbox-wrapper\">\n <!-- We need to move focus and space-key handling to the parent because of keyboard arrow key navigation,\n which is not able to transfer focus directly on the input when focused with the tab key -->\n <input\n type=\"checkbox\"\n [id]=\"selectAllId\"\n [(ngModel)]=\"allSelected\"\n [attr.aria-label]=\"commonStrings.keys.selectAll\"\n tabindex=\"-1\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"selectAllId\" class=\"clr-control-label clr-col-null\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.selectAll}}</span>\n </label>\n </div>\n\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for datagrid where you can select one row only -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n
|
|
16223
|
+
], queries: [{ propertyName: "iterator", first: true, predicate: ClrDatagridItems, descendants: true }, { propertyName: "placeholder", first: true, predicate: ClrDatagridPlaceholder, descendants: true }, { propertyName: "columns", predicate: ClrDatagridColumn }, { propertyName: "rows", predicate: ClrDatagridRow }], viewQueries: [{ propertyName: "datagrid", first: true, predicate: ["datagrid"], descendants: true, read: ElementRef }, { propertyName: "datagridTable", first: true, predicate: ["datagridTable"], descendants: true, read: ElementRef }, { propertyName: "scrollableColumns", first: true, predicate: ["scrollableColumns"], descendants: true, read: ViewContainerRef }, { propertyName: "_projectedDisplayColumns", first: true, predicate: ["projectedDisplayColumns"], descendants: true, read: ViewContainerRef }, { propertyName: "_projectedCalculationColumns", first: true, predicate: ["projectedCalculationColumns"], descendants: true, read: ViewContainerRef }, { propertyName: "_displayedRows", first: true, predicate: ["displayedRows"], descendants: true, read: ViewContainerRef }, { propertyName: "_calculationRows", first: true, predicate: ["calculationRows"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2024 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<ng-content select=\"clr-dg-action-bar\"></ng-content>\n<div class=\"datagrid-outer-wrapper\">\n <div class=\"datagrid-inner-wrapper\">\n <div class=\"datagrid\" #datagrid [attr.aria-hidden]=\"detailService.isOpen ? true : null\">\n <div class=\"datagrid-table-wrapper\">\n <div role=\"grid\" class=\"datagrid-table\" tabindex=\"-1\" #datagridTable>\n <div role=\"rowgroup\" class=\"datagrid-header\">\n <div role=\"row\" class=\"datagrid-row\">\n <div class=\"datagrid-row-master datagrid-row-flex\">\n <div class=\"datagrid-row-sticky\">\n <!--header for datagrid where you can select multiple rows -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n (keydown.space)=\"allSelected = !allSelected; $event.preventDefault()\"\n >\n <div *ngIf=\"!hasVirtualScroller\" class=\"clr-checkbox-wrapper\">\n <!-- We need to move focus and space-key handling to the parent because of keyboard arrow key navigation,\n which is not able to transfer focus directly on the input when focused with the tab key -->\n <input\n type=\"checkbox\"\n [id]=\"selectAllId\"\n [(ngModel)]=\"allSelected\"\n [attr.aria-label]=\"commonStrings.keys.selectAll\"\n tabindex=\"-1\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"selectAllId\" class=\"clr-control-label clr-col-null\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.selectAll}}</span>\n </label>\n </div>\n\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for datagrid where you can select one row only -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n >\n <div class=\"clr-sr-only\">{{clrDgSingleSelectionAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for single row action; only displayType if we have at least one actionable row in datagrid -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-row-actions datagrid-fixed-column\"\n *ngIf=\"rowActionService.hasActionableRow\"\n >\n <div class=\"clr-sr-only\">{{clrDgSingleActionableAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for carets; only displayType if we have at least one expandable row in datagrid -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-expandable-caret datagrid-fixed-column\"\n *ngIf=\"expandableRows.hasExpandableRow || detailService.enabled\"\n >\n <div class=\"clr-sr-only\">{{clrDetailExpandableAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n </div>\n <div class=\"datagrid-row-scrollable\">\n <ng-container #projectedDisplayColumns></ng-container>\n </div>\n </div>\n </div>\n </div>\n\n <div role=\"presentation\" class=\"datagrid-rows\">\n <clr-dg-row class=\"datagrid-loading-more-items-row\" *ngIf=\"loadingMoreItems\">\n <clr-dg-cell class=\"datagrid-loading-more-items-cell\">\n <clr-spinner [clrMedium]=\"true\"></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-loading-more-items-row\" *ngIf=\"loadingMoreItems\">\n <clr-dg-cell class=\"datagrid-loading-more-items-cell\">\n <clr-spinner [clrMedium]=\"true\"></clr-spinner>\n <span>{{ commonStrings.keys.loading }}</span>\n </clr-dg-cell>\n </clr-dg-row>\n\n <!-- Custom placeholder overrides the default empty one -->\n <ng-content select=\"clr-dg-placeholder\"></ng-content>\n <clr-dg-placeholder *ngIf=\"!placeholder\"></clr-dg-placeholder>\n </div>\n </div>\n </div>\n </div>\n <ng-content select=\"clr-dg-footer\"></ng-content>\n <div class=\"datagrid-spinner\" *ngIf=\"loading\">\n <clr-spinner clrMedium>Loading</clr-spinner>\n </div>\n </div>\n <ng-content select=\"[clrIfDetail],clr-dg-detail\"></ng-content>\n</div>\n\n<div class=\"datagrid-calculation-table\">\n <div class=\"datagrid-calculation-header\">\n <ng-container #projectedCalculationColumns></ng-container>\n </div>\n <ng-container #calculationRows></ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: ClrLabel, selector: "label", inputs: ["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: ["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" }] });
|
|
15652
16224
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagrid, decorators: [{
|
|
15653
16225
|
type: Component,
|
|
15654
16226
|
args: [{ selector: 'clr-datagrid', providers: [
|
|
@@ -15670,13 +16242,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
15670
16242
|
], host: {
|
|
15671
16243
|
'[class.datagrid-host]': 'true',
|
|
15672
16244
|
'[class.datagrid-detail-open]': 'detailService.isOpen',
|
|
15673
|
-
}, template: "<!--\n ~ Copyright (c) 2016-2024 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<ng-content select=\"clr-dg-action-bar\"></ng-content>\n<div class=\"datagrid-outer-wrapper\">\n <div class=\"datagrid-inner-wrapper\">\n <div class=\"datagrid\" #datagrid [attr.aria-hidden]=\"detailService.isOpen ? true : null\">\n <div class=\"datagrid-table-wrapper\">\n <div role=\"grid\" class=\"datagrid-table\" tabindex=\"-1\" #datagridTable>\n <div role=\"rowgroup\" class=\"datagrid-header\">\n <div role=\"row\" class=\"datagrid-row\">\n <div class=\"datagrid-row-master datagrid-row-flex\">\n <div class=\"datagrid-row-sticky\">\n <!--header for datagrid where you can select multiple rows -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n (keydown.space)=\"allSelected = !allSelected; $event.preventDefault()\"\n >\n <div class=\"clr-checkbox-wrapper\">\n <!-- We need to move focus and space-key handling to the parent because of keyboard arrow key navigation,\n which is not able to transfer focus directly on the input when focused with the tab key -->\n <input\n type=\"checkbox\"\n [id]=\"selectAllId\"\n [(ngModel)]=\"allSelected\"\n [attr.aria-label]=\"commonStrings.keys.selectAll\"\n tabindex=\"-1\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"selectAllId\" class=\"clr-control-label clr-col-null\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.selectAll}}</span>\n </label>\n </div>\n\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for datagrid where you can select one row only -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n
|
|
16245
|
+
}, template: "<!--\n ~ Copyright (c) 2016-2024 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<ng-content select=\"clr-dg-action-bar\"></ng-content>\n<div class=\"datagrid-outer-wrapper\">\n <div class=\"datagrid-inner-wrapper\">\n <div class=\"datagrid\" #datagrid [attr.aria-hidden]=\"detailService.isOpen ? true : null\">\n <div class=\"datagrid-table-wrapper\">\n <div role=\"grid\" class=\"datagrid-table\" tabindex=\"-1\" #datagridTable>\n <div role=\"rowgroup\" class=\"datagrid-header\">\n <div role=\"row\" class=\"datagrid-row\">\n <div class=\"datagrid-row-master datagrid-row-flex\">\n <div class=\"datagrid-row-sticky\">\n <!--header for datagrid where you can select multiple rows -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n (keydown.space)=\"allSelected = !allSelected; $event.preventDefault()\"\n >\n <div *ngIf=\"!hasVirtualScroller\" class=\"clr-checkbox-wrapper\">\n <!-- We need to move focus and space-key handling to the parent because of keyboard arrow key navigation,\n which is not able to transfer focus directly on the input when focused with the tab key -->\n <input\n type=\"checkbox\"\n [id]=\"selectAllId\"\n [(ngModel)]=\"allSelected\"\n [attr.aria-label]=\"commonStrings.keys.selectAll\"\n tabindex=\"-1\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"selectAllId\" class=\"clr-control-label clr-col-null\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.selectAll}}</span>\n </label>\n </div>\n\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for datagrid where you can select one row only -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n >\n <div class=\"clr-sr-only\">{{clrDgSingleSelectionAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for single row action; only displayType if we have at least one actionable row in datagrid -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-row-actions datagrid-fixed-column\"\n *ngIf=\"rowActionService.hasActionableRow\"\n >\n <div class=\"clr-sr-only\">{{clrDgSingleActionableAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for carets; only displayType if we have at least one expandable row in datagrid -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-expandable-caret datagrid-fixed-column\"\n *ngIf=\"expandableRows.hasExpandableRow || detailService.enabled\"\n >\n <div class=\"clr-sr-only\">{{clrDetailExpandableAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n </div>\n <div class=\"datagrid-row-scrollable\">\n <ng-container #projectedDisplayColumns></ng-container>\n </div>\n </div>\n </div>\n </div>\n\n <div role=\"presentation\" class=\"datagrid-rows\">\n <clr-dg-row class=\"datagrid-loading-more-items-row\" *ngIf=\"loadingMoreItems\">\n <clr-dg-cell class=\"datagrid-loading-more-items-cell\">\n <clr-spinner [clrMedium]=\"true\"></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-loading-more-items-row\" *ngIf=\"loadingMoreItems\">\n <clr-dg-cell class=\"datagrid-loading-more-items-cell\">\n <clr-spinner [clrMedium]=\"true\"></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" }]
|
|
15674
16246
|
}], ctorParameters: function () {
|
|
15675
16247
|
return [{ type: DatagridRenderOrganizer }, { type: Items }, { type: ExpandableRowsCount }, { type: Selection }, { type: RowActionService }, { type: StateProvider }, { type: DisplayModeService }, { type: i0.Renderer2 }, { type: DetailService }, { type: undefined, decorators: [{
|
|
15676
16248
|
type: Inject,
|
|
15677
16249
|
args: [DOCUMENT]
|
|
15678
16250
|
}] }, { type: i0.ElementRef }, { type: Page }, { type: ClrCommonStringsService }, { type: ColumnsService }, { type: KeyNavigationGridController }, { type: i0.NgZone }];
|
|
15679
|
-
}, propDecorators: {
|
|
16251
|
+
}, propDecorators: { loadingMoreItems: [{
|
|
16252
|
+
type: Input,
|
|
16253
|
+
args: ['clrLoadingMoreItems']
|
|
16254
|
+
}], clrDgSingleSelectionAriaLabel: [{
|
|
15680
16255
|
type: Input
|
|
15681
16256
|
}], clrDgSingleActionableAriaLabel: [{
|
|
15682
16257
|
type: Input
|
|
@@ -15705,6 +16280,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
15705
16280
|
}], rows: [{
|
|
15706
16281
|
type: ContentChildren,
|
|
15707
16282
|
args: [ClrDatagridRow]
|
|
16283
|
+
}], datagrid: [{
|
|
16284
|
+
type: ViewChild,
|
|
16285
|
+
args: ['datagrid', { read: ElementRef }]
|
|
15708
16286
|
}], datagridTable: [{
|
|
15709
16287
|
type: ViewChild,
|
|
15710
16288
|
args: ['datagridTable', { read: ElementRef }]
|
|
@@ -17112,96 +17690,227 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
17112
17690
|
args: ['clrDgReplace']
|
|
17113
17691
|
}] } });
|
|
17114
17692
|
|
|
17115
|
-
|
|
17116
|
-
|
|
17117
|
-
|
|
17118
|
-
|
|
17119
|
-
|
|
17120
|
-
|
|
17121
|
-
|
|
17122
|
-
|
|
17123
|
-
|
|
17124
|
-
|
|
17125
|
-
|
|
17126
|
-
|
|
17127
|
-
|
|
17128
|
-
|
|
17129
|
-
|
|
17130
|
-
|
|
17131
|
-
|
|
17132
|
-
|
|
17133
|
-
|
|
17134
|
-
|
|
17135
|
-
constructor(el, renderer, organizer) {
|
|
17136
|
-
this.el = el;
|
|
17137
|
-
this.renderer = renderer;
|
|
17693
|
+
const defaultCdkFixedSizeVirtualScrollInputs = {
|
|
17694
|
+
itemSize: 32,
|
|
17695
|
+
minBufferPx: 200,
|
|
17696
|
+
maxBufferPx: 400,
|
|
17697
|
+
};
|
|
17698
|
+
class ClrDatagridVirtualScrollDirective {
|
|
17699
|
+
constructor(changeDetectorRef, iterableDiffers, items, ngZone, templateRef, viewContainerRef, directionality, scrollDispatcher, viewportRuler, datagrid, injector) {
|
|
17700
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
17701
|
+
this.iterableDiffers = iterableDiffers;
|
|
17702
|
+
this.items = items;
|
|
17703
|
+
this.ngZone = ngZone;
|
|
17704
|
+
this.templateRef = templateRef;
|
|
17705
|
+
this.viewContainerRef = viewContainerRef;
|
|
17706
|
+
this.directionality = directionality;
|
|
17707
|
+
this.scrollDispatcher = scrollDispatcher;
|
|
17708
|
+
this.viewportRuler = viewportRuler;
|
|
17709
|
+
this.datagrid = datagrid;
|
|
17710
|
+
this.injector = injector;
|
|
17711
|
+
this.renderedRangeChange = new EventEmitter();
|
|
17712
|
+
this._cdkFixedSizeVirtualScrollInputs = Object.assign({}, defaultCdkFixedSizeVirtualScrollInputs);
|
|
17138
17713
|
this.subscriptions = [];
|
|
17139
|
-
this.
|
|
17714
|
+
this.mutationChanges = new MutationObserver((mutations) => {
|
|
17715
|
+
mutations.forEach((mutation) => {
|
|
17716
|
+
// it is possible this to be called twice because the old class is removed and the new added
|
|
17717
|
+
if (mutation.target.classList.contains('datagrid-compact') && this.itemSize > 24) {
|
|
17718
|
+
this.itemSize = 24;
|
|
17719
|
+
}
|
|
17720
|
+
});
|
|
17721
|
+
});
|
|
17722
|
+
this.cdkVirtualForInputs = {
|
|
17723
|
+
cdkVirtualForTrackBy: index => index,
|
|
17724
|
+
};
|
|
17725
|
+
this.items.smartenUp();
|
|
17726
|
+
this.datagrid.hasVirtualScroller = true;
|
|
17727
|
+
this.datagridElementRef = this.datagrid.el;
|
|
17728
|
+
this.mutationChanges.observe(this.datagridElementRef.nativeElement, {
|
|
17729
|
+
attributeFilter: ['class'],
|
|
17730
|
+
attributeOldValue: true,
|
|
17731
|
+
});
|
|
17732
|
+
this.virtualScrollStrategy = new FixedSizeVirtualScrollStrategy(this._cdkFixedSizeVirtualScrollInputs.itemSize, this._cdkFixedSizeVirtualScrollInputs.minBufferPx, this._cdkFixedSizeVirtualScrollInputs.maxBufferPx);
|
|
17140
17733
|
}
|
|
17141
|
-
|
|
17142
|
-
|
|
17143
|
-
|
|
17144
|
-
|
|
17145
|
-
|
|
17146
|
-
this.
|
|
17147
|
-
this.
|
|
17734
|
+
get cdkVirtualForOf() {
|
|
17735
|
+
return this.cdkVirtualForInputs.cdkVirtualForOf;
|
|
17736
|
+
}
|
|
17737
|
+
set cdkVirtualForOf(value) {
|
|
17738
|
+
this.cdkVirtualForInputs.cdkVirtualForOf = value;
|
|
17739
|
+
this.items.all = value;
|
|
17740
|
+
this.updateCdkVirtualForInputs();
|
|
17741
|
+
}
|
|
17742
|
+
get cdkVirtualForTrackBy() {
|
|
17743
|
+
return this.cdkVirtualForInputs.cdkVirtualForTrackBy;
|
|
17744
|
+
}
|
|
17745
|
+
set cdkVirtualForTrackBy(value) {
|
|
17746
|
+
this.cdkVirtualForInputs.cdkVirtualForTrackBy = value;
|
|
17747
|
+
this.updateCdkVirtualForInputs();
|
|
17748
|
+
}
|
|
17749
|
+
get cdkVirtualForTemplate() {
|
|
17750
|
+
var _a;
|
|
17751
|
+
return (_a = this === null || this === void 0 ? void 0 : this.cdkVirtualForInputs) === null || _a === void 0 ? void 0 : _a.cdkVirtualForTemplate;
|
|
17752
|
+
}
|
|
17753
|
+
set cdkVirtualForTemplate(value) {
|
|
17754
|
+
this.cdkVirtualForInputs.cdkVirtualForTemplate = value;
|
|
17755
|
+
this.updateCdkVirtualForInputs();
|
|
17756
|
+
}
|
|
17757
|
+
get cdkVirtualForTemplateCacheSize() {
|
|
17758
|
+
return this.cdkVirtualForInputs.cdkVirtualForTemplateCacheSize;
|
|
17759
|
+
}
|
|
17760
|
+
set cdkVirtualForTemplateCacheSize(value) {
|
|
17761
|
+
this.cdkVirtualForInputs.cdkVirtualForTemplateCacheSize = coerceNumberProperty(value);
|
|
17762
|
+
this.updateCdkVirtualForInputs();
|
|
17763
|
+
}
|
|
17764
|
+
get itemSize() {
|
|
17765
|
+
return this._cdkFixedSizeVirtualScrollInputs.itemSize;
|
|
17766
|
+
}
|
|
17767
|
+
set itemSize(value) {
|
|
17768
|
+
this._cdkFixedSizeVirtualScrollInputs.itemSize = coerceNumberProperty(value);
|
|
17769
|
+
this.updateFixedSizeVirtualScrollInputs();
|
|
17770
|
+
}
|
|
17771
|
+
get minBufferPx() {
|
|
17772
|
+
return this._cdkFixedSizeVirtualScrollInputs.minBufferPx;
|
|
17773
|
+
}
|
|
17774
|
+
set minBufferPx(value) {
|
|
17775
|
+
this._cdkFixedSizeVirtualScrollInputs.minBufferPx = coerceNumberProperty(value);
|
|
17776
|
+
this.updateFixedSizeVirtualScrollInputs();
|
|
17777
|
+
}
|
|
17778
|
+
get maxBufferPx() {
|
|
17779
|
+
return this._cdkFixedSizeVirtualScrollInputs.maxBufferPx;
|
|
17780
|
+
}
|
|
17781
|
+
set maxBufferPx(value) {
|
|
17782
|
+
this._cdkFixedSizeVirtualScrollInputs.maxBufferPx = coerceNumberProperty(value);
|
|
17783
|
+
this.updateFixedSizeVirtualScrollInputs();
|
|
17784
|
+
}
|
|
17785
|
+
ngAfterViewInit() {
|
|
17786
|
+
this.injector.runInContext(() => {
|
|
17787
|
+
this.virtualScrollViewport = this.createVirtualScrollViewportForDatagrid(this.changeDetectorRef, this.ngZone, this.directionality, this.scrollDispatcher, this.viewportRuler, this.datagridElementRef, this.virtualScrollStrategy);
|
|
17788
|
+
this.cdkVirtualFor = new CdkVirtualForOf(this.viewContainerRef, this.templateRef, this.iterableDiffers, new _RecycleViewRepeaterStrategy(), this.virtualScrollViewport, this.ngZone);
|
|
17789
|
+
this.virtualScrollViewport.ngOnInit();
|
|
17790
|
+
});
|
|
17791
|
+
this.gridRoleElement = this.datagridElementRef.nativeElement.querySelector('[role="grid"]');
|
|
17792
|
+
this.updateCdkVirtualForInputs();
|
|
17793
|
+
this.subscriptions.push(this.items.change.subscribe(newItems => {
|
|
17794
|
+
this.cdkVirtualFor.cdkVirtualForOf = newItems;
|
|
17795
|
+
}), this.cdkVirtualFor.dataStream.subscribe(data => {
|
|
17796
|
+
this.updateAriaRowCount(data.length);
|
|
17797
|
+
}), this.virtualScrollViewport.renderedRangeStream.subscribe(renderedRange => {
|
|
17798
|
+
this.renderedRangeChange.emit(renderedRange);
|
|
17799
|
+
}), this.datagrid.refresh.subscribe(datagridState => {
|
|
17800
|
+
if (datagridState.filters) {
|
|
17801
|
+
this.virtualScrollViewport.scrollToIndex(0);
|
|
17802
|
+
}
|
|
17803
|
+
}));
|
|
17804
|
+
}
|
|
17805
|
+
ngDoCheck() {
|
|
17806
|
+
var _a;
|
|
17807
|
+
(_a = this.cdkVirtualFor) === null || _a === void 0 ? void 0 : _a.ngDoCheck();
|
|
17808
|
+
this.updateAriaRowIndexes();
|
|
17148
17809
|
}
|
|
17149
17810
|
ngOnDestroy() {
|
|
17150
|
-
|
|
17151
|
-
|
|
17152
|
-
|
|
17153
|
-
|
|
17811
|
+
var _a, _b, _c;
|
|
17812
|
+
(_a = this.cdkVirtualFor) === null || _a === void 0 ? void 0 : _a.ngOnDestroy();
|
|
17813
|
+
(_b = this.virtualScrollViewport) === null || _b === void 0 ? void 0 : _b.ngOnDestroy();
|
|
17814
|
+
(_c = this.mutationChanges) === null || _c === void 0 ? void 0 : _c.disconnect();
|
|
17815
|
+
this.subscriptions.forEach(subscription => {
|
|
17816
|
+
subscription.unsubscribe();
|
|
17817
|
+
});
|
|
17154
17818
|
}
|
|
17155
|
-
|
|
17156
|
-
if (this.
|
|
17157
|
-
|
|
17158
|
-
|
|
17159
|
-
|
|
17160
|
-
if (state.changes && state.changes.length) {
|
|
17161
|
-
state.changes.forEach(change => {
|
|
17162
|
-
switch (change) {
|
|
17163
|
-
case DatagridColumnChanges.WIDTH:
|
|
17164
|
-
this.setWidth(state);
|
|
17165
|
-
break;
|
|
17166
|
-
case DatagridColumnChanges.HIDDEN:
|
|
17167
|
-
this.setHidden(state);
|
|
17168
|
-
break;
|
|
17169
|
-
default:
|
|
17170
|
-
break;
|
|
17819
|
+
updateCdkVirtualForInputs() {
|
|
17820
|
+
if (this.cdkVirtualFor) {
|
|
17821
|
+
for (const cdkVirtualForInputKey of Object.keys(this.cdkVirtualForInputs)) {
|
|
17822
|
+
if (this.cdkVirtualFor[cdkVirtualForInputKey] !== this.cdkVirtualForInputs[cdkVirtualForInputKey]) {
|
|
17823
|
+
this.cdkVirtualFor[cdkVirtualForInputKey] = this.cdkVirtualForInputs[cdkVirtualForInputKey];
|
|
17171
17824
|
}
|
|
17172
|
-
}
|
|
17825
|
+
}
|
|
17173
17826
|
}
|
|
17174
17827
|
}
|
|
17175
|
-
|
|
17176
|
-
|
|
17177
|
-
|
|
17178
|
-
}
|
|
17179
|
-
setWidth(state) {
|
|
17180
|
-
if (state.strictWidth) {
|
|
17181
|
-
this.renderer.addClass(this.el.nativeElement, STRICT_WIDTH_CLASS);
|
|
17828
|
+
updateFixedSizeVirtualScrollInputs() {
|
|
17829
|
+
if (this.virtualScrollStrategy) {
|
|
17830
|
+
this.virtualScrollStrategy.updateItemAndBufferSize(this._cdkFixedSizeVirtualScrollInputs.itemSize, this._cdkFixedSizeVirtualScrollInputs.minBufferPx, this._cdkFixedSizeVirtualScrollInputs.maxBufferPx);
|
|
17182
17831
|
}
|
|
17183
|
-
else {
|
|
17184
|
-
this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);
|
|
17185
|
-
}
|
|
17186
|
-
this.renderer.setStyle(this.el.nativeElement, 'width', state.width + 'px');
|
|
17187
17832
|
}
|
|
17188
|
-
|
|
17189
|
-
|
|
17190
|
-
|
|
17191
|
-
|
|
17192
|
-
|
|
17193
|
-
|
|
17194
|
-
|
|
17833
|
+
updateAriaRowCount(rowCount) {
|
|
17834
|
+
var _a;
|
|
17835
|
+
(_a = this.gridRoleElement) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-rowcount', rowCount.toString());
|
|
17836
|
+
}
|
|
17837
|
+
updateAriaRowIndexes() {
|
|
17838
|
+
for (let i = 0; i < this.viewContainerRef.length; i++) {
|
|
17839
|
+
const viewRef = this.viewContainerRef.get(i);
|
|
17840
|
+
const rootElements = viewRef.rootNodes;
|
|
17841
|
+
const datagridRowElement = rootElements.find(rowElement => rowElement.tagName === 'CLR-DG-ROW');
|
|
17842
|
+
const rowRoleElement = datagridRowElement === null || datagridRowElement === void 0 ? void 0 : datagridRowElement.querySelector('[role="row"]');
|
|
17843
|
+
// aria-rowindex should start with one, not zero, so we have to add one to the zero-based index
|
|
17844
|
+
rowRoleElement === null || rowRoleElement === void 0 ? void 0 : rowRoleElement.setAttribute('aria-rowindex', (viewRef.context.index + 1).toString());
|
|
17845
|
+
}
|
|
17846
|
+
}
|
|
17847
|
+
createVirtualScrollViewportForDatagrid(changeDetectorRef, ngZone, directionality, scrollDispatcher, viewportRuler, datagridElementRef, virtualScrollStrategy) {
|
|
17848
|
+
const datagridDivElement = datagridElementRef.nativeElement.querySelector('.datagrid');
|
|
17849
|
+
const datagridTableElement = datagridElementRef.nativeElement.querySelector('.datagrid-table');
|
|
17850
|
+
const datagridRowsElement = datagridElementRef.nativeElement.querySelector('.datagrid-rows');
|
|
17851
|
+
const datagridDivElementRef = { nativeElement: datagridDivElement };
|
|
17852
|
+
let topOffset = 0;
|
|
17853
|
+
let totalContentSize = 0;
|
|
17854
|
+
function updateDatagridElementStyles() {
|
|
17855
|
+
datagridRowsElement.style.transform = `translateY(${topOffset}px)`;
|
|
17856
|
+
datagridRowsElement.style.height = `${totalContentSize - topOffset}px`;
|
|
17857
|
+
}
|
|
17858
|
+
const virtualScrollViewport = new CdkVirtualScrollViewport(datagridDivElementRef, changeDetectorRef, ngZone, virtualScrollStrategy, directionality, scrollDispatcher, viewportRuler, null);
|
|
17859
|
+
virtualScrollViewport._contentWrapper = {
|
|
17860
|
+
nativeElement: {
|
|
17861
|
+
style: {
|
|
17862
|
+
set transform(value) {
|
|
17863
|
+
var _a;
|
|
17864
|
+
topOffset = value === undefined ? 0 : +((_a = /translateY\(([0-9]+)px\)/.exec(value)) === null || _a === void 0 ? void 0 : _a[1]);
|
|
17865
|
+
updateDatagridElementStyles();
|
|
17866
|
+
},
|
|
17867
|
+
},
|
|
17868
|
+
},
|
|
17869
|
+
};
|
|
17870
|
+
virtualScrollViewport.setTotalContentSize = (value) => {
|
|
17871
|
+
totalContentSize = value;
|
|
17872
|
+
datagridTableElement.style.height = `${totalContentSize}px`;
|
|
17873
|
+
updateDatagridElementStyles();
|
|
17874
|
+
};
|
|
17875
|
+
return virtualScrollViewport;
|
|
17195
17876
|
}
|
|
17196
17877
|
}
|
|
17197
|
-
|
|
17198
|
-
|
|
17199
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type:
|
|
17878
|
+
ClrDatagridVirtualScrollDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridVirtualScrollDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.IterableDiffers }, { token: Items, skipSelf: true }, { token: i0.NgZone }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i1$2.Directionality }, { token: i3$1.ScrollDispatcher }, { token: i3$1.ViewportRuler }, { token: ClrDatagrid }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Directive });
|
|
17879
|
+
ClrDatagridVirtualScrollDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatagridVirtualScrollDirective, selector: "[ClrVirtualScroll]", inputs: { cdkVirtualForOf: ["clrVirtualRowsOf", "cdkVirtualForOf"], cdkVirtualForTrackBy: ["clrVirtualRowsTrackBy", "cdkVirtualForTrackBy"], cdkVirtualForTemplate: ["clrVirtualRowsTemplate", "cdkVirtualForTemplate"], cdkVirtualForTemplateCacheSize: ["clrVirtualRowsTemplateCacheSize", "cdkVirtualForTemplateCacheSize"], itemSize: ["clrVirtualRowsItemSize", "itemSize"], minBufferPx: ["clrVirtualRowsMinBufferPx", "minBufferPx"], maxBufferPx: ["clrVirtualRowsMaxBufferPx", "maxBufferPx"] }, outputs: { renderedRangeChange: "renderedRangeChange" }, providers: [Items], ngImport: i0 });
|
|
17880
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridVirtualScrollDirective, decorators: [{
|
|
17200
17881
|
type: Directive,
|
|
17201
17882
|
args: [{
|
|
17202
|
-
selector: '
|
|
17883
|
+
selector: '[ClrVirtualScroll]',
|
|
17884
|
+
providers: [Items],
|
|
17203
17885
|
}]
|
|
17204
|
-
}], ctorParameters: function () {
|
|
17886
|
+
}], ctorParameters: function () {
|
|
17887
|
+
return [{ type: i0.ChangeDetectorRef }, { type: i0.IterableDiffers }, { type: Items, decorators: [{
|
|
17888
|
+
type: SkipSelf
|
|
17889
|
+
}] }, { type: i0.NgZone }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i1$2.Directionality }, { type: i3$1.ScrollDispatcher }, { type: i3$1.ViewportRuler }, { type: ClrDatagrid }, { type: i0.EnvironmentInjector }];
|
|
17890
|
+
}, propDecorators: { renderedRangeChange: [{
|
|
17891
|
+
type: Output
|
|
17892
|
+
}], cdkVirtualForOf: [{
|
|
17893
|
+
type: Input,
|
|
17894
|
+
args: ['clrVirtualRowsOf']
|
|
17895
|
+
}], cdkVirtualForTrackBy: [{
|
|
17896
|
+
type: Input,
|
|
17897
|
+
args: ['clrVirtualRowsTrackBy']
|
|
17898
|
+
}], cdkVirtualForTemplate: [{
|
|
17899
|
+
type: Input,
|
|
17900
|
+
args: ['clrVirtualRowsTemplate']
|
|
17901
|
+
}], cdkVirtualForTemplateCacheSize: [{
|
|
17902
|
+
type: Input,
|
|
17903
|
+
args: ['clrVirtualRowsTemplateCacheSize']
|
|
17904
|
+
}], itemSize: [{
|
|
17905
|
+
type: Input,
|
|
17906
|
+
args: ['clrVirtualRowsItemSize']
|
|
17907
|
+
}], minBufferPx: [{
|
|
17908
|
+
type: Input,
|
|
17909
|
+
args: ['clrVirtualRowsMinBufferPx']
|
|
17910
|
+
}], maxBufferPx: [{
|
|
17911
|
+
type: Input,
|
|
17912
|
+
args: ['clrVirtualRowsMaxBufferPx']
|
|
17913
|
+
}] } });
|
|
17205
17914
|
|
|
17206
17915
|
/*
|
|
17207
17916
|
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
@@ -17226,7 +17935,6 @@ class DatagridHeaderRenderer {
|
|
|
17226
17935
|
this.autoSet = false;
|
|
17227
17936
|
this.subscriptions = [];
|
|
17228
17937
|
this.subscriptions.push(this.organizer.filterRenderSteps(DatagridRenderStep.CLEAR_WIDTHS).subscribe(() => this.clearWidth()));
|
|
17229
|
-
this.subscriptions.push(columnState.subscribe(state => this.stateChanges(state)));
|
|
17230
17938
|
}
|
|
17231
17939
|
ngOnDestroy() {
|
|
17232
17940
|
this.subscriptions.forEach(sub => sub.unsubscribe());
|
|
@@ -17241,20 +17949,30 @@ class DatagridHeaderRenderer {
|
|
|
17241
17949
|
setColumnState(index) {
|
|
17242
17950
|
this.columnsService.columns[index] = this.columnState;
|
|
17243
17951
|
}
|
|
17244
|
-
|
|
17245
|
-
if (state.
|
|
17246
|
-
|
|
17247
|
-
|
|
17248
|
-
|
|
17249
|
-
|
|
17250
|
-
|
|
17251
|
-
|
|
17252
|
-
|
|
17253
|
-
|
|
17254
|
-
|
|
17255
|
-
|
|
17256
|
-
|
|
17257
|
-
|
|
17952
|
+
setWidth(state) {
|
|
17953
|
+
if (state.strictWidth) {
|
|
17954
|
+
if (this.columnResizerService.resizedBy) {
|
|
17955
|
+
this.resizeEmitter.emit(state.width);
|
|
17956
|
+
this.renderer.setStyle(this.el.nativeElement, 'width', state.width + 'px');
|
|
17957
|
+
this.widthSet = false;
|
|
17958
|
+
}
|
|
17959
|
+
// Don't set width if there is a user-defined one. Just add the strict width class.
|
|
17960
|
+
this.renderer.addClass(this.el.nativeElement, STRICT_WIDTH_CLASS);
|
|
17961
|
+
this.autoSet = false;
|
|
17962
|
+
}
|
|
17963
|
+
else {
|
|
17964
|
+
this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);
|
|
17965
|
+
this.renderer.setStyle(this.el.nativeElement, 'width', state.width + 'px');
|
|
17966
|
+
this.widthSet = true;
|
|
17967
|
+
this.autoSet = true;
|
|
17968
|
+
}
|
|
17969
|
+
}
|
|
17970
|
+
setHidden(state) {
|
|
17971
|
+
if (state.hidden) {
|
|
17972
|
+
this.renderer.addClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);
|
|
17973
|
+
}
|
|
17974
|
+
else {
|
|
17975
|
+
this.renderer.removeClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);
|
|
17258
17976
|
}
|
|
17259
17977
|
}
|
|
17260
17978
|
clearWidth() {
|
|
@@ -17284,32 +18002,6 @@ class DatagridHeaderRenderer {
|
|
|
17284
18002
|
}
|
|
17285
18003
|
return width;
|
|
17286
18004
|
}
|
|
17287
|
-
setWidth(state) {
|
|
17288
|
-
if (state.strictWidth) {
|
|
17289
|
-
if (this.columnResizerService.resizedBy) {
|
|
17290
|
-
this.resizeEmitter.emit(state.width);
|
|
17291
|
-
this.renderer.setStyle(this.el.nativeElement, 'width', state.width + 'px');
|
|
17292
|
-
this.widthSet = false;
|
|
17293
|
-
}
|
|
17294
|
-
// Don't set width if there is a user-defined one. Just add the strict width class.
|
|
17295
|
-
this.renderer.addClass(this.el.nativeElement, STRICT_WIDTH_CLASS);
|
|
17296
|
-
this.autoSet = false;
|
|
17297
|
-
}
|
|
17298
|
-
else {
|
|
17299
|
-
this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);
|
|
17300
|
-
this.renderer.setStyle(this.el.nativeElement, 'width', state.width + 'px');
|
|
17301
|
-
this.widthSet = true;
|
|
17302
|
-
this.autoSet = true;
|
|
17303
|
-
}
|
|
17304
|
-
}
|
|
17305
|
-
setHidden(state) {
|
|
17306
|
-
if (state.hidden) {
|
|
17307
|
-
this.renderer.addClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);
|
|
17308
|
-
}
|
|
17309
|
-
else {
|
|
17310
|
-
this.renderer.removeClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);
|
|
17311
|
-
}
|
|
17312
|
-
}
|
|
17313
18005
|
}
|
|
17314
18006
|
DatagridHeaderRenderer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridHeaderRenderer, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DatagridRenderOrganizer }, { token: DomAdapter }, { token: ColumnResizerService }, { token: ColumnsService }, { token: COLUMN_STATE }], target: i0.ɵɵFactoryTarget.Directive });
|
|
17315
18007
|
DatagridHeaderRenderer.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: DatagridHeaderRenderer, selector: "clr-dg-column", outputs: { resizeEmitter: "clrDgColumnResize" }, providers: [ColumnResizerService, COLUMN_STATE_PROVIDER], ngImport: i0 });
|
|
@@ -17371,63 +18063,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
17371
18063
|
type: Injectable
|
|
17372
18064
|
}] });
|
|
17373
18065
|
|
|
17374
|
-
/*
|
|
17375
|
-
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
17376
|
-
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
17377
|
-
* This software is released under MIT license.
|
|
17378
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
17379
|
-
*/
|
|
17380
|
-
class DatagridRowRenderer {
|
|
17381
|
-
constructor(columnsService) {
|
|
17382
|
-
this.columnsService = columnsService;
|
|
17383
|
-
this.subscriptions = [];
|
|
17384
|
-
}
|
|
17385
|
-
ngAfterContentInit() {
|
|
17386
|
-
this.setColumnState(); // case #3 and #4
|
|
17387
|
-
this.subscriptions.push(this.cells.changes.subscribe(() => {
|
|
17388
|
-
this.setColumnState(); // case #2
|
|
17389
|
-
// Note on case #2: In the case of dynamic columns, when one column (header/cell together) gets deleted,
|
|
17390
|
-
// this.cells.changes emits before this.columnsService.columns gets updated in MainRenderer
|
|
17391
|
-
// when this.headers.changes emits as well. So that means there will be n+1 column state providers
|
|
17392
|
-
// when this.cells.changes emits. Hence, we should quit earlier there. But this method will be called
|
|
17393
|
-
// right after again when this.headers.changes emits. By then, there will be the same number of column state
|
|
17394
|
-
// providers as column headers.
|
|
17395
|
-
}));
|
|
17396
|
-
}
|
|
17397
|
-
ngOnDestroy() {
|
|
17398
|
-
this.subscriptions.forEach(sub => sub.unsubscribe());
|
|
17399
|
-
}
|
|
17400
|
-
setColumnState() {
|
|
17401
|
-
// This method runs in four cases:
|
|
17402
|
-
// 1. When the initial rows appear on the first page.
|
|
17403
|
-
// In this case, the method will be called in DatagridMainRenderer.
|
|
17404
|
-
// 2. When columns (corresponding header/cells) get added and deleted.
|
|
17405
|
-
// In this case, the method will be called in DatagridMainRenderer. (Read the note on this case above).
|
|
17406
|
-
// 3. When rows load asynchronously.
|
|
17407
|
-
// In this case, the method will be called in this class.
|
|
17408
|
-
// 4. When rows load after switching pages.
|
|
17409
|
-
// In this case, the method will be called in this class (Basically, same as the case 3).
|
|
17410
|
-
if (this.cells.length === this.columnsService.columns.length) {
|
|
17411
|
-
this.cells.forEach((cell, index) => {
|
|
17412
|
-
if (this.columnsService.columns[index]) {
|
|
17413
|
-
cell.columnState = this.columnsService.columns[index];
|
|
17414
|
-
}
|
|
17415
|
-
});
|
|
17416
|
-
}
|
|
17417
|
-
}
|
|
17418
|
-
}
|
|
17419
|
-
DatagridRowRenderer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridRowRenderer, deps: [{ token: ColumnsService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
17420
|
-
DatagridRowRenderer.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: DatagridRowRenderer, selector: "clr-dg-row, clr-dg-row-detail", queries: [{ propertyName: "cells", predicate: DatagridCellRenderer }], ngImport: i0 });
|
|
17421
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridRowRenderer, decorators: [{
|
|
17422
|
-
type: Directive,
|
|
17423
|
-
args: [{
|
|
17424
|
-
selector: 'clr-dg-row, clr-dg-row-detail',
|
|
17425
|
-
}]
|
|
17426
|
-
}], ctorParameters: function () { return [{ type: ColumnsService }]; }, propDecorators: { cells: [{
|
|
17427
|
-
type: ContentChildren,
|
|
17428
|
-
args: [DatagridCellRenderer]
|
|
17429
|
-
}] } });
|
|
17430
|
-
|
|
17431
18066
|
/*
|
|
17432
18067
|
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
17433
18068
|
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
@@ -17447,7 +18082,7 @@ const domAdapterFactory = (platformId) => {
|
|
|
17447
18082
|
// Fixes build error
|
|
17448
18083
|
// @dynamic (https://github.com/angular/angular/issues/19698#issuecomment-338340211)
|
|
17449
18084
|
class DatagridMainRenderer {
|
|
17450
|
-
constructor(organizer, items, page, domAdapter, el, renderer, detailService, tableSizeService, columnsService, ngZone) {
|
|
18085
|
+
constructor(organizer, items, page, domAdapter, el, renderer, detailService, tableSizeService, columnsService, ngZone, keyNavigation) {
|
|
17451
18086
|
this.organizer = organizer;
|
|
17452
18087
|
this.items = items;
|
|
17453
18088
|
this.page = page;
|
|
@@ -17458,6 +18093,7 @@ class DatagridMainRenderer {
|
|
|
17458
18093
|
this.tableSizeService = tableSizeService;
|
|
17459
18094
|
this.columnsService = columnsService;
|
|
17460
18095
|
this.ngZone = ngZone;
|
|
18096
|
+
this.keyNavigation = keyNavigation;
|
|
17461
18097
|
this._heightSet = false;
|
|
17462
18098
|
this.shouldStabilizeColumns = true;
|
|
17463
18099
|
this.subscriptions = [];
|
|
@@ -17487,6 +18123,7 @@ class DatagridMainRenderer {
|
|
|
17487
18123
|
this.columnsSizesStable = false;
|
|
17488
18124
|
this.stabilizeColumns();
|
|
17489
18125
|
}));
|
|
18126
|
+
this.listenForColumnChanges();
|
|
17490
18127
|
}
|
|
17491
18128
|
// Initialize and set Table width for horizontal scrolling here.
|
|
17492
18129
|
ngAfterViewInit() {
|
|
@@ -17528,7 +18165,7 @@ class DatagridMainRenderer {
|
|
|
17528
18165
|
setupColumns() {
|
|
17529
18166
|
this.headers.forEach((header, index) => header.setColumnState(index));
|
|
17530
18167
|
this.columnsService.columns.splice(this.headers.length); // Trim any old columns
|
|
17531
|
-
this.rows.forEach(row => row.
|
|
18168
|
+
this.rows.forEach(row => row.setCellsState());
|
|
17532
18169
|
}
|
|
17533
18170
|
shouldComputeHeight() {
|
|
17534
18171
|
if (!this._heightSet && this.page.size > 0) {
|
|
@@ -17549,9 +18186,8 @@ class DatagridMainRenderer {
|
|
|
17549
18186
|
* Refer: http://stackoverflow.com/questions/24396205/flex-grow-not-working-in-internet-explorer-11-0
|
|
17550
18187
|
*/
|
|
17551
18188
|
computeDatagridHeight() {
|
|
17552
|
-
|
|
17553
|
-
|
|
17554
|
-
this.renderer.setStyle(this.el.nativeElement, 'height', value + 'px');
|
|
18189
|
+
const height = window.getComputedStyle(this.el.nativeElement).height;
|
|
18190
|
+
this.renderer.setStyle(this.el.nativeElement, 'height', height);
|
|
17555
18191
|
this._heightSet = true;
|
|
17556
18192
|
}
|
|
17557
18193
|
resetDatagridHeight() {
|
|
@@ -17563,13 +18199,16 @@ class DatagridMainRenderer {
|
|
|
17563
18199
|
*/
|
|
17564
18200
|
computeHeadersWidth() {
|
|
17565
18201
|
const nbColumns = this.headers.length;
|
|
18202
|
+
const headerWidths = this.headers.map(header => {
|
|
18203
|
+
return header.getColumnWidthState();
|
|
18204
|
+
});
|
|
17566
18205
|
let allStrict = true;
|
|
17567
18206
|
this.headers.forEach((header, index) => {
|
|
17568
18207
|
// On the last header column check whether all columns have strict widths.
|
|
17569
18208
|
// If all columns have strict widths, remove the strict width from the last column and make it the column's
|
|
17570
18209
|
// minimum width so that when all previous columns shrink, it will get a flexible width and cover the empty
|
|
17571
18210
|
// gap in the Datagrid.
|
|
17572
|
-
const state = Object.assign({ changes: [DatagridColumnChanges.WIDTH] },
|
|
18211
|
+
const state = Object.assign({ changes: [DatagridColumnChanges.WIDTH] }, headerWidths[index]);
|
|
17573
18212
|
if (!state.strictWidth) {
|
|
17574
18213
|
allStrict = false;
|
|
17575
18214
|
}
|
|
@@ -17579,6 +18218,45 @@ class DatagridMainRenderer {
|
|
|
17579
18218
|
this.columnsService.emitStateChangeAt(index, state);
|
|
17580
18219
|
});
|
|
17581
18220
|
}
|
|
18221
|
+
columnStateChanged(state) {
|
|
18222
|
+
const columnIndex = state.columnIndex;
|
|
18223
|
+
if (state.changes && state.changes.length) {
|
|
18224
|
+
state.changes.forEach(change => {
|
|
18225
|
+
switch (change) {
|
|
18226
|
+
case DatagridColumnChanges.WIDTH:
|
|
18227
|
+
this.headers.get(columnIndex).setWidth(state);
|
|
18228
|
+
this.rows.forEach(row => {
|
|
18229
|
+
if (row.cells && row.cells.length) {
|
|
18230
|
+
row.cells.get(columnIndex).setWidth(state);
|
|
18231
|
+
}
|
|
18232
|
+
});
|
|
18233
|
+
break;
|
|
18234
|
+
case DatagridColumnChanges.HIDDEN:
|
|
18235
|
+
this.headers.get(columnIndex).setHidden(state);
|
|
18236
|
+
this.rows.forEach(row => {
|
|
18237
|
+
if (row.cells && row.cells.length) {
|
|
18238
|
+
row.cells.get(columnIndex).setHidden(state);
|
|
18239
|
+
}
|
|
18240
|
+
});
|
|
18241
|
+
this.keyNavigation.resetKeyGrid();
|
|
18242
|
+
break;
|
|
18243
|
+
default:
|
|
18244
|
+
break;
|
|
18245
|
+
}
|
|
18246
|
+
});
|
|
18247
|
+
}
|
|
18248
|
+
}
|
|
18249
|
+
listenForColumnChanges() {
|
|
18250
|
+
this.columnsService.columns.forEach((column, index) => {
|
|
18251
|
+
this.columnsService.emitStateChange(column, { changes: [], columnIndex: index });
|
|
18252
|
+
});
|
|
18253
|
+
/*
|
|
18254
|
+
Merges all column subject so we can track them at once
|
|
18255
|
+
and receive only the changed column as result
|
|
18256
|
+
*/
|
|
18257
|
+
const columnChanges = merge(...this.columnsService.columns);
|
|
18258
|
+
this.subscriptions.push(columnChanges.subscribe(change => this.columnStateChanged(change)));
|
|
18259
|
+
}
|
|
17582
18260
|
/**
|
|
17583
18261
|
* Triggers a whole re-rendring cycle to set column sizes, if needed.
|
|
17584
18262
|
*/
|
|
@@ -17595,7 +18273,7 @@ class DatagridMainRenderer {
|
|
|
17595
18273
|
}
|
|
17596
18274
|
}
|
|
17597
18275
|
}
|
|
17598
|
-
DatagridMainRenderer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridMainRenderer, deps: [{ token: DatagridRenderOrganizer }, { token: Items }, { token: Page }, { token: DomAdapter }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DetailService }, { token: TableSizeService }, { token: ColumnsService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
|
18276
|
+
DatagridMainRenderer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridMainRenderer, deps: [{ token: DatagridRenderOrganizer }, { token: Items }, { token: Page }, { token: DomAdapter }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DetailService }, { token: TableSizeService }, { token: ColumnsService }, { token: i0.NgZone }, { token: KeyNavigationGridController }], target: i0.ɵɵFactoryTarget.Directive });
|
|
17599
18277
|
DatagridMainRenderer.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: DatagridMainRenderer, selector: "clr-datagrid", providers: [{ provide: DomAdapter, useFactory: domAdapterFactory, deps: [PLATFORM_ID] }], queries: [{ propertyName: "headers", predicate: DatagridHeaderRenderer }, { propertyName: "rows", predicate: DatagridRowRenderer, descendants: true }], ngImport: i0 });
|
|
17600
18278
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridMainRenderer, decorators: [{
|
|
17601
18279
|
type: Directive,
|
|
@@ -17603,7 +18281,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
17603
18281
|
selector: 'clr-datagrid',
|
|
17604
18282
|
providers: [{ provide: DomAdapter, useFactory: domAdapterFactory, deps: [PLATFORM_ID] }],
|
|
17605
18283
|
}]
|
|
17606
|
-
}], ctorParameters: function () { return [{ type: DatagridRenderOrganizer }, { type: Items }, { type: Page }, { type: DomAdapter }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DetailService }, { type: TableSizeService }, { type: ColumnsService }, { type: i0.NgZone }]; }, propDecorators: { headers: [{
|
|
18284
|
+
}], ctorParameters: function () { return [{ type: DatagridRenderOrganizer }, { type: Items }, { type: Page }, { type: DomAdapter }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: DetailService }, { type: TableSizeService }, { type: ColumnsService }, { type: i0.NgZone }, { type: KeyNavigationGridController }]; }, propDecorators: { headers: [{
|
|
17607
18285
|
type: ContentChildren,
|
|
17608
18286
|
args: [DatagridHeaderRenderer]
|
|
17609
18287
|
}], rows: [{
|
|
@@ -17638,6 +18316,7 @@ const CLR_DATAGRID_DIRECTIVES = [
|
|
|
17638
18316
|
ClrDatagridRow,
|
|
17639
18317
|
ClrDatagridRowDetail,
|
|
17640
18318
|
ClrDatagridSelectionCellDirective,
|
|
18319
|
+
ClrDatagridVirtualScrollDirective,
|
|
17641
18320
|
ClrIfDetail,
|
|
17642
18321
|
DatagridDetailRegisterer,
|
|
17643
18322
|
WrappedCell,
|
|
@@ -17684,6 +18363,7 @@ ClrDatagridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versi
|
|
|
17684
18363
|
ClrDatagridRow,
|
|
17685
18364
|
ClrDatagridRowDetail,
|
|
17686
18365
|
ClrDatagridSelectionCellDirective,
|
|
18366
|
+
ClrDatagridVirtualScrollDirective,
|
|
17687
18367
|
ClrIfDetail,
|
|
17688
18368
|
DatagridDetailRegisterer,
|
|
17689
18369
|
WrappedCell,
|
|
@@ -17734,6 +18414,7 @@ ClrDatagridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versi
|
|
|
17734
18414
|
ClrDatagridRow,
|
|
17735
18415
|
ClrDatagridRowDetail,
|
|
17736
18416
|
ClrDatagridSelectionCellDirective,
|
|
18417
|
+
ClrDatagridVirtualScrollDirective,
|
|
17737
18418
|
ClrIfDetail,
|
|
17738
18419
|
DatagridDetailRegisterer,
|
|
17739
18420
|
WrappedCell,
|
|
@@ -22801,6 +23482,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
22801
23482
|
}] }];
|
|
22802
23483
|
} });
|
|
22803
23484
|
|
|
23485
|
+
/*
|
|
23486
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
23487
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
23488
|
+
* This software is released under MIT license.
|
|
23489
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23490
|
+
*/
|
|
23491
|
+
class ClrModalConfigurationService {
|
|
23492
|
+
constructor() {
|
|
23493
|
+
this.fadeMove = 'fadeDown';
|
|
23494
|
+
this.backdrop = true;
|
|
23495
|
+
}
|
|
23496
|
+
}
|
|
23497
|
+
ClrModalConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalConfigurationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
23498
|
+
ClrModalConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalConfigurationService });
|
|
23499
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalConfigurationService, decorators: [{
|
|
23500
|
+
type: Injectable
|
|
23501
|
+
}] });
|
|
23502
|
+
|
|
22804
23503
|
/*
|
|
22805
23504
|
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
22806
23505
|
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
@@ -22808,10 +23507,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
22808
23507
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
22809
23508
|
*/
|
|
22810
23509
|
class ClrModal {
|
|
22811
|
-
constructor(_scrollingService, commonStrings, modalStackService) {
|
|
23510
|
+
constructor(_scrollingService, commonStrings, modalStackService, configuration) {
|
|
22812
23511
|
this._scrollingService = _scrollingService;
|
|
22813
23512
|
this.commonStrings = commonStrings;
|
|
22814
23513
|
this.modalStackService = modalStackService;
|
|
23514
|
+
this.configuration = configuration;
|
|
22815
23515
|
this.modalId = uniqueIdFactory();
|
|
22816
23516
|
this._open = false;
|
|
22817
23517
|
this._openChanged = new EventEmitter(false);
|
|
@@ -22821,13 +23521,23 @@ class ClrModal {
|
|
|
22821
23521
|
this.skipAnimation = 'false';
|
|
22822
23522
|
this.stopClose = false;
|
|
22823
23523
|
this.altClose = new EventEmitter(false);
|
|
22824
|
-
this
|
|
23524
|
+
// presently this is only used by inline wizards
|
|
23525
|
+
this.bypassScrollService = false;
|
|
23526
|
+
}
|
|
23527
|
+
get fadeMove() {
|
|
23528
|
+
return this.skipAnimation ? '' : this.configuration.fadeMove;
|
|
23529
|
+
}
|
|
23530
|
+
set fadeMove(move) {
|
|
23531
|
+
this.configuration.fadeMove = move;
|
|
23532
|
+
}
|
|
23533
|
+
get backdrop() {
|
|
23534
|
+
return this.configuration.backdrop;
|
|
22825
23535
|
}
|
|
22826
23536
|
// Detect when _open is set to true and set no-scrolling to true
|
|
22827
23537
|
ngOnChanges(changes) {
|
|
22828
|
-
if (changes && Object.prototype.hasOwnProperty.call(changes, '_open')) {
|
|
23538
|
+
if (!this.bypassScrollService && changes && Object.prototype.hasOwnProperty.call(changes, '_open')) {
|
|
22829
23539
|
if (changes._open.currentValue) {
|
|
22830
|
-
this._scrollingService.stopScrolling();
|
|
23540
|
+
this.backdrop && this._scrollingService.stopScrolling();
|
|
22831
23541
|
this.modalStackService.trackModalOpen(this);
|
|
22832
23542
|
}
|
|
22833
23543
|
else {
|
|
@@ -22864,11 +23574,18 @@ class ClrModal {
|
|
|
22864
23574
|
}
|
|
22865
23575
|
}
|
|
22866
23576
|
}
|
|
22867
|
-
ClrModal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModal, deps: [{ token: ScrollingService }, { token: ClrCommonStringsService }, { token: ModalStackService }], target: i0.ɵɵFactoryTarget.Component });
|
|
22868
|
-
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"] }, outputs: { _openChanged: "clrModalOpenChange", altClose: "clrModalAlternateClose" }, host: { properties: { "class.open": "this._open" } }, usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2024 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 [@
|
|
22869
|
-
trigger('
|
|
22870
|
-
transition('* =>
|
|
22871
|
-
|
|
23577
|
+
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 });
|
|
23578
|
+
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" } }, usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2024 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 <div class=\"modal-content-wrapper\">\n <!-- only used in wizards -->\n <ng-content select=\".modal-nav\"></ng-content>\n\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <div class=\"modal-title-wrapper\" 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 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\n <div [@fade] *ngIf=\"backdrop\" class=\"modal-backdrop\" aria-hidden=\"true\" (click)=\"staticBackdrop || close()\"></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: [
|
|
23579
|
+
trigger('fadeMove', [
|
|
23580
|
+
transition('* => fadeDown', [
|
|
23581
|
+
style({ opacity: 0, transform: 'translate(0, -25%)' }),
|
|
23582
|
+
animate('0.2s ease-in-out'),
|
|
23583
|
+
]),
|
|
23584
|
+
transition('fadeDown => *', [
|
|
23585
|
+
animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(0, -25%)' })),
|
|
23586
|
+
]),
|
|
23587
|
+
transition('* => fadeLeft', [style({ opacity: 0, transform: 'translate(25%, 0)' }), animate('0.2s ease-in-out')]),
|
|
23588
|
+
transition('fadeLeft => *', [animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(25%, 0)' }))]),
|
|
22872
23589
|
]),
|
|
22873
23590
|
trigger('fade', [
|
|
22874
23591
|
transition('void => *', [style({ opacity: 0 }), animate('0.2s ease-in-out', style({ opacity: 0.85 }))]),
|
|
@@ -22878,16 +23595,23 @@ ClrModal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.
|
|
|
22878
23595
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModal, decorators: [{
|
|
22879
23596
|
type: Component,
|
|
22880
23597
|
args: [{ selector: 'clr-modal', viewProviders: [ScrollingService], animations: [
|
|
22881
|
-
trigger('
|
|
22882
|
-
transition('* =>
|
|
22883
|
-
|
|
23598
|
+
trigger('fadeMove', [
|
|
23599
|
+
transition('* => fadeDown', [
|
|
23600
|
+
style({ opacity: 0, transform: 'translate(0, -25%)' }),
|
|
23601
|
+
animate('0.2s ease-in-out'),
|
|
23602
|
+
]),
|
|
23603
|
+
transition('fadeDown => *', [
|
|
23604
|
+
animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(0, -25%)' })),
|
|
23605
|
+
]),
|
|
23606
|
+
transition('* => fadeLeft', [style({ opacity: 0, transform: 'translate(25%, 0)' }), animate('0.2s ease-in-out')]),
|
|
23607
|
+
transition('fadeLeft => *', [animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(25%, 0)' }))]),
|
|
22884
23608
|
]),
|
|
22885
23609
|
trigger('fade', [
|
|
22886
23610
|
transition('void => *', [style({ opacity: 0 }), animate('0.2s ease-in-out', style({ opacity: 0.85 }))]),
|
|
22887
23611
|
transition('* => void', [animate('0.2s ease-in-out', style({ opacity: 0 }))]),
|
|
22888
23612
|
]),
|
|
22889
|
-
], template: "<!--\n ~ Copyright (c) 2016-2024 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 [@
|
|
22890
|
-
}], ctorParameters: function () { return [{ type: ScrollingService }, { type: ClrCommonStringsService }, { type: ModalStackService }]; }, propDecorators: { _open: [{
|
|
23613
|
+
], template: "<!--\n ~ Copyright (c) 2016-2024 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 <div class=\"modal-content-wrapper\">\n <!-- only used in wizards -->\n <ng-content select=\".modal-nav\"></ng-content>\n\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <div class=\"modal-title-wrapper\" 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 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\n <div [@fade] *ngIf=\"backdrop\" class=\"modal-backdrop\" aria-hidden=\"true\" (click)=\"staticBackdrop || close()\"></div>\n</div>\n", styles: [":host{display:none}:host.open{display:inline}\n"] }]
|
|
23614
|
+
}], ctorParameters: function () { return [{ type: ScrollingService }, { type: ClrCommonStringsService }, { type: ModalStackService }, { type: ClrModalConfigurationService }]; }, propDecorators: { _open: [{
|
|
22891
23615
|
type: Input,
|
|
22892
23616
|
args: ['clrModalOpen']
|
|
22893
23617
|
}, {
|
|
@@ -22920,6 +23644,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
22920
23644
|
}], labelledBy: [{
|
|
22921
23645
|
type: Input,
|
|
22922
23646
|
args: ['clrModalLabelledById']
|
|
23647
|
+
}], bypassScrollService: [{
|
|
23648
|
+
type: Input,
|
|
23649
|
+
args: ['clrModalOverrideScrollService']
|
|
22923
23650
|
}] } });
|
|
22924
23651
|
|
|
22925
23652
|
/*
|
|
@@ -22999,16 +23726,122 @@ class ClrModalModule {
|
|
|
22999
23726
|
}
|
|
23000
23727
|
ClrModalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
23001
23728
|
ClrModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: ClrModalModule, declarations: [ClrModal, ClrModalBody], imports: [CommonModule, CdkTrapFocusModule, ClrIconModule], exports: [ClrModal, ClrModalBody, ClrIconModule] });
|
|
23002
|
-
ClrModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalModule, imports: [CommonModule, CdkTrapFocusModule, ClrIconModule, ClrIconModule] });
|
|
23729
|
+
ClrModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalModule, providers: [ClrModalConfigurationService], imports: [CommonModule, CdkTrapFocusModule, ClrIconModule, ClrIconModule] });
|
|
23003
23730
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrModalModule, decorators: [{
|
|
23004
23731
|
type: NgModule,
|
|
23005
23732
|
args: [{
|
|
23006
23733
|
imports: [CommonModule, CdkTrapFocusModule, ClrIconModule],
|
|
23007
23734
|
declarations: [CLR_MODAL_DIRECTIVES],
|
|
23008
23735
|
exports: [CLR_MODAL_DIRECTIVES, ClrIconModule],
|
|
23736
|
+
providers: [ClrModalConfigurationService],
|
|
23009
23737
|
}]
|
|
23010
23738
|
}], ctorParameters: function () { return []; } });
|
|
23011
23739
|
|
|
23740
|
+
/*
|
|
23741
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
23742
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
23743
|
+
* This software is released under MIT license.
|
|
23744
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23745
|
+
*/
|
|
23746
|
+
class ClrSidePanel {
|
|
23747
|
+
constructor(element, configuration) {
|
|
23748
|
+
this.element = element;
|
|
23749
|
+
this.configuration = configuration;
|
|
23750
|
+
this._open = false;
|
|
23751
|
+
this.openChange = new EventEmitter(false);
|
|
23752
|
+
this.skipAnimation = 'false';
|
|
23753
|
+
this.staticBackdrop = false;
|
|
23754
|
+
this.preventClose = false;
|
|
23755
|
+
this.altClose = new EventEmitter(false);
|
|
23756
|
+
}
|
|
23757
|
+
get clrSidePanelBackdrop() {
|
|
23758
|
+
return this.configuration.backdrop;
|
|
23759
|
+
}
|
|
23760
|
+
set clrSidePanelBackdrop(backdrop) {
|
|
23761
|
+
if (backdrop !== undefined) {
|
|
23762
|
+
this.configuration.backdrop = backdrop;
|
|
23763
|
+
}
|
|
23764
|
+
}
|
|
23765
|
+
ngOnInit() {
|
|
23766
|
+
this.configuration.fadeMove = 'fadeLeft';
|
|
23767
|
+
}
|
|
23768
|
+
open() {
|
|
23769
|
+
this.modal.open();
|
|
23770
|
+
}
|
|
23771
|
+
close() {
|
|
23772
|
+
this.modal.close();
|
|
23773
|
+
}
|
|
23774
|
+
documentClick(event) {
|
|
23775
|
+
if (!this.element.nativeElement.contains(event.target) && this.modal._open && !this.configuration.backdrop) {
|
|
23776
|
+
this.modal.close();
|
|
23777
|
+
}
|
|
23778
|
+
}
|
|
23779
|
+
}
|
|
23780
|
+
ClrSidePanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrSidePanel, deps: [{ token: i0.ElementRef }, { token: ClrModalConfigurationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
23781
|
+
ClrSidePanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrSidePanel, selector: "clr-side-panel", inputs: { _open: ["clrSidePanelOpen", "_open"], closeButtonAriaLabel: ["clrSidePanelCloseButtonAriaLabel", "closeButtonAriaLabel"], size: ["clrSidePanelSize", "size"], skipAnimation: ["clrSidePanelSkipAnimation", "skipAnimation"], labelledById: ["clrSidePanelLabelledById", "labelledById"], staticBackdrop: ["clrSidePanelStaticBackdrop", "staticBackdrop"], preventClose: ["clrSidePanelPreventClose", "preventClose"], clrSidePanelBackdrop: "clrSidePanelBackdrop" }, outputs: { openChange: "clrSidePanelOpenChange", altClose: "clrSidePanelAlternateClose" }, host: { listeners: { "document:pointerup": "documentClick($event)" }, properties: { "class.side-panel": "true" } }, viewQueries: [{ propertyName: "modal", first: true, predicate: ClrModal, descendants: true }], ngImport: i0, template: "<clr-modal\n [clrModalOpen]=\"_open\"\n (clrModalOpenChange)=\"openChange.emit($event)\"\n [clrModalCloseButtonAriaLabel]=\"closeButtonAriaLabel\"\n [clrModalSize]=\"size\"\n [clrModalSkipAnimation]=\"skipAnimation\"\n [clrModalStaticBackdrop]=\"staticBackdrop\"\n [clrModalLabelledById]=\"labelledById\"\n [clrModalPreventClose]=\"preventClose\"\n (clrModalAlternateClose)=\"altClose.emit($event)\"\n>\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: "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" }] });
|
|
23782
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrSidePanel, decorators: [{
|
|
23783
|
+
type: Component,
|
|
23784
|
+
args: [{ selector: 'clr-side-panel', host: {
|
|
23785
|
+
'[class.side-panel]': 'true',
|
|
23786
|
+
}, template: "<clr-modal\n [clrModalOpen]=\"_open\"\n (clrModalOpenChange)=\"openChange.emit($event)\"\n [clrModalCloseButtonAriaLabel]=\"closeButtonAriaLabel\"\n [clrModalSize]=\"size\"\n [clrModalSkipAnimation]=\"skipAnimation\"\n [clrModalStaticBackdrop]=\"staticBackdrop\"\n [clrModalLabelledById]=\"labelledById\"\n [clrModalPreventClose]=\"preventClose\"\n (clrModalAlternateClose)=\"altClose.emit($event)\"\n>\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" }]
|
|
23787
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ClrModalConfigurationService }]; }, propDecorators: { _open: [{
|
|
23788
|
+
type: Input,
|
|
23789
|
+
args: ['clrSidePanelOpen']
|
|
23790
|
+
}], openChange: [{
|
|
23791
|
+
type: Output,
|
|
23792
|
+
args: ['clrSidePanelOpenChange']
|
|
23793
|
+
}], closeButtonAriaLabel: [{
|
|
23794
|
+
type: Input,
|
|
23795
|
+
args: ['clrSidePanelCloseButtonAriaLabel']
|
|
23796
|
+
}], size: [{
|
|
23797
|
+
type: Input,
|
|
23798
|
+
args: ['clrSidePanelSize']
|
|
23799
|
+
}], skipAnimation: [{
|
|
23800
|
+
type: Input,
|
|
23801
|
+
args: ['clrSidePanelSkipAnimation']
|
|
23802
|
+
}], labelledById: [{
|
|
23803
|
+
type: Input,
|
|
23804
|
+
args: ['clrSidePanelLabelledById']
|
|
23805
|
+
}], staticBackdrop: [{
|
|
23806
|
+
type: Input,
|
|
23807
|
+
args: ['clrSidePanelStaticBackdrop']
|
|
23808
|
+
}], preventClose: [{
|
|
23809
|
+
type: Input,
|
|
23810
|
+
args: ['clrSidePanelPreventClose']
|
|
23811
|
+
}], altClose: [{
|
|
23812
|
+
type: Output,
|
|
23813
|
+
args: ['clrSidePanelAlternateClose']
|
|
23814
|
+
}], modal: [{
|
|
23815
|
+
type: ViewChild,
|
|
23816
|
+
args: [ClrModal]
|
|
23817
|
+
}], clrSidePanelBackdrop: [{
|
|
23818
|
+
type: Input
|
|
23819
|
+
}], documentClick: [{
|
|
23820
|
+
type: HostListener,
|
|
23821
|
+
args: ['document:pointerup', ['$event']]
|
|
23822
|
+
}] } });
|
|
23823
|
+
|
|
23824
|
+
/*
|
|
23825
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
23826
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
23827
|
+
* This software is released under MIT license.
|
|
23828
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
23829
|
+
*/
|
|
23830
|
+
const CLR_SIDEPANEL_DIRECTIVES = [ClrSidePanel];
|
|
23831
|
+
class ClrSidePanelModule {
|
|
23832
|
+
}
|
|
23833
|
+
ClrSidePanelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrSidePanelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
23834
|
+
ClrSidePanelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: ClrSidePanelModule, declarations: [ClrSidePanel], imports: [CommonModule, CdkTrapFocusModule, ClrIconModule, ClrModalModule], exports: [ClrSidePanel, ClrIconModule] });
|
|
23835
|
+
ClrSidePanelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrSidePanelModule, imports: [CommonModule, CdkTrapFocusModule, ClrIconModule, ClrModalModule, ClrIconModule] });
|
|
23836
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrSidePanelModule, decorators: [{
|
|
23837
|
+
type: NgModule,
|
|
23838
|
+
args: [{
|
|
23839
|
+
imports: [CommonModule, CdkTrapFocusModule, ClrIconModule, ClrModalModule],
|
|
23840
|
+
declarations: [CLR_SIDEPANEL_DIRECTIVES],
|
|
23841
|
+
exports: [CLR_SIDEPANEL_DIRECTIVES, ClrIconModule],
|
|
23842
|
+
}]
|
|
23843
|
+
}] });
|
|
23844
|
+
|
|
23012
23845
|
/*
|
|
23013
23846
|
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
23014
23847
|
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
@@ -26057,13 +26890,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
26057
26890
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
26058
26891
|
*/
|
|
26059
26892
|
class ClrWizard {
|
|
26060
|
-
constructor(platformId, commonStrings, navService, pageCollection, buttonService, headerActionService, differs) {
|
|
26893
|
+
constructor(platformId, commonStrings, navService, pageCollection, buttonService, headerActionService, elementRef, differs) {
|
|
26061
26894
|
this.platformId = platformId;
|
|
26062
26895
|
this.commonStrings = commonStrings;
|
|
26063
26896
|
this.navService = navService;
|
|
26064
26897
|
this.pageCollection = pageCollection;
|
|
26065
26898
|
this.buttonService = buttonService;
|
|
26066
26899
|
this.headerActionService = headerActionService;
|
|
26900
|
+
this.elementRef = elementRef;
|
|
26067
26901
|
/**
|
|
26068
26902
|
* Set the aria-label for the stepnav section of the wizard. Set using `[clrWizardStepnavAriaLabel]` input.
|
|
26069
26903
|
*/
|
|
@@ -26077,6 +26911,12 @@ class ClrWizard {
|
|
|
26077
26911
|
* in the top right corner. Set using `[clrWizardClosable]` input.
|
|
26078
26912
|
*/
|
|
26079
26913
|
this.closable = true;
|
|
26914
|
+
/**
|
|
26915
|
+
* Used to communicate to the underlying modal that animations are not
|
|
26916
|
+
* wanted. Primary use is for the display of static/inline wizards.
|
|
26917
|
+
* Set using `[clrWizardPreventModalAnimation]` input.
|
|
26918
|
+
*/
|
|
26919
|
+
this._stopModalAnimations = false;
|
|
26080
26920
|
/**
|
|
26081
26921
|
* Emits when the wizard is opened or closed.
|
|
26082
26922
|
* Listen via `(clrWizardOpenChange)` event.
|
|
@@ -26215,9 +27055,16 @@ class ClrWizard {
|
|
|
26215
27055
|
get isFirst() {
|
|
26216
27056
|
return this.navService.currentPageIsFirst;
|
|
26217
27057
|
}
|
|
27058
|
+
get isInline() {
|
|
27059
|
+
return this.elementRef.nativeElement.classList.contains('clr-wizard--inline');
|
|
27060
|
+
}
|
|
27061
|
+
get stopModalAnimations() {
|
|
27062
|
+
return this._stopModalAnimations ? 'true' : 'false';
|
|
27063
|
+
}
|
|
26218
27064
|
ngAfterContentInit() {
|
|
26219
27065
|
this.pageCollection.pages = this.pages;
|
|
26220
27066
|
this.headerActionService.wizardHeaderActions = this.headerActions;
|
|
27067
|
+
this.initializeButtons();
|
|
26221
27068
|
}
|
|
26222
27069
|
ngDoCheck() {
|
|
26223
27070
|
this.updateNavOnPageChanges();
|
|
@@ -26422,6 +27269,12 @@ class ClrWizard {
|
|
|
26422
27269
|
changes.forEachRemovedItem(() => this.navService.updateNavigation());
|
|
26423
27270
|
}
|
|
26424
27271
|
}
|
|
27272
|
+
initializeButtons() {
|
|
27273
|
+
// Only trigger buttons ready if default is open (inlined)
|
|
27274
|
+
if (this._open) {
|
|
27275
|
+
this.buttonService.buttonsReady = true;
|
|
27276
|
+
}
|
|
27277
|
+
}
|
|
26425
27278
|
emitWizardFinished() {
|
|
26426
27279
|
if (!this.stopNext) {
|
|
26427
27280
|
this.forceFinish();
|
|
@@ -26429,8 +27282,8 @@ class ClrWizard {
|
|
|
26429
27282
|
this.wizardFinished.emit();
|
|
26430
27283
|
}
|
|
26431
27284
|
}
|
|
26432
|
-
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.IterableDiffers }], target: i0.ɵɵFactoryTarget.Component });
|
|
26433
|
-
ClrWizard.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrWizard, selector: "clr-wizard", inputs: { stepnavAriaLabel: ["clrWizardStepnavAriaLabel", "stepnavAriaLabel"], size: ["clrWizardSize", "size"], closable: ["clrWizardClosable", "closable"], 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.lastPage": "navService.currentPageIsLast" } }, 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 }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2024 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<clr-modal\n [clrModalOpen]=\"_open\"\n [clrModalSize]=\"size\"\n [clrModalClosable]=\"closable\"\n [clrModalStaticBackdrop]=\"true\"\n [clrModalPreventClose]=\"true\"\n (clrModalAlternateClose)=\"modalCancel()\"\n [clrModalLabelledById]=\"wizardId\"\n>\n <div class=\"modal-nav clr-wizard-stepnav-wrapper\" role=\"region\" [attr.aria-label]=\"stepnavAriaLabel\">\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></clr-wizard-stepnav>\n </div>\n\n <div class=\"modal-title\" role=\"heading\" [attr.aria-level]=\"navService.currentPage.pageTitle.headingLevel || 2\">\n <span tabindex=\"-1\" #pageTitle class=\"modal-title-text\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPageTitle\"></ng-template>\n </span>\n\n <div class=\"modal-header-actions-wrapper\" *ngIf=\"headerActionService.displayHeaderActionsWrapper\">\n <div *ngIf=\"headerActionService.showWizardHeaderActions\">\n <ng-content select=\"clr-wizard-header-action\"></ng-content>\n </div>\n <div *ngIf=\"headerActionService.currentPageHasHeaderActions\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.headerActions\"></ng-template>\n </div>\n </div>\n </div>\n\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 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</clr-modal>\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"], outputs: ["clrModalOpenChange", "clrModalAlternateClose"] }, { kind: "directive", type: ClrModalBody, selector: ".modal-body" }, { kind: "component", type: ClrWizardStepnav, selector: "clr-wizard-stepnav" }] });
|
|
27285
|
+
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 });
|
|
27286
|
+
ClrWizard.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrWizard, selector: "clr-wizard", inputs: { stepnavAriaLabel: ["clrWizardStepnavAriaLabel", "stepnavAriaLabel"], size: ["clrWizardSize", "size"], closable: ["clrWizardClosable", "closable"], _stopModalAnimations: ["clrWizardPreventModalAnimation", "_stopModalAnimations"], forceForward: ["clrWizardForceForwardNavigation", "forceForward"], clrWizardOpen: "clrWizardOpen", stopNext: ["clrWizardPreventDefaultNext", "stopNext"], stopCancel: ["clrWizardPreventDefaultCancel", "stopCancel"], stopNavigation: ["clrWizardPreventNavigation", "stopNavigation"], disableStepnav: ["clrWizardDisableStepnav", "disableStepnav"] }, outputs: { _openChanged: "clrWizardOpenChange", onCancel: "clrWizardOnCancel", wizardFinished: "clrWizardOnFinish", onReset: "clrWizardOnReset", currentPageChanged: "clrWizardCurrentPageChanged", onMoveNext: "clrWizardOnNext", onMovePrevious: "clrWizardOnPrevious" }, host: { properties: { "class.clr-wizard": "true", "class.wizard-md": "size == 'md'", "class.wizard-lg": "size == 'lg'", "class.wizard-xl": "size == 'xl'", "class.lastPage": "navService.currentPageIsLast" } }, 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 }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2024 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<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 <div class=\"modal-nav clr-wizard-stepnav-wrapper\" role=\"region\" [attr.aria-label]=\"stepnavAriaLabel\">\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></clr-wizard-stepnav>\n </div>\n\n <div class=\"modal-title\" role=\"heading\" [attr.aria-level]=\"navService.currentPage.pageTitle.headingLevel || 2\">\n <span tabindex=\"-1\" #pageTitle class=\"modal-title-text\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPageTitle\"></ng-template>\n </span>\n\n <div class=\"modal-header-actions-wrapper\" *ngIf=\"headerActionService.displayHeaderActionsWrapper\">\n <div *ngIf=\"headerActionService.showWizardHeaderActions\">\n <ng-content select=\"clr-wizard-header-action\"></ng-content>\n </div>\n <div *ngIf=\"headerActionService.currentPageHasHeaderActions\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.headerActions\"></ng-template>\n </div>\n </div>\n </div>\n\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 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</clr-modal>\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: "component", type: ClrWizardStepnav, selector: "clr-wizard-stepnav" }] });
|
|
26434
27287
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrWizard, decorators: [{
|
|
26435
27288
|
type: Component,
|
|
26436
27289
|
args: [{ selector: 'clr-wizard', providers: [WizardNavigationService, PageCollectionService, ButtonHubService, HeaderActionService], host: {
|
|
@@ -26439,12 +27292,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
26439
27292
|
'[class.wizard-lg]': "size == 'lg'",
|
|
26440
27293
|
'[class.wizard-xl]': "size == 'xl'",
|
|
26441
27294
|
'[class.lastPage]': 'navService.currentPageIsLast',
|
|
26442
|
-
}, template: "<!--\n ~ Copyright (c) 2016-2024 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<clr-modal\n [clrModalOpen]=\"_open\"\n [clrModalSize]=\"size\"\n [clrModalClosable]=\"closable\"\n [clrModalStaticBackdrop]=\"true\"\n [clrModalPreventClose]=\"true\"\n (clrModalAlternateClose)=\"modalCancel()\"\n [clrModalLabelledById]=\"wizardId\"\n>\n <div class=\"modal-nav clr-wizard-stepnav-wrapper\" role=\"region\" [attr.aria-label]=\"stepnavAriaLabel\">\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></clr-wizard-stepnav>\n </div>\n\n <div class=\"modal-title\" role=\"heading\" [attr.aria-level]=\"navService.currentPage.pageTitle.headingLevel || 2\">\n <span tabindex=\"-1\" #pageTitle class=\"modal-title-text\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPageTitle\"></ng-template>\n </span>\n\n <div class=\"modal-header-actions-wrapper\" *ngIf=\"headerActionService.displayHeaderActionsWrapper\">\n <div *ngIf=\"headerActionService.showWizardHeaderActions\">\n <ng-content select=\"clr-wizard-header-action\"></ng-content>\n </div>\n <div *ngIf=\"headerActionService.currentPageHasHeaderActions\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.headerActions\"></ng-template>\n </div>\n </div>\n </div>\n\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 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</clr-modal>\n" }]
|
|
27295
|
+
}, template: "<!--\n ~ Copyright (c) 2016-2024 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<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 <div class=\"modal-nav clr-wizard-stepnav-wrapper\" role=\"region\" [attr.aria-label]=\"stepnavAriaLabel\">\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></clr-wizard-stepnav>\n </div>\n\n <div class=\"modal-title\" role=\"heading\" [attr.aria-level]=\"navService.currentPage.pageTitle.headingLevel || 2\">\n <span tabindex=\"-1\" #pageTitle class=\"modal-title-text\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPageTitle\"></ng-template>\n </span>\n\n <div class=\"modal-header-actions-wrapper\" *ngIf=\"headerActionService.displayHeaderActionsWrapper\">\n <div *ngIf=\"headerActionService.showWizardHeaderActions\">\n <ng-content select=\"clr-wizard-header-action\"></ng-content>\n </div>\n <div *ngIf=\"headerActionService.currentPageHasHeaderActions\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.headerActions\"></ng-template>\n </div>\n </div>\n </div>\n\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 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</clr-modal>\n" }]
|
|
26443
27296
|
}], ctorParameters: function () {
|
|
26444
27297
|
return [{ type: undefined, decorators: [{
|
|
26445
27298
|
type: Inject,
|
|
26446
27299
|
args: [PLATFORM_ID]
|
|
26447
|
-
}] }, { type: ClrCommonStringsService }, { type: WizardNavigationService }, { type: PageCollectionService }, { type: ButtonHubService }, { type: HeaderActionService }, { type: i0.IterableDiffers }];
|
|
27300
|
+
}] }, { type: ClrCommonStringsService }, { type: WizardNavigationService }, { type: PageCollectionService }, { type: ButtonHubService }, { type: HeaderActionService }, { type: i0.ElementRef }, { type: i0.IterableDiffers }];
|
|
26448
27301
|
}, propDecorators: { stepnavAriaLabel: [{
|
|
26449
27302
|
type: Input,
|
|
26450
27303
|
args: ['clrWizardStepnavAriaLabel']
|
|
@@ -26454,6 +27307,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
26454
27307
|
}], closable: [{
|
|
26455
27308
|
type: Input,
|
|
26456
27309
|
args: ['clrWizardClosable']
|
|
27310
|
+
}], _stopModalAnimations: [{
|
|
27311
|
+
type: Input,
|
|
27312
|
+
args: ['clrWizardPreventModalAnimation']
|
|
26457
27313
|
}], _openChanged: [{
|
|
26458
27314
|
type: Output,
|
|
26459
27315
|
args: ['clrWizardOpenChange']
|
|
@@ -26768,6 +27624,7 @@ ClarityModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version:
|
|
|
26768
27624
|
ClrLayoutModule,
|
|
26769
27625
|
ClrPopoverModule,
|
|
26770
27626
|
ClrWizardModule,
|
|
27627
|
+
ClrSidePanelModule,
|
|
26771
27628
|
ClrStepperModule,
|
|
26772
27629
|
ClrSpinnerModule,
|
|
26773
27630
|
ClrProgressBarModule,
|
|
@@ -26785,6 +27642,7 @@ ClarityModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version:
|
|
|
26785
27642
|
ClrLayoutModule,
|
|
26786
27643
|
ClrPopoverModule,
|
|
26787
27644
|
ClrWizardModule,
|
|
27645
|
+
ClrSidePanelModule,
|
|
26788
27646
|
ClrStepperModule,
|
|
26789
27647
|
ClrSpinnerModule,
|
|
26790
27648
|
ClrProgressBarModule,
|
|
@@ -26806,6 +27664,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
26806
27664
|
ClrLayoutModule,
|
|
26807
27665
|
ClrPopoverModule,
|
|
26808
27666
|
ClrWizardModule,
|
|
27667
|
+
ClrSidePanelModule,
|
|
26809
27668
|
ClrStepperModule,
|
|
26810
27669
|
ClrSpinnerModule,
|
|
26811
27670
|
ClrProgressBarModule,
|
|
@@ -27102,5 +27961,5 @@ const CLR_MENU_POSITIONS = [
|
|
|
27102
27961
|
* Generated bundle index. Do not edit.
|
|
27103
27962
|
*/
|
|
27104
27963
|
|
|
27105
|
-
export { CHANGE_KEYS, CLR_ALERT_DIRECTIVES, CLR_BUTTON_GROUP_DIRECTIVES, CLR_DATAGRID_DIRECTIVES, CLR_DATEPICKER_DIRECTIVES, CLR_DROPDOWN_DIRECTIVES, 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_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, 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, ClrDateInputValidator, ClrDatepickerModule, ClrDatepickerViewManager, ClrDay, ClrDaypicker, ClrDestroyService, ClrDropdown, ClrDropdownItem, ClrDropdownMenu, ClrDropdownModule, ClrDropdownTrigger, ClrEmphasisModule, ClrExpandableAnimation, 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, ClrModalModule, ClrMonthpicker, ClrNavLevel, ClrNavigationModule, ClrOption, ClrOptionItems, ClrOptionSelected, ClrOptions, ClrPassword, ClrPasswordContainer, ClrPasswordModule, ClrPopoverAnchor, ClrPopoverContent, ClrPopoverEventsService, ClrPopoverHostDirective, ClrPopoverModule, ClrPopoverPositionService, ClrPopoverToggleService, ClrProgressBar, ClrProgressBarModule, ClrRadio, ClrRadioContainer, ClrRadioModule, ClrRadioWrapper, ClrRange, ClrRangeContainer, ClrRangeModule, ClrRecursiveForOf, ClrSelect, ClrSelectContainer, ClrSelectModule, ClrSelectedState, ClrSide, ClrSignpost, ClrSignpostContent, ClrSignpostModule, ClrSignpostTrigger, ClrSpinner, ClrSpinnerModule, ClrStackBlock, ClrStackContentInput, ClrStackHeader, ClrStackView, ClrStackViewCustomTags, ClrStackViewLabel, ClrStackViewModule, ClrStandaloneCdkTrapFocus, ClrStepButton, ClrStepButtonType, ClrStepper, ClrStepperModule, ClrStepperPanel, ClrStopEscapePropagationDirective, ClrTab, ClrTabContent, ClrTabLink, ClrTabOverflowContent, ClrTabs, 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, DatagridWillyWonka as ÇlrDatagridWillyWonka, ExpandableOompaLoompa as ÇlrExpandableOompaLoompa, StepperOompaLoompa as ÇlrStepperOompaLoompa, StepperWillyWonka as ÇlrStepperWillyWonka, TabsWillyWonka as ÇlrTabsWillyWonka, WrappedCell as ÇlrWrappedCell, WrappedColumn as ÇlrWrappedColumn, WrappedRow as ÇlrWrappedRow };
|
|
27964
|
+
export { CHANGE_KEYS, CLR_ALERT_DIRECTIVES, CLR_BUTTON_GROUP_DIRECTIVES, CLR_DATAGRID_DIRECTIVES, CLR_DATEPICKER_DIRECTIVES, CLR_DROPDOWN_DIRECTIVES, 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, 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, ClrDateInputValidator, ClrDatepickerModule, ClrDatepickerViewManager, ClrDay, ClrDaypicker, ClrDestroyService, ClrDropdown, ClrDropdownItem, ClrDropdownMenu, ClrDropdownModule, ClrDropdownTrigger, ClrEmphasisModule, ClrExpandableAnimation, ClrFileInput, ClrFileInputContainer, ClrFileInputModule, ClrFileInputValidator, ClrFileInputValueAccessor, 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, ClrModalModule, ClrMonthpicker, ClrNavLevel, ClrNavigationModule, ClrOption, ClrOptionItems, ClrOptionSelected, ClrOptions, ClrPassword, ClrPasswordContainer, ClrPasswordModule, ClrPopoverAnchor, ClrPopoverContent, ClrPopoverEventsService, ClrPopoverHostDirective, ClrPopoverModule, ClrPopoverPositionService, ClrPopoverToggleService, ClrProgressBar, ClrProgressBarModule, ClrRadio, ClrRadioContainer, ClrRadioModule, ClrRadioWrapper, ClrRange, ClrRangeContainer, ClrRangeModule, ClrRecursiveForOf, ClrSelect, ClrSelectContainer, ClrSelectModule, ClrSelectedState, ClrSide, ClrSidePanel, ClrSidePanelModule, ClrSignpost, ClrSignpostContent, ClrSignpostModule, ClrSignpostTrigger, ClrSpinner, ClrSpinnerModule, ClrStackBlock, ClrStackContentInput, ClrStackHeader, ClrStackView, ClrStackViewCustomTags, ClrStackViewLabel, ClrStackViewModule, ClrStandaloneCdkTrapFocus, ClrStepButton, ClrStepButtonType, ClrStepper, ClrStepperModule, ClrStepperPanel, ClrStopEscapePropagationDirective, ClrTab, ClrTabContent, ClrTabLink, ClrTabOverflowContent, ClrTabs, 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 };
|
|
27106
27965
|
//# sourceMappingURL=clr-angular.mjs.map
|