@clr/angular 17.5.0 → 17.6.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 +335 -112
- package/data/datagrid/built-in/filters/datagrid-string-filter.d.ts +13 -4
- package/data/datagrid/datagrid-virtual-scroll.directive.d.ts +4 -3
- package/data/datagrid/providers/columns.service.d.ts +1 -0
- package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter.mjs +18 -17
- package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter.mjs +63 -28
- package/esm2020/data/datagrid/datagrid-column.mjs +1 -1
- package/esm2020/data/datagrid/datagrid-virtual-scroll.directive.mjs +11 -9
- package/esm2020/data/datagrid/providers/columns.service.mjs +4 -1
- package/esm2020/data/datagrid/render/main-renderer.mjs +3 -3
- package/esm2020/forms/combobox/combobox.mjs +7 -7
- package/esm2020/forms/common/abstract-container.mjs +9 -3
- package/esm2020/forms/common/if-control-state/if-control-state.service.mjs +11 -27
- package/esm2020/forms/common/label.mjs +4 -1
- package/esm2020/forms/common/providers/ng-control.service.mjs +5 -1
- package/esm2020/forms/datepicker/calendar.mjs +21 -8
- package/esm2020/forms/datepicker/date-container.mjs +10 -3
- package/esm2020/forms/datepicker/date-input.mjs +2 -2
- package/esm2020/forms/datepicker/datepicker-action-buttons.mjs +50 -0
- package/esm2020/forms/datepicker/datepicker-view-manager.mjs +17 -10
- package/esm2020/forms/datepicker/datepicker.module.mjs +7 -3
- package/esm2020/forms/datepicker/day.mjs +12 -14
- package/esm2020/forms/datepicker/index.mjs +2 -1
- package/esm2020/forms/datepicker/model/calendar-view.model.mjs +15 -4
- package/esm2020/forms/datepicker/providers/date-navigation.service.mjs +9 -4
- package/esm2020/forms/file-input/file-input-container.mjs +101 -13
- package/esm2020/forms/file-input/file-input-validator-errors.mjs +8 -0
- package/esm2020/forms/file-input/file-input-validator.mjs +14 -22
- package/esm2020/forms/file-input/file-input.mjs +3 -2
- package/esm2020/forms/file-input/file-input.module.mjs +35 -4
- package/esm2020/forms/file-input/file-list.mjs +158 -0
- package/esm2020/forms/file-input/file-messages-template.mjs +26 -0
- package/esm2020/forms/file-input/file-messages.mjs +61 -0
- package/esm2020/forms/file-input/index.mjs +5 -1
- package/esm2020/forms/forms.module.mjs +7 -3
- package/esm2020/forms/index.mjs +2 -1
- package/esm2020/forms/input/input-container.mjs +11 -3
- package/esm2020/forms/input/input.mjs +10 -1
- package/esm2020/forms/number-input/index.mjs +10 -0
- package/esm2020/forms/number-input/number-input-container.mjs +145 -0
- package/esm2020/forms/number-input/number-input.mjs +72 -0
- package/esm2020/forms/number-input/number-input.module.mjs +32 -0
- package/esm2020/utils/i18n/common-strings.default.mjs +4 -1
- package/esm2020/utils/i18n/common-strings.interface.mjs +1 -1
- package/fesm2015/clr-angular.mjs +893 -181
- package/fesm2015/clr-angular.mjs.map +1 -1
- package/fesm2020/clr-angular.mjs +882 -173
- package/fesm2020/clr-angular.mjs.map +1 -1
- package/forms/common/abstract-container.d.ts +2 -0
- package/forms/common/if-control-state/if-control-state.service.d.ts +4 -7
- package/forms/common/providers/ng-control.service.d.ts +2 -0
- package/forms/datepicker/calendar.d.ts +6 -1
- package/forms/datepicker/date-container.d.ts +2 -1
- package/forms/datepicker/datepicker-action-buttons.d.ts +16 -0
- package/forms/datepicker/datepicker-view-manager.d.ts +4 -1
- package/forms/datepicker/datepicker.module.d.ts +9 -8
- package/forms/datepicker/day.d.ts +5 -6
- package/forms/datepicker/index.d.ts +1 -0
- package/forms/datepicker/model/calendar-view.model.d.ts +5 -0
- package/forms/datepicker/providers/date-navigation.service.d.ts +6 -2
- package/forms/file-input/file-input-container.d.ts +15 -4
- package/forms/file-input/file-input-validator-errors.d.ts +52 -0
- package/forms/file-input/file-input.module.d.ts +7 -4
- package/forms/file-input/file-list.d.ts +18 -0
- package/forms/file-input/file-messages-template.d.ts +19 -0
- package/forms/file-input/file-messages.d.ts +17 -0
- package/forms/file-input/index.d.ts +4 -0
- package/forms/forms.module.d.ts +2 -1
- package/forms/index.d.ts +1 -0
- package/forms/input/input-container.d.ts +1 -1
- package/forms/number-input/index.d.ts +3 -0
- package/forms/number-input/number-input-container.d.ts +16 -0
- package/forms/number-input/number-input.d.ts +20 -0
- package/forms/number-input/number-input.module.d.ts +13 -0
- package/package.json +2 -2
- package/utils/i18n/common-strings.interface.d.ts +12 -0
package/fesm2020/clr-angular.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Directive, NgModule, Optional, Input, Injectable, Component, ChangeDetectionStrategy, EventEmitter, SkipSelf, HostBinding, Output, ContentChildren, PLATFORM_ID, Inject, ViewChild, HostListener, Renderer2, InjectionToken, ElementRef, NgZone, ChangeDetectorRef, ContentChild, ComponentFactoryResolver, KeyValueDiffers, Self, Attribute, LOCALE_ID, inject, forwardRef, ViewContainerRef, VERSION,
|
|
2
|
+
import { Directive, NgModule, Optional, Input, Injectable, Component, ChangeDetectionStrategy, EventEmitter, SkipSelf, HostBinding, Output, ContentChildren, PLATFORM_ID, Inject, ViewChild, HostListener, Renderer2, InjectionToken, ElementRef, NgZone, ChangeDetectorRef, ContentChild, ComponentFactoryResolver, KeyValueDiffers, Self, Attribute, LOCALE_ID, inject, TemplateRef, Injector, forwardRef, ViewContainerRef, VERSION, EnvironmentInjector, IterableDiffers } from '@angular/core';
|
|
3
3
|
import * as i5 from '@angular/common';
|
|
4
4
|
import { CommonModule, isPlatformBrowser, DOCUMENT, NgForOf, getLocaleDayNames, FormStyle, TranslationWidth, getLocaleMonthNames, getLocaleFirstDayOfWeek, getLocaleDateFormat, FormatWidth } from '@angular/common';
|
|
5
5
|
import { ClarityIcons, angleIcon, exclamationCircleIcon, checkCircleIcon, ellipsisHorizontalIcon, windowCloseIcon, infoCircleIcon, eventIcon, calendarIcon, folderOpenIcon, eyeHideIcon, eyeIcon, ellipsisVerticalIcon, viewColumnsIcon, arrowIcon, timesIcon, stepForward2Icon, angleDoubleIcon, filterGridCircleIcon, filterGridIcon, errorStandardIcon, helpIcon, infoStandardIcon, noteIcon, successStandardIcon, warningStandardIcon, circleIcon, dotCircleIcon } from '@cds/core/icon';
|
|
6
|
-
import { map, tap, startWith, distinctUntilChanged, filter, skipUntil, debounceTime, takeUntil, take, first, switchMap } from 'rxjs/operators';
|
|
6
|
+
import { map, tap, startWith, distinctUntilChanged, filter, skipUntil, debounceTime, takeUntil, take, first, switchMap as switchMap$1 } from 'rxjs/operators';
|
|
7
7
|
import * as i3 from 'rxjs';
|
|
8
|
-
import { Subject, BehaviorSubject, Observable, fromEvent, isObservable, of,
|
|
8
|
+
import { Subject, BehaviorSubject, Observable, fromEvent, isObservable, of, shareReplay, switchMap, merge, map as map$1, EMPTY, startWith as startWith$1, ReplaySubject, combineLatest } from 'rxjs';
|
|
9
9
|
import { trigger, transition, style, animate, state, keyframes } from '@angular/animations';
|
|
10
10
|
import * as i1 from '@angular/forms';
|
|
11
11
|
import { FormControl, FormGroup, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, SelectMultipleControlValueAccessor } from '@angular/forms';
|
|
@@ -273,6 +273,8 @@ const commonStringsDefault = {
|
|
|
273
273
|
close: 'Close',
|
|
274
274
|
show: 'Show',
|
|
275
275
|
hide: 'Hide',
|
|
276
|
+
apply: 'Apply',
|
|
277
|
+
cancel: 'Cancel',
|
|
276
278
|
expand: 'Expand',
|
|
277
279
|
collapse: 'Collapse',
|
|
278
280
|
more: 'More',
|
|
@@ -314,6 +316,7 @@ const commonStringsDefault = {
|
|
|
314
316
|
singleActionableAriaLabel: 'Single actionable header',
|
|
315
317
|
detailExpandableAriaLabel: 'Toggle more row content',
|
|
316
318
|
datagridFilterAriaLabel: '{COLUMN} filter',
|
|
319
|
+
datagridFilterLabel: '{COLUMN} filter',
|
|
317
320
|
datagridFilterDialogAriaLabel: 'Filter dialog',
|
|
318
321
|
columnSeparatorAriaLabel: 'Column resize handle',
|
|
319
322
|
columnSeparatorDescription: 'Use left or right key to resize the column',
|
|
@@ -4534,6 +4537,9 @@ class NgControlService {
|
|
|
4534
4537
|
this._controlChanges = new Subject();
|
|
4535
4538
|
this._helpers = new Subject();
|
|
4536
4539
|
}
|
|
4540
|
+
get control() {
|
|
4541
|
+
return this._control;
|
|
4542
|
+
}
|
|
4537
4543
|
get controlChanges() {
|
|
4538
4544
|
return this._controlChanges.asObservable();
|
|
4539
4545
|
}
|
|
@@ -4541,6 +4547,7 @@ class NgControlService {
|
|
|
4541
4547
|
return this._helpers.asObservable();
|
|
4542
4548
|
}
|
|
4543
4549
|
setControl(control) {
|
|
4550
|
+
this._control = control;
|
|
4544
4551
|
this._controlChanges.next(control);
|
|
4545
4552
|
}
|
|
4546
4553
|
setHelpers(state) {
|
|
@@ -4567,35 +4574,19 @@ var CONTROL_STATE;
|
|
|
4567
4574
|
})(CONTROL_STATE || (CONTROL_STATE = {}));
|
|
4568
4575
|
class IfControlStateService {
|
|
4569
4576
|
constructor(ngControlService) {
|
|
4570
|
-
this.
|
|
4571
|
-
|
|
4572
|
-
this._statusChanges = new BehaviorSubject(CONTROL_STATE.NONE);
|
|
4573
|
-
// Wait for the control to be available
|
|
4574
|
-
this.subscriptions.push(ngControlService.controlChanges.subscribe(control => {
|
|
4575
|
-
if (control) {
|
|
4576
|
-
this.control = control;
|
|
4577
|
-
// Subscribe to the status change events, only after touched
|
|
4578
|
-
// and emit the control
|
|
4579
|
-
this.subscriptions.push(this.control.statusChanges.subscribe(() => {
|
|
4580
|
-
this.triggerStatusChange();
|
|
4581
|
-
}));
|
|
4582
|
-
}
|
|
4583
|
-
}));
|
|
4584
|
-
}
|
|
4585
|
-
get statusChanges() {
|
|
4586
|
-
return this._statusChanges.asObservable();
|
|
4587
|
-
}
|
|
4588
|
-
ngOnDestroy() {
|
|
4589
|
-
this.subscriptions.forEach(subscription => subscription.unsubscribe());
|
|
4577
|
+
this.triggerStatusChangeSubject = new Subject();
|
|
4578
|
+
this.statusChanges = this.getStatusChanges(ngControlService).pipe(shareReplay(1));
|
|
4590
4579
|
}
|
|
4591
4580
|
triggerStatusChange() {
|
|
4592
|
-
|
|
4593
|
-
|
|
4581
|
+
this.triggerStatusChangeSubject.next();
|
|
4582
|
+
}
|
|
4583
|
+
getStatusChanges(ngControlService) {
|
|
4584
|
+
return ngControlService.controlChanges.pipe(switchMap(control => control ? merge(control.statusChanges, this.triggerStatusChangeSubject.pipe(map$1(() => control.status))) : EMPTY), map$1(controlStatus => {
|
|
4594
4585
|
// These status values are mutually exclusive, so a control
|
|
4595
4586
|
// cannot be both valid AND invalid or invalid AND disabled.
|
|
4596
|
-
const status = CONTROL_STATE[
|
|
4597
|
-
|
|
4598
|
-
}
|
|
4587
|
+
const status = CONTROL_STATE[controlStatus];
|
|
4588
|
+
return [CONTROL_STATE.VALID, CONTROL_STATE.INVALID].includes(status) ? status : CONTROL_STATE.NONE;
|
|
4589
|
+
}), startWith$1(CONTROL_STATE.NONE));
|
|
4599
4590
|
}
|
|
4600
4591
|
}
|
|
4601
4592
|
IfControlStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: IfControlStateService, deps: [{ token: NgControlService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -6503,6 +6494,9 @@ class ClrLabel {
|
|
|
6503
6494
|
return this.el.nativeElement && this.el.nativeElement.textContent;
|
|
6504
6495
|
}
|
|
6505
6496
|
ngOnInit() {
|
|
6497
|
+
// Prevent id attributes from being removed by the `undefined` host binding.
|
|
6498
|
+
// This happens when a `label` is used outside of a control container and other use cases.
|
|
6499
|
+
this.idAttr = this.idInput;
|
|
6506
6500
|
// Only add the clr-control-label if it is inside a control container
|
|
6507
6501
|
if (this.controlIdService || this.ngControlService) {
|
|
6508
6502
|
this.renderer.addClass(this.el.nativeElement, 'clr-control-label');
|
|
@@ -6708,10 +6702,16 @@ class ClrAbstractContainer {
|
|
|
6708
6702
|
return Boolean(this.controlHelperComponent);
|
|
6709
6703
|
}
|
|
6710
6704
|
get showValid() {
|
|
6711
|
-
return this.touched && this.state === CONTROL_STATE.VALID &&
|
|
6705
|
+
return this.touched && this.state === CONTROL_STATE.VALID && this.successMessagePresent;
|
|
6712
6706
|
}
|
|
6713
6707
|
get showInvalid() {
|
|
6714
|
-
return this.touched && this.state === CONTROL_STATE.INVALID &&
|
|
6708
|
+
return this.touched && this.state === CONTROL_STATE.INVALID && this.errorMessagePresent;
|
|
6709
|
+
}
|
|
6710
|
+
get successMessagePresent() {
|
|
6711
|
+
return !!this.controlSuccessComponent;
|
|
6712
|
+
}
|
|
6713
|
+
get errorMessagePresent() {
|
|
6714
|
+
return !!this.controlErrorComponent;
|
|
6715
6715
|
}
|
|
6716
6716
|
get touched() {
|
|
6717
6717
|
return this.control?.touched;
|
|
@@ -9021,7 +9021,7 @@ class ClrCombobox extends WrappedFormControl {
|
|
|
9021
9021
|
return this.optionSelectionService.displayField;
|
|
9022
9022
|
}
|
|
9023
9023
|
get disabled() {
|
|
9024
|
-
return this.control
|
|
9024
|
+
return this.control?.disabled;
|
|
9025
9025
|
}
|
|
9026
9026
|
ngAfterContentInit() {
|
|
9027
9027
|
this.initializeSubscriptions();
|
|
@@ -9045,7 +9045,7 @@ class ClrCombobox extends WrappedFormControl {
|
|
|
9045
9045
|
const multiModel = this.optionSelectionService.selectionModel.model;
|
|
9046
9046
|
if (multiModel && multiModel.length > 0) {
|
|
9047
9047
|
const lastItem = multiModel[multiModel.length - 1];
|
|
9048
|
-
this.control
|
|
9048
|
+
this.control?.control.markAsTouched();
|
|
9049
9049
|
this.optionSelectionService.unselect(lastItem);
|
|
9050
9050
|
}
|
|
9051
9051
|
}
|
|
@@ -9066,11 +9066,11 @@ class ClrCombobox extends WrappedFormControl {
|
|
|
9066
9066
|
}
|
|
9067
9067
|
}
|
|
9068
9068
|
onBlur() {
|
|
9069
|
-
this.onTouchedCallback();
|
|
9070
|
-
if (this.control
|
|
9069
|
+
this.onTouchedCallback?.();
|
|
9070
|
+
if (this.control?.control.updateOn === 'change' && this.control.control.errors?.required) {
|
|
9071
9071
|
this.updateControlValue();
|
|
9072
9072
|
}
|
|
9073
|
-
if (this.control
|
|
9073
|
+
if (this.control?.control.updateOn === 'blur') {
|
|
9074
9074
|
this.control.control.updateValueAndValidity();
|
|
9075
9075
|
}
|
|
9076
9076
|
this.focused = false;
|
|
@@ -9150,7 +9150,7 @@ class ClrCombobox extends WrappedFormControl {
|
|
|
9150
9150
|
}));
|
|
9151
9151
|
if (this.controlStateService) {
|
|
9152
9152
|
this.subscriptions.push(this.controlStateService.statusChanges.subscribe(invalid => {
|
|
9153
|
-
this.invalid = this.control
|
|
9153
|
+
this.invalid = this.control?.control.touched && invalid === CONTROL_STATE.INVALID;
|
|
9154
9154
|
}));
|
|
9155
9155
|
}
|
|
9156
9156
|
}
|
|
@@ -9419,7 +9419,11 @@ ClrInputContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
|
|
|
9419
9419
|
<label *ngIf="!label && addGrid()"></label>
|
|
9420
9420
|
<div class="clr-control-container" [ngClass]="controlClass()">
|
|
9421
9421
|
<div class="clr-input-wrapper">
|
|
9422
|
-
<
|
|
9422
|
+
<div class="clr-input-group">
|
|
9423
|
+
<ng-content select="[clrInputPrefix]"></ng-content>
|
|
9424
|
+
<ng-content select="[clrInput]"></ng-content>
|
|
9425
|
+
<ng-content select="[clrInputSuffix]"></ng-content>
|
|
9426
|
+
</div>
|
|
9423
9427
|
<cds-icon
|
|
9424
9428
|
*ngIf="showInvalid"
|
|
9425
9429
|
class="clr-validate-icon"
|
|
@@ -9449,7 +9453,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
9449
9453
|
<label *ngIf="!label && addGrid()"></label>
|
|
9450
9454
|
<div class="clr-control-container" [ngClass]="controlClass()">
|
|
9451
9455
|
<div class="clr-input-wrapper">
|
|
9452
|
-
<
|
|
9456
|
+
<div class="clr-input-group">
|
|
9457
|
+
<ng-content select="[clrInputPrefix]"></ng-content>
|
|
9458
|
+
<ng-content select="[clrInput]"></ng-content>
|
|
9459
|
+
<ng-content select="[clrInputSuffix]"></ng-content>
|
|
9460
|
+
</div>
|
|
9453
9461
|
<cds-icon
|
|
9454
9462
|
*ngIf="showInvalid"
|
|
9455
9463
|
class="clr-validate-icon"
|
|
@@ -9489,6 +9497,15 @@ class ClrInput extends WrappedFormControl {
|
|
|
9489
9497
|
constructor(vcr, injector, control, renderer, el) {
|
|
9490
9498
|
super(vcr, ClrInputContainer, injector, control, renderer, el);
|
|
9491
9499
|
this.index = 1;
|
|
9500
|
+
if (this.el.nativeElement.getAttribute('type') === 'number') {
|
|
9501
|
+
console.warn(`Warning: Inputs of type "number" should utilize the number-input component for proper handling.\n
|
|
9502
|
+
Example usage:
|
|
9503
|
+
<clr-number-input-container>
|
|
9504
|
+
<label>Number Input</label>
|
|
9505
|
+
<input clrNumberInput type="number"/>
|
|
9506
|
+
</clr-number-input-container>
|
|
9507
|
+
`);
|
|
9508
|
+
}
|
|
9492
9509
|
}
|
|
9493
9510
|
}
|
|
9494
9511
|
ClrInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrInput, deps: [{ token: i0.ViewContainerRef }, { token: i0.Injector }, { token: i1.NgControl, optional: true, self: true }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -10056,6 +10073,14 @@ class CalendarViewModel {
|
|
|
10056
10073
|
this.setFocusableFlag(day, true);
|
|
10057
10074
|
this.focusableDay = day;
|
|
10058
10075
|
}
|
|
10076
|
+
/**
|
|
10077
|
+
* Updates the selected day in the calendar
|
|
10078
|
+
*/
|
|
10079
|
+
updateSelectedDay(day) {
|
|
10080
|
+
this.setSelectedDay(this.selectedDay, false);
|
|
10081
|
+
this.selectedDay = day;
|
|
10082
|
+
this.setSelectedDay(day, true);
|
|
10083
|
+
}
|
|
10059
10084
|
/**
|
|
10060
10085
|
* Generates a 6x7 matrix of DayViewModel based on the Calendar.
|
|
10061
10086
|
* The 6x7 matrix is structured according to the first day of the week.
|
|
@@ -10145,9 +10170,7 @@ class CalendarViewModel {
|
|
|
10145
10170
|
* Initialize the selected day if the day is in the calendar.
|
|
10146
10171
|
*/
|
|
10147
10172
|
initializeSelectedDay() {
|
|
10148
|
-
|
|
10149
|
-
this.currMonthDayViews[this.selectedDay.date - 1].isSelected = true;
|
|
10150
|
-
}
|
|
10173
|
+
this.setSelectedDay(this.selectedDay, true);
|
|
10151
10174
|
}
|
|
10152
10175
|
/**
|
|
10153
10176
|
* Initializes the focusable day if the day is in the calendar. If focusable day is not set, then
|
|
@@ -10176,6 +10199,11 @@ class CalendarViewModel {
|
|
|
10176
10199
|
this.currMonthDayViews[day.date - 1].isFocusable = flag;
|
|
10177
10200
|
}
|
|
10178
10201
|
}
|
|
10202
|
+
setSelectedDay(day, flag) {
|
|
10203
|
+
if (day && this.isDayInCalendarView(day)) {
|
|
10204
|
+
this.currMonthDayViews[day?.date - 1].isSelected = flag;
|
|
10205
|
+
}
|
|
10206
|
+
}
|
|
10179
10207
|
}
|
|
10180
10208
|
|
|
10181
10209
|
/*
|
|
@@ -10356,6 +10384,7 @@ class CalendarModel {
|
|
|
10356
10384
|
*/
|
|
10357
10385
|
class DateNavigationService {
|
|
10358
10386
|
constructor() {
|
|
10387
|
+
this.hasActionButtons = false;
|
|
10359
10388
|
this._todaysFullDate = new Date();
|
|
10360
10389
|
this._selectedDayChange = new Subject();
|
|
10361
10390
|
this._displayedCalendarChange = new Subject();
|
|
@@ -10391,11 +10420,12 @@ class DateNavigationService {
|
|
|
10391
10420
|
}
|
|
10392
10421
|
/**
|
|
10393
10422
|
* Notifies that the selected day has changed so that the date can be emitted to the user.
|
|
10394
|
-
* Note: Only to be called from day.ts
|
|
10395
10423
|
*/
|
|
10396
|
-
notifySelectedDayChanged(dayModel) {
|
|
10424
|
+
notifySelectedDayChanged(dayModel, { emitEvent } = { emitEvent: true }) {
|
|
10397
10425
|
this.selectedDay = dayModel;
|
|
10398
|
-
|
|
10426
|
+
if (emitEvent) {
|
|
10427
|
+
this._selectedDayChange.next(dayModel);
|
|
10428
|
+
}
|
|
10399
10429
|
}
|
|
10400
10430
|
/**
|
|
10401
10431
|
* Initializes the calendar based on the selected day.
|
|
@@ -10447,6 +10477,9 @@ class DateNavigationService {
|
|
|
10447
10477
|
}
|
|
10448
10478
|
this._focusOnCalendarChange.next();
|
|
10449
10479
|
}
|
|
10480
|
+
resetSelectedDay() {
|
|
10481
|
+
this.selectedDay = this.persistedDate;
|
|
10482
|
+
}
|
|
10450
10483
|
// not a setter because i want this to remain private
|
|
10451
10484
|
setDisplayedCalendar(value) {
|
|
10452
10485
|
if (!this._displayedCalendar.isEqual(value)) {
|
|
@@ -10720,11 +10753,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
10720
10753
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
10721
10754
|
*/
|
|
10722
10755
|
class ClrDay {
|
|
10723
|
-
constructor(_dateNavigationService,
|
|
10756
|
+
constructor(_dateNavigationService, commonStrings) {
|
|
10724
10757
|
this._dateNavigationService = _dateNavigationService;
|
|
10725
|
-
this._toggleService = _toggleService;
|
|
10726
|
-
this.dateFormControlService = dateFormControlService;
|
|
10727
10758
|
this.commonStrings = commonStrings;
|
|
10759
|
+
this.onSelectDay = new EventEmitter();
|
|
10728
10760
|
}
|
|
10729
10761
|
/**
|
|
10730
10762
|
* DayViewModel input which is used to build the Day View.
|
|
@@ -10756,13 +10788,11 @@ class ClrDay {
|
|
|
10756
10788
|
return;
|
|
10757
10789
|
}
|
|
10758
10790
|
const day = this.dayView.dayModel;
|
|
10759
|
-
this.
|
|
10760
|
-
this.dateFormControlService.markAsDirty();
|
|
10761
|
-
this._toggleService.open = false;
|
|
10791
|
+
this.onSelectDay.emit(day);
|
|
10762
10792
|
}
|
|
10763
10793
|
}
|
|
10764
|
-
ClrDay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDay, deps: [{ token: DateNavigationService }, { token:
|
|
10765
|
-
ClrDay.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDay, selector: "clr-day", inputs: { dayView: ["clrDayView", "dayView"] }, host: { properties: { "class.day": "true" } }, ngImport: i0, template: `
|
|
10794
|
+
ClrDay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDay, deps: [{ token: DateNavigationService }, { token: ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
10795
|
+
ClrDay.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDay, selector: "clr-day", inputs: { dayView: ["clrDayView", "dayView"] }, outputs: { onSelectDay: "selectDay" }, host: { properties: { "class.day": "true" } }, ngImport: i0, template: `
|
|
10766
10796
|
<button
|
|
10767
10797
|
class="day-btn"
|
|
10768
10798
|
type="button"
|
|
@@ -10804,7 +10834,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
10804
10834
|
`,
|
|
10805
10835
|
host: { '[class.day]': 'true' },
|
|
10806
10836
|
}]
|
|
10807
|
-
}], ctorParameters: function () { return [{ type: DateNavigationService }, { type:
|
|
10837
|
+
}], ctorParameters: function () { return [{ type: DateNavigationService }, { type: ClrCommonStringsService }]; }, propDecorators: { onSelectDay: [{
|
|
10838
|
+
type: Output,
|
|
10839
|
+
args: ['selectDay']
|
|
10840
|
+
}], dayView: [{
|
|
10808
10841
|
type: Input,
|
|
10809
10842
|
args: ['clrDayView']
|
|
10810
10843
|
}] } });
|
|
@@ -10816,12 +10849,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
10816
10849
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
10817
10850
|
*/
|
|
10818
10851
|
class ClrCalendar {
|
|
10819
|
-
constructor(_localeHelperService, _dateNavigationService, _datepickerFocusService, _dateIOService, _elRef) {
|
|
10852
|
+
constructor(_localeHelperService, _dateNavigationService, _datepickerFocusService, _dateIOService, _elRef, _dateFormControlService, _toggleService) {
|
|
10820
10853
|
this._localeHelperService = _localeHelperService;
|
|
10821
10854
|
this._dateNavigationService = _dateNavigationService;
|
|
10822
10855
|
this._datepickerFocusService = _datepickerFocusService;
|
|
10823
10856
|
this._dateIOService = _dateIOService;
|
|
10824
10857
|
this._elRef = _elRef;
|
|
10858
|
+
this._dateFormControlService = _dateFormControlService;
|
|
10859
|
+
this._toggleService = _toggleService;
|
|
10825
10860
|
this._subs = [];
|
|
10826
10861
|
this.generateCalendarView();
|
|
10827
10862
|
this.initializeSubscriptions();
|
|
@@ -10883,6 +10918,15 @@ class ClrCalendar {
|
|
|
10883
10918
|
}
|
|
10884
10919
|
}
|
|
10885
10920
|
}
|
|
10921
|
+
setSelectedDay(day) {
|
|
10922
|
+
const hasActionButtons = this._dateNavigationService.hasActionButtons;
|
|
10923
|
+
this.calendarViewModel.updateSelectedDay(day);
|
|
10924
|
+
this._dateNavigationService.notifySelectedDayChanged(day, { emitEvent: !hasActionButtons });
|
|
10925
|
+
if (!hasActionButtons) {
|
|
10926
|
+
this._dateFormControlService.markAsDirty();
|
|
10927
|
+
this._toggleService.open = false;
|
|
10928
|
+
}
|
|
10929
|
+
}
|
|
10886
10930
|
/**
|
|
10887
10931
|
* Initialize subscriptions to:
|
|
10888
10932
|
* 1. update the calendar view model.
|
|
@@ -10907,12 +10951,12 @@ class ClrCalendar {
|
|
|
10907
10951
|
this.calendarViewModel = new CalendarViewModel(this.calendar, this.selectedDay, this.focusedDay, this.today, this._localeHelperService.firstDayOfWeek, this._dateIOService.disabledDates);
|
|
10908
10952
|
}
|
|
10909
10953
|
}
|
|
10910
|
-
ClrCalendar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrCalendar, deps: [{ token: LocaleHelperService }, { token: DateNavigationService }, { token: DatepickerFocusService }, { token: DateIOService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
10911
|
-
ClrCalendar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrCalendar, selector: "clr-calendar", host: { listeners: { "keydown": "onKeyDown($event)" } }, ngImport: i0, template: "<table class=\"calendar-table\" role=\"presentation\">\n <tr class=\"calendar-row weekdays\">\n <th *ngFor=\"let day of localeDays\" class=\"calendar-cell weekday\">\n <span [attr.aria-label]=\"day.day\">{{day.narrow}}</span>\n </th>\n </tr>\n <tr class=\"calendar-row\" *ngFor=\"let row of calendarViewModel.calendarView\">\n <td *ngFor=\"let dayView of row\" class=\"calendar-cell\">\n <clr-day [clrDayView]=\"dayView\" aria-hidden=\"true\"></clr-day>\n </td>\n </tr>\n</table>\n", dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ClrDay, selector: "clr-day", inputs: ["clrDayView"] }] });
|
|
10954
|
+
ClrCalendar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrCalendar, deps: [{ token: LocaleHelperService }, { token: DateNavigationService }, { token: DatepickerFocusService }, { token: DateIOService }, { token: i0.ElementRef }, { token: DateFormControlService }, { token: ClrPopoverToggleService }], target: i0.ɵɵFactoryTarget.Component });
|
|
10955
|
+
ClrCalendar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrCalendar, selector: "clr-calendar", host: { listeners: { "keydown": "onKeyDown($event)" } }, ngImport: i0, template: "<table class=\"calendar-table\" role=\"presentation\">\n <tr class=\"calendar-row weekdays\">\n <th *ngFor=\"let day of localeDays\" class=\"calendar-cell weekday\">\n <span [attr.aria-label]=\"day.day\">{{day.narrow}}</span>\n </th>\n </tr>\n <tr class=\"calendar-row\" *ngFor=\"let row of calendarViewModel.calendarView\">\n <td *ngFor=\"let dayView of row\" class=\"calendar-cell\">\n <clr-day [clrDayView]=\"dayView\" (selectDay)=\"setSelectedDay($event)\" aria-hidden=\"true\"></clr-day>\n </td>\n </tr>\n</table>\n", dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ClrDay, selector: "clr-day", inputs: ["clrDayView"], outputs: ["selectDay"] }] });
|
|
10912
10956
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrCalendar, decorators: [{
|
|
10913
10957
|
type: Component,
|
|
10914
|
-
args: [{ selector: 'clr-calendar', template: "<table class=\"calendar-table\" role=\"presentation\">\n <tr class=\"calendar-row weekdays\">\n <th *ngFor=\"let day of localeDays\" class=\"calendar-cell weekday\">\n <span [attr.aria-label]=\"day.day\">{{day.narrow}}</span>\n </th>\n </tr>\n <tr class=\"calendar-row\" *ngFor=\"let row of calendarViewModel.calendarView\">\n <td *ngFor=\"let dayView of row\" class=\"calendar-cell\">\n <clr-day [clrDayView]=\"dayView\" aria-hidden=\"true\"></clr-day>\n </td>\n </tr>\n</table>\n" }]
|
|
10915
|
-
}], ctorParameters: function () { return [{ type: LocaleHelperService }, { type: DateNavigationService }, { type: DatepickerFocusService }, { type: DateIOService }, { type: i0.ElementRef }]; }, propDecorators: { onKeyDown: [{
|
|
10958
|
+
args: [{ selector: 'clr-calendar', template: "<table class=\"calendar-table\" role=\"presentation\">\n <tr class=\"calendar-row weekdays\">\n <th *ngFor=\"let day of localeDays\" class=\"calendar-cell weekday\">\n <span [attr.aria-label]=\"day.day\">{{day.narrow}}</span>\n </th>\n </tr>\n <tr class=\"calendar-row\" *ngFor=\"let row of calendarViewModel.calendarView\">\n <td *ngFor=\"let dayView of row\" class=\"calendar-cell\">\n <clr-day [clrDayView]=\"dayView\" (selectDay)=\"setSelectedDay($event)\" aria-hidden=\"true\"></clr-day>\n </td>\n </tr>\n</table>\n" }]
|
|
10959
|
+
}], ctorParameters: function () { return [{ type: LocaleHelperService }, { type: DateNavigationService }, { type: DatepickerFocusService }, { type: DateIOService }, { type: i0.ElementRef }, { type: DateFormControlService }, { type: ClrPopoverToggleService }]; }, propDecorators: { onKeyDown: [{
|
|
10916
10960
|
type: HostListener,
|
|
10917
10961
|
args: ['keydown', ['$event']]
|
|
10918
10962
|
}] } });
|
|
@@ -11489,6 +11533,50 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
11489
11533
|
args: [{ selector: 'clr-daypicker', host: { '[class.daypicker]': 'true', role: 'application' }, template: "<div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n<div class=\"calendar-header\">\n <div class=\"calendar-pickers\">\n <button\n class=\"calendar-btn monthpicker-trigger\"\n type=\"button\"\n (click)=\"changeToMonthView()\"\n [attr.aria-label]=\"monthAttrString\"\n [attr.title]=\"monthAttrString\"\n >\n {{calendarMonth}}\n </button>\n <button\n class=\"calendar-btn yearpicker-trigger\"\n type=\"button\"\n (click)=\"changeToYearView()\"\n [attr.aria-label]=\"yearAttrString\"\n [attr.title]=\"yearAttrString\"\n >\n {{calendarYear}}\n </button>\n </div>\n <div class=\"calendar-switchers\">\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"previousMonth()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerPreviousMonth\"\n >\n <cds-icon shape=\"angle\" direction=\"left\" [attr.title]=\"commonStrings.keys.datepickerPreviousMonth\"></cds-icon>\n </button>\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"currentMonth()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerCurrentMonth\"\n >\n <cds-icon shape=\"event\" [attr.title]=\"commonStrings.keys.datepickerCurrentMonth\"></cds-icon>\n </button>\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"nextMonth()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerNextMonth\"\n >\n <cds-icon shape=\"angle\" direction=\"right\" [attr.title]=\"commonStrings.keys.datepickerNextMonth\"></cds-icon>\n </button>\n </div>\n</div>\n<clr-calendar></clr-calendar>\n<div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n" }]
|
|
11490
11534
|
}], ctorParameters: function () { return [{ type: ViewManagerService }, { type: DateNavigationService }, { type: LocaleHelperService }, { type: ClrCommonStringsService }]; } });
|
|
11491
11535
|
|
|
11536
|
+
/*
|
|
11537
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
11538
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
11539
|
+
* This software is released under MIT license.
|
|
11540
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
11541
|
+
*/
|
|
11542
|
+
class ClrDatepickerActions {
|
|
11543
|
+
constructor(commonStrings, toggleService, dateNavigationService, dateFormControlService) {
|
|
11544
|
+
this.commonStrings = commonStrings;
|
|
11545
|
+
this.toggleService = toggleService;
|
|
11546
|
+
this.dateNavigationService = dateNavigationService;
|
|
11547
|
+
this.dateFormControlService = dateFormControlService;
|
|
11548
|
+
}
|
|
11549
|
+
apply() {
|
|
11550
|
+
if (this.dateNavigationService.selectedDay) {
|
|
11551
|
+
this.dateNavigationService.notifySelectedDayChanged(this.dateNavigationService.selectedDay);
|
|
11552
|
+
this.dateFormControlService.markAsDirty();
|
|
11553
|
+
}
|
|
11554
|
+
this.toggleService.open = false;
|
|
11555
|
+
}
|
|
11556
|
+
cancel() {
|
|
11557
|
+
this.dateNavigationService.resetSelectedDay();
|
|
11558
|
+
this.toggleService.open = false;
|
|
11559
|
+
}
|
|
11560
|
+
}
|
|
11561
|
+
ClrDatepickerActions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatepickerActions, deps: [{ token: ClrCommonStringsService }, { token: ClrPopoverToggleService }, { token: DateNavigationService }, { token: DateFormControlService }], target: i0.ɵɵFactoryTarget.Component });
|
|
11562
|
+
ClrDatepickerActions.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatepickerActions, selector: "clr-datepicker-actions", host: { properties: { "class.datepicker-actions": "true" } }, ngImport: i0, template: `
|
|
11563
|
+
<button class="btn btn-outline" (click)="cancel()">{{ commonStrings.keys.cancel }}</button>
|
|
11564
|
+
<button class="btn btn-primary" (click)="apply()">{{ commonStrings.keys.apply }}</button>
|
|
11565
|
+
`, isInline: true });
|
|
11566
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatepickerActions, decorators: [{
|
|
11567
|
+
type: Component,
|
|
11568
|
+
args: [{
|
|
11569
|
+
selector: 'clr-datepicker-actions',
|
|
11570
|
+
template: `
|
|
11571
|
+
<button class="btn btn-outline" (click)="cancel()">{{ commonStrings.keys.cancel }}</button>
|
|
11572
|
+
<button class="btn btn-primary" (click)="apply()">{{ commonStrings.keys.apply }}</button>
|
|
11573
|
+
`,
|
|
11574
|
+
host: {
|
|
11575
|
+
'[class.datepicker-actions]': 'true',
|
|
11576
|
+
},
|
|
11577
|
+
}]
|
|
11578
|
+
}], ctorParameters: function () { return [{ type: ClrCommonStringsService }, { type: ClrPopoverToggleService }, { type: DateNavigationService }, { type: DateFormControlService }]; } });
|
|
11579
|
+
|
|
11492
11580
|
/*
|
|
11493
11581
|
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
11494
11582
|
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
@@ -11496,9 +11584,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
11496
11584
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
11497
11585
|
*/
|
|
11498
11586
|
class ClrDatepickerViewManager {
|
|
11499
|
-
constructor(commonStrings, viewManagerService) {
|
|
11587
|
+
constructor(commonStrings, viewManagerService, dateNavigationService) {
|
|
11500
11588
|
this.commonStrings = commonStrings;
|
|
11501
11589
|
this.viewManagerService = viewManagerService;
|
|
11590
|
+
this.dateNavigationService = dateNavigationService;
|
|
11502
11591
|
}
|
|
11503
11592
|
/**
|
|
11504
11593
|
* Returns if the current view is the monthpicker.
|
|
@@ -11518,18 +11607,22 @@ class ClrDatepickerViewManager {
|
|
|
11518
11607
|
get isDayView() {
|
|
11519
11608
|
return this.viewManagerService.isDayView;
|
|
11520
11609
|
}
|
|
11610
|
+
get hasActionButtons() {
|
|
11611
|
+
return this.dateNavigationService.hasActionButtons;
|
|
11612
|
+
}
|
|
11521
11613
|
}
|
|
11522
|
-
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 });
|
|
11523
|
-
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" }] });
|
|
11614
|
+
ClrDatepickerViewManager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatepickerViewManager, deps: [{ token: ClrCommonStringsService }, { token: ViewManagerService }, { token: DateNavigationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
11615
|
+
ClrDatepickerViewManager.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDatepickerViewManager, selector: "clr-datepicker-view-manager", host: { attributes: { "role": "dialog" }, properties: { "class.datepicker": "true", "class.has-action-buttons": "hasActionButtons", "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<clr-datepicker-actions *ngIf=\"hasActionButtons\"></clr-datepicker-actions>\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" }, { kind: "component", type: ClrDatepickerActions, selector: "clr-datepicker-actions" }] });
|
|
11524
11616
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatepickerViewManager, decorators: [{
|
|
11525
11617
|
type: Component,
|
|
11526
11618
|
args: [{ selector: 'clr-datepicker-view-manager', providers: [DatepickerFocusService], host: {
|
|
11527
11619
|
'[class.datepicker]': 'true',
|
|
11620
|
+
'[class.has-action-buttons]': 'hasActionButtons',
|
|
11528
11621
|
'[attr.aria-modal]': 'true',
|
|
11529
11622
|
'[attr.aria-label]': 'commonStrings.keys.datepickerDialogLabel',
|
|
11530
11623
|
role: 'dialog',
|
|
11531
|
-
}, 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" }]
|
|
11532
|
-
}], ctorParameters: function () { return [{ type: ClrCommonStringsService }, { type: ViewManagerService }]; } });
|
|
11624
|
+
}, 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<clr-datepicker-actions *ngIf=\"hasActionButtons\"></clr-datepicker-actions>\n" }]
|
|
11625
|
+
}], ctorParameters: function () { return [{ type: ClrCommonStringsService }, { type: ViewManagerService }, { type: DateNavigationService }]; } });
|
|
11533
11626
|
|
|
11534
11627
|
/*
|
|
11535
11628
|
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
@@ -11560,6 +11653,9 @@ class ClrDateContainer extends ClrAbstractContainer {
|
|
|
11560
11653
|
dateFormControlService.markAsTouched();
|
|
11561
11654
|
}));
|
|
11562
11655
|
}
|
|
11656
|
+
set showActionButtons(flag) {
|
|
11657
|
+
this.dateNavigationService.hasActionButtons = flag;
|
|
11658
|
+
}
|
|
11563
11659
|
set clrPosition(position) {
|
|
11564
11660
|
if (position && ClrPopoverPositions[position]) {
|
|
11565
11661
|
this.viewManagerService.position = ClrPopoverPositions[position];
|
|
@@ -11594,6 +11690,7 @@ class ClrDateContainer extends ClrAbstractContainer {
|
|
|
11594
11690
|
}
|
|
11595
11691
|
else {
|
|
11596
11692
|
this.toggleButton.nativeElement.focus();
|
|
11693
|
+
this.dateNavigationService.resetSelectedDay();
|
|
11597
11694
|
}
|
|
11598
11695
|
}));
|
|
11599
11696
|
this.subscriptions.push(this.listenForDateChanges());
|
|
@@ -11634,7 +11731,7 @@ class ClrDateContainer extends ClrAbstractContainer {
|
|
|
11634
11731
|
}
|
|
11635
11732
|
}
|
|
11636
11733
|
ClrDateContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDateContainer, deps: [{ token: i0.Renderer2 }, { token: ClrPopoverToggleService }, { token: DateNavigationService }, { token: DatepickerEnabledService }, { token: DateFormControlService }, { token: DateIOService }, { token: ClrCommonStringsService }, { token: FocusService }, { token: ViewManagerService }, { token: ControlClassService }, { token: LayoutService, optional: true }, { token: NgControlService }, { token: IfControlStateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
11637
|
-
ClrDateContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDateContainer, selector: "clr-date-container", inputs: { clrPosition: "clrPosition" }, host: { properties: { "class.clr-date-container": "true", "class.clr-form-control-disabled": "isInputDateDisabled", "class.clr-form-control": "true", "class.clr-row": "addGrid()" } }, providers: [
|
|
11734
|
+
ClrDateContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrDateContainer, selector: "clr-date-container", inputs: { showActionButtons: "showActionButtons", clrPosition: "clrPosition" }, host: { properties: { "class.clr-date-container": "true", "class.clr-form-control-disabled": "isInputDateDisabled", "class.clr-form-control": "true", "class.clr-row": "addGrid()" } }, providers: [
|
|
11638
11735
|
ControlIdService,
|
|
11639
11736
|
LocaleHelperService,
|
|
11640
11737
|
ControlClassService,
|
|
@@ -11757,7 +11854,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
11757
11854
|
}]
|
|
11758
11855
|
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: ClrPopoverToggleService }, { type: DateNavigationService }, { type: DatepickerEnabledService }, { type: DateFormControlService }, { type: DateIOService }, { type: ClrCommonStringsService }, { type: FocusService }, { type: ViewManagerService }, { type: ControlClassService }, { type: LayoutService, decorators: [{
|
|
11759
11856
|
type: Optional
|
|
11760
|
-
}] }, { type: NgControlService }, { type: IfControlStateService }]; }, propDecorators: {
|
|
11857
|
+
}] }, { type: NgControlService }, { type: IfControlStateService }]; }, propDecorators: { showActionButtons: [{
|
|
11858
|
+
type: Input,
|
|
11859
|
+
args: ['showActionButtons']
|
|
11860
|
+
}], clrPosition: [{
|
|
11761
11861
|
type: Input,
|
|
11762
11862
|
args: ['clrPosition']
|
|
11763
11863
|
}], actionButton: [{
|
|
@@ -11904,7 +12004,7 @@ class ClrDateInput extends WrappedFormControl {
|
|
|
11904
12004
|
this.previousDateChange = date;
|
|
11905
12005
|
}
|
|
11906
12006
|
if (this.dateNavigationService) {
|
|
11907
|
-
this.dateNavigationService.selectedDay = date
|
|
12007
|
+
this.dateNavigationService.persistedDate = this.dateNavigationService.selectedDay = date
|
|
11908
12008
|
? new DayModel(date.getFullYear(), date.getMonth(), date.getDate())
|
|
11909
12009
|
: null;
|
|
11910
12010
|
}
|
|
@@ -11953,7 +12053,7 @@ class ClrDateInput extends WrappedFormControl {
|
|
|
11953
12053
|
}
|
|
11954
12054
|
listenForControlValueChanges() {
|
|
11955
12055
|
return of(this.datepickerHasFormControl())
|
|
11956
|
-
.pipe(filter(hasControl => hasControl), switchMap(() => this.control.valueChanges),
|
|
12056
|
+
.pipe(filter(hasControl => hasControl), switchMap$1(() => this.control.valueChanges),
|
|
11957
12057
|
// only update date value if not being set by user
|
|
11958
12058
|
filter(() => !this.datepickerFocusService.elementIsFocused(this.el.nativeElement)))
|
|
11959
12059
|
.subscribe((value) => this.updateDate(this.dateIOService.getDateValueFromDateString(value)));
|
|
@@ -12095,6 +12195,7 @@ const CLR_DATEPICKER_DIRECTIVES = [
|
|
|
12095
12195
|
ClrYearpicker,
|
|
12096
12196
|
ClrDaypicker,
|
|
12097
12197
|
ClrCalendar,
|
|
12198
|
+
ClrDatepickerActions,
|
|
12098
12199
|
];
|
|
12099
12200
|
class ClrDatepickerModule {
|
|
12100
12201
|
constructor() {
|
|
@@ -12110,7 +12211,8 @@ ClrDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ver
|
|
|
12110
12211
|
ClrMonthpicker,
|
|
12111
12212
|
ClrYearpicker,
|
|
12112
12213
|
ClrDaypicker,
|
|
12113
|
-
ClrCalendar
|
|
12214
|
+
ClrCalendar,
|
|
12215
|
+
ClrDatepickerActions], imports: [CommonModule,
|
|
12114
12216
|
CdkTrapFocusModule,
|
|
12115
12217
|
ClrHostWrappingModule,
|
|
12116
12218
|
ClrConditionalModule,
|
|
@@ -12124,7 +12226,8 @@ ClrDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ver
|
|
|
12124
12226
|
ClrMonthpicker,
|
|
12125
12227
|
ClrYearpicker,
|
|
12126
12228
|
ClrDaypicker,
|
|
12127
|
-
ClrCalendar
|
|
12229
|
+
ClrCalendar,
|
|
12230
|
+
ClrDatepickerActions] });
|
|
12128
12231
|
ClrDatepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatepickerModule, imports: [CommonModule,
|
|
12129
12232
|
CdkTrapFocusModule,
|
|
12130
12233
|
ClrHostWrappingModule,
|
|
@@ -12149,6 +12252,257 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
12149
12252
|
}]
|
|
12150
12253
|
}], ctorParameters: function () { return []; } });
|
|
12151
12254
|
|
|
12255
|
+
/*
|
|
12256
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
12257
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
12258
|
+
* This software is released under MIT license.
|
|
12259
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
12260
|
+
*/
|
|
12261
|
+
function buildFileList(files) {
|
|
12262
|
+
const dataTransfer = new DataTransfer();
|
|
12263
|
+
for (const file of files) {
|
|
12264
|
+
dataTransfer.items.add(file);
|
|
12265
|
+
}
|
|
12266
|
+
return dataTransfer.files;
|
|
12267
|
+
}
|
|
12268
|
+
function selectFiles(fileInputElement, files) {
|
|
12269
|
+
fileInputElement.files = files instanceof FileList ? files : buildFileList(files);
|
|
12270
|
+
fileInputElement.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));
|
|
12271
|
+
}
|
|
12272
|
+
function clearFiles(fileInputElement) {
|
|
12273
|
+
fileInputElement.value = '';
|
|
12274
|
+
fileInputElement.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));
|
|
12275
|
+
}
|
|
12276
|
+
|
|
12277
|
+
/*
|
|
12278
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
12279
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
12280
|
+
* This software is released under MIT license.
|
|
12281
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
12282
|
+
*/
|
|
12283
|
+
const CLR_FILE_MESSAGES_TEMPLATE_CONTEXT = new InjectionToken('ClrFileMessagesTemplateContext');
|
|
12284
|
+
class ClrFileInfo {
|
|
12285
|
+
}
|
|
12286
|
+
ClrFileInfo.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInfo, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12287
|
+
ClrFileInfo.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrFileInfo, selector: "clr-file-info", host: { properties: { "class.clr-subtext": "true" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
|
|
12288
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInfo, decorators: [{
|
|
12289
|
+
type: Component,
|
|
12290
|
+
args: [{
|
|
12291
|
+
selector: 'clr-file-info',
|
|
12292
|
+
template: `<ng-content></ng-content>`,
|
|
12293
|
+
host: {
|
|
12294
|
+
'[class.clr-subtext]': 'true',
|
|
12295
|
+
},
|
|
12296
|
+
}]
|
|
12297
|
+
}] });
|
|
12298
|
+
class ClrFileSuccess {
|
|
12299
|
+
constructor() {
|
|
12300
|
+
this.context = inject(CLR_FILE_MESSAGES_TEMPLATE_CONTEXT);
|
|
12301
|
+
}
|
|
12302
|
+
}
|
|
12303
|
+
ClrFileSuccess.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileSuccess, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12304
|
+
ClrFileSuccess.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrFileSuccess, selector: "clr-file-success", host: { properties: { "style.display": "context.success ? \"inline-block\" : \"none\"", "class.clr-subtext": "true", "class.success": "true" } }, ngImport: i0, template: `<ng-content *ngIf="context.success"></ng-content>`, isInline: true, dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
12305
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileSuccess, decorators: [{
|
|
12306
|
+
type: Component,
|
|
12307
|
+
args: [{
|
|
12308
|
+
selector: 'clr-file-success',
|
|
12309
|
+
// We check for success here so that consumers don't have to.
|
|
12310
|
+
template: `<ng-content *ngIf="context.success"></ng-content>`,
|
|
12311
|
+
host: {
|
|
12312
|
+
'[style.display]': 'context.success ? "inline-block" : "none"',
|
|
12313
|
+
'[class.clr-subtext]': 'true',
|
|
12314
|
+
'[class.success]': 'true',
|
|
12315
|
+
},
|
|
12316
|
+
}]
|
|
12317
|
+
}] });
|
|
12318
|
+
class ClrFileError {
|
|
12319
|
+
}
|
|
12320
|
+
ClrFileError.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileError, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12321
|
+
ClrFileError.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrFileError, selector: "clr-file-error", host: { properties: { "class.clr-subtext": "true", "class.error": "true" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true });
|
|
12322
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileError, decorators: [{
|
|
12323
|
+
type: Component,
|
|
12324
|
+
args: [{
|
|
12325
|
+
selector: 'clr-file-error',
|
|
12326
|
+
// The host should have an `*ngIf` or `@if` that checks for the relevant error.
|
|
12327
|
+
template: `<ng-content></ng-content>`,
|
|
12328
|
+
host: {
|
|
12329
|
+
'[class.clr-subtext]': 'true',
|
|
12330
|
+
'[class.error]': 'true',
|
|
12331
|
+
},
|
|
12332
|
+
}]
|
|
12333
|
+
}] });
|
|
12334
|
+
|
|
12335
|
+
/*
|
|
12336
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
12337
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
12338
|
+
* This software is released under MIT license.
|
|
12339
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
12340
|
+
*/
|
|
12341
|
+
class ClrFileMessagesTemplate {
|
|
12342
|
+
constructor() {
|
|
12343
|
+
this.templateRef = inject(TemplateRef);
|
|
12344
|
+
}
|
|
12345
|
+
static ngTemplateContextGuard(directive, context) {
|
|
12346
|
+
return true;
|
|
12347
|
+
}
|
|
12348
|
+
}
|
|
12349
|
+
ClrFileMessagesTemplate.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileMessagesTemplate, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
12350
|
+
ClrFileMessagesTemplate.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrFileMessagesTemplate, selector: "ng-template[clr-file-messages]", ngImport: i0 });
|
|
12351
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileMessagesTemplate, decorators: [{
|
|
12352
|
+
type: Directive,
|
|
12353
|
+
args: [{
|
|
12354
|
+
selector: 'ng-template[clr-file-messages]',
|
|
12355
|
+
}]
|
|
12356
|
+
}] });
|
|
12357
|
+
|
|
12358
|
+
/*
|
|
12359
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
12360
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
12361
|
+
* This software is released under MIT license.
|
|
12362
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
12363
|
+
*/
|
|
12364
|
+
class ClrFileList {
|
|
12365
|
+
constructor() {
|
|
12366
|
+
this.injector = inject(Injector);
|
|
12367
|
+
this.commonStrings = inject(ClrCommonStringsService);
|
|
12368
|
+
this.ngControlService = inject(NgControlService, { optional: true });
|
|
12369
|
+
this.fileInputContainer = inject(ClrFileInputContainer, { optional: true });
|
|
12370
|
+
if (!this.ngControlService || !this.fileInputContainer) {
|
|
12371
|
+
throw new Error('The clr-file-list component can only be used within a clr-file-input-container.');
|
|
12372
|
+
}
|
|
12373
|
+
}
|
|
12374
|
+
get files() {
|
|
12375
|
+
if (!this.fileInputContainer.fileInput) {
|
|
12376
|
+
return [];
|
|
12377
|
+
}
|
|
12378
|
+
const fileInputElement = this.fileInputContainer.fileInput.elementRef.nativeElement;
|
|
12379
|
+
return Array.from(fileInputElement.files).sort((a, b) => a.name.localeCompare(b.name));
|
|
12380
|
+
}
|
|
12381
|
+
getClearFileLabel(filename) {
|
|
12382
|
+
return this.commonStrings.parse(this.commonStrings.keys.clearFile, {
|
|
12383
|
+
FILE: filename,
|
|
12384
|
+
});
|
|
12385
|
+
}
|
|
12386
|
+
clearFile(fileToRemove) {
|
|
12387
|
+
if (!this.fileInputContainer.fileInput) {
|
|
12388
|
+
return;
|
|
12389
|
+
}
|
|
12390
|
+
const fileInputElement = this.fileInputContainer.fileInput.elementRef.nativeElement;
|
|
12391
|
+
const files = Array.from(fileInputElement.files);
|
|
12392
|
+
const newFiles = files.filter(file => file !== fileToRemove);
|
|
12393
|
+
selectFiles(fileInputElement, newFiles);
|
|
12394
|
+
this.fileInputContainer.focusBrowseButton();
|
|
12395
|
+
}
|
|
12396
|
+
createFileMessagesTemplateContext(file) {
|
|
12397
|
+
const fileInputErrors = this.ngControlService.control.errors || {};
|
|
12398
|
+
const errors = {
|
|
12399
|
+
accept: fileInputErrors.accept?.find(error => error.name === file.name),
|
|
12400
|
+
minFileSize: fileInputErrors.minFileSize?.find(error => error.name === file.name),
|
|
12401
|
+
maxFileSize: fileInputErrors.maxFileSize?.find(error => error.name === file.name),
|
|
12402
|
+
};
|
|
12403
|
+
const success = Object.values(errors).every(error => !error);
|
|
12404
|
+
return { $implicit: file, success, errors };
|
|
12405
|
+
}
|
|
12406
|
+
createFileMessagesTemplateInjector(fileMessagesTemplateContext) {
|
|
12407
|
+
return Injector.create({
|
|
12408
|
+
parent: this.injector,
|
|
12409
|
+
providers: [{ provide: CLR_FILE_MESSAGES_TEMPLATE_CONTEXT, useValue: fileMessagesTemplateContext }],
|
|
12410
|
+
});
|
|
12411
|
+
}
|
|
12412
|
+
}
|
|
12413
|
+
ClrFileList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileList, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12414
|
+
ClrFileList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrFileList, selector: "clr-file-list", host: { properties: { "attr.role": "\"list\"", "class.clr-file-list": "true" } }, queries: [{ propertyName: "fileMessagesTemplate", first: true, predicate: ClrFileMessagesTemplate, descendants: true }], ngImport: i0, template: `
|
|
12415
|
+
<ng-container *ngFor="let file of files">
|
|
12416
|
+
<div
|
|
12417
|
+
*ngIf="createFileMessagesTemplateContext(file); let fileMessagesTemplateContext"
|
|
12418
|
+
role="listitem"
|
|
12419
|
+
class="clr-file-list-item"
|
|
12420
|
+
[ngClass]="{
|
|
12421
|
+
'clr-error': !fileMessagesTemplateContext.success,
|
|
12422
|
+
'clr-success': fileMessagesTemplateContext.success
|
|
12423
|
+
}"
|
|
12424
|
+
>
|
|
12425
|
+
<div class="clr-file-label-and-status-icon">
|
|
12426
|
+
<span class="label clr-file-label">
|
|
12427
|
+
{{ file.name }}
|
|
12428
|
+
<button
|
|
12429
|
+
class="btn btn-sm btn-link-neutral btn-icon clr-file-clear-button"
|
|
12430
|
+
[attr.aria-label]="getClearFileLabel(file.name)"
|
|
12431
|
+
(click)="clearFile(file)"
|
|
12432
|
+
>
|
|
12433
|
+
<cds-icon shape="times"></cds-icon>
|
|
12434
|
+
</button>
|
|
12435
|
+
</span>
|
|
12436
|
+
|
|
12437
|
+
<cds-icon
|
|
12438
|
+
class="clr-validate-icon"
|
|
12439
|
+
[attr.shape]="fileMessagesTemplateContext.success ? 'check-circle' : 'exclamation-circle'"
|
|
12440
|
+
[attr.status]="fileMessagesTemplateContext.success ? 'success' : 'danger'"
|
|
12441
|
+
aria-hidden="true"
|
|
12442
|
+
></cds-icon>
|
|
12443
|
+
</div>
|
|
12444
|
+
|
|
12445
|
+
<ng-container
|
|
12446
|
+
[ngTemplateOutlet]="fileMessagesTemplate.templateRef"
|
|
12447
|
+
[ngTemplateOutletContext]="fileMessagesTemplateContext"
|
|
12448
|
+
[ngTemplateOutletInjector]="createFileMessagesTemplateInjector(fileMessagesTemplateContext)"
|
|
12449
|
+
></ng-container>
|
|
12450
|
+
</div>
|
|
12451
|
+
</ng-container>
|
|
12452
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: CdsIconCustomTag, selector: "cds-icon" }] });
|
|
12453
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileList, decorators: [{
|
|
12454
|
+
type: Component,
|
|
12455
|
+
args: [{
|
|
12456
|
+
selector: 'clr-file-list',
|
|
12457
|
+
template: `
|
|
12458
|
+
<ng-container *ngFor="let file of files">
|
|
12459
|
+
<div
|
|
12460
|
+
*ngIf="createFileMessagesTemplateContext(file); let fileMessagesTemplateContext"
|
|
12461
|
+
role="listitem"
|
|
12462
|
+
class="clr-file-list-item"
|
|
12463
|
+
[ngClass]="{
|
|
12464
|
+
'clr-error': !fileMessagesTemplateContext.success,
|
|
12465
|
+
'clr-success': fileMessagesTemplateContext.success
|
|
12466
|
+
}"
|
|
12467
|
+
>
|
|
12468
|
+
<div class="clr-file-label-and-status-icon">
|
|
12469
|
+
<span class="label clr-file-label">
|
|
12470
|
+
{{ file.name }}
|
|
12471
|
+
<button
|
|
12472
|
+
class="btn btn-sm btn-link-neutral btn-icon clr-file-clear-button"
|
|
12473
|
+
[attr.aria-label]="getClearFileLabel(file.name)"
|
|
12474
|
+
(click)="clearFile(file)"
|
|
12475
|
+
>
|
|
12476
|
+
<cds-icon shape="times"></cds-icon>
|
|
12477
|
+
</button>
|
|
12478
|
+
</span>
|
|
12479
|
+
|
|
12480
|
+
<cds-icon
|
|
12481
|
+
class="clr-validate-icon"
|
|
12482
|
+
[attr.shape]="fileMessagesTemplateContext.success ? 'check-circle' : 'exclamation-circle'"
|
|
12483
|
+
[attr.status]="fileMessagesTemplateContext.success ? 'success' : 'danger'"
|
|
12484
|
+
aria-hidden="true"
|
|
12485
|
+
></cds-icon>
|
|
12486
|
+
</div>
|
|
12487
|
+
|
|
12488
|
+
<ng-container
|
|
12489
|
+
[ngTemplateOutlet]="fileMessagesTemplate.templateRef"
|
|
12490
|
+
[ngTemplateOutletContext]="fileMessagesTemplateContext"
|
|
12491
|
+
[ngTemplateOutletInjector]="createFileMessagesTemplateInjector(fileMessagesTemplateContext)"
|
|
12492
|
+
></ng-container>
|
|
12493
|
+
</div>
|
|
12494
|
+
</ng-container>
|
|
12495
|
+
`,
|
|
12496
|
+
host: {
|
|
12497
|
+
'[attr.role]': '"list"',
|
|
12498
|
+
'[class.clr-file-list]': 'true',
|
|
12499
|
+
},
|
|
12500
|
+
}]
|
|
12501
|
+
}], ctorParameters: function () { return []; }, propDecorators: { fileMessagesTemplate: [{
|
|
12502
|
+
type: ContentChild,
|
|
12503
|
+
args: [ClrFileMessagesTemplate]
|
|
12504
|
+
}] } });
|
|
12505
|
+
|
|
12152
12506
|
/*
|
|
12153
12507
|
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
12154
12508
|
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
@@ -12160,28 +12514,78 @@ class ClrFileInputContainer extends ClrAbstractContainer {
|
|
|
12160
12514
|
super(...arguments);
|
|
12161
12515
|
this.commonStrings = inject(ClrCommonStringsService);
|
|
12162
12516
|
}
|
|
12517
|
+
get accept() {
|
|
12518
|
+
return this.fileInput.elementRef.nativeElement.accept;
|
|
12519
|
+
}
|
|
12520
|
+
get multiple() {
|
|
12521
|
+
return this.fileInput.elementRef.nativeElement.multiple;
|
|
12522
|
+
}
|
|
12163
12523
|
get disabled() {
|
|
12164
12524
|
return this.fileInput.elementRef.nativeElement.disabled;
|
|
12165
12525
|
}
|
|
12526
|
+
get browseButtonText() {
|
|
12527
|
+
const selectionButtonLabel = this.fileList ? undefined : this.fileInput?.selection?.buttonLabel;
|
|
12528
|
+
return selectionButtonLabel || this.customButtonLabel || this.commonStrings.keys.browse;
|
|
12529
|
+
}
|
|
12166
12530
|
get browseButtonDescribedBy() {
|
|
12167
|
-
return `${this.label?.
|
|
12531
|
+
return `${this.label?.forAttr} ${this.fileInput.elementRef.nativeElement.getAttribute('aria-describedby')}`;
|
|
12532
|
+
}
|
|
12533
|
+
get successMessagePresent() {
|
|
12534
|
+
return super.successMessagePresent || !!this.fileSuccessComponent;
|
|
12535
|
+
}
|
|
12536
|
+
get errorMessagePresent() {
|
|
12537
|
+
return super.errorMessagePresent || !!this.fileErrorComponent;
|
|
12538
|
+
}
|
|
12539
|
+
focusBrowseButton() {
|
|
12540
|
+
this.browseButtonElementRef.nativeElement.focus();
|
|
12168
12541
|
}
|
|
12169
12542
|
browse() {
|
|
12170
|
-
this.fileInput.elementRef
|
|
12543
|
+
const fileInputElementRef = this.fileList && this.multiple ? this.fileListFileInputElementRef : this.fileInput.elementRef;
|
|
12544
|
+
fileInputElementRef.nativeElement.click();
|
|
12171
12545
|
}
|
|
12172
12546
|
clearSelectedFiles() {
|
|
12173
12547
|
this.fileInput.elementRef.nativeElement.value = '';
|
|
12174
12548
|
this.fileInput.elementRef.nativeElement.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));
|
|
12175
|
-
this.
|
|
12549
|
+
this.focusBrowseButton();
|
|
12550
|
+
}
|
|
12551
|
+
addFilesToSelection(newFiles) {
|
|
12552
|
+
if (!newFiles.length) {
|
|
12553
|
+
return;
|
|
12554
|
+
}
|
|
12555
|
+
// start with new files
|
|
12556
|
+
const mergedFiles = [...newFiles];
|
|
12557
|
+
// add existing files if a new file doesn't have the same name
|
|
12558
|
+
for (const existingFile of this.fileInput.elementRef.nativeElement.files) {
|
|
12559
|
+
if (!mergedFiles.some(file => file.name === existingFile.name)) {
|
|
12560
|
+
mergedFiles.push(existingFile);
|
|
12561
|
+
}
|
|
12562
|
+
}
|
|
12563
|
+
// update file selection
|
|
12564
|
+
selectFiles(this.fileInput.elementRef.nativeElement, mergedFiles);
|
|
12176
12565
|
}
|
|
12177
12566
|
}
|
|
12178
12567
|
ClrFileInputContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInputContainer, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
12179
|
-
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: `
|
|
12568
|
+
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 }, { propertyName: "fileList", first: true, predicate: i0.forwardRef(function () { return ClrFileList; }), descendants: true }, { propertyName: "fileSuccessComponent", first: true, predicate: ClrFileSuccess, descendants: true }, { propertyName: "fileErrorComponent", first: true, predicate: ClrFileError, descendants: true }], viewQueries: [{ propertyName: "browseButtonElementRef", first: true, predicate: ["browseButton"], descendants: true }, { propertyName: "fileListFileInputElementRef", first: true, predicate: ["fileListFileInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
12180
12569
|
<ng-content select="label"></ng-content>
|
|
12181
12570
|
<label *ngIf="!label && addGrid()"></label>
|
|
12182
12571
|
<div class="clr-control-container" [ngClass]="controlClass()">
|
|
12183
12572
|
<div class="clr-file-input-wrapper">
|
|
12184
12573
|
<ng-content select="[clrFileInput]"></ng-content>
|
|
12574
|
+
|
|
12575
|
+
<!-- file input to handle adding new files to selection when file list is present (prevent replacing selected files on the main file input) -->
|
|
12576
|
+
<input
|
|
12577
|
+
*ngIf="fileList"
|
|
12578
|
+
#fileListFileInput
|
|
12579
|
+
type="file"
|
|
12580
|
+
class="clr-file-input"
|
|
12581
|
+
tabindex="-1"
|
|
12582
|
+
aria-hidden="true"
|
|
12583
|
+
[accept]="accept"
|
|
12584
|
+
[multiple]="multiple"
|
|
12585
|
+
[disabled]="disabled"
|
|
12586
|
+
(change)="addFilesToSelection(fileListFileInput.files)"
|
|
12587
|
+
/>
|
|
12588
|
+
|
|
12185
12589
|
<button
|
|
12186
12590
|
#browseButton
|
|
12187
12591
|
type="button"
|
|
@@ -12191,12 +12595,10 @@ ClrFileInputContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
|
12191
12595
|
(click)="browse()"
|
|
12192
12596
|
>
|
|
12193
12597
|
<cds-icon shape="folder-open"></cds-icon>
|
|
12194
|
-
<span class="clr-file-input-browse-button-text">
|
|
12195
|
-
{{ fileInput?.selection?.buttonLabel || customButtonLabel || commonStrings.keys.browse }}
|
|
12196
|
-
</span>
|
|
12598
|
+
<span class="clr-file-input-browse-button-text">{{ browseButtonText }}</span>
|
|
12197
12599
|
</button>
|
|
12198
12600
|
<button
|
|
12199
|
-
*ngIf="fileInput?.selection?.fileCount"
|
|
12601
|
+
*ngIf="!fileList && fileInput?.selection?.fileCount"
|
|
12200
12602
|
type="button"
|
|
12201
12603
|
class="btn btn-sm clr-file-input-clear-button"
|
|
12202
12604
|
[attr.aria-label]="fileInput?.selection?.clearFilesButtonLabel"
|
|
@@ -12222,6 +12624,12 @@ ClrFileInputContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
|
12222
12624
|
<ng-content select="clr-control-helper" *ngIf="showHelper"></ng-content>
|
|
12223
12625
|
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
12224
12626
|
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
12627
|
+
|
|
12628
|
+
<!-- If this is present, this file input becomes an "advanced" file input. -->
|
|
12629
|
+
<ng-container>
|
|
12630
|
+
<div class="clr-file-list-break"></div>
|
|
12631
|
+
<ng-content select="clr-file-list"></ng-content>
|
|
12632
|
+
</ng-container>
|
|
12225
12633
|
</div>
|
|
12226
12634
|
`, 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: ["id", "for"] }] });
|
|
12227
12635
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInputContainer, decorators: [{
|
|
@@ -12234,6 +12642,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
12234
12642
|
<div class="clr-control-container" [ngClass]="controlClass()">
|
|
12235
12643
|
<div class="clr-file-input-wrapper">
|
|
12236
12644
|
<ng-content select="[clrFileInput]"></ng-content>
|
|
12645
|
+
|
|
12646
|
+
<!-- file input to handle adding new files to selection when file list is present (prevent replacing selected files on the main file input) -->
|
|
12647
|
+
<input
|
|
12648
|
+
*ngIf="fileList"
|
|
12649
|
+
#fileListFileInput
|
|
12650
|
+
type="file"
|
|
12651
|
+
class="clr-file-input"
|
|
12652
|
+
tabindex="-1"
|
|
12653
|
+
aria-hidden="true"
|
|
12654
|
+
[accept]="accept"
|
|
12655
|
+
[multiple]="multiple"
|
|
12656
|
+
[disabled]="disabled"
|
|
12657
|
+
(change)="addFilesToSelection(fileListFileInput.files)"
|
|
12658
|
+
/>
|
|
12659
|
+
|
|
12237
12660
|
<button
|
|
12238
12661
|
#browseButton
|
|
12239
12662
|
type="button"
|
|
@@ -12243,12 +12666,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
12243
12666
|
(click)="browse()"
|
|
12244
12667
|
>
|
|
12245
12668
|
<cds-icon shape="folder-open"></cds-icon>
|
|
12246
|
-
<span class="clr-file-input-browse-button-text">
|
|
12247
|
-
{{ fileInput?.selection?.buttonLabel || customButtonLabel || commonStrings.keys.browse }}
|
|
12248
|
-
</span>
|
|
12669
|
+
<span class="clr-file-input-browse-button-text">{{ browseButtonText }}</span>
|
|
12249
12670
|
</button>
|
|
12250
12671
|
<button
|
|
12251
|
-
*ngIf="fileInput?.selection?.fileCount"
|
|
12672
|
+
*ngIf="!fileList && fileInput?.selection?.fileCount"
|
|
12252
12673
|
type="button"
|
|
12253
12674
|
class="btn btn-sm clr-file-input-clear-button"
|
|
12254
12675
|
[attr.aria-label]="fileInput?.selection?.clearFilesButtonLabel"
|
|
@@ -12274,6 +12695,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
12274
12695
|
<ng-content select="clr-control-helper" *ngIf="showHelper"></ng-content>
|
|
12275
12696
|
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
12276
12697
|
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
12698
|
+
|
|
12699
|
+
<!-- If this is present, this file input becomes an "advanced" file input. -->
|
|
12700
|
+
<ng-container>
|
|
12701
|
+
<div class="clr-file-list-break"></div>
|
|
12702
|
+
<ng-content select="clr-file-list"></ng-content>
|
|
12703
|
+
</ng-container>
|
|
12277
12704
|
</div>
|
|
12278
12705
|
`,
|
|
12279
12706
|
host: {
|
|
@@ -12289,9 +12716,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
12289
12716
|
}], fileInput: [{
|
|
12290
12717
|
type: ContentChild,
|
|
12291
12718
|
args: [forwardRef(() => ClrFileInput)]
|
|
12719
|
+
}], fileList: [{
|
|
12720
|
+
type: ContentChild,
|
|
12721
|
+
args: [forwardRef(() => ClrFileList)]
|
|
12292
12722
|
}], browseButtonElementRef: [{
|
|
12293
12723
|
type: ViewChild,
|
|
12294
12724
|
args: ['browseButton']
|
|
12725
|
+
}], fileListFileInputElementRef: [{
|
|
12726
|
+
type: ViewChild,
|
|
12727
|
+
args: ['fileListFileInput']
|
|
12728
|
+
}], fileSuccessComponent: [{
|
|
12729
|
+
type: ContentChild,
|
|
12730
|
+
args: [ClrFileSuccess]
|
|
12731
|
+
}], fileErrorComponent: [{
|
|
12732
|
+
type: ContentChild,
|
|
12733
|
+
args: [ClrFileError]
|
|
12295
12734
|
}] } });
|
|
12296
12735
|
|
|
12297
12736
|
/*
|
|
@@ -12338,13 +12777,14 @@ class ClrFileInput extends WrappedFormControl {
|
|
|
12338
12777
|
}
|
|
12339
12778
|
}
|
|
12340
12779
|
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 });
|
|
12341
|
-
ClrFileInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrFileInput, selector: "input[type=\"file\"][clrFileInput]", host: { attributes: { "tabindex": "-1" }, listeners: { "change": "handleChange()" }, properties: { "class.clr-file-input": "true" } }, usesInheritance: true, ngImport: i0 });
|
|
12780
|
+
ClrFileInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrFileInput, selector: "input[type=\"file\"][clrFileInput]", host: { attributes: { "tabindex": "-1", "aria-hidden": "true" }, listeners: { "change": "handleChange()" }, properties: { "class.clr-file-input": "true" } }, usesInheritance: true, ngImport: i0 });
|
|
12342
12781
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInput, decorators: [{
|
|
12343
12782
|
type: Directive,
|
|
12344
12783
|
args: [{
|
|
12345
12784
|
selector: 'input[type="file"][clrFileInput]',
|
|
12346
12785
|
host: {
|
|
12347
12786
|
tabindex: '-1',
|
|
12787
|
+
'aria-hidden': 'true',
|
|
12348
12788
|
'[class.clr-file-input]': 'true',
|
|
12349
12789
|
},
|
|
12350
12790
|
}]
|
|
@@ -12375,33 +12815,25 @@ class ClrFileInputValidator {
|
|
|
12375
12815
|
if (fileInputElement.required && files?.length === 0) {
|
|
12376
12816
|
errors.required = true;
|
|
12377
12817
|
}
|
|
12378
|
-
|
|
12379
|
-
if (
|
|
12380
|
-
const accept = fileInputElement.accept.split(',').map(type => type.trim());
|
|
12818
|
+
const accept = fileInputElement.accept ? fileInputElement.accept.split(',').map(type => type.trim()) : null;
|
|
12819
|
+
if (files?.length > 0 && (accept || this.minFileSize || this.maxFileSize)) {
|
|
12381
12820
|
for (let i = 0; i < files.length; i++) {
|
|
12382
12821
|
const file = files.item(i);
|
|
12383
|
-
|
|
12384
|
-
if (
|
|
12385
|
-
|
|
12386
|
-
|
|
12822
|
+
// accept validation (native attribute)
|
|
12823
|
+
if (accept) {
|
|
12824
|
+
const [fileExtension] = file.name.match(/\..+$/);
|
|
12825
|
+
if (!accept.includes(file.type) && !accept.includes(fileExtension)) {
|
|
12826
|
+
errors.accept = errors.accept || [];
|
|
12827
|
+
errors.accept.push({ name: file.name, accept, type: file.type, extension: fileExtension });
|
|
12828
|
+
}
|
|
12387
12829
|
}
|
|
12388
|
-
|
|
12389
|
-
|
|
12390
|
-
// min file validation (custom input)
|
|
12391
|
-
if (this.minFileSize && files?.length > 0) {
|
|
12392
|
-
for (let i = 0; i < files.length; i++) {
|
|
12393
|
-
const file = files.item(i);
|
|
12394
|
-
if (file.size < this.minFileSize) {
|
|
12830
|
+
// min file validation (custom input)
|
|
12831
|
+
if (this.minFileSize && file.size < this.minFileSize) {
|
|
12395
12832
|
errors.minFileSize = errors.minFileSize || [];
|
|
12396
12833
|
errors.minFileSize.push({ name: file.name, minFileSize: this.minFileSize, actualFileSize: file.size });
|
|
12397
12834
|
}
|
|
12398
|
-
|
|
12399
|
-
|
|
12400
|
-
// max file validation (custom input)
|
|
12401
|
-
if (this.maxFileSize && files?.length > 0) {
|
|
12402
|
-
for (let i = 0; i < files.length; i++) {
|
|
12403
|
-
const file = files.item(i);
|
|
12404
|
-
if (file.size > this.maxFileSize) {
|
|
12835
|
+
// max file validation (custom input)
|
|
12836
|
+
if (this.maxFileSize && file.size > this.maxFileSize) {
|
|
12405
12837
|
errors.maxFileSize = errors.maxFileSize || [];
|
|
12406
12838
|
errors.maxFileSize.push({ name: file.name, maxFileSize: this.maxFileSize, actualFileSize: file.size });
|
|
12407
12839
|
}
|
|
@@ -12432,21 +12864,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
12432
12864
|
* This software is released under MIT license.
|
|
12433
12865
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
12434
12866
|
*/
|
|
12435
|
-
function buildFileList(files) {
|
|
12436
|
-
const dataTransfer = new DataTransfer();
|
|
12437
|
-
for (const file of files) {
|
|
12438
|
-
dataTransfer.items.add(file);
|
|
12439
|
-
}
|
|
12440
|
-
return dataTransfer.files;
|
|
12441
|
-
}
|
|
12442
|
-
function selectFiles(fileInputElement, files) {
|
|
12443
|
-
fileInputElement.files = files instanceof FileList ? files : buildFileList(files);
|
|
12444
|
-
fileInputElement.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));
|
|
12445
|
-
}
|
|
12446
|
-
function clearFiles(fileInputElement) {
|
|
12447
|
-
fileInputElement.value = '';
|
|
12448
|
-
fileInputElement.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));
|
|
12449
|
-
}
|
|
12450
12867
|
|
|
12451
12868
|
/*
|
|
12452
12869
|
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
@@ -12509,23 +12926,51 @@ class ClrFileInputModule {
|
|
|
12509
12926
|
}
|
|
12510
12927
|
}
|
|
12511
12928
|
ClrFileInputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
12512
|
-
ClrFileInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInputModule, declarations: [ClrFileInput,
|
|
12929
|
+
ClrFileInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInputModule, declarations: [ClrFileInput,
|
|
12930
|
+
ClrFileInputContainer,
|
|
12931
|
+
ClrFileInputValidator,
|
|
12932
|
+
ClrFileInputValueAccessor,
|
|
12933
|
+
ClrFileList,
|
|
12934
|
+
ClrFileMessagesTemplate,
|
|
12935
|
+
ClrFileInfo,
|
|
12936
|
+
ClrFileSuccess,
|
|
12937
|
+
ClrFileError], imports: [CommonModule, ClrIconModule, ClrCommonFormsModule], exports: [ClrCommonFormsModule,
|
|
12513
12938
|
ClrFileInput,
|
|
12514
12939
|
ClrFileInputContainer,
|
|
12515
12940
|
ClrFileInputValidator,
|
|
12516
|
-
ClrFileInputValueAccessor
|
|
12941
|
+
ClrFileInputValueAccessor,
|
|
12942
|
+
ClrFileList,
|
|
12943
|
+
ClrFileMessagesTemplate,
|
|
12944
|
+
ClrFileInfo,
|
|
12945
|
+
ClrFileSuccess,
|
|
12946
|
+
ClrFileError] });
|
|
12517
12947
|
ClrFileInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInputModule, imports: [CommonModule, ClrIconModule, ClrCommonFormsModule, ClrCommonFormsModule] });
|
|
12518
12948
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInputModule, decorators: [{
|
|
12519
12949
|
type: NgModule,
|
|
12520
12950
|
args: [{
|
|
12521
12951
|
imports: [CommonModule, ClrIconModule, ClrCommonFormsModule],
|
|
12522
|
-
declarations: [
|
|
12952
|
+
declarations: [
|
|
12953
|
+
ClrFileInput,
|
|
12954
|
+
ClrFileInputContainer,
|
|
12955
|
+
ClrFileInputValidator,
|
|
12956
|
+
ClrFileInputValueAccessor,
|
|
12957
|
+
ClrFileList,
|
|
12958
|
+
ClrFileMessagesTemplate,
|
|
12959
|
+
ClrFileInfo,
|
|
12960
|
+
ClrFileSuccess,
|
|
12961
|
+
ClrFileError,
|
|
12962
|
+
],
|
|
12523
12963
|
exports: [
|
|
12524
12964
|
ClrCommonFormsModule,
|
|
12525
12965
|
ClrFileInput,
|
|
12526
12966
|
ClrFileInputContainer,
|
|
12527
12967
|
ClrFileInputValidator,
|
|
12528
12968
|
ClrFileInputValueAccessor,
|
|
12969
|
+
ClrFileList,
|
|
12970
|
+
ClrFileMessagesTemplate,
|
|
12971
|
+
ClrFileInfo,
|
|
12972
|
+
ClrFileSuccess,
|
|
12973
|
+
ClrFileError,
|
|
12529
12974
|
],
|
|
12530
12975
|
}]
|
|
12531
12976
|
}], ctorParameters: function () { return []; } });
|
|
@@ -12537,6 +12982,223 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
12537
12982
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
12538
12983
|
*/
|
|
12539
12984
|
|
|
12985
|
+
/*
|
|
12986
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
12987
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
12988
|
+
* This software is released under MIT license.
|
|
12989
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
12990
|
+
*/
|
|
12991
|
+
class ClrNumberInputContainer extends ClrAbstractContainer {
|
|
12992
|
+
constructor(controlClassService, layoutService, ngControlService, focusService, ifControlStateService) {
|
|
12993
|
+
super(ifControlStateService, layoutService, controlClassService, ngControlService);
|
|
12994
|
+
this.ifControlStateService = ifControlStateService;
|
|
12995
|
+
this.focus = false;
|
|
12996
|
+
this.subscriptions.push(focusService.focusChange.subscribe(state => (this.focus = state)));
|
|
12997
|
+
}
|
|
12998
|
+
}
|
|
12999
|
+
ClrNumberInputContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrNumberInputContainer, deps: [{ token: ControlClassService }, { token: LayoutService, optional: true }, { token: NgControlService }, { token: FocusService }, { token: IfControlStateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
13000
|
+
ClrNumberInputContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrNumberInputContainer, selector: "clr-number-input-container", host: { properties: { "class.clr-form-control": "true", "class.clr-form-control-disabled": "control?.disabled", "class.clr-form-control-readonly": "input.readonly", "class.clr-row": "addGrid()" } }, providers: [FocusService, IfControlStateService, NgControlService, ControlIdService, ControlClassService], queries: [{ propertyName: "input", first: true, predicate: i0.forwardRef(function () { return ClrNumberInput; }), descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
13001
|
+
<ng-content select="label"></ng-content>
|
|
13002
|
+
<label *ngIf="!label && addGrid()"></label>
|
|
13003
|
+
<div class="clr-control-container" [ngClass]="controlClass()">
|
|
13004
|
+
<div class="clr-number-input-wrapper">
|
|
13005
|
+
<div class="clr-input-group" [class.clr-focus]="focus">
|
|
13006
|
+
<ng-content select="[clrNumberInput]"></ng-content>
|
|
13007
|
+
<div class="clr-input-group-actions">
|
|
13008
|
+
<button
|
|
13009
|
+
type="button"
|
|
13010
|
+
class="clr-input-group-icon-action"
|
|
13011
|
+
(click)="input.stepDown()"
|
|
13012
|
+
[disabled]="control?.disabled"
|
|
13013
|
+
>
|
|
13014
|
+
<cds-icon shape="minus" size="sm"></cds-icon>
|
|
13015
|
+
</button>
|
|
13016
|
+
<div class="clr-number-input-separator"></div>
|
|
13017
|
+
<button
|
|
13018
|
+
type="button"
|
|
13019
|
+
class="clr-input-group-icon-action"
|
|
13020
|
+
(click)="input.stepUp()"
|
|
13021
|
+
[disabled]="control?.disabled"
|
|
13022
|
+
>
|
|
13023
|
+
<cds-icon shape="plus" size="sm"></cds-icon>
|
|
13024
|
+
</button>
|
|
13025
|
+
</div>
|
|
13026
|
+
</div>
|
|
13027
|
+
<cds-icon
|
|
13028
|
+
*ngIf="showInvalid"
|
|
13029
|
+
class="clr-validate-icon"
|
|
13030
|
+
shape="exclamation-circle"
|
|
13031
|
+
status="danger"
|
|
13032
|
+
aria-hidden="true"
|
|
13033
|
+
></cds-icon>
|
|
13034
|
+
<cds-icon
|
|
13035
|
+
*ngIf="showValid"
|
|
13036
|
+
class="clr-validate-icon"
|
|
13037
|
+
shape="check-circle"
|
|
13038
|
+
status="success"
|
|
13039
|
+
aria-hidden="true"
|
|
13040
|
+
></cds-icon>
|
|
13041
|
+
</div>
|
|
13042
|
+
<ng-content select="clr-control-helper" *ngIf="showHelper"></ng-content>
|
|
13043
|
+
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
13044
|
+
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
13045
|
+
</div>
|
|
13046
|
+
`, 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: ["id", "for"] }] });
|
|
13047
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrNumberInputContainer, decorators: [{
|
|
13048
|
+
type: Component,
|
|
13049
|
+
args: [{
|
|
13050
|
+
selector: 'clr-number-input-container',
|
|
13051
|
+
template: `
|
|
13052
|
+
<ng-content select="label"></ng-content>
|
|
13053
|
+
<label *ngIf="!label && addGrid()"></label>
|
|
13054
|
+
<div class="clr-control-container" [ngClass]="controlClass()">
|
|
13055
|
+
<div class="clr-number-input-wrapper">
|
|
13056
|
+
<div class="clr-input-group" [class.clr-focus]="focus">
|
|
13057
|
+
<ng-content select="[clrNumberInput]"></ng-content>
|
|
13058
|
+
<div class="clr-input-group-actions">
|
|
13059
|
+
<button
|
|
13060
|
+
type="button"
|
|
13061
|
+
class="clr-input-group-icon-action"
|
|
13062
|
+
(click)="input.stepDown()"
|
|
13063
|
+
[disabled]="control?.disabled"
|
|
13064
|
+
>
|
|
13065
|
+
<cds-icon shape="minus" size="sm"></cds-icon>
|
|
13066
|
+
</button>
|
|
13067
|
+
<div class="clr-number-input-separator"></div>
|
|
13068
|
+
<button
|
|
13069
|
+
type="button"
|
|
13070
|
+
class="clr-input-group-icon-action"
|
|
13071
|
+
(click)="input.stepUp()"
|
|
13072
|
+
[disabled]="control?.disabled"
|
|
13073
|
+
>
|
|
13074
|
+
<cds-icon shape="plus" size="sm"></cds-icon>
|
|
13075
|
+
</button>
|
|
13076
|
+
</div>
|
|
13077
|
+
</div>
|
|
13078
|
+
<cds-icon
|
|
13079
|
+
*ngIf="showInvalid"
|
|
13080
|
+
class="clr-validate-icon"
|
|
13081
|
+
shape="exclamation-circle"
|
|
13082
|
+
status="danger"
|
|
13083
|
+
aria-hidden="true"
|
|
13084
|
+
></cds-icon>
|
|
13085
|
+
<cds-icon
|
|
13086
|
+
*ngIf="showValid"
|
|
13087
|
+
class="clr-validate-icon"
|
|
13088
|
+
shape="check-circle"
|
|
13089
|
+
status="success"
|
|
13090
|
+
aria-hidden="true"
|
|
13091
|
+
></cds-icon>
|
|
13092
|
+
</div>
|
|
13093
|
+
<ng-content select="clr-control-helper" *ngIf="showHelper"></ng-content>
|
|
13094
|
+
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
13095
|
+
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
13096
|
+
</div>
|
|
13097
|
+
`,
|
|
13098
|
+
host: {
|
|
13099
|
+
'[class.clr-form-control]': 'true',
|
|
13100
|
+
'[class.clr-form-control-disabled]': 'control?.disabled',
|
|
13101
|
+
'[class.clr-form-control-readonly]': 'input.readonly',
|
|
13102
|
+
'[class.clr-row]': 'addGrid()',
|
|
13103
|
+
},
|
|
13104
|
+
providers: [FocusService, IfControlStateService, NgControlService, ControlIdService, ControlClassService],
|
|
13105
|
+
}]
|
|
13106
|
+
}], ctorParameters: function () { return [{ type: ControlClassService }, { type: LayoutService, decorators: [{
|
|
13107
|
+
type: Optional
|
|
13108
|
+
}] }, { type: NgControlService }, { type: FocusService }, { type: IfControlStateService }]; }, propDecorators: { input: [{
|
|
13109
|
+
type: ContentChild,
|
|
13110
|
+
args: [forwardRef(() => ClrNumberInput)]
|
|
13111
|
+
}] } });
|
|
13112
|
+
|
|
13113
|
+
/*
|
|
13114
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
13115
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
13116
|
+
* This software is released under MIT license.
|
|
13117
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
13118
|
+
*/
|
|
13119
|
+
class ClrNumberInput extends WrappedFormControl {
|
|
13120
|
+
constructor(focusService, vcr, injector, control, renderer, el) {
|
|
13121
|
+
super(vcr, ClrNumberInputContainer, injector, control, renderer, el);
|
|
13122
|
+
this.focusService = focusService;
|
|
13123
|
+
this.control = control;
|
|
13124
|
+
this.el = el;
|
|
13125
|
+
this.index = 1;
|
|
13126
|
+
if (!focusService) {
|
|
13127
|
+
throw new Error('clrNumberInput requires being wrapped in <clr-number-input-container>');
|
|
13128
|
+
}
|
|
13129
|
+
}
|
|
13130
|
+
get readonly() {
|
|
13131
|
+
return this.el.nativeElement.getAttribute('readonly') !== null;
|
|
13132
|
+
}
|
|
13133
|
+
triggerFocus() {
|
|
13134
|
+
if (!this.readonly && this.focusService) {
|
|
13135
|
+
this.focusService.focused = true;
|
|
13136
|
+
}
|
|
13137
|
+
}
|
|
13138
|
+
triggerValidation() {
|
|
13139
|
+
if (!this.readonly) {
|
|
13140
|
+
super.triggerValidation();
|
|
13141
|
+
if (this.focusService) {
|
|
13142
|
+
this.focusService.focused = false;
|
|
13143
|
+
}
|
|
13144
|
+
}
|
|
13145
|
+
}
|
|
13146
|
+
stepUp() {
|
|
13147
|
+
this.el.nativeElement.stepUp();
|
|
13148
|
+
this.el.nativeElement.dispatchEvent(new Event('input', { bubbles: true, cancelable: true }));
|
|
13149
|
+
this.control.control.markAllAsTouched();
|
|
13150
|
+
}
|
|
13151
|
+
stepDown() {
|
|
13152
|
+
this.el.nativeElement.stepDown();
|
|
13153
|
+
this.el.nativeElement.dispatchEvent(new Event('input', { bubbles: true, cancelable: true }));
|
|
13154
|
+
this.control.control.markAllAsTouched();
|
|
13155
|
+
}
|
|
13156
|
+
}
|
|
13157
|
+
ClrNumberInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrNumberInput, deps: [{ token: FocusService, optional: true }, { token: i0.ViewContainerRef }, { token: i0.Injector }, { token: i1.NgControl, optional: true, self: true }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
13158
|
+
ClrNumberInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrNumberInput, selector: "input[type=\"number\"][clrNumberInput]", host: { listeners: { "focus": "triggerFocus()", "blur": "triggerValidation()" }, properties: { "class.clr-input": "true", "class.clr-number-input": "true" } }, usesInheritance: true, ngImport: i0 });
|
|
13159
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrNumberInput, decorators: [{
|
|
13160
|
+
type: Directive,
|
|
13161
|
+
args: [{
|
|
13162
|
+
selector: 'input[type="number"][clrNumberInput]',
|
|
13163
|
+
host: { '[class.clr-input]': 'true', '[class.clr-number-input]': 'true' },
|
|
13164
|
+
}]
|
|
13165
|
+
}], ctorParameters: function () { return [{ type: FocusService, decorators: [{
|
|
13166
|
+
type: Optional
|
|
13167
|
+
}] }, { type: i0.ViewContainerRef }, { type: i0.Injector }, { type: i1.NgControl, decorators: [{
|
|
13168
|
+
type: Self
|
|
13169
|
+
}, {
|
|
13170
|
+
type: Optional
|
|
13171
|
+
}] }, { type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { triggerFocus: [{
|
|
13172
|
+
type: HostListener,
|
|
13173
|
+
args: ['focus']
|
|
13174
|
+
}], triggerValidation: [{
|
|
13175
|
+
type: HostListener,
|
|
13176
|
+
args: ['blur']
|
|
13177
|
+
}] } });
|
|
13178
|
+
|
|
13179
|
+
/*
|
|
13180
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
13181
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
13182
|
+
* This software is released under MIT license.
|
|
13183
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
13184
|
+
*/
|
|
13185
|
+
class ClrNumberInputModule {
|
|
13186
|
+
constructor() {
|
|
13187
|
+
ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon);
|
|
13188
|
+
}
|
|
13189
|
+
}
|
|
13190
|
+
ClrNumberInputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrNumberInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
13191
|
+
ClrNumberInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: ClrNumberInputModule, declarations: [ClrNumberInput, ClrNumberInputContainer], imports: [CommonModule, FormsModule, ClrIconModule, ClrCommonFormsModule], exports: [ClrCommonFormsModule, ClrNumberInput, ClrNumberInputContainer] });
|
|
13192
|
+
ClrNumberInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrNumberInputModule, imports: [CommonModule, FormsModule, ClrIconModule, ClrCommonFormsModule, ClrCommonFormsModule] });
|
|
13193
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrNumberInputModule, decorators: [{
|
|
13194
|
+
type: NgModule,
|
|
13195
|
+
args: [{
|
|
13196
|
+
imports: [CommonModule, FormsModule, ClrIconModule, ClrCommonFormsModule],
|
|
13197
|
+
declarations: [ClrNumberInput, ClrNumberInputContainer],
|
|
13198
|
+
exports: [ClrCommonFormsModule, ClrNumberInput, ClrNumberInputContainer],
|
|
13199
|
+
}]
|
|
13200
|
+
}], ctorParameters: function () { return []; } });
|
|
13201
|
+
|
|
12540
13202
|
/*
|
|
12541
13203
|
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
12542
13204
|
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
@@ -13470,7 +14132,8 @@ ClrFormsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version:
|
|
|
13470
14132
|
ClrSelectModule,
|
|
13471
14133
|
ClrTextareaModule,
|
|
13472
14134
|
ClrRangeModule,
|
|
13473
|
-
ClrDatalistModule
|
|
14135
|
+
ClrDatalistModule,
|
|
14136
|
+
ClrNumberInputModule] });
|
|
13474
14137
|
ClrFormsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFormsModule, imports: [CommonModule, ClrCommonFormsModule,
|
|
13475
14138
|
ClrCheckboxModule,
|
|
13476
14139
|
ClrComboboxModule,
|
|
@@ -13482,7 +14145,8 @@ ClrFormsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version:
|
|
|
13482
14145
|
ClrSelectModule,
|
|
13483
14146
|
ClrTextareaModule,
|
|
13484
14147
|
ClrRangeModule,
|
|
13485
|
-
ClrDatalistModule
|
|
14148
|
+
ClrDatalistModule,
|
|
14149
|
+
ClrNumberInputModule] });
|
|
13486
14150
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFormsModule, decorators: [{
|
|
13487
14151
|
type: NgModule,
|
|
13488
14152
|
args: [{
|
|
@@ -13500,6 +14164,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
13500
14164
|
ClrTextareaModule,
|
|
13501
14165
|
ClrRangeModule,
|
|
13502
14166
|
ClrDatalistModule,
|
|
14167
|
+
ClrNumberInputModule,
|
|
13503
14168
|
],
|
|
13504
14169
|
}]
|
|
13505
14170
|
}] });
|
|
@@ -14668,10 +15333,10 @@ DatagridNumericFilter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", ve
|
|
|
14668
15333
|
DatagridNumericFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: DatagridNumericFilter, selector: "clr-dg-numeric-filter", inputs: { minPlaceholder: ["clrFilterMinPlaceholder", "minPlaceholder"], maxPlaceholder: ["clrFilterMaxPlaceholder", "maxPlaceholder"], fromLabel: ["clrFilterFromLabel", "fromLabel"], toLabel: ["clrFilterToLabel", "toLabel"], value: ["clrFilterValue", "value"], customNumericFilter: ["clrDgNumericFilter", "customNumericFilter"] }, outputs: { filterValueChange: "clrFilterValueChange" }, providers: [{ provide: CustomFilter, useExisting: DatagridNumericFilter }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input_low"], descendants: true }, { propertyName: "filterContainer", first: true, predicate: ClrDatagridFilter, descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
14669
15334
|
<clr-dg-filter [clrDgFilter]="registered" [(clrDgFilterOpen)]="open">
|
|
14670
15335
|
<div class="datagrid-numeric-filter-form">
|
|
14671
|
-
<
|
|
15336
|
+
<clr-number-input-container>
|
|
14672
15337
|
<label class="clr-control-label">{{ fromLabelValue }}</label>
|
|
14673
15338
|
<input
|
|
14674
|
-
|
|
15339
|
+
clrNumberInput
|
|
14675
15340
|
class="datagrid-numeric-filter-input"
|
|
14676
15341
|
#input_low
|
|
14677
15342
|
type="number"
|
|
@@ -14681,11 +15346,11 @@ DatagridNumericFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
|
14681
15346
|
[placeholder]="minPlaceholderValue"
|
|
14682
15347
|
[attr.aria-label]="minPlaceholderValue"
|
|
14683
15348
|
/>
|
|
14684
|
-
</
|
|
14685
|
-
<
|
|
15349
|
+
</clr-number-input-container>
|
|
15350
|
+
<clr-number-input-container>
|
|
14686
15351
|
<label class="clr-control-label">{{ toLabelValue }}</label>
|
|
14687
15352
|
<input
|
|
14688
|
-
|
|
15353
|
+
clrNumberInput
|
|
14689
15354
|
class="datagrid-numeric-filter-input"
|
|
14690
15355
|
#input_high
|
|
14691
15356
|
type="number"
|
|
@@ -14695,10 +15360,10 @@ DatagridNumericFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
|
14695
15360
|
[placeholder]="maxPlaceholderValue"
|
|
14696
15361
|
[attr.aria-label]="maxPlaceholderValue"
|
|
14697
15362
|
/>
|
|
14698
|
-
</
|
|
15363
|
+
</clr-number-input-container>
|
|
14699
15364
|
</div>
|
|
14700
15365
|
</clr-dg-filter>
|
|
14701
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: ClrLabel, selector: "label", inputs: ["id", "for"] }, { kind: "directive", type:
|
|
15366
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: ClrLabel, selector: "label", inputs: ["id", "for"] }, { kind: "directive", type: ClrNumberInput, selector: "input[type=\"number\"][clrNumberInput]" }, { kind: "component", type: ClrNumberInputContainer, selector: "clr-number-input-container" }, { 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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][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: ClrDatagridFilter, selector: "clr-dg-filter", inputs: ["clrDgFilterOpen", "clrDgFilter"], outputs: ["clrDgFilterOpenChange"] }] });
|
|
14702
15367
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridNumericFilter, decorators: [{
|
|
14703
15368
|
type: Component,
|
|
14704
15369
|
args: [{
|
|
@@ -14707,10 +15372,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
14707
15372
|
template: `
|
|
14708
15373
|
<clr-dg-filter [clrDgFilter]="registered" [(clrDgFilterOpen)]="open">
|
|
14709
15374
|
<div class="datagrid-numeric-filter-form">
|
|
14710
|
-
<
|
|
15375
|
+
<clr-number-input-container>
|
|
14711
15376
|
<label class="clr-control-label">{{ fromLabelValue }}</label>
|
|
14712
15377
|
<input
|
|
14713
|
-
|
|
15378
|
+
clrNumberInput
|
|
14714
15379
|
class="datagrid-numeric-filter-input"
|
|
14715
15380
|
#input_low
|
|
14716
15381
|
type="number"
|
|
@@ -14720,11 +15385,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
14720
15385
|
[placeholder]="minPlaceholderValue"
|
|
14721
15386
|
[attr.aria-label]="minPlaceholderValue"
|
|
14722
15387
|
/>
|
|
14723
|
-
</
|
|
14724
|
-
<
|
|
15388
|
+
</clr-number-input-container>
|
|
15389
|
+
<clr-number-input-container>
|
|
14725
15390
|
<label class="clr-control-label">{{ toLabelValue }}</label>
|
|
14726
15391
|
<input
|
|
14727
|
-
|
|
15392
|
+
clrNumberInput
|
|
14728
15393
|
class="datagrid-numeric-filter-input"
|
|
14729
15394
|
#input_high
|
|
14730
15395
|
type="number"
|
|
@@ -14734,7 +15399,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
14734
15399
|
[placeholder]="maxPlaceholderValue"
|
|
14735
15400
|
[attr.aria-label]="maxPlaceholderValue"
|
|
14736
15401
|
/>
|
|
14737
|
-
</
|
|
15402
|
+
</clr-number-input-container>
|
|
14738
15403
|
</div>
|
|
14739
15404
|
</clr-dg-filter>
|
|
14740
15405
|
`,
|
|
@@ -14881,17 +15546,20 @@ class DatagridStringFilterImpl {
|
|
|
14881
15546
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
14882
15547
|
*/
|
|
14883
15548
|
class DatagridStringFilter extends DatagridFilterRegistrar {
|
|
14884
|
-
constructor(filters, domAdapter, commonStrings, smartToggleService, ngZone) {
|
|
15549
|
+
constructor(filters, domAdapter, commonStrings, smartToggleService, elementRef, cdr, ngZone) {
|
|
14885
15550
|
super(filters);
|
|
14886
15551
|
this.domAdapter = domAdapter;
|
|
14887
15552
|
this.commonStrings = commonStrings;
|
|
14888
15553
|
this.smartToggleService = smartToggleService;
|
|
15554
|
+
this.elementRef = elementRef;
|
|
15555
|
+
this.cdr = cdr;
|
|
14889
15556
|
this.ngZone = ngZone;
|
|
14890
15557
|
this.filterValueChange = new EventEmitter();
|
|
14891
15558
|
/**
|
|
14892
15559
|
* Indicates if the filter dropdown is open
|
|
14893
15560
|
*/
|
|
14894
15561
|
this.open = false;
|
|
15562
|
+
this.labelValue = '';
|
|
14895
15563
|
this.subs = [];
|
|
14896
15564
|
}
|
|
14897
15565
|
/**
|
|
@@ -14951,26 +15619,49 @@ class DatagridStringFilter extends DatagridFilterRegistrar {
|
|
|
14951
15619
|
});
|
|
14952
15620
|
}));
|
|
14953
15621
|
}
|
|
15622
|
+
ngOnChanges() {
|
|
15623
|
+
setTimeout(() => {
|
|
15624
|
+
this.setFilterLabel();
|
|
15625
|
+
this.cdr.markForCheck();
|
|
15626
|
+
});
|
|
15627
|
+
}
|
|
14954
15628
|
ngOnDestroy() {
|
|
14955
15629
|
super.ngOnDestroy();
|
|
14956
15630
|
this.subs.forEach(sub => sub.unsubscribe());
|
|
14957
15631
|
}
|
|
15632
|
+
/**
|
|
15633
|
+
* This is not in a getter to prevent "expression has changed after it was checked" errors.
|
|
15634
|
+
*/
|
|
15635
|
+
setFilterLabel() {
|
|
15636
|
+
if (this.label) {
|
|
15637
|
+
this.labelValue = this.label;
|
|
15638
|
+
return;
|
|
15639
|
+
}
|
|
15640
|
+
const columnElement = this.elementRef.nativeElement?.closest('clr-dg-column');
|
|
15641
|
+
const columnTitleElement = columnElement?.querySelector('.datagrid-column-title');
|
|
15642
|
+
this.labelValue = this.commonStrings.parse(this.commonStrings.keys.datagridFilterLabel, {
|
|
15643
|
+
COLUMN: columnTitleElement?.textContent.trim() || '',
|
|
15644
|
+
});
|
|
15645
|
+
}
|
|
14958
15646
|
}
|
|
14959
|
-
DatagridStringFilter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridStringFilter, deps: [{ token: FiltersProvider }, { token: DomAdapter }, { token: ClrCommonStringsService }, { token: ClrPopoverToggleService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
14960
|
-
DatagridStringFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: DatagridStringFilter, selector: "clr-dg-string-filter", inputs: { placeholder: ["clrFilterPlaceholder", "placeholder"], customStringFilter: ["clrDgStringFilter", "customStringFilter"], value: ["clrFilterValue", "value"] }, outputs: { filterValueChange: "clrFilterValueChange" }, providers: [{ provide: CustomFilter, useExisting: DatagridStringFilter }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "filterContainer", first: true, predicate: ClrDatagridFilter, descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
15647
|
+
DatagridStringFilter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridStringFilter, deps: [{ token: FiltersProvider }, { token: DomAdapter }, { token: ClrCommonStringsService }, { token: ClrPopoverToggleService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
15648
|
+
DatagridStringFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: DatagridStringFilter, selector: "clr-dg-string-filter", inputs: { placeholder: ["clrFilterPlaceholder", "placeholder"], label: ["clrFilterLabel", "label"], customStringFilter: ["clrDgStringFilter", "customStringFilter"], value: ["clrFilterValue", "value"] }, outputs: { filterValueChange: "clrFilterValueChange" }, providers: [{ provide: CustomFilter, useExisting: DatagridStringFilter }], viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "filterContainer", first: true, predicate: ClrDatagridFilter, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `
|
|
14961
15649
|
<clr-dg-filter [clrDgFilter]="registered" [(clrDgFilterOpen)]="open">
|
|
14962
|
-
<input
|
|
14963
|
-
|
|
14964
|
-
|
|
14965
|
-
|
|
14966
|
-
|
|
14967
|
-
|
|
14968
|
-
|
|
14969
|
-
|
|
14970
|
-
|
|
14971
|
-
|
|
15650
|
+
<clr-input-container>
|
|
15651
|
+
<label>{{ labelValue }}</label>
|
|
15652
|
+
<input
|
|
15653
|
+
#input
|
|
15654
|
+
type="text"
|
|
15655
|
+
autocomplete="off"
|
|
15656
|
+
name="search"
|
|
15657
|
+
[(ngModel)]="value"
|
|
15658
|
+
clrInput
|
|
15659
|
+
[attr.aria-label]="placeholderValue"
|
|
15660
|
+
[placeholder]="placeholderValue"
|
|
15661
|
+
/>
|
|
15662
|
+
</clr-input-container>
|
|
14972
15663
|
</clr-dg-filter>
|
|
14973
|
-
`, isInline: true, dependencies: [{ 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: "component", type: ClrDatagridFilter, selector: "clr-dg-filter", inputs: ["clrDgFilterOpen", "clrDgFilter"], outputs: ["clrDgFilterOpenChange"] }] });
|
|
15664
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: ClrLabel, selector: "label", inputs: ["id", "for"] }, { kind: "directive", type: ClrInput, selector: "[clrInput]" }, { kind: "component", type: ClrInputContainer, selector: "clr-input-container" }, { 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: "component", type: ClrDatagridFilter, selector: "clr-dg-filter", inputs: ["clrDgFilterOpen", "clrDgFilter"], outputs: ["clrDgFilterOpenChange"] }] });
|
|
14974
15665
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridStringFilter, decorators: [{
|
|
14975
15666
|
type: Component,
|
|
14976
15667
|
args: [{
|
|
@@ -14978,22 +15669,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
14978
15669
|
providers: [{ provide: CustomFilter, useExisting: DatagridStringFilter }],
|
|
14979
15670
|
template: `
|
|
14980
15671
|
<clr-dg-filter [clrDgFilter]="registered" [(clrDgFilterOpen)]="open">
|
|
14981
|
-
<input
|
|
14982
|
-
|
|
14983
|
-
|
|
14984
|
-
|
|
14985
|
-
|
|
14986
|
-
|
|
14987
|
-
|
|
14988
|
-
|
|
14989
|
-
|
|
14990
|
-
|
|
15672
|
+
<clr-input-container>
|
|
15673
|
+
<label>{{ labelValue }}</label>
|
|
15674
|
+
<input
|
|
15675
|
+
#input
|
|
15676
|
+
type="text"
|
|
15677
|
+
autocomplete="off"
|
|
15678
|
+
name="search"
|
|
15679
|
+
[(ngModel)]="value"
|
|
15680
|
+
clrInput
|
|
15681
|
+
[attr.aria-label]="placeholderValue"
|
|
15682
|
+
[placeholder]="placeholderValue"
|
|
15683
|
+
/>
|
|
15684
|
+
</clr-input-container>
|
|
14991
15685
|
</clr-dg-filter>
|
|
14992
15686
|
`,
|
|
14993
15687
|
}]
|
|
14994
|
-
}], ctorParameters: function () { return [{ type: FiltersProvider }, { type: DomAdapter }, { type: ClrCommonStringsService }, { type: ClrPopoverToggleService }, { type: i0.NgZone }]; }, propDecorators: { placeholder: [{
|
|
15688
|
+
}], ctorParameters: function () { return [{ type: FiltersProvider }, { type: DomAdapter }, { type: ClrCommonStringsService }, { type: ClrPopoverToggleService }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }]; }, propDecorators: { placeholder: [{
|
|
14995
15689
|
type: Input,
|
|
14996
15690
|
args: ['clrFilterPlaceholder']
|
|
15691
|
+
}], label: [{
|
|
15692
|
+
type: Input,
|
|
15693
|
+
args: ['clrFilterLabel']
|
|
14997
15694
|
}], filterValueChange: [{
|
|
14998
15695
|
type: Output,
|
|
14999
15696
|
args: ['clrFilterValueChange']
|
|
@@ -16067,7 +16764,7 @@ ClrDatagridColumn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
|
|
|
16067
16764
|
|
|
16068
16765
|
<clr-dg-column-separator *ngIf="showSeparator"></clr-dg-column-separator>
|
|
16069
16766
|
</div>
|
|
16070
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "component", type: ClrDatagridColumnSeparator, selector: "clr-dg-column-separator" }, { kind: "component", type: DatagridNumericFilter, selector: "clr-dg-numeric-filter", inputs: ["clrFilterMinPlaceholder", "clrFilterMaxPlaceholder", "clrFilterFromLabel", "clrFilterToLabel", "clrFilterValue", "clrDgNumericFilter"], outputs: ["clrFilterValueChange"] }, { kind: "component", type: DatagridStringFilter, selector: "clr-dg-string-filter", inputs: ["clrFilterPlaceholder", "clrDgStringFilter", "clrFilterValue"], outputs: ["clrFilterValueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
16767
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdsIconCustomTag, selector: "cds-icon" }, { kind: "component", type: ClrDatagridColumnSeparator, selector: "clr-dg-column-separator" }, { kind: "component", type: DatagridNumericFilter, selector: "clr-dg-numeric-filter", inputs: ["clrFilterMinPlaceholder", "clrFilterMaxPlaceholder", "clrFilterFromLabel", "clrFilterToLabel", "clrFilterValue", "clrDgNumericFilter"], outputs: ["clrFilterValueChange"] }, { kind: "component", type: DatagridStringFilter, selector: "clr-dg-string-filter", inputs: ["clrFilterPlaceholder", "clrFilterLabel", "clrDgStringFilter", "clrFilterValue"], outputs: ["clrFilterValueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
16071
16768
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridColumn, decorators: [{
|
|
16072
16769
|
type: Component,
|
|
16073
16770
|
args: [{
|
|
@@ -17387,6 +18084,9 @@ class ColumnsService {
|
|
|
17387
18084
|
get hasHideableColumns() {
|
|
17388
18085
|
return this.columnStates.filter(state => state.hideable).length > 0;
|
|
17389
18086
|
}
|
|
18087
|
+
get visibleColumns() {
|
|
18088
|
+
return this.columnStates.filter(state => !state.hidden);
|
|
18089
|
+
}
|
|
17390
18090
|
cache() {
|
|
17391
18091
|
this._cache = this.columns.map(subject => {
|
|
17392
18092
|
const value = { ...subject.value };
|
|
@@ -17718,7 +18418,7 @@ class ClrDatagrid {
|
|
|
17718
18418
|
if (!this.items.smart) {
|
|
17719
18419
|
this.items.all = this.rows.map((row) => row.item);
|
|
17720
18420
|
}
|
|
17721
|
-
const rowItemsChanges = this.rows.changes.pipe(switchMap((rows) => merge(
|
|
18421
|
+
const rowItemsChanges = this.rows.changes.pipe(switchMap$1((rows) => merge(
|
|
17722
18422
|
// immediate update
|
|
17723
18423
|
of(rows.map(row => row.item)),
|
|
17724
18424
|
// subsequent updates once per tick
|
|
@@ -19418,11 +20118,12 @@ const defaultCdkFixedSizeVirtualScrollInputs = {
|
|
|
19418
20118
|
maxBufferPx: 400,
|
|
19419
20119
|
};
|
|
19420
20120
|
class ClrDatagridVirtualScrollDirective {
|
|
19421
|
-
constructor(changeDetectorRef, iterableDiffers, items, ngZone, templateRef, viewContainerRef, directionality, scrollDispatcher, viewportRuler, datagrid, columnsService, injector) {
|
|
20121
|
+
constructor(changeDetectorRef, iterableDiffers, items, ngZone, renderer2, templateRef, viewContainerRef, directionality, scrollDispatcher, viewportRuler, datagrid, columnsService, injector) {
|
|
19422
20122
|
this.changeDetectorRef = changeDetectorRef;
|
|
19423
20123
|
this.iterableDiffers = iterableDiffers;
|
|
19424
20124
|
this.items = items;
|
|
19425
20125
|
this.ngZone = ngZone;
|
|
20126
|
+
this.renderer2 = renderer2;
|
|
19426
20127
|
this.templateRef = templateRef;
|
|
19427
20128
|
this.viewContainerRef = viewContainerRef;
|
|
19428
20129
|
this.directionality = directionality;
|
|
@@ -19510,7 +20211,7 @@ class ClrDatagridVirtualScrollDirective {
|
|
|
19510
20211
|
}
|
|
19511
20212
|
ngAfterViewInit() {
|
|
19512
20213
|
this.injector.runInContext(() => {
|
|
19513
|
-
this.virtualScrollViewport = this.createVirtualScrollViewportForDatagrid(this.changeDetectorRef, this.ngZone, this.directionality, this.scrollDispatcher, this.viewportRuler, this.datagridElementRef, this.virtualScrollStrategy);
|
|
20214
|
+
this.virtualScrollViewport = this.createVirtualScrollViewportForDatagrid(this.changeDetectorRef, this.ngZone, this.renderer2, this.directionality, this.scrollDispatcher, this.viewportRuler, this.datagridElementRef, this.virtualScrollStrategy);
|
|
19514
20215
|
this.cdkVirtualFor = createCdkVirtualForOfDirective(this.viewContainerRef, this.templateRef, this.iterableDiffers, this.viewRepeater, this.virtualScrollViewport, this.ngZone);
|
|
19515
20216
|
this.virtualScrollViewport.ngOnInit();
|
|
19516
20217
|
});
|
|
@@ -19569,7 +20270,7 @@ class ClrDatagridVirtualScrollDirective {
|
|
|
19569
20270
|
rowRoleElement?.setAttribute('aria-rowindex', (viewRef.context.index + 1).toString());
|
|
19570
20271
|
}
|
|
19571
20272
|
}
|
|
19572
|
-
createVirtualScrollViewportForDatagrid(changeDetectorRef, ngZone, directionality, scrollDispatcher, viewportRuler, datagridElementRef, virtualScrollStrategy) {
|
|
20273
|
+
createVirtualScrollViewportForDatagrid(changeDetectorRef, ngZone, renderer2, directionality, scrollDispatcher, viewportRuler, datagridElementRef, virtualScrollStrategy) {
|
|
19573
20274
|
const datagridDivElement = datagridElementRef.nativeElement.querySelector('.datagrid');
|
|
19574
20275
|
const datagridTableElement = datagridElementRef.nativeElement.querySelector('.datagrid-table');
|
|
19575
20276
|
const datagridRowsElement = datagridElementRef.nativeElement.querySelector('.datagrid-rows');
|
|
@@ -19580,7 +20281,7 @@ class ClrDatagridVirtualScrollDirective {
|
|
|
19580
20281
|
datagridRowsElement.style.transform = `translateY(${topOffset}px)`;
|
|
19581
20282
|
datagridRowsElement.style.height = `${totalContentSize - topOffset}px`;
|
|
19582
20283
|
}
|
|
19583
|
-
const virtualScrollViewport = createCdkVirtualScrollViewport(datagridDivElementRef, changeDetectorRef, ngZone, virtualScrollStrategy, directionality, scrollDispatcher, viewportRuler, null);
|
|
20284
|
+
const virtualScrollViewport = createCdkVirtualScrollViewport(datagridDivElementRef, changeDetectorRef, ngZone, renderer2, virtualScrollStrategy, directionality, scrollDispatcher, viewportRuler, null);
|
|
19584
20285
|
virtualScrollViewport._contentWrapper = {
|
|
19585
20286
|
nativeElement: {
|
|
19586
20287
|
style: {
|
|
@@ -19599,7 +20300,7 @@ class ClrDatagridVirtualScrollDirective {
|
|
|
19599
20300
|
return virtualScrollViewport;
|
|
19600
20301
|
}
|
|
19601
20302
|
}
|
|
19602
|
-
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: ColumnsService }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Directive });
|
|
20303
|
+
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.Renderer2 }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i1$2.Directionality }, { token: i3$1.ScrollDispatcher }, { token: i3$1.ViewportRuler }, { token: ClrDatagrid }, { token: ColumnsService }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Directive });
|
|
19603
20304
|
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 });
|
|
19604
20305
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridVirtualScrollDirective, decorators: [{
|
|
19605
20306
|
type: Directive,
|
|
@@ -19609,7 +20310,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
19609
20310
|
}]
|
|
19610
20311
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.IterableDiffers }, { type: Items, decorators: [{
|
|
19611
20312
|
type: SkipSelf
|
|
19612
|
-
}] }, { type: i0.NgZone }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i1$2.Directionality }, { type: i3$1.ScrollDispatcher }, { type: i3$1.ViewportRuler }, { type: ClrDatagrid }, { type: ColumnsService }, { type: i0.EnvironmentInjector }]; }, propDecorators: { renderedRangeChange: [{
|
|
20313
|
+
}] }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i1$2.Directionality }, { type: i3$1.ScrollDispatcher }, { type: i3$1.ViewportRuler }, { type: ClrDatagrid }, { type: ColumnsService }, { type: i0.EnvironmentInjector }]; }, propDecorators: { renderedRangeChange: [{
|
|
19613
20314
|
type: Output
|
|
19614
20315
|
}], cdkVirtualForOf: [{
|
|
19615
20316
|
type: Input,
|
|
@@ -19633,7 +20334,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
19633
20334
|
type: Input,
|
|
19634
20335
|
args: ['clrVirtualRowsMaxBufferPx']
|
|
19635
20336
|
}] } });
|
|
19636
|
-
function createCdkVirtualScrollViewport(datagridDivElementRef, changeDetectorRef, ngZone, virtualScrollStrategy, directionality, scrollDispatcher, viewportRuler, scrollable) {
|
|
20337
|
+
function createCdkVirtualScrollViewport(datagridDivElementRef, changeDetectorRef, ngZone, renderer2, virtualScrollStrategy, directionality, scrollDispatcher, viewportRuler, scrollable) {
|
|
19637
20338
|
if (+VERSION.major < 19) {
|
|
19638
20339
|
return new CdkVirtualScrollViewport(datagridDivElementRef, changeDetectorRef, ngZone, virtualScrollStrategy, directionality, scrollDispatcher, viewportRuler, scrollable);
|
|
19639
20340
|
}
|
|
@@ -19644,6 +20345,7 @@ function createCdkVirtualScrollViewport(datagridDivElementRef, changeDetectorRef
|
|
|
19644
20345
|
{ provide: ElementRef, useValue: datagridDivElementRef },
|
|
19645
20346
|
{ provide: ChangeDetectorRef, useValue: changeDetectorRef },
|
|
19646
20347
|
{ provide: NgZone, useValue: ngZone },
|
|
20348
|
+
{ provide: Renderer2, useValue: renderer2 },
|
|
19647
20349
|
{ provide: VIRTUAL_SCROLL_STRATEGY, useValue: virtualScrollStrategy },
|
|
19648
20350
|
{ provide: Directionality, useValue: directionality },
|
|
19649
20351
|
{ provide: ScrollDispatcher, useValue: scrollDispatcher },
|
|
@@ -19912,9 +20614,9 @@ class DatagridMainRenderer {
|
|
|
19912
20614
|
if (this.headers) {
|
|
19913
20615
|
if (state && !this.columnsService.hasCache()) {
|
|
19914
20616
|
this.columnsService.cache();
|
|
19915
|
-
this.
|
|
20617
|
+
this.columnsService.visibleColumns.forEach((header, index) => {
|
|
19916
20618
|
if (index > 0) {
|
|
19917
|
-
this.columnsService.emitStateChangeAt(
|
|
20619
|
+
this.columnsService.emitStateChangeAt(header.columnIndex, {
|
|
19918
20620
|
changes: [DatagridColumnChanges.HIDDEN],
|
|
19919
20621
|
hidden: state,
|
|
19920
20622
|
});
|
|
@@ -28398,9 +29100,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
28398
29100
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
28399
29101
|
*/
|
|
28400
29102
|
|
|
29103
|
+
/*
|
|
29104
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
29105
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
29106
|
+
* This software is released under MIT license.
|
|
29107
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
29108
|
+
*/
|
|
29109
|
+
|
|
28401
29110
|
/**
|
|
28402
29111
|
* Generated bundle index. Do not edit.
|
|
28403
29112
|
*/
|
|
28404
29113
|
|
|
28405
|
-
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, ClrBreadcrumbItem, ClrBreadcrumbs, ClrBreadcrumbsModule, ClrButton, ClrButtonGroup, ClrButtonGroupModule, ClrButtonModule, ClrCalendar, ClrCheckbox, ClrCheckboxContainer, ClrCheckboxModule, ClrCheckboxWrapper, ClrCombobox, ClrComboboxContainer, ClrComboboxModule, ClrCommonFormsModule, ClrCommonStringsService, ClrConditionalModule, ClrControl, ClrControlContainer, ClrControlError, ClrControlHelper, ClrControlSuccess, ClrDataModule, ClrDatagrid, ClrDatagridActionBar, ClrDatagridActionOverflow, ClrDatagridCell, ClrDatagridColumn, ClrDatagridColumnSeparator, ClrDatagridColumnToggle, ClrDatagridColumnToggleButton, ClrDatagridDetail, ClrDatagridDetailBody, ClrDatagridDetailHeader, ClrDatagridFilter, ClrDatagridFooter, ClrDatagridHideableColumn, ClrDatagridItems, ClrDatagridModule, ClrDatagridPageSize, ClrDatagridPagination, ClrDatagridPlaceholder, ClrDatagridRow, ClrDatagridRowDetail, ClrDatagridSortOrder, ClrDatalist, ClrDatalistContainer, ClrDatalistInput, ClrDatalistModule, ClrDateContainer, ClrDateInput, 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, ClrModalConfigurationService, 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, ClrSignpostTitle, ClrSignpostTrigger, ClrSpinner, ClrSpinnerModule, ClrStackBlock, ClrStackContentInput, ClrStackHeader, ClrStackView, ClrStackViewCustomTags, ClrStackViewLabel, ClrStackViewModule, ClrStandaloneCdkTrapFocus, ClrStepButton, ClrStepButtonType, ClrStepper, ClrStepperModule, ClrStepperPanel, ClrStopEscapePropagationDirective, ClrTab, ClrTabAction, ClrTabContent, ClrTabLink, ClrTabOverflowContent, ClrTabs, ClrTabsActions, ClrTabsModule, ClrTextarea, ClrTextareaContainer, ClrTextareaModule, ClrTimeline, ClrTimelineLayout, ClrTimelineModule, ClrTimelineStep, ClrTimelineStepDescription, ClrTimelineStepHeader, ClrTimelineStepState, ClrTimelineStepTitle, ClrTooltip, ClrTooltipContent, ClrTooltipModule, ClrTooltipTrigger, ClrTree, ClrTreeNode, ClrTreeNodeLink, ClrTreeViewModule, ClrVerticalNav, ClrVerticalNavGroup, ClrVerticalNavGroupChildren, ClrVerticalNavIcon, ClrVerticalNavLink, ClrVerticalNavModule, ClrWizard, ClrWizardButton, ClrWizardHeaderAction, ClrWizardModule, ClrWizardPage, ClrWizardPageButtons, ClrWizardPageHeaderActions, ClrWizardPageNavTitle, ClrWizardPageTitle, ClrWizardStepnav, ClrWizardStepnavItem, ClrWizardTitle, ClrYearpicker, DEFAULT_BUTTON_TYPES, DatagridNumericFilter, DatagridPropertyComparator, DatagridPropertyNumericFilter, DatagridPropertyStringFilter, DatagridStringFilter, EXPANDABLE_ANIMATION_DIRECTIVES, FOCUS_ON_VIEW_INIT, FOCUS_ON_VIEW_INIT_DIRECTIVES, IS_TOGGLE, IS_TOGGLE_PROVIDER, LoadingListener, MainContainerWillyWonka, NavDetectionOompaLoompa, TOGGLE_SERVICE, TOGGLE_SERVICE_PROVIDER, ToggleServiceFactory, WrappedFormControl, collapse, commonStringsDefault, fade, fadeSlide, isToggleFactory, slide, AccordionOompaLoompa as ÇlrAccordionOompaLoompa, AccordionWillyWonka as ÇlrAccordionWillyWonka, ActionableOompaLoompa as ÇlrActionableOompaLoompa, ActiveOompaLoompa as ÇlrActiveOompaLoompa, ClrPopoverCloseButton as ÇlrClrPopoverCloseButton, ClrPopoverModuleNext as ÇlrClrPopoverModuleNext, ClrPopoverOpenCloseButton as ÇlrClrPopoverOpenCloseButton, DatagridCellRenderer as ÇlrDatagridCellRenderer, DatagridDetailRegisterer as ÇlrDatagridDetailRegisterer, DatagridHeaderRenderer as ÇlrDatagridHeaderRenderer, DatagridMainRenderer as ÇlrDatagridMainRenderer, DatagridRowRenderer as ÇlrDatagridRowRenderer, ClrDatagridSelectionCellDirective as ÇlrDatagridSelectionCellDirective, ClrDatagridVirtualScrollDirective as ÇlrDatagridVirtualScrollDirective, DatagridWillyWonka as ÇlrDatagridWillyWonka, ExpandableOompaLoompa as ÇlrExpandableOompaLoompa, StepperOompaLoompa as ÇlrStepperOompaLoompa, StepperWillyWonka as ÇlrStepperWillyWonka, TabsWillyWonka as ÇlrTabsWillyWonka, WrappedCell as ÇlrWrappedCell, WrappedColumn as ÇlrWrappedColumn, WrappedRow as ÇlrWrappedRow };
|
|
29114
|
+
export { CHANGE_KEYS, CLR_ALERT_DIRECTIVES, CLR_BUTTON_GROUP_DIRECTIVES, CLR_DATAGRID_DIRECTIVES, CLR_DATEPICKER_DIRECTIVES, CLR_DROPDOWN_DIRECTIVES, CLR_FILE_MESSAGES_TEMPLATE_CONTEXT, CLR_ICON_DIRECTIVES, CLR_LAYOUT_DIRECTIVES, CLR_LOADING_BUTTON_DIRECTIVES, CLR_LOADING_DIRECTIVES, CLR_MENU_POSITIONS, CLR_MODAL_DIRECTIVES, CLR_NAVIGATION_DIRECTIVES, CLR_PROGRESS_BAR_DIRECTIVES, CLR_SIDEPANEL_DIRECTIVES, CLR_SIGNPOST_DIRECTIVES, CLR_SPINNER_DIRECTIVES, CLR_STACK_VIEW_DIRECTIVES, CLR_TABS_DIRECTIVES, CLR_TOOLTIP_DIRECTIVES, CLR_TREE_VIEW_DIRECTIVES, CLR_VERTICAL_NAV_DIRECTIVES, CLR_WIZARD_DIRECTIVES, CONDITIONAL_DIRECTIVES, CUSTOM_BUTTON_TYPES, CdsIconCustomTag, ClarityModule, ClrAbstractContainer, ClrAccordion, ClrAccordionContent, ClrAccordionDescription, ClrAccordionModule, ClrAccordionPanel, ClrAccordionTitle, ClrAlert, ClrAlertItem, ClrAlertModule, ClrAlertText, ClrAlerts, ClrAlertsPager, ClrAlignment, ClrAriaCurrentLink, ClrAxis, ClrBreadcrumbItem, ClrBreadcrumbs, ClrBreadcrumbsModule, ClrButton, ClrButtonGroup, ClrButtonGroupModule, ClrButtonModule, ClrCalendar, ClrCheckbox, ClrCheckboxContainer, ClrCheckboxModule, ClrCheckboxWrapper, ClrCombobox, ClrComboboxContainer, ClrComboboxModule, ClrCommonFormsModule, ClrCommonStringsService, ClrConditionalModule, ClrControl, ClrControlContainer, ClrControlError, ClrControlHelper, ClrControlSuccess, ClrDataModule, ClrDatagrid, ClrDatagridActionBar, ClrDatagridActionOverflow, ClrDatagridCell, ClrDatagridColumn, ClrDatagridColumnSeparator, ClrDatagridColumnToggle, ClrDatagridColumnToggleButton, ClrDatagridDetail, ClrDatagridDetailBody, ClrDatagridDetailHeader, ClrDatagridFilter, ClrDatagridFooter, ClrDatagridHideableColumn, ClrDatagridItems, ClrDatagridModule, ClrDatagridPageSize, ClrDatagridPagination, ClrDatagridPlaceholder, ClrDatagridRow, ClrDatagridRowDetail, ClrDatagridSortOrder, ClrDatalist, ClrDatalistContainer, ClrDatalistInput, ClrDatalistModule, ClrDateContainer, ClrDateInput, ClrDateInputValidator, ClrDatepickerActions, ClrDatepickerModule, ClrDatepickerViewManager, ClrDay, ClrDaypicker, ClrDestroyService, ClrDropdown, ClrDropdownItem, ClrDropdownMenu, ClrDropdownModule, ClrDropdownTrigger, ClrEmphasisModule, ClrExpandableAnimation, ClrFileError, ClrFileInfo, ClrFileInput, ClrFileInputContainer, ClrFileInputModule, ClrFileInputValidator, ClrFileInputValueAccessor, ClrFileList, ClrFileMessagesTemplate, ClrFileSuccess, ClrFocusOnViewInit, ClrFocusOnViewInitModule, ClrForm, ClrFormLayout, ClrFormsModule, ClrHeader, ClrIconCustomTag, ClrIconModule, ClrIfActive, ClrIfDetail, ClrIfError, ClrIfExpanded, ClrIfOpen, ClrIfSuccess, ClrInput, ClrInputContainer, ClrInputModule, ClrLabel, ClrLayout, ClrLayoutModule, ClrLoading, ClrLoadingButton, ClrLoadingButtonModule, ClrLoadingModule, ClrLoadingState, ClrMainContainer, ClrMainContainerModule, ClrModal, ClrModalBody, ClrModalConfigurationService, ClrModalModule, ClrMonthpicker, ClrNavLevel, ClrNavigationModule, ClrNumberInput, ClrNumberInputContainer, ClrNumberInputModule, ClrOption, ClrOptionItems, ClrOptionSelected, ClrOptions, ClrPassword, ClrPasswordContainer, ClrPasswordModule, ClrPopoverAnchor, ClrPopoverContent, ClrPopoverEventsService, ClrPopoverHostDirective, ClrPopoverModule, ClrPopoverPositionService, ClrPopoverToggleService, ClrProgressBar, ClrProgressBarModule, ClrRadio, ClrRadioContainer, ClrRadioModule, ClrRadioWrapper, ClrRange, ClrRangeContainer, ClrRangeModule, ClrRecursiveForOf, ClrSelect, ClrSelectContainer, ClrSelectModule, ClrSelectedState, ClrSide, ClrSidePanel, ClrSidePanelModule, ClrSignpost, ClrSignpostContent, ClrSignpostModule, ClrSignpostTitle, ClrSignpostTrigger, ClrSpinner, ClrSpinnerModule, ClrStackBlock, ClrStackContentInput, ClrStackHeader, ClrStackView, ClrStackViewCustomTags, ClrStackViewLabel, ClrStackViewModule, ClrStandaloneCdkTrapFocus, ClrStepButton, ClrStepButtonType, ClrStepper, ClrStepperModule, ClrStepperPanel, ClrStopEscapePropagationDirective, ClrTab, ClrTabAction, ClrTabContent, ClrTabLink, ClrTabOverflowContent, ClrTabs, ClrTabsActions, ClrTabsModule, ClrTextarea, ClrTextareaContainer, ClrTextareaModule, ClrTimeline, ClrTimelineLayout, ClrTimelineModule, ClrTimelineStep, ClrTimelineStepDescription, ClrTimelineStepHeader, ClrTimelineStepState, ClrTimelineStepTitle, ClrTooltip, ClrTooltipContent, ClrTooltipModule, ClrTooltipTrigger, ClrTree, ClrTreeNode, ClrTreeNodeLink, ClrTreeViewModule, ClrVerticalNav, ClrVerticalNavGroup, ClrVerticalNavGroupChildren, ClrVerticalNavIcon, ClrVerticalNavLink, ClrVerticalNavModule, ClrWizard, ClrWizardButton, ClrWizardHeaderAction, ClrWizardModule, ClrWizardPage, ClrWizardPageButtons, ClrWizardPageHeaderActions, ClrWizardPageNavTitle, ClrWizardPageTitle, ClrWizardStepnav, ClrWizardStepnavItem, ClrWizardTitle, ClrYearpicker, DEFAULT_BUTTON_TYPES, DatagridNumericFilter, DatagridPropertyComparator, DatagridPropertyNumericFilter, DatagridPropertyStringFilter, DatagridStringFilter, EXPANDABLE_ANIMATION_DIRECTIVES, FOCUS_ON_VIEW_INIT, FOCUS_ON_VIEW_INIT_DIRECTIVES, IS_TOGGLE, IS_TOGGLE_PROVIDER, LoadingListener, MainContainerWillyWonka, NavDetectionOompaLoompa, TOGGLE_SERVICE, TOGGLE_SERVICE_PROVIDER, ToggleServiceFactory, WrappedFormControl, collapse, commonStringsDefault, fade, fadeSlide, isToggleFactory, slide, AccordionOompaLoompa as ÇlrAccordionOompaLoompa, AccordionWillyWonka as ÇlrAccordionWillyWonka, ActionableOompaLoompa as ÇlrActionableOompaLoompa, ActiveOompaLoompa as ÇlrActiveOompaLoompa, ClrPopoverCloseButton as ÇlrClrPopoverCloseButton, ClrPopoverModuleNext as ÇlrClrPopoverModuleNext, ClrPopoverOpenCloseButton as ÇlrClrPopoverOpenCloseButton, DatagridCellRenderer as ÇlrDatagridCellRenderer, DatagridDetailRegisterer as ÇlrDatagridDetailRegisterer, DatagridHeaderRenderer as ÇlrDatagridHeaderRenderer, DatagridMainRenderer as ÇlrDatagridMainRenderer, DatagridRowRenderer as ÇlrDatagridRowRenderer, ClrDatagridSelectionCellDirective as ÇlrDatagridSelectionCellDirective, ClrDatagridVirtualScrollDirective as ÇlrDatagridVirtualScrollDirective, DatagridWillyWonka as ÇlrDatagridWillyWonka, ExpandableOompaLoompa as ÇlrExpandableOompaLoompa, StepperOompaLoompa as ÇlrStepperOompaLoompa, StepperWillyWonka as ÇlrStepperWillyWonka, TabsWillyWonka as ÇlrTabsWillyWonka, WrappedCell as ÇlrWrappedCell, WrappedColumn as ÇlrWrappedColumn, WrappedRow as ÇlrWrappedRow };
|
|
28406
29115
|
//# sourceMappingURL=clr-angular.mjs.map
|