@clr/angular 18.0.0-beta.1 → 18.0.0-beta.2
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/fesm2022/clr-angular-button.mjs +2 -2
- package/fesm2022/clr-angular-button.mjs.map +1 -1
- package/fesm2022/clr-angular-data-datagrid.mjs +12 -26
- package/fesm2022/clr-angular-data-datagrid.mjs.map +1 -1
- package/fesm2022/clr-angular-data-tree-view.mjs +2 -2
- package/fesm2022/clr-angular-data-tree-view.mjs.map +1 -1
- package/fesm2022/clr-angular-data.mjs +13 -27
- package/fesm2022/clr-angular-data.mjs.map +1 -1
- package/fesm2022/clr-angular-emphasis-alert.mjs +2 -2
- package/fesm2022/clr-angular-emphasis-alert.mjs.map +1 -1
- package/fesm2022/clr-angular-emphasis.mjs +2 -2
- package/fesm2022/clr-angular-emphasis.mjs.map +1 -1
- package/fesm2022/clr-angular-forms-checkbox.mjs +13 -44
- package/fesm2022/clr-angular-forms-checkbox.mjs.map +1 -1
- package/fesm2022/clr-angular-forms-combobox.mjs +94 -61
- package/fesm2022/clr-angular-forms-combobox.mjs.map +1 -1
- package/fesm2022/clr-angular-forms-common.mjs +61 -58
- package/fesm2022/clr-angular-forms-common.mjs.map +1 -1
- package/fesm2022/clr-angular-forms-datalist.mjs +2 -14
- package/fesm2022/clr-angular-forms-datalist.mjs.map +1 -1
- package/fesm2022/clr-angular-forms-datepicker.mjs +16 -24
- package/fesm2022/clr-angular-forms-datepicker.mjs.map +1 -1
- package/fesm2022/clr-angular-forms-file-input.mjs +72 -55
- package/fesm2022/clr-angular-forms-file-input.mjs.map +1 -1
- package/fesm2022/clr-angular-forms-input.mjs +4 -18
- package/fesm2022/clr-angular-forms-input.mjs.map +1 -1
- package/fesm2022/clr-angular-forms-number-input.mjs +2 -14
- package/fesm2022/clr-angular-forms-number-input.mjs.map +1 -1
- package/fesm2022/clr-angular-forms-password.mjs +2 -14
- package/fesm2022/clr-angular-forms-password.mjs.map +1 -1
- package/fesm2022/clr-angular-forms-radio.mjs +13 -44
- package/fesm2022/clr-angular-forms-radio.mjs.map +1 -1
- package/fesm2022/clr-angular-forms-range.mjs +3 -16
- package/fesm2022/clr-angular-forms-range.mjs.map +1 -1
- package/fesm2022/clr-angular-forms-select.mjs +3 -16
- package/fesm2022/clr-angular-forms-select.mjs.map +1 -1
- package/fesm2022/clr-angular-forms-textarea.mjs +4 -17
- package/fesm2022/clr-angular-forms-textarea.mjs.map +1 -1
- package/fesm2022/clr-angular-forms.mjs +258 -358
- package/fesm2022/clr-angular-forms.mjs.map +1 -1
- package/fesm2022/clr-angular-modal.mjs +2 -2
- package/fesm2022/clr-angular-modal.mjs.map +1 -1
- package/fesm2022/clr-angular-popover-common.mjs +151 -85
- package/fesm2022/clr-angular-popover-common.mjs.map +1 -1
- package/fesm2022/clr-angular-popover-dropdown.mjs +7 -4
- package/fesm2022/clr-angular-popover-dropdown.mjs.map +1 -1
- package/fesm2022/clr-angular-popover-signpost.mjs +27 -12
- package/fesm2022/clr-angular-popover-signpost.mjs.map +1 -1
- package/fesm2022/clr-angular-popover-tooltip.mjs +4 -4
- package/fesm2022/clr-angular-popover-tooltip.mjs.map +1 -1
- package/fesm2022/clr-angular-popover.mjs +186 -102
- package/fesm2022/clr-angular-popover.mjs.map +1 -1
- package/fesm2022/clr-angular-stepper.mjs +4 -4
- package/fesm2022/clr-angular-stepper.mjs.map +1 -1
- package/fesm2022/clr-angular-utils.mjs +12 -47
- package/fesm2022/clr-angular-utils.mjs.map +1 -1
- package/fesm2022/clr-angular-wizard.mjs +19 -11
- package/fesm2022/clr-angular-wizard.mjs.map +1 -1
- package/fesm2022/clr-angular.mjs +491 -548
- package/fesm2022/clr-angular.mjs.map +1 -1
- package/package.json +2 -2
- package/popover/common/README.md +14 -12
- package/types/clr-angular-data-datagrid.d.ts +0 -10
- package/types/clr-angular-data.d.ts +0 -10
- package/types/clr-angular-forms-combobox.d.ts +11 -4
- package/types/clr-angular-forms-common.d.ts +9 -9
- package/types/clr-angular-forms-datepicker.d.ts +7 -0
- package/types/clr-angular-forms-file-input.d.ts +5 -2
- package/types/clr-angular-forms.d.ts +31 -15
- package/types/clr-angular-popover-common.d.ts +38 -13
- package/types/clr-angular-popover-dropdown.d.ts +2 -1
- package/types/clr-angular-popover-signpost.d.ts +14 -6
- package/types/clr-angular-popover.d.ts +52 -18
- package/types/clr-angular-utils.d.ts +4 -14
- package/types/clr-angular-wizard.d.ts +7 -4
- package/types/clr-angular.d.ts +91 -59
|
@@ -2,13 +2,13 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { Injectable, Optional, Directive, Component, ElementRef, HostListener, ContentChild, Input, HostBinding, KeyValueDiffers, Self, ContentChildren, NgModule, InjectionToken, forwardRef, Inject, Attribute, ViewChild, PLATFORM_ID, DOCUMENT, EventEmitter, Output, LOCALE_ID, inject, TemplateRef, Injector } from '@angular/core';
|
|
3
3
|
import * as i2 from 'rxjs';
|
|
4
4
|
import { BehaviorSubject, Subject, tap, merge, of, ReplaySubject } from 'rxjs';
|
|
5
|
+
import * as i3 from '@clr/angular/icon';
|
|
6
|
+
import { ClarityIcons, successStandardIcon, errorStandardIcon, ClrIcon, angleIcon, windowCloseIcon, eventIcon, calendarIcon, folderOpenIcon, minusIcon, plusIcon, eyeHideIcon, eyeIcon } from '@clr/angular/icon';
|
|
5
7
|
import { ClrSignpost } from '@clr/angular/popover/signpost';
|
|
6
8
|
import * as i1 from '@angular/common';
|
|
7
9
|
import { CommonModule, isPlatformBrowser, NgForOf, getLocaleDayNames, FormStyle, TranslationWidth, getLocaleMonthNames, getLocaleFirstDayOfWeek, getLocaleDateFormat, FormatWidth } from '@angular/common';
|
|
8
|
-
import * as i3 from '@clr/angular/icon';
|
|
9
|
-
import { ClarityIcons, exclamationCircleIcon, checkCircleIcon, ClrIcon, angleIcon, windowCloseIcon, eventIcon, calendarIcon, folderOpenIcon, minusIcon, plusIcon, eyeHideIcon, eyeIcon } from '@clr/angular/icon';
|
|
10
10
|
import * as i2$1 from '@clr/angular/utils';
|
|
11
|
-
import { HostWrapper, ClrHostWrappingModule, ArrowKeyDirection,
|
|
11
|
+
import { HostWrapper, ClrHostWrappingModule, ArrowKeyDirection, Keys, customFocusableItemProvider, uniqueIdFactory, ClrLoadingState, IF_ACTIVE_ID, LoadingListener, IF_ACTIVE_ID_PROVIDER, FOCUS_SERVICE_PROVIDER, ClrConditionalModule, ClrKeyFocusModule, DATEPICKER_ENABLE_BREAKPOINT, isBooleanAttributeSet, CdkTrapFocusModule, ClrCommonStringsService } from '@clr/angular/utils';
|
|
12
12
|
import * as i1$1 from '@angular/forms';
|
|
13
13
|
import { FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, SelectMultipleControlValueAccessor } from '@angular/forms';
|
|
14
14
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
@@ -16,7 +16,7 @@ import { switchMap, startWith, take, first, filter } from 'rxjs/operators';
|
|
|
16
16
|
import * as i1$2 from '@clr/angular/forms/common';
|
|
17
17
|
import { ClrControlLabel as ClrControlLabel$1, ControlIdService as ControlIdService$1, WrappedFormControl as WrappedFormControl$1, ClrAbstractContainer as ClrAbstractContainer$1, NgControlService as NgControlService$1, ControlClassService as ControlClassService$1, ContainerIdService as ContainerIdService$1, ClrCommonFormsModule as ClrCommonFormsModule$1, FormsFocusService as FormsFocusService$1 } from '@clr/angular/forms/common';
|
|
18
18
|
import * as i1$3 from '@clr/angular/popover/common';
|
|
19
|
-
import {
|
|
19
|
+
import { POPOVER_HOST_ORIGIN, ClrPopoverPosition, ClrPopoverType, ClrPopoverHostDirective, ÇlrClrPopoverModuleNext as _lrClrPopoverModuleNext, DROPDOWN_POSITIONS } from '@clr/angular/popover/common';
|
|
20
20
|
import * as i5 from '@clr/angular/progress/spinner';
|
|
21
21
|
import { ClrSpinnerModule } from '@clr/angular/progress/spinner';
|
|
22
22
|
import { ClrInputModule as ClrInputModule$1 } from '@clr/angular/forms/input';
|
|
@@ -160,16 +160,25 @@ class ClrControlError extends ClrAbstractControl {
|
|
|
160
160
|
this.controlIdSuffix = CONTROL_SUFFIX.ERROR;
|
|
161
161
|
}
|
|
162
162
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrControlError, deps: [{ token: ControlIdService, optional: true }, { token: ContainerIdService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
163
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrControlError, isStandalone: false, selector: "clr-control-error", host: { properties: { "class.clr-subtext": "true", "
|
|
163
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrControlError, isStandalone: false, selector: "clr-control-error", host: { properties: { "class.clr-subtext-wrapper": "true", "attr.id": "id" } }, usesInheritance: true, ngImport: i0, template: `
|
|
164
|
+
<cds-icon class="clr-validate-icon" shape="error-standard" status="danger" aria-hidden="true"></cds-icon>
|
|
165
|
+
<span class="clr-subtext error">
|
|
166
|
+
<ng-content></ng-content>
|
|
167
|
+
</span>
|
|
168
|
+
`, isInline: true, dependencies: [{ kind: "component", type: i3.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }] }); }
|
|
164
169
|
}
|
|
165
170
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrControlError, decorators: [{
|
|
166
171
|
type: Component,
|
|
167
172
|
args: [{
|
|
168
173
|
selector: 'clr-control-error',
|
|
169
|
-
template:
|
|
174
|
+
template: `
|
|
175
|
+
<cds-icon class="clr-validate-icon" shape="error-standard" status="danger" aria-hidden="true"></cds-icon>
|
|
176
|
+
<span class="clr-subtext error">
|
|
177
|
+
<ng-content></ng-content>
|
|
178
|
+
</span>
|
|
179
|
+
`,
|
|
170
180
|
host: {
|
|
171
|
-
'[class.clr-subtext]': 'true',
|
|
172
|
-
'[class.error]': 'true',
|
|
181
|
+
'[class.clr-subtext-wrapper]': 'true',
|
|
173
182
|
'[attr.id]': 'id',
|
|
174
183
|
},
|
|
175
184
|
standalone: false,
|
|
@@ -213,6 +222,49 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
213
222
|
type: Optional
|
|
214
223
|
}] }] });
|
|
215
224
|
|
|
225
|
+
/*
|
|
226
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
227
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
228
|
+
* This software is released under MIT license.
|
|
229
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
230
|
+
*/
|
|
231
|
+
class ClrControlSuccess extends ClrAbstractControl {
|
|
232
|
+
constructor(controlIdService, containerIdService) {
|
|
233
|
+
super(controlIdService, containerIdService);
|
|
234
|
+
this.controlIdService = controlIdService;
|
|
235
|
+
this.containerIdService = containerIdService;
|
|
236
|
+
this.controlIdSuffix = CONTROL_SUFFIX.SUCCESS;
|
|
237
|
+
}
|
|
238
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrControlSuccess, deps: [{ token: ControlIdService, optional: true }, { token: ContainerIdService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
239
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrControlSuccess, isStandalone: false, selector: "clr-control-success", host: { properties: { "class.clr-subtext-wrapper": "true", "attr.id": "id" } }, usesInheritance: true, ngImport: i0, template: `
|
|
240
|
+
<cds-icon class="clr-validate-icon" shape="success-standard" status="success" aria-hidden="true"></cds-icon>
|
|
241
|
+
<span class="clr-subtext success">
|
|
242
|
+
<ng-content></ng-content>
|
|
243
|
+
</span>
|
|
244
|
+
`, isInline: true, dependencies: [{ kind: "component", type: i3.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }] }); }
|
|
245
|
+
}
|
|
246
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrControlSuccess, decorators: [{
|
|
247
|
+
type: Component,
|
|
248
|
+
args: [{
|
|
249
|
+
selector: 'clr-control-success',
|
|
250
|
+
template: `
|
|
251
|
+
<cds-icon class="clr-validate-icon" shape="success-standard" status="success" aria-hidden="true"></cds-icon>
|
|
252
|
+
<span class="clr-subtext success">
|
|
253
|
+
<ng-content></ng-content>
|
|
254
|
+
</span>
|
|
255
|
+
`,
|
|
256
|
+
host: {
|
|
257
|
+
'[class.clr-subtext-wrapper]': 'true',
|
|
258
|
+
'[attr.id]': 'id',
|
|
259
|
+
},
|
|
260
|
+
standalone: false,
|
|
261
|
+
}]
|
|
262
|
+
}], ctorParameters: () => [{ type: ControlIdService, decorators: [{
|
|
263
|
+
type: Optional
|
|
264
|
+
}] }, { type: ContainerIdService, decorators: [{
|
|
265
|
+
type: Optional
|
|
266
|
+
}] }] });
|
|
267
|
+
|
|
216
268
|
/*
|
|
217
269
|
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
218
270
|
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
@@ -242,10 +294,7 @@ class LayoutService {
|
|
|
242
294
|
this.minLabelSize = 1;
|
|
243
295
|
this.maxLabelSize = 12;
|
|
244
296
|
this.layout = ClrFormLayout.HORIZONTAL;
|
|
245
|
-
|
|
246
|
-
// String enums cannot be reverse-mapped, meaning ClrFormLayout['COMPACT'] does not return 'compact' so
|
|
247
|
-
// this exists to deal with this little caveat to get the list of the values as an array.
|
|
248
|
-
this.layoutValues = Object.keys(ClrFormLayout).map(key => ClrFormLayout[key]);
|
|
297
|
+
this.layoutValues = Object.values(ClrFormLayout);
|
|
249
298
|
this._labelSize = 2;
|
|
250
299
|
}
|
|
251
300
|
get labelSize() {
|
|
@@ -413,40 +462,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
413
462
|
args: ['click', ['$event']]
|
|
414
463
|
}] } });
|
|
415
464
|
|
|
416
|
-
/*
|
|
417
|
-
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
418
|
-
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
419
|
-
* This software is released under MIT license.
|
|
420
|
-
* The full license information can be found in LICENSE in the root directory of this project.
|
|
421
|
-
*/
|
|
422
|
-
class ClrControlSuccess extends ClrAbstractControl {
|
|
423
|
-
constructor(controlIdService, containerIdService) {
|
|
424
|
-
super(controlIdService, containerIdService);
|
|
425
|
-
this.controlIdService = controlIdService;
|
|
426
|
-
this.containerIdService = containerIdService;
|
|
427
|
-
this.controlIdSuffix = CONTROL_SUFFIX.SUCCESS;
|
|
428
|
-
}
|
|
429
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrControlSuccess, deps: [{ token: ControlIdService, optional: true }, { token: ContainerIdService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
430
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrControlSuccess, isStandalone: false, selector: "clr-control-success", host: { properties: { "class.clr-subtext": "true", "class.success": "true", "attr.id": "id" } }, usesInheritance: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
|
|
431
|
-
}
|
|
432
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrControlSuccess, decorators: [{
|
|
433
|
-
type: Component,
|
|
434
|
-
args: [{
|
|
435
|
-
selector: 'clr-control-success',
|
|
436
|
-
template: `<ng-content></ng-content>`,
|
|
437
|
-
host: {
|
|
438
|
-
'[class.clr-subtext]': 'true',
|
|
439
|
-
'[class.success]': 'true',
|
|
440
|
-
'[attr.id]': 'id',
|
|
441
|
-
},
|
|
442
|
-
standalone: false,
|
|
443
|
-
}]
|
|
444
|
-
}], ctorParameters: () => [{ type: ControlIdService, decorators: [{
|
|
445
|
-
type: Optional
|
|
446
|
-
}] }, { type: ContainerIdService, decorators: [{
|
|
447
|
-
type: Optional
|
|
448
|
-
}] }] });
|
|
449
|
-
|
|
450
465
|
/*
|
|
451
466
|
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
452
467
|
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
@@ -643,12 +658,6 @@ class ClrControlContainer extends ClrAbstractContainer {
|
|
|
643
658
|
<div class="clr-control-container" [ngClass]="controlClass()">
|
|
644
659
|
<div class="clr-input-wrapper">
|
|
645
660
|
<ng-content></ng-content>
|
|
646
|
-
@if (showInvalid) {
|
|
647
|
-
<cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
|
|
648
|
-
}
|
|
649
|
-
@if (showValid) {
|
|
650
|
-
<cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
|
|
651
|
-
}
|
|
652
661
|
</div>
|
|
653
662
|
@if (showHelper) {
|
|
654
663
|
<ng-content select="clr-control-helper"></ng-content>
|
|
@@ -660,7 +669,7 @@ class ClrControlContainer extends ClrAbstractContainer {
|
|
|
660
669
|
<ng-content select="clr-control-success"></ng-content>
|
|
661
670
|
}
|
|
662
671
|
</div>
|
|
663
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "
|
|
672
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: ClrControlLabel, selector: "label", inputs: ["id", "for"] }] }); }
|
|
664
673
|
}
|
|
665
674
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrControlContainer, decorators: [{
|
|
666
675
|
type: Component,
|
|
@@ -674,12 +683,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
674
683
|
<div class="clr-control-container" [ngClass]="controlClass()">
|
|
675
684
|
<div class="clr-input-wrapper">
|
|
676
685
|
<ng-content></ng-content>
|
|
677
|
-
@if (showInvalid) {
|
|
678
|
-
<cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
|
|
679
|
-
}
|
|
680
|
-
@if (showValid) {
|
|
681
|
-
<cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
|
|
682
|
-
}
|
|
683
686
|
</div>
|
|
684
687
|
@if (showHelper) {
|
|
685
688
|
<ng-content select="clr-control-helper"></ng-content>
|
|
@@ -1163,7 +1166,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
1163
1166
|
*/
|
|
1164
1167
|
class ClrCommonFormsModule {
|
|
1165
1168
|
constructor() {
|
|
1166
|
-
ClarityIcons.addIcons(
|
|
1169
|
+
ClarityIcons.addIcons(successStandardIcon, errorStandardIcon);
|
|
1167
1170
|
}
|
|
1168
1171
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrCommonFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1169
1172
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrCommonFormsModule, declarations: [ClrControlLabel,
|
|
@@ -1421,29 +1424,14 @@ class ClrCheckboxContainer extends ClrAbstractContainer$1 {
|
|
|
1421
1424
|
<ng-content select="clr-control-helper"></ng-content>
|
|
1422
1425
|
</div>
|
|
1423
1426
|
}
|
|
1424
|
-
@if (showInvalid
|
|
1425
|
-
<
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
shape="exclamation-circle"
|
|
1430
|
-
status="danger"
|
|
1431
|
-
aria-hidden="true"
|
|
1432
|
-
></cds-icon>
|
|
1433
|
-
}
|
|
1434
|
-
@if (showValid) {
|
|
1435
|
-
<cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
|
|
1436
|
-
}
|
|
1437
|
-
@if (showInvalid) {
|
|
1438
|
-
<ng-content select="clr-control-error"></ng-content>
|
|
1439
|
-
}
|
|
1440
|
-
@if (showValid) {
|
|
1441
|
-
<ng-content select="clr-control-success"></ng-content>
|
|
1442
|
-
}
|
|
1443
|
-
</div>
|
|
1427
|
+
@if (showInvalid) {
|
|
1428
|
+
<ng-content select="clr-control-error"></ng-content>
|
|
1429
|
+
}
|
|
1430
|
+
@if (showValid) {
|
|
1431
|
+
<ng-content select="clr-control-success"></ng-content>
|
|
1444
1432
|
}
|
|
1445
1433
|
</div>
|
|
1446
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "
|
|
1434
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.ClrControlLabel, selector: "label", inputs: ["id", "for"] }] }); }
|
|
1447
1435
|
}
|
|
1448
1436
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrCheckboxContainer, decorators: [{
|
|
1449
1437
|
type: Component,
|
|
@@ -1461,26 +1449,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
1461
1449
|
<ng-content select="clr-control-helper"></ng-content>
|
|
1462
1450
|
</div>
|
|
1463
1451
|
}
|
|
1464
|
-
@if (showInvalid
|
|
1465
|
-
<
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
shape="exclamation-circle"
|
|
1470
|
-
status="danger"
|
|
1471
|
-
aria-hidden="true"
|
|
1472
|
-
></cds-icon>
|
|
1473
|
-
}
|
|
1474
|
-
@if (showValid) {
|
|
1475
|
-
<cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
|
|
1476
|
-
}
|
|
1477
|
-
@if (showInvalid) {
|
|
1478
|
-
<ng-content select="clr-control-error"></ng-content>
|
|
1479
|
-
}
|
|
1480
|
-
@if (showValid) {
|
|
1481
|
-
<ng-content select="clr-control-success"></ng-content>
|
|
1482
|
-
}
|
|
1483
|
-
</div>
|
|
1452
|
+
@if (showInvalid) {
|
|
1453
|
+
<ng-content select="clr-control-error"></ng-content>
|
|
1454
|
+
}
|
|
1455
|
+
@if (showValid) {
|
|
1456
|
+
<ng-content select="clr-control-success"></ng-content>
|
|
1484
1457
|
}
|
|
1485
1458
|
</div>
|
|
1486
1459
|
`,
|
|
@@ -1510,7 +1483,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
1510
1483
|
*/
|
|
1511
1484
|
class ClrCheckboxModule {
|
|
1512
1485
|
constructor() {
|
|
1513
|
-
ClarityIcons.addIcons(
|
|
1486
|
+
ClarityIcons.addIcons(successStandardIcon, errorStandardIcon);
|
|
1514
1487
|
}
|
|
1515
1488
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrCheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1516
1489
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrCheckboxModule, declarations: [ClrCheckbox, ClrCheckboxContainer, ClrCheckboxWrapper], imports: [CommonModule, ClrIcon, ClrCommonFormsModule$1, ClrHostWrappingModule], exports: [ClrCommonFormsModule$1, ClrCheckbox, ClrCheckboxContainer, ClrCheckboxWrapper] }); }
|
|
@@ -1578,12 +1551,6 @@ class ClrComboboxContainer extends ClrAbstractContainer$1 {
|
|
|
1578
1551
|
}
|
|
1579
1552
|
<div class="clr-control-container" [ngClass]="controlClass()" #controlContainer>
|
|
1580
1553
|
<ng-content select="clr-combobox"></ng-content>
|
|
1581
|
-
@if (showInvalid) {
|
|
1582
|
-
<cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
|
|
1583
|
-
}
|
|
1584
|
-
@if (showValid) {
|
|
1585
|
-
<cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
|
|
1586
|
-
}
|
|
1587
1554
|
@if (showHelper) {
|
|
1588
1555
|
<ng-content select="clr-control-helper"></ng-content>
|
|
1589
1556
|
}
|
|
@@ -1594,7 +1561,7 @@ class ClrComboboxContainer extends ClrAbstractContainer$1 {
|
|
|
1594
1561
|
<ng-content select="clr-control-success"></ng-content>
|
|
1595
1562
|
}
|
|
1596
1563
|
</div>
|
|
1597
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "
|
|
1564
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.ClrControlLabel, selector: "label", inputs: ["id", "for"] }] }); }
|
|
1598
1565
|
}
|
|
1599
1566
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrComboboxContainer, decorators: [{
|
|
1600
1567
|
type: Component,
|
|
@@ -1607,12 +1574,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
1607
1574
|
}
|
|
1608
1575
|
<div class="clr-control-container" [ngClass]="controlClass()" #controlContainer>
|
|
1609
1576
|
<ng-content select="clr-combobox"></ng-content>
|
|
1610
|
-
@if (showInvalid) {
|
|
1611
|
-
<cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
|
|
1612
|
-
}
|
|
1613
|
-
@if (showValid) {
|
|
1614
|
-
<cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
|
|
1615
|
-
}
|
|
1616
1577
|
@if (showHelper) {
|
|
1617
1578
|
<ng-content select="clr-control-helper"></ng-content>
|
|
1618
1579
|
}
|
|
@@ -1646,20 +1607,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
1646
1607
|
* This software is released under MIT license.
|
|
1647
1608
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1648
1609
|
*/
|
|
1649
|
-
class
|
|
1610
|
+
class ComboboxModel {
|
|
1611
|
+
constructor() {
|
|
1612
|
+
this.identityFn = (item) => item;
|
|
1613
|
+
}
|
|
1614
|
+
}
|
|
1615
|
+
|
|
1616
|
+
/*
|
|
1617
|
+
* Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
|
|
1618
|
+
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
1619
|
+
* This software is released under MIT license.
|
|
1620
|
+
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1621
|
+
*/
|
|
1622
|
+
class MultiSelectComboboxModel extends ComboboxModel {
|
|
1650
1623
|
containsItem(item) {
|
|
1651
|
-
if (this.model) {
|
|
1652
|
-
|
|
1653
|
-
const includes = this.model.some(modelItem => {
|
|
1654
|
-
return modelItem[this.displayField] === item[this.displayField];
|
|
1655
|
-
});
|
|
1656
|
-
return includes;
|
|
1657
|
-
}
|
|
1658
|
-
else {
|
|
1659
|
-
return this.model.includes(item);
|
|
1660
|
-
}
|
|
1624
|
+
if (!this.model) {
|
|
1625
|
+
return false;
|
|
1661
1626
|
}
|
|
1662
|
-
return
|
|
1627
|
+
return this.model.some(m => this.identityFn(m) === this.identityFn(item));
|
|
1663
1628
|
}
|
|
1664
1629
|
select(item) {
|
|
1665
1630
|
this.addItem(item);
|
|
@@ -1722,7 +1687,7 @@ class MultiSelectComboboxModel {
|
|
|
1722
1687
|
if (this.model === null || this.model === undefined) {
|
|
1723
1688
|
return;
|
|
1724
1689
|
}
|
|
1725
|
-
const index = this.model.
|
|
1690
|
+
const index = this.model.findIndex(m => this.identityFn(m) === this.identityFn(item));
|
|
1726
1691
|
if (index > -1) {
|
|
1727
1692
|
this.model.splice(index, 1);
|
|
1728
1693
|
}
|
|
@@ -1739,9 +1704,9 @@ class MultiSelectComboboxModel {
|
|
|
1739
1704
|
* This software is released under MIT license.
|
|
1740
1705
|
* The full license information can be found in LICENSE in the root directory of this project.
|
|
1741
1706
|
*/
|
|
1742
|
-
class SingleSelectComboboxModel {
|
|
1707
|
+
class SingleSelectComboboxModel extends ComboboxModel {
|
|
1743
1708
|
containsItem(item) {
|
|
1744
|
-
return this.model === item;
|
|
1709
|
+
return this.model !== null && this.identityFn(this.model) === this.identityFn(item);
|
|
1745
1710
|
}
|
|
1746
1711
|
select(item) {
|
|
1747
1712
|
this.model = item;
|
|
@@ -1835,6 +1800,7 @@ class OptionSelectionService {
|
|
|
1835
1800
|
this._currentInput = '';
|
|
1836
1801
|
this._inputChanged = new BehaviorSubject('');
|
|
1837
1802
|
this._selectionChanged = new ReplaySubject(1);
|
|
1803
|
+
this._identityFn = (item) => item;
|
|
1838
1804
|
this.inputChanged = this._inputChanged.asObservable();
|
|
1839
1805
|
}
|
|
1840
1806
|
get displayField() {
|
|
@@ -1865,6 +1831,15 @@ class OptionSelectionService {
|
|
|
1865
1831
|
get multiselectable() {
|
|
1866
1832
|
return this.selectionModel instanceof MultiSelectComboboxModel;
|
|
1867
1833
|
}
|
|
1834
|
+
get identityFn() {
|
|
1835
|
+
return this._identityFn;
|
|
1836
|
+
}
|
|
1837
|
+
set identityFn(value) {
|
|
1838
|
+
this._identityFn = value || ((item) => item);
|
|
1839
|
+
if (this.selectionModel) {
|
|
1840
|
+
this.selectionModel.identityFn = this._identityFn;
|
|
1841
|
+
}
|
|
1842
|
+
}
|
|
1868
1843
|
select(item) {
|
|
1869
1844
|
if (item === null || item === undefined || this.selectionModel.containsItem(item)) {
|
|
1870
1845
|
return;
|
|
@@ -1891,13 +1866,12 @@ class OptionSelectionService {
|
|
|
1891
1866
|
this.selectionModel.unselect(item);
|
|
1892
1867
|
this._selectionChanged.next(this.selectionModel);
|
|
1893
1868
|
}
|
|
1894
|
-
// TODO: Add support for trackBy and compareFn
|
|
1895
1869
|
setSelectionValue(value) {
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
if (
|
|
1870
|
+
if (!this.selectionModel) {
|
|
1871
|
+
return;
|
|
1872
|
+
}
|
|
1873
|
+
const current = this.selectionModel.model;
|
|
1874
|
+
if (this.valuesEqualByIdentity(current, value)) {
|
|
1901
1875
|
return;
|
|
1902
1876
|
}
|
|
1903
1877
|
this.selectionModel.model = value;
|
|
@@ -1911,6 +1885,39 @@ class OptionSelectionService {
|
|
|
1911
1885
|
}
|
|
1912
1886
|
return value;
|
|
1913
1887
|
}
|
|
1888
|
+
valuesEqualByIdentity(current, value) {
|
|
1889
|
+
if (current === value) {
|
|
1890
|
+
return true;
|
|
1891
|
+
}
|
|
1892
|
+
// Check if both are null or undefined or empty string.
|
|
1893
|
+
if ((current === null || current === undefined || current === '') &&
|
|
1894
|
+
(value === null || value === undefined || value === '')) {
|
|
1895
|
+
return true;
|
|
1896
|
+
}
|
|
1897
|
+
// Check if one is null or undefined or empty string and the other is not.
|
|
1898
|
+
if (current === null ||
|
|
1899
|
+
current === undefined ||
|
|
1900
|
+
current === '' ||
|
|
1901
|
+
value === null ||
|
|
1902
|
+
value === undefined ||
|
|
1903
|
+
value === '') {
|
|
1904
|
+
return false;
|
|
1905
|
+
}
|
|
1906
|
+
if (this.multiselectable) {
|
|
1907
|
+
const cur = current;
|
|
1908
|
+
const val = value;
|
|
1909
|
+
if (cur.length !== val.length) {
|
|
1910
|
+
return false;
|
|
1911
|
+
}
|
|
1912
|
+
// We only consider values equal if they are ordered the same way.
|
|
1913
|
+
const curIds = cur.map(this._identityFn);
|
|
1914
|
+
const valIds = val.map(this._identityFn);
|
|
1915
|
+
return curIds.every((id, i) => id === valIds[i]);
|
|
1916
|
+
}
|
|
1917
|
+
else {
|
|
1918
|
+
return this._identityFn(current) === this._identityFn(value);
|
|
1919
|
+
}
|
|
1920
|
+
}
|
|
1914
1921
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: OptionSelectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1915
1922
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: OptionSelectionService }); }
|
|
1916
1923
|
}
|
|
@@ -2035,7 +2042,7 @@ class ComboboxFocusHandler {
|
|
|
2035
2042
|
// this service is only interested in keys that may move the focus
|
|
2036
2043
|
handleTextInput(event) {
|
|
2037
2044
|
let preventDefault = false;
|
|
2038
|
-
const key =
|
|
2045
|
+
const key = event.key;
|
|
2039
2046
|
if (event) {
|
|
2040
2047
|
switch (key) {
|
|
2041
2048
|
case Keys.Enter:
|
|
@@ -2092,18 +2099,12 @@ class ComboboxFocusHandler {
|
|
|
2092
2099
|
this.renderer.listen(el, 'blur', event => {
|
|
2093
2100
|
if (this.focusOutOfComponent(event)) {
|
|
2094
2101
|
this.popoverService.open = false;
|
|
2095
|
-
// Workaround for popover close-on-outside-click timing issues in Edge browser
|
|
2096
|
-
if (this.componentCdRef) {
|
|
2097
|
-
this.componentCdRef.detectChanges();
|
|
2098
|
-
}
|
|
2099
2102
|
}
|
|
2100
2103
|
});
|
|
2101
2104
|
}
|
|
2102
2105
|
}
|
|
2103
2106
|
focusOutOfComponent(event) {
|
|
2104
|
-
|
|
2105
|
-
// which points to the element that becomes active as the blur event occurs on the input.
|
|
2106
|
-
const target = (event.relatedTarget || document.activeElement);
|
|
2107
|
+
const target = event.relatedTarget;
|
|
2107
2108
|
return !(this.textInput.contains(target) || this.trigger.contains(target) || this.listbox.contains(target));
|
|
2108
2109
|
}
|
|
2109
2110
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ComboboxFocusHandler, deps: [{ token: i0.RendererFactory2 }, { token: i1$3.ClrPopoverService }, { token: OptionSelectionService }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -2295,7 +2296,7 @@ class ClrOptions {
|
|
|
2295
2296
|
loadingStateChange(state) {
|
|
2296
2297
|
this.loading = state === ClrLoadingState.LOADING;
|
|
2297
2298
|
}
|
|
2298
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrOptions, deps: [{ token: OptionSelectionService }, { token: IF_ACTIVE_ID }, { token: i0.ElementRef }, { token: i2$1.ClrCommonStringsService }, { token: ComboboxFocusHandler }, { token: i1$3.ClrPopoverService }, { token:
|
|
2299
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrOptions, deps: [{ token: OptionSelectionService }, { token: IF_ACTIVE_ID }, { token: i0.ElementRef }, { token: i2$1.ClrCommonStringsService }, { token: ComboboxFocusHandler }, { token: i1$3.ClrPopoverService }, { token: POPOVER_HOST_ORIGIN, optional: true }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2299
2300
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrOptions, isStandalone: false, selector: "clr-options", inputs: { optionsId: ["id", "optionsId"] }, host: { properties: { "class.clr-combobox-options": "true", "class.clr-combobox-options-hidden": "emptyOptions && editable", "attr.role": "\"listbox\"", "id": "optionsId" } }, providers: [{ provide: LoadingListener, useExisting: ClrOptions }], queries: [{ propertyName: "items", predicate: ClrOption, descendants: true }], ngImport: i0, template: `
|
|
2300
2301
|
@if (optionSelectionService.loading) {
|
|
2301
2302
|
<div class="clr-combobox-options-loading">
|
|
@@ -2365,7 +2366,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
2365
2366
|
type: Optional
|
|
2366
2367
|
}, {
|
|
2367
2368
|
type: Inject,
|
|
2368
|
-
args: [
|
|
2369
|
+
args: [POPOVER_HOST_ORIGIN]
|
|
2369
2370
|
}] }, { type: undefined, decorators: [{
|
|
2370
2371
|
type: Inject,
|
|
2371
2372
|
args: [DOCUMENT]
|
|
@@ -2412,8 +2413,7 @@ class ClrCombobox extends WrappedFormControl$1 {
|
|
|
2412
2413
|
control.valueAccessor = this;
|
|
2413
2414
|
}
|
|
2414
2415
|
// default to SingleSelectComboboxModel, in case the optional input [ClrMulti] isn't used
|
|
2415
|
-
|
|
2416
|
-
this.updateControlValue();
|
|
2416
|
+
this.multiSelect = false;
|
|
2417
2417
|
}
|
|
2418
2418
|
get editable() {
|
|
2419
2419
|
return this.optionSelectionService.editable;
|
|
@@ -2421,6 +2421,9 @@ class ClrCombobox extends WrappedFormControl$1 {
|
|
|
2421
2421
|
set editable(value) {
|
|
2422
2422
|
this.optionSelectionService.editable = value;
|
|
2423
2423
|
}
|
|
2424
|
+
set identityFn(value) {
|
|
2425
|
+
this.optionSelectionService.identityFn = value;
|
|
2426
|
+
}
|
|
2424
2427
|
get multiSelect() {
|
|
2425
2428
|
return this.optionSelectionService.multiselectable;
|
|
2426
2429
|
}
|
|
@@ -2433,6 +2436,7 @@ class ClrCombobox extends WrappedFormControl$1 {
|
|
|
2433
2436
|
// since the initial call to writeValue (caused by [ngModel] input) should happen after this
|
|
2434
2437
|
this.optionSelectionService.selectionModel = new SingleSelectComboboxModel();
|
|
2435
2438
|
}
|
|
2439
|
+
this.optionSelectionService.selectionModel.identityFn = this.optionSelectionService.identityFn;
|
|
2436
2440
|
this.updateControlValue();
|
|
2437
2441
|
}
|
|
2438
2442
|
// Override the id of WrappedFormControl, as we want to move it to the embedded input.
|
|
@@ -2492,7 +2496,6 @@ class ClrCombobox extends WrappedFormControl$1 {
|
|
|
2492
2496
|
}
|
|
2493
2497
|
}
|
|
2494
2498
|
ngAfterViewInit() {
|
|
2495
|
-
this.focusHandler.componentCdRef = this.cdr;
|
|
2496
2499
|
this.focusHandler.textInput = this.textbox.nativeElement;
|
|
2497
2500
|
this.focusHandler.trigger = this.trigger.nativeElement;
|
|
2498
2501
|
// The text input is the actual element we are wrapping
|
|
@@ -2656,13 +2659,13 @@ class ClrCombobox extends WrappedFormControl$1 {
|
|
|
2656
2659
|
return [this.optionSelectionService.selectionModel.model];
|
|
2657
2660
|
}
|
|
2658
2661
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrCombobox, deps: [{ token: i0.ViewContainerRef }, { token: i0.Injector }, { token: i1$1.NgControl, optional: true, self: true }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: OptionSelectionService }, { token: i2$1.ClrCommonStringsService }, { token: i1$3.ClrPopoverService }, { token: ComboboxContainerService, optional: true }, { token: PLATFORM_ID }, { token: ComboboxFocusHandler }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2659
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrCombobox, isStandalone: false, selector: "clr-combobox", inputs: { placeholder: "placeholder", editable: ["clrEditable", "editable"], multiSelect: ["clrMulti", "multiSelect"] }, outputs: { clrInputChange: "clrInputChange", clrOpenChange: "clrOpenChange", clrSelectionChange: "clrSelectionChange" }, host: { listeners: { "keydown": "onKeyUp($event)" }, properties: { "class.aria-required": "true", "class.clr-combobox": "true", "class.clr-combobox-disabled": "control?.disabled" } }, providers: [
|
|
2662
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrCombobox, isStandalone: false, selector: "clr-combobox", inputs: { placeholder: "placeholder", editable: ["clrEditable", "editable"], identityFn: ["clrComboboxIdentityFn", "identityFn"], multiSelect: ["clrMulti", "multiSelect"] }, outputs: { clrInputChange: "clrInputChange", clrOpenChange: "clrOpenChange", clrSelectionChange: "clrSelectionChange" }, host: { listeners: { "keydown": "onKeyUp($event)" }, properties: { "class.aria-required": "true", "class.clr-combobox": "true", "class.clr-combobox-disabled": "control?.disabled" } }, providers: [
|
|
2660
2663
|
OptionSelectionService,
|
|
2661
2664
|
{ provide: LoadingListener, useExisting: ClrCombobox },
|
|
2662
2665
|
IF_ACTIVE_ID_PROVIDER,
|
|
2663
2666
|
FOCUS_SERVICE_PROVIDER,
|
|
2664
2667
|
COMBOBOX_FOCUS_HANDLER_PROVIDER,
|
|
2665
|
-
], queries: [{ propertyName: "optionSelected", first: true, predicate: ClrOptionSelected, descendants: true }, { propertyName: "options", first: true, predicate: ClrOptions, descendants: true }], viewQueries: [{ propertyName: "textbox", first: true, predicate: ["textboxInput"], descendants: true }, { propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }], usesInheritance: true, hostDirectives: [{ directive: i1$3.ClrPopoverHostDirective }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<!-- The (click) handler is needed to auto-focus on input field which can not currently occupy the whole\nwidth of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n
|
|
2668
|
+
], queries: [{ propertyName: "optionSelected", first: true, predicate: ClrOptionSelected, descendants: true }, { propertyName: "options", first: true, predicate: ClrOptions, descendants: true }], viewQueries: [{ propertyName: "textbox", first: true, predicate: ["textboxInput"], descendants: true }, { propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }], usesInheritance: true, hostDirectives: [{ directive: i1$3.ClrPopoverHostDirective }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<!-- The (click) handler is needed to auto-focus on input field which can not currently occupy the whole\nwidth of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverOrigin\n (click)=\"onWrapperClick($event)\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"(control?.control.touched && control?.invalid)\"\n [class.disabled]=\"control?.disabled\"\n>\n @if (multiSelect && optionSelectionService.selectionModel.model && multiSelectModel.length > 0) {\n <span\n role=\"grid\"\n clrRovingTabindex\n [clrRovingTabindexDisabled]=\"control?.disabled\"\n clrDirection=\"both\"\n [attr.aria-label]=\"getSelectionAriaLabel()\"\n [attr.aria-disabled]=\"control?.disabled? true: null\"\n class=\"clr-combobox-pills\"\n >\n @for (item of multiSelectModel; track item; let i = $index) {\n <span class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n @if (optionSelected) {\n <ng-container\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n ></ng-container>\n }\n </span>\n </span>\n <span role=\"gridcell\">\n <button\n clrKeyFocusItem\n type=\"button\"\n class=\"clr-combobox-remove-btn\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxDelete + ' ' + optionSelectionService.selectionModel.toString(displayField, i)\"\n (click)=\"unselect(item)\"\n >\n <cds-icon shape=\"window-close\" size=\"12\"></cds-icon>\n </button>\n </span>\n </span>\n }\n </span>\n }\n\n <input\n #textboxInput\n type=\"text\"\n role=\"combobox\"\n [id]=\"inputId()\"\n class=\"clr-input clr-combobox-input\"\n [(ngModel)]=\"searchText\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus()\"\n (change)=\"onChange()\"\n [attr.aria-expanded]=\"openState\"\n [attr.aria-owns]=\"ariaOwns\"\n aria-haspopup=\"listbox\"\n aria-autocomplete=\"list\"\n autocomplete=\"off\"\n [attr.aria-invalid]=\"control?.invalid? true: null\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-activedescendant]=\"getActiveDescendant()\"\n [attr.placeholder]=\"placeholder\"\n />\n\n <!-- No click handler, as it uses the handler on the .clr-combobox-wrapper -->\n <button\n #trigger\n type=\"button\"\n class=\"clr-combobox-trigger\"\n tabindex=\"-1\"\n [disabled]=\"control?.disabled || null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxOpen\"\n >\n <cds-icon shape=\"angle\" direction=\"down\"></cds-icon>\n </button>\n\n <div class=\"clr-focus-indicator\" [class.clr-focus]=\"focused\"></div>\n</div>\n\n<!-- Both close handlers are handled manually.\n'outsideClickToClose' has complex handling that's necessary\nto be manual due to the component architecture -->\n<div role=\"dialog\" *clrPopoverContent=\"openState; at popoverPosition; type: popoverType;\">\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.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$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "component", type: i2$1.ClrRovingTabindex, selector: "[clrRovingTabindex]", inputs: ["clrRovingTabindex", "clrRovingTabindexDisabled"] }, { kind: "directive", type: i2$1.ClrKeyFocusItem, selector: "[clrKeyFocusItem]" }, { kind: "directive", type: i1$3.ClrPopoverOrigin, selector: "[clrPopoverOrigin]" }, { kind: "directive", type: i1$3.ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentAvailablePositions", "clrPopoverContentType", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose", "clrPopoverContentOrigin"] }] }); }
|
|
2666
2669
|
}
|
|
2667
2670
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrCombobox, decorators: [{
|
|
2668
2671
|
type: Component,
|
|
@@ -2676,7 +2679,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
2676
2679
|
'[class.aria-required]': 'true',
|
|
2677
2680
|
'[class.clr-combobox]': 'true',
|
|
2678
2681
|
'[class.clr-combobox-disabled]': 'control?.disabled',
|
|
2679
|
-
}, standalone: false, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<!-- The (click) handler is needed to auto-focus on input field which can not currently occupy the whole\nwidth of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n
|
|
2682
|
+
}, standalone: false, template: "<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<!-- The (click) handler is needed to auto-focus on input field which can not currently occupy the whole\nwidth of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverOrigin\n (click)=\"onWrapperClick($event)\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"(control?.control.touched && control?.invalid)\"\n [class.disabled]=\"control?.disabled\"\n>\n @if (multiSelect && optionSelectionService.selectionModel.model && multiSelectModel.length > 0) {\n <span\n role=\"grid\"\n clrRovingTabindex\n [clrRovingTabindexDisabled]=\"control?.disabled\"\n clrDirection=\"both\"\n [attr.aria-label]=\"getSelectionAriaLabel()\"\n [attr.aria-disabled]=\"control?.disabled? true: null\"\n class=\"clr-combobox-pills\"\n >\n @for (item of multiSelectModel; track item; let i = $index) {\n <span class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n @if (optionSelected) {\n <ng-container\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n ></ng-container>\n }\n </span>\n </span>\n <span role=\"gridcell\">\n <button\n clrKeyFocusItem\n type=\"button\"\n class=\"clr-combobox-remove-btn\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxDelete + ' ' + optionSelectionService.selectionModel.toString(displayField, i)\"\n (click)=\"unselect(item)\"\n >\n <cds-icon shape=\"window-close\" size=\"12\"></cds-icon>\n </button>\n </span>\n </span>\n }\n </span>\n }\n\n <input\n #textboxInput\n type=\"text\"\n role=\"combobox\"\n [id]=\"inputId()\"\n class=\"clr-input clr-combobox-input\"\n [(ngModel)]=\"searchText\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus()\"\n (change)=\"onChange()\"\n [attr.aria-expanded]=\"openState\"\n [attr.aria-owns]=\"ariaOwns\"\n aria-haspopup=\"listbox\"\n aria-autocomplete=\"list\"\n autocomplete=\"off\"\n [attr.aria-invalid]=\"control?.invalid? true: null\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-activedescendant]=\"getActiveDescendant()\"\n [attr.placeholder]=\"placeholder\"\n />\n\n <!-- No click handler, as it uses the handler on the .clr-combobox-wrapper -->\n <button\n #trigger\n type=\"button\"\n class=\"clr-combobox-trigger\"\n tabindex=\"-1\"\n [disabled]=\"control?.disabled || null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxOpen\"\n >\n <cds-icon shape=\"angle\" direction=\"down\"></cds-icon>\n </button>\n\n <div class=\"clr-focus-indicator\" [class.clr-focus]=\"focused\"></div>\n</div>\n\n<!-- Both close handlers are handled manually.\n'outsideClickToClose' has complex handling that's necessary\nto be manual due to the component architecture -->\n<div role=\"dialog\" *clrPopoverContent=\"openState; at popoverPosition; type: popoverType;\">\n <ng-content></ng-content>\n</div>\n" }]
|
|
2680
2683
|
}], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.Injector }, { type: i1$1.NgControl, decorators: [{
|
|
2681
2684
|
type: Self
|
|
2682
2685
|
}, {
|
|
@@ -2713,6 +2716,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
2713
2716
|
}], editable: [{
|
|
2714
2717
|
type: Input,
|
|
2715
2718
|
args: ['clrEditable']
|
|
2719
|
+
}], identityFn: [{
|
|
2720
|
+
type: Input,
|
|
2721
|
+
args: ['clrComboboxIdentityFn']
|
|
2716
2722
|
}], multiSelect: [{
|
|
2717
2723
|
type: Input,
|
|
2718
2724
|
args: ['clrMulti']
|
|
@@ -2874,7 +2880,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
2874
2880
|
*/
|
|
2875
2881
|
class ClrComboboxModule {
|
|
2876
2882
|
constructor() {
|
|
2877
|
-
ClarityIcons.addIcons(
|
|
2883
|
+
ClarityIcons.addIcons(successStandardIcon, errorStandardIcon, angleIcon, windowCloseIcon);
|
|
2878
2884
|
}
|
|
2879
2885
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrComboboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2880
2886
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrComboboxModule, declarations: [ClrCombobox,
|
|
@@ -3060,12 +3066,6 @@ class ClrDatalistContainer extends ClrAbstractContainer$1 {
|
|
|
3060
3066
|
<ng-content select="datalist"></ng-content>
|
|
3061
3067
|
<cds-icon shape="angle" class="clr-datalist-caret" direction="down" (click)="showPicker(datalist)"></cds-icon>
|
|
3062
3068
|
</div>
|
|
3063
|
-
@if (showInvalid) {
|
|
3064
|
-
<cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
|
|
3065
|
-
}
|
|
3066
|
-
@if (showValid) {
|
|
3067
|
-
<cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
|
|
3068
|
-
}
|
|
3069
3069
|
</div>
|
|
3070
3070
|
@if (showHelper) {
|
|
3071
3071
|
<ng-content select="clr-control-helper"></ng-content>
|
|
@@ -3095,12 +3095,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
3095
3095
|
<ng-content select="datalist"></ng-content>
|
|
3096
3096
|
<cds-icon shape="angle" class="clr-datalist-caret" direction="down" (click)="showPicker(datalist)"></cds-icon>
|
|
3097
3097
|
</div>
|
|
3098
|
-
@if (showInvalid) {
|
|
3099
|
-
<cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
|
|
3100
|
-
}
|
|
3101
|
-
@if (showValid) {
|
|
3102
|
-
<cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
|
|
3103
|
-
}
|
|
3104
3098
|
</div>
|
|
3105
3099
|
@if (showHelper) {
|
|
3106
3100
|
<ng-content select="clr-control-helper"></ng-content>
|
|
@@ -3187,7 +3181,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
3187
3181
|
*/
|
|
3188
3182
|
class ClrDatalistModule {
|
|
3189
3183
|
constructor() {
|
|
3190
|
-
ClarityIcons.addIcons(
|
|
3184
|
+
ClarityIcons.addIcons(successStandardIcon, errorStandardIcon);
|
|
3191
3185
|
}
|
|
3192
3186
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDatalistModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
3193
3187
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrDatalistModule, declarations: [ClrDatalist, ClrDatalistInput, ClrDatalistContainer], imports: [CommonModule, ClrInputModule$1, ClrIcon], exports: [ClrDatalist, ClrDatalistInput, ClrDatalistContainer] }); }
|
|
@@ -3510,10 +3504,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
3510
3504
|
*/
|
|
3511
3505
|
class DateIOService {
|
|
3512
3506
|
constructor(localeHelperService) {
|
|
3507
|
+
/**
|
|
3508
|
+
* This is the default range. It approximates the beginning of time to the end of time.
|
|
3509
|
+
* The disabled dates are the dates that are not allowed to be selected.
|
|
3510
|
+
* The min date is the earliest date that can be selected.
|
|
3511
|
+
* The max date is the latest date that can be selected.
|
|
3512
|
+
* Unless a minDate or maxDate is set with the native HTML5 api the range is all dates
|
|
3513
|
+
*/
|
|
3513
3514
|
this.disabledDates = {
|
|
3514
|
-
// This is the default range. It approximates the beginning of time to the end of time.
|
|
3515
|
-
// Unless a minDate or maxDate is set with the native HTML5 api the range is all dates
|
|
3516
|
-
// TODO: turn this into an Array of min/max ranges that allow configuration of multiple ranges.
|
|
3517
3515
|
minDate: new DayModel(0, 0, 1),
|
|
3518
3516
|
maxDate: new DayModel(9999, 11, 31),
|
|
3519
3517
|
};
|
|
@@ -4168,7 +4166,7 @@ class ClrMonthpicker {
|
|
|
4168
4166
|
// the logic is fairly simple and it didn't make sense for me
|
|
4169
4167
|
// to create extra observables just to move this logic to the service.
|
|
4170
4168
|
if (event) {
|
|
4171
|
-
const key =
|
|
4169
|
+
const key = event.key;
|
|
4172
4170
|
if (key === Keys.ArrowUp && this._focusedMonthIndex > 1) {
|
|
4173
4171
|
event.preventDefault();
|
|
4174
4172
|
this._focusedMonthIndex -= 2;
|
|
@@ -4515,7 +4513,7 @@ class ClrYearpicker {
|
|
|
4515
4513
|
// the logic is fairly simple and it didn't make sense for me
|
|
4516
4514
|
// to create extra observables just to move this logic to the service.
|
|
4517
4515
|
if (event) {
|
|
4518
|
-
const key =
|
|
4516
|
+
const key = event.key;
|
|
4519
4517
|
if (key === Keys.ArrowUp) {
|
|
4520
4518
|
event.preventDefault();
|
|
4521
4519
|
this.incrementFocusYearBy(-2);
|
|
@@ -5162,7 +5160,7 @@ class ClrCalendar {
|
|
|
5162
5160
|
*/
|
|
5163
5161
|
onKeyDown(event) {
|
|
5164
5162
|
if (event && this.focusedDay) {
|
|
5165
|
-
switch (
|
|
5163
|
+
switch (event.key) {
|
|
5166
5164
|
case Keys.ArrowUp:
|
|
5167
5165
|
event.preventDefault();
|
|
5168
5166
|
this._dateNavigationService.incrementFocusDay(-1 * NO_OF_DAYS_IN_A_WEEK);
|
|
@@ -5632,7 +5630,7 @@ class ClrDateContainer extends ClrAbstractContainer$1 {
|
|
|
5632
5630
|
<label></label>
|
|
5633
5631
|
}
|
|
5634
5632
|
<div class="clr-control-container" [ngClass]="controlClass()">
|
|
5635
|
-
<div class="clr-input-wrapper"
|
|
5633
|
+
<div class="clr-input-wrapper" clrPopoverOrigin>
|
|
5636
5634
|
<div class="clr-input-group" [class.clr-focus]="focus">
|
|
5637
5635
|
<!-- render range inputs only if using clr-date-range-container -->
|
|
5638
5636
|
@if (isRangePicker) {
|
|
@@ -5664,12 +5662,6 @@ class ClrDateContainer extends ClrAbstractContainer$1 {
|
|
|
5664
5662
|
cdkTrapFocus
|
|
5665
5663
|
></clr-datepicker-view-manager>
|
|
5666
5664
|
</div>
|
|
5667
|
-
@if (showInvalid) {
|
|
5668
|
-
<cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
|
|
5669
|
-
}
|
|
5670
|
-
@if (showValid) {
|
|
5671
|
-
<cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
|
|
5672
|
-
}
|
|
5673
5665
|
</div>
|
|
5674
5666
|
@if (showHelper) {
|
|
5675
5667
|
<ng-content select="clr-control-helper"></ng-content>
|
|
@@ -5681,7 +5673,7 @@ class ClrDateContainer extends ClrAbstractContainer$1 {
|
|
|
5681
5673
|
<ng-content select="clr-control-success"></ng-content>
|
|
5682
5674
|
}
|
|
5683
5675
|
</div>
|
|
5684
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]" }, { kind: "directive", type: i1$3.
|
|
5676
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]" }, { kind: "directive", type: i1$3.ClrPopoverOrigin, selector: "[clrPopoverOrigin]" }, { kind: "directive", type: i1$3.ÇlrClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { kind: "directive", type: i1$3.ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentAvailablePositions", "clrPopoverContentType", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose", "clrPopoverContentOrigin"] }, { kind: "component", type: i3.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }, { kind: "directive", type: i1$2.ClrControlLabel, selector: "label", inputs: ["id", "for"] }, { kind: "component", type: ClrDatepickerViewManager, selector: "clr-datepicker-view-manager" }] }); }
|
|
5685
5677
|
}
|
|
5686
5678
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDateContainer, decorators: [{
|
|
5687
5679
|
type: Component,
|
|
@@ -5693,7 +5685,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
5693
5685
|
<label></label>
|
|
5694
5686
|
}
|
|
5695
5687
|
<div class="clr-control-container" [ngClass]="controlClass()">
|
|
5696
|
-
<div class="clr-input-wrapper"
|
|
5688
|
+
<div class="clr-input-wrapper" clrPopoverOrigin>
|
|
5697
5689
|
<div class="clr-input-group" [class.clr-focus]="focus">
|
|
5698
5690
|
<!-- render range inputs only if using clr-date-range-container -->
|
|
5699
5691
|
@if (isRangePicker) {
|
|
@@ -5725,12 +5717,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
5725
5717
|
cdkTrapFocus
|
|
5726
5718
|
></clr-datepicker-view-manager>
|
|
5727
5719
|
</div>
|
|
5728
|
-
@if (showInvalid) {
|
|
5729
|
-
<cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
|
|
5730
|
-
}
|
|
5731
|
-
@if (showValid) {
|
|
5732
|
-
<cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
|
|
5733
|
-
}
|
|
5734
5720
|
</div>
|
|
5735
5721
|
@if (showHelper) {
|
|
5736
5722
|
<ng-content select="clr-control-helper"></ng-content>
|
|
@@ -6343,7 +6329,7 @@ const CLR_DATEPICKER_DIRECTIVES = [
|
|
|
6343
6329
|
];
|
|
6344
6330
|
class ClrDatepickerModule {
|
|
6345
6331
|
constructor() {
|
|
6346
|
-
ClarityIcons.addIcons(
|
|
6332
|
+
ClarityIcons.addIcons(successStandardIcon, errorStandardIcon, angleIcon, eventIcon, calendarIcon);
|
|
6347
6333
|
}
|
|
6348
6334
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
6349
6335
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrDatepickerModule, declarations: [ClrDateInput,
|
|
@@ -6445,15 +6431,23 @@ function clearFiles(fileInputElement) {
|
|
|
6445
6431
|
const CLR_FILE_MESSAGES_TEMPLATE_CONTEXT = new InjectionToken('ClrFileMessagesTemplateContext');
|
|
6446
6432
|
class ClrFileInfo {
|
|
6447
6433
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrFileInfo, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6448
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrFileInfo, isStandalone: false, selector: "clr-file-info", host: { properties: { "class.clr-subtext": "true" } }, ngImport: i0, template:
|
|
6434
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrFileInfo, isStandalone: false, selector: "clr-file-info", host: { properties: { "class.clr-subtext-wrapper": "true" } }, ngImport: i0, template: `
|
|
6435
|
+
<span class="clr-subtext">
|
|
6436
|
+
<ng-content></ng-content>
|
|
6437
|
+
</span>
|
|
6438
|
+
`, isInline: true }); }
|
|
6449
6439
|
}
|
|
6450
6440
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrFileInfo, decorators: [{
|
|
6451
6441
|
type: Component,
|
|
6452
6442
|
args: [{
|
|
6453
6443
|
selector: 'clr-file-info',
|
|
6454
|
-
template:
|
|
6444
|
+
template: `
|
|
6445
|
+
<span class="clr-subtext">
|
|
6446
|
+
<ng-content></ng-content>
|
|
6447
|
+
</span>
|
|
6448
|
+
`,
|
|
6455
6449
|
host: {
|
|
6456
|
-
'[class.clr-subtext]': 'true',
|
|
6450
|
+
'[class.clr-subtext-wrapper]': 'true',
|
|
6457
6451
|
},
|
|
6458
6452
|
standalone: false,
|
|
6459
6453
|
}]
|
|
@@ -6463,39 +6457,57 @@ class ClrFileSuccess {
|
|
|
6463
6457
|
this.context = inject(CLR_FILE_MESSAGES_TEMPLATE_CONTEXT);
|
|
6464
6458
|
}
|
|
6465
6459
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrFileSuccess, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6466
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrFileSuccess, isStandalone: false, selector: "clr-file-success", host: { properties: { "style.display": "context.success ? \"
|
|
6467
|
-
|
|
6468
|
-
|
|
6460
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrFileSuccess, isStandalone: false, selector: "clr-file-success", host: { properties: { "style.display": "context.success ? \"flex\" : \"none\"", "class.clr-subtext-wrapper": "true" } }, ngImport: i0, template: `
|
|
6461
|
+
@if (context.success) {
|
|
6462
|
+
<cds-icon class="clr-validate-icon" shape="success-standard" status="success" aria-hidden="true"></cds-icon>
|
|
6463
|
+
<span class="clr-subtext success">
|
|
6464
|
+
<ng-content></ng-content>
|
|
6465
|
+
</span>
|
|
6466
|
+
}
|
|
6467
|
+
`, isInline: true, dependencies: [{ kind: "component", type: i3.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }] }); }
|
|
6469
6468
|
}
|
|
6470
6469
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrFileSuccess, decorators: [{
|
|
6471
6470
|
type: Component,
|
|
6472
6471
|
args: [{
|
|
6473
6472
|
selector: 'clr-file-success',
|
|
6474
6473
|
// We check for success here so that consumers don't have to.
|
|
6475
|
-
template:
|
|
6476
|
-
|
|
6477
|
-
|
|
6474
|
+
template: `
|
|
6475
|
+
@if (context.success) {
|
|
6476
|
+
<cds-icon class="clr-validate-icon" shape="success-standard" status="success" aria-hidden="true"></cds-icon>
|
|
6477
|
+
<span class="clr-subtext success">
|
|
6478
|
+
<ng-content></ng-content>
|
|
6479
|
+
</span>
|
|
6480
|
+
}
|
|
6481
|
+
`,
|
|
6478
6482
|
host: {
|
|
6479
|
-
'[style.display]': 'context.success ? "
|
|
6480
|
-
'[class.clr-subtext]': 'true',
|
|
6481
|
-
'[class.success]': 'true',
|
|
6483
|
+
'[style.display]': 'context.success ? "flex" : "none"',
|
|
6484
|
+
'[class.clr-subtext-wrapper]': 'true',
|
|
6482
6485
|
},
|
|
6483
6486
|
standalone: false,
|
|
6484
6487
|
}]
|
|
6485
6488
|
}] });
|
|
6486
6489
|
class ClrFileError {
|
|
6487
6490
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrFileError, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6488
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrFileError, isStandalone: false, selector: "clr-file-error", host: { properties: { "class.clr-subtext": "true"
|
|
6491
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.3", type: ClrFileError, isStandalone: false, selector: "clr-file-error", host: { properties: { "class.clr-subtext-wrapper": "true" } }, ngImport: i0, template: `
|
|
6492
|
+
<cds-icon class="clr-validate-icon" shape="error-standard" status="danger" aria-hidden="true"></cds-icon>
|
|
6493
|
+
<span class="clr-subtext error">
|
|
6494
|
+
<ng-content></ng-content>
|
|
6495
|
+
</span>
|
|
6496
|
+
`, isInline: true, dependencies: [{ kind: "component", type: i3.ClrIcon, selector: "clr-icon, cds-icon", inputs: ["shape", "size", "direction", "flip", "solid", "status", "inverse", "badge"] }] }); }
|
|
6489
6497
|
}
|
|
6490
6498
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrFileError, decorators: [{
|
|
6491
6499
|
type: Component,
|
|
6492
6500
|
args: [{
|
|
6493
6501
|
selector: 'clr-file-error',
|
|
6494
|
-
// The host should have an
|
|
6495
|
-
template:
|
|
6502
|
+
// The host should have an `*ngIf` or `@if` that checks for the relevant error.
|
|
6503
|
+
template: `
|
|
6504
|
+
<cds-icon class="clr-validate-icon" shape="error-standard" status="danger" aria-hidden="true"></cds-icon>
|
|
6505
|
+
<span class="clr-subtext error">
|
|
6506
|
+
<ng-content></ng-content>
|
|
6507
|
+
</span>
|
|
6508
|
+
`,
|
|
6496
6509
|
host: {
|
|
6497
|
-
'[class.clr-subtext]': 'true',
|
|
6498
|
-
'[class.error]': 'true',
|
|
6510
|
+
'[class.clr-subtext-wrapper]': 'true',
|
|
6499
6511
|
},
|
|
6500
6512
|
standalone: false,
|
|
6501
6513
|
}]
|
|
@@ -6533,6 +6545,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
6533
6545
|
*/
|
|
6534
6546
|
class ClrFileList {
|
|
6535
6547
|
constructor() {
|
|
6548
|
+
this.injectorCache = new Map();
|
|
6549
|
+
this.contextCache = new Map();
|
|
6536
6550
|
this.injector = inject(Injector);
|
|
6537
6551
|
this.commonStrings = inject(ClrCommonStringsService);
|
|
6538
6552
|
this.ngControlService = inject(NgControlService$1, { optional: true });
|
|
@@ -6571,7 +6585,17 @@ class ClrFileList {
|
|
|
6571
6585
|
maxFileSize: fileInputErrors.maxFileSize?.find(error => error.name === file.name),
|
|
6572
6586
|
};
|
|
6573
6587
|
const success = Object.values(errors).every(error => !error);
|
|
6574
|
-
|
|
6588
|
+
const cached = this.contextCache.get(file);
|
|
6589
|
+
if (cached && cached.success === success && this.errorsEqual(cached.errors, errors)) {
|
|
6590
|
+
return cached;
|
|
6591
|
+
}
|
|
6592
|
+
// new context is made and old reference replaced
|
|
6593
|
+
const context = { $implicit: file, success, errors };
|
|
6594
|
+
this.contextCache.set(file, context);
|
|
6595
|
+
// new injector is made and old reference replaced
|
|
6596
|
+
const injector = this.createFileMessagesTemplateInjector(context);
|
|
6597
|
+
this.injectorCache.set(file, injector);
|
|
6598
|
+
return context;
|
|
6575
6599
|
}
|
|
6576
6600
|
createFileMessagesTemplateInjector(fileMessagesTemplateContext) {
|
|
6577
6601
|
return Injector.create({
|
|
@@ -6579,6 +6603,9 @@ class ClrFileList {
|
|
|
6579
6603
|
providers: [{ provide: CLR_FILE_MESSAGES_TEMPLATE_CONTEXT, useValue: fileMessagesTemplateContext }],
|
|
6580
6604
|
});
|
|
6581
6605
|
}
|
|
6606
|
+
errorsEqual(a, b) {
|
|
6607
|
+
return a.accept === b.accept && a.minFileSize === b.minFileSize && a.maxFileSize === b.maxFileSize;
|
|
6608
|
+
}
|
|
6582
6609
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrFileList, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6583
6610
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.3", type: ClrFileList, isStandalone: false, 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: `
|
|
6584
6611
|
@for (file of files; track file) {
|
|
@@ -6602,18 +6629,12 @@ class ClrFileList {
|
|
|
6602
6629
|
<cds-icon shape="times"></cds-icon>
|
|
6603
6630
|
</button>
|
|
6604
6631
|
</span>
|
|
6605
|
-
<cds-icon
|
|
6606
|
-
class="clr-validate-icon"
|
|
6607
|
-
[shape]="fileMessagesTemplateContext.success ? 'check-circle' : 'exclamation-circle'"
|
|
6608
|
-
[status]="fileMessagesTemplateContext.success ? 'success' : 'danger'"
|
|
6609
|
-
aria-hidden="true"
|
|
6610
|
-
></cds-icon>
|
|
6611
6632
|
</div>
|
|
6612
6633
|
@if (fileMessagesTemplate) {
|
|
6613
6634
|
<ng-container
|
|
6614
6635
|
[ngTemplateOutlet]="fileMessagesTemplate.templateRef"
|
|
6615
6636
|
[ngTemplateOutletContext]="fileMessagesTemplateContext"
|
|
6616
|
-
[ngTemplateOutletInjector]="
|
|
6637
|
+
[ngTemplateOutletInjector]="injectorCache.get(file)"
|
|
6617
6638
|
></ng-container>
|
|
6618
6639
|
}
|
|
6619
6640
|
</div>
|
|
@@ -6647,18 +6668,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
6647
6668
|
<cds-icon shape="times"></cds-icon>
|
|
6648
6669
|
</button>
|
|
6649
6670
|
</span>
|
|
6650
|
-
<cds-icon
|
|
6651
|
-
class="clr-validate-icon"
|
|
6652
|
-
[shape]="fileMessagesTemplateContext.success ? 'check-circle' : 'exclamation-circle'"
|
|
6653
|
-
[status]="fileMessagesTemplateContext.success ? 'success' : 'danger'"
|
|
6654
|
-
aria-hidden="true"
|
|
6655
|
-
></cds-icon>
|
|
6656
6671
|
</div>
|
|
6657
6672
|
@if (fileMessagesTemplate) {
|
|
6658
6673
|
<ng-container
|
|
6659
6674
|
[ngTemplateOutlet]="fileMessagesTemplate.templateRef"
|
|
6660
6675
|
[ngTemplateOutletContext]="fileMessagesTemplateContext"
|
|
6661
|
-
[ngTemplateOutletInjector]="
|
|
6676
|
+
[ngTemplateOutletInjector]="injectorCache.get(file)"
|
|
6662
6677
|
></ng-container>
|
|
6663
6678
|
}
|
|
6664
6679
|
</div>
|
|
@@ -6782,12 +6797,6 @@ class ClrFileInputContainer extends ClrAbstractContainer$1 {
|
|
|
6782
6797
|
<cds-icon shape="times" status="neutral"></cds-icon>
|
|
6783
6798
|
</button>
|
|
6784
6799
|
}
|
|
6785
|
-
@if (showInvalid) {
|
|
6786
|
-
<cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
|
|
6787
|
-
}
|
|
6788
|
-
@if (showValid) {
|
|
6789
|
-
<cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
|
|
6790
|
-
}
|
|
6791
6800
|
</div>
|
|
6792
6801
|
@if (showHelper) {
|
|
6793
6802
|
<ng-content select="clr-control-helper"></ng-content>
|
|
@@ -6856,12 +6865,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
6856
6865
|
<cds-icon shape="times" status="neutral"></cds-icon>
|
|
6857
6866
|
</button>
|
|
6858
6867
|
}
|
|
6859
|
-
@if (showInvalid) {
|
|
6860
|
-
<cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
|
|
6861
|
-
}
|
|
6862
|
-
@if (showValid) {
|
|
6863
|
-
<cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
|
|
6864
|
-
}
|
|
6865
6868
|
</div>
|
|
6866
6869
|
@if (showHelper) {
|
|
6867
6870
|
<ng-content select="clr-control-helper"></ng-content>
|
|
@@ -7145,7 +7148,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
7145
7148
|
*/
|
|
7146
7149
|
class ClrFileInputModule {
|
|
7147
7150
|
constructor() {
|
|
7148
|
-
ClarityIcons.addIcons(folderOpenIcon);
|
|
7151
|
+
ClarityIcons.addIcons(folderOpenIcon, successStandardIcon, errorStandardIcon);
|
|
7149
7152
|
}
|
|
7150
7153
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrFileInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
7151
7154
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrFileInputModule, declarations: [ClrFileInput,
|
|
@@ -7225,12 +7228,6 @@ class ClrInputContainer extends ClrAbstractContainer$1 {
|
|
|
7225
7228
|
<ng-content select="[clrInput]"></ng-content>
|
|
7226
7229
|
<ng-content select="[clrInputSuffix]"></ng-content>
|
|
7227
7230
|
</div>
|
|
7228
|
-
@if (showInvalid) {
|
|
7229
|
-
<cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
|
|
7230
|
-
}
|
|
7231
|
-
@if (showValid) {
|
|
7232
|
-
<cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
|
|
7233
|
-
}
|
|
7234
7231
|
</div>
|
|
7235
7232
|
@if (showHelper) {
|
|
7236
7233
|
<ng-content select="clr-control-helper"></ng-content>
|
|
@@ -7242,7 +7239,7 @@ class ClrInputContainer extends ClrAbstractContainer$1 {
|
|
|
7242
7239
|
<ng-content select="clr-control-success"></ng-content>
|
|
7243
7240
|
}
|
|
7244
7241
|
</div>
|
|
7245
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "
|
|
7242
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.ClrControlLabel, selector: "label", inputs: ["id", "for"] }] }); }
|
|
7246
7243
|
}
|
|
7247
7244
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrInputContainer, decorators: [{
|
|
7248
7245
|
type: Component,
|
|
@@ -7260,12 +7257,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
7260
7257
|
<ng-content select="[clrInput]"></ng-content>
|
|
7261
7258
|
<ng-content select="[clrInputSuffix]"></ng-content>
|
|
7262
7259
|
</div>
|
|
7263
|
-
@if (showInvalid) {
|
|
7264
|
-
<cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
|
|
7265
|
-
}
|
|
7266
|
-
@if (showValid) {
|
|
7267
|
-
<cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
|
|
7268
|
-
}
|
|
7269
7260
|
</div>
|
|
7270
7261
|
@if (showHelper) {
|
|
7271
7262
|
<ng-content select="clr-control-helper"></ng-content>
|
|
@@ -7332,8 +7323,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
7332
7323
|
*/
|
|
7333
7324
|
class ClrInputModule {
|
|
7334
7325
|
constructor() {
|
|
7335
|
-
ClarityIcons.addIcons(
|
|
7336
|
-
);
|
|
7326
|
+
ClarityIcons.addIcons(successStandardIcon, errorStandardIcon);
|
|
7337
7327
|
}
|
|
7338
7328
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
7339
7329
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrInputModule, declarations: [ClrInput, ClrInputContainer], imports: [CommonModule, FormsModule, ClrIcon, ClrCommonFormsModule$1], exports: [ClrCommonFormsModule$1, ClrInput, ClrInputContainer] }); }
|
|
@@ -7400,12 +7390,6 @@ class ClrNumberInputContainer extends ClrAbstractContainer$1 {
|
|
|
7400
7390
|
</button>
|
|
7401
7391
|
</div>
|
|
7402
7392
|
</div>
|
|
7403
|
-
@if (showInvalid) {
|
|
7404
|
-
<cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
|
|
7405
|
-
}
|
|
7406
|
-
@if (showValid) {
|
|
7407
|
-
<cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
|
|
7408
|
-
}
|
|
7409
7393
|
</div>
|
|
7410
7394
|
@if (showHelper) {
|
|
7411
7395
|
<ng-content select="clr-control-helper"></ng-content>
|
|
@@ -7452,12 +7436,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
7452
7436
|
</button>
|
|
7453
7437
|
</div>
|
|
7454
7438
|
</div>
|
|
7455
|
-
@if (showInvalid) {
|
|
7456
|
-
<cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
|
|
7457
|
-
}
|
|
7458
|
-
@if (showValid) {
|
|
7459
|
-
<cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
|
|
7460
|
-
}
|
|
7461
7439
|
</div>
|
|
7462
7440
|
@if (showHelper) {
|
|
7463
7441
|
<ng-content select="clr-control-helper"></ng-content>
|
|
@@ -7565,7 +7543,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
7565
7543
|
*/
|
|
7566
7544
|
class ClrNumberInputModule {
|
|
7567
7545
|
constructor() {
|
|
7568
|
-
ClarityIcons.addIcons(
|
|
7546
|
+
ClarityIcons.addIcons(successStandardIcon, errorStandardIcon, minusIcon, plusIcon);
|
|
7569
7547
|
}
|
|
7570
7548
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrNumberInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
7571
7549
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrNumberInputModule, declarations: [ClrNumberInput, ClrNumberInputContainer], imports: [CommonModule, FormsModule, ClrIcon, ClrCommonFormsModule$1], exports: [ClrCommonFormsModule$1, ClrNumberInput, ClrNumberInputContainer] }); }
|
|
@@ -7650,12 +7628,6 @@ class ClrPasswordContainer extends ClrAbstractContainer$1 {
|
|
|
7650
7628
|
</button>
|
|
7651
7629
|
}
|
|
7652
7630
|
</div>
|
|
7653
|
-
@if (showInvalid) {
|
|
7654
|
-
<cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
|
|
7655
|
-
}
|
|
7656
|
-
@if (showValid) {
|
|
7657
|
-
<cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
|
|
7658
|
-
}
|
|
7659
7631
|
</div>
|
|
7660
7632
|
@if (showHelper) {
|
|
7661
7633
|
<ng-content select="clr-control-helper"></ng-content>
|
|
@@ -7691,12 +7663,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
7691
7663
|
</button>
|
|
7692
7664
|
}
|
|
7693
7665
|
</div>
|
|
7694
|
-
@if (showInvalid) {
|
|
7695
|
-
<cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
|
|
7696
|
-
}
|
|
7697
|
-
@if (showValid) {
|
|
7698
|
-
<cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
|
|
7699
|
-
}
|
|
7700
7666
|
</div>
|
|
7701
7667
|
@if (showHelper) {
|
|
7702
7668
|
<ng-content select="clr-control-helper"></ng-content>
|
|
@@ -7790,7 +7756,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
7790
7756
|
*/
|
|
7791
7757
|
class ClrPasswordModule {
|
|
7792
7758
|
constructor() {
|
|
7793
|
-
ClarityIcons.addIcons(eyeHideIcon, eyeIcon,
|
|
7759
|
+
ClarityIcons.addIcons(eyeHideIcon, eyeIcon, successStandardIcon, errorStandardIcon);
|
|
7794
7760
|
}
|
|
7795
7761
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPasswordModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
7796
7762
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrPasswordModule, declarations: [ClrPassword, ClrPasswordContainer], imports: [CommonModule, FormsModule, ClrIcon, ClrCommonFormsModule$1], exports: [ClrCommonFormsModule$1, ClrPassword, ClrPasswordContainer] }); }
|
|
@@ -7942,29 +7908,14 @@ class ClrRadioContainer extends ClrAbstractContainer$1 {
|
|
|
7942
7908
|
<ng-content select="clr-control-helper"></ng-content>
|
|
7943
7909
|
</div>
|
|
7944
7910
|
}
|
|
7945
|
-
@if (
|
|
7946
|
-
<
|
|
7947
|
-
|
|
7948
|
-
|
|
7949
|
-
|
|
7950
|
-
shape="exclamation-circle"
|
|
7951
|
-
status="danger"
|
|
7952
|
-
aria-hidden="true"
|
|
7953
|
-
></cds-icon>
|
|
7954
|
-
}
|
|
7955
|
-
@if (showValid) {
|
|
7956
|
-
<cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
|
|
7957
|
-
}
|
|
7958
|
-
@if (showInvalid) {
|
|
7959
|
-
<ng-content select="clr-control-error"></ng-content>
|
|
7960
|
-
}
|
|
7961
|
-
@if (showValid) {
|
|
7962
|
-
<ng-content select="clr-control-success"></ng-content>
|
|
7963
|
-
}
|
|
7964
|
-
</div>
|
|
7911
|
+
@if (showInvalid) {
|
|
7912
|
+
<ng-content select="clr-control-error"></ng-content>
|
|
7913
|
+
}
|
|
7914
|
+
@if (showValid) {
|
|
7915
|
+
<ng-content select="clr-control-success"></ng-content>
|
|
7965
7916
|
}
|
|
7966
7917
|
</div>
|
|
7967
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.ClrControlLabel, selector: "label", inputs: ["id", "for"] }
|
|
7918
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.ClrControlLabel, selector: "label", inputs: ["id", "for"] }] }); }
|
|
7968
7919
|
}
|
|
7969
7920
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrRadioContainer, decorators: [{
|
|
7970
7921
|
type: Component,
|
|
@@ -7982,26 +7933,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
7982
7933
|
<ng-content select="clr-control-helper"></ng-content>
|
|
7983
7934
|
</div>
|
|
7984
7935
|
}
|
|
7985
|
-
@if (
|
|
7986
|
-
<
|
|
7987
|
-
|
|
7988
|
-
|
|
7989
|
-
|
|
7990
|
-
shape="exclamation-circle"
|
|
7991
|
-
status="danger"
|
|
7992
|
-
aria-hidden="true"
|
|
7993
|
-
></cds-icon>
|
|
7994
|
-
}
|
|
7995
|
-
@if (showValid) {
|
|
7996
|
-
<cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
|
|
7997
|
-
}
|
|
7998
|
-
@if (showInvalid) {
|
|
7999
|
-
<ng-content select="clr-control-error"></ng-content>
|
|
8000
|
-
}
|
|
8001
|
-
@if (showValid) {
|
|
8002
|
-
<ng-content select="clr-control-success"></ng-content>
|
|
8003
|
-
}
|
|
8004
|
-
</div>
|
|
7936
|
+
@if (showInvalid) {
|
|
7937
|
+
<ng-content select="clr-control-error"></ng-content>
|
|
7938
|
+
}
|
|
7939
|
+
@if (showValid) {
|
|
7940
|
+
<ng-content select="clr-control-success"></ng-content>
|
|
8005
7941
|
}
|
|
8006
7942
|
</div>
|
|
8007
7943
|
`,
|
|
@@ -8035,7 +7971,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
8035
7971
|
*/
|
|
8036
7972
|
class ClrRadioModule {
|
|
8037
7973
|
constructor() {
|
|
8038
|
-
ClarityIcons.addIcons(
|
|
7974
|
+
ClarityIcons.addIcons(successStandardIcon, errorStandardIcon);
|
|
8039
7975
|
}
|
|
8040
7976
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrRadioModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8041
7977
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrRadioModule, declarations: [ClrRadio, ClrRadioContainer, ClrRadioWrapper], imports: [CommonModule, ClrCommonFormsModule$1, ClrHostWrappingModule, ClrIcon], exports: [ClrCommonFormsModule$1, ClrRadio, ClrRadioContainer, ClrRadioWrapper] }); }
|
|
@@ -8085,12 +8021,6 @@ class ClrSelectContainer extends ClrAbstractContainer$1 {
|
|
|
8085
8021
|
<div class="clr-control-container" [ngClass]="controlClass()">
|
|
8086
8022
|
<div [ngClass]="wrapperClass()">
|
|
8087
8023
|
<ng-content select="[clrSelect]"></ng-content>
|
|
8088
|
-
@if (showInvalid) {
|
|
8089
|
-
<cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
|
|
8090
|
-
}
|
|
8091
|
-
@if (showValid) {
|
|
8092
|
-
<cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
|
|
8093
|
-
}
|
|
8094
8024
|
</div>
|
|
8095
8025
|
@if (showHelper) {
|
|
8096
8026
|
<ng-content select="clr-control-helper"></ng-content>
|
|
@@ -8102,7 +8032,7 @@ class ClrSelectContainer extends ClrAbstractContainer$1 {
|
|
|
8102
8032
|
<ng-content select="clr-control-success"></ng-content>
|
|
8103
8033
|
}
|
|
8104
8034
|
</div>
|
|
8105
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "
|
|
8035
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.ClrControlLabel, selector: "label", inputs: ["id", "for"] }] }); }
|
|
8106
8036
|
}
|
|
8107
8037
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrSelectContainer, decorators: [{
|
|
8108
8038
|
type: Component,
|
|
@@ -8116,12 +8046,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
8116
8046
|
<div class="clr-control-container" [ngClass]="controlClass()">
|
|
8117
8047
|
<div [ngClass]="wrapperClass()">
|
|
8118
8048
|
<ng-content select="[clrSelect]"></ng-content>
|
|
8119
|
-
@if (showInvalid) {
|
|
8120
|
-
<cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
|
|
8121
|
-
}
|
|
8122
|
-
@if (showValid) {
|
|
8123
|
-
<cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
|
|
8124
|
-
}
|
|
8125
8049
|
</div>
|
|
8126
8050
|
@if (showHelper) {
|
|
8127
8051
|
<ng-content select="clr-control-helper"></ng-content>
|
|
@@ -8184,7 +8108,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
8184
8108
|
*/
|
|
8185
8109
|
class ClrSelectModule {
|
|
8186
8110
|
constructor() {
|
|
8187
|
-
ClarityIcons.addIcons(
|
|
8111
|
+
ClarityIcons.addIcons(successStandardIcon, errorStandardIcon);
|
|
8188
8112
|
}
|
|
8189
8113
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8190
8114
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrSelectModule, declarations: [ClrSelect, ClrSelectContainer], imports: [CommonModule, FormsModule, ClrIcon, ClrCommonFormsModule$1], exports: [ClrCommonFormsModule$1, ClrSelect, ClrSelectContainer] }); }
|
|
@@ -8222,12 +8146,6 @@ class ClrTextareaContainer extends ClrAbstractContainer$1 {
|
|
|
8222
8146
|
<div class="clr-control-container" [ngClass]="controlClass()">
|
|
8223
8147
|
<div class="clr-textarea-wrapper">
|
|
8224
8148
|
<ng-content select="[clrTextarea]"></ng-content>
|
|
8225
|
-
@if (showInvalid) {
|
|
8226
|
-
<cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
|
|
8227
|
-
}
|
|
8228
|
-
@if (showValid) {
|
|
8229
|
-
<cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
|
|
8230
|
-
}
|
|
8231
8149
|
</div>
|
|
8232
8150
|
@if (showHelper) {
|
|
8233
8151
|
<ng-content select="clr-control-helper"></ng-content>
|
|
@@ -8239,7 +8157,7 @@ class ClrTextareaContainer extends ClrAbstractContainer$1 {
|
|
|
8239
8157
|
<ng-content select="clr-control-success"></ng-content>
|
|
8240
8158
|
}
|
|
8241
8159
|
</div>
|
|
8242
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "
|
|
8160
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.ClrControlLabel, selector: "label", inputs: ["id", "for"] }] }); }
|
|
8243
8161
|
}
|
|
8244
8162
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrTextareaContainer, decorators: [{
|
|
8245
8163
|
type: Component,
|
|
@@ -8253,12 +8171,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
8253
8171
|
<div class="clr-control-container" [ngClass]="controlClass()">
|
|
8254
8172
|
<div class="clr-textarea-wrapper">
|
|
8255
8173
|
<ng-content select="[clrTextarea]"></ng-content>
|
|
8256
|
-
@if (showInvalid) {
|
|
8257
|
-
<cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
|
|
8258
|
-
}
|
|
8259
|
-
@if (showValid) {
|
|
8260
|
-
<cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
|
|
8261
|
-
}
|
|
8262
8174
|
</div>
|
|
8263
8175
|
@if (showHelper) {
|
|
8264
8176
|
<ng-content select="clr-control-helper"></ng-content>
|
|
@@ -8316,7 +8228,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
8316
8228
|
*/
|
|
8317
8229
|
class ClrTextareaModule {
|
|
8318
8230
|
constructor() {
|
|
8319
|
-
ClarityIcons.addIcons(
|
|
8231
|
+
ClarityIcons.addIcons(successStandardIcon, errorStandardIcon);
|
|
8320
8232
|
}
|
|
8321
8233
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrTextareaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8322
8234
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrTextareaModule, declarations: [ClrTextarea, ClrTextareaContainer], imports: [CommonModule, FormsModule, ClrIcon, ClrCommonFormsModule$1], exports: [ClrCommonFormsModule$1, ClrTextarea, ClrTextareaContainer] }); }
|
|
@@ -8397,12 +8309,6 @@ class ClrRangeContainer extends ClrAbstractContainer$1 {
|
|
|
8397
8309
|
@if (hasProgress) {
|
|
8398
8310
|
<span class="fill-input" [style.width]="getRangeProgressFillWidth()"></span>
|
|
8399
8311
|
}
|
|
8400
|
-
@if (showInvalid) {
|
|
8401
|
-
<cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
|
|
8402
|
-
}
|
|
8403
|
-
@if (showValid) {
|
|
8404
|
-
<cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
|
|
8405
|
-
}
|
|
8406
8312
|
</div>
|
|
8407
8313
|
@if (showHelper) {
|
|
8408
8314
|
<ng-content select="clr-control-helper"></ng-content>
|
|
@@ -8414,7 +8320,7 @@ class ClrRangeContainer extends ClrAbstractContainer$1 {
|
|
|
8414
8320
|
<ng-content select="clr-control-success"></ng-content>
|
|
8415
8321
|
}
|
|
8416
8322
|
</div>
|
|
8417
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.ClrControlLabel, selector: "label", inputs: ["id", "for"] }
|
|
8323
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.ClrControlLabel, selector: "label", inputs: ["id", "for"] }] }); }
|
|
8418
8324
|
}
|
|
8419
8325
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrRangeContainer, decorators: [{
|
|
8420
8326
|
type: Component,
|
|
@@ -8431,12 +8337,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
8431
8337
|
@if (hasProgress) {
|
|
8432
8338
|
<span class="fill-input" [style.width]="getRangeProgressFillWidth()"></span>
|
|
8433
8339
|
}
|
|
8434
|
-
@if (showInvalid) {
|
|
8435
|
-
<cds-icon class="clr-validate-icon" shape="exclamation-circle" status="danger" aria-hidden="true"></cds-icon>
|
|
8436
|
-
}
|
|
8437
|
-
@if (showValid) {
|
|
8438
|
-
<cds-icon class="clr-validate-icon" shape="check-circle" status="success" aria-hidden="true"></cds-icon>
|
|
8439
|
-
}
|
|
8440
8340
|
</div>
|
|
8441
8341
|
@if (showHelper) {
|
|
8442
8342
|
<ng-content select="clr-control-helper"></ng-content>
|
|
@@ -8498,7 +8398,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
|
|
|
8498
8398
|
*/
|
|
8499
8399
|
class ClrRangeModule {
|
|
8500
8400
|
constructor() {
|
|
8501
|
-
ClarityIcons.addIcons(
|
|
8401
|
+
ClarityIcons.addIcons(successStandardIcon, errorStandardIcon);
|
|
8502
8402
|
}
|
|
8503
8403
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrRangeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8504
8404
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrRangeModule, declarations: [ClrRange, ClrRangeContainer], imports: [CommonModule, ClrCommonFormsModule$1, ClrHostWrappingModule, ClrIcon], exports: [ClrCommonFormsModule$1, ClrRange, ClrRangeContainer] }); }
|