@ardium-ui/ui 5.0.0-alpha.3 → 5.0.0-alpha.30
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/ardium-ui-ui.mjs +819 -551
- package/fesm2022/ardium-ui-ui.mjs.map +1 -1
- package/lib/_internal/disablable-component.d.ts +2 -1
- package/lib/_internal/focusable-component.d.ts +2 -1
- package/lib/_internal/form-field-component.d.ts +2 -1
- package/lib/_internal/item-storages/dropdown-item-storage.d.ts +16 -18
- package/lib/_internal/item-storages/simple-item-storage.d.ts +15 -12
- package/lib/_internal/item-storages/simplest-item-storage.d.ts +1 -1
- package/lib/_internal/selectable-list-component.d.ts +6 -6
- package/lib/badge/badge.directive.d.ts +3 -2
- package/lib/buttons/_button-base.d.ts +4 -3
- package/lib/buttons/button/button.component.d.ts +2 -1
- package/lib/buttons/icon-button/icon-button.component.d.ts +4 -3
- package/lib/calendar/calendar.component.d.ts +5 -4
- package/lib/checkbox-list/checkbox-list.component.d.ts +9 -7
- package/lib/checkbox-list/checkbox-list.directives.d.ts +7 -0
- package/lib/checkbox-list/checkbox-list.module.d.ts +1 -1
- package/lib/chip/chip.component.d.ts +2 -1
- package/lib/chip/deletable-chip/deletable-chip.component.d.ts +2 -1
- package/lib/chip/selectable-chip/selectable-chip.component.d.ts +3 -2
- package/lib/dialog/dialog.component.d.ts +8 -7
- package/lib/divider/divider.component.d.ts +2 -1
- package/lib/dropdown-panel/dropdown-panel.component.d.ts +2 -1
- package/lib/file-inputs/file-input/file-input.component.d.ts +2 -1
- package/lib/file-inputs/file-input-base.d.ts +4 -4
- package/lib/form-field/error/error.directive.d.ts +5 -1
- package/lib/form-field/form-field-base.d.ts +9 -3
- package/lib/form-field/form-field-native-inputs.d.ts +3 -2
- package/lib/form-field/form-field.component.d.ts +1 -1
- package/lib/form-field/form-field.module.d.ts +5 -4
- package/lib/form-field/hint/hint.directive.d.ts +3 -2
- package/lib/form-field/hint-error/hint-error.component.d.ts +6 -0
- package/lib/form-field/hint-error/hint-error.directive.d.ts +9 -0
- package/lib/form-field/horizontal-form-field.component.d.ts +1 -1
- package/lib/form-field/index.d.ts +4 -0
- package/lib/form-field/label/label.component.d.ts +3 -2
- package/lib/form-field-frame/form-field-frame.component.d.ts +4 -3
- package/lib/icon/icon.component.d.ts +2 -1
- package/lib/inputs/_simple-input-base.d.ts +4 -2
- package/lib/inputs/autocomplete-input/autocomplete-input.component.d.ts +5 -4
- package/lib/inputs/date-input/date-input.component.d.ts +9 -8
- package/lib/inputs/digit-input/digit-input.component.d.ts +4 -3
- package/lib/inputs/hex-input/hex-input.component.d.ts +5 -3
- package/lib/inputs/number-input/number-input.component.d.ts +8 -7
- package/lib/inputs/number-input/number-input.defaults.d.ts +1 -0
- package/lib/inputs/password-input/password-input.component.d.ts +4 -3
- package/lib/kbd/kbd.component.d.ts +2 -1
- package/lib/kbd-shortcut/kbd-shortcut.component.d.ts +2 -1
- package/lib/modal/modal.component.d.ts +6 -5
- package/lib/option/option.component.d.ts +2 -1
- package/lib/progress-bar/progress-bar.component.d.ts +4 -3
- package/lib/progress-circle/progress-circle.component.d.ts +5 -4
- package/lib/segment/segment.component.d.ts +6 -5
- package/lib/select/select.component.d.ts +33 -26
- package/lib/select/select.defaults.d.ts +7 -0
- package/lib/select/select.directive.d.ts +6 -0
- package/lib/select/select.module.d.ts +1 -1
- package/lib/select/select.types.d.ts +4 -2
- package/lib/select/select.utils.d.ts +2 -0
- package/lib/slider/abstract-slider.d.ts +11 -7
- package/lib/slider/range-slider/range-slider.component.d.ts +2 -1
- package/lib/slider/slider.component.d.ts +1 -0
- package/lib/slider/slider.types.d.ts +2 -2
- package/lib/star/rating-display/rating-display.component.d.ts +2 -1
- package/lib/star/rating-input/rating-input.component.d.ts +2 -1
- package/lib/tabber/index.d.ts +2 -1
- package/lib/tabber/tab/tab.component.d.ts +14 -8
- package/lib/tabber/tabber.component.d.ts +25 -9
- package/lib/tabber/tabber.defaults.d.ts +1 -0
- package/lib/tabber/tabber.directives.d.ts +9 -0
- package/lib/tabber/tabber.module.d.ts +3 -2
- package/lib/tabber/tabber.types.d.ts +5 -0
- package/lib/table/table.component.d.ts +16 -15
- package/lib/table-pagination/table-pagination.component.d.ts +4 -3
- package/lib/text-list/text-list.component.d.ts +2 -1
- package/lib/types/item-storage.types.d.ts +15 -17
- package/package.json +1 -1
- package/prebuilt-themes/default/buttons/button.css +48 -22
- package/prebuilt-themes/default/buttons/button.css.map +1 -1
- package/prebuilt-themes/default/buttons/fab.css +40 -20
- package/prebuilt-themes/default/buttons/fab.css.map +1 -1
- package/prebuilt-themes/default/buttons/icon-button.css +35 -16
- package/prebuilt-themes/default/buttons/icon-button.css.map +1 -1
- package/prebuilt-themes/default/calendar.css.map +1 -1
- package/prebuilt-themes/default/card.css.map +1 -1
- package/prebuilt-themes/default/checkbox-list.css +44 -18
- package/prebuilt-themes/default/checkbox-list.css.map +1 -1
- package/prebuilt-themes/default/chips.css +10 -5
- package/prebuilt-themes/default/chips.css.map +1 -1
- package/prebuilt-themes/default/color-display.css +1 -1
- package/prebuilt-themes/default/core.css +10 -0
- package/prebuilt-themes/default/core.css.map +1 -1
- package/prebuilt-themes/default/dropdown-panel.css.map +1 -1
- package/prebuilt-themes/default/form-field-frame.css +7 -3
- package/prebuilt-themes/default/form-field-frame.css.map +1 -1
- package/prebuilt-themes/default/form-field.css +35 -13
- package/prebuilt-themes/default/form-field.css.map +1 -1
- package/prebuilt-themes/default/inputs/autocomplete-input.css +1 -1
- package/prebuilt-themes/default/inputs/autocomplete-input.css.map +1 -1
- package/prebuilt-themes/default/inputs/color-input.css +2 -2
- package/prebuilt-themes/default/inputs/color-input.css.map +1 -1
- package/prebuilt-themes/default/inputs/date-input.css +1 -1
- package/prebuilt-themes/default/inputs/digit-input.css +1 -1
- package/prebuilt-themes/default/inputs/digit-input.css.map +1 -1
- package/prebuilt-themes/default/inputs/file-input.css +1 -1
- package/prebuilt-themes/default/inputs/file-input.css.map +1 -1
- package/prebuilt-themes/default/inputs/hex-input.css +3 -3
- package/prebuilt-themes/default/inputs/hex-input.css.map +1 -1
- package/prebuilt-themes/default/inputs/input.css +1 -2
- package/prebuilt-themes/default/inputs/input.css.map +1 -1
- package/prebuilt-themes/default/inputs/number-input.css +37 -14
- package/prebuilt-themes/default/inputs/number-input.css.map +1 -1
- package/prebuilt-themes/default/inputs/password-input.css +1 -1
- package/prebuilt-themes/default/inputs/search-bar.css +1 -1
- package/prebuilt-themes/default/inputs/search-bar.css.map +1 -1
- package/prebuilt-themes/default/kbd-shortcut.css +1 -1
- package/prebuilt-themes/default/kbd.css +1 -1
- package/prebuilt-themes/default/modal.css +2 -1
- package/prebuilt-themes/default/modal.css.map +1 -1
- package/prebuilt-themes/default/progress-circle.css.map +1 -1
- package/prebuilt-themes/default/radio.css +5 -3
- package/prebuilt-themes/default/radio.css.map +1 -1
- package/prebuilt-themes/default/segment.css +70 -57
- package/prebuilt-themes/default/segment.css.map +1 -1
- package/prebuilt-themes/default/select.css +87 -40
- package/prebuilt-themes/default/select.css.map +1 -1
- package/prebuilt-themes/default/slide-toggle.css.map +1 -1
- package/prebuilt-themes/default/slider.css +90 -51
- package/prebuilt-themes/default/slider.css.map +1 -1
- package/prebuilt-themes/default/stars.css.map +1 -1
- package/prebuilt-themes/default/statebox.css +1 -1
- package/prebuilt-themes/default/tabber.css +36 -12
- package/prebuilt-themes/default/tabber.css.map +1 -1
- package/prebuilt-themes/default/table.css.map +1 -1
- package/themes/_variables.scss +3 -0
- package/themes/default/buttons/_button-mixins.scss +31 -18
- package/themes/default/buttons/button.scss +41 -11
- package/themes/default/buttons/fab.scss +36 -9
- package/themes/default/buttons/icon-button.scss +31 -5
- package/themes/default/checkbox-list.scss +47 -21
- package/themes/default/chips.scss +12 -12
- package/themes/default/color-display.scss +1 -1
- package/themes/default/core.scss +12 -0
- package/themes/default/form-field-frame.scss +11 -6
- package/themes/default/form-field.scss +27 -12
- package/themes/default/inputs/_shared.scss +1 -1
- package/themes/default/inputs/color-input.scss +1 -1
- package/themes/default/inputs/digit-input.scss +1 -1
- package/themes/default/inputs/hex-input.scss +2 -2
- package/themes/default/inputs/input.scss +0 -1
- package/themes/default/inputs/number-input.scss +37 -14
- package/themes/default/kbd-shortcut.scss +1 -1
- package/themes/default/kbd.scss +1 -1
- package/themes/default/modal.scss +2 -1
- package/themes/default/radio.scss +5 -3
- package/themes/default/segment.scss +75 -67
- package/themes/default/select.scss +96 -42
- package/themes/default/slider.scss +90 -55
- package/themes/default/statebox.scss +1 -1
- package/themes/default/tabber.scss +36 -13
- package/lib/tabber/tab/tab.defaults.d.ts +0 -6
- package/prebuilt-themes/default/calendar-OLD.css +0 -294
- package/prebuilt-themes/default/calendar-OLD.css.map +0 -1
- package/themes/default/calendar-OLD.scss +0 -183
|
@@ -2,10 +2,10 @@ import 'first-last';
|
|
|
2
2
|
import { Overlay, ScrollStrategyOptions, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';
|
|
3
3
|
import { TemplatePortal, ComponentPortal } from '@angular/cdk/portal';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
|
-
import { signal, computed, InjectionToken, input, Directive, Input, HostBinding, output, ViewChildren, inject, Injector, runInInjectionContext, viewChild, contentChild, Component, ViewEncapsulation, ChangeDetectionStrategy, Inject, ViewContainerRef, TemplateRef, forwardRef, HostListener, NgModule, effect, viewChildren, Pipe, model, ElementRef, ChangeDetectorRef, ContentChildren,
|
|
5
|
+
import { signal, computed, InjectionToken, input, Directive, Input, HostBinding, output, ViewChildren, inject, Injector, runInInjectionContext, viewChild, contentChild, Component, ViewEncapsulation, ChangeDetectionStrategy, Inject, ViewContainerRef, TemplateRef, forwardRef, HostListener, NgModule, effect, viewChildren, Pipe, model, ElementRef, ChangeDetectorRef, ContentChildren, linkedSignal, contentChildren, Renderer2, Injectable } from '@angular/core';
|
|
6
6
|
import { NgControl, Validators, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
7
7
|
import * as i5 from '@ardium-ui/devkit';
|
|
8
|
-
import { coerceBooleanProperty, coerceNumberProperty, coerceArrayProperty, ArdiumClickOutsideModule, ArdiumEscapeHTMLModule, FileSystemService, FileSystemMethod, ArdiumFilePipesModule, coerceDateProperty, ArdiumHoldModule } from '@ardium-ui/devkit';
|
|
8
|
+
import { arraySignal, coerceBooleanProperty, coerceNumberProperty, coerceArrayProperty, ArdiumClickOutsideModule, ArdiumEscapeHTMLModule, FileSystemService, FileSystemMethod, ArdiumFilePipesModule, coerceDateProperty, ArdiumHoldModule } from '@ardium-ui/devkit';
|
|
9
9
|
import { isDefined, any, isPrimitive, isAnyString, isNull, isNumber, isString, isArray, isFunction, isRegExp, evaluate, isObject, isPromise } from 'simple-bool';
|
|
10
10
|
import { resolvePath } from 'resolve-object-path';
|
|
11
11
|
import { toObservable } from '@angular/core/rxjs-interop';
|
|
@@ -22,7 +22,7 @@ import { A11yModule } from '@angular/cdk/a11y';
|
|
|
22
22
|
class SimplestItemStorage {
|
|
23
23
|
constructor(_ardParentComp) {
|
|
24
24
|
this._ardParentComp = _ardParentComp;
|
|
25
|
-
this._items =
|
|
25
|
+
this._items = arraySignal([]);
|
|
26
26
|
this._highlightedItem = signal(null);
|
|
27
27
|
/**
|
|
28
28
|
* Gets all items.
|
|
@@ -58,12 +58,12 @@ class SimplestItemStorage {
|
|
|
58
58
|
_setItemsMapFn(rawItemData, index, areItemsPrimitive) {
|
|
59
59
|
if (areItemsPrimitive) {
|
|
60
60
|
return {
|
|
61
|
-
itemData:
|
|
61
|
+
itemData: rawItemData,
|
|
62
62
|
index: index,
|
|
63
|
-
value:
|
|
64
|
-
label:
|
|
65
|
-
selected:
|
|
66
|
-
highlighted:
|
|
63
|
+
value: rawItemData.value,
|
|
64
|
+
label: rawItemData.value?.toString?.() ?? String(rawItemData.value),
|
|
65
|
+
selected: false,
|
|
66
|
+
highlighted: false,
|
|
67
67
|
};
|
|
68
68
|
}
|
|
69
69
|
//get value
|
|
@@ -74,12 +74,12 @@ class SimplestItemStorage {
|
|
|
74
74
|
const label = resolvePath(rawItemData, labelPath) ?? value;
|
|
75
75
|
//return
|
|
76
76
|
return {
|
|
77
|
-
itemData:
|
|
77
|
+
itemData: rawItemData,
|
|
78
78
|
index: index,
|
|
79
|
-
value:
|
|
80
|
-
label:
|
|
81
|
-
selected:
|
|
82
|
-
highlighted:
|
|
79
|
+
value: value,
|
|
80
|
+
label: label?.toString?.() ?? String(label),
|
|
81
|
+
selected: false,
|
|
82
|
+
highlighted: false,
|
|
83
83
|
};
|
|
84
84
|
}
|
|
85
85
|
/**
|
|
@@ -102,7 +102,10 @@ class SimplestItemStorage {
|
|
|
102
102
|
unhighlightCurrent() {
|
|
103
103
|
const hi = this._highlightedItem();
|
|
104
104
|
if (hi) {
|
|
105
|
-
|
|
105
|
+
this._items.setAt(hi.index, {
|
|
106
|
+
...hi,
|
|
107
|
+
highlighted: false,
|
|
108
|
+
});
|
|
106
109
|
}
|
|
107
110
|
this._highlightedItem.set(null);
|
|
108
111
|
}
|
|
@@ -112,7 +115,10 @@ class SimplestItemStorage {
|
|
|
112
115
|
*/
|
|
113
116
|
highlightItem(item) {
|
|
114
117
|
this.unhighlightCurrent();
|
|
115
|
-
|
|
118
|
+
this._items.setAt(item.index, {
|
|
119
|
+
...item,
|
|
120
|
+
highlighted: true,
|
|
121
|
+
});
|
|
116
122
|
this._highlightedItem.set(item);
|
|
117
123
|
}
|
|
118
124
|
/**
|
|
@@ -120,7 +126,10 @@ class SimplestItemStorage {
|
|
|
120
126
|
* @param item The item to be unhighlighted.
|
|
121
127
|
*/
|
|
122
128
|
unhighlightItem(item) {
|
|
123
|
-
|
|
129
|
+
this._items.setAt(item.index, {
|
|
130
|
+
...item,
|
|
131
|
+
highlighted: false,
|
|
132
|
+
});
|
|
124
133
|
if (this._highlightedItem()?.index === item.index)
|
|
125
134
|
this._highlightedItem.set(null);
|
|
126
135
|
}
|
|
@@ -688,6 +697,8 @@ class NumberInputModel {
|
|
|
688
697
|
v = this._applyNumberConstraint(v);
|
|
689
698
|
v = this._applyMinMaxConstraints(v);
|
|
690
699
|
}
|
|
700
|
+
if (v === '')
|
|
701
|
+
v = null;
|
|
691
702
|
//update view
|
|
692
703
|
const oldVal = this._value();
|
|
693
704
|
this.setValue(v);
|
|
@@ -783,6 +794,7 @@ class _SimpleInputComponentBase extends _FormFieldComponentBase {
|
|
|
783
794
|
this.maxLength = input(this._DEFAULTS.maxLength, {
|
|
784
795
|
transform: v => coerceNumberProperty(v, this._DEFAULTS.maxLength),
|
|
785
796
|
});
|
|
797
|
+
this.maxLengthAsInt = computed(() => this.maxLength() ?? 2_147_483_647);
|
|
786
798
|
//! no-value attribute setters/getters
|
|
787
799
|
this.clearable = input(this._DEFAULTS.clearable, { transform: v => coerceBooleanProperty(v) });
|
|
788
800
|
//! value two-way binding
|
|
@@ -1025,7 +1037,7 @@ class ArdiumFormFieldFrameComponent extends _FocusableComponentBase {
|
|
|
1025
1037
|
this.compact() ? 'ard-compact' : '',
|
|
1026
1038
|
this.hasError() ? 'ard-has-error' : '',
|
|
1027
1039
|
this.isSuccess() ? 'ard-is-success' : '',
|
|
1028
|
-
this.isFocused() ? 'ard-focused' : 'ard-unfocused',
|
|
1040
|
+
this.isFocused() && !this.readonly() ? 'ard-focused' : 'ard-unfocused',
|
|
1029
1041
|
].join(' '));
|
|
1030
1042
|
//! prefix & suffix
|
|
1031
1043
|
this.prefixTemplateInput = input(undefined, { alias: 'prefixTemplate' });
|
|
@@ -1242,6 +1254,16 @@ class ArdiumAutocompleteInputComponent extends _SimpleInputComponentBase {
|
|
|
1242
1254
|
//! suggestions overlay
|
|
1243
1255
|
this.dropdownHost = viewChild('suggestionsHost');
|
|
1244
1256
|
this.dropdownTemplate = viewChild('suggestionsTemplate', { read: TemplateRef });
|
|
1257
|
+
this.optionContextGenerator = computed(() => item => ({
|
|
1258
|
+
$implicit: item,
|
|
1259
|
+
item,
|
|
1260
|
+
index: item.index,
|
|
1261
|
+
value: item.value,
|
|
1262
|
+
label: item.label,
|
|
1263
|
+
selected: item.selected,
|
|
1264
|
+
highlighted: item.highlighted,
|
|
1265
|
+
itemData: item.itemData,
|
|
1266
|
+
}));
|
|
1245
1267
|
//! suggestion-highligh-related
|
|
1246
1268
|
this._isMouseBeingUsed = false;
|
|
1247
1269
|
//! suggestion appearance
|
|
@@ -1299,13 +1321,6 @@ class ArdiumAutocompleteInputComponent extends _SimpleInputComponentBase {
|
|
|
1299
1321
|
const rect = this.dropdownHost()?.nativeElement.getBoundingClientRect();
|
|
1300
1322
|
this.dropdownOverlay.updateSize({ width: rect?.width });
|
|
1301
1323
|
}
|
|
1302
|
-
getOptionContext(item) {
|
|
1303
|
-
return {
|
|
1304
|
-
$implicit: item,
|
|
1305
|
-
item,
|
|
1306
|
-
itemData: item.itemData,
|
|
1307
|
-
};
|
|
1308
|
-
}
|
|
1309
1324
|
onMouseMove() {
|
|
1310
1325
|
this._isMouseBeingUsed = true;
|
|
1311
1326
|
}
|
|
@@ -1412,7 +1427,7 @@ class ArdiumAutocompleteInputComponent extends _SimpleInputComponentBase {
|
|
|
1412
1427
|
provide: ARD_FORM_FIELD_CONTROL,
|
|
1413
1428
|
useExisting: ArdiumAutocompleteInputComponent,
|
|
1414
1429
|
},
|
|
1415
|
-
], queries: [{ propertyName: "prefixTemplate", first: true, predicate: ArdAutocompleteInputPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdAutocompleteInputSuffixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "placeholderTemplate", first: true, predicate: ArdAutocompleteInputPlaceholderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suggestionTemplate", first: true, predicate: ArdAutocompleteInputSuggestionTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suggestionLoadingTemplate", first: true, predicate: ArdAutocompleteInputLoadingTemplateDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "dropdownHost", first: true, predicate: ["suggestionsHost"], descendants: true, isSignal: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["suggestionsTemplate"], descendants: true, read: TemplateRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-autocomplete-input\"\r\n #suggestionsHost\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayAutocomplete()) {\r\n <div class=\"ard-autocomplete\">{{ autocomplete() }}</div>\r\n }\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #suggestionsTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-input-suggestions-panel\"\r\n role=\"listbox\"\r\n [compact]=\"compact\"\r\n aria-label=\"Suggestions\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"shouldDisplaySuggestions()\"\r\n (ardClickOutside)=\"handleSuggestionClickOutside($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n >\r\n @for (item of suggestionItems(); track item.index) {\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n [class.ard-option-selected]=\"item.selected
|
|
1430
|
+
], queries: [{ propertyName: "prefixTemplate", first: true, predicate: ArdAutocompleteInputPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdAutocompleteInputSuffixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "placeholderTemplate", first: true, predicate: ArdAutocompleteInputPlaceholderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suggestionTemplate", first: true, predicate: ArdAutocompleteInputSuggestionTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suggestionLoadingTemplate", first: true, predicate: ArdAutocompleteInputLoadingTemplateDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "dropdownHost", first: true, predicate: ["suggestionsHost"], descendants: true, isSignal: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["suggestionsTemplate"], descendants: true, read: TemplateRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-autocomplete-input\"\r\n #suggestionsHost\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayAutocomplete()) {\r\n <div class=\"ard-autocomplete\">{{ autocomplete() }}</div>\r\n }\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n [maxLength]=\"maxLengthAsInt()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #suggestionsTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-input-suggestions-panel\"\r\n role=\"listbox\"\r\n [compact]=\"compact()\"\r\n aria-label=\"Suggestions\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"shouldDisplaySuggestions()\"\r\n (ardClickOutside)=\"handleSuggestionClickOutside($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n >\r\n @for (item of suggestionItems(); track item.index) {\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n [class.ard-option-selected]=\"item.selected\"\r\n [class.ard-option-highlighted]=\"item.highlighted\"\r\n [attr.aria-selected]=\"item.selected\"\r\n (click)=\"selectSuggestion(item, $event)\"\r\n (mouseenter)=\"onSuggestionMouseEnter(item, $event)\"\r\n (mouseleave)=\"onSuggestionMouseLeave(item, $event)\"\r\n >\r\n <span class=\"ard-option-label\">\r\n <ng-template #defaultOptionTemplate>\r\n {{ item.label }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"suggestionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"optionContextGenerator()(item)\"\r\n ></ng-template>\r\n </span>\r\n </div>\r\n }\r\n @if (areSuggestionsLoading()) {\r\n <ng-template #defaultLoadingPlaceholderTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ suggestionsLoadingText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"suggestionLoadingTemplate()?.template || defaultLoadingPlaceholderTemplate\"></ng-template>\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n", styles: [".ard-input-container{position:relative}.ard-placeholder{position:absolute;left:0;right:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;pointer-events:none}.ard-text-align-left input,.ard-text-align-left .ard-placeholder{text-align:left}.ard-text-align-center input,.ard-text-align-center .ard-placeholder{text-align:center}.ard-text-align-right input,.ard-text-align-right .ard-placeholder{text-align:right}.ard-autocomplete{position:absolute}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: ["hasError", "isSuccess", "isFocused", "appearance", "variant", "compact", "prefixTemplate", "suffixTemplate"] }, { kind: "component", type: _ClearButtonComponent, selector: "ard-clear-button" }, { kind: "component", type: ArdiumDropdownPanelComponent, selector: "ard-dropdown-panel", inputs: ["panelId", "headerTemplate", "footerTemplate", "filterValue", "appearance", "variant", "compact", "isOpen"], outputs: ["scroll", "scrollToEnd"] }, { kind: "directive", type: i5.ArdiumClickOutsideDirective, selector: "[ardClickOutside]", outputs: ["ardClickOutside"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1416
1431
|
}
|
|
1417
1432
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumAutocompleteInputComponent, decorators: [{
|
|
1418
1433
|
type: Component,
|
|
@@ -1426,7 +1441,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
1426
1441
|
provide: ARD_FORM_FIELD_CONTROL,
|
|
1427
1442
|
useExisting: ArdiumAutocompleteInputComponent,
|
|
1428
1443
|
},
|
|
1429
|
-
], template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-autocomplete-input\"\r\n #suggestionsHost\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayAutocomplete()) {\r\n <div class=\"ard-autocomplete\">{{ autocomplete() }}</div>\r\n }\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #suggestionsTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-input-suggestions-panel\"\r\n role=\"listbox\"\r\n [compact]=\"compact\"\r\n aria-label=\"Suggestions\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"shouldDisplaySuggestions()\"\r\n (ardClickOutside)=\"handleSuggestionClickOutside($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n >\r\n @for (item of suggestionItems(); track item.index) {\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n [class.ard-option-selected]=\"item.selected
|
|
1444
|
+
], template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-autocomplete-input\"\r\n #suggestionsHost\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayAutocomplete()) {\r\n <div class=\"ard-autocomplete\">{{ autocomplete() }}</div>\r\n }\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n [maxLength]=\"maxLengthAsInt()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #suggestionsTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-input-suggestions-panel\"\r\n role=\"listbox\"\r\n [compact]=\"compact()\"\r\n aria-label=\"Suggestions\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"shouldDisplaySuggestions()\"\r\n (ardClickOutside)=\"handleSuggestionClickOutside($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n >\r\n @for (item of suggestionItems(); track item.index) {\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n [class.ard-option-selected]=\"item.selected\"\r\n [class.ard-option-highlighted]=\"item.highlighted\"\r\n [attr.aria-selected]=\"item.selected\"\r\n (click)=\"selectSuggestion(item, $event)\"\r\n (mouseenter)=\"onSuggestionMouseEnter(item, $event)\"\r\n (mouseleave)=\"onSuggestionMouseLeave(item, $event)\"\r\n >\r\n <span class=\"ard-option-label\">\r\n <ng-template #defaultOptionTemplate>\r\n {{ item.label }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"suggestionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"optionContextGenerator()(item)\"\r\n ></ng-template>\r\n </span>\r\n </div>\r\n }\r\n @if (areSuggestionsLoading()) {\r\n <ng-template #defaultLoadingPlaceholderTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ suggestionsLoadingText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"suggestionLoadingTemplate()?.template || defaultLoadingPlaceholderTemplate\"></ng-template>\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n", styles: [".ard-input-container{position:relative}.ard-placeholder{position:absolute;left:0;right:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;pointer-events:none}.ard-text-align-left input,.ard-text-align-left .ard-placeholder{text-align:left}.ard-text-align-center input,.ard-text-align-center .ard-placeholder{text-align:center}.ard-text-align-right input,.ard-text-align-right .ard-placeholder{text-align:right}.ard-autocomplete{position:absolute}\n"] }]
|
|
1430
1445
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
1431
1446
|
type: Inject,
|
|
1432
1447
|
args: [ARD_AUTOCOMPLETE_INPUT_DEFAULTS]
|
|
@@ -2186,7 +2201,7 @@ class ArdiumInputComponent extends _SimpleInputComponentBase {
|
|
|
2186
2201
|
provide: ARD_FORM_FIELD_CONTROL,
|
|
2187
2202
|
useExisting: ArdiumInputComponent,
|
|
2188
2203
|
},
|
|
2189
|
-
], queries: [{ propertyName: "prefixTemplate", first: true, predicate: ArdInputPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdInputSuffixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "placeholderTemplate", first: true, predicate: ArdInputPlaceholderTemplateDirective, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocusMaster($event)\"\r\n (blur)=\"onBlurMaster($event)\"\r\n (change)=\"onChange($event)\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n", styles: [".ard-input-container{position:relative}.ard-placeholder{position:absolute;left:0;right:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;pointer-events:none}.ard-text-align-left input,.ard-text-align-left .ard-placeholder{text-align:left}.ard-text-align-center input,.ard-text-align-center .ard-placeholder{text-align:center}.ard-text-align-right input,.ard-text-align-right .ard-placeholder{text-align:right}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: _ClearButtonComponent, selector: "ard-clear-button" }, { kind: "component", type: ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: ["hasError", "isSuccess", "isFocused", "appearance", "variant", "compact", "prefixTemplate", "suffixTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2204
|
+
], queries: [{ propertyName: "prefixTemplate", first: true, predicate: ArdInputPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdInputSuffixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "placeholderTemplate", first: true, predicate: ArdInputPlaceholderTemplateDirective, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n [maxLength]=\"maxLengthAsInt()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocusMaster($event)\"\r\n (blur)=\"onBlurMaster($event)\"\r\n (change)=\"onChange($event)\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n", styles: [".ard-input-container{position:relative}.ard-placeholder{position:absolute;left:0;right:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;pointer-events:none}.ard-text-align-left input,.ard-text-align-left .ard-placeholder{text-align:left}.ard-text-align-center input,.ard-text-align-center .ard-placeholder{text-align:center}.ard-text-align-right input,.ard-text-align-right .ard-placeholder{text-align:right}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: _ClearButtonComponent, selector: "ard-clear-button" }, { kind: "component", type: ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: ["hasError", "isSuccess", "isFocused", "appearance", "variant", "compact", "prefixTemplate", "suffixTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2190
2205
|
}
|
|
2191
2206
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumInputComponent, decorators: [{
|
|
2192
2207
|
type: Component,
|
|
@@ -2200,7 +2215,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
2200
2215
|
provide: ARD_FORM_FIELD_CONTROL,
|
|
2201
2216
|
useExisting: ArdiumInputComponent,
|
|
2202
2217
|
},
|
|
2203
|
-
], template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocusMaster($event)\"\r\n (blur)=\"onBlurMaster($event)\"\r\n (change)=\"onChange($event)\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n", styles: [".ard-input-container{position:relative}.ard-placeholder{position:absolute;left:0;right:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;pointer-events:none}.ard-text-align-left input,.ard-text-align-left .ard-placeholder{text-align:left}.ard-text-align-center input,.ard-text-align-center .ard-placeholder{text-align:center}.ard-text-align-right input,.ard-text-align-right .ard-placeholder{text-align:right}\n"] }]
|
|
2218
|
+
], template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n [maxLength]=\"maxLengthAsInt()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocusMaster($event)\"\r\n (blur)=\"onBlurMaster($event)\"\r\n (change)=\"onChange($event)\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n", styles: [".ard-input-container{position:relative}.ard-placeholder{position:absolute;left:0;right:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;pointer-events:none}.ard-text-align-left input,.ard-text-align-left .ard-placeholder{text-align:left}.ard-text-align-center input,.ard-text-align-center .ard-placeholder{text-align:center}.ard-text-align-right input,.ard-text-align-right .ard-placeholder{text-align:right}\n"] }]
|
|
2204
2219
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
2205
2220
|
type: Inject,
|
|
2206
2221
|
args: [ARD_SIMPLE_INPUT_DEFAULTS]
|
|
@@ -2519,7 +2534,7 @@ class ArdiumPasswordInputComponent extends _FormFieldComponentBase {
|
|
|
2519
2534
|
provide: ARD_FORM_FIELD_CONTROL,
|
|
2520
2535
|
useExisting: ArdiumPasswordInputComponent,
|
|
2521
2536
|
},
|
|
2522
|
-
], queries: [{ propertyName: "prefixTemplate", first: true, predicate: ArdPasswordInputPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdPasswordInputSuffixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "placeholderTemplate", first: true, predicate: ArdPasswordInputPlaceholderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "revealTemplate", first: true, predicate: ArdPasswordInputRevealButtonTemplateDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "textInputEl", first: true, predicate: ["textInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-password-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value()\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\" />\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n [type]=\"!revealable() || !revealed() ? 'password' : 'text'\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (change)=\"onChange($event)\"\r\n (copy)=\"onCopy($event)\"\r\n [class.ard-revealed]=\"revealable() && revealed()\"\r\n />\r\n </div>\r\n\r\n @if (revealable()) {\r\n <button\r\n class=\"ard-reveal-button\"\r\n type=\"button\"\r\n (click)=\"!holdToReveal() && toggleReveal()\"\r\n (mousedown)=\"holdToReveal() && revealed.set(true)\"\r\n (mouseup)=\"holdToReveal() && revealed.set(false)\"\r\n >\r\n <ng-template\r\n #defaultRevealTemplate\r\n let-revealed\r\n >\r\n <ard-icon [icon]=\"revealed ? 'visibility' : 'visibility_off'\"></ard-icon>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"revealTemplate()?.template || defaultRevealTemplate\"\r\n [ngTemplateOutletContext]=\"revealButtonContext()\"\r\n />\r\n </button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: ["hasError", "isSuccess", "isFocused", "appearance", "variant", "compact", "prefixTemplate", "suffixTemplate"] }, { kind: "component", type: ArdiumIconComponent, selector: "ard-icon", inputs: ["ariaLabel", "icon", "filled", "weight", "grade", "opticalSize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2537
|
+
], queries: [{ propertyName: "prefixTemplate", first: true, predicate: ArdPasswordInputPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdPasswordInputSuffixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "placeholderTemplate", first: true, predicate: ArdPasswordInputPlaceholderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "revealTemplate", first: true, predicate: ArdPasswordInputRevealButtonTemplateDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "textInputEl", first: true, predicate: ["textInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-password-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value()\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\" />\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n [type]=\"!revealable() || !revealed() ? 'password' : 'text'\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (change)=\"onChange($event)\"\r\n (copy)=\"onCopy($event)\"\r\n [class.ard-revealed]=\"revealable() && revealed()\"\r\n />\r\n </div>\r\n\r\n @if (revealable()) {\r\n <button\r\n class=\"ard-reveal-button\"\r\n type=\"button\"\r\n (click)=\"!holdToReveal() && toggleReveal()\"\r\n (mousedown)=\"holdToReveal() && revealed.set(true)\"\r\n (mouseup)=\"holdToReveal() && revealed.set(false)\"\r\n >\r\n <ng-template\r\n #defaultRevealTemplate\r\n let-revealed\r\n >\r\n <ard-icon [icon]=\"revealed ? 'visibility' : 'visibility_off'\"></ard-icon>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"revealTemplate()?.template || defaultRevealTemplate\"\r\n [ngTemplateOutletContext]=\"revealButtonContext()\"\r\n />\r\n </button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: ["hasError", "isSuccess", "isFocused", "appearance", "variant", "compact", "prefixTemplate", "suffixTemplate"] }, { kind: "component", type: ArdiumIconComponent, selector: "ard-icon", inputs: ["ariaLabel", "icon", "filled", "weight", "grade", "opticalSize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
2523
2538
|
}
|
|
2524
2539
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumPasswordInputComponent, decorators: [{
|
|
2525
2540
|
type: Component,
|
|
@@ -2533,7 +2548,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
2533
2548
|
provide: ARD_FORM_FIELD_CONTROL,
|
|
2534
2549
|
useExisting: ArdiumPasswordInputComponent,
|
|
2535
2550
|
},
|
|
2536
|
-
], template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-password-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value()\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\" />\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n [type]=\"!revealable() || !revealed() ? 'password' : 'text'\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (change)=\"onChange($event)\"\r\n (copy)=\"onCopy($event)\"\r\n [class.ard-revealed]=\"revealable() && revealed()\"\r\n />\r\n </div>\r\n\r\n @if (revealable()) {\r\n <button\r\n class=\"ard-reveal-button\"\r\n type=\"button\"\r\n (click)=\"!holdToReveal() && toggleReveal()\"\r\n (mousedown)=\"holdToReveal() && revealed.set(true)\"\r\n (mouseup)=\"holdToReveal() && revealed.set(false)\"\r\n >\r\n <ng-template\r\n #defaultRevealTemplate\r\n let-revealed\r\n >\r\n <ard-icon [icon]=\"revealed ? 'visibility' : 'visibility_off'\"></ard-icon>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"revealTemplate()?.template || defaultRevealTemplate\"\r\n [ngTemplateOutletContext]=\"revealButtonContext()\"\r\n />\r\n </button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n" }]
|
|
2551
|
+
], template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-password-input\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-has-value]=\"value()\"\r\n (click)=\"focus()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\" />\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n [type]=\"!revealable() || !revealed() ? 'password' : 'text'\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (change)=\"onChange($event)\"\r\n (copy)=\"onCopy($event)\"\r\n [class.ard-revealed]=\"revealable() && revealed()\"\r\n />\r\n </div>\r\n\r\n @if (revealable()) {\r\n <button\r\n class=\"ard-reveal-button\"\r\n type=\"button\"\r\n (click)=\"!holdToReveal() && toggleReveal()\"\r\n (mousedown)=\"holdToReveal() && revealed.set(true)\"\r\n (mouseup)=\"holdToReveal() && revealed.set(false)\"\r\n >\r\n <ng-template\r\n #defaultRevealTemplate\r\n let-revealed\r\n >\r\n <ard-icon [icon]=\"revealed ? 'visibility' : 'visibility_off'\"></ard-icon>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"revealTemplate()?.template || defaultRevealTemplate\"\r\n [ngTemplateOutletContext]=\"revealButtonContext()\"\r\n />\r\n </button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n" }]
|
|
2537
2552
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
2538
2553
|
type: Inject,
|
|
2539
2554
|
args: [ARD_PASSWORD_INPUT_DEFAULTS]
|
|
@@ -2654,43 +2669,66 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
2654
2669
|
}] });
|
|
2655
2670
|
|
|
2656
2671
|
class ItemStorage {
|
|
2672
|
+
_updateItems(updateFn) {
|
|
2673
|
+
this._items.map(updateFn);
|
|
2674
|
+
}
|
|
2675
|
+
_updateItemsFromArray(updateFn, itemsToUpdate) {
|
|
2676
|
+
this._items.update(items => {
|
|
2677
|
+
for (const itemToUpdate of itemsToUpdate) {
|
|
2678
|
+
const item = items[itemToUpdate.index];
|
|
2679
|
+
if (item) {
|
|
2680
|
+
items[itemToUpdate.index] = updateFn(item);
|
|
2681
|
+
}
|
|
2682
|
+
}
|
|
2683
|
+
return items;
|
|
2684
|
+
});
|
|
2685
|
+
}
|
|
2657
2686
|
constructor(_ardParentComp) {
|
|
2658
2687
|
this._ardParentComp = _ardParentComp;
|
|
2659
|
-
this.
|
|
2660
|
-
this.
|
|
2661
|
-
this.
|
|
2662
|
-
this.
|
|
2663
|
-
this.
|
|
2688
|
+
this._items = arraySignal([]);
|
|
2689
|
+
this.filteredItems = computed(() => this.items().filter(item => item.filtered));
|
|
2690
|
+
this.selectedItems = computed(() => this.items().filter(item => item.selected));
|
|
2691
|
+
this.highlightedItems = computed(() => this.items().filter(item => item.highlighted));
|
|
2692
|
+
this._lastHighlightedItem = signal(undefined);
|
|
2664
2693
|
this._recentlyHighlightedItem = signal(undefined);
|
|
2665
|
-
this.
|
|
2666
|
-
|
|
2667
|
-
|
|
2668
|
-
|
|
2669
|
-
|
|
2670
|
-
|
|
2671
|
-
|
|
2672
|
-
|
|
2673
|
-
|
|
2674
|
-
|
|
2675
|
-
|
|
2676
|
-
|
|
2694
|
+
this._groups = computed(() => {
|
|
2695
|
+
const groupMap = this._createEmptyGroupMap();
|
|
2696
|
+
for (const item of this.filteredItems()) {
|
|
2697
|
+
if (this._ardParentComp.hideSelected() && item.selected)
|
|
2698
|
+
continue;
|
|
2699
|
+
let group = groupMap.get(item.group);
|
|
2700
|
+
if (!group) {
|
|
2701
|
+
group = {
|
|
2702
|
+
label: item.group?.toString?.() ?? String(item.group),
|
|
2703
|
+
children: [],
|
|
2704
|
+
disabled: false,
|
|
2705
|
+
};
|
|
2706
|
+
groupMap.set(item.group, group);
|
|
2707
|
+
}
|
|
2708
|
+
group.children.push(item);
|
|
2677
2709
|
}
|
|
2678
|
-
return
|
|
2710
|
+
return groupMap;
|
|
2679
2711
|
});
|
|
2680
|
-
this.
|
|
2712
|
+
this.groups = computed(() => Array.from(this._groups().entries())
|
|
2713
|
+
.map(([, group]) => group)
|
|
2714
|
+
.filter(group => group.children.length));
|
|
2715
|
+
this.items = computed(() => [...this._items()]);
|
|
2716
|
+
this.lastSelectedItem = computed(() => this.selectedItems().last(1, item => !item.disabled));
|
|
2681
2717
|
this.value = computed(() => this._itemsToValue(this.selectedItems()));
|
|
2682
|
-
this.isNoItemsToSelect = computed(() => this.
|
|
2683
|
-
this.isNoItemsFound = computed(() => this.
|
|
2684
|
-
this.isAnyItemSelected = computed(() => this.
|
|
2685
|
-
this.isAnyItemHighlighted = computed(() => this.
|
|
2686
|
-
this.
|
|
2687
|
-
|
|
2688
|
-
|
|
2689
|
-
this.
|
|
2690
|
-
this.
|
|
2718
|
+
this.isNoItemsToSelect = computed(() => this.items().length === this.selectedItems().length);
|
|
2719
|
+
this.isNoItemsFound = computed(() => this.filteredItems().length === 0);
|
|
2720
|
+
this.isAnyItemSelected = computed(() => this.selectedItems().length > 0);
|
|
2721
|
+
this.isAnyItemHighlighted = computed(() => this.highlightedItems().length > 0);
|
|
2722
|
+
this.itemsLeftUntilLimit = computed(() => this._ardParentComp.multiselectable() && isDefined(this._ardParentComp.maxSelectedItems())
|
|
2723
|
+
? this._ardParentComp.maxSelectedItems() - this.selectedItems().length
|
|
2724
|
+
: 1);
|
|
2725
|
+
this.isItemLimitReached = computed(() => this.itemsLeftUntilLimit() <= 0);
|
|
2726
|
+
this._highlightableItems = computed(() => this.filteredItems().filter(item => !item.disabled && (this._ardParentComp.hideSelected() ? !item.selected : this.isItemLimitReached() ? item.selected : true)));
|
|
2727
|
+
this._valueToWriteAfterItemsLoad = null;
|
|
2728
|
+
this._wasValueWriteDeferred = false;
|
|
2691
2729
|
}
|
|
2692
2730
|
_itemsToValue(items) {
|
|
2693
|
-
return items.map(item => item.value
|
|
2731
|
+
return items.map(item => item.value);
|
|
2694
2732
|
}
|
|
2695
2733
|
setItems(items) {
|
|
2696
2734
|
let areItemsPrimitive = false;
|
|
@@ -2710,16 +2748,18 @@ class ItemStorage {
|
|
|
2710
2748
|
this._items.set(items.map((item, index) => {
|
|
2711
2749
|
return this._setItemsMapFn(item, index, areItemsPrimitive);
|
|
2712
2750
|
}));
|
|
2713
|
-
//
|
|
2714
|
-
|
|
2715
|
-
|
|
2716
|
-
this._populateGroups();
|
|
2717
|
-
//write value if it was
|
|
2718
|
-
const toWrite = this._valueToWriteAfterItemsLoad();
|
|
2719
|
-
if (toWrite !== undefined) {
|
|
2720
|
-
this.handleWriteValue(toWrite);
|
|
2751
|
+
// write value if it was deferred
|
|
2752
|
+
if (isDefined(this._valueToWriteAfterItemsLoad)) {
|
|
2753
|
+
this.handleWriteValue(this._valueToWriteAfterItemsLoad);
|
|
2721
2754
|
}
|
|
2722
2755
|
}
|
|
2756
|
+
updateItemFromOptionComponent(itemValue, updatedItem) {
|
|
2757
|
+
const item = this.findItemByValue(itemValue);
|
|
2758
|
+
if (!item)
|
|
2759
|
+
return;
|
|
2760
|
+
const index = item.index;
|
|
2761
|
+
this._items.setAt(index, { ...item, ...updatedItem });
|
|
2762
|
+
}
|
|
2723
2763
|
_addSingleItem(item) {
|
|
2724
2764
|
const isItemPrimitive = isPrimitive(item);
|
|
2725
2765
|
//map a primitive item to a usable object
|
|
@@ -2727,13 +2767,11 @@ class ItemStorage {
|
|
|
2727
2767
|
item = this._primitiveItemsMapFn(item);
|
|
2728
2768
|
}
|
|
2729
2769
|
//map the item to create data bindings
|
|
2730
|
-
const ardOption = this._setItemsMapFn(item, (this.
|
|
2770
|
+
const ardOption = this._setItemsMapFn(item, (this.items().last()?.index ?? 0) + 1, isItemPrimitive);
|
|
2731
2771
|
//push the item into all items
|
|
2732
|
-
this._items.
|
|
2772
|
+
this._items.push(ardOption);
|
|
2733
2773
|
//add all items to filter array
|
|
2734
|
-
this.
|
|
2735
|
-
//add item to groups
|
|
2736
|
-
this._populateGroups();
|
|
2774
|
+
this._updateItems(item => ({ ...item, filtered: true }));
|
|
2737
2775
|
return ardOption;
|
|
2738
2776
|
}
|
|
2739
2777
|
_primitiveItemsMapFn(item) {
|
|
@@ -2772,15 +2810,16 @@ class ItemStorage {
|
|
|
2772
2810
|
_setItemsMapFn(rawItemData, index, areItemsPrimitive) {
|
|
2773
2811
|
if (areItemsPrimitive) {
|
|
2774
2812
|
return {
|
|
2775
|
-
itemData:
|
|
2813
|
+
itemData: rawItemData,
|
|
2776
2814
|
index: index,
|
|
2777
|
-
value:
|
|
2778
|
-
label:
|
|
2779
|
-
disabled:
|
|
2780
|
-
|
|
2781
|
-
|
|
2815
|
+
value: rawItemData.value,
|
|
2816
|
+
label: rawItemData.value?.toString?.() ?? String(rawItemData.value),
|
|
2817
|
+
disabled: false,
|
|
2818
|
+
filtered: true,
|
|
2819
|
+
selected: false,
|
|
2820
|
+
highlighted: false,
|
|
2782
2821
|
group: undefined,
|
|
2783
|
-
highlighted_recently:
|
|
2822
|
+
highlighted_recently: false,
|
|
2784
2823
|
};
|
|
2785
2824
|
}
|
|
2786
2825
|
//get value
|
|
@@ -2812,55 +2851,28 @@ class ItemStorage {
|
|
|
2812
2851
|
}
|
|
2813
2852
|
}
|
|
2814
2853
|
return {
|
|
2815
|
-
itemData:
|
|
2854
|
+
itemData: rawItemData,
|
|
2816
2855
|
index: index,
|
|
2817
|
-
value:
|
|
2818
|
-
label:
|
|
2819
|
-
disabled:
|
|
2856
|
+
value: value,
|
|
2857
|
+
label: label?.toString?.() ?? String(label),
|
|
2858
|
+
disabled: disabled,
|
|
2820
2859
|
group: group,
|
|
2821
|
-
|
|
2822
|
-
|
|
2823
|
-
|
|
2860
|
+
filtered: true,
|
|
2861
|
+
selected: false,
|
|
2862
|
+
highlighted: false,
|
|
2863
|
+
highlighted_recently: false,
|
|
2824
2864
|
};
|
|
2825
2865
|
}
|
|
2826
|
-
_populateGroups() {
|
|
2827
|
-
this._groups.set(this._createEmptyGroupMap());
|
|
2828
|
-
for (const item of this._filteredItems()) {
|
|
2829
|
-
if (this._ardParentComp.hideSelected() && item.selected())
|
|
2830
|
-
continue;
|
|
2831
|
-
this._addToGroup(item);
|
|
2832
|
-
}
|
|
2833
|
-
}
|
|
2834
|
-
_addToGroup(item) {
|
|
2835
|
-
const groupKey = item.group;
|
|
2836
|
-
const targetGroup = this._groups().get(groupKey);
|
|
2837
|
-
//create new group if no such group exists
|
|
2838
|
-
if (!targetGroup) {
|
|
2839
|
-
this._groups.update(v => {
|
|
2840
|
-
const map = new Map(v);
|
|
2841
|
-
map.set(groupKey, {
|
|
2842
|
-
label: signal(String(groupKey ?? '')),
|
|
2843
|
-
children: signal([item]),
|
|
2844
|
-
disabled: signal(false),
|
|
2845
|
-
selected: signal(false),
|
|
2846
|
-
highlighted: signal(false),
|
|
2847
|
-
});
|
|
2848
|
-
return map;
|
|
2849
|
-
});
|
|
2850
|
-
return;
|
|
2851
|
-
}
|
|
2852
|
-
targetGroup.children.update(v => [...v, item]);
|
|
2853
|
-
}
|
|
2854
2866
|
_createEmptyGroupMap() {
|
|
2855
2867
|
return new Map([
|
|
2856
2868
|
[
|
|
2857
2869
|
undefined,
|
|
2858
2870
|
{
|
|
2859
|
-
label:
|
|
2860
|
-
children:
|
|
2861
|
-
disabled:
|
|
2862
|
-
selected:
|
|
2863
|
-
highlighted:
|
|
2871
|
+
label: '',
|
|
2872
|
+
children: [],
|
|
2873
|
+
disabled: false,
|
|
2874
|
+
selected: false,
|
|
2875
|
+
highlighted: false,
|
|
2864
2876
|
},
|
|
2865
2877
|
],
|
|
2866
2878
|
]);
|
|
@@ -2875,43 +2887,47 @@ class ItemStorage {
|
|
|
2875
2887
|
});
|
|
2876
2888
|
}
|
|
2877
2889
|
handleWriteValue(ngModel) {
|
|
2878
|
-
if (!isArray(ngModel)) {
|
|
2879
|
-
ngModel = [ngModel];
|
|
2880
|
-
}
|
|
2881
2890
|
//defer writing the value if no options are yet loaded
|
|
2882
|
-
if (!this._wasValueWriteDeferred
|
|
2883
|
-
this._valueToWriteAfterItemsLoad
|
|
2891
|
+
if (!this._wasValueWriteDeferred && this._items().length === 0) {
|
|
2892
|
+
this._valueToWriteAfterItemsLoad = ngModel;
|
|
2893
|
+
this._wasValueWriteDeferred = true;
|
|
2884
2894
|
return;
|
|
2885
2895
|
}
|
|
2886
|
-
|
|
2887
|
-
if (!
|
|
2896
|
+
// if null or undefined clear selection
|
|
2897
|
+
if (!isDefined(ngModel)) {
|
|
2898
|
+
this.clearAllSelected();
|
|
2888
2899
|
return;
|
|
2889
2900
|
}
|
|
2890
|
-
|
|
2891
|
-
|
|
2892
|
-
|
|
2893
|
-
|
|
2894
|
-
|
|
2895
|
-
|
|
2901
|
+
// convert from single item to items array
|
|
2902
|
+
if (!isArray(ngModel)) {
|
|
2903
|
+
ngModel = [ngModel];
|
|
2904
|
+
}
|
|
2905
|
+
const ngModelArray = ngModel;
|
|
2906
|
+
// check value validity
|
|
2907
|
+
if (!this._isWriteValueValid(ngModelArray)) {
|
|
2908
|
+
return;
|
|
2909
|
+
}
|
|
2910
|
+
const itemsToSelect = ngModelArray
|
|
2911
|
+
.map(v => {
|
|
2912
|
+
const item = this.findItemByValue(v);
|
|
2896
2913
|
if (item) {
|
|
2897
|
-
|
|
2898
|
-
return;
|
|
2914
|
+
return item;
|
|
2899
2915
|
}
|
|
2900
|
-
console.warn(`ARD-WA${this._ardParentComp._componentId}1: Couldn't find an item with value ${
|
|
2901
|
-
|
|
2902
|
-
|
|
2903
|
-
|
|
2904
|
-
|
|
2916
|
+
console.warn(`ARD-WA${this._ardParentComp._componentId}1: Couldn't find an item with value ${v?.toString?.() || String(v)} when trying to select it.`);
|
|
2917
|
+
return null;
|
|
2918
|
+
})
|
|
2919
|
+
.filter(Boolean);
|
|
2920
|
+
this.selectItem(...itemsToSelect);
|
|
2905
2921
|
}
|
|
2906
2922
|
findItemByValue(valueToFind) {
|
|
2907
2923
|
let findBy;
|
|
2908
2924
|
if (this._ardParentComp.compareWith()) {
|
|
2909
|
-
findBy = item => this._ardParentComp.compareWith()(valueToFind, item.value
|
|
2925
|
+
findBy = item => this._ardParentComp.compareWith()(valueToFind, item.value);
|
|
2910
2926
|
}
|
|
2911
2927
|
else {
|
|
2912
|
-
findBy = item => item.value
|
|
2928
|
+
findBy = item => item.value === valueToFind;
|
|
2913
2929
|
}
|
|
2914
|
-
return this.
|
|
2930
|
+
return this.items().find(item => findBy(item));
|
|
2915
2931
|
}
|
|
2916
2932
|
async addCustomOption(value, fn) {
|
|
2917
2933
|
const fnResult = fn(value);
|
|
@@ -2928,18 +2944,13 @@ class ItemStorage {
|
|
|
2928
2944
|
const newOptionObj = this._addSingleItem(optionValue);
|
|
2929
2945
|
return newOptionObj;
|
|
2930
2946
|
}
|
|
2931
|
-
clearAllSelected(
|
|
2932
|
-
|
|
2933
|
-
|
|
2934
|
-
}
|
|
2935
|
-
const removedItemValues = this._itemsToValue(this._selectedItems());
|
|
2936
|
-
this._selectedItems.set([]);
|
|
2937
|
-
if (repopulateGroups && this._ardParentComp.hideSelected())
|
|
2938
|
-
this._populateGroups();
|
|
2947
|
+
clearAllSelected() {
|
|
2948
|
+
const removedItemValues = this._itemsToValue(this.selectedItems());
|
|
2949
|
+
this._updateItems(item => ({ ...item, selected: false }));
|
|
2939
2950
|
return removedItemValues;
|
|
2940
2951
|
}
|
|
2941
2952
|
clearLastSelected() {
|
|
2942
|
-
const item = this.
|
|
2953
|
+
const item = this.selectedItems().last();
|
|
2943
2954
|
if (!item)
|
|
2944
2955
|
return item;
|
|
2945
2956
|
this.unselectItem(item);
|
|
@@ -2949,114 +2960,94 @@ class ItemStorage {
|
|
|
2949
2960
|
if (this.isItemLimitReached()) {
|
|
2950
2961
|
return [[], [], this._itemsToValue(items)];
|
|
2951
2962
|
}
|
|
2952
|
-
|
|
2953
|
-
if (!this._ardParentComp.multiselectable()) {
|
|
2954
|
-
unselected = this.clearAllSelected(false);
|
|
2955
|
-
}
|
|
2963
|
+
const itemsLeftUntilLimit = this.itemsLeftUntilLimit();
|
|
2956
2964
|
let itemsSelectedCount = 0;
|
|
2957
|
-
const
|
|
2965
|
+
const newItemsArray = [...this.items()];
|
|
2958
2966
|
for (const item of items) {
|
|
2959
2967
|
itemsSelectedCount++;
|
|
2960
|
-
if (item.selected
|
|
2968
|
+
if (item.selected)
|
|
2961
2969
|
continue;
|
|
2962
|
-
if (
|
|
2970
|
+
if (itemsSelectedCount > itemsLeftUntilLimit) {
|
|
2963
2971
|
break;
|
|
2964
2972
|
}
|
|
2965
|
-
item.selected
|
|
2966
|
-
|
|
2967
|
-
|
|
2973
|
+
newItemsArray[item.index] = { ...item, selected: true };
|
|
2974
|
+
}
|
|
2975
|
+
const itemsUnselected = this._ardParentComp.multiselectable()
|
|
2976
|
+
? []
|
|
2977
|
+
: this.selectedItems().filter(item => !items.find(v => v.value === item.value));
|
|
2978
|
+
for (const item of itemsUnselected) {
|
|
2979
|
+
newItemsArray[item.index] = { ...item, selected: false };
|
|
2980
|
+
}
|
|
2981
|
+
const itemsSelected = items.slice(0, itemsSelectedCount);
|
|
2982
|
+
const itemsFailedToSelect = items.slice(itemsSelectedCount);
|
|
2983
|
+
const isAnyNewItemToBeSelected = !!itemsSelected.find(item => !this.selectedItems().find(v => v.value === item.value));
|
|
2984
|
+
if (isAnyNewItemToBeSelected) {
|
|
2985
|
+
this._items.set(newItemsArray);
|
|
2968
2986
|
}
|
|
2969
|
-
if (this.
|
|
2970
|
-
this.
|
|
2987
|
+
if (!this._lastHighlightedItem()) {
|
|
2988
|
+
this._lastHighlightedItem.set(itemsFailedToSelect.first() || itemsSelected.last());
|
|
2971
2989
|
}
|
|
2972
|
-
|
|
2973
|
-
return [this._itemsToValue(itemsSelected), unselected, this._itemsToValue(itemsFailedToSelect)];
|
|
2990
|
+
return [this._itemsToValue(itemsSelected), this._itemsToValue(itemsUnselected), this._itemsToValue(itemsFailedToSelect)];
|
|
2974
2991
|
}
|
|
2975
2992
|
unselectItem(...items) {
|
|
2976
|
-
|
|
2977
|
-
|
|
2978
|
-
|
|
2979
|
-
item.selected.set(false);
|
|
2980
|
-
}
|
|
2981
|
-
this._selectedItems.update(v => v.filter(v => v.selected()));
|
|
2982
|
-
if (this._ardParentComp.hideSelected()) {
|
|
2983
|
-
this._populateGroups();
|
|
2993
|
+
this._updateItemsFromArray(item => ({ ...item, selected: false }), items);
|
|
2994
|
+
if (!this._lastHighlightedItem()) {
|
|
2995
|
+
this._lastHighlightedItem.set(items.last());
|
|
2984
2996
|
}
|
|
2985
2997
|
return this._itemsToValue(items);
|
|
2986
2998
|
}
|
|
2987
|
-
|
|
2988
|
-
|
|
2989
|
-
|
|
2990
|
-
|
|
2991
|
-
for (const group of this._highlightedGroups()) {
|
|
2992
|
-
group.highlighted.set(false);
|
|
2999
|
+
toggleItem(item) {
|
|
3000
|
+
if (item.selected) {
|
|
3001
|
+
this.unselectItem(item);
|
|
3002
|
+
return;
|
|
2993
3003
|
}
|
|
2994
|
-
this.
|
|
2995
|
-
|
|
3004
|
+
this.selectItem(item);
|
|
3005
|
+
}
|
|
3006
|
+
clearAllHighlights() {
|
|
3007
|
+
this._updateItems(item => ({ ...item, highlighted: false }));
|
|
2996
3008
|
}
|
|
2997
3009
|
highlightGroup(group) {
|
|
2998
|
-
|
|
2999
|
-
|
|
3000
|
-
|
|
3001
|
-
return group.children().first();
|
|
3010
|
+
const childrenIndexes = new Set(group.children.map(item => item.index));
|
|
3011
|
+
this._updateItems(item => ({ ...item, highlighted: childrenIndexes.has(item.index) }));
|
|
3012
|
+
return group.children.first();
|
|
3002
3013
|
}
|
|
3003
3014
|
highlightSingleItem(item) {
|
|
3004
|
-
if (!item || item.disabled
|
|
3015
|
+
if (!item || item.disabled)
|
|
3005
3016
|
return null;
|
|
3006
3017
|
this.clearAllHighlights();
|
|
3007
3018
|
return this.highlightItem(item);
|
|
3008
3019
|
}
|
|
3009
3020
|
highlightItem(...items) {
|
|
3010
|
-
|
|
3011
|
-
|
|
3012
|
-
}
|
|
3013
|
-
this._highlightedItems.update(v => [...v, ...items]);
|
|
3021
|
+
this._updateItemsFromArray(item => ({ ...item, highlighted: true }), items);
|
|
3022
|
+
this._lastHighlightedItem.set(items.last());
|
|
3014
3023
|
return items.last();
|
|
3015
3024
|
}
|
|
3016
3025
|
unhighlightItem(...items) {
|
|
3017
|
-
|
|
3018
|
-
if (!item || !item.highlighted)
|
|
3019
|
-
return;
|
|
3020
|
-
item.highlighted.set(false);
|
|
3021
|
-
}
|
|
3022
|
-
this._highlightedItems.update(v => v.filter(v => v.highlighted()));
|
|
3026
|
+
this._updateItemsFromArray(item => ({ ...item, highlighted: false }), items);
|
|
3023
3027
|
}
|
|
3024
3028
|
highlightFirstItem() {
|
|
3025
3029
|
this.clearAllHighlights();
|
|
3026
|
-
const itemsToHighlight = this.
|
|
3030
|
+
const itemsToHighlight = this._highlightableItems();
|
|
3027
3031
|
return this.highlightSingleItem(itemsToHighlight.first());
|
|
3028
3032
|
}
|
|
3029
3033
|
highlightLastItem() {
|
|
3030
3034
|
this.clearAllHighlights();
|
|
3031
|
-
const itemsToHighlight = this.
|
|
3035
|
+
const itemsToHighlight = this._highlightableItems();
|
|
3032
3036
|
return this.highlightSingleItem(itemsToHighlight.last());
|
|
3033
3037
|
}
|
|
3034
|
-
_getHiglightableItems() {
|
|
3035
|
-
let itemsToHighlight = this._filteredItems().filter(item => !item.disabled());
|
|
3036
|
-
if (this._ardParentComp.hideSelected()) {
|
|
3037
|
-
itemsToHighlight = itemsToHighlight.filter(item => !item.selected());
|
|
3038
|
-
}
|
|
3039
|
-
return itemsToHighlight;
|
|
3040
|
-
}
|
|
3041
3038
|
highlightAllItems() {
|
|
3042
|
-
this.highlightItem(...this.
|
|
3043
|
-
}
|
|
3044
|
-
_clearRecentlyHighlighted() {
|
|
3045
|
-
if (this._recentlyHighlightedItem()) {
|
|
3046
|
-
this._recentlyHighlightedItem().highlighted_recently.set(false);
|
|
3047
|
-
}
|
|
3039
|
+
this.highlightItem(...this._highlightableItems());
|
|
3048
3040
|
}
|
|
3049
|
-
setRecentlyHighlighted(
|
|
3050
|
-
this.
|
|
3051
|
-
|
|
3052
|
-
this._recentlyHighlightedItem.set(item);
|
|
3041
|
+
setRecentlyHighlighted(itemToSet) {
|
|
3042
|
+
this._updateItemsFromArray(item => ({ ...item, highlighted_recently: itemToSet.index === item.index }), [itemToSet]);
|
|
3043
|
+
this._recentlyHighlightedItem.set(itemToSet);
|
|
3053
3044
|
}
|
|
3054
3045
|
highlightNextItem(offset, hasShift) {
|
|
3055
3046
|
if (!this.isAnyItemHighlighted()) {
|
|
3056
3047
|
return this.highlightFirstItem();
|
|
3057
3048
|
}
|
|
3058
|
-
const currentItem = this.
|
|
3059
|
-
const highlightableItems = this.
|
|
3049
|
+
const currentItem = this._lastHighlightedItem() ?? this._highlightableItems().first();
|
|
3050
|
+
const highlightableItems = this._highlightableItems();
|
|
3060
3051
|
const currentIndexInFiltered = highlightableItems.findIndex(item => item.index === currentItem.index);
|
|
3061
3052
|
let nextItemIndex = currentIndexInFiltered + offset;
|
|
3062
3053
|
if (nextItemIndex >= highlightableItems.length) {
|
|
@@ -3067,7 +3058,7 @@ class ItemStorage {
|
|
|
3067
3058
|
}
|
|
3068
3059
|
const itemToHighlight = highlightableItems[nextItemIndex];
|
|
3069
3060
|
if (hasShift && this._ardParentComp.multiselectable()) {
|
|
3070
|
-
if (itemToHighlight.highlighted
|
|
3061
|
+
if (itemToHighlight.highlighted) {
|
|
3071
3062
|
this.unhighlightItem(currentItem);
|
|
3072
3063
|
}
|
|
3073
3064
|
return this.highlightItem(itemToHighlight);
|
|
@@ -3082,24 +3073,18 @@ class ItemStorage {
|
|
|
3082
3073
|
filterTerm = filterTerm.toLocaleLowerCase();
|
|
3083
3074
|
}
|
|
3084
3075
|
const searchFn = this._ardParentComp.searchFn();
|
|
3085
|
-
|
|
3086
|
-
this._filteredItems.set(newFilteredItems);
|
|
3087
|
-
this._populateGroups();
|
|
3076
|
+
this._updateItems(item => ({ ...item, filtered: searchFn(filterTerm, item) }));
|
|
3088
3077
|
if (!this.isNoItemsFound)
|
|
3089
3078
|
this.highlightFirstItem();
|
|
3090
3079
|
else
|
|
3091
3080
|
this.clearAllHighlights();
|
|
3092
|
-
return this._itemsToValue(
|
|
3081
|
+
return this._itemsToValue(this.filteredItems());
|
|
3093
3082
|
}
|
|
3094
3083
|
resetFiltered() {
|
|
3095
|
-
if (this.
|
|
3096
|
-
return this.
|
|
3097
|
-
|
|
3098
|
-
|
|
3099
|
-
newFilteredItems = newFilteredItems.filter(item => !item.selected());
|
|
3100
|
-
}
|
|
3101
|
-
this._populateGroups();
|
|
3102
|
-
return newFilteredItems;
|
|
3084
|
+
if (this.filteredItems().length === this.items().length)
|
|
3085
|
+
return this.items();
|
|
3086
|
+
this._updateItems(item => ({ ...item, filtered: true }));
|
|
3087
|
+
return this.items();
|
|
3103
3088
|
}
|
|
3104
3089
|
}
|
|
3105
3090
|
|
|
@@ -3116,7 +3101,7 @@ const searchFunctions = {
|
|
|
3116
3101
|
* @returns `true` if the item matches the search term, otherwise `false`.
|
|
3117
3102
|
*/
|
|
3118
3103
|
byLabel: (searchTerm, item) => {
|
|
3119
|
-
return searchInString(searchTerm, item.label
|
|
3104
|
+
return searchInString(searchTerm, item.label);
|
|
3120
3105
|
},
|
|
3121
3106
|
/**
|
|
3122
3107
|
* Determines if the item should appear in the search results, based on the value only.
|
|
@@ -3125,7 +3110,7 @@ const searchFunctions = {
|
|
|
3125
3110
|
* @returns `true` if the item matches the search term, otherwise `false`.
|
|
3126
3111
|
*/
|
|
3127
3112
|
byValue: (searchTerm, item) => {
|
|
3128
|
-
return searchInString(searchTerm, item.value
|
|
3113
|
+
return searchInString(searchTerm, item.value);
|
|
3129
3114
|
},
|
|
3130
3115
|
/**
|
|
3131
3116
|
* Determines if the item should appear in the search results, based on the group only.
|
|
@@ -3143,7 +3128,7 @@ const searchFunctions = {
|
|
|
3143
3128
|
* @returns `true` if the item matches the search term, otherwise `false`.
|
|
3144
3129
|
*/
|
|
3145
3130
|
byLabelAndGroup: (searchTerm, item) => {
|
|
3146
|
-
return (searchFunctions.byLabel(searchTerm, item) || (item.label
|
|
3131
|
+
return (searchFunctions.byLabel(searchTerm, item) || (item.label !== item.value && searchFunctions.byValue(searchTerm, item)));
|
|
3147
3132
|
},
|
|
3148
3133
|
/**
|
|
3149
3134
|
* Determines if the item should appear in the search results, based on the label and value.
|
|
@@ -3162,7 +3147,7 @@ const searchFunctions = {
|
|
|
3162
3147
|
*/
|
|
3163
3148
|
byLabelAndGroupAndValue: (searchTerm, item) => {
|
|
3164
3149
|
return (searchFunctions.byLabel(searchTerm, item) ||
|
|
3165
|
-
(item.label
|
|
3150
|
+
(item.label !== item.value && searchFunctions.byValue(searchTerm, item)) ||
|
|
3166
3151
|
searchFunctions.byGroup(searchTerm, item));
|
|
3167
3152
|
},
|
|
3168
3153
|
};
|
|
@@ -3184,6 +3169,7 @@ const _selectDefaults = {
|
|
|
3184
3169
|
searchFn: searchFunctions.byLabel,
|
|
3185
3170
|
clearButtonTitle: 'Clear',
|
|
3186
3171
|
noItemsFoundText: 'No items found.',
|
|
3172
|
+
addCustomOptionText: 'Add option',
|
|
3187
3173
|
loadingPlaceholderText: 'Loading...',
|
|
3188
3174
|
placeholder: 'Select item',
|
|
3189
3175
|
searchPlaceholder: 'Search...',
|
|
@@ -3207,6 +3193,12 @@ const _selectDefaults = {
|
|
|
3207
3193
|
appearance: FormElementAppearance.Outlined,
|
|
3208
3194
|
variant: FormElementVariant.Rounded,
|
|
3209
3195
|
compact: false,
|
|
3196
|
+
dropdownPanelWidth: undefined,
|
|
3197
|
+
dropdownPanelHeight: undefined,
|
|
3198
|
+
dropdownPanelMinWidth: 'max-content',
|
|
3199
|
+
dropdownPanelMinHeight: undefined,
|
|
3200
|
+
dropdownPanelMaxWidth: undefined,
|
|
3201
|
+
dropdownPanelMaxHeight: undefined,
|
|
3210
3202
|
dropdownAppearance: undefined,
|
|
3211
3203
|
dropdownVariant: undefined,
|
|
3212
3204
|
multiselectable: false,
|
|
@@ -3299,6 +3291,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
3299
3291
|
type: Directive,
|
|
3300
3292
|
args: [{ standalone: false, selector: 'ard-select > ng-template[ard-placeholder-tmp]' }]
|
|
3301
3293
|
}], ctorParameters: () => [{ type: i0.TemplateRef }] });
|
|
3294
|
+
class ArdSelectDropdownArrowTemplateDirective {
|
|
3295
|
+
constructor(template) {
|
|
3296
|
+
this.template = template;
|
|
3297
|
+
}
|
|
3298
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdSelectDropdownArrowTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
3299
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: ArdSelectDropdownArrowTemplateDirective, isStandalone: false, selector: "ard-select > ng-template[ard-dropdown-arrow-tmp]", ngImport: i0 }); }
|
|
3300
|
+
}
|
|
3301
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdSelectDropdownArrowTemplateDirective, decorators: [{
|
|
3302
|
+
type: Directive,
|
|
3303
|
+
args: [{ standalone: false, selector: 'ard-select > ng-template[ard-dropdown-arrow-tmp]' }]
|
|
3304
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef }] });
|
|
3302
3305
|
class ArdLoadingSpinnerTemplateDirective {
|
|
3303
3306
|
constructor(template) {
|
|
3304
3307
|
this.template = template;
|
|
@@ -3391,6 +3394,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
3391
3394
|
args: [{ standalone: false, selector: 'ard-select > ng-template[ard-item-display-limit-tmp]' }]
|
|
3392
3395
|
}], ctorParameters: () => [{ type: i0.TemplateRef }] });
|
|
3393
3396
|
|
|
3397
|
+
const NUMBER_REGEX = /^\d+$/;
|
|
3398
|
+
function transformDropdownPanelSize(v) {
|
|
3399
|
+
if (typeof v === 'string' && NUMBER_REGEX.test(v)) {
|
|
3400
|
+
return Number(v);
|
|
3401
|
+
}
|
|
3402
|
+
return v;
|
|
3403
|
+
}
|
|
3404
|
+
|
|
3394
3405
|
/**
|
|
3395
3406
|
* The color of the component.
|
|
3396
3407
|
*
|
|
@@ -3537,6 +3548,7 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
|
|
|
3537
3548
|
this.dropdownPosition = input(this._DEFAULTS.dropdownPosition);
|
|
3538
3549
|
//! template-related settings
|
|
3539
3550
|
this.noItemsFoundText = input(this._DEFAULTS.noItemsFoundText);
|
|
3551
|
+
this.addCustomOptionText = input(this._DEFAULTS.addCustomOptionText);
|
|
3540
3552
|
this.loadingPlaceholderText = input(this._DEFAULTS.loadingPlaceholderText);
|
|
3541
3553
|
//! search-related options
|
|
3542
3554
|
this.searchInputId = input(undefined);
|
|
@@ -3547,16 +3559,19 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
|
|
|
3547
3559
|
this.itemsAlreadyGrouped = input(this._DEFAULTS.itemsAlreadyGrouped, {
|
|
3548
3560
|
transform: v => coerceBooleanProperty(v),
|
|
3549
3561
|
});
|
|
3550
|
-
this.invertDisabled = input(this._DEFAULTS.invertDisabled, {
|
|
3551
|
-
|
|
3562
|
+
this.invertDisabled = input(this._DEFAULTS.invertDisabled, {
|
|
3563
|
+
transform: v => coerceBooleanProperty(v),
|
|
3564
|
+
});
|
|
3565
|
+
this.noGroupActions = input(this._DEFAULTS.noGroupActions, {
|
|
3566
|
+
transform: v => coerceBooleanProperty(v),
|
|
3567
|
+
});
|
|
3552
3568
|
this.autoHighlightFirst = input(this._DEFAULTS.autoHighlightFirst, {
|
|
3553
3569
|
transform: v => coerceBooleanProperty(v),
|
|
3554
3570
|
});
|
|
3555
3571
|
this.autoFocus = input(this._DEFAULTS.autoFocus, { transform: v => coerceBooleanProperty(v) });
|
|
3556
3572
|
this.keepOpen = input(this._DEFAULTS.keepOpen, { transform: v => coerceBooleanProperty(v) });
|
|
3557
3573
|
this.hideSelected = input(this._DEFAULTS.hideSelected, { transform: v => coerceBooleanProperty(v) });
|
|
3558
|
-
this.noBackspaceClear = input(this._DEFAULTS.noBackspaceClear, {
|
|
3559
|
-
this.sortMultipleValues = input(this._DEFAULTS.sortMultipleValues, {
|
|
3574
|
+
this.noBackspaceClear = input(this._DEFAULTS.noBackspaceClear, {
|
|
3560
3575
|
transform: v => coerceBooleanProperty(v),
|
|
3561
3576
|
});
|
|
3562
3577
|
this.searchCaseSensitive = input(this._DEFAULTS.searchCaseSensitive, {
|
|
@@ -3589,7 +3604,7 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
|
|
|
3589
3604
|
this.touched() ? 'ard-touched' : '',
|
|
3590
3605
|
this.isOpen() ? 'ard-dropdown-open' : '',
|
|
3591
3606
|
this._searchBarFocused() ? 'ard-select-focused' : '',
|
|
3592
|
-
this.
|
|
3607
|
+
this.disabled() || this.readonly() ? 'ard-touch-disabled' : 'ard-touch-enabled',
|
|
3593
3608
|
].join(' '));
|
|
3594
3609
|
this.dropdownAppearance = input(this._DEFAULTS.dropdownAppearance);
|
|
3595
3610
|
this.dropdownAppearanceOrDefault = computed(() => {
|
|
@@ -3609,7 +3624,9 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
|
|
|
3609
3624
|
return variant;
|
|
3610
3625
|
});
|
|
3611
3626
|
//! attribute and/or class setters/getters
|
|
3612
|
-
this.multiselectable = input(this._DEFAULTS.multiselectable, {
|
|
3627
|
+
this.multiselectable = input(this._DEFAULTS.multiselectable, {
|
|
3628
|
+
transform: v => coerceBooleanProperty(v),
|
|
3629
|
+
});
|
|
3613
3630
|
this.clearable = input(this._DEFAULTS.clearable, { transform: v => coerceBooleanProperty(v) });
|
|
3614
3631
|
this.searchable = input(this._DEFAULTS.searchable, { transform: v => coerceBooleanProperty(v) });
|
|
3615
3632
|
this.filtered = computed(() => this.searchable() && this.searchTerm() !== '');
|
|
@@ -3629,7 +3646,6 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
|
|
|
3629
3646
|
this.shouldShowAddCustom = computed(() => this.addCustom() !== false && this.searchTerm().length > 0 && this.itemStorage.isNoItemsFound());
|
|
3630
3647
|
this.valueChange = output();
|
|
3631
3648
|
//! output events
|
|
3632
|
-
this.changeEvent = output({ alias: 'change' });
|
|
3633
3649
|
this.addEvent = output({ alias: 'add' });
|
|
3634
3650
|
this.failedToAddEvent = output({ alias: 'failedToAdd' });
|
|
3635
3651
|
this.removeEvent = output({ alias: 'remove' });
|
|
@@ -3648,6 +3664,7 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
|
|
|
3648
3664
|
this.optgroupTemplate = contentChild(ArdOptgroupTemplateDirective);
|
|
3649
3665
|
this.valueTemplate = contentChild(ArdValueTemplateDirective);
|
|
3650
3666
|
this.placeholderTemplate = contentChild(ArdSelectPlaceholderTemplateDirective);
|
|
3667
|
+
this.dropdownArrowTemplate = contentChild(ArdSelectDropdownArrowTemplateDirective);
|
|
3651
3668
|
this.loadingSpinnerTemplate = contentChild(ArdLoadingSpinnerTemplateDirective);
|
|
3652
3669
|
this.loadingPlaceholderTemplate = contentChild(ArdLoadingPlaceholderTemplateDirective);
|
|
3653
3670
|
this.dropdownHeaderTemplate = contentChild(ArdDropdownHeaderTemplateDirective);
|
|
@@ -3658,6 +3675,34 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
|
|
|
3658
3675
|
this.itemDisplayLimitTemplate = contentChild(ArdItemDisplayLimitTemplateDirective);
|
|
3659
3676
|
this.prefixTemplate = contentChild(ArdSelectPrefixTemplateDirective);
|
|
3660
3677
|
this.suffixTemplate = contentChild(ArdSelectSuffixTemplateDirective);
|
|
3678
|
+
//! context providers
|
|
3679
|
+
this.optionContextGenerator = computed(() => item => ({
|
|
3680
|
+
$implicit: item,
|
|
3681
|
+
item,
|
|
3682
|
+
index: item.index,
|
|
3683
|
+
value: item.value,
|
|
3684
|
+
label: item.label,
|
|
3685
|
+
selected: item.selected,
|
|
3686
|
+
highlighted: item.highlighted,
|
|
3687
|
+
itemData: item.itemData,
|
|
3688
|
+
group: item.group,
|
|
3689
|
+
disabled: item.disabled,
|
|
3690
|
+
highlighted_recently: item.highlighted_recently,
|
|
3691
|
+
}));
|
|
3692
|
+
this.valueContextGenerator = computed(() => item => ({
|
|
3693
|
+
...this.optionContextGenerator()(item),
|
|
3694
|
+
unselect: () => {
|
|
3695
|
+
this.unselectItem(item);
|
|
3696
|
+
},
|
|
3697
|
+
}));
|
|
3698
|
+
this.groupContextGenerator = computed(() => group => ({
|
|
3699
|
+
$implicit: group,
|
|
3700
|
+
group,
|
|
3701
|
+
label: group.label,
|
|
3702
|
+
disabled: group.disabled,
|
|
3703
|
+
selectedChildrenCount: group.children.filter(v => v.selected).length,
|
|
3704
|
+
totalChildrenCount: group.children.length,
|
|
3705
|
+
}));
|
|
3661
3706
|
this.getStatsContext = computed(() => ({
|
|
3662
3707
|
totalItems: this.totalItems(),
|
|
3663
3708
|
foundItems: this.foundItems(),
|
|
@@ -3698,11 +3743,27 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
|
|
|
3698
3743
|
this.overlay = inject(Overlay);
|
|
3699
3744
|
this.viewContainerRef = inject(ViewContainerRef);
|
|
3700
3745
|
this.scrollStrategyOpts = inject(ScrollStrategyOptions);
|
|
3746
|
+
//! dropdown overlay
|
|
3747
|
+
this.dropdownHost = viewChild.required('dropdownHost');
|
|
3748
|
+
this.dropdownTemplate = viewChild.required('dropdownTemplate');
|
|
3749
|
+
this.dropdownPanelWidth = input(this._DEFAULTS.dropdownPanelWidth, {
|
|
3750
|
+
transform: transformDropdownPanelSize,
|
|
3751
|
+
});
|
|
3752
|
+
this.dropdownPanelHeight = input(this._DEFAULTS.dropdownPanelHeight, {
|
|
3753
|
+
transform: transformDropdownPanelSize,
|
|
3754
|
+
});
|
|
3755
|
+
this.dropdownPanelMinWidth = input(this._DEFAULTS.dropdownPanelMinWidth, { transform: transformDropdownPanelSize });
|
|
3756
|
+
this.dropdownPanelMinHeight = input(this._DEFAULTS.dropdownPanelMinHeight, { transform: transformDropdownPanelSize });
|
|
3757
|
+
this.dropdownPanelMaxWidth = input(this._DEFAULTS.dropdownPanelMaxWidth, { transform: transformDropdownPanelSize });
|
|
3758
|
+
this.dropdownPanelMaxHeight = input(this._DEFAULTS.dropdownPanelMaxHeight, { transform: transformDropdownPanelSize });
|
|
3701
3759
|
//! getters
|
|
3702
3760
|
this.firstHighlightedItem = computed(() => this.itemStorage.highlightedItems()?.first());
|
|
3703
3761
|
this.shouldDisplayPlaceholder = computed(() => !this.itemStorage.isAnyItemSelected() && !this.searchTerm());
|
|
3704
3762
|
this.shouldDisplayValue = computed(() => this.itemStorage.isAnyItemSelected() && (!this.searchTerm() || this.multiselectable()));
|
|
3705
|
-
this.shouldShowClearButton = computed(() => this.clearable() &&
|
|
3763
|
+
this.shouldShowClearButton = computed(() => this.clearable() &&
|
|
3764
|
+
!this.disabled() &&
|
|
3765
|
+
!this.readonly() &&
|
|
3766
|
+
(this.itemStorage.isAnyItemSelected() || this.searchTerm() !== ''));
|
|
3706
3767
|
this.itemsToDisplay = computed(() => this.itemStorage.groups().values());
|
|
3707
3768
|
this.shouldShowNoItemsFound = computed(() => this.itemStorage.isNoItemsFound() && !this.isLoading() && !this.shouldShowAddCustom());
|
|
3708
3769
|
this.totalItems = computed(() => this.itemStorage.items().length);
|
|
@@ -3744,18 +3805,16 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
|
|
|
3744
3805
|
.pipe(takeUntil(changedOrDestroyed))
|
|
3745
3806
|
.subscribe(option => {
|
|
3746
3807
|
setTimeout(() => {
|
|
3747
|
-
|
|
3748
|
-
|
|
3749
|
-
|
|
3750
|
-
|
|
3751
|
-
|
|
3752
|
-
|
|
3753
|
-
label: option.label || item.label(),
|
|
3808
|
+
this.itemStorage.updateItemFromOptionComponent(option.oldValue ?? option.value, {
|
|
3809
|
+
disabled: option.disabled,
|
|
3810
|
+
label: option.label || undefined,
|
|
3811
|
+
value: option.value,
|
|
3812
|
+
itemData: {
|
|
3813
|
+
label: option.label,
|
|
3754
3814
|
value: option.value,
|
|
3755
3815
|
disabled: option.disabled,
|
|
3756
|
-
}
|
|
3757
|
-
}
|
|
3758
|
-
this.detectChanges();
|
|
3816
|
+
},
|
|
3817
|
+
});
|
|
3759
3818
|
}, 0);
|
|
3760
3819
|
});
|
|
3761
3820
|
};
|
|
@@ -3800,7 +3859,6 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
|
|
|
3800
3859
|
_emitChange() {
|
|
3801
3860
|
const value = this.multiselectable() ? this.itemStorage.value() : this.itemStorage.value()[0];
|
|
3802
3861
|
this._onChangeRegistered?.(value);
|
|
3803
|
-
this.changeEvent.emit(value);
|
|
3804
3862
|
this.valueChange.emit(value);
|
|
3805
3863
|
}
|
|
3806
3864
|
_onTouched() {
|
|
@@ -3820,36 +3878,11 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
|
|
|
3820
3878
|
get value() {
|
|
3821
3879
|
return this.itemStorage.value;
|
|
3822
3880
|
}
|
|
3823
|
-
//! context providers
|
|
3824
|
-
getValueContext(item) {
|
|
3825
|
-
return {
|
|
3826
|
-
$implicit: item,
|
|
3827
|
-
item,
|
|
3828
|
-
itemData: item.itemData(),
|
|
3829
|
-
unselect: () => {
|
|
3830
|
-
this.unselectItem(item);
|
|
3831
|
-
},
|
|
3832
|
-
};
|
|
3833
|
-
}
|
|
3834
|
-
getGroupContext(group) {
|
|
3835
|
-
return {
|
|
3836
|
-
$implicit: group,
|
|
3837
|
-
group,
|
|
3838
|
-
selectedChildren: group.children().filter(v => v.selected()).length,
|
|
3839
|
-
totalChildren: group.children().length,
|
|
3840
|
-
};
|
|
3841
|
-
}
|
|
3842
|
-
getOptionContext(item) {
|
|
3843
|
-
return {
|
|
3844
|
-
$implicit: item,
|
|
3845
|
-
item,
|
|
3846
|
-
itemData: item.itemData(),
|
|
3847
|
-
};
|
|
3848
|
-
}
|
|
3849
3881
|
_createOverlay() {
|
|
3850
3882
|
const strategy = this.overlay
|
|
3851
3883
|
.position()
|
|
3852
|
-
.flexibleConnectedTo(this.dropdownHost)
|
|
3884
|
+
.flexibleConnectedTo(this.dropdownHost())
|
|
3885
|
+
.withFlexibleDimensions(false)
|
|
3853
3886
|
.withPositions([
|
|
3854
3887
|
{
|
|
3855
3888
|
originX: 'start',
|
|
@@ -3863,14 +3896,32 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
|
|
|
3863
3896
|
overlayX: 'start',
|
|
3864
3897
|
overlayY: 'bottom',
|
|
3865
3898
|
},
|
|
3899
|
+
{
|
|
3900
|
+
originX: 'end',
|
|
3901
|
+
originY: 'bottom',
|
|
3902
|
+
overlayX: 'end',
|
|
3903
|
+
overlayY: 'top',
|
|
3904
|
+
},
|
|
3905
|
+
{
|
|
3906
|
+
originX: 'end',
|
|
3907
|
+
originY: 'top',
|
|
3908
|
+
overlayX: 'end',
|
|
3909
|
+
overlayY: 'bottom',
|
|
3910
|
+
},
|
|
3866
3911
|
]);
|
|
3867
3912
|
const config = new OverlayConfig({
|
|
3868
3913
|
positionStrategy: strategy,
|
|
3869
3914
|
scrollStrategy: this.scrollStrategyOpts.block(),
|
|
3870
3915
|
hasBackdrop: false,
|
|
3916
|
+
width: this.dropdownPanelWidth() ?? undefined,
|
|
3917
|
+
height: this.dropdownPanelHeight() ?? undefined,
|
|
3918
|
+
minWidth: this.dropdownPanelMinWidth() ?? undefined,
|
|
3919
|
+
minHeight: this.dropdownPanelMinHeight() ?? undefined,
|
|
3920
|
+
maxWidth: this.dropdownPanelMaxWidth() ?? undefined,
|
|
3921
|
+
maxHeight: this.dropdownPanelMaxHeight() ?? undefined,
|
|
3871
3922
|
});
|
|
3872
3923
|
this.dropdownOverlay = this.overlay.create(config);
|
|
3873
|
-
const portal = new TemplatePortal(this.dropdownTemplate, this.viewContainerRef);
|
|
3924
|
+
const portal = new TemplatePortal(this.dropdownTemplate(), this.viewContainerRef);
|
|
3874
3925
|
this.dropdownOverlay.attach(portal);
|
|
3875
3926
|
this.setOverlaySize();
|
|
3876
3927
|
}
|
|
@@ -3883,7 +3934,7 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
|
|
|
3883
3934
|
setOverlaySize() {
|
|
3884
3935
|
if (!this.dropdownOverlay)
|
|
3885
3936
|
return;
|
|
3886
|
-
const rect = this.dropdownHost.nativeElement.getBoundingClientRect();
|
|
3937
|
+
const rect = this.dropdownHost().nativeElement.getBoundingClientRect();
|
|
3887
3938
|
this.dropdownOverlay.updateSize({ width: rect.width });
|
|
3888
3939
|
}
|
|
3889
3940
|
onWindowResize() {
|
|
@@ -3944,7 +3995,8 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
|
|
|
3944
3995
|
}
|
|
3945
3996
|
//! item selection handlers
|
|
3946
3997
|
toggleItem(item) {
|
|
3947
|
-
|
|
3998
|
+
// don't use itemStorage.toggleItem() - we need to emit different events for select/unselect
|
|
3999
|
+
if (item.selected) {
|
|
3948
4000
|
this.unselectItem(item);
|
|
3949
4001
|
return;
|
|
3950
4002
|
}
|
|
@@ -3983,14 +4035,14 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
|
|
|
3983
4035
|
}
|
|
3984
4036
|
}
|
|
3985
4037
|
_clearAllItems() {
|
|
3986
|
-
const cleared = this.itemStorage.clearAllSelected(
|
|
4038
|
+
const cleared = this.itemStorage.clearAllSelected();
|
|
3987
4039
|
this.focus();
|
|
3988
4040
|
this.clearEvent.emit();
|
|
3989
4041
|
this.removeEvent.emit(cleared);
|
|
3990
4042
|
this._emitChange();
|
|
3991
4043
|
}
|
|
3992
4044
|
_clearLastItem() {
|
|
3993
|
-
const clearedValue = this.itemStorage.clearLastSelected().value
|
|
4045
|
+
const clearedValue = this.itemStorage.clearLastSelected().value;
|
|
3994
4046
|
this.focus();
|
|
3995
4047
|
this.removeEvent.emit([clearedValue]);
|
|
3996
4048
|
this._emitChange();
|
|
@@ -4021,7 +4073,7 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
|
|
|
4021
4073
|
}
|
|
4022
4074
|
onItemClick(option, event) {
|
|
4023
4075
|
event.stopPropagation();
|
|
4024
|
-
if (this.clearable())
|
|
4076
|
+
if (this.clearable() || this.multiselectable())
|
|
4025
4077
|
this.toggleItem(option);
|
|
4026
4078
|
else
|
|
4027
4079
|
this.selectItem(option);
|
|
@@ -4030,11 +4082,11 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
|
|
|
4030
4082
|
onGroupClick(group) {
|
|
4031
4083
|
if (!this.multiselectable() || this.noGroupActions())
|
|
4032
4084
|
return;
|
|
4033
|
-
if (group.children
|
|
4034
|
-
this.unselectItem(...group.children
|
|
4085
|
+
if (group.children.every(o => o.selected)) {
|
|
4086
|
+
this.unselectItem(...group.children);
|
|
4035
4087
|
return;
|
|
4036
4088
|
}
|
|
4037
|
-
this.selectItem(...group.children
|
|
4089
|
+
this.selectItem(...group.children);
|
|
4038
4090
|
this._isClickedWithin.set(true);
|
|
4039
4091
|
}
|
|
4040
4092
|
handleClearButtonClick(event) {
|
|
@@ -4064,7 +4116,7 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
|
|
|
4064
4116
|
event.preventDefault();
|
|
4065
4117
|
}
|
|
4066
4118
|
this._isClickedWithin.set(true);
|
|
4067
|
-
if (!this._searchBarFocused()) {
|
|
4119
|
+
if (!this._searchBarFocused() && !this.readonly()) {
|
|
4068
4120
|
this.focus();
|
|
4069
4121
|
}
|
|
4070
4122
|
if (this.searchable()) {
|
|
@@ -4086,7 +4138,7 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
|
|
|
4086
4138
|
this.open();
|
|
4087
4139
|
}
|
|
4088
4140
|
open() {
|
|
4089
|
-
if (this.disabled() || this.isOpen())
|
|
4141
|
+
if (this.disabled() || this.readonly() || this.isOpen())
|
|
4090
4142
|
return;
|
|
4091
4143
|
this.isOpen.set(true);
|
|
4092
4144
|
if (this.autoHighlightFirst())
|
|
@@ -4175,9 +4227,10 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
|
|
|
4175
4227
|
async _onEnterPress(event) {
|
|
4176
4228
|
event.preventDefault();
|
|
4177
4229
|
let shouldClose = true;
|
|
4230
|
+
console.log('enter pressed', this.itemStorage.highlightedItems());
|
|
4178
4231
|
//select the currently highlighted option
|
|
4179
4232
|
if (this.isOpen() && this.firstHighlightedItem()) {
|
|
4180
|
-
if (this.clearable() && this.itemStorage.highlightedItems().every(item => item.selected)) {
|
|
4233
|
+
if ((this.clearable() || this.multiselectable()) && this.itemStorage.highlightedItems().every(item => item.selected)) {
|
|
4181
4234
|
this.unselectItem(...this.itemStorage.highlightedItems());
|
|
4182
4235
|
}
|
|
4183
4236
|
else {
|
|
@@ -4189,8 +4242,9 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
|
|
|
4189
4242
|
await this.addCustomOption(this.searchTerm());
|
|
4190
4243
|
}
|
|
4191
4244
|
//in case of no action, open the dropdown (or keep it open)
|
|
4192
|
-
else
|
|
4245
|
+
else {
|
|
4193
4246
|
shouldClose = false;
|
|
4247
|
+
}
|
|
4194
4248
|
if (!this.keepOpen() && shouldClose) {
|
|
4195
4249
|
this.itemStorage.clearAllHighlights();
|
|
4196
4250
|
this.close();
|
|
@@ -4265,7 +4319,7 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
|
|
|
4265
4319
|
this.itemStorage.highlightAllItems();
|
|
4266
4320
|
}
|
|
4267
4321
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumSelectComponent, deps: [{ token: ARD_SELECT_DEFAULTS }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4268
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: ArdiumSelectComponent, isStandalone: false, selector: "ard-select", inputs: { valueFrom: { classPropertyName: "valueFrom", publicName: "valueFrom", isSignal: true, isRequired: false, transformFunction: null }, labelFrom: { classPropertyName: "labelFrom", publicName: "labelFrom", isSignal: true, isRequired: false, transformFunction: null }, disabledFrom: { classPropertyName: "disabledFrom", publicName: "disabledFrom", isSignal: true, isRequired: false, transformFunction: null }, groupLabelFrom: { classPropertyName: "groupLabelFrom", publicName: "groupLabelFrom", isSignal: true, isRequired: false, transformFunction: null }, groupDisabledFrom: { classPropertyName: "groupDisabledFrom", publicName: "groupDisabledFrom", isSignal: true, isRequired: false, transformFunction: null }, childrenFrom: { classPropertyName: "childrenFrom", publicName: "childrenFrom", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, clearButtonTitle: { classPropertyName: "clearButtonTitle", publicName: "clearButtonTitle", isSignal: true, isRequired: false, transformFunction: null }, dropdownPosition: { classPropertyName: "dropdownPosition", publicName: "dropdownPosition", isSignal: true, isRequired: false, transformFunction: null }, noItemsFoundText: { classPropertyName: "noItemsFoundText", publicName: "noItemsFoundText", isSignal: true, isRequired: false, transformFunction: null },
|
|
4322
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: ArdiumSelectComponent, isStandalone: false, selector: "ard-select", inputs: { valueFrom: { classPropertyName: "valueFrom", publicName: "valueFrom", isSignal: true, isRequired: false, transformFunction: null }, labelFrom: { classPropertyName: "labelFrom", publicName: "labelFrom", isSignal: true, isRequired: false, transformFunction: null }, disabledFrom: { classPropertyName: "disabledFrom", publicName: "disabledFrom", isSignal: true, isRequired: false, transformFunction: null }, groupLabelFrom: { classPropertyName: "groupLabelFrom", publicName: "groupLabelFrom", isSignal: true, isRequired: false, transformFunction: null }, groupDisabledFrom: { classPropertyName: "groupDisabledFrom", publicName: "groupDisabledFrom", isSignal: true, isRequired: false, transformFunction: null }, childrenFrom: { classPropertyName: "childrenFrom", publicName: "childrenFrom", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, clearButtonTitle: { classPropertyName: "clearButtonTitle", publicName: "clearButtonTitle", isSignal: true, isRequired: false, transformFunction: null }, dropdownPosition: { classPropertyName: "dropdownPosition", publicName: "dropdownPosition", isSignal: true, isRequired: false, transformFunction: null }, noItemsFoundText: { classPropertyName: "noItemsFoundText", publicName: "noItemsFoundText", isSignal: true, isRequired: false, transformFunction: null }, addCustomOptionText: { classPropertyName: "addCustomOptionText", publicName: "addCustomOptionText", isSignal: true, isRequired: false, transformFunction: null }, loadingPlaceholderText: { classPropertyName: "loadingPlaceholderText", publicName: "loadingPlaceholderText", isSignal: true, isRequired: false, transformFunction: null }, searchInputId: { classPropertyName: "searchInputId", publicName: "searchInputId", isSignal: true, isRequired: false, transformFunction: null }, inputAttrs: { classPropertyName: "inputAttrs", publicName: "inputAttrs", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, itemsAlreadyGrouped: { classPropertyName: "itemsAlreadyGrouped", publicName: "itemsAlreadyGrouped", isSignal: true, isRequired: false, transformFunction: null }, invertDisabled: { classPropertyName: "invertDisabled", publicName: "invertDisabled", isSignal: true, isRequired: false, transformFunction: null }, noGroupActions: { classPropertyName: "noGroupActions", publicName: "noGroupActions", isSignal: true, isRequired: false, transformFunction: null }, autoHighlightFirst: { classPropertyName: "autoHighlightFirst", publicName: "autoHighlightFirst", isSignal: true, isRequired: false, transformFunction: null }, autoFocus: { classPropertyName: "autoFocus", publicName: "autoFocus", isSignal: true, isRequired: false, transformFunction: null }, keepOpen: { classPropertyName: "keepOpen", publicName: "keepOpen", isSignal: true, isRequired: false, transformFunction: null }, hideSelected: { classPropertyName: "hideSelected", publicName: "hideSelected", isSignal: true, isRequired: false, transformFunction: null }, noBackspaceClear: { classPropertyName: "noBackspaceClear", publicName: "noBackspaceClear", isSignal: true, isRequired: false, transformFunction: null }, searchCaseSensitive: { classPropertyName: "searchCaseSensitive", publicName: "searchCaseSensitive", isSignal: true, isRequired: false, transformFunction: null }, keepSearchAfterSelect: { classPropertyName: "keepSearchAfterSelect", publicName: "keepSearchAfterSelect", isSignal: true, isRequired: false, transformFunction: null }, maxSelectedItems: { classPropertyName: "maxSelectedItems", publicName: "maxSelectedItems", isSignal: true, isRequired: false, transformFunction: null }, itemDisplayLimit: { classPropertyName: "itemDisplayLimit", publicName: "itemDisplayLimit", isSignal: true, isRequired: false, transformFunction: null }, searchFn: { classPropertyName: "searchFn", publicName: "searchFn", isSignal: true, isRequired: false, transformFunction: null }, compareWith: { classPropertyName: "compareWith", publicName: "compareWith", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, dropdownAppearance: { classPropertyName: "dropdownAppearance", publicName: "dropdownAppearance", isSignal: true, isRequired: false, transformFunction: null }, dropdownVariant: { classPropertyName: "dropdownVariant", publicName: "dropdownVariant", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: false, isRequired: false, transformFunction: null }, multiselectable: { classPropertyName: "multiselectable", publicName: "multiselectable", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, addCustom: { classPropertyName: "addCustom", publicName: "addCustom", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, dropdownPanelWidth: { classPropertyName: "dropdownPanelWidth", publicName: "dropdownPanelWidth", isSignal: true, isRequired: false, transformFunction: null }, dropdownPanelHeight: { classPropertyName: "dropdownPanelHeight", publicName: "dropdownPanelHeight", isSignal: true, isRequired: false, transformFunction: null }, dropdownPanelMinWidth: { classPropertyName: "dropdownPanelMinWidth", publicName: "dropdownPanelMinWidth", isSignal: true, isRequired: false, transformFunction: null }, dropdownPanelMinHeight: { classPropertyName: "dropdownPanelMinHeight", publicName: "dropdownPanelMinHeight", isSignal: true, isRequired: false, transformFunction: null }, dropdownPanelMaxWidth: { classPropertyName: "dropdownPanelMaxWidth", publicName: "dropdownPanelMaxWidth", isSignal: true, isRequired: false, transformFunction: null }, dropdownPanelMaxHeight: { classPropertyName: "dropdownPanelMaxHeight", publicName: "dropdownPanelMaxHeight", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", addEvent: "add", failedToAddEvent: "failedToAdd", removeEvent: "remove", clearEvent: "clear", openEvent: "open", closeEvent: "close", scrollEvent: "scroll", scrollToEndEvent: "scrollToEnd", searchEvent: "search", isOpen: "isOpenChange" }, host: { listeners: { "window:resize": "onWindowResize()", "mouseup": "onMouseup()", "keydown": "onKeyPress($event)" }, properties: { "class.ard-group-items": "this._groupItemsHostAttribute" } }, providers: [
|
|
4269
4323
|
{
|
|
4270
4324
|
provide: NG_VALUE_ACCESSOR,
|
|
4271
4325
|
useExisting: forwardRef(() => ArdiumSelectComponent),
|
|
@@ -4275,7 +4329,7 @@ class ArdiumSelectComponent extends _FormFieldComponentBase {
|
|
|
4275
4329
|
provide: ARD_FORM_FIELD_CONTROL,
|
|
4276
4330
|
useExisting: ArdiumSelectComponent,
|
|
4277
4331
|
},
|
|
4278
|
-
], queries: [{ propertyName: "optionTemplate", first: true, predicate: ArdOptionTemplateDirective, descendants: true, isSignal: true }, { propertyName: "optgroupTemplate", first: true, predicate: ArdOptgroupTemplateDirective, descendants: true, isSignal: true }, { propertyName: "valueTemplate", first: true, predicate: ArdValueTemplateDirective, descendants: true, isSignal: true }, { propertyName: "placeholderTemplate", first: true, predicate: ArdSelectPlaceholderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "loadingSpinnerTemplate", first: true, predicate: ArdLoadingSpinnerTemplateDirective, descendants: true, isSignal: true }, { propertyName: "loadingPlaceholderTemplate", first: true, predicate: ArdLoadingPlaceholderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "dropdownHeaderTemplate", first: true, predicate: ArdDropdownHeaderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "dropdownFooterTemplate", first: true, predicate: ArdDropdownFooterTemplateDirective, descendants: true, isSignal: true }, { propertyName: "noItemsFoundTemplate", first: true, predicate: ArdNoItemsFoundTemplateDirective, descendants: true, isSignal: true }, { propertyName: "addCustomTemplate", first: true, predicate: ArdAddCustomTemplateDirective, descendants: true, isSignal: true }, { propertyName: "itemLimitReachedTemplate", first: true, predicate: ArdItemLimitReachedTemplateDirective, descendants: true, isSignal: true }, { propertyName: "itemDisplayLimitTemplate", first: true, predicate: ArdItemDisplayLimitTemplateDirective, descendants: true, isSignal: true }, { propertyName: "prefixTemplate", first: true, predicate: ArdSelectPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdSelectSuffixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "optionComponents", predicate: ArdiumOptionComponent }], viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true, isSignal: true }, { propertyName: "dropdownPanel", first: true, predicate: ArdiumDropdownPanelComponent, descendants: true, isSignal: true }, { propertyName: "dropdownHost", first: true, predicate: ["dropdownHost"], descendants: true, read: ElementRef }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true, read: TemplateRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-select\"\r\n #dropdownHost\r\n (click)=\"handleAnywhereClick($event)\"\r\n [class.ard-has-value]=\"itemStorage.isAnyItemSelected()\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-select-value-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\" />\r\n } @if (shouldDisplayValue()) { @for (item of itemStorage.selectedItems(); track item.index) {\r\n <div\r\n class=\"ard-select-value\"\r\n [class.ard-value-disabled]=\"item.disabled()\"\r\n [attr.hidden]=\"!isValueWithinDisplayLimit($index)\"\r\n >\r\n @if (isValueWithinDisplayLimit($index)) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate()?.template || (multiselectable() ? defaultMultiValueTemplate : defaultValueTemplate)\"\r\n [ngTemplateOutletContext]=\"getValueContext(item)\"\r\n />\r\n }\r\n </div>\r\n }\r\n\r\n <ng-template\r\n #defaultValueTemplate\r\n let-item\r\n >\r\n <div [innerHTML]=\"isItemsInputUsed ? (item.label() | escapeHTML) : item.label()\"></div>\r\n </ng-template>\r\n <ng-template\r\n #defaultMultiValueTemplate\r\n let-item\r\n let-unselect=\"unselect\"\r\n >\r\n <ard-deletable-chip\r\n (delete)=\"unselect(item)\"\r\n [variant]=\"variant()\"\r\n compact\r\n appearance=\"outlined-strong\"\r\n >\r\n <div [innerHTML]=\"isItemsInputUsed ? (item.label() | escapeHTML) : item.label()\"></div>\r\n </ard-deletable-chip>\r\n </ng-template>\r\n } @if (itemStorage.isAnyItemSelected() && shouldShowItemDisplayLimit()) {\r\n <div class=\"ard-overflow-indicator\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"itemDisplayLimitTemplate()?.template || defaultItemDisplayLimitTemplate\"\r\n [ngTemplateOutletContext]=\"getItemDisplayLimitContext()\"\r\n />\r\n\r\n <ng-template\r\n #defaultItemDisplayLimitTemplate\r\n let-count=\"overflowCount\"\r\n >\r\n <div>{{ count }} more...</div>\r\n </ng-template>\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"ard-search-input\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-owns]=\"isOpen() ? htmlId() : null\"\r\n >\r\n <input\r\n #searchInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"searchInputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"isInputElementReadonly()\"\r\n [disabled]=\"disabled()\"\r\n [value]=\"searchTerm()\"\r\n aria-autocomplete=\"list\"\r\n [attr.aria-controls]=\"isOpen() ? htmlId() : null\"\r\n (input)=\"filter(searchInput.value)\"\r\n (change)=\"$event.stopPropagation()\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onSearchInputFocus()\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onSearchInputBlur()\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div class=\"ard-select-controls\">\r\n @if (isLoading()) {\r\n <ng-template #defaultLoadingSpinnerTemplate>\r\n <div class=\"ard-spinner\"></div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"loadingSpinnerTemplate()?.template || defaultLoadingSpinnerTemplate\" />\r\n } @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"handleClearButtonClick($event)\"\r\n />\r\n }\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ard-dropdown-arrow-wrapper\"\r\n (click)=\"handleDropdownArrowClick($event)\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n >\r\n <span class=\"ard-dropdown-arrow\"></span>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n </div>\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #dropdownTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-select-dropdown-panel\"\r\n role=\"listbox\"\r\n aria-label=\"Options list\"\r\n [headerTemplate]=\"dropdownHeaderTemplate()?.template ?? null\"\r\n [footerTemplate]=\"dropdownFooterTemplate()?.template ?? null\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"true\"\r\n [filterValue]=\"searchTerm()\"\r\n [panelId]=\"htmlId()\"\r\n [compact]=\"compact()\"\r\n (ardClickOutside)=\"handleOutsideClick($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n (scroll)=\"scrollEvent.emit($event)\"\r\n (scrollToEnd)=\"scrollToEndEvent.emit($event)\"\r\n >\r\n @if (!shouldShowNoItemsFound()) { @for (group of itemStorage.groups(); track $index) {\r\n <div\r\n class=\"ard-optgroup\"\r\n role=\"group\"\r\n [class.ard-group-disabled]=\"group.disabled()\"\r\n [class.ard-group-selected]=\"group.selected()\"\r\n [class.ard-group-highlighted]=\"group.highlighted()\"\r\n (mouseover)=\"onGroupMouseover(group)\"\r\n (click)=\"onGroupClick(group)\"\r\n >\r\n @if (group.label() !== '' && group.label() !== undefined) {\r\n <ng-template\r\n #defaultOptgroupTemplate\r\n let-group\r\n >\r\n <span\r\n class=\"ard-optgroup-label\"\r\n [innerHTML]=\"isItemsInputUsed ? (group.label() | escapeHTML) : group.label()\"\r\n ></span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optgroupTemplate()?.template || defaultOptgroupTemplate\"\r\n [ngTemplateOutletContext]=\"getGroupContext(group)\"\r\n />\r\n }\r\n\r\n <div class=\"ard-optgroup-children\">\r\n @for (option of group.children(); track option.index) {\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n [class.ard-option-disabled]=\"option.disabled()\"\r\n [class.ard-option-selected]=\"option.selected()\"\r\n [class.ard-option-highlighted]=\"option.highlighted()\"\r\n [class.ard-option-highlighted-recent]=\"option.highlighted_recently()\"\r\n [attr.aria-selected]=\"option.selected()\"\r\n [attr.id]=\"htmlId() + '-' + option.index\"\r\n (click)=\"onItemClick(option, $event)\"\r\n (mouseover)=\"onItemMouseOver($event)\"\r\n (mouseenter)=\"onItemMouseEnter(option, $event)\"\r\n (mouseleave)=\"onItemMouseLeave(option, $event)\"\r\n >\r\n <div class=\"ard-option-label\">\r\n <ng-template\r\n #defaultOptionTemplate\r\n let-option\r\n >\r\n <span [innerHTML]=\"isItemsInputUsed ? (option.label() | escapeHTML) : option.label()\"></span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"getOptionContext(option)\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } } @if (shouldShowNoItemsFound()) {\r\n <ng-template #defaultNoItemsFoundTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ noItemsFoundText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"noItemsFoundTemplate()?.template || defaultNoItemsFoundTemplate\"\r\n [ngTemplateOutletContext]=\"getSearchContext()\"\r\n />\r\n } @if (shouldShowAddCustom()) {\r\n <ng-template\r\n #defaultAddCustomTemplate\r\n let-searchTerm\r\n >\r\n <div\r\n class=\"ard-option ard-option-highlighted ard-add-custom\"\r\n (click)=\"addCustomOption(searchTerm)\"\r\n >\r\n <span class=\"ard-add-custom-label\">Add option</span>\r\n <span class=\"ard-add-custom-value\">\"{{ searchTerm }}\"</span>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"addCustomTemplate()?.template || defaultAddCustomTemplate\"\r\n [ngTemplateOutletContext]=\"getCustomOptionContext()\"\r\n />\r\n } @if (isLoading()) {\r\n <ng-template #defaultLoadingPlaceholderTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ loadingPlaceholderText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"loadingPlaceholderTemplate()?.template || defaultLoadingPlaceholderTemplate\"\r\n [ngTemplateOutletContext]=\"getSearchContext()\"\r\n />\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n", styles: [".ard-select .ard-select-container{display:flex;cursor:pointer}.ard-select .ard-placeholder,.ard-select .ard-value,.ard-select .ard-dropdown-arrow-wrapper,.ard-select .ard-clear-btn-wrapper{-webkit-user-select:none;user-select:none}.ard-select .ard-clear-btn,.ard-select .ard-dropdown-arrow{border:none;background:transparent;padding:0;box-sizing:content-box}.ard-select .ard-option-disabled{pointer-events:none}.ard-select .ard-select-value{display:block}.ard-select .ard-select-value[hidden=true]{display:none}.ard-select .ard-searchable .ard-select-value-container{cursor:text}.ard-select .ard-dropdown-arrow-wrapper{position:relative}.ard-select .ard-dropdown-arrow-wrapper .ard-hitbox{position:absolute;left:-4px;right:-4px;aspect-ratio:1}.ard-select-dropdown-panel .ard-optgroup,.ard-select-dropdown-panel .ard-option{-webkit-user-select:none;user-select:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: ["hasError", "isSuccess", "isFocused", "appearance", "variant", "compact", "prefixTemplate", "suffixTemplate"] }, { kind: "component", type: ArdiumDropdownPanelComponent, selector: "ard-dropdown-panel", inputs: ["panelId", "headerTemplate", "footerTemplate", "filterValue", "appearance", "variant", "compact", "isOpen"], outputs: ["scroll", "scrollToEnd"] }, { kind: "component", type: ArdiumDeletableChipComponent, selector: "ard-deletable-chip", inputs: ["deleteButtonTitle", "contentAlignment", "appearance", "variant", "color", "compact", "wrapperClasses"], outputs: ["delete"] }, { kind: "directive", type: i5.ArdiumClickOutsideDirective, selector: "[ardClickOutside]", outputs: ["ardClickOutside"] }, { kind: "component", type: _ClearButtonComponent, selector: "ard-clear-button" }, { kind: "pipe", type: i5.ArdiumEscapeHTMLPipe, name: "escapeHTML" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
4332
|
+
], queries: [{ propertyName: "optionTemplate", first: true, predicate: ArdOptionTemplateDirective, descendants: true, isSignal: true }, { propertyName: "optgroupTemplate", first: true, predicate: ArdOptgroupTemplateDirective, descendants: true, isSignal: true }, { propertyName: "valueTemplate", first: true, predicate: ArdValueTemplateDirective, descendants: true, isSignal: true }, { propertyName: "placeholderTemplate", first: true, predicate: ArdSelectPlaceholderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "dropdownArrowTemplate", first: true, predicate: ArdSelectDropdownArrowTemplateDirective, descendants: true, isSignal: true }, { propertyName: "loadingSpinnerTemplate", first: true, predicate: ArdLoadingSpinnerTemplateDirective, descendants: true, isSignal: true }, { propertyName: "loadingPlaceholderTemplate", first: true, predicate: ArdLoadingPlaceholderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "dropdownHeaderTemplate", first: true, predicate: ArdDropdownHeaderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "dropdownFooterTemplate", first: true, predicate: ArdDropdownFooterTemplateDirective, descendants: true, isSignal: true }, { propertyName: "noItemsFoundTemplate", first: true, predicate: ArdNoItemsFoundTemplateDirective, descendants: true, isSignal: true }, { propertyName: "addCustomTemplate", first: true, predicate: ArdAddCustomTemplateDirective, descendants: true, isSignal: true }, { propertyName: "itemLimitReachedTemplate", first: true, predicate: ArdItemLimitReachedTemplateDirective, descendants: true, isSignal: true }, { propertyName: "itemDisplayLimitTemplate", first: true, predicate: ArdItemDisplayLimitTemplateDirective, descendants: true, isSignal: true }, { propertyName: "prefixTemplate", first: true, predicate: ArdSelectPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdSelectSuffixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "optionComponents", predicate: ArdiumOptionComponent }], viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true, isSignal: true }, { propertyName: "dropdownPanel", first: true, predicate: ArdiumDropdownPanelComponent, descendants: true, isSignal: true }, { propertyName: "dropdownHost", first: true, predicate: ["dropdownHost"], descendants: true, isSignal: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true, isSignal: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-select\"\r\n #dropdownHost\r\n (click)=\"handleAnywhereClick($event)\"\r\n [class.ard-has-value]=\"itemStorage.isAnyItemSelected()\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-select-value-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\" />\r\n } @if (shouldDisplayValue()) { @for (item of itemStorage.selectedItems(); track item.index) {\r\n <div\r\n class=\"ard-select-value\"\r\n [class.ard-value-disabled]=\"item.disabled\"\r\n [attr.hidden]=\"!isValueWithinDisplayLimit($index)\"\r\n >\r\n @if (isValueWithinDisplayLimit($index)) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate()?.template || (multiselectable() ? defaultMultiValueTemplate : defaultValueTemplate)\"\r\n [ngTemplateOutletContext]=\"valueContextGenerator()(item)\"\r\n />\r\n }\r\n </div>\r\n }\r\n\r\n <ng-template\r\n #defaultValueTemplate\r\n let-label=\"label\"\r\n >\r\n <div\r\n class=\"ard-select-value\"\r\n [innerHTML]=\"isItemsInputUsed ? (label | escapeHTML) : label\"\r\n ></div>\r\n </ng-template>\r\n <ng-template\r\n #defaultMultiValueTemplate\r\n let-item\r\n let-label=\"label\"\r\n let-unselect=\"unselect\"\r\n >\r\n <ard-deletable-chip\r\n (delete)=\"unselect(item)\"\r\n [variant]=\"variant()\"\r\n compact\r\n appearance=\"outlined\"\r\n >\r\n <div [innerHTML]=\"isItemsInputUsed ? (label | escapeHTML) : label\"></div>\r\n </ard-deletable-chip>\r\n </ng-template>\r\n } @if (itemStorage.isAnyItemSelected() && shouldShowItemDisplayLimit()) {\r\n <div class=\"ard-overflow-indicator\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"itemDisplayLimitTemplate()?.template || defaultItemDisplayLimitTemplate\"\r\n [ngTemplateOutletContext]=\"getItemDisplayLimitContext()\"\r\n />\r\n\r\n <ng-template\r\n #defaultItemDisplayLimitTemplate\r\n let-count=\"overflowCount\"\r\n >\r\n <div>{{ count }} more...</div>\r\n </ng-template>\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"ard-search-input\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-owns]=\"isOpen() ? htmlId() : null\"\r\n >\r\n <input\r\n #searchInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"searchInputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"isInputElementReadonly()\"\r\n [disabled]=\"disabled()\"\r\n [value]=\"searchTerm()\"\r\n aria-autocomplete=\"list\"\r\n [attr.aria-controls]=\"isOpen() ? htmlId() : null\"\r\n (input)=\"filter(searchInput.value)\"\r\n (change)=\"$event.stopPropagation()\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onSearchInputFocus()\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onSearchInputBlur()\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div class=\"ard-select-controls\">\r\n @if (isLoading()) {\r\n <ng-template #defaultLoadingSpinnerTemplate>\r\n <div class=\"ard-spinner\"></div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"loadingSpinnerTemplate()?.template || defaultLoadingSpinnerTemplate\" />\r\n } @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"handleClearButtonClick($event)\"\r\n />\r\n } @if (!readonly()) {\r\n <button\r\n type=\"button\"\r\n class=\"ard-dropdown-arrow-wrapper\"\r\n (click)=\"handleDropdownArrowClick($event)\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n >\r\n <ng-template #defaultDropdownArrowTemplate>\r\n <span class=\"ard-dropdown-arrow\"></span>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"dropdownArrowTemplate()?.template || defaultDropdownArrowTemplate\" />\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #dropdownTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-select-dropdown-panel\"\r\n role=\"listbox\"\r\n aria-label=\"Options list\"\r\n [headerTemplate]=\"dropdownHeaderTemplate()?.template ?? null\"\r\n [footerTemplate]=\"dropdownFooterTemplate()?.template ?? null\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"true\"\r\n [filterValue]=\"searchTerm()\"\r\n [panelId]=\"htmlId()\"\r\n [compact]=\"compact()\"\r\n (ardClickOutside)=\"handleOutsideClick($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n (scroll)=\"scrollEvent.emit($event)\"\r\n (scrollToEnd)=\"scrollToEndEvent.emit($event)\"\r\n >\r\n @if (!shouldShowNoItemsFound()) { @for (group of itemStorage.groups(); track $index) {\r\n <div\r\n class=\"ard-optgroup\"\r\n role=\"group\"\r\n [class.ard-group-disabled]=\"group.disabled\"\r\n (mouseover)=\"onGroupMouseover(group)\"\r\n (click)=\"onGroupClick(group)\"\r\n >\r\n @if (!!group.label) {\r\n <ng-template\r\n #defaultOptgroupTemplate\r\n let-label=\"label\"\r\n >\r\n <span\r\n class=\"ard-optgroup-label\"\r\n [innerHTML]=\"isItemsInputUsed ? (label | escapeHTML) : label\"\r\n ></span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optgroupTemplate()?.template || defaultOptgroupTemplate\"\r\n [ngTemplateOutletContext]=\"groupContextGenerator()(group)\"\r\n />\r\n }\r\n\r\n <div class=\"ard-optgroup-children\">\r\n @for (option of group.children; track option.index) {\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n [class.ard-option-disabled]=\"option.disabled || (itemStorage.isItemLimitReached() && !option.selected)\"\r\n [class.ard-option-selected]=\"option.selected\"\r\n [class.ard-option-highlighted]=\"option.highlighted\"\r\n [class.ard-option-highlighted-recent]=\"option.highlighted_recently\"\r\n [attr.aria-selected]=\"option.selected\"\r\n [attr.id]=\"htmlId() + '-' + option.index\"\r\n (click)=\"onItemClick(option, $event)\"\r\n (mouseover)=\"onItemMouseOver($event)\"\r\n (mouseenter)=\"onItemMouseEnter(option, $event)\"\r\n (mouseleave)=\"onItemMouseLeave(option, $event)\"\r\n >\r\n <div class=\"ard-option-label\">\r\n <ng-template\r\n #defaultOptionTemplate\r\n let-label=\"label\"\r\n >\r\n <span [innerHTML]=\"isItemsInputUsed ? (label | escapeHTML) : label\"></span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"optionContextGenerator()(option)\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } } @if (shouldShowNoItemsFound()) {\r\n <ng-template #defaultNoItemsFoundTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ noItemsFoundText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"noItemsFoundTemplate()?.template || defaultNoItemsFoundTemplate\"\r\n [ngTemplateOutletContext]=\"getSearchContext()\"\r\n />\r\n } @if (shouldShowAddCustom()) {\r\n <div\r\n class=\"ard-option ard-option-highlighted ard-add-custom\"\r\n (click)=\"addCustomOption(searchTerm())\"\r\n >\r\n <ng-template\r\n #defaultAddCustomTemplate\r\n let-searchTerm\r\n >\r\n <span class=\"ard-add-custom-label\">{{ addCustomOptionText() }}</span>\r\n <span class=\"ard-add-custom-value\">\"{{ searchTerm }}\"</span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"addCustomTemplate()?.template || defaultAddCustomTemplate\"\r\n [ngTemplateOutletContext]=\"getCustomOptionContext()\"\r\n />\r\n </div>\r\n } @if (isLoading()) {\r\n <ng-template #defaultLoadingPlaceholderTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ loadingPlaceholderText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"loadingPlaceholderTemplate()?.template || defaultLoadingPlaceholderTemplate\"\r\n [ngTemplateOutletContext]=\"getSearchContext()\"\r\n />\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n", styles: [".ard-select .ard-select-container{display:flex;cursor:pointer}.ard-select .ard-placeholder,.ard-select .ard-value,.ard-select .ard-dropdown-arrow-wrapper,.ard-select .ard-clear-btn-wrapper{-webkit-user-select:none;user-select:none}.ard-select .ard-clear-btn,.ard-select .ard-dropdown-arrow{border:none;background:transparent;padding:0;box-sizing:content-box}.ard-select .ard-option-disabled{pointer-events:none}.ard-select .ard-select-value{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ard-select .ard-select-value[hidden=true]{display:none}.ard-select .ard-searchable .ard-select-value-container{cursor:text}.ard-select .ard-dropdown-arrow-wrapper{position:relative}.ard-select .ard-dropdown-arrow-wrapper .ard-hitbox{position:absolute;left:-4px;right:-4px;aspect-ratio:1}.ard-select-dropdown-panel .ard-optgroup,.ard-select-dropdown-panel .ard-option{-webkit-user-select:none;user-select:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: ["hasError", "isSuccess", "isFocused", "appearance", "variant", "compact", "prefixTemplate", "suffixTemplate"] }, { kind: "component", type: ArdiumDropdownPanelComponent, selector: "ard-dropdown-panel", inputs: ["panelId", "headerTemplate", "footerTemplate", "filterValue", "appearance", "variant", "compact", "isOpen"], outputs: ["scroll", "scrollToEnd"] }, { kind: "component", type: ArdiumDeletableChipComponent, selector: "ard-deletable-chip", inputs: ["deleteButtonTitle", "contentAlignment", "appearance", "variant", "color", "compact", "wrapperClasses"], outputs: ["delete"] }, { kind: "directive", type: i5.ArdiumClickOutsideDirective, selector: "[ardClickOutside]", outputs: ["ardClickOutside"] }, { kind: "component", type: _ClearButtonComponent, selector: "ard-clear-button" }, { kind: "pipe", type: i5.ArdiumEscapeHTMLPipe, name: "escapeHTML" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
4279
4333
|
}
|
|
4280
4334
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumSelectComponent, decorators: [{
|
|
4281
4335
|
type: Component,
|
|
@@ -4289,7 +4343,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
4289
4343
|
provide: ARD_FORM_FIELD_CONTROL,
|
|
4290
4344
|
useExisting: ArdiumSelectComponent,
|
|
4291
4345
|
},
|
|
4292
|
-
], template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-select\"\r\n #dropdownHost\r\n (click)=\"handleAnywhereClick($event)\"\r\n [class.ard-has-value]=\"itemStorage.isAnyItemSelected()\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-select-value-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\" />\r\n } @if (shouldDisplayValue()) { @for (item of itemStorage.selectedItems(); track item.index) {\r\n <div\r\n class=\"ard-select-value\"\r\n [class.ard-value-disabled]=\"item.disabled()\"\r\n [attr.hidden]=\"!isValueWithinDisplayLimit($index)\"\r\n >\r\n @if (isValueWithinDisplayLimit($index)) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate()?.template || (multiselectable() ? defaultMultiValueTemplate : defaultValueTemplate)\"\r\n [ngTemplateOutletContext]=\"getValueContext(item)\"\r\n />\r\n }\r\n </div>\r\n }\r\n\r\n <ng-template\r\n #defaultValueTemplate\r\n let-item\r\n >\r\n <div [innerHTML]=\"isItemsInputUsed ? (item.label() | escapeHTML) : item.label()\"></div>\r\n </ng-template>\r\n <ng-template\r\n #defaultMultiValueTemplate\r\n let-item\r\n let-unselect=\"unselect\"\r\n >\r\n <ard-deletable-chip\r\n (delete)=\"unselect(item)\"\r\n [variant]=\"variant()\"\r\n compact\r\n appearance=\"outlined-strong\"\r\n >\r\n <div [innerHTML]=\"isItemsInputUsed ? (item.label() | escapeHTML) : item.label()\"></div>\r\n </ard-deletable-chip>\r\n </ng-template>\r\n } @if (itemStorage.isAnyItemSelected() && shouldShowItemDisplayLimit()) {\r\n <div class=\"ard-overflow-indicator\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"itemDisplayLimitTemplate()?.template || defaultItemDisplayLimitTemplate\"\r\n [ngTemplateOutletContext]=\"getItemDisplayLimitContext()\"\r\n />\r\n\r\n <ng-template\r\n #defaultItemDisplayLimitTemplate\r\n let-count=\"overflowCount\"\r\n >\r\n <div>{{ count }} more...</div>\r\n </ng-template>\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"ard-search-input\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-owns]=\"isOpen() ? htmlId() : null\"\r\n >\r\n <input\r\n #searchInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"searchInputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"isInputElementReadonly()\"\r\n [disabled]=\"disabled()\"\r\n [value]=\"searchTerm()\"\r\n aria-autocomplete=\"list\"\r\n [attr.aria-controls]=\"isOpen() ? htmlId() : null\"\r\n (input)=\"filter(searchInput.value)\"\r\n (change)=\"$event.stopPropagation()\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onSearchInputFocus()\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onSearchInputBlur()\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div class=\"ard-select-controls\">\r\n @if (isLoading()) {\r\n <ng-template #defaultLoadingSpinnerTemplate>\r\n <div class=\"ard-spinner\"></div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"loadingSpinnerTemplate()?.template || defaultLoadingSpinnerTemplate\" />\r\n } @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"handleClearButtonClick($event)\"\r\n />\r\n }\r\n\r\n <button\r\n type=\"button\"\r\n class=\"ard-dropdown-arrow-wrapper\"\r\n (click)=\"handleDropdownArrowClick($event)\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n >\r\n <span class=\"ard-dropdown-arrow\"></span>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n </div>\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #dropdownTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-select-dropdown-panel\"\r\n role=\"listbox\"\r\n aria-label=\"Options list\"\r\n [headerTemplate]=\"dropdownHeaderTemplate()?.template ?? null\"\r\n [footerTemplate]=\"dropdownFooterTemplate()?.template ?? null\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"true\"\r\n [filterValue]=\"searchTerm()\"\r\n [panelId]=\"htmlId()\"\r\n [compact]=\"compact()\"\r\n (ardClickOutside)=\"handleOutsideClick($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n (scroll)=\"scrollEvent.emit($event)\"\r\n (scrollToEnd)=\"scrollToEndEvent.emit($event)\"\r\n >\r\n @if (!shouldShowNoItemsFound()) { @for (group of itemStorage.groups(); track $index) {\r\n <div\r\n class=\"ard-optgroup\"\r\n role=\"group\"\r\n [class.ard-group-disabled]=\"group.disabled()\"\r\n [class.ard-group-selected]=\"group.selected()\"\r\n [class.ard-group-highlighted]=\"group.highlighted()\"\r\n (mouseover)=\"onGroupMouseover(group)\"\r\n (click)=\"onGroupClick(group)\"\r\n >\r\n @if (group.label() !== '' && group.label() !== undefined) {\r\n <ng-template\r\n #defaultOptgroupTemplate\r\n let-group\r\n >\r\n <span\r\n class=\"ard-optgroup-label\"\r\n [innerHTML]=\"isItemsInputUsed ? (group.label() | escapeHTML) : group.label()\"\r\n ></span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optgroupTemplate()?.template || defaultOptgroupTemplate\"\r\n [ngTemplateOutletContext]=\"getGroupContext(group)\"\r\n />\r\n }\r\n\r\n <div class=\"ard-optgroup-children\">\r\n @for (option of group.children(); track option.index) {\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n [class.ard-option-disabled]=\"option.disabled()\"\r\n [class.ard-option-selected]=\"option.selected()\"\r\n [class.ard-option-highlighted]=\"option.highlighted()\"\r\n [class.ard-option-highlighted-recent]=\"option.highlighted_recently()\"\r\n [attr.aria-selected]=\"option.selected()\"\r\n [attr.id]=\"htmlId() + '-' + option.index\"\r\n (click)=\"onItemClick(option, $event)\"\r\n (mouseover)=\"onItemMouseOver($event)\"\r\n (mouseenter)=\"onItemMouseEnter(option, $event)\"\r\n (mouseleave)=\"onItemMouseLeave(option, $event)\"\r\n >\r\n <div class=\"ard-option-label\">\r\n <ng-template\r\n #defaultOptionTemplate\r\n let-option\r\n >\r\n <span [innerHTML]=\"isItemsInputUsed ? (option.label() | escapeHTML) : option.label()\"></span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"getOptionContext(option)\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } } @if (shouldShowNoItemsFound()) {\r\n <ng-template #defaultNoItemsFoundTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ noItemsFoundText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"noItemsFoundTemplate()?.template || defaultNoItemsFoundTemplate\"\r\n [ngTemplateOutletContext]=\"getSearchContext()\"\r\n />\r\n } @if (shouldShowAddCustom()) {\r\n <ng-template\r\n #defaultAddCustomTemplate\r\n let-searchTerm\r\n >\r\n <div\r\n class=\"ard-option ard-option-highlighted ard-add-custom\"\r\n (click)=\"addCustomOption(searchTerm)\"\r\n >\r\n <span class=\"ard-add-custom-label\">Add option</span>\r\n <span class=\"ard-add-custom-value\">\"{{ searchTerm }}\"</span>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"addCustomTemplate()?.template || defaultAddCustomTemplate\"\r\n [ngTemplateOutletContext]=\"getCustomOptionContext()\"\r\n />\r\n } @if (isLoading()) {\r\n <ng-template #defaultLoadingPlaceholderTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ loadingPlaceholderText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"loadingPlaceholderTemplate()?.template || defaultLoadingPlaceholderTemplate\"\r\n [ngTemplateOutletContext]=\"getSearchContext()\"\r\n />\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n", styles: [".ard-select .ard-select-container{display:flex;cursor:pointer}.ard-select .ard-placeholder,.ard-select .ard-value,.ard-select .ard-dropdown-arrow-wrapper,.ard-select .ard-clear-btn-wrapper{-webkit-user-select:none;user-select:none}.ard-select .ard-clear-btn,.ard-select .ard-dropdown-arrow{border:none;background:transparent;padding:0;box-sizing:content-box}.ard-select .ard-option-disabled{pointer-events:none}.ard-select .ard-select-value{display:block}.ard-select .ard-select-value[hidden=true]{display:none}.ard-select .ard-searchable .ard-select-value-container{cursor:text}.ard-select .ard-dropdown-arrow-wrapper{position:relative}.ard-select .ard-dropdown-arrow-wrapper .ard-hitbox{position:absolute;left:-4px;right:-4px;aspect-ratio:1}.ard-select-dropdown-panel .ard-optgroup,.ard-select-dropdown-panel .ard-option{-webkit-user-select:none;user-select:none}\n"] }]
|
|
4346
|
+
], template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-select\"\r\n #dropdownHost\r\n (click)=\"handleAnywhereClick($event)\"\r\n [class.ard-has-value]=\"itemStorage.isAnyItemSelected()\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-select-value-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\" />\r\n } @if (shouldDisplayValue()) { @for (item of itemStorage.selectedItems(); track item.index) {\r\n <div\r\n class=\"ard-select-value\"\r\n [class.ard-value-disabled]=\"item.disabled\"\r\n [attr.hidden]=\"!isValueWithinDisplayLimit($index)\"\r\n >\r\n @if (isValueWithinDisplayLimit($index)) {\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate()?.template || (multiselectable() ? defaultMultiValueTemplate : defaultValueTemplate)\"\r\n [ngTemplateOutletContext]=\"valueContextGenerator()(item)\"\r\n />\r\n }\r\n </div>\r\n }\r\n\r\n <ng-template\r\n #defaultValueTemplate\r\n let-label=\"label\"\r\n >\r\n <div\r\n class=\"ard-select-value\"\r\n [innerHTML]=\"isItemsInputUsed ? (label | escapeHTML) : label\"\r\n ></div>\r\n </ng-template>\r\n <ng-template\r\n #defaultMultiValueTemplate\r\n let-item\r\n let-label=\"label\"\r\n let-unselect=\"unselect\"\r\n >\r\n <ard-deletable-chip\r\n (delete)=\"unselect(item)\"\r\n [variant]=\"variant()\"\r\n compact\r\n appearance=\"outlined\"\r\n >\r\n <div [innerHTML]=\"isItemsInputUsed ? (label | escapeHTML) : label\"></div>\r\n </ard-deletable-chip>\r\n </ng-template>\r\n } @if (itemStorage.isAnyItemSelected() && shouldShowItemDisplayLimit()) {\r\n <div class=\"ard-overflow-indicator\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"itemDisplayLimitTemplate()?.template || defaultItemDisplayLimitTemplate\"\r\n [ngTemplateOutletContext]=\"getItemDisplayLimitContext()\"\r\n />\r\n\r\n <ng-template\r\n #defaultItemDisplayLimitTemplate\r\n let-count=\"overflowCount\"\r\n >\r\n <div>{{ count }} more...</div>\r\n </ng-template>\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"ard-search-input\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-owns]=\"isOpen() ? htmlId() : null\"\r\n >\r\n <input\r\n #searchInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"searchInputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"isInputElementReadonly()\"\r\n [disabled]=\"disabled()\"\r\n [value]=\"searchTerm()\"\r\n aria-autocomplete=\"list\"\r\n [attr.aria-controls]=\"isOpen() ? htmlId() : null\"\r\n (input)=\"filter(searchInput.value)\"\r\n (change)=\"$event.stopPropagation()\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onSearchInputFocus()\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onSearchInputBlur()\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div class=\"ard-select-controls\">\r\n @if (isLoading()) {\r\n <ng-template #defaultLoadingSpinnerTemplate>\r\n <div class=\"ard-spinner\"></div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"loadingSpinnerTemplate()?.template || defaultLoadingSpinnerTemplate\" />\r\n } @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"handleClearButtonClick($event)\"\r\n />\r\n } @if (!readonly()) {\r\n <button\r\n type=\"button\"\r\n class=\"ard-dropdown-arrow-wrapper\"\r\n (click)=\"handleDropdownArrowClick($event)\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n >\r\n <ng-template #defaultDropdownArrowTemplate>\r\n <span class=\"ard-dropdown-arrow\"></span>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"dropdownArrowTemplate()?.template || defaultDropdownArrowTemplate\" />\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #dropdownTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-select-dropdown-panel\"\r\n role=\"listbox\"\r\n aria-label=\"Options list\"\r\n [headerTemplate]=\"dropdownHeaderTemplate()?.template ?? null\"\r\n [footerTemplate]=\"dropdownFooterTemplate()?.template ?? null\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"true\"\r\n [filterValue]=\"searchTerm()\"\r\n [panelId]=\"htmlId()\"\r\n [compact]=\"compact()\"\r\n (ardClickOutside)=\"handleOutsideClick($event)\"\r\n (mousemove)=\"onMouseMove()\"\r\n (scroll)=\"scrollEvent.emit($event)\"\r\n (scrollToEnd)=\"scrollToEndEvent.emit($event)\"\r\n >\r\n @if (!shouldShowNoItemsFound()) { @for (group of itemStorage.groups(); track $index) {\r\n <div\r\n class=\"ard-optgroup\"\r\n role=\"group\"\r\n [class.ard-group-disabled]=\"group.disabled\"\r\n (mouseover)=\"onGroupMouseover(group)\"\r\n (click)=\"onGroupClick(group)\"\r\n >\r\n @if (!!group.label) {\r\n <ng-template\r\n #defaultOptgroupTemplate\r\n let-label=\"label\"\r\n >\r\n <span\r\n class=\"ard-optgroup-label\"\r\n [innerHTML]=\"isItemsInputUsed ? (label | escapeHTML) : label\"\r\n ></span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optgroupTemplate()?.template || defaultOptgroupTemplate\"\r\n [ngTemplateOutletContext]=\"groupContextGenerator()(group)\"\r\n />\r\n }\r\n\r\n <div class=\"ard-optgroup-children\">\r\n @for (option of group.children; track option.index) {\r\n <div\r\n class=\"ard-option\"\r\n role=\"option\"\r\n [class.ard-option-disabled]=\"option.disabled || (itemStorage.isItemLimitReached() && !option.selected)\"\r\n [class.ard-option-selected]=\"option.selected\"\r\n [class.ard-option-highlighted]=\"option.highlighted\"\r\n [class.ard-option-highlighted-recent]=\"option.highlighted_recently\"\r\n [attr.aria-selected]=\"option.selected\"\r\n [attr.id]=\"htmlId() + '-' + option.index\"\r\n (click)=\"onItemClick(option, $event)\"\r\n (mouseover)=\"onItemMouseOver($event)\"\r\n (mouseenter)=\"onItemMouseEnter(option, $event)\"\r\n (mouseleave)=\"onItemMouseLeave(option, $event)\"\r\n >\r\n <div class=\"ard-option-label\">\r\n <ng-template\r\n #defaultOptionTemplate\r\n let-label=\"label\"\r\n >\r\n <span [innerHTML]=\"isItemsInputUsed ? (label | escapeHTML) : label\"></span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"optionContextGenerator()(option)\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } } @if (shouldShowNoItemsFound()) {\r\n <ng-template #defaultNoItemsFoundTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ noItemsFoundText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"noItemsFoundTemplate()?.template || defaultNoItemsFoundTemplate\"\r\n [ngTemplateOutletContext]=\"getSearchContext()\"\r\n />\r\n } @if (shouldShowAddCustom()) {\r\n <div\r\n class=\"ard-option ard-option-highlighted ard-add-custom\"\r\n (click)=\"addCustomOption(searchTerm())\"\r\n >\r\n <ng-template\r\n #defaultAddCustomTemplate\r\n let-searchTerm\r\n >\r\n <span class=\"ard-add-custom-label\">{{ addCustomOptionText() }}</span>\r\n <span class=\"ard-add-custom-value\">\"{{ searchTerm }}\"</span>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"addCustomTemplate()?.template || defaultAddCustomTemplate\"\r\n [ngTemplateOutletContext]=\"getCustomOptionContext()\"\r\n />\r\n </div>\r\n } @if (isLoading()) {\r\n <ng-template #defaultLoadingPlaceholderTemplate>\r\n <div class=\"ard-option ard-option-disabled\">{{ loadingPlaceholderText() }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"loadingPlaceholderTemplate()?.template || defaultLoadingPlaceholderTemplate\"\r\n [ngTemplateOutletContext]=\"getSearchContext()\"\r\n />\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n", styles: [".ard-select .ard-select-container{display:flex;cursor:pointer}.ard-select .ard-placeholder,.ard-select .ard-value,.ard-select .ard-dropdown-arrow-wrapper,.ard-select .ard-clear-btn-wrapper{-webkit-user-select:none;user-select:none}.ard-select .ard-clear-btn,.ard-select .ard-dropdown-arrow{border:none;background:transparent;padding:0;box-sizing:content-box}.ard-select .ard-option-disabled{pointer-events:none}.ard-select .ard-select-value{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ard-select .ard-select-value[hidden=true]{display:none}.ard-select .ard-searchable .ard-select-value-container{cursor:text}.ard-select .ard-dropdown-arrow-wrapper{position:relative}.ard-select .ard-dropdown-arrow-wrapper .ard-hitbox{position:absolute;left:-4px;right:-4px;aspect-ratio:1}.ard-select-dropdown-panel .ard-optgroup,.ard-select-dropdown-panel .ard-option{-webkit-user-select:none;user-select:none}\n"] }]
|
|
4293
4347
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
4294
4348
|
type: Inject,
|
|
4295
4349
|
args: [ARD_SELECT_DEFAULTS]
|
|
@@ -4303,12 +4357,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
4303
4357
|
args: [ArdiumOptionComponent]
|
|
4304
4358
|
}], value: [{
|
|
4305
4359
|
type: Input
|
|
4306
|
-
}], dropdownHost: [{
|
|
4307
|
-
type: ViewChild,
|
|
4308
|
-
args: ['dropdownHost', { read: ElementRef }]
|
|
4309
|
-
}], dropdownTemplate: [{
|
|
4310
|
-
type: ViewChild,
|
|
4311
|
-
args: ['dropdownTemplate', { read: TemplateRef }]
|
|
4312
4360
|
}], onWindowResize: [{
|
|
4313
4361
|
type: HostListener,
|
|
4314
4362
|
args: ['window:resize']
|
|
@@ -4534,7 +4582,8 @@ class ArdiumSelectModule {
|
|
|
4534
4582
|
ArdItemDisplayLimitTemplateDirective,
|
|
4535
4583
|
ArdAddCustomTemplateDirective,
|
|
4536
4584
|
ArdSelectPrefixTemplateDirective,
|
|
4537
|
-
ArdSelectSuffixTemplateDirective
|
|
4585
|
+
ArdSelectSuffixTemplateDirective,
|
|
4586
|
+
ArdSelectDropdownArrowTemplateDirective], imports: [CommonModule,
|
|
4538
4587
|
ArdiumFormFieldFrameModule,
|
|
4539
4588
|
ArdiumDropdownPanelModule,
|
|
4540
4589
|
ArdiumChipModule,
|
|
@@ -4556,7 +4605,8 @@ class ArdiumSelectModule {
|
|
|
4556
4605
|
ArdItemDisplayLimitTemplateDirective,
|
|
4557
4606
|
ArdAddCustomTemplateDirective,
|
|
4558
4607
|
ArdSelectPrefixTemplateDirective,
|
|
4559
|
-
ArdSelectSuffixTemplateDirective
|
|
4608
|
+
ArdSelectSuffixTemplateDirective,
|
|
4609
|
+
ArdSelectDropdownArrowTemplateDirective] }); }
|
|
4560
4610
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumSelectModule, imports: [CommonModule,
|
|
4561
4611
|
ArdiumFormFieldFrameModule,
|
|
4562
4612
|
ArdiumDropdownPanelModule,
|
|
@@ -4586,6 +4636,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
4586
4636
|
ArdAddCustomTemplateDirective,
|
|
4587
4637
|
ArdSelectPrefixTemplateDirective,
|
|
4588
4638
|
ArdSelectSuffixTemplateDirective,
|
|
4639
|
+
ArdSelectDropdownArrowTemplateDirective,
|
|
4589
4640
|
],
|
|
4590
4641
|
imports: [
|
|
4591
4642
|
CommonModule,
|
|
@@ -4614,6 +4665,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
4614
4665
|
ArdAddCustomTemplateDirective,
|
|
4615
4666
|
ArdSelectPrefixTemplateDirective,
|
|
4616
4667
|
ArdSelectSuffixTemplateDirective,
|
|
4668
|
+
ArdSelectDropdownArrowTemplateDirective,
|
|
4617
4669
|
],
|
|
4618
4670
|
}]
|
|
4619
4671
|
}] });
|
|
@@ -4893,7 +4945,6 @@ class _FileInputComponentBase extends _FormFieldComponentBase {
|
|
|
4893
4945
|
}
|
|
4894
4946
|
onFileInputChange() {
|
|
4895
4947
|
this._isFilePickerOpen = false;
|
|
4896
|
-
console.log('onFileInputChange');
|
|
4897
4948
|
const files = Array.from(this.fileInputEl()?.nativeElement.files ?? []);
|
|
4898
4949
|
this._writeFilesToValue(files);
|
|
4899
4950
|
}
|
|
@@ -5493,7 +5544,7 @@ class ArdiumFileInputComponent extends _FileInputComponentBase {
|
|
|
5493
5544
|
provide: ARD_FORM_FIELD_CONTROL,
|
|
5494
5545
|
useExisting: forwardRef(() => ArdiumFileInputComponent),
|
|
5495
5546
|
},
|
|
5496
|
-
], queries: [{ propertyName: "placeholderTemplate", first: true, predicate: ArdFileInputPlaceholderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "prefixTemplate", first: true, predicate: ArdFileInputPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdFileInputSuffixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "idleTemplate", first: true, predicate: ArdiumFileInputIdleContentTemplateDirective, descendants: true, isSignal: true }, { propertyName: "dragoverTemplate", first: true, predicate: ArdiumFileInputDragoverContentTemplateDirective, descendants: true, isSignal: true }, { propertyName: "uploadedTemplate", first: true, predicate: ArdiumFileInputUploadedContentTemplateDirective, descendants: true, isSignal: true }, { propertyName: "folderIconTemplate", first: true, predicate: ArdiumFileInputFolderIconTemplateDirective, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ard-form-field-frame\r\n class=\"ard-file-input-form-field-frame\"\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n (dragover)=\"onDragover($event)\"\r\n (dragleave)=\"onDragleave()\"\r\n (drop)=\"onDrop($event)\"\r\n (ardClickOutside)=\"onDragleave()\"\r\n>\r\n <div\r\n class=\"ard-file-input\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\" />\r\n }\r\n\r\n <div class=\"ard-file-input__value\">\r\n @if (currentViewState() === 'idle') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"idleTemplate()?.template ?? defaultIdleTemplate\"\r\n [ngTemplateOutletContext]=\"getIdleContext()\"\r\n />\r\n } @if (currentViewState() === 'dragover') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"dragoverTemplate()?.template ?? defaultDragoverTemplate\"\r\n [ngTemplateOutletContext]=\"getDragoverContext()\"\r\n />\r\n } @if (currentViewState() === 'uploaded') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"uploadedTemplate()?.template ?? defaultUploadedTemplate\"\r\n [ngTemplateOutletContext]=\"getUploadedContext()\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n\r\n @if (shouldShowClearButton) {\r\n <ard-clear-button\r\n #focusableElement\r\n [title]=\"clearButtonTitle()\"\r\n (mouseup)=\"onClearButtonClick($event)\"\r\n />\r\n } @if (!shouldBeBlocked) {\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-browse-button\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (click)=\"openBrowseDialog()\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-icon>folder</ard-icon>\r\n </button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<input\r\n #fileInput\r\n class=\"ard-file-input__input\"\r\n type=\"file\"\r\n [name]=\"name()\"\r\n [multiple]=\"multiple()\"\r\n [attr.id]=\"htmlId()\"\r\n [accept]=\"acceptString()\"\r\n (change)=\"onFileInputChange()\"\r\n/>\r\n\r\n<ng-template\r\n #defaultIdleTemplate\r\n let-browse=\"browse\"\r\n>\r\n <span class=\"ard-file-input__idle\">\r\n @if (multiple()) {\r\n <span>Upload a file</span>\r\n } @else {\r\n <span>Upload files</span>\r\n }\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template\r\n #defaultDragoverTemplate\r\n let-amount=\"amount\"\r\n>\r\n <span class=\"ard-file-input__dragover-text\">Drop </span>\r\n @if (multiple()) {\r\n <span class=\"ard-file-input__dragover-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n } @else {\r\n <span class=\"ard-file-input__dragover-amount\"> a file </span>\r\n }\r\n <span class=\"ard-file-input__dragover-text\"> here to upload </span>\r\n</ng-template>\r\n\r\n<ng-template\r\n #defaultUploadedTemplate\r\n let-amount=\"amount\"\r\n let-files=\"files\"\r\n>\r\n <div class=\"ard-file-input__uploaded\">\r\n @if (amount === 1) {\r\n <div class=\"ard-file-input__full-file-name\">\r\n <span class=\"ard-file-input__file-name\">\r\n {{ files?.[0]?.name | filename }}\r\n </span>\r\n <span class=\"ard-file-input__file-ext\">\r\n {{ files?.[0]?.name | fileext:true }}\r\n </span>\r\n </div>\r\n } @else {\r\n <span class=\"ard-file-input__uploaded-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n <span class=\"ard-file-input__uploaded-text\"> uploaded.</span>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: [".ard-file-input__input{position:absolute;appearance:none;opacity:0;pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgPlural, selector: "[ngPlural]", inputs: ["ngPlural"] }, { kind: "directive", type: i1.NgPluralCase, selector: "[ngPluralCase]" }, { kind: "component", type: ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: ["hasError", "isSuccess", "isFocused", "appearance", "variant", "compact", "prefixTemplate", "suffixTemplate"] }, { kind: "component", type: _ClearButtonComponent, selector: "ard-clear-button" }, { kind: "component", type: ArdiumIconComponent, selector: "ard-icon", inputs: ["ariaLabel", "icon", "filled", "weight", "grade", "opticalSize"] }, { kind: "pipe", type: i5.ArdiumFileExtensionPipe, name: "fileext" }, { kind: "pipe", type: i5.ArdiumFileNamePipe, name: "filename" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
5547
|
+
], queries: [{ propertyName: "placeholderTemplate", first: true, predicate: ArdFileInputPlaceholderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "prefixTemplate", first: true, predicate: ArdFileInputPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdFileInputSuffixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "idleTemplate", first: true, predicate: ArdiumFileInputIdleContentTemplateDirective, descendants: true, isSignal: true }, { propertyName: "dragoverTemplate", first: true, predicate: ArdiumFileInputDragoverContentTemplateDirective, descendants: true, isSignal: true }, { propertyName: "uploadedTemplate", first: true, predicate: ArdiumFileInputUploadedContentTemplateDirective, descendants: true, isSignal: true }, { propertyName: "folderIconTemplate", first: true, predicate: ArdiumFileInputFolderIconTemplateDirective, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ard-form-field-frame\r\n class=\"ard-file-input-form-field-frame\"\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n (dragover)=\"onDragover($event)\"\r\n (dragleave)=\"onDragleave()\"\r\n (drop)=\"onDrop($event)\"\r\n (ardClickOutside)=\"onDragleave()\"\r\n>\r\n <div\r\n class=\"ard-file-input\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\" />\r\n }\r\n\r\n <div class=\"ard-file-input__value\">\r\n @if (currentViewState() === 'idle') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"idleTemplate()?.template ?? defaultIdleTemplate\"\r\n [ngTemplateOutletContext]=\"getIdleContext()\"\r\n />\r\n } @if (currentViewState() === 'dragover') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"dragoverTemplate()?.template ?? defaultDragoverTemplate\"\r\n [ngTemplateOutletContext]=\"getDragoverContext()\"\r\n />\r\n } @if (currentViewState() === 'uploaded') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"uploadedTemplate()?.template ?? defaultUploadedTemplate\"\r\n [ngTemplateOutletContext]=\"getUploadedContext()\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n\r\n @if (shouldShowClearButton) {\r\n <ard-clear-button\r\n #focusableElement\r\n [title]=\"clearButtonTitle()\"\r\n (mouseup)=\"onClearButtonClick($event)\"\r\n />\r\n } @if (!shouldBeBlocked) {\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-browse-button\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (click)=\"openBrowseDialog()\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-icon>folder</ard-icon>\r\n </button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<input\r\n #fileInput\r\n class=\"ard-file-input__input\"\r\n type=\"file\"\r\n [name]=\"name()\"\r\n [multiple]=\"multiple()\"\r\n [attr.id]=\"htmlId()\"\r\n [accept]=\"acceptString()\"\r\n (change)=\"onFileInputChange()\"\r\n/>\r\n\r\n<ng-template\r\n #defaultIdleTemplate\r\n let-browse=\"browse\"\r\n>\r\n <span class=\"ard-file-input__idle\">\r\n @if (multiple()) {\r\n <span>Upload a file</span>\r\n } @else {\r\n <span>Upload files</span>\r\n }\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template\r\n #defaultDragoverTemplate\r\n let-amount=\"amount\"\r\n>\r\n <span class=\"ard-file-input__dragover-text\">Drop </span>\r\n @if (multiple()) {\r\n <span class=\"ard-file-input__dragover-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n } @else {\r\n <span class=\"ard-file-input__dragover-amount\"> a file </span>\r\n }\r\n <span class=\"ard-file-input__dragover-text\"> here to upload </span>\r\n</ng-template>\r\n\r\n<ng-template\r\n #defaultUploadedTemplate\r\n let-amount=\"amount\"\r\n let-files=\"files\"\r\n>\r\n <div class=\"ard-file-input__uploaded\">\r\n @if (amount === 1) {\r\n <div class=\"ard-file-input__full-file-name\">\r\n <span class=\"ard-file-input__file-name\">\r\n {{ files?.[0]?.name | filename }}\r\n </span>\r\n <span class=\"ard-file-input__file-ext\">\r\n {{ files?.[0]?.name | fileext:true }}\r\n </span>\r\n </div>\r\n } @else {\r\n <span class=\"ard-file-input__uploaded-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n <span class=\"ard-file-input__uploaded-text\"> uploaded.</span>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: [".ard-file-input__input{position:absolute;appearance:none;opacity:0;pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgPlural, selector: "[ngPlural]", inputs: ["ngPlural"] }, { kind: "directive", type: i1.NgPluralCase, selector: "[ngPluralCase]" }, { kind: "component", type: ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: ["hasError", "isSuccess", "isFocused", "appearance", "variant", "compact", "prefixTemplate", "suffixTemplate"] }, { kind: "component", type: _ClearButtonComponent, selector: "ard-clear-button" }, { kind: "component", type: ArdiumIconComponent, selector: "ard-icon", inputs: ["ariaLabel", "icon", "filled", "weight", "grade", "opticalSize"] }, { kind: "pipe", type: i5.ArdiumFileExtensionPipe, name: "fileext" }, { kind: "pipe", type: i5.ArdiumFileNamePipe, name: "filename" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
5497
5548
|
}
|
|
5498
5549
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumFileInputComponent, decorators: [{
|
|
5499
5550
|
type: Component,
|
|
@@ -5507,7 +5558,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
5507
5558
|
provide: ARD_FORM_FIELD_CONTROL,
|
|
5508
5559
|
useExisting: forwardRef(() => ArdiumFileInputComponent),
|
|
5509
5560
|
},
|
|
5510
|
-
], template: "<ard-form-field-frame\r\n class=\"ard-file-input-form-field-frame\"\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n (dragover)=\"onDragover($event)\"\r\n (dragleave)=\"onDragleave()\"\r\n (drop)=\"onDrop($event)\"\r\n (ardClickOutside)=\"onDragleave()\"\r\n>\r\n <div\r\n class=\"ard-file-input\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\" />\r\n }\r\n\r\n <div class=\"ard-file-input__value\">\r\n @if (currentViewState() === 'idle') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"idleTemplate()?.template ?? defaultIdleTemplate\"\r\n [ngTemplateOutletContext]=\"getIdleContext()\"\r\n />\r\n } @if (currentViewState() === 'dragover') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"dragoverTemplate()?.template ?? defaultDragoverTemplate\"\r\n [ngTemplateOutletContext]=\"getDragoverContext()\"\r\n />\r\n } @if (currentViewState() === 'uploaded') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"uploadedTemplate()?.template ?? defaultUploadedTemplate\"\r\n [ngTemplateOutletContext]=\"getUploadedContext()\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n\r\n @if (shouldShowClearButton) {\r\n <ard-clear-button\r\n #focusableElement\r\n [title]=\"clearButtonTitle()\"\r\n (mouseup)=\"onClearButtonClick($event)\"\r\n />\r\n } @if (!shouldBeBlocked) {\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-browse-button\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (click)=\"openBrowseDialog()\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-icon>folder</ard-icon>\r\n </button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<input\r\n #fileInput\r\n class=\"ard-file-input__input\"\r\n type=\"file\"\r\n [name]=\"name()\"\r\n [multiple]=\"multiple()\"\r\n [attr.id]=\"htmlId()\"\r\n [accept]=\"acceptString()\"\r\n (change)=\"onFileInputChange()\"\r\n/>\r\n\r\n<ng-template\r\n #defaultIdleTemplate\r\n let-browse=\"browse\"\r\n>\r\n <span class=\"ard-file-input__idle\">\r\n @if (multiple()) {\r\n <span>Upload a file</span>\r\n } @else {\r\n <span>Upload files</span>\r\n }\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template\r\n #defaultDragoverTemplate\r\n let-amount=\"amount\"\r\n>\r\n <span class=\"ard-file-input__dragover-text\">Drop </span>\r\n @if (multiple()) {\r\n <span class=\"ard-file-input__dragover-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n } @else {\r\n <span class=\"ard-file-input__dragover-amount\"> a file </span>\r\n }\r\n <span class=\"ard-file-input__dragover-text\"> here to upload </span>\r\n</ng-template>\r\n\r\n<ng-template\r\n #defaultUploadedTemplate\r\n let-amount=\"amount\"\r\n let-files=\"files\"\r\n>\r\n <div class=\"ard-file-input__uploaded\">\r\n @if (amount === 1) {\r\n <div class=\"ard-file-input__full-file-name\">\r\n <span class=\"ard-file-input__file-name\">\r\n {{ files?.[0]?.name | filename }}\r\n </span>\r\n <span class=\"ard-file-input__file-ext\">\r\n {{ files?.[0]?.name | fileext:true }}\r\n </span>\r\n </div>\r\n } @else {\r\n <span class=\"ard-file-input__uploaded-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n <span class=\"ard-file-input__uploaded-text\"> uploaded.</span>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: [".ard-file-input__input{position:absolute;appearance:none;opacity:0;pointer-events:none}\n"] }]
|
|
5561
|
+
], template: "<ard-form-field-frame\r\n class=\"ard-file-input-form-field-frame\"\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n (dragover)=\"onDragover($event)\"\r\n (dragleave)=\"onDragleave()\"\r\n (drop)=\"onDrop($event)\"\r\n (ardClickOutside)=\"onDragleave()\"\r\n>\r\n <div\r\n class=\"ard-file-input\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\" />\r\n }\r\n\r\n <div class=\"ard-file-input__value\">\r\n @if (currentViewState() === 'idle') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"idleTemplate()?.template ?? defaultIdleTemplate\"\r\n [ngTemplateOutletContext]=\"getIdleContext()\"\r\n />\r\n } @if (currentViewState() === 'dragover') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"dragoverTemplate()?.template ?? defaultDragoverTemplate\"\r\n [ngTemplateOutletContext]=\"getDragoverContext()\"\r\n />\r\n } @if (currentViewState() === 'uploaded') {\r\n <ng-template\r\n [ngTemplateOutlet]=\"uploadedTemplate()?.template ?? defaultUploadedTemplate\"\r\n [ngTemplateOutletContext]=\"getUploadedContext()\"\r\n />\r\n }\r\n </div>\r\n </div>\r\n\r\n @if (shouldShowClearButton) {\r\n <ard-clear-button\r\n #focusableElement\r\n [title]=\"clearButtonTitle()\"\r\n (mouseup)=\"onClearButtonClick($event)\"\r\n />\r\n } @if (!shouldBeBlocked) {\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-browse-button\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (click)=\"openBrowseDialog()\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-icon>folder</ard-icon>\r\n </button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<input\r\n #fileInput\r\n class=\"ard-file-input__input\"\r\n type=\"file\"\r\n [name]=\"name()\"\r\n [multiple]=\"multiple()\"\r\n [attr.id]=\"htmlId()\"\r\n [accept]=\"acceptString()\"\r\n (change)=\"onFileInputChange()\"\r\n/>\r\n\r\n<ng-template\r\n #defaultIdleTemplate\r\n let-browse=\"browse\"\r\n>\r\n <span class=\"ard-file-input__idle\">\r\n @if (multiple()) {\r\n <span>Upload a file</span>\r\n } @else {\r\n <span>Upload files</span>\r\n }\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template\r\n #defaultDragoverTemplate\r\n let-amount=\"amount\"\r\n>\r\n <span class=\"ard-file-input__dragover-text\">Drop </span>\r\n @if (multiple()) {\r\n <span class=\"ard-file-input__dragover-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n } @else {\r\n <span class=\"ard-file-input__dragover-amount\"> a file </span>\r\n }\r\n <span class=\"ard-file-input__dragover-text\"> here to upload </span>\r\n</ng-template>\r\n\r\n<ng-template\r\n #defaultUploadedTemplate\r\n let-amount=\"amount\"\r\n let-files=\"files\"\r\n>\r\n <div class=\"ard-file-input__uploaded\">\r\n @if (amount === 1) {\r\n <div class=\"ard-file-input__full-file-name\">\r\n <span class=\"ard-file-input__file-name\">\r\n {{ files?.[0]?.name | filename }}\r\n </span>\r\n <span class=\"ard-file-input__file-ext\">\r\n {{ files?.[0]?.name | fileext:true }}\r\n </span>\r\n </div>\r\n } @else {\r\n <span class=\"ard-file-input__uploaded-amount\">\r\n {{ amount }}\r\n <ng-container [ngPlural]=\"amount\">\r\n <ng-template ngPluralCase=\"=1\">file</ng-template>\r\n <ng-template ngPluralCase=\"other\">files</ng-template>\r\n </ng-container>\r\n </span>\r\n <span class=\"ard-file-input__uploaded-text\"> uploaded.</span>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: [".ard-file-input__input{position:absolute;appearance:none;opacity:0;pointer-events:none}\n"] }]
|
|
5511
5562
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
5512
5563
|
type: Inject,
|
|
5513
5564
|
args: [ARD_FILE_INPUT_DEFAULTS]
|
|
@@ -7693,7 +7744,7 @@ class ArdiumDateInputComponent extends _FormFieldComponentBase {
|
|
|
7693
7744
|
provide: ARD_FORM_FIELD_CONTROL,
|
|
7694
7745
|
useExisting: ArdiumDateInputComponent,
|
|
7695
7746
|
},
|
|
7696
|
-
], queries: [{ propertyName: "valueTemplate", first: true, predicate: ArdDateInputValueTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarIconTemplate", first: true, predicate: ArdDateInputCalendarIconTemplateDirective, descendants: true, isSignal: true }, { propertyName: "acceptButtonsTemplate", first: true, predicate: ArdDateInputAcceptButtonsTemplateDirective, descendants: true, isSignal: true }, { propertyName: "prefixTemplate", first: true, predicate: ArdDateInputPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdDateInputSuffixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarDaysViewHeaderTemplate", first: true, predicate: ArdDateInputDaysViewHeaderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarYearsViewHeaderTemplate", first: true, predicate: ArdDateInputYearsViewHeaderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarMonthsViewHeaderTemplate", first: true, predicate: ArdDateInputMonthsViewHeaderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarWeekdayTemplate", first: true, predicate: ArdDateInputWeekdayTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarFloatingMonthTemplate", first: true, predicate: ArdDateInputFloatingMonthTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarYearTemplate", first: true, predicate: ArdDateInputYearTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarMonthTemplate", first: true, predicate: ArdDateInputMonthTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarDayTemplate", first: true, predicate: ArdDateInputDayTemplateDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "dateInput", first: true, predicate: ["dateInput"], descendants: true, isSignal: true }, { propertyName: "dropdownHost", first: true, predicate: ["dropdownHost"], descendants: true, isSignal: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true, isSignal: true }, { propertyName: "dropdownPanel", first: true, predicate: ArdiumDropdownPanelComponent, descendants: true, isSignal: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-date-input\"\r\n #dropdownHost\r\n (click)=\"onGeneralClick($event)\"\r\n [class.ard-has-value]=\"!!value()\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-date-input__value-container ard-input-container\">\r\n <div\r\n class=\"ard-date-input__placeholder ard-placeholder\"\r\n [class.ard-date-input__placeholder-hidden]=\"!shouldDisplayPlaceholder()\"\r\n >\r\n {{ placeholder() }}\r\n </div>\r\n <div\r\n class=\"ard-date-input__value\"\r\n [class.ard-date-input__value-hidden]=\"!shouldDisplayValue()\"\r\n >\r\n <ng-template\r\n #defaultValueTemplate\r\n let-date\r\n >\r\n {{ serializeFn()(date) }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate()?.template || defaultValueTemplate\"\r\n [ngTemplateOutletContext]=\"valueContext()\"\r\n />\r\n </div>\r\n <div\r\n class=\"ard-date-input__input-container\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-owns]=\"isOpen() ? htmlId() : null\"\r\n [class.ard-date-input__input-container-hidden]=\"!shouldDisplayDateInput()\"\r\n >\r\n <input\r\n #dateInput\r\n #focusableElement\r\n type=\"text\"\r\n class=\"ard-date-input__input\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [value]=\"dateInputValue()\"\r\n [attr.aria-controls]=\"isOpen() ? htmlId() : null\"\r\n (input)=\"onDateInputInput($event)\"\r\n (change)=\"$event.stopPropagation()\"\r\n (focus)=\"onDateInputFocus($event)\"\r\n (blur)=\"onDateInputBlur($event)\"\r\n (keydown)=\"onDateInputEnter($event)\"\r\n />\r\n </div>\r\n </div>\r\n\r\n @if (!calendarHidden()) {\r\n <ard-icon-button\r\n color=\"none\"\r\n [disabled]=\"calendarDisabled()\"\r\n (click)=\"onCalendarButtonClick($event)\"\r\n >\r\n <ng-template\r\n #defaultCalendarIconTemplate\r\n let-date\r\n >\r\n <ard-icon filled>today</ard-icon>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"calendarIconTemplate()?.template || defaultCalendarIconTemplate\" />\r\n </ard-icon-button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #dropdownTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-date-input__dropdown-panel\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"true\"\r\n [panelId]=\"htmlId()\"\r\n [compact]=\"compact()\"\r\n (ardClickOutside)=\"onOutsideClick($event)\"\r\n >\r\n <ard-calendar\r\n class=\"ard-date-input__calendar\"\r\n [(activeMonth)]=\"activeMonth\"\r\n [(activeYear)]=\"activeYear\"\r\n [(activeView)]=\"activeView\"\r\n [firstWeekday]=\"firstWeekday()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [UTC]=\"_UTCAfterInit()\"\r\n autoFocus\r\n [multipleYearPageChangeModifier]=\"multipleYearPageChangeModifier()\"\r\n [color]=\"color()\"\r\n [disabled]=\"disabled() || calendarDisabled()\"\r\n [tabIndex]=\"tabIndex()\"\r\n [selected]=\"value()\"\r\n (selectedChange)=\"onCalendarSelectedChange($event)\"\r\n (yearSelect)=\"yearSelect.emit($event)\"\r\n (monthSelect)=\"monthSelect.emit($event)\"\r\n >\r\n <ng-template\r\n _ard-tmp-repository\r\n [daysViewHeaderTmp]=\"calendarDaysViewHeaderTemplate()\"\r\n [yearsViewHeaderTmp]=\"calendarYearsViewHeaderTemplate()\"\r\n [monthsViewHeaderTmp]=\"calendarMonthsViewHeaderTemplate()\"\r\n [weekdayTmp]=\"calendarWeekdayTemplate()\"\r\n [floatingMonthTmp]=\"calendarFloatingMonthTemplate()\"\r\n [yearTmp]=\"calendarYearTemplate()\"\r\n [monthTmp]=\"calendarMonthTemplate()\"\r\n [dayTmp]=\"calendarDayTemplate()\"\r\n />\r\n </ard-calendar>\r\n @if (useAcceptButtonToSelect()) {\r\n <div class=\"ard-date-input__accept-buttons-container\">\r\n <ng-template\r\n #defaultAcceptButtonsTemplate\r\n let-date\r\n >\r\n {{ serializeFn()(date) }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"acceptButtonsTemplate()?.template || defaultAcceptButtonsTemplate\"\r\n [ngTemplateOutletContext]=\"acceptButtonsContext()\"\r\n />\r\n </div>\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n", styles: [".ard-date-input .ard-date-input__placeholder.ard-date-input__placeholder-hidden,.ard-date-input .ard-date-input__value.ard-date-input__value-hidden{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: ["hasError", "isSuccess", "isFocused", "appearance", "variant", "compact", "prefixTemplate", "suffixTemplate"] }, { kind: "component", type: ArdiumDropdownPanelComponent, selector: "ard-dropdown-panel", inputs: ["panelId", "headerTemplate", "footerTemplate", "filterValue", "appearance", "variant", "compact", "isOpen"], outputs: ["scroll", "scrollToEnd"] }, { kind: "directive", type: i5.ArdiumClickOutsideDirective, selector: "[ardClickOutside]", outputs: ["ardClickOutside"] }, { kind: "component", type: ArdiumCalendarComponent, selector: "ard-calendar", inputs: ["color", "activeView", "activeYear", "activeMonth", "firstWeekday", "multipleYearPageChangeModifier", "autoFocus", "selected", "min", "max", "UTC", "filter"], outputs: ["activeViewChange", "activeYearChange", "activeMonthChange", "selectedChange", "yearSelect", "monthSelect"] }, { kind: "component", type: ArdiumIconButtonComponent, selector: "ard-icon-button", inputs: ["wrapperClasses", "type", "color", "lightColoring", "compact", "pointerEventsWhenDisabled"] }, { kind: "component", type: ArdiumIconComponent, selector: "ard-icon", inputs: ["ariaLabel", "icon", "filled", "weight", "grade", "opticalSize"] }, { kind: "directive", type: _CalendarTemplateRepositoryDirective, selector: "ard-calendar > ng-template[_ard-tmp-repository]", inputs: ["daysViewHeaderTmp", "yearsViewHeaderTmp", "monthsViewHeaderTmp", "weekdayTmp", "floatingMonthTmp", "yearTmp", "monthTmp", "dayTmp"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
7747
|
+
], queries: [{ propertyName: "valueTemplate", first: true, predicate: ArdDateInputValueTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarIconTemplate", first: true, predicate: ArdDateInputCalendarIconTemplateDirective, descendants: true, isSignal: true }, { propertyName: "acceptButtonsTemplate", first: true, predicate: ArdDateInputAcceptButtonsTemplateDirective, descendants: true, isSignal: true }, { propertyName: "prefixTemplate", first: true, predicate: ArdDateInputPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdDateInputSuffixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarDaysViewHeaderTemplate", first: true, predicate: ArdDateInputDaysViewHeaderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarYearsViewHeaderTemplate", first: true, predicate: ArdDateInputYearsViewHeaderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarMonthsViewHeaderTemplate", first: true, predicate: ArdDateInputMonthsViewHeaderTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarWeekdayTemplate", first: true, predicate: ArdDateInputWeekdayTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarFloatingMonthTemplate", first: true, predicate: ArdDateInputFloatingMonthTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarYearTemplate", first: true, predicate: ArdDateInputYearTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarMonthTemplate", first: true, predicate: ArdDateInputMonthTemplateDirective, descendants: true, isSignal: true }, { propertyName: "calendarDayTemplate", first: true, predicate: ArdDateInputDayTemplateDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "dateInput", first: true, predicate: ["dateInput"], descendants: true, isSignal: true }, { propertyName: "dropdownHost", first: true, predicate: ["dropdownHost"], descendants: true, isSignal: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true, isSignal: true }, { propertyName: "dropdownPanel", first: true, predicate: ArdiumDropdownPanelComponent, descendants: true, isSignal: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-date-input\"\r\n #dropdownHost\r\n (click)=\"onGeneralClick($event)\"\r\n [class.ard-has-value]=\"!!value()\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-date-input__value-container ard-input-container\">\r\n <div\r\n class=\"ard-date-input__placeholder ard-placeholder\"\r\n [class.ard-date-input__placeholder-hidden]=\"!shouldDisplayPlaceholder()\"\r\n >\r\n {{ placeholder() }}\r\n </div>\r\n <div\r\n class=\"ard-date-input__value\"\r\n [class.ard-date-input__value-hidden]=\"!shouldDisplayValue()\"\r\n >\r\n <ng-template\r\n #defaultValueTemplate\r\n let-date\r\n >\r\n {{ serializeFn()(date) }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate()?.template || defaultValueTemplate\"\r\n [ngTemplateOutletContext]=\"valueContext()\"\r\n />\r\n </div>\r\n <div\r\n class=\"ard-date-input__input-container\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-owns]=\"isOpen() ? htmlId() : null\"\r\n [class.ard-date-input__input-container-hidden]=\"!shouldDisplayDateInput()\"\r\n >\r\n <input\r\n #dateInput\r\n #focusableElement\r\n type=\"text\"\r\n class=\"ard-date-input__input\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [value]=\"dateInputValue()\"\r\n [attr.aria-controls]=\"isOpen() ? htmlId() : null\"\r\n (input)=\"onDateInputInput($event)\"\r\n (change)=\"$event.stopPropagation()\"\r\n (focus)=\"onDateInputFocus($event)\"\r\n (blur)=\"onDateInputBlur($event)\"\r\n (keydown)=\"onDateInputEnter($event)\"\r\n />\r\n </div>\r\n </div>\r\n\r\n @if (!calendarHidden()) {\r\n <ard-icon-button\r\n color=\"none\"\r\n [disabled]=\"calendarDisabled()\"\r\n (click)=\"onCalendarButtonClick($event)\"\r\n >\r\n <ng-template\r\n #defaultCalendarIconTemplate\r\n let-date\r\n >\r\n <ard-icon filled>today</ard-icon>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"calendarIconTemplate()?.template || defaultCalendarIconTemplate\" />\r\n </ard-icon-button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #dropdownTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-date-input__dropdown-panel\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"true\"\r\n [panelId]=\"htmlId()\"\r\n [compact]=\"compact()\"\r\n (ardClickOutside)=\"onOutsideClick($event)\"\r\n >\r\n <ard-calendar\r\n class=\"ard-date-input__calendar\"\r\n [(activeMonth)]=\"activeMonth\"\r\n [(activeYear)]=\"activeYear\"\r\n [(activeView)]=\"activeView\"\r\n [firstWeekday]=\"firstWeekday()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [UTC]=\"_UTCAfterInit()\"\r\n autoFocus\r\n [multipleYearPageChangeModifier]=\"multipleYearPageChangeModifier()\"\r\n [color]=\"color()\"\r\n [disabled]=\"disabled() || calendarDisabled()\"\r\n [tabIndex]=\"tabIndex()\"\r\n [selected]=\"value()\"\r\n (selectedChange)=\"onCalendarSelectedChange($event)\"\r\n (yearSelect)=\"yearSelect.emit($event)\"\r\n (monthSelect)=\"monthSelect.emit($event)\"\r\n >\r\n <ng-template\r\n _ard-tmp-repository\r\n [daysViewHeaderTmp]=\"calendarDaysViewHeaderTemplate()\"\r\n [yearsViewHeaderTmp]=\"calendarYearsViewHeaderTemplate()\"\r\n [monthsViewHeaderTmp]=\"calendarMonthsViewHeaderTemplate()\"\r\n [weekdayTmp]=\"calendarWeekdayTemplate()\"\r\n [floatingMonthTmp]=\"calendarFloatingMonthTemplate()\"\r\n [yearTmp]=\"calendarYearTemplate()\"\r\n [monthTmp]=\"calendarMonthTemplate()\"\r\n [dayTmp]=\"calendarDayTemplate()\"\r\n />\r\n </ard-calendar>\r\n @if (useAcceptButtonToSelect()) {\r\n <div class=\"ard-date-input__accept-buttons-container\">\r\n <ng-template\r\n #defaultAcceptButtonsTemplate\r\n let-date\r\n >\r\n {{ serializeFn()(date) }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"acceptButtonsTemplate()?.template || defaultAcceptButtonsTemplate\"\r\n [ngTemplateOutletContext]=\"acceptButtonsContext()\"\r\n />\r\n </div>\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n", styles: [".ard-date-input .ard-date-input__placeholder.ard-date-input__placeholder-hidden,.ard-date-input .ard-date-input__value.ard-date-input__value-hidden{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: ["hasError", "isSuccess", "isFocused", "appearance", "variant", "compact", "prefixTemplate", "suffixTemplate"] }, { kind: "component", type: ArdiumDropdownPanelComponent, selector: "ard-dropdown-panel", inputs: ["panelId", "headerTemplate", "footerTemplate", "filterValue", "appearance", "variant", "compact", "isOpen"], outputs: ["scroll", "scrollToEnd"] }, { kind: "directive", type: i5.ArdiumClickOutsideDirective, selector: "[ardClickOutside]", outputs: ["ardClickOutside"] }, { kind: "component", type: ArdiumCalendarComponent, selector: "ard-calendar", inputs: ["color", "activeView", "activeYear", "activeMonth", "firstWeekday", "multipleYearPageChangeModifier", "autoFocus", "selected", "min", "max", "UTC", "filter"], outputs: ["activeViewChange", "activeYearChange", "activeMonthChange", "selectedChange", "yearSelect", "monthSelect"] }, { kind: "component", type: ArdiumIconButtonComponent, selector: "ard-icon-button", inputs: ["wrapperClasses", "type", "color", "lightColoring", "compact", "pointerEventsWhenDisabled"] }, { kind: "component", type: ArdiumIconComponent, selector: "ard-icon", inputs: ["ariaLabel", "icon", "filled", "weight", "grade", "opticalSize"] }, { kind: "directive", type: _CalendarTemplateRepositoryDirective, selector: "ard-calendar > ng-template[_ard-tmp-repository]", inputs: ["daysViewHeaderTmp", "yearsViewHeaderTmp", "monthsViewHeaderTmp", "weekdayTmp", "floatingMonthTmp", "yearTmp", "monthTmp", "dayTmp"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
7697
7748
|
}
|
|
7698
7749
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumDateInputComponent, decorators: [{
|
|
7699
7750
|
type: Component,
|
|
@@ -7707,7 +7758,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
7707
7758
|
provide: ARD_FORM_FIELD_CONTROL,
|
|
7708
7759
|
useExisting: ArdiumDateInputComponent,
|
|
7709
7760
|
},
|
|
7710
|
-
], template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-date-input\"\r\n #dropdownHost\r\n (click)=\"onGeneralClick($event)\"\r\n [class.ard-has-value]=\"!!value()\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-date-input__value-container ard-input-container\">\r\n <div\r\n class=\"ard-date-input__placeholder ard-placeholder\"\r\n [class.ard-date-input__placeholder-hidden]=\"!shouldDisplayPlaceholder()\"\r\n >\r\n {{ placeholder() }}\r\n </div>\r\n <div\r\n class=\"ard-date-input__value\"\r\n [class.ard-date-input__value-hidden]=\"!shouldDisplayValue()\"\r\n >\r\n <ng-template\r\n #defaultValueTemplate\r\n let-date\r\n >\r\n {{ serializeFn()(date) }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate()?.template || defaultValueTemplate\"\r\n [ngTemplateOutletContext]=\"valueContext()\"\r\n />\r\n </div>\r\n <div\r\n class=\"ard-date-input__input-container\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-owns]=\"isOpen() ? htmlId() : null\"\r\n [class.ard-date-input__input-container-hidden]=\"!shouldDisplayDateInput()\"\r\n >\r\n <input\r\n #dateInput\r\n #focusableElement\r\n type=\"text\"\r\n class=\"ard-date-input__input\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [value]=\"dateInputValue()\"\r\n [attr.aria-controls]=\"isOpen() ? htmlId() : null\"\r\n (input)=\"onDateInputInput($event)\"\r\n (change)=\"$event.stopPropagation()\"\r\n (focus)=\"onDateInputFocus($event)\"\r\n (blur)=\"onDateInputBlur($event)\"\r\n (keydown)=\"onDateInputEnter($event)\"\r\n />\r\n </div>\r\n </div>\r\n\r\n @if (!calendarHidden()) {\r\n <ard-icon-button\r\n color=\"none\"\r\n [disabled]=\"calendarDisabled()\"\r\n (click)=\"onCalendarButtonClick($event)\"\r\n >\r\n <ng-template\r\n #defaultCalendarIconTemplate\r\n let-date\r\n >\r\n <ard-icon filled>today</ard-icon>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"calendarIconTemplate()?.template || defaultCalendarIconTemplate\" />\r\n </ard-icon-button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #dropdownTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-date-input__dropdown-panel\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"true\"\r\n [panelId]=\"htmlId()\"\r\n [compact]=\"compact()\"\r\n (ardClickOutside)=\"onOutsideClick($event)\"\r\n >\r\n <ard-calendar\r\n class=\"ard-date-input__calendar\"\r\n [(activeMonth)]=\"activeMonth\"\r\n [(activeYear)]=\"activeYear\"\r\n [(activeView)]=\"activeView\"\r\n [firstWeekday]=\"firstWeekday()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [UTC]=\"_UTCAfterInit()\"\r\n autoFocus\r\n [multipleYearPageChangeModifier]=\"multipleYearPageChangeModifier()\"\r\n [color]=\"color()\"\r\n [disabled]=\"disabled() || calendarDisabled()\"\r\n [tabIndex]=\"tabIndex()\"\r\n [selected]=\"value()\"\r\n (selectedChange)=\"onCalendarSelectedChange($event)\"\r\n (yearSelect)=\"yearSelect.emit($event)\"\r\n (monthSelect)=\"monthSelect.emit($event)\"\r\n >\r\n <ng-template\r\n _ard-tmp-repository\r\n [daysViewHeaderTmp]=\"calendarDaysViewHeaderTemplate()\"\r\n [yearsViewHeaderTmp]=\"calendarYearsViewHeaderTemplate()\"\r\n [monthsViewHeaderTmp]=\"calendarMonthsViewHeaderTemplate()\"\r\n [weekdayTmp]=\"calendarWeekdayTemplate()\"\r\n [floatingMonthTmp]=\"calendarFloatingMonthTemplate()\"\r\n [yearTmp]=\"calendarYearTemplate()\"\r\n [monthTmp]=\"calendarMonthTemplate()\"\r\n [dayTmp]=\"calendarDayTemplate()\"\r\n />\r\n </ard-calendar>\r\n @if (useAcceptButtonToSelect()) {\r\n <div class=\"ard-date-input__accept-buttons-container\">\r\n <ng-template\r\n #defaultAcceptButtonsTemplate\r\n let-date\r\n >\r\n {{ serializeFn()(date) }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"acceptButtonsTemplate()?.template || defaultAcceptButtonsTemplate\"\r\n [ngTemplateOutletContext]=\"acceptButtonsContext()\"\r\n />\r\n </div>\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n", styles: [".ard-date-input .ard-date-input__placeholder.ard-date-input__placeholder-hidden,.ard-date-input .ard-date-input__value.ard-date-input__value-hidden{display:none}\n"] }]
|
|
7761
|
+
], template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-date-input\"\r\n #dropdownHost\r\n (click)=\"onGeneralClick($event)\"\r\n [class.ard-has-value]=\"!!value()\"\r\n [ngClass]=\"ngClasses()\"\r\n >\r\n <div class=\"ard-date-input__value-container ard-input-container\">\r\n <div\r\n class=\"ard-date-input__placeholder ard-placeholder\"\r\n [class.ard-date-input__placeholder-hidden]=\"!shouldDisplayPlaceholder()\"\r\n >\r\n {{ placeholder() }}\r\n </div>\r\n <div\r\n class=\"ard-date-input__value\"\r\n [class.ard-date-input__value-hidden]=\"!shouldDisplayValue()\"\r\n >\r\n <ng-template\r\n #defaultValueTemplate\r\n let-date\r\n >\r\n {{ serializeFn()(date) }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"valueTemplate()?.template || defaultValueTemplate\"\r\n [ngTemplateOutletContext]=\"valueContext()\"\r\n />\r\n </div>\r\n <div\r\n class=\"ard-date-input__input-container\"\r\n role=\"combobox\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-owns]=\"isOpen() ? htmlId() : null\"\r\n [class.ard-date-input__input-container-hidden]=\"!shouldDisplayDateInput()\"\r\n >\r\n <input\r\n #dateInput\r\n #focusableElement\r\n type=\"text\"\r\n class=\"ard-date-input__input\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [value]=\"dateInputValue()\"\r\n [attr.aria-controls]=\"isOpen() ? htmlId() : null\"\r\n (input)=\"onDateInputInput($event)\"\r\n (change)=\"$event.stopPropagation()\"\r\n (focus)=\"onDateInputFocus($event)\"\r\n (blur)=\"onDateInputBlur($event)\"\r\n (keydown)=\"onDateInputEnter($event)\"\r\n />\r\n </div>\r\n </div>\r\n\r\n @if (!calendarHidden()) {\r\n <ard-icon-button\r\n color=\"none\"\r\n [disabled]=\"calendarDisabled()\"\r\n (click)=\"onCalendarButtonClick($event)\"\r\n >\r\n <ng-template\r\n #defaultCalendarIconTemplate\r\n let-date\r\n >\r\n <ard-icon filled>today</ard-icon>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"calendarIconTemplate()?.template || defaultCalendarIconTemplate\" />\r\n </ard-icon-button>\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n\r\n<ng-template #dropdownTemplate>\r\n <ard-dropdown-panel\r\n class=\"ard-dropdown-panel ard-date-input__dropdown-panel\"\r\n [appearance]=\"dropdownAppearanceOrDefault()\"\r\n [variant]=\"dropdownVariantOrDefault()\"\r\n [isOpen]=\"true\"\r\n [panelId]=\"htmlId()\"\r\n [compact]=\"compact()\"\r\n (ardClickOutside)=\"onOutsideClick($event)\"\r\n >\r\n <ard-calendar\r\n class=\"ard-date-input__calendar\"\r\n [(activeMonth)]=\"activeMonth\"\r\n [(activeYear)]=\"activeYear\"\r\n [(activeView)]=\"activeView\"\r\n [firstWeekday]=\"firstWeekday()\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [UTC]=\"_UTCAfterInit()\"\r\n autoFocus\r\n [multipleYearPageChangeModifier]=\"multipleYearPageChangeModifier()\"\r\n [color]=\"color()\"\r\n [disabled]=\"disabled() || calendarDisabled()\"\r\n [tabIndex]=\"tabIndex()\"\r\n [selected]=\"value()\"\r\n (selectedChange)=\"onCalendarSelectedChange($event)\"\r\n (yearSelect)=\"yearSelect.emit($event)\"\r\n (monthSelect)=\"monthSelect.emit($event)\"\r\n >\r\n <ng-template\r\n _ard-tmp-repository\r\n [daysViewHeaderTmp]=\"calendarDaysViewHeaderTemplate()\"\r\n [yearsViewHeaderTmp]=\"calendarYearsViewHeaderTemplate()\"\r\n [monthsViewHeaderTmp]=\"calendarMonthsViewHeaderTemplate()\"\r\n [weekdayTmp]=\"calendarWeekdayTemplate()\"\r\n [floatingMonthTmp]=\"calendarFloatingMonthTemplate()\"\r\n [yearTmp]=\"calendarYearTemplate()\"\r\n [monthTmp]=\"calendarMonthTemplate()\"\r\n [dayTmp]=\"calendarDayTemplate()\"\r\n />\r\n </ard-calendar>\r\n @if (useAcceptButtonToSelect()) {\r\n <div class=\"ard-date-input__accept-buttons-container\">\r\n <ng-template\r\n #defaultAcceptButtonsTemplate\r\n let-date\r\n >\r\n {{ serializeFn()(date) }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"acceptButtonsTemplate()?.template || defaultAcceptButtonsTemplate\"\r\n [ngTemplateOutletContext]=\"acceptButtonsContext()\"\r\n />\r\n </div>\r\n }\r\n </ard-dropdown-panel>\r\n</ng-template>\r\n", styles: [".ard-date-input .ard-date-input__placeholder.ard-date-input__placeholder-hidden,.ard-date-input .ard-date-input__value.ard-date-input__value-hidden{display:none}\n"] }]
|
|
7711
7762
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
7712
7763
|
type: Inject,
|
|
7713
7764
|
args: [ARD_DATE_INPUT_DEFAULTS]
|
|
@@ -8063,6 +8114,7 @@ class ArdiumHexInputComponent extends _FormFieldComponentBase {
|
|
|
8063
8114
|
this.maxDigits = input(this._DEFAULTS.maxDigits, {
|
|
8064
8115
|
transform: v => coerceNumberProperty(v, this._DEFAULTS.maxDigits),
|
|
8065
8116
|
});
|
|
8117
|
+
this.maxDigitsAsInt = computed(() => this.maxDigits() ?? 2_147_483_647);
|
|
8066
8118
|
this.hideHash = input(this._DEFAULTS.hideHash, { transform: v => coerceBooleanProperty(v) });
|
|
8067
8119
|
this.showHash = computed(() => !this.hideHash());
|
|
8068
8120
|
//! clear button
|
|
@@ -8184,7 +8236,7 @@ class ArdiumHexInputComponent extends _FormFieldComponentBase {
|
|
|
8184
8236
|
provide: ARD_FORM_FIELD_CONTROL,
|
|
8185
8237
|
useExisting: forwardRef(() => ArdiumHexInputComponent),
|
|
8186
8238
|
},
|
|
8187
|
-
], queries: [{ propertyName: "prefixTemplate", first: true, predicate: ArdHexInputPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdHexInputSuffixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "placeholderTemplate", first: true, predicate: ArdHexInputPlaceholderTemplateDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "textInputEl", first: true, predicate: ["textInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [isFocused]=\"isFocused()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-hex-input\"\r\n [class.ard-has-value]=\"value\"\r\n (mouseup)=\"onMouseup()\"\r\n >\r\n @if (showHash()) {\r\n <div class=\"ard-hash-container\">#</div>\r\n }\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value, $event)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (change)=\"onChange($event)\"\r\n (mouseup)=\"$event.stopPropagation()\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n", styles: [".ard-input-container{position:relative}.ard-placeholder{position:absolute;left:0;right:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: ["hasError", "isSuccess", "isFocused", "appearance", "variant", "compact", "prefixTemplate", "suffixTemplate"] }, { kind: "component", type: _ClearButtonComponent, selector: "ard-clear-button" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
8239
|
+
], queries: [{ propertyName: "prefixTemplate", first: true, predicate: ArdHexInputPrefixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "suffixTemplate", first: true, predicate: ArdHexInputSuffixTemplateDirective, descendants: true, isSignal: true }, { propertyName: "placeholderTemplate", first: true, predicate: ArdHexInputPlaceholderTemplateDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "textInputEl", first: true, predicate: ["textInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-hex-input\"\r\n [class.ard-has-value]=\"value\"\r\n (mouseup)=\"onMouseup()\"\r\n >\r\n @if (showHash()) {\r\n <div class=\"ard-hash-container\">#</div>\r\n }\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n [maxLength]=\"maxDigitsAsInt()\"\r\n (input)=\"onInput(textInput.value, $event)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (change)=\"onChange($event)\"\r\n (mouseup)=\"$event.stopPropagation()\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n", styles: [".ard-input-container{position:relative}.ard-placeholder{position:absolute;left:0;right:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ArdiumFormFieldFrameComponent, selector: "ard-form-field-frame", inputs: ["hasError", "isSuccess", "isFocused", "appearance", "variant", "compact", "prefixTemplate", "suffixTemplate"] }, { kind: "component", type: _ClearButtonComponent, selector: "ard-clear-button" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
8188
8240
|
}
|
|
8189
8241
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumHexInputComponent, decorators: [{
|
|
8190
8242
|
type: Component,
|
|
@@ -8198,7 +8250,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
8198
8250
|
provide: ARD_FORM_FIELD_CONTROL,
|
|
8199
8251
|
useExisting: forwardRef(() => ArdiumHexInputComponent),
|
|
8200
8252
|
},
|
|
8201
|
-
], template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [isFocused]=\"isFocused()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-hex-input\"\r\n [class.ard-has-value]=\"value\"\r\n (mouseup)=\"onMouseup()\"\r\n >\r\n @if (showHash()) {\r\n <div class=\"ard-hash-container\">#</div>\r\n }\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n (input)=\"onInput(textInput.value, $event)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (change)=\"onChange($event)\"\r\n (mouseup)=\"$event.stopPropagation()\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n", styles: [".ard-input-container{position:relative}.ard-placeholder{position:absolute;left:0;right:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;pointer-events:none}\n"] }]
|
|
8253
|
+
], template: "<ard-form-field-frame\r\n [appearance]=\"appearance()\"\r\n [variant]=\"variant()\"\r\n [compact]=\"compact()\"\r\n [hasError]=\"hasError()\"\r\n [isSuccess]=\"isSuccess()\"\r\n [readonly]=\"readonly()\"\r\n [isFocused]=\"isFocused()\"\r\n [prefixTemplate]=\"prefixTemplate()?.template\"\r\n [suffixTemplate]=\"suffixTemplate()?.template\"\r\n>\r\n <div\r\n class=\"ard-hex-input\"\r\n [class.ard-has-value]=\"value\"\r\n (mouseup)=\"onMouseup()\"\r\n >\r\n @if (showHash()) {\r\n <div class=\"ard-hash-container\">#</div>\r\n }\r\n <div class=\"ard-input-container\">\r\n @if (shouldDisplayPlaceholder()) {\r\n <ng-template #defaultPlaceholderTemplate>\r\n <div class=\"ard-placeholder\">{{ placeholder() }}</div>\r\n </ng-template>\r\n\r\n <ng-template [ngTemplateOutlet]=\"placeholderTemplate()?.template || defaultPlaceholderTemplate\"></ng-template>\r\n }\r\n\r\n <input\r\n #textInput\r\n #focusableElement\r\n type=\"text\"\r\n [attr.id]=\"inputId()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n [readonly]=\"readonly()\"\r\n [disabled]=\"disabled()\"\r\n [maxLength]=\"maxDigitsAsInt()\"\r\n (input)=\"onInput(textInput.value, $event)\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n (change)=\"onChange($event)\"\r\n (mouseup)=\"$event.stopPropagation()\"\r\n (copy)=\"onCopy($event)\"\r\n />\r\n </div>\r\n\r\n @if (shouldShowClearButton()) {\r\n <ard-clear-button\r\n [title]=\"clearButtonTitle()\"\r\n (click)=\"onClearButtonClick($event)\"\r\n />\r\n }\r\n </div>\r\n</ard-form-field-frame>\r\n", styles: [".ard-input-container{position:relative}.ard-placeholder{position:absolute;left:0;right:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;pointer-events:none}\n"] }]
|
|
8202
8254
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
8203
8255
|
type: Inject,
|
|
8204
8256
|
args: [ARD_HEX_INPUT_DEFAULTS]
|
|
@@ -8249,6 +8301,7 @@ const _numberInputDefaults = {
|
|
|
8249
8301
|
allowFloat: false,
|
|
8250
8302
|
noButtons: false,
|
|
8251
8303
|
stepSize: 1,
|
|
8304
|
+
keepFocusOnQuickChangeButton: true,
|
|
8252
8305
|
};
|
|
8253
8306
|
const ARD_NUMBER_INPUT_DEFAULTS = new InjectionToken('ard-number-input-defaults', {
|
|
8254
8307
|
factory: () => ({
|
|
@@ -8280,14 +8333,14 @@ class ArdiumNumberInputComponent extends _FormFieldComponentBase {
|
|
|
8280
8333
|
this._wasViewInit = false;
|
|
8281
8334
|
this.inputId = input();
|
|
8282
8335
|
//! placeholder
|
|
8283
|
-
this.placeholder = input();
|
|
8336
|
+
this.placeholder = input(this._DEFAULTS.placeholder);
|
|
8284
8337
|
this.placeholderTemplate = contentChild(ArdNumberInputPlaceholderTemplateDirective);
|
|
8285
8338
|
this.shouldDisplayPlaceholder = computed(() => !!this.placeholder() && !this.inputModel.stringValue());
|
|
8286
8339
|
//! appearance
|
|
8287
|
-
this.appearance = input(
|
|
8288
|
-
this.variant = input(
|
|
8289
|
-
this.alignText = input(
|
|
8290
|
-
this.compact = input(
|
|
8340
|
+
this.appearance = input(this._DEFAULTS.appearance);
|
|
8341
|
+
this.variant = input(this._DEFAULTS.variant);
|
|
8342
|
+
this.alignText = input(this._DEFAULTS.alignText);
|
|
8343
|
+
this.compact = input(this._DEFAULTS.compact, { transform: v => coerceBooleanProperty(v) });
|
|
8291
8344
|
this.ngClasses = computed(() => {
|
|
8292
8345
|
return [
|
|
8293
8346
|
`ard-appearance-${this.appearance()}`,
|
|
@@ -8315,7 +8368,7 @@ class ArdiumNumberInputComponent extends _FormFieldComponentBase {
|
|
|
8315
8368
|
//! other inputs
|
|
8316
8369
|
this.inputAttrs = input({});
|
|
8317
8370
|
//! value two-way binding
|
|
8318
|
-
this._valueBeforeInit =
|
|
8371
|
+
this._valueBeforeInit = null;
|
|
8319
8372
|
this.valueChange = output();
|
|
8320
8373
|
//! event emitters
|
|
8321
8374
|
this.inputEvent = output({ alias: 'input' });
|
|
@@ -8323,13 +8376,15 @@ class ArdiumNumberInputComponent extends _FormFieldComponentBase {
|
|
|
8323
8376
|
this.clearEvent = output({ alias: 'clear' });
|
|
8324
8377
|
this.quickChangeEvent = output({ alias: 'quickChange' });
|
|
8325
8378
|
//! min/max and number type
|
|
8326
|
-
this.min = input(
|
|
8327
|
-
this.max = input(
|
|
8328
|
-
this.allowFloat = input(
|
|
8379
|
+
this.min = input(this._DEFAULTS.min, { transform: v => coerceNumberProperty(v, this._DEFAULTS.min) });
|
|
8380
|
+
this.max = input(this._DEFAULTS.max, { transform: v => coerceNumberProperty(v, this._DEFAULTS.max) });
|
|
8381
|
+
this.allowFloat = input(this._DEFAULTS.allowFloat, { transform: v => coerceBooleanProperty(v) });
|
|
8329
8382
|
//! incerement/decrement buttons
|
|
8330
|
-
this.noButtons = input(
|
|
8331
|
-
this.keepFocusOnQuickChangeButton = input(
|
|
8332
|
-
|
|
8383
|
+
this.noButtons = input(this._DEFAULTS.noButtons, { transform: v => coerceBooleanProperty(v) });
|
|
8384
|
+
this.keepFocusOnQuickChangeButton = input(this._DEFAULTS.keepFocusOnQuickChangeButton, {
|
|
8385
|
+
transform: v => coerceBooleanProperty(v),
|
|
8386
|
+
});
|
|
8387
|
+
this.stepSize = input(this._DEFAULTS.stepSize, {
|
|
8333
8388
|
transform: v => {
|
|
8334
8389
|
const newValue = coerceNumberProperty(v, 1);
|
|
8335
8390
|
if (newValue === 0)
|
|
@@ -8339,11 +8394,11 @@ class ArdiumNumberInputComponent extends _FormFieldComponentBase {
|
|
|
8339
8394
|
return newValue;
|
|
8340
8395
|
},
|
|
8341
8396
|
});
|
|
8342
|
-
effect(() => {
|
|
8343
|
-
|
|
8344
|
-
|
|
8345
|
-
|
|
8346
|
-
});
|
|
8397
|
+
// effect(() => {
|
|
8398
|
+
// const v = this.inputModel.numberValue();
|
|
8399
|
+
// this.valueChange.emit(v);
|
|
8400
|
+
// this._onChangeRegistered?.(v);
|
|
8401
|
+
// });
|
|
8347
8402
|
}
|
|
8348
8403
|
ngAfterViewInit() {
|
|
8349
8404
|
this._setInputAttributes();
|
|
@@ -8437,6 +8492,7 @@ class ArdiumNumberInputComponent extends _FormFieldComponentBase {
|
|
|
8437
8492
|
_emitChange() {
|
|
8438
8493
|
const v = this.inputModel.numberValue();
|
|
8439
8494
|
this.changeEvent.emit(v);
|
|
8495
|
+
this._onChangeRegistered?.(v);
|
|
8440
8496
|
}
|
|
8441
8497
|
//smart focus
|
|
8442
8498
|
onMouseup() {
|
|
@@ -8538,7 +8594,7 @@ class ArdiumFabComponent extends _ButtonBase {
|
|
|
8538
8594
|
super(defaults);
|
|
8539
8595
|
//! appearance
|
|
8540
8596
|
this.size = input(FabSize.Standard);
|
|
8541
|
-
// readonly extended = input<boolean,
|
|
8597
|
+
// readonly extended = input<boolean, BooleanLike>(false, { transform: v => coerceBooleanProperty(v) });
|
|
8542
8598
|
this.ngClasses = computed(() => [
|
|
8543
8599
|
`ard-appearance-${this.appearance()}`,
|
|
8544
8600
|
`ard-color-${this.color()}`,
|
|
@@ -9029,46 +9085,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
9029
9085
|
class SimpleItemStorage {
|
|
9030
9086
|
constructor(_ardParentComp) {
|
|
9031
9087
|
this._ardParentComp = _ardParentComp;
|
|
9032
|
-
this._items =
|
|
9033
|
-
this._highlightedItems = signal([]);
|
|
9034
|
-
this._selectedItems = signal([]);
|
|
9088
|
+
this._items = arraySignal([]);
|
|
9035
9089
|
/**
|
|
9036
9090
|
* Gets all items.
|
|
9037
9091
|
*/
|
|
9038
|
-
this.items = this._items
|
|
9092
|
+
this.items = computed(() => [...this._items()]);
|
|
9039
9093
|
/**
|
|
9040
|
-
* Gets all currently
|
|
9094
|
+
* Gets all currently selected items.
|
|
9041
9095
|
*/
|
|
9042
|
-
this.
|
|
9096
|
+
this.selectedItems = computed(() => this.items().filter(item => item.selected));
|
|
9043
9097
|
/**
|
|
9044
|
-
* Gets all currently
|
|
9098
|
+
* Gets all currently highlighted items.
|
|
9045
9099
|
*/
|
|
9046
|
-
this.
|
|
9100
|
+
this.highlightedItems = computed(() => this.items().filter(item => item.highlighted));
|
|
9047
9101
|
/**
|
|
9048
9102
|
* Gets the values of the currently selected items.
|
|
9049
9103
|
*/
|
|
9050
|
-
this.value = computed(() => this._itemsToValue(this.
|
|
9104
|
+
this.value = computed(() => this._itemsToValue(this.selectedItems()));
|
|
9051
9105
|
/**
|
|
9052
9106
|
* Returns true if at least one item is highlighted, otherwise false.
|
|
9053
9107
|
*/
|
|
9054
|
-
this.isAnyItemHighlighted = computed(() => this.
|
|
9108
|
+
this.isAnyItemHighlighted = computed(() => this.highlightedItems().length > 0);
|
|
9109
|
+
/**
|
|
9110
|
+
* Finds all highlightable items. An item is considered highlightable if it is **not** disabled.
|
|
9111
|
+
* @returns An array of all highlightable items.
|
|
9112
|
+
*/
|
|
9113
|
+
this._highlightableItems = computed(() => this.items().filter(item => !item.disabled && (this.isItemLimitReached() ? item.selected : true)));
|
|
9114
|
+
this.itemsLeftUntilLimit = computed(() => this._ardParentComp.multiselectable() && isDefined(this._ardParentComp.maxSelectedItems())
|
|
9115
|
+
? this._ardParentComp.maxSelectedItems() - this.selectedItems().length
|
|
9116
|
+
: 1);
|
|
9055
9117
|
/**
|
|
9056
9118
|
* Returns true if the parent component defines the limit of concurrently selectable items and the amount of currently selected items matches that limit. Otherwise returns false.
|
|
9057
9119
|
*
|
|
9058
9120
|
* **TLDR**: true if `maxSelectedItems` is defined and the number of selected items matches that value.
|
|
9059
9121
|
*/
|
|
9060
|
-
this.isItemLimitReached = computed(() =>
|
|
9061
|
-
|
|
9062
|
-
|
|
9063
|
-
return false;
|
|
9064
|
-
}
|
|
9065
|
-
return msi <= this.selectedItems().length;
|
|
9066
|
-
});
|
|
9067
|
-
/**
|
|
9068
|
-
* Finds all highlightable items. An item is considered highlightable if it is **not** disabled.
|
|
9069
|
-
* @returns An array of all highlightable items.
|
|
9070
|
-
*/
|
|
9071
|
-
this.highlightableItems = computed(() => this._items().filter(item => !item.disabled()));
|
|
9122
|
+
this.isItemLimitReached = computed(() => this.itemsLeftUntilLimit() <= 0);
|
|
9123
|
+
this._areItemsInitialized = false;
|
|
9124
|
+
this._valueBeforeItemsSet = null;
|
|
9072
9125
|
}
|
|
9073
9126
|
/**
|
|
9074
9127
|
* Maps an array of items into their values.
|
|
@@ -9076,7 +9129,21 @@ class SimpleItemStorage {
|
|
|
9076
9129
|
* @returns An array of item values.
|
|
9077
9130
|
*/
|
|
9078
9131
|
_itemsToValue(items) {
|
|
9079
|
-
return items.map(item => item.value
|
|
9132
|
+
return items.map(item => item.value);
|
|
9133
|
+
}
|
|
9134
|
+
_updateItems(updateFn) {
|
|
9135
|
+
this._items.map(updateFn);
|
|
9136
|
+
}
|
|
9137
|
+
_updateItemsFromArray(updateFn, itemsToUpdate) {
|
|
9138
|
+
this._items.update(items => {
|
|
9139
|
+
for (const itemToUpdate of itemsToUpdate) {
|
|
9140
|
+
const item = items[itemToUpdate.index];
|
|
9141
|
+
if (item) {
|
|
9142
|
+
items[itemToUpdate.index] = updateFn(item);
|
|
9143
|
+
}
|
|
9144
|
+
}
|
|
9145
|
+
return items;
|
|
9146
|
+
});
|
|
9080
9147
|
}
|
|
9081
9148
|
/**
|
|
9082
9149
|
* Sets the component's items. Takes into account the values defined by the parent component for `valueFrom`, `labelFrom`, and `disabledFrom`.
|
|
@@ -9084,6 +9151,7 @@ class SimpleItemStorage {
|
|
|
9084
9151
|
* @returns true if at least one of the items is of primitive type, otherwise false.
|
|
9085
9152
|
*/
|
|
9086
9153
|
setItems(items) {
|
|
9154
|
+
this._areItemsInitialized = true;
|
|
9087
9155
|
let areItemsPrimitive = false;
|
|
9088
9156
|
if (items.some(isPrimitive)) {
|
|
9089
9157
|
items = items.map(this._primitiveItemsMapFn);
|
|
@@ -9092,6 +9160,10 @@ class SimpleItemStorage {
|
|
|
9092
9160
|
this._items.set(items.map((item, index) => {
|
|
9093
9161
|
return this._setItemsMapFn(item, index, areItemsPrimitive);
|
|
9094
9162
|
}));
|
|
9163
|
+
if (this._valueBeforeItemsSet !== null) {
|
|
9164
|
+
this.writeValue(this._valueBeforeItemsSet);
|
|
9165
|
+
this._valueBeforeItemsSet = null;
|
|
9166
|
+
}
|
|
9095
9167
|
}
|
|
9096
9168
|
_primitiveItemsMapFn(item) {
|
|
9097
9169
|
return { value: item };
|
|
@@ -9099,13 +9171,13 @@ class SimpleItemStorage {
|
|
|
9099
9171
|
_setItemsMapFn(rawItemData, index, areItemsPrimitive) {
|
|
9100
9172
|
if (areItemsPrimitive) {
|
|
9101
9173
|
return {
|
|
9102
|
-
itemData:
|
|
9174
|
+
itemData: rawItemData,
|
|
9103
9175
|
index: index,
|
|
9104
|
-
value:
|
|
9105
|
-
label:
|
|
9106
|
-
disabled:
|
|
9107
|
-
selected:
|
|
9108
|
-
highlighted:
|
|
9176
|
+
value: rawItemData.value,
|
|
9177
|
+
label: rawItemData.value?.toString?.() ?? String(rawItemData.value),
|
|
9178
|
+
disabled: false,
|
|
9179
|
+
selected: false,
|
|
9180
|
+
highlighted: false,
|
|
9109
9181
|
};
|
|
9110
9182
|
}
|
|
9111
9183
|
//get value
|
|
@@ -9122,13 +9194,13 @@ class SimpleItemStorage {
|
|
|
9122
9194
|
}
|
|
9123
9195
|
//return
|
|
9124
9196
|
return {
|
|
9125
|
-
itemData:
|
|
9197
|
+
itemData: rawItemData,
|
|
9126
9198
|
index: index,
|
|
9127
|
-
value:
|
|
9128
|
-
label:
|
|
9129
|
-
disabled:
|
|
9130
|
-
selected:
|
|
9131
|
-
highlighted:
|
|
9199
|
+
value: value,
|
|
9200
|
+
label: label?.toString?.() ?? String(label),
|
|
9201
|
+
disabled: disabled,
|
|
9202
|
+
selected: false,
|
|
9203
|
+
highlighted: false,
|
|
9132
9204
|
};
|
|
9133
9205
|
}
|
|
9134
9206
|
/**
|
|
@@ -9136,6 +9208,10 @@ class SimpleItemStorage {
|
|
|
9136
9208
|
* @param ngModel The value of the ngModel to set.
|
|
9137
9209
|
*/
|
|
9138
9210
|
writeValue(ngModel) {
|
|
9211
|
+
if (!this._areItemsInitialized) {
|
|
9212
|
+
this._valueBeforeItemsSet = ngModel;
|
|
9213
|
+
return;
|
|
9214
|
+
}
|
|
9139
9215
|
this._forceUnselectAll();
|
|
9140
9216
|
if (!this._validateWriteValue(ngModel))
|
|
9141
9217
|
return;
|
|
@@ -9201,12 +9277,12 @@ class SimpleItemStorage {
|
|
|
9201
9277
|
let findBy;
|
|
9202
9278
|
const cmpFn = this._ardParentComp.compareWith();
|
|
9203
9279
|
if (isDefined(cmpFn)) {
|
|
9204
|
-
findBy = item => cmpFn(valueToFind, item.value
|
|
9280
|
+
findBy = item => cmpFn(valueToFind, item.value);
|
|
9205
9281
|
}
|
|
9206
9282
|
else {
|
|
9207
|
-
findBy = item => item.value
|
|
9283
|
+
findBy = item => item.value === valueToFind;
|
|
9208
9284
|
}
|
|
9209
|
-
return this.
|
|
9285
|
+
return this.items().find(item => findBy(item));
|
|
9210
9286
|
}
|
|
9211
9287
|
/**
|
|
9212
9288
|
* Unselects all selected items.
|
|
@@ -9215,27 +9291,15 @@ class SimpleItemStorage {
|
|
|
9215
9291
|
* @returns An array of items cleared, mapped to only their values.
|
|
9216
9292
|
*/
|
|
9217
9293
|
unselectAll() {
|
|
9218
|
-
|
|
9219
|
-
item.selected.set(false);
|
|
9220
|
-
}
|
|
9221
|
-
const ret = this.value();
|
|
9222
|
-
if (this._ardParentComp.isValueRequired() && this._selectedItems().length > 0) {
|
|
9223
|
-
this._selectedItems().first().selected.set(true);
|
|
9224
|
-
ret.splice(0, 1);
|
|
9225
|
-
}
|
|
9226
|
-
this._selectedItems.set([]);
|
|
9227
|
-
return ret;
|
|
9294
|
+
return this.unselectItem(...this.selectedItems());
|
|
9228
9295
|
}
|
|
9229
9296
|
/**
|
|
9230
9297
|
* Unselects all selected items, no matter what the component settings are.
|
|
9231
9298
|
* @returns An array of items cleared, mapped to only their values.
|
|
9232
9299
|
*/
|
|
9233
9300
|
_forceUnselectAll() {
|
|
9234
|
-
|
|
9235
|
-
|
|
9236
|
-
}
|
|
9237
|
-
const ret = this._itemsToValue(this._selectedItems());
|
|
9238
|
-
this._selectedItems.set([]);
|
|
9301
|
+
const ret = this.value();
|
|
9302
|
+
this._updateItems(item => ({ ...item, selected: false }));
|
|
9239
9303
|
return ret;
|
|
9240
9304
|
}
|
|
9241
9305
|
/**
|
|
@@ -9252,25 +9316,31 @@ class SimpleItemStorage {
|
|
|
9252
9316
|
if (this.isItemLimitReached()) {
|
|
9253
9317
|
return [[], [], this._itemsToValue(items)];
|
|
9254
9318
|
}
|
|
9255
|
-
|
|
9256
|
-
if (!this._ardParentComp.multiselectable()) {
|
|
9257
|
-
unselected = this._forceUnselectAll();
|
|
9258
|
-
}
|
|
9319
|
+
const itemsLeftUntilLimit = this.itemsLeftUntilLimit();
|
|
9259
9320
|
let itemsSelectedCount = 0;
|
|
9260
|
-
const
|
|
9321
|
+
const newItemsArray = [...this.items()];
|
|
9261
9322
|
for (const item of items) {
|
|
9262
9323
|
itemsSelectedCount++;
|
|
9263
|
-
if (item.selected
|
|
9324
|
+
if (item.selected)
|
|
9264
9325
|
continue;
|
|
9265
|
-
if (
|
|
9326
|
+
if (itemsSelectedCount > itemsLeftUntilLimit) {
|
|
9266
9327
|
break;
|
|
9267
9328
|
}
|
|
9268
|
-
item.selected
|
|
9269
|
-
itemsSelected.push(item);
|
|
9329
|
+
newItemsArray[item.index] = { ...item, selected: true };
|
|
9270
9330
|
}
|
|
9271
|
-
this.
|
|
9272
|
-
|
|
9273
|
-
|
|
9331
|
+
const itemsUnselected = this._ardParentComp.multiselectable()
|
|
9332
|
+
? []
|
|
9333
|
+
: this.selectedItems().filter(item => !items.find(v => v.value === item.value));
|
|
9334
|
+
for (const item of itemsUnselected) {
|
|
9335
|
+
newItemsArray[item.index] = { ...item, selected: false };
|
|
9336
|
+
}
|
|
9337
|
+
const itemsSelected = items.slice(0, itemsSelectedCount);
|
|
9338
|
+
const itemsFailedToSelect = items.slice(itemsSelectedCount);
|
|
9339
|
+
const isAnyNewItemToBeSelected = !!itemsSelected.find(item => !this.selectedItems().find(v => v.value === item.value));
|
|
9340
|
+
if (isAnyNewItemToBeSelected) {
|
|
9341
|
+
this._items.set(newItemsArray);
|
|
9342
|
+
}
|
|
9343
|
+
return [this._itemsToValue(itemsSelected), this._itemsToValue(itemsUnselected), this._itemsToValue(itemsFailedToSelect)];
|
|
9274
9344
|
}
|
|
9275
9345
|
/**
|
|
9276
9346
|
*
|
|
@@ -9278,27 +9348,28 @@ class SimpleItemStorage {
|
|
|
9278
9348
|
* @returns An array of items unselected, mapped to only their values.
|
|
9279
9349
|
*/
|
|
9280
9350
|
unselectItem(...items) {
|
|
9281
|
-
let
|
|
9282
|
-
|
|
9283
|
-
|
|
9284
|
-
|
|
9285
|
-
|
|
9351
|
+
let shouldKeepFirstSelected = this._ardParentComp.isValueRequired();
|
|
9352
|
+
const unselectedItems = [];
|
|
9353
|
+
this._updateItemsFromArray(item => {
|
|
9354
|
+
if (item.selected && shouldKeepFirstSelected) {
|
|
9355
|
+
shouldKeepFirstSelected = false;
|
|
9356
|
+
return item;
|
|
9286
9357
|
}
|
|
9287
|
-
if (
|
|
9288
|
-
|
|
9289
|
-
|
|
9290
|
-
|
|
9291
|
-
|
|
9292
|
-
|
|
9358
|
+
if (item.selected) {
|
|
9359
|
+
unselectedItems.push(item);
|
|
9360
|
+
}
|
|
9361
|
+
return {
|
|
9362
|
+
...item,
|
|
9363
|
+
selected: false,
|
|
9364
|
+
};
|
|
9365
|
+
}, items);
|
|
9366
|
+
return this._itemsToValue(unselectedItems);
|
|
9293
9367
|
}
|
|
9294
9368
|
/**
|
|
9295
9369
|
* Unhighlights all currently highlighted items.
|
|
9296
9370
|
*/
|
|
9297
9371
|
unhighlightAll() {
|
|
9298
|
-
|
|
9299
|
-
item.highlighted.set(false);
|
|
9300
|
-
}
|
|
9301
|
-
this._highlightedItems.set([]);
|
|
9372
|
+
this._updateItems(item => ({ ...item, highlighted: false }));
|
|
9302
9373
|
}
|
|
9303
9374
|
/**
|
|
9304
9375
|
* Highlights the given item, while unhighlighting all other items. Does nothing when the item is disabled.
|
|
@@ -9306,7 +9377,7 @@ class SimpleItemStorage {
|
|
|
9306
9377
|
* @returns The highlighted item.
|
|
9307
9378
|
*/
|
|
9308
9379
|
highlightSingleItem(item) {
|
|
9309
|
-
if (!item || item.disabled
|
|
9380
|
+
if (!item || item.disabled)
|
|
9310
9381
|
return null;
|
|
9311
9382
|
this.unhighlightAll();
|
|
9312
9383
|
return this.highlightItem(item);
|
|
@@ -9317,10 +9388,7 @@ class SimpleItemStorage {
|
|
|
9317
9388
|
* @returns The last highlighted item.
|
|
9318
9389
|
*/
|
|
9319
9390
|
highlightItem(...items) {
|
|
9320
|
-
|
|
9321
|
-
item.highlighted.set(true);
|
|
9322
|
-
}
|
|
9323
|
-
this._highlightedItems.update(v => [...v, ...items]);
|
|
9391
|
+
this._updateItemsFromArray(item => ({ ...item, highlighted: true }), items);
|
|
9324
9392
|
return items.last();
|
|
9325
9393
|
}
|
|
9326
9394
|
/**
|
|
@@ -9328,12 +9396,7 @@ class SimpleItemStorage {
|
|
|
9328
9396
|
* @param items A rest operator array of items to be unhighlighted.
|
|
9329
9397
|
*/
|
|
9330
9398
|
unhighlightItem(...items) {
|
|
9331
|
-
|
|
9332
|
-
if (!item || !item.highlighted())
|
|
9333
|
-
return;
|
|
9334
|
-
item.highlighted.set(false);
|
|
9335
|
-
}
|
|
9336
|
-
this._highlightedItems.update(v => v.filter(v => v.highlighted()));
|
|
9399
|
+
this._updateItemsFromArray(item => ({ ...item, highlighted: false }), items);
|
|
9337
9400
|
}
|
|
9338
9401
|
/**
|
|
9339
9402
|
* Highlights the first item out of all items.
|
|
@@ -9341,7 +9404,7 @@ class SimpleItemStorage {
|
|
|
9341
9404
|
*/
|
|
9342
9405
|
highlightFirstItem() {
|
|
9343
9406
|
this.unhighlightAll();
|
|
9344
|
-
const itemToHighlight = this.
|
|
9407
|
+
const itemToHighlight = this._highlightableItems().first();
|
|
9345
9408
|
return this.highlightItem(itemToHighlight);
|
|
9346
9409
|
}
|
|
9347
9410
|
/**
|
|
@@ -9350,14 +9413,14 @@ class SimpleItemStorage {
|
|
|
9350
9413
|
*/
|
|
9351
9414
|
highlightLastItem() {
|
|
9352
9415
|
this.unhighlightAll();
|
|
9353
|
-
const itemToHighlight = this.
|
|
9416
|
+
const itemToHighlight = this._highlightableItems().last();
|
|
9354
9417
|
return this.highlightItem(itemToHighlight);
|
|
9355
9418
|
}
|
|
9356
9419
|
/**
|
|
9357
9420
|
* Highlights all non-disabled items.
|
|
9358
9421
|
*/
|
|
9359
9422
|
highlightAllItems() {
|
|
9360
|
-
const itemsToHighlight = this.
|
|
9423
|
+
const itemsToHighlight = this._highlightableItems();
|
|
9361
9424
|
this.highlightItem(...itemsToHighlight);
|
|
9362
9425
|
}
|
|
9363
9426
|
/**
|
|
@@ -9373,7 +9436,7 @@ class SimpleItemStorage {
|
|
|
9373
9436
|
return this.highlightFirstItem();
|
|
9374
9437
|
}
|
|
9375
9438
|
const currentItem = this.highlightedItems().last();
|
|
9376
|
-
const itemsWithoutDisabled = this._items().filter(item => !item.disabled
|
|
9439
|
+
const itemsWithoutDisabled = this._items().filter(item => !item.disabled && (!this.isItemLimitReached() || item.selected));
|
|
9377
9440
|
const currentIndexInItems = itemsWithoutDisabled.findIndex(item => item.index === currentItem.index);
|
|
9378
9441
|
let nextItemIndex = currentIndexInItems + offset;
|
|
9379
9442
|
if (nextItemIndex >= itemsWithoutDisabled.length) {
|
|
@@ -9384,7 +9447,7 @@ class SimpleItemStorage {
|
|
|
9384
9447
|
}
|
|
9385
9448
|
const itemToHighlight = itemsWithoutDisabled[nextItemIndex];
|
|
9386
9449
|
if (hasShift && this._ardParentComp.multiselectable()) {
|
|
9387
|
-
if (itemToHighlight.highlighted
|
|
9450
|
+
if (itemToHighlight.highlighted) {
|
|
9388
9451
|
this.unhighlightItem(currentItem);
|
|
9389
9452
|
}
|
|
9390
9453
|
return this.highlightItem(itemToHighlight);
|
|
@@ -9417,13 +9480,17 @@ class _SelectableListComponentBase extends _FormFieldComponentBase {
|
|
|
9417
9480
|
this.disabledFrom = input(this._DEFAULTS.disabledFrom);
|
|
9418
9481
|
this.compareWith = input(this._DEFAULTS.compareWith);
|
|
9419
9482
|
//! multiselectable
|
|
9420
|
-
this.multiselectable = input(this._DEFAULTS.multiselectable, {
|
|
9483
|
+
this.multiselectable = input(this._DEFAULTS.multiselectable, {
|
|
9484
|
+
transform: v => coerceBooleanProperty(v),
|
|
9485
|
+
});
|
|
9421
9486
|
this.singleselectable = computed(() => !this.multiselectable());
|
|
9422
9487
|
//! require value
|
|
9423
9488
|
this.requireValue = input(this._DEFAULTS.requireValue, { transform: v => coerceBooleanProperty(v) });
|
|
9424
9489
|
this.isValueRequired = computed(() => this.requireValue() || !this.multiselectable());
|
|
9425
9490
|
//! coerced properties
|
|
9426
|
-
this.invertDisabled = input(this._DEFAULTS.invertDisabled, {
|
|
9491
|
+
this.invertDisabled = input(this._DEFAULTS.invertDisabled, {
|
|
9492
|
+
transform: v => coerceBooleanProperty(v),
|
|
9493
|
+
});
|
|
9427
9494
|
this.maxSelectedItems = input(this._DEFAULTS.maxSelectedItems, {
|
|
9428
9495
|
transform: v => coerceNumberProperty(v, undefined),
|
|
9429
9496
|
});
|
|
@@ -9435,9 +9502,20 @@ class _SelectableListComponentBase extends _FormFieldComponentBase {
|
|
|
9435
9502
|
this.highlightedItems = computed(() => this.itemStorage.highlightedItems());
|
|
9436
9503
|
this.firstHighlightedItem = computed(() => this.highlightedItems()?.first());
|
|
9437
9504
|
this.isItemLimitReached = computed(() => this.itemStorage.isItemLimitReached());
|
|
9505
|
+
//! context providers
|
|
9506
|
+
this.optionContextGenerator = computed(() => item => ({
|
|
9507
|
+
$implicit: item,
|
|
9508
|
+
item,
|
|
9509
|
+
index: item.index,
|
|
9510
|
+
value: item.value,
|
|
9511
|
+
label: item.label,
|
|
9512
|
+
selected: item.selected,
|
|
9513
|
+
highlighted: item.highlighted,
|
|
9514
|
+
itemData: item.itemData,
|
|
9515
|
+
disabled: item.disabled,
|
|
9516
|
+
}));
|
|
9438
9517
|
this.valueChange = output();
|
|
9439
9518
|
//! output events
|
|
9440
|
-
this.changeEvent = output({ alias: 'change' });
|
|
9441
9519
|
this.addEvent = output({ alias: 'add' });
|
|
9442
9520
|
this.removeEvent = output({ alias: 'remove' });
|
|
9443
9521
|
//! highligh-related
|
|
@@ -9474,7 +9552,6 @@ class _SelectableListComponentBase extends _FormFieldComponentBase {
|
|
|
9474
9552
|
_emitChange() {
|
|
9475
9553
|
const value = this.singleselectable() ? this.itemStorage.value()[0] : this.itemStorage.value();
|
|
9476
9554
|
this._onChangeRegistered?.(value);
|
|
9477
|
-
this.changeEvent.emit(value);
|
|
9478
9555
|
this.valueChange.emit(value);
|
|
9479
9556
|
}
|
|
9480
9557
|
_onTouched() {
|
|
@@ -9496,14 +9573,6 @@ class _SelectableListComponentBase extends _FormFieldComponentBase {
|
|
|
9496
9573
|
if (!this.touched())
|
|
9497
9574
|
this.lastBlurTimestamp.set(Date.now());
|
|
9498
9575
|
}
|
|
9499
|
-
//! context providers
|
|
9500
|
-
getOptionContext(item) {
|
|
9501
|
-
return {
|
|
9502
|
-
$implicit: item,
|
|
9503
|
-
item,
|
|
9504
|
-
itemData: item.itemData(),
|
|
9505
|
-
};
|
|
9506
|
-
}
|
|
9507
9576
|
//! value input & output
|
|
9508
9577
|
set value(newValue) {
|
|
9509
9578
|
if (this.multiselectable() && !Array.isArray(newValue))
|
|
@@ -9512,7 +9581,7 @@ class _SelectableListComponentBase extends _FormFieldComponentBase {
|
|
|
9512
9581
|
}
|
|
9513
9582
|
//! item selection handlers
|
|
9514
9583
|
toggleItem(item) {
|
|
9515
|
-
if (item.selected
|
|
9584
|
+
if (item.selected) {
|
|
9516
9585
|
if (this.singleselectable())
|
|
9517
9586
|
return;
|
|
9518
9587
|
this.unselectItem(item);
|
|
@@ -9631,7 +9700,7 @@ class _SelectableListComponentBase extends _FormFieldComponentBase {
|
|
|
9631
9700
|
this.itemStorage.highlightAllItems();
|
|
9632
9701
|
}
|
|
9633
9702
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: _SelectableListComponentBase, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
9634
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.15", type: _SelectableListComponentBase, isStandalone: true, inputs: { valueFrom: { classPropertyName: "valueFrom", publicName: "valueFrom", isSignal: true, isRequired: false, transformFunction: null }, labelFrom: { classPropertyName: "labelFrom", publicName: "labelFrom", isSignal: true, isRequired: false, transformFunction: null }, disabledFrom: { classPropertyName: "disabledFrom", publicName: "disabledFrom", isSignal: true, isRequired: false, transformFunction: null }, compareWith: { classPropertyName: "compareWith", publicName: "compareWith", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: false, isRequired: false, transformFunction: null }, multiselectable: { classPropertyName: "multiselectable", publicName: "multiselectable", isSignal: true, isRequired: false, transformFunction: null }, requireValue: { classPropertyName: "requireValue", publicName: "requireValue", isSignal: true, isRequired: false, transformFunction: null }, invertDisabled: { classPropertyName: "invertDisabled", publicName: "invertDisabled", isSignal: true, isRequired: false, transformFunction: null }, maxSelectedItems: { classPropertyName: "maxSelectedItems", publicName: "maxSelectedItems", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange",
|
|
9703
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.15", type: _SelectableListComponentBase, isStandalone: true, inputs: { valueFrom: { classPropertyName: "valueFrom", publicName: "valueFrom", isSignal: true, isRequired: false, transformFunction: null }, labelFrom: { classPropertyName: "labelFrom", publicName: "labelFrom", isSignal: true, isRequired: false, transformFunction: null }, disabledFrom: { classPropertyName: "disabledFrom", publicName: "disabledFrom", isSignal: true, isRequired: false, transformFunction: null }, compareWith: { classPropertyName: "compareWith", publicName: "compareWith", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: false, isRequired: false, transformFunction: null }, multiselectable: { classPropertyName: "multiselectable", publicName: "multiselectable", isSignal: true, isRequired: false, transformFunction: null }, requireValue: { classPropertyName: "requireValue", publicName: "requireValue", isSignal: true, isRequired: false, transformFunction: null }, invertDisabled: { classPropertyName: "invertDisabled", publicName: "invertDisabled", isSignal: true, isRequired: false, transformFunction: null }, maxSelectedItems: { classPropertyName: "maxSelectedItems", publicName: "maxSelectedItems", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", addEvent: "add", removeEvent: "remove" }, host: { listeners: { "mousemove": "onMouseMove()", "keydown": "onKeyPress($event)" }, properties: { "attr.multiple": "this._multiselectableHostAttribute", "class.ard-multiselect": "this._multiselectableHostAttribute", "class.ard-require-value": "this._requireValueHostAttribute", "class.ard-touched": "this._touchedHostAttribute" } }, usesInheritance: true, ngImport: i0 }); }
|
|
9635
9704
|
}
|
|
9636
9705
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: _SelectableListComponentBase, decorators: [{
|
|
9637
9706
|
type: Directive
|
|
@@ -9800,7 +9869,7 @@ class ArdiumSegmentComponent extends _SelectableListComponentBase {
|
|
|
9800
9869
|
provide: ARD_FORM_FIELD_CONTROL,
|
|
9801
9870
|
useExisting: ArdiumSegmentComponent,
|
|
9802
9871
|
},
|
|
9803
|
-
], queries: [{ propertyName: "optionTemplate", first: true, predicate: ArdSegmentOptionTemplateDirective, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n #focusableElement\r\n class=\"ard-segment-container\"\r\n [class.ard-disabled]=\"disabled()\"\r\n [ariaDisabled]=\"disabled()\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-focus-visible]=\"isFocused() && !isMouseBeingUsed\"\r\n [class.ard-using-keyboard]=\"!isMouseBeingUsed\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n @for (row of itemRows(); track $index) {\r\n
|
|
9872
|
+
], queries: [{ propertyName: "optionTemplate", first: true, predicate: ArdSegmentOptionTemplateDirective, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n #focusableElement\r\n class=\"ard-segment-container\"\r\n [class.ard-disabled]=\"disabled()\"\r\n [ariaDisabled]=\"disabled()\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-focus-visible]=\"isFocused() && !isMouseBeingUsed\"\r\n [class.ard-using-keyboard]=\"!isMouseBeingUsed()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n @for (row of itemRows(); track $index) {\r\n <div\r\n class=\"ard-segment-row\"\r\n [class.ard-segment-row-partial]=\"row.isNotFull\"\r\n [class.ard-segment-row-uniform]=\"uniformWidths() || itemsPerRow() < items.length\"\r\n [style]=\"{ '--ard-_segment-row-items': itemsInActualRow }\"\r\n >\r\n @for (option of row.options; track $index) {\r\n <button\r\n type=\"button\"\r\n class=\"ard-segment-option\"\r\n tabindex=\"-1\"\r\n [class.ard-option-disabled]=\"option.disabled || (isItemLimitReached() && !option.selected)\"\r\n [class.ard-option-selected]=\"option.selected\"\r\n [class.ard-option-highlighted]=\"option.highlighted\"\r\n [ariaSelected]=\"option.selected\"\r\n (mouseenter)=\"onItemMouseEnter(option, $event)\"\r\n (mouseleave)=\"onItemMouseLeave(option, $event)\"\r\n (click)=\"onItemClick(option, $event)\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <span class=\"ard-option-label\">\r\n <ng-template #defaultOptionTemplate>\r\n {{ option.label }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"optionContextGenerator()(option)\"\r\n />\r\n </span>\r\n </div>\r\n </button>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [".ard-segment-container{display:flex;flex-direction:column}.ard-segment-container.ard-align-left .ard-segment-option{justify-content:left}.ard-segment-container.ard-align-middle .ard-segment-option{justify-content:center}.ard-segment-container.ard-align-right .ard-segment-option{justify-content:right}.ard-segment-row{width:100%;display:flex;align-items:center}.ard-segment-row.ard-segment-row-uniform{display:grid;grid-template-columns:repeat(var(--ard-_segment-row-items),1fr)}.ard-segment-option{-webkit-user-select:none;user-select:none}.ard-option-disabled{pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
9804
9873
|
}
|
|
9805
9874
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumSegmentComponent, decorators: [{
|
|
9806
9875
|
type: Component,
|
|
@@ -9814,7 +9883,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
9814
9883
|
provide: ARD_FORM_FIELD_CONTROL,
|
|
9815
9884
|
useExisting: ArdiumSegmentComponent,
|
|
9816
9885
|
},
|
|
9817
|
-
], template: "<div\r\n #focusableElement\r\n class=\"ard-segment-container\"\r\n [class.ard-disabled]=\"disabled()\"\r\n [ariaDisabled]=\"disabled()\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-focus-visible]=\"isFocused() && !isMouseBeingUsed\"\r\n [class.ard-using-keyboard]=\"!isMouseBeingUsed\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n @for (row of itemRows(); track $index) {\r\n
|
|
9886
|
+
], template: "<div\r\n #focusableElement\r\n class=\"ard-segment-container\"\r\n [class.ard-disabled]=\"disabled()\"\r\n [ariaDisabled]=\"disabled()\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-focus-visible]=\"isFocused() && !isMouseBeingUsed\"\r\n [class.ard-using-keyboard]=\"!isMouseBeingUsed()\"\r\n [attr.tabindex]=\"tabIndex()\"\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n>\r\n @for (row of itemRows(); track $index) {\r\n <div\r\n class=\"ard-segment-row\"\r\n [class.ard-segment-row-partial]=\"row.isNotFull\"\r\n [class.ard-segment-row-uniform]=\"uniformWidths() || itemsPerRow() < items.length\"\r\n [style]=\"{ '--ard-_segment-row-items': itemsInActualRow }\"\r\n >\r\n @for (option of row.options; track $index) {\r\n <button\r\n type=\"button\"\r\n class=\"ard-segment-option\"\r\n tabindex=\"-1\"\r\n [class.ard-option-disabled]=\"option.disabled || (isItemLimitReached() && !option.selected)\"\r\n [class.ard-option-selected]=\"option.selected\"\r\n [class.ard-option-highlighted]=\"option.highlighted\"\r\n [ariaSelected]=\"option.selected\"\r\n (mouseenter)=\"onItemMouseEnter(option, $event)\"\r\n (mouseleave)=\"onItemMouseLeave(option, $event)\"\r\n (click)=\"onItemClick(option, $event)\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <span class=\"ard-option-label\">\r\n <ng-template #defaultOptionTemplate>\r\n {{ option.label }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"optionTemplate()?.template || defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"optionContextGenerator()(option)\"\r\n />\r\n </span>\r\n </div>\r\n </button>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [".ard-segment-container{display:flex;flex-direction:column}.ard-segment-container.ard-align-left .ard-segment-option{justify-content:left}.ard-segment-container.ard-align-middle .ard-segment-option{justify-content:center}.ard-segment-container.ard-align-right .ard-segment-option{justify-content:right}.ard-segment-row{width:100%;display:flex;align-items:center}.ard-segment-row.ard-segment-row-uniform{display:grid;grid-template-columns:repeat(var(--ard-_segment-row-items),1fr)}.ard-segment-option{-webkit-user-select:none;user-select:none}.ard-option-disabled{pointer-events:none}\n"] }]
|
|
9818
9887
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
9819
9888
|
type: Inject,
|
|
9820
9889
|
args: [ARD_SEGMENT_DEFAULTS]
|
|
@@ -9960,26 +10029,45 @@ class _AbstractSlider extends _NgModelComponentBase {
|
|
|
9960
10029
|
this.noTooltip = input(this._DEFAULTS.noTooltip, { transform: v => coerceBooleanProperty(v) });
|
|
9961
10030
|
this.tooltipFormatFn = input(this._DEFAULTS.formatTooltipFn);
|
|
9962
10031
|
//! min, max, step sizes
|
|
9963
|
-
this.min = input(this._DEFAULTS.min, {
|
|
9964
|
-
|
|
10032
|
+
this.min = input(this._DEFAULTS.min, {
|
|
10033
|
+
transform: v => coerceNumberProperty(v, this._DEFAULTS.min),
|
|
10034
|
+
});
|
|
10035
|
+
this.max = input(this._DEFAULTS.max, {
|
|
10036
|
+
transform: v => coerceNumberProperty(v, this._DEFAULTS.max),
|
|
10037
|
+
});
|
|
9965
10038
|
this.step = input(this._DEFAULTS.step, {
|
|
9966
10039
|
transform: v => {
|
|
9967
10040
|
const step = coerceNumberProperty(v, this._DEFAULTS.step);
|
|
9968
10041
|
if (step === 0) {
|
|
9969
|
-
throw new Error(`ARD-FT${this.componentId}
|
|
10042
|
+
throw new Error(`ARD-FT${this.componentId}1a: Cannot set <ard-${this.componentName}>'s [step] to 0.`);
|
|
9970
10043
|
}
|
|
9971
10044
|
if (step < 0) {
|
|
9972
|
-
throw new Error(`ARD-FT${this.componentId}
|
|
10045
|
+
throw new Error(`ARD-FT${this.componentId}1b: Cannot set <ard-${this.componentName}>'s [step] to a negative value, got ${step}.`);
|
|
9973
10046
|
}
|
|
9974
10047
|
return step;
|
|
9975
10048
|
},
|
|
9976
10049
|
});
|
|
10050
|
+
this.minMaxStepValueCleanup = effect(() => {
|
|
10051
|
+
this.min();
|
|
10052
|
+
this.max();
|
|
10053
|
+
this.step();
|
|
10054
|
+
this.cleanupValueAfterMinMaxStepChange();
|
|
10055
|
+
});
|
|
10056
|
+
this.minMaxErrorCheck = effect(() => {
|
|
10057
|
+
const min = this.min();
|
|
10058
|
+
const max = this.max();
|
|
10059
|
+
if (min >= max) {
|
|
10060
|
+
throw new Error(`ARD-FT${this.componentId}0: Cannot set <ard-${this.componentName}>'s [min] to a value greater than or equal to [max], got min=${min} and max=${max}.`);
|
|
10061
|
+
}
|
|
10062
|
+
});
|
|
9977
10063
|
this.shiftMultiplier = input(this._DEFAULTS.shiftMultiplier, {
|
|
9978
10064
|
transform: v => coerceNumberProperty(v, this._DEFAULTS.shiftMultiplier),
|
|
9979
10065
|
});
|
|
9980
10066
|
this._stepSizeComputed = computed(() => this.step() / Math.abs(this.min() - this.max()));
|
|
9981
10067
|
//! value ticks
|
|
9982
|
-
this.showValueTicks = input(this._DEFAULTS.showValueTicks, {
|
|
10068
|
+
this.showValueTicks = input(this._DEFAULTS.showValueTicks, {
|
|
10069
|
+
transform: v => coerceBooleanProperty(v),
|
|
10070
|
+
});
|
|
9983
10071
|
this.percentStepSize = computed(() => this._stepSizeComputed() * 100);
|
|
9984
10072
|
this._tickArray = computed(() => {
|
|
9985
10073
|
const newArr = [];
|
|
@@ -10155,7 +10243,7 @@ class _AbstractSlider extends _NgModelComponentBase {
|
|
|
10155
10243
|
this._offset(+steps, event.shiftKey);
|
|
10156
10244
|
}
|
|
10157
10245
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: _AbstractSlider, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
10158
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.2.15", type: _AbstractSlider, isStandalone: true, inputs: { noTooltip: { classPropertyName: "noTooltip", publicName: "noTooltip", isSignal: true, isRequired: false, transformFunction: null }, tooltipFormatFn: { classPropertyName: "tooltipFormatFn", publicName: "tooltipFormatFn", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, shiftMultiplier: { classPropertyName: "shiftMultiplier", publicName: "shiftMultiplier", isSignal: true, isRequired: false, transformFunction: null }, showValueTicks: { classPropertyName: "showValueTicks", publicName: "showValueTicks", isSignal: true, isRequired: false, transformFunction: null }, labelPosition: { classPropertyName: "labelPosition", publicName: "labelPosition", isSignal: true, isRequired: false, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, tooltipPosition: { classPropertyName: "tooltipPosition", publicName: "tooltipPosition", isSignal: true, isRequired: false, transformFunction: null }, tooltipBehavior: { classPropertyName: "tooltipBehavior", publicName: "tooltipBehavior", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, host: { listeners: { "document:pointerup": "onPointerUp(
|
|
10246
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.2.15", type: _AbstractSlider, isStandalone: true, inputs: { noTooltip: { classPropertyName: "noTooltip", publicName: "noTooltip", isSignal: true, isRequired: false, transformFunction: null }, tooltipFormatFn: { classPropertyName: "tooltipFormatFn", publicName: "tooltipFormatFn", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, shiftMultiplier: { classPropertyName: "shiftMultiplier", publicName: "shiftMultiplier", isSignal: true, isRequired: false, transformFunction: null }, showValueTicks: { classPropertyName: "showValueTicks", publicName: "showValueTicks", isSignal: true, isRequired: false, transformFunction: null }, labelPosition: { classPropertyName: "labelPosition", publicName: "labelPosition", isSignal: true, isRequired: false, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, tooltipPosition: { classPropertyName: "tooltipPosition", publicName: "tooltipPosition", isSignal: true, isRequired: false, transformFunction: null }, tooltipBehavior: { classPropertyName: "tooltipBehavior", publicName: "tooltipBehavior", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, host: { listeners: { "document:pointerup": "onPointerUp()", "document:touchend": "onPointerUp()", "keydown": "onKeyPress($event)" } }, queries: [{ propertyName: "tooltipTemplate", first: true, predicate: ArdSliderTooltipDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "elementRef", first: true, predicate: ["track"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0 }); }
|
|
10159
10247
|
}
|
|
10160
10248
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: _AbstractSlider, decorators: [{
|
|
10161
10249
|
type: Directive
|
|
@@ -10163,10 +10251,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
10163
10251
|
type: Input
|
|
10164
10252
|
}], onPointerUp: [{
|
|
10165
10253
|
type: HostListener,
|
|
10166
|
-
args: ['document:pointerup'
|
|
10254
|
+
args: ['document:pointerup']
|
|
10167
10255
|
}, {
|
|
10168
10256
|
type: HostListener,
|
|
10169
|
-
args: ['document:touchend'
|
|
10257
|
+
args: ['document:touchend']
|
|
10170
10258
|
}], onKeyPress: [{
|
|
10171
10259
|
type: HostListener,
|
|
10172
10260
|
args: ['keydown', ['$event']]
|
|
@@ -10189,7 +10277,7 @@ class ArdiumRangeSliderComponent extends _AbstractSlider {
|
|
|
10189
10277
|
super(defaults);
|
|
10190
10278
|
this.componentId = '106';
|
|
10191
10279
|
this.componentName = 'range-slider';
|
|
10192
|
-
this._value = {
|
|
10280
|
+
this._value = { from: -Infinity, to: Infinity };
|
|
10193
10281
|
//! tooltip updater
|
|
10194
10282
|
this._tooltipValue = this.value;
|
|
10195
10283
|
//! handle focus monitors
|
|
@@ -10197,7 +10285,7 @@ class ArdiumRangeSliderComponent extends _AbstractSlider {
|
|
|
10197
10285
|
}
|
|
10198
10286
|
ngOnInit() {
|
|
10199
10287
|
super.ngOnInit();
|
|
10200
|
-
if (this._value.
|
|
10288
|
+
if (this._value.from !== -Infinity && this._value.to !== Infinity)
|
|
10201
10289
|
return;
|
|
10202
10290
|
this.writeValue({ low: this.min(), high: this.max() });
|
|
10203
10291
|
}
|
|
@@ -10209,30 +10297,30 @@ class ArdiumRangeSliderComponent extends _AbstractSlider {
|
|
|
10209
10297
|
return Array.isArray(v) && isNumber(v[0]) && isNumber(v[1]) && v.length === 2;
|
|
10210
10298
|
}
|
|
10211
10299
|
_arrayValueToObjectValue(v) {
|
|
10212
|
-
return {
|
|
10300
|
+
return { from: v[0], to: v[1] };
|
|
10213
10301
|
}
|
|
10214
10302
|
_normalizeSliderRange(v) {
|
|
10215
|
-
if (v.
|
|
10303
|
+
if (v.from <= v.to)
|
|
10216
10304
|
return v;
|
|
10217
|
-
return {
|
|
10305
|
+
return { from: v.to, to: v.from };
|
|
10218
10306
|
}
|
|
10219
10307
|
writeValue(v) {
|
|
10220
10308
|
if (!this._isValidObject(v) && !this._isValidTuple(v)) {
|
|
10221
10309
|
this.reset();
|
|
10222
10310
|
return;
|
|
10223
10311
|
}
|
|
10224
|
-
let
|
|
10225
|
-
let
|
|
10312
|
+
let from = -Infinity;
|
|
10313
|
+
let to = Infinity;
|
|
10226
10314
|
if (this._isValidObject(v)) {
|
|
10227
|
-
|
|
10228
|
-
|
|
10315
|
+
from = v.from;
|
|
10316
|
+
to = v.to;
|
|
10229
10317
|
}
|
|
10230
10318
|
else if (this._isValidTuple(v)) {
|
|
10231
|
-
|
|
10232
|
-
|
|
10319
|
+
from = v[0];
|
|
10320
|
+
to = v[1];
|
|
10233
10321
|
}
|
|
10234
|
-
const lowClamped = this._clampValue(
|
|
10235
|
-
const highClamped = this._clampValue(
|
|
10322
|
+
const lowClamped = this._clampValue(from);
|
|
10323
|
+
const highClamped = this._clampValue(to);
|
|
10236
10324
|
const value = this._arrayValueToObjectValue([lowClamped, highClamped]);
|
|
10237
10325
|
this._value = value;
|
|
10238
10326
|
this._positionPercent[0] = this._valueToPercent(lowClamped);
|
|
@@ -10245,12 +10333,19 @@ class ArdiumRangeSliderComponent extends _AbstractSlider {
|
|
|
10245
10333
|
set value(v) {
|
|
10246
10334
|
this.writeValue(v);
|
|
10247
10335
|
}
|
|
10336
|
+
cleanupValueAfterMinMaxStepChange() {
|
|
10337
|
+
const prevValue = this._value;
|
|
10338
|
+
this.writeValue(this._value);
|
|
10339
|
+
if (prevValue.from !== this._value.from || prevValue.to !== this._value.to) {
|
|
10340
|
+
this._emitChange();
|
|
10341
|
+
}
|
|
10342
|
+
}
|
|
10248
10343
|
_updateTooltipValue() {
|
|
10249
10344
|
const v = Object.create(this._value);
|
|
10250
10345
|
const formatFn = this.tooltipFormatFn();
|
|
10251
10346
|
if (formatFn) {
|
|
10252
|
-
v.
|
|
10253
|
-
v.
|
|
10347
|
+
v.from = formatFn(v.from);
|
|
10348
|
+
v.to = formatFn(v.to);
|
|
10254
10349
|
}
|
|
10255
10350
|
this._tooltipValue = v;
|
|
10256
10351
|
}
|
|
@@ -10262,7 +10357,7 @@ class ArdiumRangeSliderComponent extends _AbstractSlider {
|
|
|
10262
10357
|
}
|
|
10263
10358
|
//! methods for programmatic manipulation
|
|
10264
10359
|
reset() {
|
|
10265
|
-
this._value = {
|
|
10360
|
+
this._value = { from: -Infinity, to: Infinity };
|
|
10266
10361
|
this._positionPercent[0] = 0;
|
|
10267
10362
|
this._positionPercent[1] = 1;
|
|
10268
10363
|
}
|
|
@@ -10294,12 +10389,12 @@ class ArdiumRangeSliderComponent extends _AbstractSlider {
|
|
|
10294
10389
|
//round to 9 decimal places to avoid floating point arithmetic errors
|
|
10295
10390
|
//9 is an arbitrary number that just works well. ¯\_(ツ)_/¯
|
|
10296
10391
|
newVal = roundToPrecision(newVal, 9);
|
|
10297
|
-
const newValObj = {
|
|
10392
|
+
const newValObj = { from: this._value.from, to: this._value.to };
|
|
10298
10393
|
if (handleId === 1) {
|
|
10299
|
-
newValObj.
|
|
10394
|
+
newValObj.from = newVal;
|
|
10300
10395
|
}
|
|
10301
10396
|
else {
|
|
10302
|
-
newValObj.
|
|
10397
|
+
newValObj.to = newVal;
|
|
10303
10398
|
}
|
|
10304
10399
|
return newValObj;
|
|
10305
10400
|
}
|
|
@@ -10312,11 +10407,11 @@ class ArdiumRangeSliderComponent extends _AbstractSlider {
|
|
|
10312
10407
|
this.currentHandle.set(null);
|
|
10313
10408
|
}
|
|
10314
10409
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumRangeSliderComponent, deps: [{ token: ARD_SLIDER_DEFAULTS }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10315
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: ArdiumRangeSliderComponent, isStandalone: false, selector: "ard-range-slider", host: { listeners: { "document:mousemove": "onPointerMove($event)", "document:touchmove": "onPointerMove($event)" } }, usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"ard-range-slider-container-master\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-slider-handle-grabbed]=\"isSliderHandleGrabbed()\"\r\n [style]=\"{ '--_ard-slider-transition': sliderTransition() }\"\r\n>\r\n <div class=\"ard-slider-container\">\r\n <div\r\n #track\r\n class=\"ard-slider-track\"\r\n (pointerdown)=\"onTrackHitboxPointerDown($event)\"\r\n >\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-slider-track-overlay ard-slider-track-inactive\"></div>\r\n <div\r\n class=\"ard-slider-track-overlay ard-slider-track-active\"\r\n [style]=\"{\r\n left: trackOverlayLeft,\r\n width: trackOverlayWidth\r\n }\"\r\n ></div>\r\n @if (showValueTicks()) {\r\n <div class=\"ard-value-tick-container\">\r\n @for (tick of _tickArray(); track tick) {\r\n <div\r\n class=\"ard-value-tick\"\r\n [style]=\"{ left: tick }\"\r\n ></div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-slider-handle\"\r\n [tabindex]=\"tabIndex()\"\r\n [class.ard-grabbed]=\"isSliderHandleGrabbed() && currentHandle() === 1\"\r\n (pointerdown)=\"onPointerDownOnHandle($event, 1)\"\r\n (focus)=\"onHandleFocus($event, 1)\"\r\n (blur)=\"onBlur($event)\"\r\n [style]=\"{ left: getHandlePosition(1) }\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n @if (tooltipBehavior() !== 'never') {\r\n <div\r\n class=\"ard-slider-tooltip-wrapper\"\r\n [class.ard-tooltip-always]=\"tooltipBehavior() === 'always'\"\r\n [style]=\"{ left: getHandlePosition(1) }\"\r\n >\r\n <ng-template\r\n #defaultTooltipTemplate\r\n let-value\r\n >\r\n <div class=\"ard-slider-tooltip\">{{ value }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"tooltipTemplate()?.template || defaultTooltipTemplate\"\r\n [ngTemplateOutletContext]=\"getTooltipContext('
|
|
10410
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: ArdiumRangeSliderComponent, isStandalone: false, selector: "ard-range-slider", host: { listeners: { "document:mousemove": "onPointerMove($event)", "document:touchmove": "onPointerMove($event)" } }, usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"ard-range-slider-container-master\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-slider-handle-grabbed]=\"isSliderHandleGrabbed()\"\r\n [style]=\"{ '--_ard-slider-transition': sliderTransition() }\"\r\n>\r\n <div class=\"ard-slider-container\">\r\n <div\r\n #track\r\n class=\"ard-slider-track\"\r\n (pointerdown)=\"onTrackHitboxPointerDown($event)\"\r\n >\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-slider-track-overlay ard-slider-track-inactive\"></div>\r\n <div\r\n class=\"ard-slider-track-overlay ard-slider-track-active\"\r\n [style]=\"{\r\n left: trackOverlayLeft,\r\n width: trackOverlayWidth\r\n }\"\r\n ></div>\r\n @if (showValueTicks()) {\r\n <div class=\"ard-value-tick-container\">\r\n @for (tick of _tickArray(); track tick) {\r\n <div\r\n class=\"ard-value-tick\"\r\n [style]=\"{ left: tick }\"\r\n ></div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-slider-handle\"\r\n [tabindex]=\"tabIndex()\"\r\n [class.ard-grabbed]=\"isSliderHandleGrabbed() && currentHandle() === 1\"\r\n (pointerdown)=\"onPointerDownOnHandle($event, 1)\"\r\n (focus)=\"onHandleFocus($event, 1)\"\r\n (blur)=\"onBlur($event)\"\r\n [style]=\"{ left: getHandlePosition(1) }\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n @if (tooltipBehavior() !== 'never') {\r\n <div\r\n class=\"ard-slider-tooltip-wrapper\"\r\n [class.ard-tooltip-always]=\"tooltipBehavior() === 'always'\"\r\n [style]=\"{ left: getHandlePosition(1) }\"\r\n >\r\n <ng-template\r\n #defaultTooltipTemplate\r\n let-value\r\n >\r\n <div class=\"ard-slider-tooltip\">{{ value }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"tooltipTemplate()?.template || defaultTooltipTemplate\"\r\n [ngTemplateOutletContext]=\"getTooltipContext('from')\"\r\n >\r\n </ng-template>\r\n </div>\r\n }\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-slider-handle\"\r\n [tabindex]=\"tabIndex()\"\r\n [class.ard-grabbed]=\"isSliderHandleGrabbed() && currentHandle() === 2\"\r\n (pointerdown)=\"onPointerDownOnHandle($event, 2)\"\r\n (focus)=\"onHandleFocus($event, 2)\"\r\n (blur)=\"onBlur($event)\"\r\n [style]=\"{ left: getHandlePosition(2) }\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n @if (tooltipBehavior() !== 'never') {\r\n <div\r\n class=\"ard-slider-tooltip-wrapper\"\r\n [class.ard-tooltip-always]=\"tooltipBehavior() === 'always'\"\r\n [style]=\"{ left: getHandlePosition(2) }\"\r\n >\r\n <ng-template\r\n #defaultTooltipTemplate\r\n let-value\r\n >\r\n <div class=\"ard-slider-tooltip\">{{ value }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"tooltipTemplate()?.template || defaultTooltipTemplate\"\r\n [ngTemplateOutletContext]=\"getTooltipContext('to')\"\r\n >\r\n </ng-template>\r\n </div>\r\n }\r\n </div>\r\n @if (labelObjects().length) {\r\n <div\r\n class=\"ard-slider-label-container\"\r\n *ngIf=\"labelObjects.length\"\r\n >\r\n @for (label of labelObjects(); track $index) {\r\n <div\r\n class=\"ard-slider-label\"\r\n [style]=\"{ left: label.positionPercent }\"\r\n >\r\n {{ label.label }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n<ng-template #handleThumbBase>\r\n <div class=\"ard-slide-thumb\"></div>\r\n</ng-template>\r\n", styles: ["body.ard-prevent-touch-actions,body.ard-prevent-touch-actions *{touch-action:none}.ard-range-slider-container-master{display:flex;flex-direction:column}.ard-range-slider-container-master.ard-labels-top{flex-direction:column-reverse}.ard-range-slider-container-master .ard-slider-tooltip-wrapper{position:absolute;transform:translate(-50%);pointer-events:none}.ard-range-slider-container-master.ard-tooltip-top .ard-slider-tooltip-wrapper{bottom:100%}.ard-range-slider-container-master.ard-tooltip-bottom .ard-slider-tooltip-wrapper{top:100%}.ard-range-slider-container-master .ard-slider-handle{position:absolute;left:0;transform:translate(-50%)}.ard-range-slider-container-master .ard-slider-tooltip,.ard-range-slider-container-master .ard-slider-track,.ard-range-slider-container-master .ard-value-tick-container{position:relative}.ard-range-slider-container-master .ard-value-tick{position:absolute}.ard-range-slider-container-master .ard-slider-label-container{position:relative;width:100%;height:1em}.ard-range-slider-container-master .ard-slider-label{position:absolute;line-height:1em}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
10316
10411
|
}
|
|
10317
10412
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumRangeSliderComponent, decorators: [{
|
|
10318
10413
|
type: Component,
|
|
10319
|
-
args: [{ standalone: false, selector: 'ard-range-slider', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"ard-range-slider-container-master\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-slider-handle-grabbed]=\"isSliderHandleGrabbed()\"\r\n [style]=\"{ '--_ard-slider-transition': sliderTransition() }\"\r\n>\r\n <div class=\"ard-slider-container\">\r\n <div\r\n #track\r\n class=\"ard-slider-track\"\r\n (pointerdown)=\"onTrackHitboxPointerDown($event)\"\r\n >\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-slider-track-overlay ard-slider-track-inactive\"></div>\r\n <div\r\n class=\"ard-slider-track-overlay ard-slider-track-active\"\r\n [style]=\"{\r\n left: trackOverlayLeft,\r\n width: trackOverlayWidth\r\n }\"\r\n ></div>\r\n @if (showValueTicks()) {\r\n <div class=\"ard-value-tick-container\">\r\n @for (tick of _tickArray(); track tick) {\r\n <div\r\n class=\"ard-value-tick\"\r\n [style]=\"{ left: tick }\"\r\n ></div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-slider-handle\"\r\n [tabindex]=\"tabIndex()\"\r\n [class.ard-grabbed]=\"isSliderHandleGrabbed() && currentHandle() === 1\"\r\n (pointerdown)=\"onPointerDownOnHandle($event, 1)\"\r\n (focus)=\"onHandleFocus($event, 1)\"\r\n (blur)=\"onBlur($event)\"\r\n [style]=\"{ left: getHandlePosition(1) }\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n @if (tooltipBehavior() !== 'never') {\r\n <div\r\n class=\"ard-slider-tooltip-wrapper\"\r\n [class.ard-tooltip-always]=\"tooltipBehavior() === 'always'\"\r\n [style]=\"{ left: getHandlePosition(1) }\"\r\n >\r\n <ng-template\r\n #defaultTooltipTemplate\r\n let-value\r\n >\r\n <div class=\"ard-slider-tooltip\">{{ value }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"tooltipTemplate()?.template || defaultTooltipTemplate\"\r\n [ngTemplateOutletContext]=\"getTooltipContext('
|
|
10414
|
+
args: [{ standalone: false, selector: 'ard-range-slider', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"ard-range-slider-container-master\"\r\n [ngClass]=\"ngClasses()\"\r\n [class.ard-slider-handle-grabbed]=\"isSliderHandleGrabbed()\"\r\n [style]=\"{ '--_ard-slider-transition': sliderTransition() }\"\r\n>\r\n <div class=\"ard-slider-container\">\r\n <div\r\n #track\r\n class=\"ard-slider-track\"\r\n (pointerdown)=\"onTrackHitboxPointerDown($event)\"\r\n >\r\n <div class=\"ard-hitbox\"></div>\r\n <div class=\"ard-slider-track-overlay ard-slider-track-inactive\"></div>\r\n <div\r\n class=\"ard-slider-track-overlay ard-slider-track-active\"\r\n [style]=\"{\r\n left: trackOverlayLeft,\r\n width: trackOverlayWidth\r\n }\"\r\n ></div>\r\n @if (showValueTicks()) {\r\n <div class=\"ard-value-tick-container\">\r\n @for (tick of _tickArray(); track tick) {\r\n <div\r\n class=\"ard-value-tick\"\r\n [style]=\"{ left: tick }\"\r\n ></div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-slider-handle\"\r\n [tabindex]=\"tabIndex()\"\r\n [class.ard-grabbed]=\"isSliderHandleGrabbed() && currentHandle() === 1\"\r\n (pointerdown)=\"onPointerDownOnHandle($event, 1)\"\r\n (focus)=\"onHandleFocus($event, 1)\"\r\n (blur)=\"onBlur($event)\"\r\n [style]=\"{ left: getHandlePosition(1) }\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n @if (tooltipBehavior() !== 'never') {\r\n <div\r\n class=\"ard-slider-tooltip-wrapper\"\r\n [class.ard-tooltip-always]=\"tooltipBehavior() === 'always'\"\r\n [style]=\"{ left: getHandlePosition(1) }\"\r\n >\r\n <ng-template\r\n #defaultTooltipTemplate\r\n let-value\r\n >\r\n <div class=\"ard-slider-tooltip\">{{ value }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"tooltipTemplate()?.template || defaultTooltipTemplate\"\r\n [ngTemplateOutletContext]=\"getTooltipContext('from')\"\r\n >\r\n </ng-template>\r\n </div>\r\n }\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n class=\"ard-slider-handle\"\r\n [tabindex]=\"tabIndex()\"\r\n [class.ard-grabbed]=\"isSliderHandleGrabbed() && currentHandle() === 2\"\r\n (pointerdown)=\"onPointerDownOnHandle($event, 2)\"\r\n (focus)=\"onHandleFocus($event, 2)\"\r\n (blur)=\"onBlur($event)\"\r\n [style]=\"{ left: getHandlePosition(2) }\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-hitbox\"></div>\r\n </button>\r\n @if (tooltipBehavior() !== 'never') {\r\n <div\r\n class=\"ard-slider-tooltip-wrapper\"\r\n [class.ard-tooltip-always]=\"tooltipBehavior() === 'always'\"\r\n [style]=\"{ left: getHandlePosition(2) }\"\r\n >\r\n <ng-template\r\n #defaultTooltipTemplate\r\n let-value\r\n >\r\n <div class=\"ard-slider-tooltip\">{{ value }}</div>\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"tooltipTemplate()?.template || defaultTooltipTemplate\"\r\n [ngTemplateOutletContext]=\"getTooltipContext('to')\"\r\n >\r\n </ng-template>\r\n </div>\r\n }\r\n </div>\r\n @if (labelObjects().length) {\r\n <div\r\n class=\"ard-slider-label-container\"\r\n *ngIf=\"labelObjects.length\"\r\n >\r\n @for (label of labelObjects(); track $index) {\r\n <div\r\n class=\"ard-slider-label\"\r\n [style]=\"{ left: label.positionPercent }\"\r\n >\r\n {{ label.label }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n<ng-template #handleThumbBase>\r\n <div class=\"ard-slide-thumb\"></div>\r\n</ng-template>\r\n", styles: ["body.ard-prevent-touch-actions,body.ard-prevent-touch-actions *{touch-action:none}.ard-range-slider-container-master{display:flex;flex-direction:column}.ard-range-slider-container-master.ard-labels-top{flex-direction:column-reverse}.ard-range-slider-container-master .ard-slider-tooltip-wrapper{position:absolute;transform:translate(-50%);pointer-events:none}.ard-range-slider-container-master.ard-tooltip-top .ard-slider-tooltip-wrapper{bottom:100%}.ard-range-slider-container-master.ard-tooltip-bottom .ard-slider-tooltip-wrapper{top:100%}.ard-range-slider-container-master .ard-slider-handle{position:absolute;left:0;transform:translate(-50%)}.ard-range-slider-container-master .ard-slider-tooltip,.ard-range-slider-container-master .ard-slider-track,.ard-range-slider-container-master .ard-value-tick-container{position:relative}.ard-range-slider-container-master .ard-value-tick{position:absolute}.ard-range-slider-container-master .ard-slider-label-container{position:relative;width:100%;height:1em}.ard-range-slider-container-master .ard-slider-label{position:absolute;line-height:1em}\n"] }]
|
|
10320
10415
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
10321
10416
|
type: Inject,
|
|
10322
10417
|
args: [ARD_SLIDER_DEFAULTS]
|
|
@@ -10377,6 +10472,13 @@ class ArdiumSliderComponent extends _AbstractSlider {
|
|
|
10377
10472
|
this._positionPercent[0] = this._valueToPercent(v);
|
|
10378
10473
|
this._updateTooltipValue();
|
|
10379
10474
|
}
|
|
10475
|
+
cleanupValueAfterMinMaxStepChange() {
|
|
10476
|
+
const prevValue = this._value;
|
|
10477
|
+
this.writeValue(this._value);
|
|
10478
|
+
if (prevValue !== this._value) {
|
|
10479
|
+
this._emitChange();
|
|
10480
|
+
}
|
|
10481
|
+
}
|
|
10380
10482
|
//! methods for programmatic manipulation
|
|
10381
10483
|
reset() {
|
|
10382
10484
|
this._value = 0;
|
|
@@ -11035,6 +11137,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
11035
11137
|
type: Directive,
|
|
11036
11138
|
args: [{ standalone: false, selector: 'ard-checkbox-list > ng-template[ard-checkbox-tmp]' }]
|
|
11037
11139
|
}], ctorParameters: () => [{ type: i0.TemplateRef }] });
|
|
11140
|
+
class ArdCheckboxListLabelTemplateDirective {
|
|
11141
|
+
constructor(template) {
|
|
11142
|
+
this.template = template;
|
|
11143
|
+
}
|
|
11144
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdCheckboxListLabelTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
11145
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: ArdCheckboxListLabelTemplateDirective, isStandalone: false, selector: "ard-checkbox-list > ng-template[ard-label-tmp]", ngImport: i0 }); }
|
|
11146
|
+
}
|
|
11147
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdCheckboxListLabelTemplateDirective, decorators: [{
|
|
11148
|
+
type: Directive,
|
|
11149
|
+
args: [{ standalone: false, selector: 'ard-checkbox-list > ng-template[ard-label-tmp]' }]
|
|
11150
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef }] });
|
|
11038
11151
|
|
|
11039
11152
|
class ArdiumCheckboxListComponent extends _NgModelComponentBase {
|
|
11040
11153
|
constructor(defaults) {
|
|
@@ -11046,11 +11159,13 @@ class ArdiumCheckboxListComponent extends _NgModelComponentBase {
|
|
|
11046
11159
|
this._componentId = '300';
|
|
11047
11160
|
this._componentName = 'checkbox-list';
|
|
11048
11161
|
this._itemStorage = new SimpleItemStorage(this);
|
|
11049
|
-
this.valueFrom = input(this.
|
|
11050
|
-
this.labelFrom = input(this.
|
|
11051
|
-
this.disabledFrom = input(this.
|
|
11162
|
+
this.valueFrom = input(this._DEFAULTS.valueFrom);
|
|
11163
|
+
this.labelFrom = input(this._DEFAULTS.labelFrom);
|
|
11164
|
+
this.disabledFrom = input(this._DEFAULTS.disabledFrom);
|
|
11052
11165
|
this.compareWith = input(this._DEFAULTS.compareWith);
|
|
11053
|
-
this.invertDisabled = input(this._DEFAULTS.invertDisabled, {
|
|
11166
|
+
this.invertDisabled = input(this._DEFAULTS.invertDisabled, {
|
|
11167
|
+
transform: v => coerceBooleanProperty(v),
|
|
11168
|
+
});
|
|
11054
11169
|
this.maxSelectedItems = input(this._DEFAULTS.maxSelectedItems, {
|
|
11055
11170
|
transform: v => coerceNumberProperty(v, this._DEFAULTS.maxSelectedItems),
|
|
11056
11171
|
});
|
|
@@ -11060,10 +11175,21 @@ class ArdiumCheckboxListComponent extends _NgModelComponentBase {
|
|
|
11060
11175
|
this.compact = input(this._DEFAULTS.compact, { transform: v => coerceBooleanProperty(v) });
|
|
11061
11176
|
this.ngClasses = computed(() => [`ard-color-${this.color()}`, `ard-align-${this.align()}`, this.compact() ? 'ard-compact' : ''].join(' '));
|
|
11062
11177
|
this.valueChange = output();
|
|
11063
|
-
this.changeEvent = output({ alias: 'change' });
|
|
11064
11178
|
this._isViewInit = false;
|
|
11065
11179
|
//! templates
|
|
11066
11180
|
this.checkboxTemplate = contentChild(ArdCheckboxListCheckboxTemplateDirective);
|
|
11181
|
+
this.labelTemplate = contentChild(ArdCheckboxListLabelTemplateDirective);
|
|
11182
|
+
this.labelContextGenerator = computed(() => item => ({
|
|
11183
|
+
$implicit: item,
|
|
11184
|
+
item,
|
|
11185
|
+
index: item.index,
|
|
11186
|
+
value: item.value,
|
|
11187
|
+
label: item.label,
|
|
11188
|
+
selected: item.selected,
|
|
11189
|
+
highlighted: item.highlighted,
|
|
11190
|
+
itemData: item.itemData,
|
|
11191
|
+
disabled: item.disabled,
|
|
11192
|
+
}));
|
|
11067
11193
|
}
|
|
11068
11194
|
get _htmlIdHostAttribute() {
|
|
11069
11195
|
return this.htmlId();
|
|
@@ -11097,7 +11223,6 @@ class ArdiumCheckboxListComponent extends _NgModelComponentBase {
|
|
|
11097
11223
|
_emitChange() {
|
|
11098
11224
|
const v = this.value;
|
|
11099
11225
|
this._onChangeRegistered?.(v);
|
|
11100
|
-
this.changeEvent.emit(v);
|
|
11101
11226
|
this.valueChange.emit(v);
|
|
11102
11227
|
}
|
|
11103
11228
|
onItemHighlight(v) {
|
|
@@ -11118,18 +11243,18 @@ class ArdiumCheckboxListComponent extends _NgModelComponentBase {
|
|
|
11118
11243
|
this._emitChange();
|
|
11119
11244
|
}
|
|
11120
11245
|
toggleItem(v) {
|
|
11121
|
-
if (v.selected
|
|
11246
|
+
if (v.selected) {
|
|
11122
11247
|
this.unselectItem(v);
|
|
11123
11248
|
return;
|
|
11124
11249
|
}
|
|
11125
11250
|
this.selectItem(v);
|
|
11126
11251
|
}
|
|
11127
11252
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumCheckboxListComponent, deps: [{ token: ARD_CHECKBOX_LIST_DEFAULTS }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11128
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: ArdiumCheckboxListComponent, isStandalone: false, selector: "ard-checkbox-list", inputs: { valueFrom: { classPropertyName: "valueFrom", publicName: "valueFrom", isSignal: true, isRequired: false, transformFunction: null }, labelFrom: { classPropertyName: "labelFrom", publicName: "labelFrom", isSignal: true, isRequired: false, transformFunction: null }, disabledFrom: { classPropertyName: "disabledFrom", publicName: "disabledFrom", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: false, isRequired: false, transformFunction: null }, compareWith: { classPropertyName: "compareWith", publicName: "compareWith", isSignal: true, isRequired: false, transformFunction: null }, invertDisabled: { classPropertyName: "invertDisabled", publicName: "invertDisabled", isSignal: true, isRequired: false, transformFunction: null }, maxSelectedItems: { classPropertyName: "maxSelectedItems", publicName: "maxSelectedItems", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange"
|
|
11253
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: ArdiumCheckboxListComponent, isStandalone: false, selector: "ard-checkbox-list", inputs: { valueFrom: { classPropertyName: "valueFrom", publicName: "valueFrom", isSignal: true, isRequired: false, transformFunction: null }, labelFrom: { classPropertyName: "labelFrom", publicName: "labelFrom", isSignal: true, isRequired: false, transformFunction: null }, disabledFrom: { classPropertyName: "disabledFrom", publicName: "disabledFrom", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: false, isRequired: false, transformFunction: null }, compareWith: { classPropertyName: "compareWith", publicName: "compareWith", isSignal: true, isRequired: false, transformFunction: null }, invertDisabled: { classPropertyName: "invertDisabled", publicName: "invertDisabled", isSignal: true, isRequired: false, transformFunction: null }, maxSelectedItems: { classPropertyName: "maxSelectedItems", publicName: "maxSelectedItems", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, host: { properties: { "attr.id": "this._htmlIdHostAttribute" } }, queries: [{ propertyName: "checkboxTemplate", first: true, predicate: ArdCheckboxListCheckboxTemplateDirective, descendants: true, isSignal: true }, { propertyName: "labelTemplate", first: true, predicate: ArdCheckboxListLabelTemplateDirective, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"ard-checkbox-list\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @for (item of items; track item.index) {\r\n <div\r\n class=\"ard-checkbox-list__item\"\r\n [class.ard-item-highlighted]=\"item.highlighted\"\r\n [class.ard-item-disabled]=\"item.disabled\"\r\n [class.ard-item-selected]=\"item.selected\"\r\n (mouseover)=\"onItemHighlight(item)\"\r\n (mouseleave)=\"onItemBlur()\"\r\n (click)=\"toggleItem(item)\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-checkbox\r\n [selected]=\"item.selected\"\r\n [disabled]=\"item.disabled\"\r\n [color]=\"color()\"\r\n [htmlId]=\"htmlId() + item.index\"\r\n [tabIndex]=\"tabIndex()\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onItemFocus(item)\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onItemBlur()\"\r\n (select)=\"selectItem(item)\"\r\n (unselect)=\"unselectItem(item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n <ng-template\r\n _ard-tmp-repository\r\n [checkboxTmp]=\"checkboxTemplate()\"\r\n />\r\n </ard-checkbox>\r\n <label [for]=\"htmlId() + item.index\">\r\n <ng-template\r\n #defaultLabelTemplate\r\n let-label=\"label\"\r\n >\r\n {{ label }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"labelTemplate()?.template || defaultLabelTemplate\"\r\n [ngTemplateOutletContext]=\"labelContextGenerator()(item)\"\r\n />\r\n </label>\r\n </div>\r\n }\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ArdiumCheckboxComponent, selector: "ard-checkbox", inputs: ["color", "unselectedColor", "state"], outputs: ["stateChange"] }, { kind: "directive", type: _CheckboxTemplateRepositoryDirective, selector: "ard-checkbox > ng-template[_ard-tmp-repository]", inputs: ["checkboxTmp"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
11129
11254
|
}
|
|
11130
11255
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumCheckboxListComponent, decorators: [{
|
|
11131
11256
|
type: Component,
|
|
11132
|
-
args: [{ standalone: false, selector: 'ard-checkbox-list', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"ard-checkbox-list\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @for (item of items; track item.index) {\r\n
|
|
11257
|
+
args: [{ standalone: false, selector: 'ard-checkbox-list', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"ard-checkbox-list\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n @for (item of items; track item.index) {\r\n <div\r\n class=\"ard-checkbox-list__item\"\r\n [class.ard-item-highlighted]=\"item.highlighted\"\r\n [class.ard-item-disabled]=\"item.disabled\"\r\n [class.ard-item-selected]=\"item.selected\"\r\n (mouseover)=\"onItemHighlight(item)\"\r\n (mouseleave)=\"onItemBlur()\"\r\n (click)=\"toggleItem(item)\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <ard-checkbox\r\n [selected]=\"item.selected\"\r\n [disabled]=\"item.disabled\"\r\n [color]=\"color()\"\r\n [htmlId]=\"htmlId() + item.index\"\r\n [tabIndex]=\"tabIndex()\"\r\n (focus)=\"onFocus($event)\"\r\n (focus)=\"onItemFocus(item)\"\r\n (blur)=\"onBlur($event)\"\r\n (blur)=\"onItemBlur()\"\r\n (select)=\"selectItem(item)\"\r\n (unselect)=\"unselectItem(item)\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n <ng-template\r\n _ard-tmp-repository\r\n [checkboxTmp]=\"checkboxTemplate()\"\r\n />\r\n </ard-checkbox>\r\n <label [for]=\"htmlId() + item.index\">\r\n <ng-template\r\n #defaultLabelTemplate\r\n let-label=\"label\"\r\n >\r\n {{ label }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"labelTemplate()?.template || defaultLabelTemplate\"\r\n [ngTemplateOutletContext]=\"labelContextGenerator()(item)\"\r\n />\r\n </label>\r\n </div>\r\n }\r\n</div>\r\n" }]
|
|
11133
11258
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
11134
11259
|
type: Inject,
|
|
11135
11260
|
args: [ARD_CHECKBOX_LIST_DEFAULTS]
|
|
@@ -11144,15 +11269,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
11144
11269
|
|
|
11145
11270
|
class ArdiumCheckboxListModule {
|
|
11146
11271
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumCheckboxListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
11147
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: ArdiumCheckboxListModule, declarations: [ArdiumCheckboxListComponent, ArdCheckboxListCheckboxTemplateDirective], imports: [CommonModule, ArdiumCheckboxModule, _CheckboxTemplateRepositoryDirective], exports: [ArdiumCheckboxListComponent, ArdCheckboxListCheckboxTemplateDirective] }); }
|
|
11272
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: ArdiumCheckboxListModule, declarations: [ArdiumCheckboxListComponent, ArdCheckboxListCheckboxTemplateDirective, ArdCheckboxListLabelTemplateDirective], imports: [CommonModule, ArdiumCheckboxModule, _CheckboxTemplateRepositoryDirective], exports: [ArdiumCheckboxListComponent, ArdCheckboxListCheckboxTemplateDirective, ArdCheckboxListLabelTemplateDirective] }); }
|
|
11148
11273
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumCheckboxListModule, imports: [CommonModule, ArdiumCheckboxModule] }); }
|
|
11149
11274
|
}
|
|
11150
11275
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumCheckboxListModule, decorators: [{
|
|
11151
11276
|
type: NgModule,
|
|
11152
11277
|
args: [{
|
|
11153
|
-
declarations: [ArdiumCheckboxListComponent, ArdCheckboxListCheckboxTemplateDirective],
|
|
11278
|
+
declarations: [ArdiumCheckboxListComponent, ArdCheckboxListCheckboxTemplateDirective, ArdCheckboxListLabelTemplateDirective],
|
|
11154
11279
|
imports: [CommonModule, ArdiumCheckboxModule, _CheckboxTemplateRepositoryDirective],
|
|
11155
|
-
exports: [ArdiumCheckboxListComponent, ArdCheckboxListCheckboxTemplateDirective],
|
|
11280
|
+
exports: [ArdiumCheckboxListComponent, ArdCheckboxListCheckboxTemplateDirective, ArdCheckboxListLabelTemplateDirective],
|
|
11156
11281
|
}]
|
|
11157
11282
|
}] });
|
|
11158
11283
|
|
|
@@ -11546,8 +11671,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
11546
11671
|
}] });
|
|
11547
11672
|
|
|
11548
11673
|
class ArdiumErrorDirective {
|
|
11674
|
+
constructor() {
|
|
11675
|
+
this.left = input(false, { transform: v => coerceBooleanProperty(v) });
|
|
11676
|
+
this.right = input(false, { transform: v => coerceBooleanProperty(v) });
|
|
11677
|
+
effect(() => {
|
|
11678
|
+
if (this.left() && this.right()) {
|
|
11679
|
+
console.error(`ARD-NF5140: Cannot align a form field error to both left and right.`);
|
|
11680
|
+
}
|
|
11681
|
+
});
|
|
11682
|
+
}
|
|
11549
11683
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumErrorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
11550
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
11684
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.15", type: ArdiumErrorDirective, isStandalone: true, selector: "[ard-error]", inputs: { left: { classPropertyName: "left", publicName: "left", isSignal: true, isRequired: false, transformFunction: null }, right: { classPropertyName: "right", publicName: "right", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.ard-error": "true", "class.ard-error-default": "!left() && !right()", "class.ard-error-left": "left() && !right()", "class.ard-error-right": "!left() && right()" } }, ngImport: i0 }); }
|
|
11551
11685
|
}
|
|
11552
11686
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumErrorDirective, decorators: [{
|
|
11553
11687
|
type: Directive,
|
|
@@ -11556,9 +11690,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
11556
11690
|
standalone: true,
|
|
11557
11691
|
host: {
|
|
11558
11692
|
'[class.ard-error]': 'true',
|
|
11693
|
+
'[class.ard-error-default]': '!left() && !right()',
|
|
11694
|
+
'[class.ard-error-left]': 'left() && !right()',
|
|
11695
|
+
'[class.ard-error-right]': '!left() && right()',
|
|
11559
11696
|
},
|
|
11560
11697
|
}]
|
|
11561
|
-
}] });
|
|
11698
|
+
}], ctorParameters: () => [] });
|
|
11562
11699
|
|
|
11563
11700
|
class ArdiumErrorComponent {
|
|
11564
11701
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -11662,6 +11799,38 @@ function provideFormFieldDefaults(config) {
|
|
|
11662
11799
|
return { provide: ARD_FORM_FIELD_DEFAULTS, useValue: { ..._formFieldDefaults, ...config } };
|
|
11663
11800
|
}
|
|
11664
11801
|
|
|
11802
|
+
class ArdiumHintErrorDirective {
|
|
11803
|
+
constructor() {
|
|
11804
|
+
this.left = input(false, { transform: v => coerceBooleanProperty(v) });
|
|
11805
|
+
this.right = input(false, { transform: v => coerceBooleanProperty(v) });
|
|
11806
|
+
effect(() => {
|
|
11807
|
+
if (this.left() && this.right()) {
|
|
11808
|
+
console.error(`ARD-NF5150: Cannot align a form field hint-error to both left and right.`);
|
|
11809
|
+
}
|
|
11810
|
+
});
|
|
11811
|
+
}
|
|
11812
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumHintErrorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
11813
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.15", type: ArdiumHintErrorDirective, isStandalone: true, selector: "[ard-hint-error]", inputs: { left: { classPropertyName: "left", publicName: "left", isSignal: true, isRequired: false, transformFunction: null }, right: { classPropertyName: "right", publicName: "right", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.ard-hint-error": "true", "class.ard-hint": "true", "class.ard-error-default": "!left() && !right()", "class.ard-error-left": "left() && !right()", "class.ard-error-right": "!left() && right()", "class.ard-error": "true", "class.ard-hint-default": "!left() && !right()", "class.ard-hint-left": "left() && !right()", "class.ard-hint-right": "!left() && right()" } }, ngImport: i0 }); }
|
|
11814
|
+
}
|
|
11815
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumHintErrorDirective, decorators: [{
|
|
11816
|
+
type: Directive,
|
|
11817
|
+
args: [{
|
|
11818
|
+
selector: '[ard-hint-error]',
|
|
11819
|
+
standalone: true,
|
|
11820
|
+
host: {
|
|
11821
|
+
'[class.ard-hint-error]': 'true',
|
|
11822
|
+
'[class.ard-hint]': 'true',
|
|
11823
|
+
'[class.ard-error-default]': '!left() && !right()',
|
|
11824
|
+
'[class.ard-error-left]': 'left() && !right()',
|
|
11825
|
+
'[class.ard-error-right]': '!left() && right()',
|
|
11826
|
+
'[class.ard-error]': 'true',
|
|
11827
|
+
'[class.ard-hint-default]': '!left() && !right()',
|
|
11828
|
+
'[class.ard-hint-left]': 'left() && !right()',
|
|
11829
|
+
'[class.ard-hint-right]': '!left() && right()',
|
|
11830
|
+
},
|
|
11831
|
+
}]
|
|
11832
|
+
}], ctorParameters: () => [] });
|
|
11833
|
+
|
|
11665
11834
|
class ArdiumHintDirective {
|
|
11666
11835
|
constructor() {
|
|
11667
11836
|
this.left = input(false, { transform: v => coerceBooleanProperty(v) });
|
|
@@ -11698,7 +11867,7 @@ class ArdiumLabelComponent {
|
|
|
11698
11867
|
this.optionalText = input(this._DEFAULTS.labelOptionalText);
|
|
11699
11868
|
effect(() => {
|
|
11700
11869
|
if (this.required() && this.optional()) {
|
|
11701
|
-
console.error(`ARD-
|
|
11870
|
+
console.error(`ARD-NF5120: Cannot set a form field label to be both required and optional.`);
|
|
11702
11871
|
}
|
|
11703
11872
|
});
|
|
11704
11873
|
}
|
|
@@ -11715,7 +11884,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
11715
11884
|
class _FormFieldBase {
|
|
11716
11885
|
constructor() {
|
|
11717
11886
|
this._DEFAULTS = inject(ARD_FORM_FIELD_DEFAULTS);
|
|
11718
|
-
this.
|
|
11887
|
+
this.defaultHintAlign = input(this._DEFAULTS.defaultHintAlign);
|
|
11888
|
+
this.alignHintToLeftByDefault = computed(() => this.defaultHintAlign() === SimpleOneAxisAlignment.Left);
|
|
11719
11889
|
this.control = contentChild(ARD_FORM_FIELD_CONTROL);
|
|
11720
11890
|
// get controlRequired() {
|
|
11721
11891
|
// const fnOrValue = this.control()?.required;
|
|
@@ -11724,7 +11894,9 @@ class _FormFieldBase {
|
|
|
11724
11894
|
this.label = contentChild(ArdiumLabelComponent);
|
|
11725
11895
|
this.hints = contentChildren(ArdiumHintDirective);
|
|
11726
11896
|
this.errors = contentChildren(ArdiumErrorDirective);
|
|
11727
|
-
this.
|
|
11897
|
+
this.hintErrors = contentChildren(ArdiumHintErrorDirective);
|
|
11898
|
+
this.hasAnyHint = computed(() => this.hints().length > 0 || this.hintErrors().length > 0);
|
|
11899
|
+
this.hasAnyError = computed(() => this.errors().length > 0);
|
|
11728
11900
|
this.reserveHintLine = input(this._DEFAULTS.reserveHintLine, { transform: v => coerceBooleanProperty(v) });
|
|
11729
11901
|
}
|
|
11730
11902
|
get controlHasError() {
|
|
@@ -11749,7 +11921,7 @@ class _FormFieldBase {
|
|
|
11749
11921
|
}
|
|
11750
11922
|
}
|
|
11751
11923
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: _FormFieldBase, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
11752
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.2.15", type: _FormFieldBase, isStandalone: true, inputs: { reserveHintLine: { classPropertyName: "reserveHintLine", publicName: "reserveHintLine", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "control", first: true, predicate: ARD_FORM_FIELD_CONTROL, descendants: true, isSignal: true }, { propertyName: "label", first: true, predicate: ArdiumLabelComponent, descendants: true, isSignal: true }, { propertyName: "hints", predicate: ArdiumHintDirective, isSignal: true }, { propertyName: "errors", predicate: ArdiumErrorDirective, isSignal: true }], ngImport: i0 }); }
|
|
11924
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.2.15", type: _FormFieldBase, isStandalone: true, inputs: { defaultHintAlign: { classPropertyName: "defaultHintAlign", publicName: "defaultHintAlign", isSignal: true, isRequired: false, transformFunction: null }, reserveHintLine: { classPropertyName: "reserveHintLine", publicName: "reserveHintLine", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "control", first: true, predicate: ARD_FORM_FIELD_CONTROL, descendants: true, isSignal: true }, { propertyName: "label", first: true, predicate: ArdiumLabelComponent, descendants: true, isSignal: true }, { propertyName: "hints", predicate: ArdiumHintDirective, isSignal: true }, { propertyName: "errors", predicate: ArdiumErrorDirective, isSignal: true }, { propertyName: "hintErrors", predicate: ArdiumHintErrorDirective, isSignal: true }], ngImport: i0 }); }
|
|
11753
11925
|
}
|
|
11754
11926
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: _FormFieldBase, decorators: [{
|
|
11755
11927
|
type: Directive
|
|
@@ -11757,11 +11929,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
11757
11929
|
|
|
11758
11930
|
class ArdiumFormFieldComponent extends _FormFieldBase {
|
|
11759
11931
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumFormFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
11760
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: ArdiumFormFieldComponent, isStandalone: false, selector: "ard-form-field", usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"ard-form-field\"\r\n [class.ard-form-field__with-error]=\"controlHasError\"\r\n [class.ard-form-field__is-success]=\"controlIsSuccess\"\r\n [class.ard-form-field__control-disabled]=\"controlDisabled\"\r\n>\r\n <label\r\n class=\"ard-form-field__label\"\r\n [attr.for]=\"controlHtmlId\"\r\n >\r\n <ng-content select=\"ard-label, [ard-label]\" />\r\n </label>\r\n <div class=\"ard-form-field__input\">\r\n <ng-content />\r\n </div>\r\n <div\r\n class=\"ard-form-field__hints\"\r\n [class.ard-form-field__reserve-hint-line]=\"reserveHintLine()\"\r\n [class.ard-form-field__hints-default-left]=\"alignHintToLeftByDefault\"\r\n >\r\n @if (hasAnyError()) {\r\n <div class=\"ard-form-
|
|
11932
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: ArdiumFormFieldComponent, isStandalone: false, selector: "ard-form-field", usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"ard-form-field\"\r\n [class.ard-form-field__with-error]=\"controlHasError\"\r\n [class.ard-form-field__is-success]=\"controlIsSuccess\"\r\n [class.ard-form-field__control-disabled]=\"controlDisabled\"\r\n>\r\n <label\r\n class=\"ard-form-field__label\"\r\n [attr.for]=\"controlHtmlId\"\r\n >\r\n <ng-content select=\"ard-label, [ard-label]\" />\r\n </label>\r\n <div class=\"ard-form-field__input\">\r\n <ng-content />\r\n </div>\r\n <div\r\n class=\"ard-form-field__hints\"\r\n [class.ard-form-field__errors]=\"hasAnyError()\"\r\n [class.ard-form-field__reserve-hint-line]=\"reserveHintLine() || hasAnyHint()\"\r\n [class.ard-form-field__hints-default-left]=\"alignHintToLeftByDefault()\"\r\n >\r\n @if (hasAnyError()) {\r\n <div class=\"ard-form-field__errors-left\">\r\n @if (alignHintToLeftByDefault()) {\r\n <div class=\"ard-form-field__default-error\">\r\n <ng-template [ngTemplateOutlet]=\"defaultErrors\" />\r\n <ng-template [ngTemplateOutlet]=\"defaultHintErrors\" />\r\n </div>\r\n }\r\n <ng-content select=\"ard-error[left], [ard-error][left]\" />\r\n <ng-template [ngTemplateOutlet]=\"leftHintErrors\" />\r\n </div>\r\n <div class=\"ard-form-field__errors-right\">\r\n @if (!alignHintToLeftByDefault()) {\r\n <div class=\"ard-form-field__default-error\">\r\n <ng-template [ngTemplateOutlet]=\"defaultErrors\" />\r\n <ng-template [ngTemplateOutlet]=\"defaultHintErrors\" />\r\n </div>\r\n }\r\n <ng-content select=\"ard-error[right], [ard-error][right]\" />\r\n <ng-template [ngTemplateOutlet]=\"rightHintErrors\" />\r\n </div>\r\n } @else {\r\n <div class=\"ard-form-field__hints-left\">\r\n @if (alignHintToLeftByDefault()) {\r\n <div class=\"ard-form-field__default-hint\">\r\n <ng-template [ngTemplateOutlet]=\"defaultHints\" />\r\n <ng-template [ngTemplateOutlet]=\"defaultHintErrors\" />\r\n </div>\r\n }\r\n <ng-content select=\"ard-hint[left], [ard-hint][left]\" />\r\n <ng-template [ngTemplateOutlet]=\"leftHintErrors\" />\r\n </div>\r\n <div class=\"ard-form-field__hints-right\">\r\n @if (!alignHintToLeftByDefault()) {\r\n <div class=\"ard-form-field__default-hint\">\r\n <ng-template [ngTemplateOutlet]=\"defaultHints\" />\r\n <ng-template [ngTemplateOutlet]=\"defaultHintErrors\" />\r\n </div>\r\n }\r\n <ng-content select=\"ard-hint[right], [ard-hint][right]\" />\r\n <ng-template [ngTemplateOutlet]=\"rightHintErrors\" />\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n\r\n<ng-template #defaultHints>\r\n <ng-content select=\"ard-hint:not([left]):not([right]), [ard-hint]:not([left]):not([right])\" />\r\n</ng-template>\r\n\r\n<ng-template #defaultErrors>\r\n <ng-content select=\"ard-error:not([left]):not([right]), [ard-error]:not([left]):not([right])\" />\r\n</ng-template>\r\n\r\n<ng-template #defaultHintErrors>\r\n <ng-content select=\"ard-hint-error:not([left]):not([right]), [ard-hint-error]:not([left]):not([right])\" />\r\n</ng-template>\r\n<ng-template #leftHintErrors>\r\n <ng-content select=\"ard-hint-error[left], [ard-hint-error][left]\" />\r\n</ng-template>\r\n<ng-template #rightHintErrors>\r\n <ng-content select=\"ard-hint-error[right], [ard-hint-error][right]\" />\r\n</ng-template>\r\n", styles: [":host{display:block}.ard-horizontal-form-field{display:flex}.ard-form-field__hints,.ard-form-field__errors{display:flex;justify-content:space-between}.ard-form-field__hints>*,.ard-form-field__errors>*{display:flex;flex-direction:column}.ard-form-field__hints .ard-form-field__hints-left .ard-form-field__default-hint,.ard-form-field__hints .ard-form-field__errors-left .ard-form-field__default-error,.ard-form-field__errors .ard-form-field__hints-left .ard-form-field__default-hint,.ard-form-field__errors .ard-form-field__errors-left .ard-form-field__default-error{display:none}.ard-form-field__hints.ard-form-field__hints-default-left .ard-form-field__hints-left .ard-form-field__default-hint,.ard-form-field__hints.ard-form-field__hints-default-left .ard-form-field__errors-left .ard-form-field__default-error,.ard-form-field__errors.ard-form-field__hints-default-left .ard-form-field__hints-left .ard-form-field__default-hint,.ard-form-field__errors.ard-form-field__hints-default-left .ard-form-field__errors-left .ard-form-field__default-error{display:flex;flex-direction:column}.ard-form-field__hints.ard-form-field__hints-default-left .ard-form-field__hints-right .ard-form-field__default-hint,.ard-form-field__hints.ard-form-field__hints-default-left .ard-form-field__errors-right .ard-form-field__default-error,.ard-form-field__errors.ard-form-field__hints-default-left .ard-form-field__hints-right .ard-form-field__default-hint,.ard-form-field__errors.ard-form-field__hints-default-left .ard-form-field__errors-right .ard-form-field__default-error{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
11761
11933
|
}
|
|
11762
11934
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumFormFieldComponent, decorators: [{
|
|
11763
11935
|
type: Component,
|
|
11764
|
-
args: [{ standalone: false, selector: 'ard-form-field', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"ard-form-field\"\r\n [class.ard-form-field__with-error]=\"controlHasError\"\r\n [class.ard-form-field__is-success]=\"controlIsSuccess\"\r\n [class.ard-form-field__control-disabled]=\"controlDisabled\"\r\n>\r\n <label\r\n class=\"ard-form-field__label\"\r\n [attr.for]=\"controlHtmlId\"\r\n >\r\n <ng-content select=\"ard-label, [ard-label]\" />\r\n </label>\r\n <div class=\"ard-form-field__input\">\r\n <ng-content />\r\n </div>\r\n <div\r\n class=\"ard-form-field__hints\"\r\n [class.ard-form-field__reserve-hint-line]=\"reserveHintLine()\"\r\n [class.ard-form-field__hints-default-left]=\"alignHintToLeftByDefault\"\r\n >\r\n @if (hasAnyError()) {\r\n <div class=\"ard-form-
|
|
11936
|
+
args: [{ standalone: false, selector: 'ard-form-field', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"ard-form-field\"\r\n [class.ard-form-field__with-error]=\"controlHasError\"\r\n [class.ard-form-field__is-success]=\"controlIsSuccess\"\r\n [class.ard-form-field__control-disabled]=\"controlDisabled\"\r\n>\r\n <label\r\n class=\"ard-form-field__label\"\r\n [attr.for]=\"controlHtmlId\"\r\n >\r\n <ng-content select=\"ard-label, [ard-label]\" />\r\n </label>\r\n <div class=\"ard-form-field__input\">\r\n <ng-content />\r\n </div>\r\n <div\r\n class=\"ard-form-field__hints\"\r\n [class.ard-form-field__errors]=\"hasAnyError()\"\r\n [class.ard-form-field__reserve-hint-line]=\"reserveHintLine() || hasAnyHint()\"\r\n [class.ard-form-field__hints-default-left]=\"alignHintToLeftByDefault()\"\r\n >\r\n @if (hasAnyError()) {\r\n <div class=\"ard-form-field__errors-left\">\r\n @if (alignHintToLeftByDefault()) {\r\n <div class=\"ard-form-field__default-error\">\r\n <ng-template [ngTemplateOutlet]=\"defaultErrors\" />\r\n <ng-template [ngTemplateOutlet]=\"defaultHintErrors\" />\r\n </div>\r\n }\r\n <ng-content select=\"ard-error[left], [ard-error][left]\" />\r\n <ng-template [ngTemplateOutlet]=\"leftHintErrors\" />\r\n </div>\r\n <div class=\"ard-form-field__errors-right\">\r\n @if (!alignHintToLeftByDefault()) {\r\n <div class=\"ard-form-field__default-error\">\r\n <ng-template [ngTemplateOutlet]=\"defaultErrors\" />\r\n <ng-template [ngTemplateOutlet]=\"defaultHintErrors\" />\r\n </div>\r\n }\r\n <ng-content select=\"ard-error[right], [ard-error][right]\" />\r\n <ng-template [ngTemplateOutlet]=\"rightHintErrors\" />\r\n </div>\r\n } @else {\r\n <div class=\"ard-form-field__hints-left\">\r\n @if (alignHintToLeftByDefault()) {\r\n <div class=\"ard-form-field__default-hint\">\r\n <ng-template [ngTemplateOutlet]=\"defaultHints\" />\r\n <ng-template [ngTemplateOutlet]=\"defaultHintErrors\" />\r\n </div>\r\n }\r\n <ng-content select=\"ard-hint[left], [ard-hint][left]\" />\r\n <ng-template [ngTemplateOutlet]=\"leftHintErrors\" />\r\n </div>\r\n <div class=\"ard-form-field__hints-right\">\r\n @if (!alignHintToLeftByDefault()) {\r\n <div class=\"ard-form-field__default-hint\">\r\n <ng-template [ngTemplateOutlet]=\"defaultHints\" />\r\n <ng-template [ngTemplateOutlet]=\"defaultHintErrors\" />\r\n </div>\r\n }\r\n <ng-content select=\"ard-hint[right], [ard-hint][right]\" />\r\n <ng-template [ngTemplateOutlet]=\"rightHintErrors\" />\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n\r\n<ng-template #defaultHints>\r\n <ng-content select=\"ard-hint:not([left]):not([right]), [ard-hint]:not([left]):not([right])\" />\r\n</ng-template>\r\n\r\n<ng-template #defaultErrors>\r\n <ng-content select=\"ard-error:not([left]):not([right]), [ard-error]:not([left]):not([right])\" />\r\n</ng-template>\r\n\r\n<ng-template #defaultHintErrors>\r\n <ng-content select=\"ard-hint-error:not([left]):not([right]), [ard-hint-error]:not([left]):not([right])\" />\r\n</ng-template>\r\n<ng-template #leftHintErrors>\r\n <ng-content select=\"ard-hint-error[left], [ard-hint-error][left]\" />\r\n</ng-template>\r\n<ng-template #rightHintErrors>\r\n <ng-content select=\"ard-hint-error[right], [ard-hint-error][right]\" />\r\n</ng-template>\r\n", styles: [":host{display:block}.ard-horizontal-form-field{display:flex}.ard-form-field__hints,.ard-form-field__errors{display:flex;justify-content:space-between}.ard-form-field__hints>*,.ard-form-field__errors>*{display:flex;flex-direction:column}.ard-form-field__hints .ard-form-field__hints-left .ard-form-field__default-hint,.ard-form-field__hints .ard-form-field__errors-left .ard-form-field__default-error,.ard-form-field__errors .ard-form-field__hints-left .ard-form-field__default-hint,.ard-form-field__errors .ard-form-field__errors-left .ard-form-field__default-error{display:none}.ard-form-field__hints.ard-form-field__hints-default-left .ard-form-field__hints-left .ard-form-field__default-hint,.ard-form-field__hints.ard-form-field__hints-default-left .ard-form-field__errors-left .ard-form-field__default-error,.ard-form-field__errors.ard-form-field__hints-default-left .ard-form-field__hints-left .ard-form-field__default-hint,.ard-form-field__errors.ard-form-field__hints-default-left .ard-form-field__errors-left .ard-form-field__default-error{display:flex;flex-direction:column}.ard-form-field__hints.ard-form-field__hints-default-left .ard-form-field__hints-right .ard-form-field__default-hint,.ard-form-field__hints.ard-form-field__hints-default-left .ard-form-field__errors-right .ard-form-field__default-error,.ard-form-field__errors.ard-form-field__hints-default-left .ard-form-field__hints-right .ard-form-field__default-hint,.ard-form-field__errors.ard-form-field__hints-default-left .ard-form-field__errors-right .ard-form-field__default-error{display:none}\n"] }]
|
|
11937
|
+
}] });
|
|
11938
|
+
|
|
11939
|
+
class ArdiumHintErrorComponent {
|
|
11940
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumHintErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11941
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: ArdiumHintErrorComponent, isStandalone: false, selector: "ard-hint-error", hostDirectives: [{ directive: ArdiumHintErrorDirective, inputs: ["left", "left", "right", "right"] }], ngImport: i0, template: '<ng-content />', isInline: true }); }
|
|
11942
|
+
}
|
|
11943
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumHintErrorComponent, decorators: [{
|
|
11944
|
+
type: Component,
|
|
11945
|
+
args: [{
|
|
11946
|
+
standalone: false,
|
|
11947
|
+
selector: 'ard-hint-error',
|
|
11948
|
+
template: '<ng-content />',
|
|
11949
|
+
hostDirectives: [{ directive: ArdiumHintErrorDirective, inputs: ['left', 'right'] }],
|
|
11950
|
+
}]
|
|
11765
11951
|
}] });
|
|
11766
11952
|
|
|
11767
11953
|
class ArdiumHintComponent {
|
|
@@ -11780,11 +11966,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
11780
11966
|
|
|
11781
11967
|
class ArdiumHorizontalFormFieldComponent extends _FormFieldBase {
|
|
11782
11968
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumHorizontalFormFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
11783
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: ArdiumHorizontalFormFieldComponent, isStandalone: false, selector: "ard-horizontal-form-field", usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"ard-horizontal-form-field\"\r\n [class.ard-form-field__with-error]=\"controlHasError\"\r\n [class.ard-form-field__is-success]=\"controlIsSuccess\"\r\n [class.ard-form-field__control-disabled]=\"controlDisabled\"\r\n>\r\n <div class=\"ard-form-field__label-container\">\r\n <label\r\n class=\"ard-form-field__label\"\r\n [attr.for]=\"controlHtmlId\"\r\n >\r\n <ng-content select=\"ard-label, [ard-label]\" />\r\n </label>\r\n </div>\r\n <div class=\"ard-form-field__non-label\">\r\n <div class=\"ard-form-field__input\">\r\n <ng-content />\r\n </div>\r\n <div\r\n class=\"ard-form-field__hints\"\r\n [class.ard-form-field__reserve-hint-line]=\"reserveHintLine()\"\r\n [class.ard-form-field__hints-default-left]=\"alignHintToLeftByDefault\"\r\n >\r\n @if (hasAnyError()) {\r\n <div class=\"ard-form-
|
|
11969
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: ArdiumHorizontalFormFieldComponent, isStandalone: false, selector: "ard-horizontal-form-field", usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"ard-horizontal-form-field\"\r\n [class.ard-form-field__with-error]=\"controlHasError\"\r\n [class.ard-form-field__is-success]=\"controlIsSuccess\"\r\n [class.ard-form-field__control-disabled]=\"controlDisabled\"\r\n>\r\n <div class=\"ard-form-field__label-container\">\r\n <label\r\n class=\"ard-form-field__label\"\r\n [attr.for]=\"controlHtmlId\"\r\n >\r\n <ng-content select=\"ard-label, [ard-label]\" />\r\n </label>\r\n </div>\r\n <div class=\"ard-form-field__non-label\">\r\n <div class=\"ard-form-field__input\">\r\n <ng-content />\r\n </div>\r\n <div\r\n class=\"ard-form-field__hints\"\r\n [class.ard-form-field__errors]=\"hasAnyError()\"\r\n [class.ard-form-field__reserve-hint-line]=\"reserveHintLine() || hasAnyHint()\"\r\n [class.ard-form-field__hints-default-left]=\"alignHintToLeftByDefault()\"\r\n >\r\n @if (hasAnyError()) {\r\n <div class=\"ard-form-field__errors-left\">\r\n @if (alignHintToLeftByDefault()) {\r\n <div class=\"ard-form-field__default-error\">\r\n <ng-template [ngTemplateOutlet]=\"defaultErrors\" />\r\n <ng-template [ngTemplateOutlet]=\"defaultHintErrors\" />\r\n </div>\r\n }\r\n <ng-content select=\"ard-error[left], [ard-error][left]\" />\r\n <ng-template [ngTemplateOutlet]=\"leftHintErrors\" />\r\n </div>\r\n <div class=\"ard-form-field__errors-right\">\r\n @if (!alignHintToLeftByDefault()) {\r\n <div class=\"ard-form-field__default-error\">\r\n <ng-template [ngTemplateOutlet]=\"defaultErrors\" />\r\n <ng-template [ngTemplateOutlet]=\"defaultHintErrors\" />\r\n </div>\r\n }\r\n <ng-content select=\"ard-error[right], [ard-error][right]\" />\r\n <ng-template [ngTemplateOutlet]=\"rightHintErrors\" />\r\n </div>\r\n } @else {\r\n <div class=\"ard-form-field__hints-left\">\r\n @if (alignHintToLeftByDefault()) {\r\n <div class=\"ard-form-field__default-hint\">\r\n <ng-template [ngTemplateOutlet]=\"defaultHints\" />\r\n <ng-template [ngTemplateOutlet]=\"defaultHintErrors\" />\r\n </div>\r\n }\r\n <ng-content select=\"ard-hint[left], [ard-hint][left]\" />\r\n <ng-template [ngTemplateOutlet]=\"leftHintErrors\" />\r\n </div>\r\n <div class=\"ard-form-field__hints-right\">\r\n @if (!alignHintToLeftByDefault()) {\r\n <div class=\"ard-form-field__default-hint\">\r\n <ng-template [ngTemplateOutlet]=\"defaultHints\" />\r\n <ng-template [ngTemplateOutlet]=\"defaultHintErrors\" />\r\n </div>\r\n }\r\n <ng-content select=\"ard-hint[right], [ard-hint][right]\" />\r\n <ng-template [ngTemplateOutlet]=\"rightHintErrors\" />\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #defaultHints>\r\n <ng-content select=\"ard-hint:not([left]):not([right]), [ard-hint]:not([left]):not([right])\" />\r\n</ng-template>\r\n\r\n<ng-template #defaultErrors>\r\n <ng-content select=\"ard-error:not([left]):not([right]), [ard-error]:not([left]):not([right])\" />\r\n</ng-template>\r\n\r\n<ng-template #defaultHintErrors>\r\n <ng-content select=\"ard-hint-error:not([left]):not([right]), [ard-hint-error]:not([left]):not([right])\" />\r\n</ng-template>\r\n<ng-template #leftHintErrors>\r\n <ng-content select=\"ard-hint-error[left], [ard-hint-error][left]\" />\r\n</ng-template>\r\n<ng-template #rightHintErrors>\r\n <ng-content select=\"ard-hint-error[right], [ard-hint-error][right]\" />\r\n</ng-template>\r\n", styles: [":host{display:block}.ard-horizontal-form-field{display:flex}.ard-form-field__hints,.ard-form-field__errors{display:flex;justify-content:space-between}.ard-form-field__hints>*,.ard-form-field__errors>*{display:flex;flex-direction:column}.ard-form-field__hints .ard-form-field__hints-left .ard-form-field__default-hint,.ard-form-field__hints .ard-form-field__errors-left .ard-form-field__default-error,.ard-form-field__errors .ard-form-field__hints-left .ard-form-field__default-hint,.ard-form-field__errors .ard-form-field__errors-left .ard-form-field__default-error{display:none}.ard-form-field__hints.ard-form-field__hints-default-left .ard-form-field__hints-left .ard-form-field__default-hint,.ard-form-field__hints.ard-form-field__hints-default-left .ard-form-field__errors-left .ard-form-field__default-error,.ard-form-field__errors.ard-form-field__hints-default-left .ard-form-field__hints-left .ard-form-field__default-hint,.ard-form-field__errors.ard-form-field__hints-default-left .ard-form-field__errors-left .ard-form-field__default-error{display:flex;flex-direction:column}.ard-form-field__hints.ard-form-field__hints-default-left .ard-form-field__hints-right .ard-form-field__default-hint,.ard-form-field__hints.ard-form-field__hints-default-left .ard-form-field__errors-right .ard-form-field__default-error,.ard-form-field__errors.ard-form-field__hints-default-left .ard-form-field__hints-right .ard-form-field__default-hint,.ard-form-field__errors.ard-form-field__hints-default-left .ard-form-field__errors-right .ard-form-field__default-error{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
11784
11970
|
}
|
|
11785
11971
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumHorizontalFormFieldComponent, decorators: [{
|
|
11786
11972
|
type: Component,
|
|
11787
|
-
args: [{ standalone: false, selector: 'ard-horizontal-form-field', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"ard-horizontal-form-field\"\r\n [class.ard-form-field__with-error]=\"controlHasError\"\r\n [class.ard-form-field__is-success]=\"controlIsSuccess\"\r\n [class.ard-form-field__control-disabled]=\"controlDisabled\"\r\n>\r\n <div class=\"ard-form-field__label-container\">\r\n <label\r\n class=\"ard-form-field__label\"\r\n [attr.for]=\"controlHtmlId\"\r\n >\r\n <ng-content select=\"ard-label, [ard-label]\" />\r\n </label>\r\n </div>\r\n <div class=\"ard-form-field__non-label\">\r\n <div class=\"ard-form-field__input\">\r\n <ng-content />\r\n </div>\r\n <div\r\n class=\"ard-form-field__hints\"\r\n [class.ard-form-field__reserve-hint-line]=\"reserveHintLine()\"\r\n [class.ard-form-field__hints-default-left]=\"alignHintToLeftByDefault\"\r\n >\r\n @if (hasAnyError()) {\r\n <div class=\"ard-form-
|
|
11973
|
+
args: [{ standalone: false, selector: 'ard-horizontal-form-field', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"ard-horizontal-form-field\"\r\n [class.ard-form-field__with-error]=\"controlHasError\"\r\n [class.ard-form-field__is-success]=\"controlIsSuccess\"\r\n [class.ard-form-field__control-disabled]=\"controlDisabled\"\r\n>\r\n <div class=\"ard-form-field__label-container\">\r\n <label\r\n class=\"ard-form-field__label\"\r\n [attr.for]=\"controlHtmlId\"\r\n >\r\n <ng-content select=\"ard-label, [ard-label]\" />\r\n </label>\r\n </div>\r\n <div class=\"ard-form-field__non-label\">\r\n <div class=\"ard-form-field__input\">\r\n <ng-content />\r\n </div>\r\n <div\r\n class=\"ard-form-field__hints\"\r\n [class.ard-form-field__errors]=\"hasAnyError()\"\r\n [class.ard-form-field__reserve-hint-line]=\"reserveHintLine() || hasAnyHint()\"\r\n [class.ard-form-field__hints-default-left]=\"alignHintToLeftByDefault()\"\r\n >\r\n @if (hasAnyError()) {\r\n <div class=\"ard-form-field__errors-left\">\r\n @if (alignHintToLeftByDefault()) {\r\n <div class=\"ard-form-field__default-error\">\r\n <ng-template [ngTemplateOutlet]=\"defaultErrors\" />\r\n <ng-template [ngTemplateOutlet]=\"defaultHintErrors\" />\r\n </div>\r\n }\r\n <ng-content select=\"ard-error[left], [ard-error][left]\" />\r\n <ng-template [ngTemplateOutlet]=\"leftHintErrors\" />\r\n </div>\r\n <div class=\"ard-form-field__errors-right\">\r\n @if (!alignHintToLeftByDefault()) {\r\n <div class=\"ard-form-field__default-error\">\r\n <ng-template [ngTemplateOutlet]=\"defaultErrors\" />\r\n <ng-template [ngTemplateOutlet]=\"defaultHintErrors\" />\r\n </div>\r\n }\r\n <ng-content select=\"ard-error[right], [ard-error][right]\" />\r\n <ng-template [ngTemplateOutlet]=\"rightHintErrors\" />\r\n </div>\r\n } @else {\r\n <div class=\"ard-form-field__hints-left\">\r\n @if (alignHintToLeftByDefault()) {\r\n <div class=\"ard-form-field__default-hint\">\r\n <ng-template [ngTemplateOutlet]=\"defaultHints\" />\r\n <ng-template [ngTemplateOutlet]=\"defaultHintErrors\" />\r\n </div>\r\n }\r\n <ng-content select=\"ard-hint[left], [ard-hint][left]\" />\r\n <ng-template [ngTemplateOutlet]=\"leftHintErrors\" />\r\n </div>\r\n <div class=\"ard-form-field__hints-right\">\r\n @if (!alignHintToLeftByDefault()) {\r\n <div class=\"ard-form-field__default-hint\">\r\n <ng-template [ngTemplateOutlet]=\"defaultHints\" />\r\n <ng-template [ngTemplateOutlet]=\"defaultHintErrors\" />\r\n </div>\r\n }\r\n <ng-content select=\"ard-hint[right], [ard-hint][right]\" />\r\n <ng-template [ngTemplateOutlet]=\"rightHintErrors\" />\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #defaultHints>\r\n <ng-content select=\"ard-hint:not([left]):not([right]), [ard-hint]:not([left]):not([right])\" />\r\n</ng-template>\r\n\r\n<ng-template #defaultErrors>\r\n <ng-content select=\"ard-error:not([left]):not([right]), [ard-error]:not([left]):not([right])\" />\r\n</ng-template>\r\n\r\n<ng-template #defaultHintErrors>\r\n <ng-content select=\"ard-hint-error:not([left]):not([right]), [ard-hint-error]:not([left]):not([right])\" />\r\n</ng-template>\r\n<ng-template #leftHintErrors>\r\n <ng-content select=\"ard-hint-error[left], [ard-hint-error][left]\" />\r\n</ng-template>\r\n<ng-template #rightHintErrors>\r\n <ng-content select=\"ard-hint-error[right], [ard-hint-error][right]\" />\r\n</ng-template>\r\n", styles: [":host{display:block}.ard-horizontal-form-field{display:flex}.ard-form-field__hints,.ard-form-field__errors{display:flex;justify-content:space-between}.ard-form-field__hints>*,.ard-form-field__errors>*{display:flex;flex-direction:column}.ard-form-field__hints .ard-form-field__hints-left .ard-form-field__default-hint,.ard-form-field__hints .ard-form-field__errors-left .ard-form-field__default-error,.ard-form-field__errors .ard-form-field__hints-left .ard-form-field__default-hint,.ard-form-field__errors .ard-form-field__errors-left .ard-form-field__default-error{display:none}.ard-form-field__hints.ard-form-field__hints-default-left .ard-form-field__hints-left .ard-form-field__default-hint,.ard-form-field__hints.ard-form-field__hints-default-left .ard-form-field__errors-left .ard-form-field__default-error,.ard-form-field__errors.ard-form-field__hints-default-left .ard-form-field__hints-left .ard-form-field__default-hint,.ard-form-field__errors.ard-form-field__hints-default-left .ard-form-field__errors-left .ard-form-field__default-error{display:flex;flex-direction:column}.ard-form-field__hints.ard-form-field__hints-default-left .ard-form-field__hints-right .ard-form-field__default-hint,.ard-form-field__hints.ard-form-field__hints-default-left .ard-form-field__errors-right .ard-form-field__default-error,.ard-form-field__errors.ard-form-field__hints-default-left .ard-form-field__hints-right .ard-form-field__default-hint,.ard-form-field__errors.ard-form-field__hints-default-left .ard-form-field__errors-right .ard-form-field__default-error{display:none}\n"] }]
|
|
11788
11974
|
}] });
|
|
11789
11975
|
|
|
11790
11976
|
class ArdiumFormFieldModule {
|
|
@@ -11794,12 +11980,14 @@ class ArdiumFormFieldModule {
|
|
|
11794
11980
|
ArdiumFormFieldNativeInputAdapterDirective,
|
|
11795
11981
|
ArdiumLabelComponent,
|
|
11796
11982
|
ArdiumHintComponent,
|
|
11797
|
-
ArdiumErrorComponent
|
|
11983
|
+
ArdiumErrorComponent,
|
|
11984
|
+
ArdiumHintErrorComponent], imports: [CommonModule, ArdiumHintDirective, ArdiumErrorDirective], exports: [ArdiumFormFieldComponent,
|
|
11798
11985
|
ArdiumHorizontalFormFieldComponent,
|
|
11799
11986
|
ArdiumFormFieldNativeInputAdapterDirective,
|
|
11800
11987
|
ArdiumLabelComponent,
|
|
11801
11988
|
ArdiumHintComponent,
|
|
11802
|
-
ArdiumErrorComponent
|
|
11989
|
+
ArdiumErrorComponent,
|
|
11990
|
+
ArdiumHintErrorComponent] }); }
|
|
11803
11991
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumFormFieldModule, imports: [CommonModule] }); }
|
|
11804
11992
|
}
|
|
11805
11993
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumFormFieldModule, decorators: [{
|
|
@@ -11812,6 +12000,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
11812
12000
|
ArdiumLabelComponent,
|
|
11813
12001
|
ArdiumHintComponent,
|
|
11814
12002
|
ArdiumErrorComponent,
|
|
12003
|
+
ArdiumHintErrorComponent,
|
|
11815
12004
|
],
|
|
11816
12005
|
imports: [CommonModule, ArdiumHintDirective, ArdiumErrorDirective],
|
|
11817
12006
|
exports: [
|
|
@@ -11821,6 +12010,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
11821
12010
|
ArdiumLabelComponent,
|
|
11822
12011
|
ArdiumHintComponent,
|
|
11823
12012
|
ArdiumErrorComponent,
|
|
12013
|
+
ArdiumHintErrorComponent,
|
|
11824
12014
|
],
|
|
11825
12015
|
}]
|
|
11826
12016
|
}] });
|
|
@@ -12888,7 +13078,7 @@ class ArdiumTablePaginationComponent extends _FocusableComponentBase {
|
|
|
12888
13078
|
this._emitPageEvent();
|
|
12889
13079
|
}
|
|
12890
13080
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumTablePaginationComponent, deps: [{ token: ARD_TABLE_PAGINATION_DEFAULTS }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12891
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: ArdiumTablePaginationComponent, isStandalone: false, selector: "ard-table-pagination", inputs: { totalItems: { classPropertyName: "totalItems", publicName: "totalItems", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, itemsPerPage: { classPropertyName: "itemsPerPage", publicName: "itemsPerPage", isSignal: true, isRequired: false, transformFunction: null }, page: { classPropertyName: "page", publicName: "page", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, useFirstLastButtons: { classPropertyName: "useFirstLastButtons", publicName: "useFirstLastButtons", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, itemsPerPageText: { classPropertyName: "itemsPerPageText", publicName: "itemsPerPageText", isSignal: true, isRequired: false, transformFunction: null }, currentItemsFormatFn: { classPropertyName: "currentItemsFormatFn", publicName: "currentItemsFormatFn", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemsPerPage: "itemsPerPageChange", page: "pageChange", itemsPerPageChangeEvent: "itemsPerPageChange", pageChangeEvent: "pageChange" }, usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"ard-pagination\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-pagination__items-per-page\">\r\n <div class=\"ard-pagination__text\">{{ itemsPerPageText() }}</div>\r\n <ard-select\r\n [items]=\"options()\"\r\n [compact]=\"compact()\"\r\n [value]=\"itemsPerPage()\"\r\n autoHighlightFirst=\"false\"\r\n [disabled]=\"disabled()\"\r\n (valueChange)=\"onItemsPerPageChange($event[0])\"\r\n clearable=\"false\"\r\n />\r\n </div>\r\n <div class=\"ard-pagination__current-page\">\r\n <div class=\"ard-pagination__text\">\r\n {{ currentItemsFormatFn()(getCurrentItemsContext()) }}\r\n </div>\r\n <div class=\"ard-pagination__buttons\">\r\n @if (useFirstLastButtons()) {\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || firstPageDisabled()\"\r\n (click)=\"onFirstPage()\"\r\n >\r\n <ard-icon>first page</ard-icon>\r\n </ard-icon-button>\r\n }\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || firstPageDisabled()\"\r\n (click)=\"onPrevPage()\"\r\n >\r\n <ard-icon>navigate before</ard-icon>\r\n </ard-icon-button>\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || lastPageDisabled()\"\r\n (click)=\"onNextPage()\"\r\n >\r\n <ard-icon>navigate next</ard-icon>\r\n </ard-icon-button>\r\n @if (useFirstLastButtons()) {\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || lastPageDisabled()\"\r\n (click)=\"onLastPage()\"\r\n >\r\n <ard-icon>last page</ard-icon>\r\n </ard-icon-button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ArdiumSelectComponent, selector: "ard-select", inputs: ["valueFrom", "labelFrom", "disabledFrom", "groupLabelFrom", "groupDisabledFrom", "childrenFrom", "placeholder", "searchPlaceholder", "clearButtonTitle", "dropdownPosition", "noItemsFoundText", "loadingPlaceholderText", "searchInputId", "inputAttrs", "isLoading", "itemsAlreadyGrouped", "invertDisabled", "noGroupActions", "autoHighlightFirst", "autoFocus", "keepOpen", "hideSelected", "noBackspaceClear", "
|
|
13081
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: ArdiumTablePaginationComponent, isStandalone: false, selector: "ard-table-pagination", inputs: { totalItems: { classPropertyName: "totalItems", publicName: "totalItems", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, itemsPerPage: { classPropertyName: "itemsPerPage", publicName: "itemsPerPage", isSignal: true, isRequired: false, transformFunction: null }, page: { classPropertyName: "page", publicName: "page", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, useFirstLastButtons: { classPropertyName: "useFirstLastButtons", publicName: "useFirstLastButtons", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, itemsPerPageText: { classPropertyName: "itemsPerPageText", publicName: "itemsPerPageText", isSignal: true, isRequired: false, transformFunction: null }, currentItemsFormatFn: { classPropertyName: "currentItemsFormatFn", publicName: "currentItemsFormatFn", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemsPerPage: "itemsPerPageChange", page: "pageChange", itemsPerPageChangeEvent: "itemsPerPageChange", pageChangeEvent: "pageChange" }, usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"ard-pagination\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div class=\"ard-pagination__items-per-page\">\r\n <div class=\"ard-pagination__text\">{{ itemsPerPageText() }}</div>\r\n <ard-select\r\n [items]=\"options()\"\r\n [compact]=\"compact()\"\r\n [value]=\"itemsPerPage()\"\r\n autoHighlightFirst=\"false\"\r\n [disabled]=\"disabled()\"\r\n (valueChange)=\"onItemsPerPageChange($event[0])\"\r\n clearable=\"false\"\r\n />\r\n </div>\r\n <div class=\"ard-pagination__current-page\">\r\n <div class=\"ard-pagination__text\">\r\n {{ currentItemsFormatFn()(getCurrentItemsContext()) }}\r\n </div>\r\n <div class=\"ard-pagination__buttons\">\r\n @if (useFirstLastButtons()) {\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || firstPageDisabled()\"\r\n (click)=\"onFirstPage()\"\r\n >\r\n <ard-icon>first page</ard-icon>\r\n </ard-icon-button>\r\n }\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || firstPageDisabled()\"\r\n (click)=\"onPrevPage()\"\r\n >\r\n <ard-icon>navigate before</ard-icon>\r\n </ard-icon-button>\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || lastPageDisabled()\"\r\n (click)=\"onNextPage()\"\r\n >\r\n <ard-icon>navigate next</ard-icon>\r\n </ard-icon-button>\r\n @if (useFirstLastButtons()) {\r\n <ard-icon-button\r\n [color]=\"color()\"\r\n [compact]=\"compact()\"\r\n [disabled]=\"disabled() || lastPageDisabled()\"\r\n (click)=\"onLastPage()\"\r\n >\r\n <ard-icon>last page</ard-icon>\r\n </ard-icon-button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ArdiumSelectComponent, selector: "ard-select", inputs: ["valueFrom", "labelFrom", "disabledFrom", "groupLabelFrom", "groupDisabledFrom", "childrenFrom", "placeholder", "searchPlaceholder", "clearButtonTitle", "dropdownPosition", "noItemsFoundText", "addCustomOptionText", "loadingPlaceholderText", "searchInputId", "inputAttrs", "isLoading", "itemsAlreadyGrouped", "invertDisabled", "noGroupActions", "autoHighlightFirst", "autoFocus", "keepOpen", "hideSelected", "noBackspaceClear", "searchCaseSensitive", "keepSearchAfterSelect", "maxSelectedItems", "itemDisplayLimit", "searchFn", "compareWith", "appearance", "variant", "compact", "dropdownAppearance", "dropdownVariant", "items", "multiselectable", "clearable", "searchable", "addCustom", "value", "isOpen", "dropdownPanelWidth", "dropdownPanelHeight", "dropdownPanelMinWidth", "dropdownPanelMinHeight", "dropdownPanelMaxWidth", "dropdownPanelMaxHeight"], outputs: ["valueChange", "add", "failedToAdd", "remove", "clear", "open", "close", "scroll", "scrollToEnd", "search", "isOpenChange"] }, { kind: "component", type: ArdiumIconButtonComponent, selector: "ard-icon-button", inputs: ["wrapperClasses", "type", "color", "lightColoring", "compact", "pointerEventsWhenDisabled"] }, { kind: "component", type: ArdiumIconComponent, selector: "ard-icon", inputs: ["ariaLabel", "icon", "filled", "weight", "grade", "opticalSize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
12892
13082
|
}
|
|
12893
13083
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumTablePaginationComponent, decorators: [{
|
|
12894
13084
|
type: Component,
|
|
@@ -13841,30 +14031,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
13841
14031
|
}]
|
|
13842
14032
|
}] });
|
|
13843
14033
|
|
|
13844
|
-
const
|
|
13845
|
-
|
|
14034
|
+
const _tabberDefaults = {
|
|
14035
|
+
tabDisabled: false,
|
|
14036
|
+
color: ComponentColor.Primary,
|
|
14037
|
+
stretchTabs: false,
|
|
14038
|
+
uniformTabWidths: false,
|
|
14039
|
+
tabAlignment: OneAxisAlignment.Left,
|
|
14040
|
+
tabIndex: 0,
|
|
13846
14041
|
};
|
|
13847
|
-
const
|
|
14042
|
+
const ARD_TABBER_DEFAULTS = new InjectionToken('ard-tabber-defaults', {
|
|
13848
14043
|
factory: () => ({
|
|
13849
|
-
...
|
|
14044
|
+
..._tabberDefaults,
|
|
13850
14045
|
}),
|
|
13851
14046
|
});
|
|
13852
|
-
function
|
|
13853
|
-
return { provide:
|
|
14047
|
+
function provideTabberDefaults(config) {
|
|
14048
|
+
return { provide: ARD_TABBER_DEFAULTS, useValue: { ..._tabberDefaults, ...config } };
|
|
13854
14049
|
}
|
|
13855
14050
|
|
|
13856
14051
|
class ArdiumTabComponent {
|
|
13857
14052
|
constructor() {
|
|
13858
|
-
this._DEFAULTS = inject(
|
|
13859
|
-
this.disabled = input(this._DEFAULTS.
|
|
14053
|
+
this._DEFAULTS = inject(ARD_TABBER_DEFAULTS);
|
|
14054
|
+
this.disabled = input(this._DEFAULTS.tabDisabled, { transform: v => coerceBooleanProperty(v) });
|
|
13860
14055
|
this.selected = signal(false);
|
|
13861
14056
|
this.focused = signal(false);
|
|
13862
14057
|
this._label = input(null, { alias: 'label' });
|
|
13863
14058
|
this.label = computed(() => this._label() ?? this.tabId());
|
|
13864
|
-
this.
|
|
13865
|
-
this.
|
|
13866
|
-
|
|
14059
|
+
this._isTabIdInitialized = false;
|
|
14060
|
+
this.tabId = input.required({
|
|
14061
|
+
transform: v => {
|
|
14062
|
+
this._isTabIdInitialized = true;
|
|
14063
|
+
return v;
|
|
14064
|
+
},
|
|
14065
|
+
});
|
|
14066
|
+
this.focusEvent = output({ alias: 'focus' });
|
|
14067
|
+
this.blurEvent = output({ alias: 'blur' });
|
|
13867
14068
|
this.selectedChange = output();
|
|
14069
|
+
this.selectedChangeInternal$ = new Subject();
|
|
14070
|
+
this._selectedChangeSub = this.selectedChangeInternal$.subscribe(this.selectedChange.emit);
|
|
13868
14071
|
}
|
|
13869
14072
|
set _selected(v) {
|
|
13870
14073
|
this.selected.set(coerceBooleanProperty(v));
|
|
@@ -13873,58 +14076,63 @@ class ArdiumTabComponent {
|
|
|
13873
14076
|
this.selected.set(state);
|
|
13874
14077
|
this._emitChange();
|
|
13875
14078
|
}
|
|
13876
|
-
get _selectedHostAttribute() {
|
|
13877
|
-
return this.selected();
|
|
13878
|
-
}
|
|
13879
14079
|
_emitChange() {
|
|
13880
|
-
this.
|
|
14080
|
+
this.selectedChangeInternal$.next(this.selected());
|
|
14081
|
+
}
|
|
14082
|
+
ngOnDestroy() {
|
|
14083
|
+
this._selectedChangeSub.unsubscribe();
|
|
14084
|
+
this.selectedChangeInternal$.complete();
|
|
13881
14085
|
}
|
|
13882
14086
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13883
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: ArdiumTabComponent, isStandalone: false, selector: "ard-tab", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, _selected: { classPropertyName: "_selected", publicName: "selected", isSignal: false, isRequired: false, transformFunction: null }, _label: { classPropertyName: "_label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, tabId: { classPropertyName: "tabId", publicName: "tabId", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { focusEvent: "
|
|
14087
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: ArdiumTabComponent, isStandalone: false, selector: "ard-tab", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, _selected: { classPropertyName: "_selected", publicName: "selected", isSignal: false, isRequired: false, transformFunction: null }, _label: { classPropertyName: "_label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, tabId: { classPropertyName: "tabId", publicName: "tabId", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { focusEvent: "focus", blurEvent: "blur", selectedChange: "selectedChange" }, host: { attributes: { "role": "tabpanel" }, properties: { "class.ard-tab-disabled": "disabled()", "class.ard-tab-selected": "selected()" } }, ngImport: i0, template: "<ng-content></ng-content>\r\n", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
13884
14088
|
}
|
|
13885
14089
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumTabComponent, decorators: [{
|
|
13886
14090
|
type: Component,
|
|
13887
|
-
args: [{ standalone: false, selector: 'ard-tab', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush,
|
|
14091
|
+
args: [{ standalone: false, selector: 'ard-tab', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
14092
|
+
role: 'tabpanel',
|
|
14093
|
+
'[class.ard-tab-disabled]': 'disabled()',
|
|
14094
|
+
'[class.ard-tab-selected]': 'selected()',
|
|
14095
|
+
}, template: "<ng-content></ng-content>\r\n" }]
|
|
13888
14096
|
}], propDecorators: { _selected: [{
|
|
13889
14097
|
type: Input,
|
|
13890
14098
|
args: ['selected']
|
|
13891
|
-
}], _selectedHostAttribute: [{
|
|
13892
|
-
type: HostBinding,
|
|
13893
|
-
args: ['class.ard-tab-selected']
|
|
13894
14099
|
}] } });
|
|
13895
14100
|
|
|
13896
|
-
|
|
13897
|
-
|
|
13898
|
-
|
|
13899
|
-
|
|
13900
|
-
|
|
13901
|
-
|
|
13902
|
-
};
|
|
13903
|
-
const ARD_TABBER_DEFAULTS = new InjectionToken('ard-tabber-defaults', {
|
|
13904
|
-
factory: () => ({
|
|
13905
|
-
..._tabberDefaults,
|
|
13906
|
-
}),
|
|
13907
|
-
});
|
|
13908
|
-
function provideTabberDefaults(config) {
|
|
13909
|
-
return { provide: ARD_TABBER_DEFAULTS, useValue: { ..._tabberDefaults, ...config } };
|
|
14101
|
+
class ArdTabberLabelTemplateDirective {
|
|
14102
|
+
constructor(template) {
|
|
14103
|
+
this.template = template;
|
|
14104
|
+
}
|
|
14105
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdTabberLabelTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
14106
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: ArdTabberLabelTemplateDirective, isStandalone: false, selector: "ng-template[ard-tabber-label-tmp]", ngImport: i0 }); }
|
|
13910
14107
|
}
|
|
14108
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdTabberLabelTemplateDirective, decorators: [{
|
|
14109
|
+
type: Directive,
|
|
14110
|
+
args: [{
|
|
14111
|
+
standalone: false,
|
|
14112
|
+
selector: 'ng-template[ard-tabber-label-tmp]',
|
|
14113
|
+
}]
|
|
14114
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef }] });
|
|
13911
14115
|
|
|
13912
14116
|
class ArdiumTabberComponent {
|
|
13913
14117
|
constructor() {
|
|
13914
14118
|
this._DEFAULTS = inject(ARD_TABBER_DEFAULTS);
|
|
13915
14119
|
this.tabs = contentChildren(ArdiumTabComponent, { descendants: true });
|
|
13916
|
-
this.
|
|
13917
|
-
this.
|
|
14120
|
+
this.selectedTabId = model(null, { alias: 'selectedTab' });
|
|
14121
|
+
this.selectedTab = computed(() => this.tabs().find(tab => tab.tabId() === this.selectedTabId()) ?? null);
|
|
14122
|
+
this.focusedTabId = signal(null);
|
|
14123
|
+
this.focusedTab = computed(() => this.tabs().find(tab => tab.tabId() === this.focusedTabId()) ?? null);
|
|
14124
|
+
this._selectedTabIdToCheck = null;
|
|
13918
14125
|
this.initialTab = input(undefined);
|
|
13919
14126
|
this.focusEvent = output({ alias: 'focus' });
|
|
13920
14127
|
this.blurEvent = output({ alias: 'blur' });
|
|
13921
|
-
this.changeTab = output();
|
|
13922
14128
|
//! appearance
|
|
13923
14129
|
this.color = input(this._DEFAULTS.color);
|
|
13924
14130
|
this.ngClasses = computed(() => [`ard-color-${this.color()}`].join(' '));
|
|
13925
14131
|
//! tab container settings
|
|
13926
14132
|
this.stretchTabs = input(this._DEFAULTS.stretchTabs, { transform: v => coerceBooleanProperty(v) });
|
|
13927
|
-
this.uniformTabWidths = input(this._DEFAULTS.uniformTabWidths, {
|
|
14133
|
+
this.uniformTabWidths = input(this._DEFAULTS.uniformTabWidths, {
|
|
14134
|
+
transform: v => coerceBooleanProperty(v),
|
|
14135
|
+
});
|
|
13928
14136
|
this.tabAlignment = input(this._DEFAULTS.tabAlignment);
|
|
13929
14137
|
this.tabContainerClasses = computed(() => [
|
|
13930
14138
|
this.uniformTabWidths() && !this.stretchTabs() ? 'ard-uniform-tab-widths' : '',
|
|
@@ -13933,6 +14141,45 @@ class ArdiumTabberComponent {
|
|
|
13933
14141
|
].join(' '));
|
|
13934
14142
|
//! other
|
|
13935
14143
|
this.tabIndex = input(0);
|
|
14144
|
+
//! tab label template
|
|
14145
|
+
this.labelTemplate = contentChild(ArdTabberLabelTemplateDirective);
|
|
14146
|
+
this.tabsWithTemplates = computed(() => this.tabs().map(tab => ({
|
|
14147
|
+
tab,
|
|
14148
|
+
template: typeof tab.label() === 'string' ? null : tab.label(),
|
|
14149
|
+
templateContext: typeof tab.label() === 'string'
|
|
14150
|
+
? { $implicit: tab.label(), tabId: tab.tabId(), label: tab.label() }
|
|
14151
|
+
: null,
|
|
14152
|
+
})));
|
|
14153
|
+
}
|
|
14154
|
+
ngOnChanges(changes) {
|
|
14155
|
+
if (changes['selectedTabId']) {
|
|
14156
|
+
// make sure the tab exists
|
|
14157
|
+
const newTabId = changes['selectedTabId'].currentValue;
|
|
14158
|
+
if (this.tabs().some(tab => !tab._isTabIdInitialized)) {
|
|
14159
|
+
this._selectedTabIdToCheck = newTabId;
|
|
14160
|
+
}
|
|
14161
|
+
else {
|
|
14162
|
+
const oldTabId = changes['selectedTabId'].previousValue;
|
|
14163
|
+
this._validateSelectedTabId(newTabId, oldTabId);
|
|
14164
|
+
}
|
|
14165
|
+
}
|
|
14166
|
+
}
|
|
14167
|
+
_validateSelectedTabId(newTabId, oldTabId) {
|
|
14168
|
+
if (newTabId !== null) {
|
|
14169
|
+
const newTab = this.tabs().find(tab => tab._isTabIdInitialized && tab.tabId() === newTabId);
|
|
14170
|
+
if (!newTab) {
|
|
14171
|
+
// tabs are initialized but the tab does not exist, show error
|
|
14172
|
+
console.error(`ARD-NF6000: Trying to select a tab with id '${newTabId}' that does not exist.`);
|
|
14173
|
+
return;
|
|
14174
|
+
}
|
|
14175
|
+
// tab exists, select it and unselect the old one
|
|
14176
|
+
if (oldTabId !== null) {
|
|
14177
|
+
const oldTab = this.tabs().find(tab => tab._isTabIdInitialized && tab.tabId() === oldTabId);
|
|
14178
|
+
if (oldTab)
|
|
14179
|
+
this._unselectSpecificTab(oldTab);
|
|
14180
|
+
}
|
|
14181
|
+
this._selectNewTab(newTab);
|
|
14182
|
+
}
|
|
13936
14183
|
}
|
|
13937
14184
|
ngAfterContentInit() {
|
|
13938
14185
|
let selectedCmp = null;
|
|
@@ -13944,18 +14191,27 @@ class ArdiumTabberComponent {
|
|
|
13944
14191
|
}
|
|
13945
14192
|
selectedCmp = cmp;
|
|
13946
14193
|
}
|
|
14194
|
+
// subscribe to events
|
|
13947
14195
|
cmp.focusEvent.subscribe(() => {
|
|
13948
14196
|
this.focusEvent.emit(cmp.tabId());
|
|
13949
14197
|
});
|
|
13950
14198
|
cmp.blurEvent.subscribe(() => {
|
|
13951
14199
|
this.blurEvent.emit(cmp.tabId());
|
|
13952
14200
|
});
|
|
13953
|
-
cmp.
|
|
13954
|
-
if (!isSelected)
|
|
14201
|
+
cmp.selectedChangeInternal$.subscribe(isSelected => {
|
|
14202
|
+
if (!isSelected) {
|
|
14203
|
+
this.selectedTabId.set(null);
|
|
13955
14204
|
return;
|
|
13956
|
-
|
|
14205
|
+
}
|
|
14206
|
+
this.selectTab(cmp);
|
|
13957
14207
|
});
|
|
13958
14208
|
}
|
|
14209
|
+
// if there was a pending selectedTabId to check, do it now
|
|
14210
|
+
if (this._selectedTabIdToCheck !== null) {
|
|
14211
|
+
this._validateSelectedTabId(this._selectedTabIdToCheck, null);
|
|
14212
|
+
this._selectedTabIdToCheck = null;
|
|
14213
|
+
}
|
|
14214
|
+
// if no tab is selected, select the initial tab or the first tab
|
|
13959
14215
|
if (!selectedCmp) {
|
|
13960
14216
|
const initiallySelectedTab = this.tabs().find(tab => tab.tabId() === this.initialTab());
|
|
13961
14217
|
selectedCmp = initiallySelectedTab ?? this.tabs()[0] ?? null;
|
|
@@ -13963,47 +14219,59 @@ class ArdiumTabberComponent {
|
|
|
13963
14219
|
selectedCmp.selected.set(true);
|
|
13964
14220
|
}
|
|
13965
14221
|
}
|
|
13966
|
-
this.
|
|
14222
|
+
this.selectedTabId.set(selectedCmp.tabId());
|
|
14223
|
+
}
|
|
14224
|
+
selectTab(tab) {
|
|
14225
|
+
if (tab.tabId() === this.selectedTabId()) {
|
|
14226
|
+
return;
|
|
14227
|
+
}
|
|
14228
|
+
this._unselectCurrentTab(tab);
|
|
14229
|
+
this.selectedTabId.set(tab.tabId());
|
|
14230
|
+
this._selectNewTab(tab);
|
|
14231
|
+
}
|
|
14232
|
+
_unselectSpecificTab(tab) {
|
|
14233
|
+
tab.selected.set(false);
|
|
14234
|
+
tab.selectedChange.emit(false);
|
|
13967
14235
|
}
|
|
13968
|
-
|
|
13969
|
-
const curr = this.
|
|
13970
|
-
if (curr) {
|
|
13971
|
-
|
|
13972
|
-
curr.selectedChange.emit(false);
|
|
14236
|
+
_unselectCurrentTab(referenceTab) {
|
|
14237
|
+
const curr = this.selectedTab();
|
|
14238
|
+
if (curr && (!referenceTab || curr.tabId() !== referenceTab.tabId())) {
|
|
14239
|
+
this._unselectSpecificTab(curr);
|
|
13973
14240
|
}
|
|
13974
|
-
|
|
14241
|
+
}
|
|
14242
|
+
_selectNewTab(tab) {
|
|
13975
14243
|
tab.selected.set(true);
|
|
13976
14244
|
tab.selectedChange.emit(true);
|
|
13977
14245
|
}
|
|
13978
14246
|
onTabFocus(tab) {
|
|
13979
14247
|
tab.focusEvent.emit();
|
|
13980
14248
|
tab.focused.set(true);
|
|
13981
|
-
this.
|
|
14249
|
+
this.focusedTabId.set(tab.tabId());
|
|
13982
14250
|
}
|
|
13983
14251
|
onTabBlur(tab) {
|
|
13984
14252
|
tab.blurEvent.emit();
|
|
13985
14253
|
tab.focused.set(false);
|
|
13986
|
-
this.
|
|
14254
|
+
this.focusedTabId.set(null);
|
|
13987
14255
|
}
|
|
13988
14256
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumTabberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13989
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: ArdiumTabberComponent, isStandalone: false, selector: "ard-tabber", inputs: { initialTab: { classPropertyName: "initialTab", publicName: "initialTab", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, stretchTabs: { classPropertyName: "stretchTabs", publicName: "stretchTabs", isSignal: true, isRequired: false, transformFunction: null }, uniformTabWidths: { classPropertyName: "uniformTabWidths", publicName: "uniformTabWidths", isSignal: true, isRequired: false, transformFunction: null }, tabAlignment: { classPropertyName: "tabAlignment", publicName: "tabAlignment", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: {
|
|
14257
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: ArdiumTabberComponent, isStandalone: false, selector: "ard-tabber", inputs: { selectedTabId: { classPropertyName: "selectedTabId", publicName: "selectedTab", isSignal: true, isRequired: false, transformFunction: null }, initialTab: { classPropertyName: "initialTab", publicName: "initialTab", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, stretchTabs: { classPropertyName: "stretchTabs", publicName: "stretchTabs", isSignal: true, isRequired: false, transformFunction: null }, uniformTabWidths: { classPropertyName: "uniformTabWidths", publicName: "uniformTabWidths", isSignal: true, isRequired: false, transformFunction: null }, tabAlignment: { classPropertyName: "tabAlignment", publicName: "tabAlignment", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedTabId: "selectedTabChange", focusEvent: "focus", blurEvent: "blur" }, queries: [{ propertyName: "tabs", predicate: ArdiumTabComponent, descendants: true, isSignal: true }, { propertyName: "labelTemplate", first: true, predicate: ArdTabberLabelTemplateDirective, descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<div\r\n class=\"ard-tabber\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div\r\n class=\"ard-tabber-tabs\"\r\n [ngClass]=\"tabContainerClasses()\"\r\n [style]=\"{ '--ard-_tabber-tabs': tabs().length }\"\r\n >\r\n @for (tabObj of tabsWithTemplates(); track tabObj) {\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n role=\"tab\"\r\n class=\"ard-tab-button\"\r\n [id]=\"tabObj.tab.tabId()\"\r\n [class.ard-tab-active]=\"tabObj.tab.tabId() === selectedTabId()\"\r\n [class.ard-tab-focused]=\"tabObj.tab.tabId() === focusedTabId()\"\r\n (click)=\"!tabObj.tab.selected() && selectTab(tabObj.tab)\"\r\n (focus)=\"onTabFocus(tabObj.tab)\"\r\n (blur)=\"onTabBlur(tabObj.tab)\"\r\n [tabindex]=\"tabIndex()\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <ng-template\r\n #defaultLabelTemplate\r\n let-label\r\n >\r\n {{ label }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"tabObj.template ?? labelTemplate()?.template ?? defaultLabelTemplate\"\r\n [ngTemplateOutletContext]=\"tabObj.templateContext\"\r\n />\r\n </div>\r\n </button>\r\n }\r\n </div>\r\n <div\r\n role=\"tabpanel\"\r\n class=\"ard-tabber-content\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n", styles: [".ard-tabber ard-tab{display:none}.ard-tabber ard-tab.ard-tab-selected{display:block}.ard-tabber .ard-tabber-tabs.ard-uniform-tab-widths{display:grid;grid-template-columns:repeat(var(--ard-_tabber-tabs),1fr);max-width:max-content}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
13990
14258
|
}
|
|
13991
14259
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumTabberComponent, decorators: [{
|
|
13992
14260
|
type: Component,
|
|
13993
|
-
args: [{ standalone: false, selector: 'ard-tabber', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"ard-tabber\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div\r\n class=\"ard-tabber-tabs\"\r\n [ngClass]=\"tabContainerClasses()\"\r\n [style]=\"{ '--ard-_tabber-tabs': tabs().length }\"\r\n >\r\n @for (
|
|
14261
|
+
args: [{ standalone: false, selector: 'ard-tabber', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"ard-tabber\"\r\n [ngClass]=\"ngClasses()\"\r\n>\r\n <div\r\n class=\"ard-tabber-tabs\"\r\n [ngClass]=\"tabContainerClasses()\"\r\n [style]=\"{ '--ard-_tabber-tabs': tabs().length }\"\r\n >\r\n @for (tabObj of tabsWithTemplates(); track tabObj) {\r\n <button\r\n #focusableElement\r\n type=\"button\"\r\n role=\"tab\"\r\n class=\"ard-tab-button\"\r\n [id]=\"tabObj.tab.tabId()\"\r\n [class.ard-tab-active]=\"tabObj.tab.tabId() === selectedTabId()\"\r\n [class.ard-tab-focused]=\"tabObj.tab.tabId() === focusedTabId()\"\r\n (click)=\"!tabObj.tab.selected() && selectTab(tabObj.tab)\"\r\n (focus)=\"onTabFocus(tabObj.tab)\"\r\n (blur)=\"onTabBlur(tabObj.tab)\"\r\n [tabindex]=\"tabIndex()\"\r\n >\r\n <div class=\"ard-focus-overlay\"></div>\r\n <div class=\"ard-button-content\">\r\n <ng-template\r\n #defaultLabelTemplate\r\n let-label\r\n >\r\n {{ label }}\r\n </ng-template>\r\n\r\n <ng-template\r\n [ngTemplateOutlet]=\"tabObj.template ?? labelTemplate()?.template ?? defaultLabelTemplate\"\r\n [ngTemplateOutletContext]=\"tabObj.templateContext\"\r\n />\r\n </div>\r\n </button>\r\n }\r\n </div>\r\n <div\r\n role=\"tabpanel\"\r\n class=\"ard-tabber-content\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n", styles: [".ard-tabber ard-tab{display:none}.ard-tabber ard-tab.ard-tab-selected{display:block}.ard-tabber .ard-tabber-tabs.ard-uniform-tab-widths{display:grid;grid-template-columns:repeat(var(--ard-_tabber-tabs),1fr);max-width:max-content}\n"] }]
|
|
13994
14262
|
}] });
|
|
13995
14263
|
|
|
13996
14264
|
class ArdiumTabberModule {
|
|
13997
14265
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumTabberModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
13998
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: ArdiumTabberModule, declarations: [ArdiumTabberComponent, ArdiumTabComponent], imports: [CommonModule], exports: [ArdiumTabberComponent, ArdiumTabComponent] }); }
|
|
14266
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: ArdiumTabberModule, declarations: [ArdiumTabberComponent, ArdiumTabComponent, ArdTabberLabelTemplateDirective], imports: [CommonModule], exports: [ArdiumTabberComponent, ArdiumTabComponent, ArdTabberLabelTemplateDirective] }); }
|
|
13999
14267
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumTabberModule, imports: [CommonModule] }); }
|
|
14000
14268
|
}
|
|
14001
14269
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ArdiumTabberModule, decorators: [{
|
|
14002
14270
|
type: NgModule,
|
|
14003
14271
|
args: [{
|
|
14004
|
-
declarations: [ArdiumTabberComponent, ArdiumTabComponent],
|
|
14272
|
+
declarations: [ArdiumTabberComponent, ArdiumTabComponent, ArdTabberLabelTemplateDirective],
|
|
14005
14273
|
imports: [CommonModule],
|
|
14006
|
-
exports: [ArdiumTabberComponent, ArdiumTabComponent],
|
|
14274
|
+
exports: [ArdiumTabberComponent, ArdiumTabComponent, ArdTabberLabelTemplateDirective],
|
|
14007
14275
|
}]
|
|
14008
14276
|
}] });
|
|
14009
14277
|
|
|
@@ -14718,5 +14986,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
14718
14986
|
* Generated bundle index. Do not edit.
|
|
14719
14987
|
*/
|
|
14720
14988
|
|
|
14721
|
-
export { ARD_BADGE_DEFAULTS, ARD_BUTTON_DEFAULTS, ARD_CALENDAR_DEFAULTS, ARD_CARD_DEFAULTS, ARD_CHECKBOX_DEFAULTS, ARD_CHECKBOX_LIST_DEFAULTS, ARD_CHIP_DEFAULTS, ARD_DATE_INPUT_DEFAULTS, ARD_DELETABLE_CHIP_DEFAULTS, ARD_DIALOG_DEFAULTS, ARD_DIGIT_INPUT_DEFAULTS, ARD_DIVIDER_DEFAULTS, ARD_DROPDOWN_PANEL_DEFAULTS, ARD_FAB_DEFAULTS, ARD_FILE_DROP_AREA_DEFAULTS, ARD_FILE_INPUT_DEFAULTS, ARD_FORM_FIELD_FRAME_DEFAULTS, ARD_HEX_INPUT_DEFAULTS, ARD_ICON_BUTTON_DEFAULTS, ARD_ICON_DEFAULTS, ARD_KBD_DEFAULTS, ARD_KBD_SHORTCUT_DEFAULTS, ARD_MODAL_DEFAULTS, ARD_NUMBER_INPUT_DEFAULTS, ARD_PASSWORD_INPUT_DEFAULTS, ARD_PROGRESS_BAR_DEFAULTS, ARD_PROGRESS_CIRCLE_DEFAULTS, ARD_RADIO_DEFAULTS, ARD_RATING_DISPLAY_DEFAULTS, ARD_RATING_INPUT_DEFAULTS, ARD_SEGMENT_DEFAULTS, ARD_SELECTABLE_CHIP_DEFAULTS, ARD_SELECT_DEFAULTS, ARD_SIMPLE_INPUT_DEFAULTS, ARD_SLIDER_DEFAULTS, ARD_SLIDE_TOGGLE_DEFAULTS, ARD_SNACKBAR_ANIMATION_LENGTH, ARD_SNACKBAR_DATA, ARD_SNACKBAR_DEFAULTS, ARD_SPINNER_DEFAULTS, ARD_STAR_BUTTON_DEFAULTS, ARD_STAR_DEFAULTS, ARD_STATEBOX_DEFAULTS, ARD_TABBER_DEFAULTS, ARD_TABLE_DEFAULTS, ARD_TABLE_FROM_CSV_DEFAULTS, ARD_TABLE_PAGINATION_DEFAULTS,
|
|
14989
|
+
export { ARD_BADGE_DEFAULTS, ARD_BUTTON_DEFAULTS, ARD_CALENDAR_DEFAULTS, ARD_CARD_DEFAULTS, ARD_CHECKBOX_DEFAULTS, ARD_CHECKBOX_LIST_DEFAULTS, ARD_CHIP_DEFAULTS, ARD_DATE_INPUT_DEFAULTS, ARD_DELETABLE_CHIP_DEFAULTS, ARD_DIALOG_DEFAULTS, ARD_DIGIT_INPUT_DEFAULTS, ARD_DIVIDER_DEFAULTS, ARD_DROPDOWN_PANEL_DEFAULTS, ARD_FAB_DEFAULTS, ARD_FILE_DROP_AREA_DEFAULTS, ARD_FILE_INPUT_DEFAULTS, ARD_FORM_FIELD_CONTROL, ARD_FORM_FIELD_DEFAULTS, ARD_FORM_FIELD_FRAME_DEFAULTS, ARD_HEX_INPUT_DEFAULTS, ARD_ICON_BUTTON_DEFAULTS, ARD_ICON_DEFAULTS, ARD_KBD_DEFAULTS, ARD_KBD_SHORTCUT_DEFAULTS, ARD_MODAL_DEFAULTS, ARD_NUMBER_INPUT_DEFAULTS, ARD_PASSWORD_INPUT_DEFAULTS, ARD_PROGRESS_BAR_DEFAULTS, ARD_PROGRESS_CIRCLE_DEFAULTS, ARD_RADIO_DEFAULTS, ARD_RATING_DISPLAY_DEFAULTS, ARD_RATING_INPUT_DEFAULTS, ARD_SEGMENT_DEFAULTS, ARD_SELECTABLE_CHIP_DEFAULTS, ARD_SELECT_DEFAULTS, ARD_SIMPLE_INPUT_DEFAULTS, ARD_SLIDER_DEFAULTS, ARD_SLIDE_TOGGLE_DEFAULTS, ARD_SNACKBAR_ANIMATION_LENGTH, ARD_SNACKBAR_DATA, ARD_SNACKBAR_DEFAULTS, ARD_SPINNER_DEFAULTS, ARD_STAR_BUTTON_DEFAULTS, ARD_STAR_DEFAULTS, ARD_STATEBOX_DEFAULTS, ARD_TABBER_DEFAULTS, ARD_TABLE_DEFAULTS, ARD_TABLE_FROM_CSV_DEFAULTS, ARD_TABLE_PAGINATION_DEFAULTS, ArdAddCustomTemplateDirective, ArdAutocompleteInputLoadingTemplateDirective, ArdAutocompleteInputPlaceholderTemplateDirective, ArdAutocompleteInputPrefixTemplateDirective, ArdAutocompleteInputSuffixTemplateDirective, ArdAutocompleteInputSuggestionTemplateDirective, ArdCalendarDayTemplateDirective, ArdCalendarDaysViewHeaderTemplateDirective, ArdCalendarFloatingMonthTemplateDirective, ArdCalendarMonthTemplateDirective, ArdCalendarMonthsViewHeaderTemplateDirective, ArdCalendarView, ArdCalendarWeekdayTemplateDirective, ArdCalendarYearTemplateDirective, ArdCalendarYearsViewHeaderTemplateDirective, ArdCheckboxListCheckboxTemplateDirective, ArdCheckboxListLabelTemplateDirective, ArdCheckboxTemplateDirective, ArdDateInputAcceptButtonsTemplateDirective, ArdDateInputCalendarIconTemplateDirective, ArdDateInputDayTemplateDirective, ArdDateInputDaysViewHeaderTemplateDirective, ArdDateInputFloatingMonthTemplateDirective, ArdDateInputMinMaxStrategy, ArdDateInputMonthTemplateDirective, ArdDateInputMonthsViewHeaderTemplateDirective, ArdDateInputPrefixTemplateDirective, ArdDateInputSuffixTemplateDirective, ArdDateInputValueTemplateDirective, ArdDateInputWeekdayTemplateDirective, ArdDateInputYearTemplateDirective, ArdDateInputYearsViewHeaderTemplateDirective, ArdDialogActionType, ArdDialogButtonsTemplateDirective, ArdDialogCloseIconTemplateDirective, ArdDialogResult, ArdDropdownFooterTemplateDirective, ArdDropdownHeaderTemplateDirective, ArdFileInputPlaceholderTemplateDirective, ArdFileInputPrefixTemplateDirective, ArdFileInputSuffixTemplateDirective, ArdFormFieldPrefixTemplateDirective, ArdFormFieldSuffixTemplateDirective, ArdHexInputPlaceholderTemplateDirective, ArdHexInputPrefixTemplateDirective, ArdHexInputSuffixTemplateDirective, ArdInputPlaceholderTemplateDirective, ArdInputPrefixTemplateDirective, ArdInputSuffixTemplateDirective, ArdItemDisplayLimitTemplateDirective, ArdItemLimitReachedTemplateDirective, ArdLoadingPlaceholderTemplateDirective, ArdLoadingSpinnerTemplateDirective, ArdModalCloseIconTemplateDirective, ArdNoItemsFoundTemplateDirective, ArdNumberInputPlaceholderTemplateDirective, ArdOptgroupTemplateDirective, ArdOptionTemplateDirective, ArdPanelPosition, ArdPasswordInputPlaceholderTemplateDirective, ArdPasswordInputPrefixTemplateDirective, ArdPasswordInputRevealButtonTemplateDirective, ArdPasswordInputSuffixTemplateDirective, ArdProgressBarValueTemplateDirective, ArdProgressCircleValueTemplateDirective, ArdRatingDisplayStarTemplateDirective, ArdRatingInputStarButtonTemplateDirective, searchFunctions as ArdSearchFunction, ArdSegmentOptionTemplateDirective, ArdSelectDropdownArrowTemplateDirective, ArdSelectPlaceholderTemplateDirective, ArdSelectPrefixTemplateDirective, ArdSelectSuffixTemplateDirective, ArdSlideToggleAppearance, ArdSliderTooltipDirective, ArdSnackbarAlignment, ArdSnackbarOriginRelation, ArdSnackbarQueueHandling, ArdSnackbarRef, ArdSnackbarType, ArdStarButtonStarTemplateDirective, ArdStarIconTemplateDirective, ArdTabberLabelTemplateDirective, ArdValueChipTemplateDirective, ArdValueTemplateDirective, ArdiumAutocompleteInputComponent, ArdiumAutocompleteInputModule, ArdiumBadgeDirective, ArdiumBadgeModule, ArdiumButtonComponent, ArdiumButtonModule, ArdiumCalendarComponent, ArdiumCalendarModule, ArdiumCardActionButtonsDirective, ArdiumCardAvatarDirective, ArdiumCardComponent, ArdiumCardContentDirective, ArdiumCardDirective, ArdiumCardFooterDirective, ArdiumCardHeaderComponent, ArdiumCardImageDirective, ArdiumCardModule, ArdiumCardSubtitleDirective, ArdiumCardTitleDirective, ArdiumCheckboxComponent, ArdiumCheckboxListComponent, ArdiumCheckboxListModule, ArdiumCheckboxModule, ArdiumChipComponent, ArdiumChipModule, ArdiumDateInputComponent, ArdiumDateInputModule, ArdiumDeletableChipComponent, ArdiumDialogComponent, ArdiumDialogModule, ArdiumDigitInputComponent, ArdiumDigitInputModule, ArdiumDividerComponent, ArdiumDividerModule, ArdiumDropdownPanelComponent, ArdiumDropdownPanelModule, ArdiumErrorComponent, ArdiumErrorDirective, ArdiumFabComponent, ArdiumFabModule, ArdiumFileDropAreaComponent, ArdiumFileDropAreaDragoverContentTemplateDirective, ArdiumFileDropAreaIdleContentTemplateDirective, ArdiumFileDropAreaModule, ArdiumFileDropAreaUploadedContentTemplateDirective, ArdiumFileInputComponent, ArdiumFileInputDragoverContentTemplateDirective, ArdiumFileInputFolderIconTemplateDirective, ArdiumFileInputIdleContentTemplateDirective, ArdiumFileInputModule, ArdiumFileInputUploadedContentTemplateDirective, ArdiumFormFieldComponent, ArdiumFormFieldFrameComponent, ArdiumFormFieldFrameModule, ArdiumFormFieldModule, ArdiumFormFieldNativeInputAdapterDirective, ArdiumHexInputComponent, ArdiumHexInputModule, ArdiumHintComponent, ArdiumHintDirective, ArdiumHintErrorComponent, ArdiumHintErrorDirective, ArdiumHorizontalFormFieldComponent, ArdiumIconButtonComponent, ArdiumIconButtonModule, ArdiumIconComponent, ArdiumIconModule, ArdiumIconPipe, ArdiumInputComponent, ArdiumInputModule, ArdiumKbdComponent, ArdiumKbdDirective, ArdiumKbdModule, ArdiumKbdPipe, ArdiumKbdShortcutComponent, ArdiumKbdShortcutModule, ArdiumLabelComponent, ArdiumModalComponent, ArdiumModalModule, ArdiumNumberInputComponent, ArdiumNumberInputModule, ArdiumOptionComponent, ArdiumOptionModule, ArdiumPasswordInputComponent, ArdiumPasswordInputModule, ArdiumProgressBarComponent, ArdiumProgressBarModule, ArdiumProgressCircleComponent, ArdiumProgressCircleModule, ArdiumRadioComponent, ArdiumRadioGroupComponent, ArdiumRadioModule, ArdiumRangeSliderComponent, ArdiumRangeSliderModule, ArdiumRatingDisplayComponent, ArdiumRatingDisplayModule, ArdiumRatingInputComponent, ArdiumRatingInputModule, ArdiumSegmentComponent, ArdiumSegmentModule, ArdiumSelectComponent, ArdiumSelectModule, ArdiumSelectableChipComponent, ArdiumSlideToggleComponent, ArdiumSlideToggleModule, ArdiumSliderComponent, ArdiumSliderModule, ArdiumSnackbarService, ArdiumSpinnerComponent, ArdiumSpinnerModule, ArdiumStarButtonComponent, ArdiumStarButtonModule, ArdiumStarComponent, ArdiumStarModule, ArdiumStateboxComponent, ArdiumStateboxModule, ArdiumTabComponent, ArdiumTabberComponent, ArdiumTabberModule, ArdiumTableCaptionTemplateDirective, ArdiumTableCheckboxTemplateDirective, ArdiumTableComponent, ArdiumTableFromCsvComponent, ArdiumTableFromCsvModule, ArdiumTableHeaderCheckboxTemplateDirective, ArdiumTableModule, ArdiumTablePaginationComponent, ArdiumTablePaginationModule, ArdiumTablePaginationTemplateDirective, ArdiumTableTemplateDirective, ArdiumTextListComponent, ArdiumTextListModule, ArdiumTextListPipe, BadgePosition, BadgeSize, ButtonAppearance, ButtonVariant, CardAppearance, CardVariant, CheckboxListAlignType, CheckboxState, ClickStrategy, ComponentColor, DecorationElementAppearance, DigitInputPrimitiveOption, DigitInputShape, DropdownPanelAppearance, DropdownPanelVariant, FabSize, FormElementAppearance, FormElementVariant, OneAxisAlignment, OutlinedAppearance, PaginationAlign, PanelAppearance, PanelVariant, ProgressBarAppearance, ProgressBarMode, ProgressBarSize, ProgressBarVariant, ProgressCircleAppearance, ProgressCircleVariant, SegmentAppearance, SegmentVariant, SimpleComponentColor, SimpleOneAxisAlignment, SliderDecorationPosition, SliderTooltipBehavior, SortType, StarColor, StarFillMode, TableAlignType, TableAppearance, TablePaginationStrategy, TableVariant, TransformType, _chipDefaults, _modalDefaults, provideBadgeDefaults, provideButtonDefaults, provideCalendarDefaults, provideCardDefaults, provideCheckboxDefaults, provideCheckboxListDefaults, provideChipDefaults, provideDateInputDefaults, provideDeletableChipDefaults, provideDialogDefaults, provideDigitInputDefaults, provideDividerDefaults, provideDropdownPanelDefaults, provideFabDefaults, provideFileDropAreaDefaults, provideFileInputDefaults, provideFormFieldDefaults, provideFormFieldFrameDefaults, provideHexInputDefaults, provideIconButtonDefaults, provideIconDefaults, provideInputDefaults, provideKbdDefaults, provideKbdShortcutDefaults, provideModalDefaults, provideNumberInputDefaults, providePasswordInputDefaults, provideProgressBarDefaults, provideProgressCircleDefaults, provideRadioDefaults, provideRatingDisplayDefaults, provideRatingInputDefaults, provideSegmentDefaults, provideSelectDefaults, provideSelectableChipDefaults, provideSlideToggleDefaults, provideSliderDefaults, provideSnackbarDefaults, provideSpinnerDefaults, provideStarButtonDefaults, provideStarDefaults, provideStateboxDefaults, provideTabberDefaults, provideTableDefaults, provideTableFromCsvDefaults, provideTablePaginationDefaults, searchInString };
|
|
14722
14990
|
//# sourceMappingURL=ardium-ui-ui.mjs.map
|