@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/fesm2015/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';
|
|
@@ -275,6 +275,8 @@ const commonStringsDefault = {
|
|
|
275
275
|
close: 'Close',
|
|
276
276
|
show: 'Show',
|
|
277
277
|
hide: 'Hide',
|
|
278
|
+
apply: 'Apply',
|
|
279
|
+
cancel: 'Cancel',
|
|
278
280
|
expand: 'Expand',
|
|
279
281
|
collapse: 'Collapse',
|
|
280
282
|
more: 'More',
|
|
@@ -316,6 +318,7 @@ const commonStringsDefault = {
|
|
|
316
318
|
singleActionableAriaLabel: 'Single actionable header',
|
|
317
319
|
detailExpandableAriaLabel: 'Toggle more row content',
|
|
318
320
|
datagridFilterAriaLabel: '{COLUMN} filter',
|
|
321
|
+
datagridFilterLabel: '{COLUMN} filter',
|
|
319
322
|
datagridFilterDialogAriaLabel: 'Filter dialog',
|
|
320
323
|
columnSeparatorAriaLabel: 'Column resize handle',
|
|
321
324
|
columnSeparatorDescription: 'Use left or right key to resize the column',
|
|
@@ -4546,6 +4549,9 @@ class NgControlService {
|
|
|
4546
4549
|
this._controlChanges = new Subject();
|
|
4547
4550
|
this._helpers = new Subject();
|
|
4548
4551
|
}
|
|
4552
|
+
get control() {
|
|
4553
|
+
return this._control;
|
|
4554
|
+
}
|
|
4549
4555
|
get controlChanges() {
|
|
4550
4556
|
return this._controlChanges.asObservable();
|
|
4551
4557
|
}
|
|
@@ -4553,6 +4559,7 @@ class NgControlService {
|
|
|
4553
4559
|
return this._helpers.asObservable();
|
|
4554
4560
|
}
|
|
4555
4561
|
setControl(control) {
|
|
4562
|
+
this._control = control;
|
|
4556
4563
|
this._controlChanges.next(control);
|
|
4557
4564
|
}
|
|
4558
4565
|
setHelpers(state) {
|
|
@@ -4579,35 +4586,19 @@ var CONTROL_STATE;
|
|
|
4579
4586
|
})(CONTROL_STATE || (CONTROL_STATE = {}));
|
|
4580
4587
|
class IfControlStateService {
|
|
4581
4588
|
constructor(ngControlService) {
|
|
4582
|
-
this.
|
|
4583
|
-
|
|
4584
|
-
this._statusChanges = new BehaviorSubject(CONTROL_STATE.NONE);
|
|
4585
|
-
// Wait for the control to be available
|
|
4586
|
-
this.subscriptions.push(ngControlService.controlChanges.subscribe(control => {
|
|
4587
|
-
if (control) {
|
|
4588
|
-
this.control = control;
|
|
4589
|
-
// Subscribe to the status change events, only after touched
|
|
4590
|
-
// and emit the control
|
|
4591
|
-
this.subscriptions.push(this.control.statusChanges.subscribe(() => {
|
|
4592
|
-
this.triggerStatusChange();
|
|
4593
|
-
}));
|
|
4594
|
-
}
|
|
4595
|
-
}));
|
|
4596
|
-
}
|
|
4597
|
-
get statusChanges() {
|
|
4598
|
-
return this._statusChanges.asObservable();
|
|
4599
|
-
}
|
|
4600
|
-
ngOnDestroy() {
|
|
4601
|
-
this.subscriptions.forEach(subscription => subscription.unsubscribe());
|
|
4589
|
+
this.triggerStatusChangeSubject = new Subject();
|
|
4590
|
+
this.statusChanges = this.getStatusChanges(ngControlService).pipe(shareReplay(1));
|
|
4602
4591
|
}
|
|
4603
4592
|
triggerStatusChange() {
|
|
4604
|
-
|
|
4605
|
-
|
|
4593
|
+
this.triggerStatusChangeSubject.next();
|
|
4594
|
+
}
|
|
4595
|
+
getStatusChanges(ngControlService) {
|
|
4596
|
+
return ngControlService.controlChanges.pipe(switchMap(control => control ? merge(control.statusChanges, this.triggerStatusChangeSubject.pipe(map$1(() => control.status))) : EMPTY), map$1(controlStatus => {
|
|
4606
4597
|
// These status values are mutually exclusive, so a control
|
|
4607
4598
|
// cannot be both valid AND invalid or invalid AND disabled.
|
|
4608
|
-
const status = CONTROL_STATE[
|
|
4609
|
-
|
|
4610
|
-
}
|
|
4599
|
+
const status = CONTROL_STATE[controlStatus];
|
|
4600
|
+
return [CONTROL_STATE.VALID, CONTROL_STATE.INVALID].includes(status) ? status : CONTROL_STATE.NONE;
|
|
4601
|
+
}), startWith$1(CONTROL_STATE.NONE));
|
|
4611
4602
|
}
|
|
4612
4603
|
}
|
|
4613
4604
|
IfControlStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: IfControlStateService, deps: [{ token: NgControlService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -6531,6 +6522,9 @@ class ClrLabel {
|
|
|
6531
6522
|
return this.el.nativeElement && this.el.nativeElement.textContent;
|
|
6532
6523
|
}
|
|
6533
6524
|
ngOnInit() {
|
|
6525
|
+
// Prevent id attributes from being removed by the `undefined` host binding.
|
|
6526
|
+
// This happens when a `label` is used outside of a control container and other use cases.
|
|
6527
|
+
this.idAttr = this.idInput;
|
|
6534
6528
|
// Only add the clr-control-label if it is inside a control container
|
|
6535
6529
|
if (this.controlIdService || this.ngControlService) {
|
|
6536
6530
|
this.renderer.addClass(this.el.nativeElement, 'clr-control-label');
|
|
@@ -6742,10 +6736,16 @@ class ClrAbstractContainer {
|
|
|
6742
6736
|
return Boolean(this.controlHelperComponent);
|
|
6743
6737
|
}
|
|
6744
6738
|
get showValid() {
|
|
6745
|
-
return this.touched && this.state === CONTROL_STATE.VALID &&
|
|
6739
|
+
return this.touched && this.state === CONTROL_STATE.VALID && this.successMessagePresent;
|
|
6746
6740
|
}
|
|
6747
6741
|
get showInvalid() {
|
|
6748
|
-
return this.touched && this.state === CONTROL_STATE.INVALID &&
|
|
6742
|
+
return this.touched && this.state === CONTROL_STATE.INVALID && this.errorMessagePresent;
|
|
6743
|
+
}
|
|
6744
|
+
get successMessagePresent() {
|
|
6745
|
+
return !!this.controlSuccessComponent;
|
|
6746
|
+
}
|
|
6747
|
+
get errorMessagePresent() {
|
|
6748
|
+
return !!this.controlErrorComponent;
|
|
6749
6749
|
}
|
|
6750
6750
|
get touched() {
|
|
6751
6751
|
var _a;
|
|
@@ -9083,7 +9083,8 @@ class ClrCombobox extends WrappedFormControl {
|
|
|
9083
9083
|
return this.optionSelectionService.displayField;
|
|
9084
9084
|
}
|
|
9085
9085
|
get disabled() {
|
|
9086
|
-
|
|
9086
|
+
var _a;
|
|
9087
|
+
return (_a = this.control) === null || _a === void 0 ? void 0 : _a.disabled;
|
|
9087
9088
|
}
|
|
9088
9089
|
ngAfterContentInit() {
|
|
9089
9090
|
this.initializeSubscriptions();
|
|
@@ -9102,12 +9103,13 @@ class ClrCombobox extends WrappedFormControl {
|
|
|
9102
9103
|
this.el = this.textbox;
|
|
9103
9104
|
}
|
|
9104
9105
|
onKeyUp(event) {
|
|
9106
|
+
var _a;
|
|
9105
9107
|
// if BACKSPACE in multiselect mode, delete the last pill if text is empty
|
|
9106
9108
|
if (event.key === Keys.Backspace && this.multiSelect && this._searchText.length === 0) {
|
|
9107
9109
|
const multiModel = this.optionSelectionService.selectionModel.model;
|
|
9108
9110
|
if (multiModel && multiModel.length > 0) {
|
|
9109
9111
|
const lastItem = multiModel[multiModel.length - 1];
|
|
9110
|
-
this.control.control.markAsTouched();
|
|
9112
|
+
(_a = this.control) === null || _a === void 0 ? void 0 : _a.control.markAsTouched();
|
|
9111
9113
|
this.optionSelectionService.unselect(lastItem);
|
|
9112
9114
|
}
|
|
9113
9115
|
}
|
|
@@ -9128,12 +9130,12 @@ class ClrCombobox extends WrappedFormControl {
|
|
|
9128
9130
|
}
|
|
9129
9131
|
}
|
|
9130
9132
|
onBlur() {
|
|
9131
|
-
var _a, _b;
|
|
9132
|
-
this.onTouchedCallback();
|
|
9133
|
-
if (
|
|
9133
|
+
var _a, _b, _c, _d;
|
|
9134
|
+
(_a = this.onTouchedCallback) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
9135
|
+
if (((_b = this.control) === null || _b === void 0 ? void 0 : _b.control.updateOn) === 'change' && ((_c = this.control.control.errors) === null || _c === void 0 ? void 0 : _c.required)) {
|
|
9134
9136
|
this.updateControlValue();
|
|
9135
9137
|
}
|
|
9136
|
-
if (this.control.control.updateOn === 'blur') {
|
|
9138
|
+
if (((_d = this.control) === null || _d === void 0 ? void 0 : _d.control.updateOn) === 'blur') {
|
|
9137
9139
|
this.control.control.updateValueAndValidity();
|
|
9138
9140
|
}
|
|
9139
9141
|
this.focused = false;
|
|
@@ -9214,7 +9216,8 @@ class ClrCombobox extends WrappedFormControl {
|
|
|
9214
9216
|
}));
|
|
9215
9217
|
if (this.controlStateService) {
|
|
9216
9218
|
this.subscriptions.push(this.controlStateService.statusChanges.subscribe(invalid => {
|
|
9217
|
-
|
|
9219
|
+
var _a;
|
|
9220
|
+
this.invalid = ((_a = this.control) === null || _a === void 0 ? void 0 : _a.control.touched) && invalid === CONTROL_STATE.INVALID;
|
|
9218
9221
|
}));
|
|
9219
9222
|
}
|
|
9220
9223
|
}
|
|
@@ -9485,7 +9488,11 @@ ClrInputContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
|
|
|
9485
9488
|
<label *ngIf="!label && addGrid()"></label>
|
|
9486
9489
|
<div class="clr-control-container" [ngClass]="controlClass()">
|
|
9487
9490
|
<div class="clr-input-wrapper">
|
|
9488
|
-
<
|
|
9491
|
+
<div class="clr-input-group">
|
|
9492
|
+
<ng-content select="[clrInputPrefix]"></ng-content>
|
|
9493
|
+
<ng-content select="[clrInput]"></ng-content>
|
|
9494
|
+
<ng-content select="[clrInputSuffix]"></ng-content>
|
|
9495
|
+
</div>
|
|
9489
9496
|
<cds-icon
|
|
9490
9497
|
*ngIf="showInvalid"
|
|
9491
9498
|
class="clr-validate-icon"
|
|
@@ -9515,7 +9522,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
9515
9522
|
<label *ngIf="!label && addGrid()"></label>
|
|
9516
9523
|
<div class="clr-control-container" [ngClass]="controlClass()">
|
|
9517
9524
|
<div class="clr-input-wrapper">
|
|
9518
|
-
<
|
|
9525
|
+
<div class="clr-input-group">
|
|
9526
|
+
<ng-content select="[clrInputPrefix]"></ng-content>
|
|
9527
|
+
<ng-content select="[clrInput]"></ng-content>
|
|
9528
|
+
<ng-content select="[clrInputSuffix]"></ng-content>
|
|
9529
|
+
</div>
|
|
9519
9530
|
<cds-icon
|
|
9520
9531
|
*ngIf="showInvalid"
|
|
9521
9532
|
class="clr-validate-icon"
|
|
@@ -9555,6 +9566,15 @@ class ClrInput extends WrappedFormControl {
|
|
|
9555
9566
|
constructor(vcr, injector, control, renderer, el) {
|
|
9556
9567
|
super(vcr, ClrInputContainer, injector, control, renderer, el);
|
|
9557
9568
|
this.index = 1;
|
|
9569
|
+
if (this.el.nativeElement.getAttribute('type') === 'number') {
|
|
9570
|
+
console.warn(`Warning: Inputs of type "number" should utilize the number-input component for proper handling.\n
|
|
9571
|
+
Example usage:
|
|
9572
|
+
<clr-number-input-container>
|
|
9573
|
+
<label>Number Input</label>
|
|
9574
|
+
<input clrNumberInput type="number"/>
|
|
9575
|
+
</clr-number-input-container>
|
|
9576
|
+
`);
|
|
9577
|
+
}
|
|
9558
9578
|
}
|
|
9559
9579
|
}
|
|
9560
9580
|
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 });
|
|
@@ -10132,6 +10152,14 @@ class CalendarViewModel {
|
|
|
10132
10152
|
this.setFocusableFlag(day, true);
|
|
10133
10153
|
this.focusableDay = day;
|
|
10134
10154
|
}
|
|
10155
|
+
/**
|
|
10156
|
+
* Updates the selected day in the calendar
|
|
10157
|
+
*/
|
|
10158
|
+
updateSelectedDay(day) {
|
|
10159
|
+
this.setSelectedDay(this.selectedDay, false);
|
|
10160
|
+
this.selectedDay = day;
|
|
10161
|
+
this.setSelectedDay(day, true);
|
|
10162
|
+
}
|
|
10135
10163
|
/**
|
|
10136
10164
|
* Generates a 6x7 matrix of DayViewModel based on the Calendar.
|
|
10137
10165
|
* The 6x7 matrix is structured according to the first day of the week.
|
|
@@ -10221,9 +10249,7 @@ class CalendarViewModel {
|
|
|
10221
10249
|
* Initialize the selected day if the day is in the calendar.
|
|
10222
10250
|
*/
|
|
10223
10251
|
initializeSelectedDay() {
|
|
10224
|
-
|
|
10225
|
-
this.currMonthDayViews[this.selectedDay.date - 1].isSelected = true;
|
|
10226
|
-
}
|
|
10252
|
+
this.setSelectedDay(this.selectedDay, true);
|
|
10227
10253
|
}
|
|
10228
10254
|
/**
|
|
10229
10255
|
* Initializes the focusable day if the day is in the calendar. If focusable day is not set, then
|
|
@@ -10252,6 +10278,11 @@ class CalendarViewModel {
|
|
|
10252
10278
|
this.currMonthDayViews[day.date - 1].isFocusable = flag;
|
|
10253
10279
|
}
|
|
10254
10280
|
}
|
|
10281
|
+
setSelectedDay(day, flag) {
|
|
10282
|
+
if (day && this.isDayInCalendarView(day)) {
|
|
10283
|
+
this.currMonthDayViews[(day === null || day === void 0 ? void 0 : day.date) - 1].isSelected = flag;
|
|
10284
|
+
}
|
|
10285
|
+
}
|
|
10255
10286
|
}
|
|
10256
10287
|
|
|
10257
10288
|
/*
|
|
@@ -10434,6 +10465,7 @@ class CalendarModel {
|
|
|
10434
10465
|
*/
|
|
10435
10466
|
class DateNavigationService {
|
|
10436
10467
|
constructor() {
|
|
10468
|
+
this.hasActionButtons = false;
|
|
10437
10469
|
this._todaysFullDate = new Date();
|
|
10438
10470
|
this._selectedDayChange = new Subject();
|
|
10439
10471
|
this._displayedCalendarChange = new Subject();
|
|
@@ -10469,11 +10501,12 @@ class DateNavigationService {
|
|
|
10469
10501
|
}
|
|
10470
10502
|
/**
|
|
10471
10503
|
* Notifies that the selected day has changed so that the date can be emitted to the user.
|
|
10472
|
-
* Note: Only to be called from day.ts
|
|
10473
10504
|
*/
|
|
10474
|
-
notifySelectedDayChanged(dayModel) {
|
|
10505
|
+
notifySelectedDayChanged(dayModel, { emitEvent } = { emitEvent: true }) {
|
|
10475
10506
|
this.selectedDay = dayModel;
|
|
10476
|
-
|
|
10507
|
+
if (emitEvent) {
|
|
10508
|
+
this._selectedDayChange.next(dayModel);
|
|
10509
|
+
}
|
|
10477
10510
|
}
|
|
10478
10511
|
/**
|
|
10479
10512
|
* Initializes the calendar based on the selected day.
|
|
@@ -10525,6 +10558,9 @@ class DateNavigationService {
|
|
|
10525
10558
|
}
|
|
10526
10559
|
this._focusOnCalendarChange.next();
|
|
10527
10560
|
}
|
|
10561
|
+
resetSelectedDay() {
|
|
10562
|
+
this.selectedDay = this.persistedDate;
|
|
10563
|
+
}
|
|
10528
10564
|
// not a setter because i want this to remain private
|
|
10529
10565
|
setDisplayedCalendar(value) {
|
|
10530
10566
|
if (!this._displayedCalendar.isEqual(value)) {
|
|
@@ -10800,11 +10836,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
10800
10836
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
10801
10837
|
*/
|
|
10802
10838
|
class ClrDay {
|
|
10803
|
-
constructor(_dateNavigationService,
|
|
10839
|
+
constructor(_dateNavigationService, commonStrings) {
|
|
10804
10840
|
this._dateNavigationService = _dateNavigationService;
|
|
10805
|
-
this._toggleService = _toggleService;
|
|
10806
|
-
this.dateFormControlService = dateFormControlService;
|
|
10807
10841
|
this.commonStrings = commonStrings;
|
|
10842
|
+
this.onSelectDay = new EventEmitter();
|
|
10808
10843
|
}
|
|
10809
10844
|
/**
|
|
10810
10845
|
* DayViewModel input which is used to build the Day View.
|
|
@@ -10836,13 +10871,11 @@ class ClrDay {
|
|
|
10836
10871
|
return;
|
|
10837
10872
|
}
|
|
10838
10873
|
const day = this.dayView.dayModel;
|
|
10839
|
-
this.
|
|
10840
|
-
this.dateFormControlService.markAsDirty();
|
|
10841
|
-
this._toggleService.open = false;
|
|
10874
|
+
this.onSelectDay.emit(day);
|
|
10842
10875
|
}
|
|
10843
10876
|
}
|
|
10844
|
-
ClrDay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDay, deps: [{ token: DateNavigationService }, { token:
|
|
10845
|
-
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: `
|
|
10877
|
+
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 });
|
|
10878
|
+
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: `
|
|
10846
10879
|
<button
|
|
10847
10880
|
class="day-btn"
|
|
10848
10881
|
type="button"
|
|
@@ -10884,7 +10917,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
10884
10917
|
`,
|
|
10885
10918
|
host: { '[class.day]': 'true' },
|
|
10886
10919
|
}]
|
|
10887
|
-
}], ctorParameters: function () { return [{ type: DateNavigationService }, { type:
|
|
10920
|
+
}], ctorParameters: function () { return [{ type: DateNavigationService }, { type: ClrCommonStringsService }]; }, propDecorators: { onSelectDay: [{
|
|
10921
|
+
type: Output,
|
|
10922
|
+
args: ['selectDay']
|
|
10923
|
+
}], dayView: [{
|
|
10888
10924
|
type: Input,
|
|
10889
10925
|
args: ['clrDayView']
|
|
10890
10926
|
}] } });
|
|
@@ -10896,12 +10932,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
10896
10932
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
10897
10933
|
*/
|
|
10898
10934
|
class ClrCalendar {
|
|
10899
|
-
constructor(_localeHelperService, _dateNavigationService, _datepickerFocusService, _dateIOService, _elRef) {
|
|
10935
|
+
constructor(_localeHelperService, _dateNavigationService, _datepickerFocusService, _dateIOService, _elRef, _dateFormControlService, _toggleService) {
|
|
10900
10936
|
this._localeHelperService = _localeHelperService;
|
|
10901
10937
|
this._dateNavigationService = _dateNavigationService;
|
|
10902
10938
|
this._datepickerFocusService = _datepickerFocusService;
|
|
10903
10939
|
this._dateIOService = _dateIOService;
|
|
10904
10940
|
this._elRef = _elRef;
|
|
10941
|
+
this._dateFormControlService = _dateFormControlService;
|
|
10942
|
+
this._toggleService = _toggleService;
|
|
10905
10943
|
this._subs = [];
|
|
10906
10944
|
this.generateCalendarView();
|
|
10907
10945
|
this.initializeSubscriptions();
|
|
@@ -10963,6 +11001,15 @@ class ClrCalendar {
|
|
|
10963
11001
|
}
|
|
10964
11002
|
}
|
|
10965
11003
|
}
|
|
11004
|
+
setSelectedDay(day) {
|
|
11005
|
+
const hasActionButtons = this._dateNavigationService.hasActionButtons;
|
|
11006
|
+
this.calendarViewModel.updateSelectedDay(day);
|
|
11007
|
+
this._dateNavigationService.notifySelectedDayChanged(day, { emitEvent: !hasActionButtons });
|
|
11008
|
+
if (!hasActionButtons) {
|
|
11009
|
+
this._dateFormControlService.markAsDirty();
|
|
11010
|
+
this._toggleService.open = false;
|
|
11011
|
+
}
|
|
11012
|
+
}
|
|
10966
11013
|
/**
|
|
10967
11014
|
* Initialize subscriptions to:
|
|
10968
11015
|
* 1. update the calendar view model.
|
|
@@ -10987,12 +11034,12 @@ class ClrCalendar {
|
|
|
10987
11034
|
this.calendarViewModel = new CalendarViewModel(this.calendar, this.selectedDay, this.focusedDay, this.today, this._localeHelperService.firstDayOfWeek, this._dateIOService.disabledDates);
|
|
10988
11035
|
}
|
|
10989
11036
|
}
|
|
10990
|
-
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 });
|
|
10991
|
-
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"] }] });
|
|
11037
|
+
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 });
|
|
11038
|
+
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"] }] });
|
|
10992
11039
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrCalendar, decorators: [{
|
|
10993
11040
|
type: Component,
|
|
10994
|
-
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" }]
|
|
10995
|
-
}], ctorParameters: function () { return [{ type: LocaleHelperService }, { type: DateNavigationService }, { type: DatepickerFocusService }, { type: DateIOService }, { type: i0.ElementRef }]; }, propDecorators: { onKeyDown: [{
|
|
11041
|
+
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" }]
|
|
11042
|
+
}], ctorParameters: function () { return [{ type: LocaleHelperService }, { type: DateNavigationService }, { type: DatepickerFocusService }, { type: DateIOService }, { type: i0.ElementRef }, { type: DateFormControlService }, { type: ClrPopoverToggleService }]; }, propDecorators: { onKeyDown: [{
|
|
10996
11043
|
type: HostListener,
|
|
10997
11044
|
args: ['keydown', ['$event']]
|
|
10998
11045
|
}] } });
|
|
@@ -11571,6 +11618,50 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
11571
11618
|
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" }]
|
|
11572
11619
|
}], ctorParameters: function () { return [{ type: ViewManagerService }, { type: DateNavigationService }, { type: LocaleHelperService }, { type: ClrCommonStringsService }]; } });
|
|
11573
11620
|
|
|
11621
|
+
/*
|
|
11622
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
11623
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
11624
|
+
* This software is released under MIT license.
|
|
11625
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
11626
|
+
*/
|
|
11627
|
+
class ClrDatepickerActions {
|
|
11628
|
+
constructor(commonStrings, toggleService, dateNavigationService, dateFormControlService) {
|
|
11629
|
+
this.commonStrings = commonStrings;
|
|
11630
|
+
this.toggleService = toggleService;
|
|
11631
|
+
this.dateNavigationService = dateNavigationService;
|
|
11632
|
+
this.dateFormControlService = dateFormControlService;
|
|
11633
|
+
}
|
|
11634
|
+
apply() {
|
|
11635
|
+
if (this.dateNavigationService.selectedDay) {
|
|
11636
|
+
this.dateNavigationService.notifySelectedDayChanged(this.dateNavigationService.selectedDay);
|
|
11637
|
+
this.dateFormControlService.markAsDirty();
|
|
11638
|
+
}
|
|
11639
|
+
this.toggleService.open = false;
|
|
11640
|
+
}
|
|
11641
|
+
cancel() {
|
|
11642
|
+
this.dateNavigationService.resetSelectedDay();
|
|
11643
|
+
this.toggleService.open = false;
|
|
11644
|
+
}
|
|
11645
|
+
}
|
|
11646
|
+
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 });
|
|
11647
|
+
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: `
|
|
11648
|
+
<button class="btn btn-outline" (click)="cancel()">{{ commonStrings.keys.cancel }}</button>
|
|
11649
|
+
<button class="btn btn-primary" (click)="apply()">{{ commonStrings.keys.apply }}</button>
|
|
11650
|
+
`, isInline: true });
|
|
11651
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatepickerActions, decorators: [{
|
|
11652
|
+
type: Component,
|
|
11653
|
+
args: [{
|
|
11654
|
+
selector: 'clr-datepicker-actions',
|
|
11655
|
+
template: `
|
|
11656
|
+
<button class="btn btn-outline" (click)="cancel()">{{ commonStrings.keys.cancel }}</button>
|
|
11657
|
+
<button class="btn btn-primary" (click)="apply()">{{ commonStrings.keys.apply }}</button>
|
|
11658
|
+
`,
|
|
11659
|
+
host: {
|
|
11660
|
+
'[class.datepicker-actions]': 'true',
|
|
11661
|
+
},
|
|
11662
|
+
}]
|
|
11663
|
+
}], ctorParameters: function () { return [{ type: ClrCommonStringsService }, { type: ClrPopoverToggleService }, { type: DateNavigationService }, { type: DateFormControlService }]; } });
|
|
11664
|
+
|
|
11574
11665
|
/*
|
|
11575
11666
|
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
11576
11667
|
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
@@ -11578,9 +11669,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
11578
11669
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
11579
11670
|
*/
|
|
11580
11671
|
class ClrDatepickerViewManager {
|
|
11581
|
-
constructor(commonStrings, viewManagerService) {
|
|
11672
|
+
constructor(commonStrings, viewManagerService, dateNavigationService) {
|
|
11582
11673
|
this.commonStrings = commonStrings;
|
|
11583
11674
|
this.viewManagerService = viewManagerService;
|
|
11675
|
+
this.dateNavigationService = dateNavigationService;
|
|
11584
11676
|
}
|
|
11585
11677
|
/**
|
|
11586
11678
|
* Returns if the current view is the monthpicker.
|
|
@@ -11600,18 +11692,22 @@ class ClrDatepickerViewManager {
|
|
|
11600
11692
|
get isDayView() {
|
|
11601
11693
|
return this.viewManagerService.isDayView;
|
|
11602
11694
|
}
|
|
11695
|
+
get hasActionButtons() {
|
|
11696
|
+
return this.dateNavigationService.hasActionButtons;
|
|
11697
|
+
}
|
|
11603
11698
|
}
|
|
11604
|
-
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 });
|
|
11605
|
-
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" }] });
|
|
11699
|
+
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 });
|
|
11700
|
+
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" }] });
|
|
11606
11701
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatepickerViewManager, decorators: [{
|
|
11607
11702
|
type: Component,
|
|
11608
11703
|
args: [{ selector: 'clr-datepicker-view-manager', providers: [DatepickerFocusService], host: {
|
|
11609
11704
|
'[class.datepicker]': 'true',
|
|
11705
|
+
'[class.has-action-buttons]': 'hasActionButtons',
|
|
11610
11706
|
'[attr.aria-modal]': 'true',
|
|
11611
11707
|
'[attr.aria-label]': 'commonStrings.keys.datepickerDialogLabel',
|
|
11612
11708
|
role: 'dialog',
|
|
11613
|
-
}, 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" }]
|
|
11614
|
-
}], ctorParameters: function () { return [{ type: ClrCommonStringsService }, { type: ViewManagerService }]; } });
|
|
11709
|
+
}, 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" }]
|
|
11710
|
+
}], ctorParameters: function () { return [{ type: ClrCommonStringsService }, { type: ViewManagerService }, { type: DateNavigationService }]; } });
|
|
11615
11711
|
|
|
11616
11712
|
/*
|
|
11617
11713
|
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
@@ -11642,6 +11738,9 @@ class ClrDateContainer extends ClrAbstractContainer {
|
|
|
11642
11738
|
dateFormControlService.markAsTouched();
|
|
11643
11739
|
}));
|
|
11644
11740
|
}
|
|
11741
|
+
set showActionButtons(flag) {
|
|
11742
|
+
this.dateNavigationService.hasActionButtons = flag;
|
|
11743
|
+
}
|
|
11645
11744
|
set clrPosition(position) {
|
|
11646
11745
|
if (position && ClrPopoverPositions[position]) {
|
|
11647
11746
|
this.viewManagerService.position = ClrPopoverPositions[position];
|
|
@@ -11676,6 +11775,7 @@ class ClrDateContainer extends ClrAbstractContainer {
|
|
|
11676
11775
|
}
|
|
11677
11776
|
else {
|
|
11678
11777
|
this.toggleButton.nativeElement.focus();
|
|
11778
|
+
this.dateNavigationService.resetSelectedDay();
|
|
11679
11779
|
}
|
|
11680
11780
|
}));
|
|
11681
11781
|
this.subscriptions.push(this.listenForDateChanges());
|
|
@@ -11716,7 +11816,7 @@ class ClrDateContainer extends ClrAbstractContainer {
|
|
|
11716
11816
|
}
|
|
11717
11817
|
}
|
|
11718
11818
|
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 });
|
|
11719
|
-
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: [
|
|
11819
|
+
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: [
|
|
11720
11820
|
ControlIdService,
|
|
11721
11821
|
LocaleHelperService,
|
|
11722
11822
|
ControlClassService,
|
|
@@ -11841,7 +11941,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
11841
11941
|
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: [{
|
|
11842
11942
|
type: Optional
|
|
11843
11943
|
}] }, { type: NgControlService }, { type: IfControlStateService }];
|
|
11844
|
-
}, propDecorators: {
|
|
11944
|
+
}, propDecorators: { showActionButtons: [{
|
|
11945
|
+
type: Input,
|
|
11946
|
+
args: ['showActionButtons']
|
|
11947
|
+
}], clrPosition: [{
|
|
11845
11948
|
type: Input,
|
|
11846
11949
|
args: ['clrPosition']
|
|
11847
11950
|
}], actionButton: [{
|
|
@@ -11989,7 +12092,7 @@ class ClrDateInput extends WrappedFormControl {
|
|
|
11989
12092
|
this.previousDateChange = date;
|
|
11990
12093
|
}
|
|
11991
12094
|
if (this.dateNavigationService) {
|
|
11992
|
-
this.dateNavigationService.selectedDay = date
|
|
12095
|
+
this.dateNavigationService.persistedDate = this.dateNavigationService.selectedDay = date
|
|
11993
12096
|
? new DayModel(date.getFullYear(), date.getMonth(), date.getDate())
|
|
11994
12097
|
: null;
|
|
11995
12098
|
}
|
|
@@ -12038,7 +12141,7 @@ class ClrDateInput extends WrappedFormControl {
|
|
|
12038
12141
|
}
|
|
12039
12142
|
listenForControlValueChanges() {
|
|
12040
12143
|
return of(this.datepickerHasFormControl())
|
|
12041
|
-
.pipe(filter(hasControl => hasControl), switchMap(() => this.control.valueChanges),
|
|
12144
|
+
.pipe(filter(hasControl => hasControl), switchMap$1(() => this.control.valueChanges),
|
|
12042
12145
|
// only update date value if not being set by user
|
|
12043
12146
|
filter(() => !this.datepickerFocusService.elementIsFocused(this.el.nativeElement)))
|
|
12044
12147
|
.subscribe((value) => this.updateDate(this.dateIOService.getDateValueFromDateString(value)));
|
|
@@ -12184,6 +12287,7 @@ const CLR_DATEPICKER_DIRECTIVES = [
|
|
|
12184
12287
|
ClrYearpicker,
|
|
12185
12288
|
ClrDaypicker,
|
|
12186
12289
|
ClrCalendar,
|
|
12290
|
+
ClrDatepickerActions,
|
|
12187
12291
|
];
|
|
12188
12292
|
class ClrDatepickerModule {
|
|
12189
12293
|
constructor() {
|
|
@@ -12199,7 +12303,8 @@ ClrDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ver
|
|
|
12199
12303
|
ClrMonthpicker,
|
|
12200
12304
|
ClrYearpicker,
|
|
12201
12305
|
ClrDaypicker,
|
|
12202
|
-
ClrCalendar
|
|
12306
|
+
ClrCalendar,
|
|
12307
|
+
ClrDatepickerActions], imports: [CommonModule,
|
|
12203
12308
|
CdkTrapFocusModule,
|
|
12204
12309
|
ClrHostWrappingModule,
|
|
12205
12310
|
ClrConditionalModule,
|
|
@@ -12213,7 +12318,8 @@ ClrDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", ver
|
|
|
12213
12318
|
ClrMonthpicker,
|
|
12214
12319
|
ClrYearpicker,
|
|
12215
12320
|
ClrDaypicker,
|
|
12216
|
-
ClrCalendar
|
|
12321
|
+
ClrCalendar,
|
|
12322
|
+
ClrDatepickerActions] });
|
|
12217
12323
|
ClrDatepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatepickerModule, imports: [CommonModule,
|
|
12218
12324
|
CdkTrapFocusModule,
|
|
12219
12325
|
ClrHostWrappingModule,
|
|
@@ -12238,6 +12344,258 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
12238
12344
|
}]
|
|
12239
12345
|
}], ctorParameters: function () { return []; } });
|
|
12240
12346
|
|
|
12347
|
+
/*
|
|
12348
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
12349
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
12350
|
+
* This software is released under MIT license.
|
|
12351
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
12352
|
+
*/
|
|
12353
|
+
function buildFileList(files) {
|
|
12354
|
+
const dataTransfer = new DataTransfer();
|
|
12355
|
+
for (const file of files) {
|
|
12356
|
+
dataTransfer.items.add(file);
|
|
12357
|
+
}
|
|
12358
|
+
return dataTransfer.files;
|
|
12359
|
+
}
|
|
12360
|
+
function selectFiles(fileInputElement, files) {
|
|
12361
|
+
fileInputElement.files = files instanceof FileList ? files : buildFileList(files);
|
|
12362
|
+
fileInputElement.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));
|
|
12363
|
+
}
|
|
12364
|
+
function clearFiles(fileInputElement) {
|
|
12365
|
+
fileInputElement.value = '';
|
|
12366
|
+
fileInputElement.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));
|
|
12367
|
+
}
|
|
12368
|
+
|
|
12369
|
+
/*
|
|
12370
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
12371
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
12372
|
+
* This software is released under MIT license.
|
|
12373
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
12374
|
+
*/
|
|
12375
|
+
const CLR_FILE_MESSAGES_TEMPLATE_CONTEXT = new InjectionToken('ClrFileMessagesTemplateContext');
|
|
12376
|
+
class ClrFileInfo {
|
|
12377
|
+
}
|
|
12378
|
+
ClrFileInfo.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInfo, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12379
|
+
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 });
|
|
12380
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInfo, decorators: [{
|
|
12381
|
+
type: Component,
|
|
12382
|
+
args: [{
|
|
12383
|
+
selector: 'clr-file-info',
|
|
12384
|
+
template: `<ng-content></ng-content>`,
|
|
12385
|
+
host: {
|
|
12386
|
+
'[class.clr-subtext]': 'true',
|
|
12387
|
+
},
|
|
12388
|
+
}]
|
|
12389
|
+
}] });
|
|
12390
|
+
class ClrFileSuccess {
|
|
12391
|
+
constructor() {
|
|
12392
|
+
this.context = inject(CLR_FILE_MESSAGES_TEMPLATE_CONTEXT);
|
|
12393
|
+
}
|
|
12394
|
+
}
|
|
12395
|
+
ClrFileSuccess.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileSuccess, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12396
|
+
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"] }] });
|
|
12397
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileSuccess, decorators: [{
|
|
12398
|
+
type: Component,
|
|
12399
|
+
args: [{
|
|
12400
|
+
selector: 'clr-file-success',
|
|
12401
|
+
// We check for success here so that consumers don't have to.
|
|
12402
|
+
template: `<ng-content *ngIf="context.success"></ng-content>`,
|
|
12403
|
+
host: {
|
|
12404
|
+
'[style.display]': 'context.success ? "inline-block" : "none"',
|
|
12405
|
+
'[class.clr-subtext]': 'true',
|
|
12406
|
+
'[class.success]': 'true',
|
|
12407
|
+
},
|
|
12408
|
+
}]
|
|
12409
|
+
}] });
|
|
12410
|
+
class ClrFileError {
|
|
12411
|
+
}
|
|
12412
|
+
ClrFileError.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileError, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12413
|
+
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 });
|
|
12414
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileError, decorators: [{
|
|
12415
|
+
type: Component,
|
|
12416
|
+
args: [{
|
|
12417
|
+
selector: 'clr-file-error',
|
|
12418
|
+
// The host should have an `*ngIf` or `@if` that checks for the relevant error.
|
|
12419
|
+
template: `<ng-content></ng-content>`,
|
|
12420
|
+
host: {
|
|
12421
|
+
'[class.clr-subtext]': 'true',
|
|
12422
|
+
'[class.error]': 'true',
|
|
12423
|
+
},
|
|
12424
|
+
}]
|
|
12425
|
+
}] });
|
|
12426
|
+
|
|
12427
|
+
/*
|
|
12428
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
12429
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
12430
|
+
* This software is released under MIT license.
|
|
12431
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
12432
|
+
*/
|
|
12433
|
+
class ClrFileMessagesTemplate {
|
|
12434
|
+
constructor() {
|
|
12435
|
+
this.templateRef = inject(TemplateRef);
|
|
12436
|
+
}
|
|
12437
|
+
static ngTemplateContextGuard(directive, context) {
|
|
12438
|
+
return true;
|
|
12439
|
+
}
|
|
12440
|
+
}
|
|
12441
|
+
ClrFileMessagesTemplate.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileMessagesTemplate, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
12442
|
+
ClrFileMessagesTemplate.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrFileMessagesTemplate, selector: "ng-template[clr-file-messages]", ngImport: i0 });
|
|
12443
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileMessagesTemplate, decorators: [{
|
|
12444
|
+
type: Directive,
|
|
12445
|
+
args: [{
|
|
12446
|
+
selector: 'ng-template[clr-file-messages]',
|
|
12447
|
+
}]
|
|
12448
|
+
}] });
|
|
12449
|
+
|
|
12450
|
+
/*
|
|
12451
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
12452
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
12453
|
+
* This software is released under MIT license.
|
|
12454
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
12455
|
+
*/
|
|
12456
|
+
class ClrFileList {
|
|
12457
|
+
constructor() {
|
|
12458
|
+
this.injector = inject(Injector);
|
|
12459
|
+
this.commonStrings = inject(ClrCommonStringsService);
|
|
12460
|
+
this.ngControlService = inject(NgControlService, { optional: true });
|
|
12461
|
+
this.fileInputContainer = inject(ClrFileInputContainer, { optional: true });
|
|
12462
|
+
if (!this.ngControlService || !this.fileInputContainer) {
|
|
12463
|
+
throw new Error('The clr-file-list component can only be used within a clr-file-input-container.');
|
|
12464
|
+
}
|
|
12465
|
+
}
|
|
12466
|
+
get files() {
|
|
12467
|
+
if (!this.fileInputContainer.fileInput) {
|
|
12468
|
+
return [];
|
|
12469
|
+
}
|
|
12470
|
+
const fileInputElement = this.fileInputContainer.fileInput.elementRef.nativeElement;
|
|
12471
|
+
return Array.from(fileInputElement.files).sort((a, b) => a.name.localeCompare(b.name));
|
|
12472
|
+
}
|
|
12473
|
+
getClearFileLabel(filename) {
|
|
12474
|
+
return this.commonStrings.parse(this.commonStrings.keys.clearFile, {
|
|
12475
|
+
FILE: filename,
|
|
12476
|
+
});
|
|
12477
|
+
}
|
|
12478
|
+
clearFile(fileToRemove) {
|
|
12479
|
+
if (!this.fileInputContainer.fileInput) {
|
|
12480
|
+
return;
|
|
12481
|
+
}
|
|
12482
|
+
const fileInputElement = this.fileInputContainer.fileInput.elementRef.nativeElement;
|
|
12483
|
+
const files = Array.from(fileInputElement.files);
|
|
12484
|
+
const newFiles = files.filter(file => file !== fileToRemove);
|
|
12485
|
+
selectFiles(fileInputElement, newFiles);
|
|
12486
|
+
this.fileInputContainer.focusBrowseButton();
|
|
12487
|
+
}
|
|
12488
|
+
createFileMessagesTemplateContext(file) {
|
|
12489
|
+
var _a, _b, _c;
|
|
12490
|
+
const fileInputErrors = this.ngControlService.control.errors || {};
|
|
12491
|
+
const errors = {
|
|
12492
|
+
accept: (_a = fileInputErrors.accept) === null || _a === void 0 ? void 0 : _a.find(error => error.name === file.name),
|
|
12493
|
+
minFileSize: (_b = fileInputErrors.minFileSize) === null || _b === void 0 ? void 0 : _b.find(error => error.name === file.name),
|
|
12494
|
+
maxFileSize: (_c = fileInputErrors.maxFileSize) === null || _c === void 0 ? void 0 : _c.find(error => error.name === file.name),
|
|
12495
|
+
};
|
|
12496
|
+
const success = Object.values(errors).every(error => !error);
|
|
12497
|
+
return { $implicit: file, success, errors };
|
|
12498
|
+
}
|
|
12499
|
+
createFileMessagesTemplateInjector(fileMessagesTemplateContext) {
|
|
12500
|
+
return Injector.create({
|
|
12501
|
+
parent: this.injector,
|
|
12502
|
+
providers: [{ provide: CLR_FILE_MESSAGES_TEMPLATE_CONTEXT, useValue: fileMessagesTemplateContext }],
|
|
12503
|
+
});
|
|
12504
|
+
}
|
|
12505
|
+
}
|
|
12506
|
+
ClrFileList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileList, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12507
|
+
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: `
|
|
12508
|
+
<ng-container *ngFor="let file of files">
|
|
12509
|
+
<div
|
|
12510
|
+
*ngIf="createFileMessagesTemplateContext(file); let fileMessagesTemplateContext"
|
|
12511
|
+
role="listitem"
|
|
12512
|
+
class="clr-file-list-item"
|
|
12513
|
+
[ngClass]="{
|
|
12514
|
+
'clr-error': !fileMessagesTemplateContext.success,
|
|
12515
|
+
'clr-success': fileMessagesTemplateContext.success
|
|
12516
|
+
}"
|
|
12517
|
+
>
|
|
12518
|
+
<div class="clr-file-label-and-status-icon">
|
|
12519
|
+
<span class="label clr-file-label">
|
|
12520
|
+
{{ file.name }}
|
|
12521
|
+
<button
|
|
12522
|
+
class="btn btn-sm btn-link-neutral btn-icon clr-file-clear-button"
|
|
12523
|
+
[attr.aria-label]="getClearFileLabel(file.name)"
|
|
12524
|
+
(click)="clearFile(file)"
|
|
12525
|
+
>
|
|
12526
|
+
<cds-icon shape="times"></cds-icon>
|
|
12527
|
+
</button>
|
|
12528
|
+
</span>
|
|
12529
|
+
|
|
12530
|
+
<cds-icon
|
|
12531
|
+
class="clr-validate-icon"
|
|
12532
|
+
[attr.shape]="fileMessagesTemplateContext.success ? 'check-circle' : 'exclamation-circle'"
|
|
12533
|
+
[attr.status]="fileMessagesTemplateContext.success ? 'success' : 'danger'"
|
|
12534
|
+
aria-hidden="true"
|
|
12535
|
+
></cds-icon>
|
|
12536
|
+
</div>
|
|
12537
|
+
|
|
12538
|
+
<ng-container
|
|
12539
|
+
[ngTemplateOutlet]="fileMessagesTemplate.templateRef"
|
|
12540
|
+
[ngTemplateOutletContext]="fileMessagesTemplateContext"
|
|
12541
|
+
[ngTemplateOutletInjector]="createFileMessagesTemplateInjector(fileMessagesTemplateContext)"
|
|
12542
|
+
></ng-container>
|
|
12543
|
+
</div>
|
|
12544
|
+
</ng-container>
|
|
12545
|
+
`, 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" }] });
|
|
12546
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileList, decorators: [{
|
|
12547
|
+
type: Component,
|
|
12548
|
+
args: [{
|
|
12549
|
+
selector: 'clr-file-list',
|
|
12550
|
+
template: `
|
|
12551
|
+
<ng-container *ngFor="let file of files">
|
|
12552
|
+
<div
|
|
12553
|
+
*ngIf="createFileMessagesTemplateContext(file); let fileMessagesTemplateContext"
|
|
12554
|
+
role="listitem"
|
|
12555
|
+
class="clr-file-list-item"
|
|
12556
|
+
[ngClass]="{
|
|
12557
|
+
'clr-error': !fileMessagesTemplateContext.success,
|
|
12558
|
+
'clr-success': fileMessagesTemplateContext.success
|
|
12559
|
+
}"
|
|
12560
|
+
>
|
|
12561
|
+
<div class="clr-file-label-and-status-icon">
|
|
12562
|
+
<span class="label clr-file-label">
|
|
12563
|
+
{{ file.name }}
|
|
12564
|
+
<button
|
|
12565
|
+
class="btn btn-sm btn-link-neutral btn-icon clr-file-clear-button"
|
|
12566
|
+
[attr.aria-label]="getClearFileLabel(file.name)"
|
|
12567
|
+
(click)="clearFile(file)"
|
|
12568
|
+
>
|
|
12569
|
+
<cds-icon shape="times"></cds-icon>
|
|
12570
|
+
</button>
|
|
12571
|
+
</span>
|
|
12572
|
+
|
|
12573
|
+
<cds-icon
|
|
12574
|
+
class="clr-validate-icon"
|
|
12575
|
+
[attr.shape]="fileMessagesTemplateContext.success ? 'check-circle' : 'exclamation-circle'"
|
|
12576
|
+
[attr.status]="fileMessagesTemplateContext.success ? 'success' : 'danger'"
|
|
12577
|
+
aria-hidden="true"
|
|
12578
|
+
></cds-icon>
|
|
12579
|
+
</div>
|
|
12580
|
+
|
|
12581
|
+
<ng-container
|
|
12582
|
+
[ngTemplateOutlet]="fileMessagesTemplate.templateRef"
|
|
12583
|
+
[ngTemplateOutletContext]="fileMessagesTemplateContext"
|
|
12584
|
+
[ngTemplateOutletInjector]="createFileMessagesTemplateInjector(fileMessagesTemplateContext)"
|
|
12585
|
+
></ng-container>
|
|
12586
|
+
</div>
|
|
12587
|
+
</ng-container>
|
|
12588
|
+
`,
|
|
12589
|
+
host: {
|
|
12590
|
+
'[attr.role]': '"list"',
|
|
12591
|
+
'[class.clr-file-list]': 'true',
|
|
12592
|
+
},
|
|
12593
|
+
}]
|
|
12594
|
+
}], ctorParameters: function () { return []; }, propDecorators: { fileMessagesTemplate: [{
|
|
12595
|
+
type: ContentChild,
|
|
12596
|
+
args: [ClrFileMessagesTemplate]
|
|
12597
|
+
}] } });
|
|
12598
|
+
|
|
12241
12599
|
/*
|
|
12242
12600
|
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
12243
12601
|
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
@@ -12249,29 +12607,80 @@ class ClrFileInputContainer extends ClrAbstractContainer {
|
|
|
12249
12607
|
super(...arguments);
|
|
12250
12608
|
this.commonStrings = inject(ClrCommonStringsService);
|
|
12251
12609
|
}
|
|
12610
|
+
get accept() {
|
|
12611
|
+
return this.fileInput.elementRef.nativeElement.accept;
|
|
12612
|
+
}
|
|
12613
|
+
get multiple() {
|
|
12614
|
+
return this.fileInput.elementRef.nativeElement.multiple;
|
|
12615
|
+
}
|
|
12252
12616
|
get disabled() {
|
|
12253
12617
|
return this.fileInput.elementRef.nativeElement.disabled;
|
|
12254
12618
|
}
|
|
12619
|
+
get browseButtonText() {
|
|
12620
|
+
var _a, _b;
|
|
12621
|
+
const selectionButtonLabel = this.fileList ? undefined : (_b = (_a = this.fileInput) === null || _a === void 0 ? void 0 : _a.selection) === null || _b === void 0 ? void 0 : _b.buttonLabel;
|
|
12622
|
+
return selectionButtonLabel || this.customButtonLabel || this.commonStrings.keys.browse;
|
|
12623
|
+
}
|
|
12255
12624
|
get browseButtonDescribedBy() {
|
|
12256
12625
|
var _a;
|
|
12257
|
-
return `${(_a = this.label) === null || _a === void 0 ? void 0 : _a.
|
|
12626
|
+
return `${(_a = this.label) === null || _a === void 0 ? void 0 : _a.forAttr} ${this.fileInput.elementRef.nativeElement.getAttribute('aria-describedby')}`;
|
|
12627
|
+
}
|
|
12628
|
+
get successMessagePresent() {
|
|
12629
|
+
return super.successMessagePresent || !!this.fileSuccessComponent;
|
|
12630
|
+
}
|
|
12631
|
+
get errorMessagePresent() {
|
|
12632
|
+
return super.errorMessagePresent || !!this.fileErrorComponent;
|
|
12633
|
+
}
|
|
12634
|
+
focusBrowseButton() {
|
|
12635
|
+
this.browseButtonElementRef.nativeElement.focus();
|
|
12258
12636
|
}
|
|
12259
12637
|
browse() {
|
|
12260
|
-
this.fileInput.elementRef
|
|
12638
|
+
const fileInputElementRef = this.fileList && this.multiple ? this.fileListFileInputElementRef : this.fileInput.elementRef;
|
|
12639
|
+
fileInputElementRef.nativeElement.click();
|
|
12261
12640
|
}
|
|
12262
12641
|
clearSelectedFiles() {
|
|
12263
12642
|
this.fileInput.elementRef.nativeElement.value = '';
|
|
12264
12643
|
this.fileInput.elementRef.nativeElement.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));
|
|
12265
|
-
this.
|
|
12644
|
+
this.focusBrowseButton();
|
|
12645
|
+
}
|
|
12646
|
+
addFilesToSelection(newFiles) {
|
|
12647
|
+
if (!newFiles.length) {
|
|
12648
|
+
return;
|
|
12649
|
+
}
|
|
12650
|
+
// start with new files
|
|
12651
|
+
const mergedFiles = [...newFiles];
|
|
12652
|
+
// add existing files if a new file doesn't have the same name
|
|
12653
|
+
for (const existingFile of this.fileInput.elementRef.nativeElement.files) {
|
|
12654
|
+
if (!mergedFiles.some(file => file.name === existingFile.name)) {
|
|
12655
|
+
mergedFiles.push(existingFile);
|
|
12656
|
+
}
|
|
12657
|
+
}
|
|
12658
|
+
// update file selection
|
|
12659
|
+
selectFiles(this.fileInput.elementRef.nativeElement, mergedFiles);
|
|
12266
12660
|
}
|
|
12267
12661
|
}
|
|
12268
12662
|
ClrFileInputContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInputContainer, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
12269
|
-
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: `
|
|
12663
|
+
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: `
|
|
12270
12664
|
<ng-content select="label"></ng-content>
|
|
12271
12665
|
<label *ngIf="!label && addGrid()"></label>
|
|
12272
12666
|
<div class="clr-control-container" [ngClass]="controlClass()">
|
|
12273
12667
|
<div class="clr-file-input-wrapper">
|
|
12274
12668
|
<ng-content select="[clrFileInput]"></ng-content>
|
|
12669
|
+
|
|
12670
|
+
<!-- file input to handle adding new files to selection when file list is present (prevent replacing selected files on the main file input) -->
|
|
12671
|
+
<input
|
|
12672
|
+
*ngIf="fileList"
|
|
12673
|
+
#fileListFileInput
|
|
12674
|
+
type="file"
|
|
12675
|
+
class="clr-file-input"
|
|
12676
|
+
tabindex="-1"
|
|
12677
|
+
aria-hidden="true"
|
|
12678
|
+
[accept]="accept"
|
|
12679
|
+
[multiple]="multiple"
|
|
12680
|
+
[disabled]="disabled"
|
|
12681
|
+
(change)="addFilesToSelection(fileListFileInput.files)"
|
|
12682
|
+
/>
|
|
12683
|
+
|
|
12275
12684
|
<button
|
|
12276
12685
|
#browseButton
|
|
12277
12686
|
type="button"
|
|
@@ -12281,12 +12690,10 @@ ClrFileInputContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
|
12281
12690
|
(click)="browse()"
|
|
12282
12691
|
>
|
|
12283
12692
|
<cds-icon shape="folder-open"></cds-icon>
|
|
12284
|
-
<span class="clr-file-input-browse-button-text">
|
|
12285
|
-
{{ fileInput?.selection?.buttonLabel || customButtonLabel || commonStrings.keys.browse }}
|
|
12286
|
-
</span>
|
|
12693
|
+
<span class="clr-file-input-browse-button-text">{{ browseButtonText }}</span>
|
|
12287
12694
|
</button>
|
|
12288
12695
|
<button
|
|
12289
|
-
*ngIf="fileInput?.selection?.fileCount"
|
|
12696
|
+
*ngIf="!fileList && fileInput?.selection?.fileCount"
|
|
12290
12697
|
type="button"
|
|
12291
12698
|
class="btn btn-sm clr-file-input-clear-button"
|
|
12292
12699
|
[attr.aria-label]="fileInput?.selection?.clearFilesButtonLabel"
|
|
@@ -12312,6 +12719,12 @@ ClrFileInputContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
|
12312
12719
|
<ng-content select="clr-control-helper" *ngIf="showHelper"></ng-content>
|
|
12313
12720
|
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
12314
12721
|
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
12722
|
+
|
|
12723
|
+
<!-- If this is present, this file input becomes an "advanced" file input. -->
|
|
12724
|
+
<ng-container>
|
|
12725
|
+
<div class="clr-file-list-break"></div>
|
|
12726
|
+
<ng-content select="clr-file-list"></ng-content>
|
|
12727
|
+
</ng-container>
|
|
12315
12728
|
</div>
|
|
12316
12729
|
`, 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"] }] });
|
|
12317
12730
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInputContainer, decorators: [{
|
|
@@ -12324,6 +12737,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
12324
12737
|
<div class="clr-control-container" [ngClass]="controlClass()">
|
|
12325
12738
|
<div class="clr-file-input-wrapper">
|
|
12326
12739
|
<ng-content select="[clrFileInput]"></ng-content>
|
|
12740
|
+
|
|
12741
|
+
<!-- file input to handle adding new files to selection when file list is present (prevent replacing selected files on the main file input) -->
|
|
12742
|
+
<input
|
|
12743
|
+
*ngIf="fileList"
|
|
12744
|
+
#fileListFileInput
|
|
12745
|
+
type="file"
|
|
12746
|
+
class="clr-file-input"
|
|
12747
|
+
tabindex="-1"
|
|
12748
|
+
aria-hidden="true"
|
|
12749
|
+
[accept]="accept"
|
|
12750
|
+
[multiple]="multiple"
|
|
12751
|
+
[disabled]="disabled"
|
|
12752
|
+
(change)="addFilesToSelection(fileListFileInput.files)"
|
|
12753
|
+
/>
|
|
12754
|
+
|
|
12327
12755
|
<button
|
|
12328
12756
|
#browseButton
|
|
12329
12757
|
type="button"
|
|
@@ -12333,12 +12761,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
12333
12761
|
(click)="browse()"
|
|
12334
12762
|
>
|
|
12335
12763
|
<cds-icon shape="folder-open"></cds-icon>
|
|
12336
|
-
<span class="clr-file-input-browse-button-text">
|
|
12337
|
-
{{ fileInput?.selection?.buttonLabel || customButtonLabel || commonStrings.keys.browse }}
|
|
12338
|
-
</span>
|
|
12764
|
+
<span class="clr-file-input-browse-button-text">{{ browseButtonText }}</span>
|
|
12339
12765
|
</button>
|
|
12340
12766
|
<button
|
|
12341
|
-
*ngIf="fileInput?.selection?.fileCount"
|
|
12767
|
+
*ngIf="!fileList && fileInput?.selection?.fileCount"
|
|
12342
12768
|
type="button"
|
|
12343
12769
|
class="btn btn-sm clr-file-input-clear-button"
|
|
12344
12770
|
[attr.aria-label]="fileInput?.selection?.clearFilesButtonLabel"
|
|
@@ -12364,6 +12790,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
12364
12790
|
<ng-content select="clr-control-helper" *ngIf="showHelper"></ng-content>
|
|
12365
12791
|
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
12366
12792
|
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
12793
|
+
|
|
12794
|
+
<!-- If this is present, this file input becomes an "advanced" file input. -->
|
|
12795
|
+
<ng-container>
|
|
12796
|
+
<div class="clr-file-list-break"></div>
|
|
12797
|
+
<ng-content select="clr-file-list"></ng-content>
|
|
12798
|
+
</ng-container>
|
|
12367
12799
|
</div>
|
|
12368
12800
|
`,
|
|
12369
12801
|
host: {
|
|
@@ -12379,9 +12811,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
12379
12811
|
}], fileInput: [{
|
|
12380
12812
|
type: ContentChild,
|
|
12381
12813
|
args: [forwardRef(() => ClrFileInput)]
|
|
12814
|
+
}], fileList: [{
|
|
12815
|
+
type: ContentChild,
|
|
12816
|
+
args: [forwardRef(() => ClrFileList)]
|
|
12382
12817
|
}], browseButtonElementRef: [{
|
|
12383
12818
|
type: ViewChild,
|
|
12384
12819
|
args: ['browseButton']
|
|
12820
|
+
}], fileListFileInputElementRef: [{
|
|
12821
|
+
type: ViewChild,
|
|
12822
|
+
args: ['fileListFileInput']
|
|
12823
|
+
}], fileSuccessComponent: [{
|
|
12824
|
+
type: ContentChild,
|
|
12825
|
+
args: [ClrFileSuccess]
|
|
12826
|
+
}], fileErrorComponent: [{
|
|
12827
|
+
type: ContentChild,
|
|
12828
|
+
args: [ClrFileError]
|
|
12385
12829
|
}] } });
|
|
12386
12830
|
|
|
12387
12831
|
/*
|
|
@@ -12428,13 +12872,14 @@ class ClrFileInput extends WrappedFormControl {
|
|
|
12428
12872
|
}
|
|
12429
12873
|
}
|
|
12430
12874
|
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 });
|
|
12431
|
-
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 });
|
|
12875
|
+
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 });
|
|
12432
12876
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInput, decorators: [{
|
|
12433
12877
|
type: Directive,
|
|
12434
12878
|
args: [{
|
|
12435
12879
|
selector: 'input[type="file"][clrFileInput]',
|
|
12436
12880
|
host: {
|
|
12437
12881
|
tabindex: '-1',
|
|
12882
|
+
'aria-hidden': 'true',
|
|
12438
12883
|
'[class.clr-file-input]': 'true',
|
|
12439
12884
|
},
|
|
12440
12885
|
}]
|
|
@@ -12467,33 +12912,25 @@ class ClrFileInputValidator {
|
|
|
12467
12912
|
if (fileInputElement.required && (files === null || files === void 0 ? void 0 : files.length) === 0) {
|
|
12468
12913
|
errors.required = true;
|
|
12469
12914
|
}
|
|
12470
|
-
|
|
12471
|
-
if (
|
|
12472
|
-
const accept = fileInputElement.accept.split(',').map(type => type.trim());
|
|
12915
|
+
const accept = fileInputElement.accept ? fileInputElement.accept.split(',').map(type => type.trim()) : null;
|
|
12916
|
+
if ((files === null || files === void 0 ? void 0 : files.length) > 0 && (accept || this.minFileSize || this.maxFileSize)) {
|
|
12473
12917
|
for (let i = 0; i < files.length; i++) {
|
|
12474
12918
|
const file = files.item(i);
|
|
12475
|
-
|
|
12476
|
-
if (
|
|
12477
|
-
|
|
12478
|
-
|
|
12919
|
+
// accept validation (native attribute)
|
|
12920
|
+
if (accept) {
|
|
12921
|
+
const [fileExtension] = file.name.match(/\..+$/);
|
|
12922
|
+
if (!accept.includes(file.type) && !accept.includes(fileExtension)) {
|
|
12923
|
+
errors.accept = errors.accept || [];
|
|
12924
|
+
errors.accept.push({ name: file.name, accept, type: file.type, extension: fileExtension });
|
|
12925
|
+
}
|
|
12479
12926
|
}
|
|
12480
|
-
|
|
12481
|
-
|
|
12482
|
-
// min file validation (custom input)
|
|
12483
|
-
if (this.minFileSize && (files === null || files === void 0 ? void 0 : files.length) > 0) {
|
|
12484
|
-
for (let i = 0; i < files.length; i++) {
|
|
12485
|
-
const file = files.item(i);
|
|
12486
|
-
if (file.size < this.minFileSize) {
|
|
12927
|
+
// min file validation (custom input)
|
|
12928
|
+
if (this.minFileSize && file.size < this.minFileSize) {
|
|
12487
12929
|
errors.minFileSize = errors.minFileSize || [];
|
|
12488
12930
|
errors.minFileSize.push({ name: file.name, minFileSize: this.minFileSize, actualFileSize: file.size });
|
|
12489
12931
|
}
|
|
12490
|
-
|
|
12491
|
-
|
|
12492
|
-
// max file validation (custom input)
|
|
12493
|
-
if (this.maxFileSize && (files === null || files === void 0 ? void 0 : files.length) > 0) {
|
|
12494
|
-
for (let i = 0; i < files.length; i++) {
|
|
12495
|
-
const file = files.item(i);
|
|
12496
|
-
if (file.size > this.maxFileSize) {
|
|
12932
|
+
// max file validation (custom input)
|
|
12933
|
+
if (this.maxFileSize && file.size > this.maxFileSize) {
|
|
12497
12934
|
errors.maxFileSize = errors.maxFileSize || [];
|
|
12498
12935
|
errors.maxFileSize.push({ name: file.name, maxFileSize: this.maxFileSize, actualFileSize: file.size });
|
|
12499
12936
|
}
|
|
@@ -12518,28 +12955,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
12518
12955
|
args: ['clrMaxFileSize']
|
|
12519
12956
|
}] } });
|
|
12520
12957
|
|
|
12521
|
-
/*
|
|
12522
|
-
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
12523
|
-
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
12524
|
-
* This software is released under MIT license.
|
|
12525
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
12526
|
-
*/
|
|
12527
|
-
function buildFileList(files) {
|
|
12528
|
-
const dataTransfer = new DataTransfer();
|
|
12529
|
-
for (const file of files) {
|
|
12530
|
-
dataTransfer.items.add(file);
|
|
12531
|
-
}
|
|
12532
|
-
return dataTransfer.files;
|
|
12533
|
-
}
|
|
12534
|
-
function selectFiles(fileInputElement, files) {
|
|
12535
|
-
fileInputElement.files = files instanceof FileList ? files : buildFileList(files);
|
|
12536
|
-
fileInputElement.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));
|
|
12537
|
-
}
|
|
12538
|
-
function clearFiles(fileInputElement) {
|
|
12539
|
-
fileInputElement.value = '';
|
|
12540
|
-
fileInputElement.dispatchEvent(new Event('change', { bubbles: true, cancelable: true }));
|
|
12541
|
-
}
|
|
12542
|
-
|
|
12543
12958
|
/*
|
|
12544
12959
|
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
12545
12960
|
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
@@ -12601,23 +13016,51 @@ class ClrFileInputModule {
|
|
|
12601
13016
|
}
|
|
12602
13017
|
}
|
|
12603
13018
|
ClrFileInputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
12604
|
-
ClrFileInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInputModule, declarations: [ClrFileInput,
|
|
13019
|
+
ClrFileInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInputModule, declarations: [ClrFileInput,
|
|
13020
|
+
ClrFileInputContainer,
|
|
13021
|
+
ClrFileInputValidator,
|
|
13022
|
+
ClrFileInputValueAccessor,
|
|
13023
|
+
ClrFileList,
|
|
13024
|
+
ClrFileMessagesTemplate,
|
|
13025
|
+
ClrFileInfo,
|
|
13026
|
+
ClrFileSuccess,
|
|
13027
|
+
ClrFileError], imports: [CommonModule, ClrIconModule, ClrCommonFormsModule], exports: [ClrCommonFormsModule,
|
|
12605
13028
|
ClrFileInput,
|
|
12606
13029
|
ClrFileInputContainer,
|
|
12607
13030
|
ClrFileInputValidator,
|
|
12608
|
-
ClrFileInputValueAccessor
|
|
13031
|
+
ClrFileInputValueAccessor,
|
|
13032
|
+
ClrFileList,
|
|
13033
|
+
ClrFileMessagesTemplate,
|
|
13034
|
+
ClrFileInfo,
|
|
13035
|
+
ClrFileSuccess,
|
|
13036
|
+
ClrFileError] });
|
|
12609
13037
|
ClrFileInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInputModule, imports: [CommonModule, ClrIconModule, ClrCommonFormsModule, ClrCommonFormsModule] });
|
|
12610
13038
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFileInputModule, decorators: [{
|
|
12611
13039
|
type: NgModule,
|
|
12612
13040
|
args: [{
|
|
12613
13041
|
imports: [CommonModule, ClrIconModule, ClrCommonFormsModule],
|
|
12614
|
-
declarations: [
|
|
13042
|
+
declarations: [
|
|
13043
|
+
ClrFileInput,
|
|
13044
|
+
ClrFileInputContainer,
|
|
13045
|
+
ClrFileInputValidator,
|
|
13046
|
+
ClrFileInputValueAccessor,
|
|
13047
|
+
ClrFileList,
|
|
13048
|
+
ClrFileMessagesTemplate,
|
|
13049
|
+
ClrFileInfo,
|
|
13050
|
+
ClrFileSuccess,
|
|
13051
|
+
ClrFileError,
|
|
13052
|
+
],
|
|
12615
13053
|
exports: [
|
|
12616
13054
|
ClrCommonFormsModule,
|
|
12617
13055
|
ClrFileInput,
|
|
12618
13056
|
ClrFileInputContainer,
|
|
12619
13057
|
ClrFileInputValidator,
|
|
12620
13058
|
ClrFileInputValueAccessor,
|
|
13059
|
+
ClrFileList,
|
|
13060
|
+
ClrFileMessagesTemplate,
|
|
13061
|
+
ClrFileInfo,
|
|
13062
|
+
ClrFileSuccess,
|
|
13063
|
+
ClrFileError,
|
|
12621
13064
|
],
|
|
12622
13065
|
}]
|
|
12623
13066
|
}], ctorParameters: function () { return []; } });
|
|
@@ -12629,6 +13072,227 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
12629
13072
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
12630
13073
|
*/
|
|
12631
13074
|
|
|
13075
|
+
/*
|
|
13076
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
13077
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
13078
|
+
* This software is released under MIT license.
|
|
13079
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
13080
|
+
*/
|
|
13081
|
+
class ClrNumberInputContainer extends ClrAbstractContainer {
|
|
13082
|
+
constructor(controlClassService, layoutService, ngControlService, focusService, ifControlStateService) {
|
|
13083
|
+
super(ifControlStateService, layoutService, controlClassService, ngControlService);
|
|
13084
|
+
this.ifControlStateService = ifControlStateService;
|
|
13085
|
+
this.focus = false;
|
|
13086
|
+
this.subscriptions.push(focusService.focusChange.subscribe(state => (this.focus = state)));
|
|
13087
|
+
}
|
|
13088
|
+
}
|
|
13089
|
+
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 });
|
|
13090
|
+
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: `
|
|
13091
|
+
<ng-content select="label"></ng-content>
|
|
13092
|
+
<label *ngIf="!label && addGrid()"></label>
|
|
13093
|
+
<div class="clr-control-container" [ngClass]="controlClass()">
|
|
13094
|
+
<div class="clr-number-input-wrapper">
|
|
13095
|
+
<div class="clr-input-group" [class.clr-focus]="focus">
|
|
13096
|
+
<ng-content select="[clrNumberInput]"></ng-content>
|
|
13097
|
+
<div class="clr-input-group-actions">
|
|
13098
|
+
<button
|
|
13099
|
+
type="button"
|
|
13100
|
+
class="clr-input-group-icon-action"
|
|
13101
|
+
(click)="input.stepDown()"
|
|
13102
|
+
[disabled]="control?.disabled"
|
|
13103
|
+
>
|
|
13104
|
+
<cds-icon shape="minus" size="sm"></cds-icon>
|
|
13105
|
+
</button>
|
|
13106
|
+
<div class="clr-number-input-separator"></div>
|
|
13107
|
+
<button
|
|
13108
|
+
type="button"
|
|
13109
|
+
class="clr-input-group-icon-action"
|
|
13110
|
+
(click)="input.stepUp()"
|
|
13111
|
+
[disabled]="control?.disabled"
|
|
13112
|
+
>
|
|
13113
|
+
<cds-icon shape="plus" size="sm"></cds-icon>
|
|
13114
|
+
</button>
|
|
13115
|
+
</div>
|
|
13116
|
+
</div>
|
|
13117
|
+
<cds-icon
|
|
13118
|
+
*ngIf="showInvalid"
|
|
13119
|
+
class="clr-validate-icon"
|
|
13120
|
+
shape="exclamation-circle"
|
|
13121
|
+
status="danger"
|
|
13122
|
+
aria-hidden="true"
|
|
13123
|
+
></cds-icon>
|
|
13124
|
+
<cds-icon
|
|
13125
|
+
*ngIf="showValid"
|
|
13126
|
+
class="clr-validate-icon"
|
|
13127
|
+
shape="check-circle"
|
|
13128
|
+
status="success"
|
|
13129
|
+
aria-hidden="true"
|
|
13130
|
+
></cds-icon>
|
|
13131
|
+
</div>
|
|
13132
|
+
<ng-content select="clr-control-helper" *ngIf="showHelper"></ng-content>
|
|
13133
|
+
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
13134
|
+
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
13135
|
+
</div>
|
|
13136
|
+
`, 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"] }] });
|
|
13137
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrNumberInputContainer, decorators: [{
|
|
13138
|
+
type: Component,
|
|
13139
|
+
args: [{
|
|
13140
|
+
selector: 'clr-number-input-container',
|
|
13141
|
+
template: `
|
|
13142
|
+
<ng-content select="label"></ng-content>
|
|
13143
|
+
<label *ngIf="!label && addGrid()"></label>
|
|
13144
|
+
<div class="clr-control-container" [ngClass]="controlClass()">
|
|
13145
|
+
<div class="clr-number-input-wrapper">
|
|
13146
|
+
<div class="clr-input-group" [class.clr-focus]="focus">
|
|
13147
|
+
<ng-content select="[clrNumberInput]"></ng-content>
|
|
13148
|
+
<div class="clr-input-group-actions">
|
|
13149
|
+
<button
|
|
13150
|
+
type="button"
|
|
13151
|
+
class="clr-input-group-icon-action"
|
|
13152
|
+
(click)="input.stepDown()"
|
|
13153
|
+
[disabled]="control?.disabled"
|
|
13154
|
+
>
|
|
13155
|
+
<cds-icon shape="minus" size="sm"></cds-icon>
|
|
13156
|
+
</button>
|
|
13157
|
+
<div class="clr-number-input-separator"></div>
|
|
13158
|
+
<button
|
|
13159
|
+
type="button"
|
|
13160
|
+
class="clr-input-group-icon-action"
|
|
13161
|
+
(click)="input.stepUp()"
|
|
13162
|
+
[disabled]="control?.disabled"
|
|
13163
|
+
>
|
|
13164
|
+
<cds-icon shape="plus" size="sm"></cds-icon>
|
|
13165
|
+
</button>
|
|
13166
|
+
</div>
|
|
13167
|
+
</div>
|
|
13168
|
+
<cds-icon
|
|
13169
|
+
*ngIf="showInvalid"
|
|
13170
|
+
class="clr-validate-icon"
|
|
13171
|
+
shape="exclamation-circle"
|
|
13172
|
+
status="danger"
|
|
13173
|
+
aria-hidden="true"
|
|
13174
|
+
></cds-icon>
|
|
13175
|
+
<cds-icon
|
|
13176
|
+
*ngIf="showValid"
|
|
13177
|
+
class="clr-validate-icon"
|
|
13178
|
+
shape="check-circle"
|
|
13179
|
+
status="success"
|
|
13180
|
+
aria-hidden="true"
|
|
13181
|
+
></cds-icon>
|
|
13182
|
+
</div>
|
|
13183
|
+
<ng-content select="clr-control-helper" *ngIf="showHelper"></ng-content>
|
|
13184
|
+
<ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
|
|
13185
|
+
<ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
|
|
13186
|
+
</div>
|
|
13187
|
+
`,
|
|
13188
|
+
host: {
|
|
13189
|
+
'[class.clr-form-control]': 'true',
|
|
13190
|
+
'[class.clr-form-control-disabled]': 'control?.disabled',
|
|
13191
|
+
'[class.clr-form-control-readonly]': 'input.readonly',
|
|
13192
|
+
'[class.clr-row]': 'addGrid()',
|
|
13193
|
+
},
|
|
13194
|
+
providers: [FocusService, IfControlStateService, NgControlService, ControlIdService, ControlClassService],
|
|
13195
|
+
}]
|
|
13196
|
+
}], ctorParameters: function () {
|
|
13197
|
+
return [{ type: ControlClassService }, { type: LayoutService, decorators: [{
|
|
13198
|
+
type: Optional
|
|
13199
|
+
}] }, { type: NgControlService }, { type: FocusService }, { type: IfControlStateService }];
|
|
13200
|
+
}, propDecorators: { input: [{
|
|
13201
|
+
type: ContentChild,
|
|
13202
|
+
args: [forwardRef(() => ClrNumberInput)]
|
|
13203
|
+
}] } });
|
|
13204
|
+
|
|
13205
|
+
/*
|
|
13206
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
13207
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
13208
|
+
* This software is released under MIT license.
|
|
13209
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
13210
|
+
*/
|
|
13211
|
+
class ClrNumberInput extends WrappedFormControl {
|
|
13212
|
+
constructor(focusService, vcr, injector, control, renderer, el) {
|
|
13213
|
+
super(vcr, ClrNumberInputContainer, injector, control, renderer, el);
|
|
13214
|
+
this.focusService = focusService;
|
|
13215
|
+
this.control = control;
|
|
13216
|
+
this.el = el;
|
|
13217
|
+
this.index = 1;
|
|
13218
|
+
if (!focusService) {
|
|
13219
|
+
throw new Error('clrNumberInput requires being wrapped in <clr-number-input-container>');
|
|
13220
|
+
}
|
|
13221
|
+
}
|
|
13222
|
+
get readonly() {
|
|
13223
|
+
return this.el.nativeElement.getAttribute('readonly') !== null;
|
|
13224
|
+
}
|
|
13225
|
+
triggerFocus() {
|
|
13226
|
+
if (!this.readonly && this.focusService) {
|
|
13227
|
+
this.focusService.focused = true;
|
|
13228
|
+
}
|
|
13229
|
+
}
|
|
13230
|
+
triggerValidation() {
|
|
13231
|
+
if (!this.readonly) {
|
|
13232
|
+
super.triggerValidation();
|
|
13233
|
+
if (this.focusService) {
|
|
13234
|
+
this.focusService.focused = false;
|
|
13235
|
+
}
|
|
13236
|
+
}
|
|
13237
|
+
}
|
|
13238
|
+
stepUp() {
|
|
13239
|
+
this.el.nativeElement.stepUp();
|
|
13240
|
+
this.el.nativeElement.dispatchEvent(new Event('input', { bubbles: true, cancelable: true }));
|
|
13241
|
+
this.control.control.markAllAsTouched();
|
|
13242
|
+
}
|
|
13243
|
+
stepDown() {
|
|
13244
|
+
this.el.nativeElement.stepDown();
|
|
13245
|
+
this.el.nativeElement.dispatchEvent(new Event('input', { bubbles: true, cancelable: true }));
|
|
13246
|
+
this.control.control.markAllAsTouched();
|
|
13247
|
+
}
|
|
13248
|
+
}
|
|
13249
|
+
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 });
|
|
13250
|
+
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 });
|
|
13251
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrNumberInput, decorators: [{
|
|
13252
|
+
type: Directive,
|
|
13253
|
+
args: [{
|
|
13254
|
+
selector: 'input[type="number"][clrNumberInput]',
|
|
13255
|
+
host: { '[class.clr-input]': 'true', '[class.clr-number-input]': 'true' },
|
|
13256
|
+
}]
|
|
13257
|
+
}], ctorParameters: function () {
|
|
13258
|
+
return [{ type: FocusService, decorators: [{
|
|
13259
|
+
type: Optional
|
|
13260
|
+
}] }, { type: i0.ViewContainerRef }, { type: i0.Injector }, { type: i1.NgControl, decorators: [{
|
|
13261
|
+
type: Self
|
|
13262
|
+
}, {
|
|
13263
|
+
type: Optional
|
|
13264
|
+
}] }, { type: i0.Renderer2 }, { type: i0.ElementRef }];
|
|
13265
|
+
}, propDecorators: { triggerFocus: [{
|
|
13266
|
+
type: HostListener,
|
|
13267
|
+
args: ['focus']
|
|
13268
|
+
}], triggerValidation: [{
|
|
13269
|
+
type: HostListener,
|
|
13270
|
+
args: ['blur']
|
|
13271
|
+
}] } });
|
|
13272
|
+
|
|
13273
|
+
/*
|
|
13274
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
13275
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
13276
|
+
* This software is released under MIT license.
|
|
13277
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
13278
|
+
*/
|
|
13279
|
+
class ClrNumberInputModule {
|
|
13280
|
+
constructor() {
|
|
13281
|
+
ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon);
|
|
13282
|
+
}
|
|
13283
|
+
}
|
|
13284
|
+
ClrNumberInputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrNumberInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
13285
|
+
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] });
|
|
13286
|
+
ClrNumberInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrNumberInputModule, imports: [CommonModule, FormsModule, ClrIconModule, ClrCommonFormsModule, ClrCommonFormsModule] });
|
|
13287
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrNumberInputModule, decorators: [{
|
|
13288
|
+
type: NgModule,
|
|
13289
|
+
args: [{
|
|
13290
|
+
imports: [CommonModule, FormsModule, ClrIconModule, ClrCommonFormsModule],
|
|
13291
|
+
declarations: [ClrNumberInput, ClrNumberInputContainer],
|
|
13292
|
+
exports: [ClrCommonFormsModule, ClrNumberInput, ClrNumberInputContainer],
|
|
13293
|
+
}]
|
|
13294
|
+
}], ctorParameters: function () { return []; } });
|
|
13295
|
+
|
|
12632
13296
|
/*
|
|
12633
13297
|
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
12634
13298
|
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
@@ -13581,7 +14245,8 @@ ClrFormsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version:
|
|
|
13581
14245
|
ClrSelectModule,
|
|
13582
14246
|
ClrTextareaModule,
|
|
13583
14247
|
ClrRangeModule,
|
|
13584
|
-
ClrDatalistModule
|
|
14248
|
+
ClrDatalistModule,
|
|
14249
|
+
ClrNumberInputModule] });
|
|
13585
14250
|
ClrFormsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFormsModule, imports: [CommonModule, ClrCommonFormsModule,
|
|
13586
14251
|
ClrCheckboxModule,
|
|
13587
14252
|
ClrComboboxModule,
|
|
@@ -13593,7 +14258,8 @@ ClrFormsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version:
|
|
|
13593
14258
|
ClrSelectModule,
|
|
13594
14259
|
ClrTextareaModule,
|
|
13595
14260
|
ClrRangeModule,
|
|
13596
|
-
ClrDatalistModule
|
|
14261
|
+
ClrDatalistModule,
|
|
14262
|
+
ClrNumberInputModule] });
|
|
13597
14263
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrFormsModule, decorators: [{
|
|
13598
14264
|
type: NgModule,
|
|
13599
14265
|
args: [{
|
|
@@ -13611,6 +14277,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
13611
14277
|
ClrTextareaModule,
|
|
13612
14278
|
ClrRangeModule,
|
|
13613
14279
|
ClrDatalistModule,
|
|
14280
|
+
ClrNumberInputModule,
|
|
13614
14281
|
],
|
|
13615
14282
|
}]
|
|
13616
14283
|
}] });
|
|
@@ -14789,10 +15456,10 @@ DatagridNumericFilter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", ve
|
|
|
14789
15456
|
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: `
|
|
14790
15457
|
<clr-dg-filter [clrDgFilter]="registered" [(clrDgFilterOpen)]="open">
|
|
14791
15458
|
<div class="datagrid-numeric-filter-form">
|
|
14792
|
-
<
|
|
15459
|
+
<clr-number-input-container>
|
|
14793
15460
|
<label class="clr-control-label">{{ fromLabelValue }}</label>
|
|
14794
15461
|
<input
|
|
14795
|
-
|
|
15462
|
+
clrNumberInput
|
|
14796
15463
|
class="datagrid-numeric-filter-input"
|
|
14797
15464
|
#input_low
|
|
14798
15465
|
type="number"
|
|
@@ -14802,11 +15469,11 @@ DatagridNumericFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
|
14802
15469
|
[placeholder]="minPlaceholderValue"
|
|
14803
15470
|
[attr.aria-label]="minPlaceholderValue"
|
|
14804
15471
|
/>
|
|
14805
|
-
</
|
|
14806
|
-
<
|
|
15472
|
+
</clr-number-input-container>
|
|
15473
|
+
<clr-number-input-container>
|
|
14807
15474
|
<label class="clr-control-label">{{ toLabelValue }}</label>
|
|
14808
15475
|
<input
|
|
14809
|
-
|
|
15476
|
+
clrNumberInput
|
|
14810
15477
|
class="datagrid-numeric-filter-input"
|
|
14811
15478
|
#input_high
|
|
14812
15479
|
type="number"
|
|
@@ -14816,10 +15483,10 @@ DatagridNumericFilter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
|
14816
15483
|
[placeholder]="maxPlaceholderValue"
|
|
14817
15484
|
[attr.aria-label]="maxPlaceholderValue"
|
|
14818
15485
|
/>
|
|
14819
|
-
</
|
|
15486
|
+
</clr-number-input-container>
|
|
14820
15487
|
</div>
|
|
14821
15488
|
</clr-dg-filter>
|
|
14822
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: ClrLabel, selector: "label", inputs: ["id", "for"] }, { kind: "directive", type:
|
|
15489
|
+
`, 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"] }] });
|
|
14823
15490
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridNumericFilter, decorators: [{
|
|
14824
15491
|
type: Component,
|
|
14825
15492
|
args: [{
|
|
@@ -14828,10 +15495,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
14828
15495
|
template: `
|
|
14829
15496
|
<clr-dg-filter [clrDgFilter]="registered" [(clrDgFilterOpen)]="open">
|
|
14830
15497
|
<div class="datagrid-numeric-filter-form">
|
|
14831
|
-
<
|
|
15498
|
+
<clr-number-input-container>
|
|
14832
15499
|
<label class="clr-control-label">{{ fromLabelValue }}</label>
|
|
14833
15500
|
<input
|
|
14834
|
-
|
|
15501
|
+
clrNumberInput
|
|
14835
15502
|
class="datagrid-numeric-filter-input"
|
|
14836
15503
|
#input_low
|
|
14837
15504
|
type="number"
|
|
@@ -14841,11 +15508,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
14841
15508
|
[placeholder]="minPlaceholderValue"
|
|
14842
15509
|
[attr.aria-label]="minPlaceholderValue"
|
|
14843
15510
|
/>
|
|
14844
|
-
</
|
|
14845
|
-
<
|
|
15511
|
+
</clr-number-input-container>
|
|
15512
|
+
<clr-number-input-container>
|
|
14846
15513
|
<label class="clr-control-label">{{ toLabelValue }}</label>
|
|
14847
15514
|
<input
|
|
14848
|
-
|
|
15515
|
+
clrNumberInput
|
|
14849
15516
|
class="datagrid-numeric-filter-input"
|
|
14850
15517
|
#input_high
|
|
14851
15518
|
type="number"
|
|
@@ -14855,7 +15522,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
14855
15522
|
[placeholder]="maxPlaceholderValue"
|
|
14856
15523
|
[attr.aria-label]="maxPlaceholderValue"
|
|
14857
15524
|
/>
|
|
14858
|
-
</
|
|
15525
|
+
</clr-number-input-container>
|
|
14859
15526
|
</div>
|
|
14860
15527
|
</clr-dg-filter>
|
|
14861
15528
|
`,
|
|
@@ -15002,17 +15669,20 @@ class DatagridStringFilterImpl {
|
|
|
15002
15669
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
15003
15670
|
*/
|
|
15004
15671
|
class DatagridStringFilter extends DatagridFilterRegistrar {
|
|
15005
|
-
constructor(filters, domAdapter, commonStrings, smartToggleService, ngZone) {
|
|
15672
|
+
constructor(filters, domAdapter, commonStrings, smartToggleService, elementRef, cdr, ngZone) {
|
|
15006
15673
|
super(filters);
|
|
15007
15674
|
this.domAdapter = domAdapter;
|
|
15008
15675
|
this.commonStrings = commonStrings;
|
|
15009
15676
|
this.smartToggleService = smartToggleService;
|
|
15677
|
+
this.elementRef = elementRef;
|
|
15678
|
+
this.cdr = cdr;
|
|
15010
15679
|
this.ngZone = ngZone;
|
|
15011
15680
|
this.filterValueChange = new EventEmitter();
|
|
15012
15681
|
/**
|
|
15013
15682
|
* Indicates if the filter dropdown is open
|
|
15014
15683
|
*/
|
|
15015
15684
|
this.open = false;
|
|
15685
|
+
this.labelValue = '';
|
|
15016
15686
|
this.subs = [];
|
|
15017
15687
|
}
|
|
15018
15688
|
/**
|
|
@@ -15072,26 +15742,50 @@ class DatagridStringFilter extends DatagridFilterRegistrar {
|
|
|
15072
15742
|
});
|
|
15073
15743
|
}));
|
|
15074
15744
|
}
|
|
15745
|
+
ngOnChanges() {
|
|
15746
|
+
setTimeout(() => {
|
|
15747
|
+
this.setFilterLabel();
|
|
15748
|
+
this.cdr.markForCheck();
|
|
15749
|
+
});
|
|
15750
|
+
}
|
|
15075
15751
|
ngOnDestroy() {
|
|
15076
15752
|
super.ngOnDestroy();
|
|
15077
15753
|
this.subs.forEach(sub => sub.unsubscribe());
|
|
15078
15754
|
}
|
|
15755
|
+
/**
|
|
15756
|
+
* This is not in a getter to prevent "expression has changed after it was checked" errors.
|
|
15757
|
+
*/
|
|
15758
|
+
setFilterLabel() {
|
|
15759
|
+
var _a;
|
|
15760
|
+
if (this.label) {
|
|
15761
|
+
this.labelValue = this.label;
|
|
15762
|
+
return;
|
|
15763
|
+
}
|
|
15764
|
+
const columnElement = (_a = this.elementRef.nativeElement) === null || _a === void 0 ? void 0 : _a.closest('clr-dg-column');
|
|
15765
|
+
const columnTitleElement = columnElement === null || columnElement === void 0 ? void 0 : columnElement.querySelector('.datagrid-column-title');
|
|
15766
|
+
this.labelValue = this.commonStrings.parse(this.commonStrings.keys.datagridFilterLabel, {
|
|
15767
|
+
COLUMN: (columnTitleElement === null || columnTitleElement === void 0 ? void 0 : columnTitleElement.textContent.trim()) || '',
|
|
15768
|
+
});
|
|
15769
|
+
}
|
|
15079
15770
|
}
|
|
15080
|
-
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 });
|
|
15081
|
-
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: `
|
|
15771
|
+
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 });
|
|
15772
|
+
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: `
|
|
15082
15773
|
<clr-dg-filter [clrDgFilter]="registered" [(clrDgFilterOpen)]="open">
|
|
15083
|
-
<input
|
|
15084
|
-
|
|
15085
|
-
|
|
15086
|
-
|
|
15087
|
-
|
|
15088
|
-
|
|
15089
|
-
|
|
15090
|
-
|
|
15091
|
-
|
|
15092
|
-
|
|
15774
|
+
<clr-input-container>
|
|
15775
|
+
<label>{{ labelValue }}</label>
|
|
15776
|
+
<input
|
|
15777
|
+
#input
|
|
15778
|
+
type="text"
|
|
15779
|
+
autocomplete="off"
|
|
15780
|
+
name="search"
|
|
15781
|
+
[(ngModel)]="value"
|
|
15782
|
+
clrInput
|
|
15783
|
+
[attr.aria-label]="placeholderValue"
|
|
15784
|
+
[placeholder]="placeholderValue"
|
|
15785
|
+
/>
|
|
15786
|
+
</clr-input-container>
|
|
15093
15787
|
</clr-dg-filter>
|
|
15094
|
-
`, 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"] }] });
|
|
15788
|
+
`, 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"] }] });
|
|
15095
15789
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DatagridStringFilter, decorators: [{
|
|
15096
15790
|
type: Component,
|
|
15097
15791
|
args: [{
|
|
@@ -15099,22 +15793,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
15099
15793
|
providers: [{ provide: CustomFilter, useExisting: DatagridStringFilter }],
|
|
15100
15794
|
template: `
|
|
15101
15795
|
<clr-dg-filter [clrDgFilter]="registered" [(clrDgFilterOpen)]="open">
|
|
15102
|
-
<input
|
|
15103
|
-
|
|
15104
|
-
|
|
15105
|
-
|
|
15106
|
-
|
|
15107
|
-
|
|
15108
|
-
|
|
15109
|
-
|
|
15110
|
-
|
|
15111
|
-
|
|
15796
|
+
<clr-input-container>
|
|
15797
|
+
<label>{{ labelValue }}</label>
|
|
15798
|
+
<input
|
|
15799
|
+
#input
|
|
15800
|
+
type="text"
|
|
15801
|
+
autocomplete="off"
|
|
15802
|
+
name="search"
|
|
15803
|
+
[(ngModel)]="value"
|
|
15804
|
+
clrInput
|
|
15805
|
+
[attr.aria-label]="placeholderValue"
|
|
15806
|
+
[placeholder]="placeholderValue"
|
|
15807
|
+
/>
|
|
15808
|
+
</clr-input-container>
|
|
15112
15809
|
</clr-dg-filter>
|
|
15113
15810
|
`,
|
|
15114
15811
|
}]
|
|
15115
|
-
}], ctorParameters: function () { return [{ type: FiltersProvider }, { type: DomAdapter }, { type: ClrCommonStringsService }, { type: ClrPopoverToggleService }, { type: i0.NgZone }]; }, propDecorators: { placeholder: [{
|
|
15812
|
+
}], ctorParameters: function () { return [{ type: FiltersProvider }, { type: DomAdapter }, { type: ClrCommonStringsService }, { type: ClrPopoverToggleService }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }]; }, propDecorators: { placeholder: [{
|
|
15116
15813
|
type: Input,
|
|
15117
15814
|
args: ['clrFilterPlaceholder']
|
|
15815
|
+
}], label: [{
|
|
15816
|
+
type: Input,
|
|
15817
|
+
args: ['clrFilterLabel']
|
|
15118
15818
|
}], filterValueChange: [{
|
|
15119
15819
|
type: Output,
|
|
15120
15820
|
args: ['clrFilterValueChange']
|
|
@@ -16198,7 +16898,7 @@ ClrDatagridColumn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", vers
|
|
|
16198
16898
|
|
|
16199
16899
|
<clr-dg-column-separator *ngIf="showSeparator"></clr-dg-column-separator>
|
|
16200
16900
|
</div>
|
|
16201
|
-
`, 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 });
|
|
16901
|
+
`, 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 });
|
|
16202
16902
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridColumn, decorators: [{
|
|
16203
16903
|
type: Component,
|
|
16204
16904
|
args: [{
|
|
@@ -17521,6 +18221,9 @@ class ColumnsService {
|
|
|
17521
18221
|
get hasHideableColumns() {
|
|
17522
18222
|
return this.columnStates.filter(state => state.hideable).length > 0;
|
|
17523
18223
|
}
|
|
18224
|
+
get visibleColumns() {
|
|
18225
|
+
return this.columnStates.filter(state => !state.hidden);
|
|
18226
|
+
}
|
|
17524
18227
|
cache() {
|
|
17525
18228
|
this._cache = this.columns.map(subject => {
|
|
17526
18229
|
const value = Object.assign({}, subject.value);
|
|
@@ -17852,7 +18555,7 @@ class ClrDatagrid {
|
|
|
17852
18555
|
if (!this.items.smart) {
|
|
17853
18556
|
this.items.all = this.rows.map((row) => row.item);
|
|
17854
18557
|
}
|
|
17855
|
-
const rowItemsChanges = this.rows.changes.pipe(switchMap((rows) => merge(
|
|
18558
|
+
const rowItemsChanges = this.rows.changes.pipe(switchMap$1((rows) => merge(
|
|
17856
18559
|
// immediate update
|
|
17857
18560
|
of(rows.map(row => row.item)),
|
|
17858
18561
|
// subsequent updates once per tick
|
|
@@ -19561,11 +20264,12 @@ const defaultCdkFixedSizeVirtualScrollInputs = {
|
|
|
19561
20264
|
maxBufferPx: 400,
|
|
19562
20265
|
};
|
|
19563
20266
|
class ClrDatagridVirtualScrollDirective {
|
|
19564
|
-
constructor(changeDetectorRef, iterableDiffers, items, ngZone, templateRef, viewContainerRef, directionality, scrollDispatcher, viewportRuler, datagrid, columnsService, injector) {
|
|
20267
|
+
constructor(changeDetectorRef, iterableDiffers, items, ngZone, renderer2, templateRef, viewContainerRef, directionality, scrollDispatcher, viewportRuler, datagrid, columnsService, injector) {
|
|
19565
20268
|
this.changeDetectorRef = changeDetectorRef;
|
|
19566
20269
|
this.iterableDiffers = iterableDiffers;
|
|
19567
20270
|
this.items = items;
|
|
19568
20271
|
this.ngZone = ngZone;
|
|
20272
|
+
this.renderer2 = renderer2;
|
|
19569
20273
|
this.templateRef = templateRef;
|
|
19570
20274
|
this.viewContainerRef = viewContainerRef;
|
|
19571
20275
|
this.directionality = directionality;
|
|
@@ -19654,7 +20358,7 @@ class ClrDatagridVirtualScrollDirective {
|
|
|
19654
20358
|
}
|
|
19655
20359
|
ngAfterViewInit() {
|
|
19656
20360
|
this.injector.runInContext(() => {
|
|
19657
|
-
this.virtualScrollViewport = this.createVirtualScrollViewportForDatagrid(this.changeDetectorRef, this.ngZone, this.directionality, this.scrollDispatcher, this.viewportRuler, this.datagridElementRef, this.virtualScrollStrategy);
|
|
20361
|
+
this.virtualScrollViewport = this.createVirtualScrollViewportForDatagrid(this.changeDetectorRef, this.ngZone, this.renderer2, this.directionality, this.scrollDispatcher, this.viewportRuler, this.datagridElementRef, this.virtualScrollStrategy);
|
|
19658
20362
|
this.cdkVirtualFor = createCdkVirtualForOfDirective(this.viewContainerRef, this.templateRef, this.iterableDiffers, this.viewRepeater, this.virtualScrollViewport, this.ngZone);
|
|
19659
20363
|
this.virtualScrollViewport.ngOnInit();
|
|
19660
20364
|
});
|
|
@@ -19716,7 +20420,7 @@ class ClrDatagridVirtualScrollDirective {
|
|
|
19716
20420
|
rowRoleElement === null || rowRoleElement === void 0 ? void 0 : rowRoleElement.setAttribute('aria-rowindex', (viewRef.context.index + 1).toString());
|
|
19717
20421
|
}
|
|
19718
20422
|
}
|
|
19719
|
-
createVirtualScrollViewportForDatagrid(changeDetectorRef, ngZone, directionality, scrollDispatcher, viewportRuler, datagridElementRef, virtualScrollStrategy) {
|
|
20423
|
+
createVirtualScrollViewportForDatagrid(changeDetectorRef, ngZone, renderer2, directionality, scrollDispatcher, viewportRuler, datagridElementRef, virtualScrollStrategy) {
|
|
19720
20424
|
const datagridDivElement = datagridElementRef.nativeElement.querySelector('.datagrid');
|
|
19721
20425
|
const datagridTableElement = datagridElementRef.nativeElement.querySelector('.datagrid-table');
|
|
19722
20426
|
const datagridRowsElement = datagridElementRef.nativeElement.querySelector('.datagrid-rows');
|
|
@@ -19727,7 +20431,7 @@ class ClrDatagridVirtualScrollDirective {
|
|
|
19727
20431
|
datagridRowsElement.style.transform = `translateY(${topOffset}px)`;
|
|
19728
20432
|
datagridRowsElement.style.height = `${totalContentSize - topOffset}px`;
|
|
19729
20433
|
}
|
|
19730
|
-
const virtualScrollViewport = createCdkVirtualScrollViewport(datagridDivElementRef, changeDetectorRef, ngZone, virtualScrollStrategy, directionality, scrollDispatcher, viewportRuler, null);
|
|
20434
|
+
const virtualScrollViewport = createCdkVirtualScrollViewport(datagridDivElementRef, changeDetectorRef, ngZone, renderer2, virtualScrollStrategy, directionality, scrollDispatcher, viewportRuler, null);
|
|
19731
20435
|
virtualScrollViewport._contentWrapper = {
|
|
19732
20436
|
nativeElement: {
|
|
19733
20437
|
style: {
|
|
@@ -19747,7 +20451,7 @@ class ClrDatagridVirtualScrollDirective {
|
|
|
19747
20451
|
return virtualScrollViewport;
|
|
19748
20452
|
}
|
|
19749
20453
|
}
|
|
19750
|
-
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 });
|
|
20454
|
+
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 });
|
|
19751
20455
|
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 });
|
|
19752
20456
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatagridVirtualScrollDirective, decorators: [{
|
|
19753
20457
|
type: Directive,
|
|
@@ -19758,7 +20462,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
19758
20462
|
}], ctorParameters: function () {
|
|
19759
20463
|
return [{ type: i0.ChangeDetectorRef }, { type: i0.IterableDiffers }, { type: Items, decorators: [{
|
|
19760
20464
|
type: SkipSelf
|
|
19761
|
-
}] }, { 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 }];
|
|
20465
|
+
}] }, { 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 }];
|
|
19762
20466
|
}, propDecorators: { renderedRangeChange: [{
|
|
19763
20467
|
type: Output
|
|
19764
20468
|
}], cdkVirtualForOf: [{
|
|
@@ -19783,7 +20487,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
19783
20487
|
type: Input,
|
|
19784
20488
|
args: ['clrVirtualRowsMaxBufferPx']
|
|
19785
20489
|
}] } });
|
|
19786
|
-
function createCdkVirtualScrollViewport(datagridDivElementRef, changeDetectorRef, ngZone, virtualScrollStrategy, directionality, scrollDispatcher, viewportRuler, scrollable) {
|
|
20490
|
+
function createCdkVirtualScrollViewport(datagridDivElementRef, changeDetectorRef, ngZone, renderer2, virtualScrollStrategy, directionality, scrollDispatcher, viewportRuler, scrollable) {
|
|
19787
20491
|
if (+VERSION.major < 19) {
|
|
19788
20492
|
return new CdkVirtualScrollViewport(datagridDivElementRef, changeDetectorRef, ngZone, virtualScrollStrategy, directionality, scrollDispatcher, viewportRuler, scrollable);
|
|
19789
20493
|
}
|
|
@@ -19794,6 +20498,7 @@ function createCdkVirtualScrollViewport(datagridDivElementRef, changeDetectorRef
|
|
|
19794
20498
|
{ provide: ElementRef, useValue: datagridDivElementRef },
|
|
19795
20499
|
{ provide: ChangeDetectorRef, useValue: changeDetectorRef },
|
|
19796
20500
|
{ provide: NgZone, useValue: ngZone },
|
|
20501
|
+
{ provide: Renderer2, useValue: renderer2 },
|
|
19797
20502
|
{ provide: VIRTUAL_SCROLL_STRATEGY, useValue: virtualScrollStrategy },
|
|
19798
20503
|
{ provide: Directionality, useValue: directionality },
|
|
19799
20504
|
{ provide: ScrollDispatcher, useValue: scrollDispatcher },
|
|
@@ -20064,9 +20769,9 @@ class DatagridMainRenderer {
|
|
|
20064
20769
|
if (this.headers) {
|
|
20065
20770
|
if (state && !this.columnsService.hasCache()) {
|
|
20066
20771
|
this.columnsService.cache();
|
|
20067
|
-
this.
|
|
20772
|
+
this.columnsService.visibleColumns.forEach((header, index) => {
|
|
20068
20773
|
if (index > 0) {
|
|
20069
|
-
this.columnsService.emitStateChangeAt(
|
|
20774
|
+
this.columnsService.emitStateChangeAt(header.columnIndex, {
|
|
20070
20775
|
changes: [DatagridColumnChanges.HIDDEN],
|
|
20071
20776
|
hidden: state,
|
|
20072
20777
|
});
|
|
@@ -28549,9 +29254,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
28549
29254
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
28550
29255
|
*/
|
|
28551
29256
|
|
|
29257
|
+
/*
|
|
29258
|
+
* Copyright (c) 2016-2024 Broadcom. All Rights Reserved.
|
|
29259
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
29260
|
+
* This software is released under MIT license.
|
|
29261
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
29262
|
+
*/
|
|
29263
|
+
|
|
28552
29264
|
/**
|
|
28553
29265
|
* Generated bundle index. Do not edit.
|
|
28554
29266
|
*/
|
|
28555
29267
|
|
|
28556
|
-
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 };
|
|
29268
|
+
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 };
|
|
28557
29269
|
//# sourceMappingURL=clr-angular.mjs.map
|