@kirbydesign/designsystem 9.2.1 → 9.3.1
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/esm2022/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/form-field/form-field.component.mjs +18 -5
- package/esm2022/form-field/form-field.module.mjs +5 -4
- package/esm2022/form-field/input/input.component.mjs +3 -3
- package/esm2022/form-field/textarea/textarea.component.mjs +3 -3
- package/esm2022/header/header.component.mjs +18 -3
- package/esm2022/header/header.module.mjs +7 -4
- package/esm2022/header/public_api.mjs +2 -2
- package/esm2022/range/range.component.mjs +5 -1
- package/esm2022/shared/floating/floating.directive.mjs +12 -5
- package/fesm2022/kirbydesign-designsystem-checkbox.mjs +2 -2
- package/fesm2022/kirbydesign-designsystem-checkbox.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-form-field.mjs +72 -59
- package/fesm2022/kirbydesign-designsystem-form-field.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-header.mjs +23 -5
- package/fesm2022/kirbydesign-designsystem-header.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-range.mjs +4 -0
- package/fesm2022/kirbydesign-designsystem-range.mjs.map +1 -1
- package/fesm2022/kirbydesign-designsystem-shared-floating.mjs +11 -4
- package/fesm2022/kirbydesign-designsystem-shared-floating.mjs.map +1 -1
- package/form-field/form-field.component.d.ts +5 -1
- package/form-field/form-field.module.d.ts +2 -1
- package/header/header.component.d.ts +6 -1
- package/header/header.module.d.ts +1 -1
- package/header/public_api.d.ts +1 -1
- package/package.json +2 -2
- package/range/range.component.d.ts +1 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Directive, Input,
|
|
2
|
+
import { Directive, Input, LOCALE_ID, Inject, HostListener, Component, ChangeDetectionStrategy, EventEmitter, HostBinding, ElementRef, ContentChildren, ContentChild, NgModule } from '@angular/core';
|
|
3
3
|
import * as i1 from '@kirbydesign/designsystem/helpers';
|
|
4
4
|
import { UniqueIdGenerator, DesignTokenHelper } from '@kirbydesign/designsystem/helpers';
|
|
5
5
|
import { RadioGroupComponent } from '@kirbydesign/designsystem/radio';
|
|
@@ -9,6 +9,8 @@ import * as i4 from '@angular/common';
|
|
|
9
9
|
import { getLocaleDateFormat, FormatWidth, CommonModule, getLocaleNumberSymbol, NumberSymbol } from '@angular/common';
|
|
10
10
|
import 'inputmask/lib/extensions/inputmask.date.extensions';
|
|
11
11
|
import Inputmask from 'inputmask/lib/inputmask';
|
|
12
|
+
import * as i5 from '@kirbydesign/designsystem/icon';
|
|
13
|
+
import { IconModule } from '@kirbydesign/designsystem/icon';
|
|
12
14
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
13
15
|
import 'inputmask/lib/extensions/inputmask.numeric.extensions';
|
|
14
16
|
|
|
@@ -31,54 +33,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
|
|
|
31
33
|
args: ['kirby-affix']
|
|
32
34
|
}] } });
|
|
33
35
|
|
|
34
|
-
class FormFieldMessageComponent {
|
|
35
|
-
constructor() {
|
|
36
|
-
this.position = 'left';
|
|
37
|
-
}
|
|
38
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: FormFieldMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: FormFieldMessageComponent, selector: "kirby-form-field-message", inputs: { text: "text", position: "position" }, ngImport: i0, template: "{{ text }}\n<ng-content></ng-content>\n", styles: [":host{font-style:italic;font-size:12px;font-weight:400;font-stretch:normal;line-height:16px;min-height:16px;letter-spacing:normal;color:var(--kirby-text-color-black)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
40
|
-
}
|
|
41
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: FormFieldMessageComponent, decorators: [{
|
|
42
|
-
type: Component,
|
|
43
|
-
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'kirby-form-field-message', template: "{{ text }}\n<ng-content></ng-content>\n", styles: [":host{font-style:italic;font-size:12px;font-weight:400;font-stretch:normal;line-height:16px;min-height:16px;letter-spacing:normal;color:var(--kirby-text-color-black)}\n"] }]
|
|
44
|
-
}], propDecorators: { text: [{
|
|
45
|
-
type: Input
|
|
46
|
-
}], position: [{
|
|
47
|
-
type: Input
|
|
48
|
-
}] } });
|
|
49
|
-
|
|
50
|
-
class InputCounterComponent {
|
|
51
|
-
get text() {
|
|
52
|
-
if (this.length === undefined) {
|
|
53
|
-
return undefined;
|
|
54
|
-
}
|
|
55
|
-
const ofMaxlength = this.maxlength ? `/${this.maxlength}` : '';
|
|
56
|
-
return `${this.length}${ofMaxlength}`;
|
|
57
|
-
}
|
|
58
|
-
ngOnInit() {
|
|
59
|
-
if (this.listenTo) {
|
|
60
|
-
this.length = this.listenTo.value ? this.listenTo.value.length : 0;
|
|
61
|
-
this.maxlength = this.listenTo.maxlength;
|
|
62
|
-
this._inputChangeSubscription = this.listenTo.kirbyChange.subscribe((value) => {
|
|
63
|
-
this.length = value.length;
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
ngOnDestroy() {
|
|
68
|
-
if (this._inputChangeSubscription) {
|
|
69
|
-
this._inputChangeSubscription.unsubscribe();
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: InputCounterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
73
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: InputCounterComponent, selector: "kirby-input-counter", inputs: { listenTo: "listenTo" }, ngImport: i0, template: "<kirby-form-field-message [text]=\"text\"></kirby-form-field-message>\n", dependencies: [{ kind: "component", type: FormFieldMessageComponent, selector: "kirby-form-field-message", inputs: ["text", "position"] }] }); }
|
|
74
|
-
}
|
|
75
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: InputCounterComponent, decorators: [{
|
|
76
|
-
type: Component,
|
|
77
|
-
args: [{ selector: 'kirby-input-counter', template: "<kirby-form-field-message [text]=\"text\"></kirby-form-field-message>\n" }]
|
|
78
|
-
}], propDecorators: { listenTo: [{
|
|
79
|
-
type: Input
|
|
80
|
-
}] } });
|
|
81
|
-
|
|
82
36
|
class DateInputDirective {
|
|
83
37
|
onInput() {
|
|
84
38
|
if (!this.isDateInput)
|
|
@@ -203,6 +157,54 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
|
|
|
203
157
|
type: Input
|
|
204
158
|
}] } });
|
|
205
159
|
|
|
160
|
+
class FormFieldMessageComponent {
|
|
161
|
+
constructor() {
|
|
162
|
+
this.position = 'left';
|
|
163
|
+
}
|
|
164
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: FormFieldMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
165
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: FormFieldMessageComponent, selector: "kirby-form-field-message", inputs: { text: "text", position: "position" }, ngImport: i0, template: "{{ text }}\n<ng-content></ng-content>\n", styles: [":host{font-style:italic;font-size:12px;font-weight:400;font-stretch:normal;line-height:16px;min-height:16px;letter-spacing:normal;color:var(--kirby-text-color-black)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
166
|
+
}
|
|
167
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: FormFieldMessageComponent, decorators: [{
|
|
168
|
+
type: Component,
|
|
169
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'kirby-form-field-message', template: "{{ text }}\n<ng-content></ng-content>\n", styles: [":host{font-style:italic;font-size:12px;font-weight:400;font-stretch:normal;line-height:16px;min-height:16px;letter-spacing:normal;color:var(--kirby-text-color-black)}\n"] }]
|
|
170
|
+
}], propDecorators: { text: [{
|
|
171
|
+
type: Input
|
|
172
|
+
}], position: [{
|
|
173
|
+
type: Input
|
|
174
|
+
}] } });
|
|
175
|
+
|
|
176
|
+
class InputCounterComponent {
|
|
177
|
+
get text() {
|
|
178
|
+
if (this.length === undefined) {
|
|
179
|
+
return undefined;
|
|
180
|
+
}
|
|
181
|
+
const ofMaxlength = this.maxlength ? `/${this.maxlength}` : '';
|
|
182
|
+
return `${this.length}${ofMaxlength}`;
|
|
183
|
+
}
|
|
184
|
+
ngOnInit() {
|
|
185
|
+
if (this.listenTo) {
|
|
186
|
+
this.length = this.listenTo.value ? this.listenTo.value.length : 0;
|
|
187
|
+
this.maxlength = this.listenTo.maxlength;
|
|
188
|
+
this._inputChangeSubscription = this.listenTo.kirbyChange.subscribe((value) => {
|
|
189
|
+
this.length = value.length;
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
ngOnDestroy() {
|
|
194
|
+
if (this._inputChangeSubscription) {
|
|
195
|
+
this._inputChangeSubscription.unsubscribe();
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: InputCounterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
199
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: InputCounterComponent, selector: "kirby-input-counter", inputs: { listenTo: "listenTo" }, ngImport: i0, template: "<kirby-form-field-message [text]=\"text\"></kirby-form-field-message>\n", dependencies: [{ kind: "component", type: FormFieldMessageComponent, selector: "kirby-form-field-message", inputs: ["text", "position"] }] }); }
|
|
200
|
+
}
|
|
201
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: InputCounterComponent, decorators: [{
|
|
202
|
+
type: Component,
|
|
203
|
+
args: [{ selector: 'kirby-input-counter', template: "<kirby-form-field-message [text]=\"text\"></kirby-form-field-message>\n" }]
|
|
204
|
+
}], propDecorators: { listenTo: [{
|
|
205
|
+
type: Input
|
|
206
|
+
}] } });
|
|
207
|
+
|
|
206
208
|
var InputSize;
|
|
207
209
|
(function (InputSize) {
|
|
208
210
|
InputSize["medium"] = "md";
|
|
@@ -250,7 +252,7 @@ class InputComponent {
|
|
|
250
252
|
}
|
|
251
253
|
}
|
|
252
254
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: InputComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
253
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: InputComponent, isStandalone: true, selector: "input[kirby-input]", inputs: { type: "type", size: "size", borderless: "borderless", hasError: "hasError", autocomplete: "autocomplete", autocorrect: "autocorrect", value: "value", maxlength: "maxlength", inputmode: "inputmode" }, host: { listeners: { "keyup": "_onKeyUp($event.target.value)", "paste": "_onCutPaste($event.target)", "cut": "_onCutPaste($event.target)" }, properties: { "class": "this.size", "class.borderless": "this.borderless", "class.error": "this.hasError", "attr.autocomplete": "this.autocomplete", "attr.autocorrect": "this.autocorrect", "attr.value": "this.value", "attr.maxlength": "this.maxlength", "attr.inputmode": "this.inputmode" } }, usesOnChanges: true, hostDirectives: [{ directive: DateInputDirective, inputs: ["prefillYear", "prefillYear", "useNativeDatePicker", "useNativeDatePicker"] }], ngImport: i0, template: '', isInline: true, styles: [":host(.error){border:1px solid var(--kirby-danger);padding:calc(1em - 1px)}:host(.cloned-input){pointer-events:none;position:absolute;top:0;left:0}:host-context(label).cloned-input{top:24px}:host{background-color:var(--kirby-inputs-background-color);color:var(--kirby-inputs-color);border:none;box-sizing:border-box;font-family:var(--kirby-font-family);font-size:1rem;line-height:1.5;outline:none;margin:0;-webkit-appearance:none;appearance:none;border-radius:16px;box-shadow:var(--kirby-inputs-elevation);padding:1em;width:100%}@media (hover: hover) and (pointer: fine){:host:focus{transition:all 80ms linear 0ms;box-shadow:0 1px 24px #1c1c1c0a,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}:host:focus:not(:focus-visible){box-shadow:0 1px 24px #1c1c1c0a,0 0 0 0 transparent}:host:focus-visible{transition:all 80ms linear 0ms;box-shadow:0 1px 24px #1c1c1c0a,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}:host:host-context(kirby-item),:host.borderless{border-radius:0;box-shadow:none;padding-inline:0;width:auto}:host:disabled{background-color:var(--kirby-light-tint);color:var(--kirby-text-color-semi-dark);box-shadow:none}:host::placeholder{color:var(--kirby-inputs-placeholder-color)}@supports not (selector(::-webkit-date-and-time-value)){:host([type=date]::-webkit-date-and-time-value){min-height:1.5em}}:host{transition:all 80ms linear 0ms;transition-property:background-color}@media (hover: hover){:host:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;background-color:var(--kirby-inputs-background-color-hover);cursor:text}}:host:active,:host.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);background-color:var(--kirby-inputs-background-color-active)}:host[type=number]{-webkit-appearance:textfield;appearance:textfield}:host::-webkit-outer-spin-button,:host::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none;margin:0}:host(.md){border-radius:24px;padding-block:.5em}:host(.md).error{padding-block:calc(.5em - 1px)}:host-context(kirby-item kirby-form-field[slot=end])[type=number]{font-weight:700}.date-mask-wrapper{position:relative}:host-context(.date-mask-wrapper){color:var(--kirby-text-color-semi-dark)}.date-mask{font-family:var(--kirby-font-family);line-height:1.5;color:var(--kirby-white-contrast);position:absolute;top:0;left:0;padding:1em}:host(.md)+.date-mask{padding-block:.5em}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
255
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: InputComponent, isStandalone: true, selector: "input[kirby-input]", inputs: { type: "type", size: "size", borderless: "borderless", hasError: "hasError", autocomplete: "autocomplete", autocorrect: "autocorrect", value: "value", maxlength: "maxlength", inputmode: "inputmode" }, host: { listeners: { "keyup": "_onKeyUp($event.target.value)", "paste": "_onCutPaste($event.target)", "cut": "_onCutPaste($event.target)" }, properties: { "class": "this.size", "class.borderless": "this.borderless", "class.error": "this.hasError", "attr.autocomplete": "this.autocomplete", "attr.autocorrect": "this.autocorrect", "attr.value": "this.value", "attr.maxlength": "this.maxlength", "attr.inputmode": "this.inputmode" } }, usesOnChanges: true, hostDirectives: [{ directive: DateInputDirective, inputs: ["prefillYear", "prefillYear", "useNativeDatePicker", "useNativeDatePicker"] }], ngImport: i0, template: '', isInline: true, styles: [":host(.error){border:1px solid var(--kirby-danger);padding:calc(1em - 1px)}:host(.cloned-input){pointer-events:none;position:absolute;top:0;left:0}:host-context(label).cloned-input{top:24px}:host{background-color:var(--kirby-inputs-background-color);color:var(--kirby-inputs-color);border:none;box-sizing:border-box;font-family:var(--kirby-font-family);font-size:1rem;line-height:1.5;outline:none;margin:0;-webkit-appearance:none;appearance:none;border-radius:16px;box-shadow:var(--kirby-inputs-elevation);padding:1em;width:100%}@media (hover: hover) and (pointer: fine){:host:focus{transition:all 80ms linear 0ms;box-shadow:0 1px 24px #1c1c1c0a,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}:host:focus:not(:focus-visible){box-shadow:0 1px 24px #1c1c1c0a,0 0 0 0 transparent}:host:focus-visible{transition:all 80ms linear 0ms;box-shadow:0 1px 24px #1c1c1c0a,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}:host:host-context(kirby-item),:host.borderless{border-radius:0;box-shadow:none;padding-inline:0;width:auto}:host:disabled{background-color:var(--kirby-light-tint);color:var(--kirby-text-color-semi-dark);box-shadow:none}:host::placeholder{color:var(--kirby-inputs-placeholder-color)}@supports not (selector(::-webkit-date-and-time-value)){:host(input[type=date]::-webkit-date-and-time-value){min-height:1.5em;text-align:start}}:host{transition:all 80ms linear 0ms;transition-property:background-color}@media (hover: hover){:host:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;background-color:var(--kirby-inputs-background-color-hover);cursor:text}}:host:active,:host.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);background-color:var(--kirby-inputs-background-color-active)}:host[type=date]{background-color:var(--date-input-background-color)}:host[type=number]{-webkit-appearance:textfield;appearance:textfield}:host::-webkit-outer-spin-button,:host::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none;margin:0}:host(.md){border-radius:24px;padding-block:.5em}:host(.md).error{padding-block:calc(.5em - 1px)}:host-context(kirby-item kirby-form-field[slot=end])[type=number]{font-weight:700}.date-mask-wrapper{position:relative}:host-context(.date-mask-wrapper){color:var(--kirby-text-color-semi-dark)}.date-mask{font-family:var(--kirby-font-family);line-height:1.5;color:var(--kirby-white-contrast);position:absolute;top:0;left:0;padding:1em}:host(.md)+.date-mask{padding-block:.5em}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
254
256
|
}
|
|
255
257
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: InputComponent, decorators: [{
|
|
256
258
|
type: Component,
|
|
@@ -260,7 +262,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
|
|
|
260
262
|
// eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
|
|
261
263
|
inputs: ['prefillYear', 'useNativeDatePicker'],
|
|
262
264
|
},
|
|
263
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, selector: 'input[kirby-input]', template: '', styles: [":host(.error){border:1px solid var(--kirby-danger);padding:calc(1em - 1px)}:host(.cloned-input){pointer-events:none;position:absolute;top:0;left:0}:host-context(label).cloned-input{top:24px}:host{background-color:var(--kirby-inputs-background-color);color:var(--kirby-inputs-color);border:none;box-sizing:border-box;font-family:var(--kirby-font-family);font-size:1rem;line-height:1.5;outline:none;margin:0;-webkit-appearance:none;appearance:none;border-radius:16px;box-shadow:var(--kirby-inputs-elevation);padding:1em;width:100%}@media (hover: hover) and (pointer: fine){:host:focus{transition:all 80ms linear 0ms;box-shadow:0 1px 24px #1c1c1c0a,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}:host:focus:not(:focus-visible){box-shadow:0 1px 24px #1c1c1c0a,0 0 0 0 transparent}:host:focus-visible{transition:all 80ms linear 0ms;box-shadow:0 1px 24px #1c1c1c0a,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}:host:host-context(kirby-item),:host.borderless{border-radius:0;box-shadow:none;padding-inline:0;width:auto}:host:disabled{background-color:var(--kirby-light-tint);color:var(--kirby-text-color-semi-dark);box-shadow:none}:host::placeholder{color:var(--kirby-inputs-placeholder-color)}@supports not (selector(::-webkit-date-and-time-value)){:host([type=date]::-webkit-date-and-time-value){min-height:1.5em}}:host{transition:all 80ms linear 0ms;transition-property:background-color}@media (hover: hover){:host:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;background-color:var(--kirby-inputs-background-color-hover);cursor:text}}:host:active,:host.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);background-color:var(--kirby-inputs-background-color-active)}:host[type=number]{-webkit-appearance:textfield;appearance:textfield}:host::-webkit-outer-spin-button,:host::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none;margin:0}:host(.md){border-radius:24px;padding-block:.5em}:host(.md).error{padding-block:calc(.5em - 1px)}:host-context(kirby-item kirby-form-field[slot=end])[type=number]{font-weight:700}.date-mask-wrapper{position:relative}:host-context(.date-mask-wrapper){color:var(--kirby-text-color-semi-dark)}.date-mask{font-family:var(--kirby-font-family);line-height:1.5;color:var(--kirby-white-contrast);position:absolute;top:0;left:0;padding:1em}:host(.md)+.date-mask{padding-block:.5em}\n"] }]
|
|
265
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, selector: 'input[kirby-input]', template: '', styles: [":host(.error){border:1px solid var(--kirby-danger);padding:calc(1em - 1px)}:host(.cloned-input){pointer-events:none;position:absolute;top:0;left:0}:host-context(label).cloned-input{top:24px}:host{background-color:var(--kirby-inputs-background-color);color:var(--kirby-inputs-color);border:none;box-sizing:border-box;font-family:var(--kirby-font-family);font-size:1rem;line-height:1.5;outline:none;margin:0;-webkit-appearance:none;appearance:none;border-radius:16px;box-shadow:var(--kirby-inputs-elevation);padding:1em;width:100%}@media (hover: hover) and (pointer: fine){:host:focus{transition:all 80ms linear 0ms;box-shadow:0 1px 24px #1c1c1c0a,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}:host:focus:not(:focus-visible){box-shadow:0 1px 24px #1c1c1c0a,0 0 0 0 transparent}:host:focus-visible{transition:all 80ms linear 0ms;box-shadow:0 1px 24px #1c1c1c0a,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}:host:host-context(kirby-item),:host.borderless{border-radius:0;box-shadow:none;padding-inline:0;width:auto}:host:disabled{background-color:var(--kirby-light-tint);color:var(--kirby-text-color-semi-dark);box-shadow:none}:host::placeholder{color:var(--kirby-inputs-placeholder-color)}@supports not (selector(::-webkit-date-and-time-value)){:host(input[type=date]::-webkit-date-and-time-value){min-height:1.5em;text-align:start}}:host{transition:all 80ms linear 0ms;transition-property:background-color}@media (hover: hover){:host:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;background-color:var(--kirby-inputs-background-color-hover);cursor:text}}:host:active,:host.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);background-color:var(--kirby-inputs-background-color-active)}:host[type=date]{background-color:var(--date-input-background-color)}:host[type=number]{-webkit-appearance:textfield;appearance:textfield}:host::-webkit-outer-spin-button,:host::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none;margin:0}:host(.md){border-radius:24px;padding-block:.5em}:host(.md).error{padding-block:calc(.5em - 1px)}:host-context(kirby-item kirby-form-field[slot=end])[type=number]{font-weight:700}.date-mask-wrapper{position:relative}:host-context(.date-mask-wrapper){color:var(--kirby-text-color-semi-dark)}.date-mask{font-family:var(--kirby-font-family);line-height:1.5;color:var(--kirby-white-contrast);position:absolute;top:0;left:0;padding:1em}:host(.md)+.date-mask{padding-block:.5em}\n"] }]
|
|
264
266
|
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { type: [{
|
|
265
267
|
type: Input
|
|
266
268
|
}], size: [{
|
|
@@ -333,11 +335,11 @@ class TextareaComponent {
|
|
|
333
335
|
}
|
|
334
336
|
}
|
|
335
337
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: TextareaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
336
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: TextareaComponent, isStandalone: true, selector: "textarea[kirby-textarea]", inputs: { value: "value", borderless: "borderless", hasError: "hasError", autocomplete: "autocomplete", autocorrect: "autocorrect", maxlength: "maxlength" }, host: { listeners: { "keyup": "_onKeyUp($event.target.value)", "paste": "_onCutPaste($event.target)", "cut": "_onCutPaste($event.target)" }, properties: { "class.borderless": "this.borderless", "class.error": "this.hasError", "attr.autocomplete": "this.autocomplete", "attr.autocorrect": "this.autocorrect", "attr.maxlength": "this.maxlength" } }, usesOnChanges: true, ngImport: i0, template: "<ng-content *ngIf=\"!value\"></ng-content>\n<ng-container *ngIf=\"value\">{{ value }}</ng-container>\n", styles: [":host(.error){border:1px solid var(--kirby-danger);padding:calc(1em - 1px)}:host(.cloned-input){pointer-events:none;position:absolute;top:0;left:0}:host-context(label).cloned-input{top:24px}:host{background-color:var(--kirby-inputs-background-color);color:var(--kirby-inputs-color);border:none;box-sizing:border-box;font-family:var(--kirby-font-family);font-size:1rem;line-height:1.5;outline:none;margin:0;-webkit-appearance:none;appearance:none;border-radius:16px;box-shadow:var(--kirby-inputs-elevation);padding:1em;width:100%}@media (hover: hover) and (pointer: fine){:host:focus{transition:all 80ms linear 0ms;box-shadow:0 1px 24px #1c1c1c0a,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}:host:focus:not(:focus-visible){box-shadow:0 1px 24px #1c1c1c0a,0 0 0 0 transparent}:host:focus-visible{transition:all 80ms linear 0ms;box-shadow:0 1px 24px #1c1c1c0a,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}:host:host-context(kirby-item),:host.borderless{border-radius:0;box-shadow:none;padding-inline:0;width:auto}:host:disabled{background-color:var(--kirby-light-tint);color:var(--kirby-text-color-semi-dark);box-shadow:none}:host::placeholder{color:var(--kirby-inputs-placeholder-color)}@supports not (selector(::-webkit-date-and-time-value)){:host([type=date]::-webkit-date-and-time-value){min-height:1.5em}}:host{position:relative;transition:all 80ms linear 0ms;transition-property:background-color;font-family:var(--kirby-font-family);resize:none}@media (hover: hover){:host:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;background-color:#f5f5f5;cursor:text}}:host:active,:host.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);background-color:#ebebeb}@media (min-width: 768px){:host{resize:vertical}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
338
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: TextareaComponent, isStandalone: true, selector: "textarea[kirby-textarea]", inputs: { value: "value", borderless: "borderless", hasError: "hasError", autocomplete: "autocomplete", autocorrect: "autocorrect", maxlength: "maxlength" }, host: { listeners: { "keyup": "_onKeyUp($event.target.value)", "paste": "_onCutPaste($event.target)", "cut": "_onCutPaste($event.target)" }, properties: { "class.borderless": "this.borderless", "class.error": "this.hasError", "attr.autocomplete": "this.autocomplete", "attr.autocorrect": "this.autocorrect", "attr.maxlength": "this.maxlength" } }, usesOnChanges: true, ngImport: i0, template: "<ng-content *ngIf=\"!value\"></ng-content>\n<ng-container *ngIf=\"value\">{{ value }}</ng-container>\n", styles: [":host(.error){border:1px solid var(--kirby-danger);padding:calc(1em - 1px)}:host(.cloned-input){pointer-events:none;position:absolute;top:0;left:0}:host-context(label).cloned-input{top:24px}:host{background-color:var(--kirby-inputs-background-color);color:var(--kirby-inputs-color);border:none;box-sizing:border-box;font-family:var(--kirby-font-family);font-size:1rem;line-height:1.5;outline:none;margin:0;-webkit-appearance:none;appearance:none;border-radius:16px;box-shadow:var(--kirby-inputs-elevation);padding:1em;width:100%}@media (hover: hover) and (pointer: fine){:host:focus{transition:all 80ms linear 0ms;box-shadow:0 1px 24px #1c1c1c0a,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}:host:focus:not(:focus-visible){box-shadow:0 1px 24px #1c1c1c0a,0 0 0 0 transparent}:host:focus-visible{transition:all 80ms linear 0ms;box-shadow:0 1px 24px #1c1c1c0a,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}:host:host-context(kirby-item),:host.borderless{border-radius:0;box-shadow:none;padding-inline:0;width:auto}:host:disabled{background-color:var(--kirby-light-tint);color:var(--kirby-text-color-semi-dark);box-shadow:none}:host::placeholder{color:var(--kirby-inputs-placeholder-color)}@supports not (selector(::-webkit-date-and-time-value)){:host(input[type=date]::-webkit-date-and-time-value){min-height:1.5em;text-align:start}}:host{position:relative;transition:all 80ms linear 0ms;transition-property:background-color;font-family:var(--kirby-font-family);resize:none}@media (hover: hover){:host:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;background-color:#f5f5f5;cursor:text}}:host:active,:host.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);background-color:#ebebeb}@media (min-width: 768px){:host{resize:vertical}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
337
339
|
}
|
|
338
340
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: TextareaComponent, decorators: [{
|
|
339
341
|
type: Component,
|
|
340
|
-
args: [{ standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, selector: 'textarea[kirby-textarea]', template: "<ng-content *ngIf=\"!value\"></ng-content>\n<ng-container *ngIf=\"value\">{{ value }}</ng-container>\n", styles: [":host(.error){border:1px solid var(--kirby-danger);padding:calc(1em - 1px)}:host(.cloned-input){pointer-events:none;position:absolute;top:0;left:0}:host-context(label).cloned-input{top:24px}:host{background-color:var(--kirby-inputs-background-color);color:var(--kirby-inputs-color);border:none;box-sizing:border-box;font-family:var(--kirby-font-family);font-size:1rem;line-height:1.5;outline:none;margin:0;-webkit-appearance:none;appearance:none;border-radius:16px;box-shadow:var(--kirby-inputs-elevation);padding:1em;width:100%}@media (hover: hover) and (pointer: fine){:host:focus{transition:all 80ms linear 0ms;box-shadow:0 1px 24px #1c1c1c0a,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}:host:focus:not(:focus-visible){box-shadow:0 1px 24px #1c1c1c0a,0 0 0 0 transparent}:host:focus-visible{transition:all 80ms linear 0ms;box-shadow:0 1px 24px #1c1c1c0a,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}:host:host-context(kirby-item),:host.borderless{border-radius:0;box-shadow:none;padding-inline:0;width:auto}:host:disabled{background-color:var(--kirby-light-tint);color:var(--kirby-text-color-semi-dark);box-shadow:none}:host::placeholder{color:var(--kirby-inputs-placeholder-color)}@supports not (selector(::-webkit-date-and-time-value)){:host([type=date]::-webkit-date-and-time-value){min-height:1.5em}}:host{position:relative;transition:all 80ms linear 0ms;transition-property:background-color;font-family:var(--kirby-font-family);resize:none}@media (hover: hover){:host:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;background-color:#f5f5f5;cursor:text}}:host:active,:host.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);background-color:#ebebeb}@media (min-width: 768px){:host{resize:vertical}}\n"] }]
|
|
342
|
+
args: [{ standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, selector: 'textarea[kirby-textarea]', template: "<ng-content *ngIf=\"!value\"></ng-content>\n<ng-container *ngIf=\"value\">{{ value }}</ng-container>\n", styles: [":host(.error){border:1px solid var(--kirby-danger);padding:calc(1em - 1px)}:host(.cloned-input){pointer-events:none;position:absolute;top:0;left:0}:host-context(label).cloned-input{top:24px}:host{background-color:var(--kirby-inputs-background-color);color:var(--kirby-inputs-color);border:none;box-sizing:border-box;font-family:var(--kirby-font-family);font-size:1rem;line-height:1.5;outline:none;margin:0;-webkit-appearance:none;appearance:none;border-radius:16px;box-shadow:var(--kirby-inputs-elevation);padding:1em;width:100%}@media (hover: hover) and (pointer: fine){:host:focus{transition:all 80ms linear 0ms;box-shadow:0 1px 24px #1c1c1c0a,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}:host:focus:not(:focus-visible){box-shadow:0 1px 24px #1c1c1c0a,0 0 0 0 transparent}:host:focus-visible{transition:all 80ms linear 0ms;box-shadow:0 1px 24px #1c1c1c0a,0 0 0 2px var(--kirby-background-color),0 0 0 4px #4d90fe}}:host:host-context(kirby-item),:host.borderless{border-radius:0;box-shadow:none;padding-inline:0;width:auto}:host:disabled{background-color:var(--kirby-light-tint);color:var(--kirby-text-color-semi-dark);box-shadow:none}:host::placeholder{color:var(--kirby-inputs-placeholder-color)}@supports not (selector(::-webkit-date-and-time-value)){:host(input[type=date]::-webkit-date-and-time-value){min-height:1.5em;text-align:start}}:host{position:relative;transition:all 80ms linear 0ms;transition-property:background-color;font-family:var(--kirby-font-family);resize:none}@media (hover: hover){:host:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;background-color:#f5f5f5;cursor:text}}:host:active,:host.interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);background-color:#ebebeb}@media (min-width: 768px){:host{resize:vertical}}\n"] }]
|
|
341
343
|
}], propDecorators: { value: [{
|
|
342
344
|
type: Input
|
|
343
345
|
}], borderless: [{
|
|
@@ -383,6 +385,7 @@ class FormFieldComponent {
|
|
|
383
385
|
this.windowRef = windowRef;
|
|
384
386
|
this.resizeObserverService = resizeObserverService;
|
|
385
387
|
this.isRegistered = false;
|
|
388
|
+
this.showDefaultCalendarIcon = false;
|
|
386
389
|
this._labelId = UniqueIdGenerator.scopedTo('kirby-form-field-label').next();
|
|
387
390
|
this.element = elementRef.nativeElement;
|
|
388
391
|
}
|
|
@@ -438,7 +441,7 @@ class FormFieldComponent {
|
|
|
438
441
|
this.affixElements.forEach((affix) => {
|
|
439
442
|
this.resizeObserverService.observe(affix.el, (entry) => {
|
|
440
443
|
const padding = affix.type === 'prefix' ? 'padding-left' : 'padding-right';
|
|
441
|
-
const affixWidth = entry.contentRect.width;
|
|
444
|
+
const affixWidth = this.input.nativeElement.type === 'date' ? 0 : entry.contentRect.width;
|
|
442
445
|
const existingPadding = parseInt(DesignTokenHelper.size('s'));
|
|
443
446
|
this.renderer.setStyle(this.input.nativeElement, `${padding}`, `${affixWidth + existingPadding}px`);
|
|
444
447
|
});
|
|
@@ -459,6 +462,13 @@ class FormFieldComponent {
|
|
|
459
462
|
this.isRegistered = true;
|
|
460
463
|
this.dispatchLoadEvent();
|
|
461
464
|
}
|
|
465
|
+
// Decide if default calendar icon for date input should be shown
|
|
466
|
+
this.showDefaultCalendarIcon = this.shouldShowDefaultCalendarIcon();
|
|
467
|
+
}
|
|
468
|
+
shouldShowDefaultCalendarIcon() {
|
|
469
|
+
return (this.dateInput?.useNativeDatePicker &&
|
|
470
|
+
!this.affixElements.some((affix) => affix.type === 'suffix') // there are no suffix elements
|
|
471
|
+
);
|
|
462
472
|
}
|
|
463
473
|
ngOnDestroy() {
|
|
464
474
|
// Dispatch an `ionInputDidUnload` event to unregister
|
|
@@ -472,11 +482,11 @@ class FormFieldComponent {
|
|
|
472
482
|
});
|
|
473
483
|
}
|
|
474
484
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: FormFieldComponent, deps: [{ token: i0.ElementRef }, { token: i1.PlatformService }, { token: i0.Renderer2 }, { token: i2.WindowRef }, { token: i3.ResizeObserverService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
475
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: FormFieldComponent, selector: "kirby-form-field", inputs: { label: "label", message: "message" }, host: { listeners: { "kirbyRegisterFormField": "_onRegisterFormField()" } }, queries: [{ propertyName: "counter", first: true, predicate: InputCounterComponent, descendants: true }, { propertyName: "radioGroupComponent", first: true, predicate: RadioGroupComponent, descendants: true }, { propertyName: "radioGroupElement", first: true, predicate: RadioGroupComponent, descendants: true, read: ElementRef }, { propertyName: "input", first: true, predicate: InputComponent, descendants: true, read: ElementRef }, { propertyName: "textarea", first: true, predicate: TextareaComponent, descendants: true, read: ElementRef }, { propertyName: "affixElements", predicate: AffixDirective }], ngImport: i0, template: "<label *ngIf=\"_wrapContentInLabel\">\n <ng-container *ngTemplateOutlet=\"labelTextTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"slottedInputTemplate\"></ng-container>\n</label>\n\n<ng-container *ngIf=\"!_wrapContentInLabel\">\n <ng-container *ngTemplateOutlet=\"labelTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"slottedInputTemplate\"></ng-container>\n</ng-container>\n\n<div *ngIf=\"message !== undefined || counter\" class=\"texts\">\n <kirby-form-field-message\n *ngIf=\"message !== undefined\"\n class=\"message\"\n [text]=\"message\"\n ></kirby-form-field-message>\n\n <div *ngIf=\"counter\" class=\"counter\">\n <ng-content select=\"kirby-input-counter\"></ng-content>\n </div>\n</div>\n\n<ng-template #slottedInputTemplate>\n <div class=\"affix-container\">\n <div class=\"prefix vertical-align semi-dark-text\">\n <ng-content select=\"[kirby-affix='prefix']\"></ng-content>\n </div>\n <ng-content select=\"input[kirby-input]\"></ng-content>\n <ng-content select=\"textarea[kirby-textarea]\"></ng-content>\n <ng-content select=\"kirby-radio-group\"></ng-content>\n <div class=\"suffix vertical-align semi-dark-text\">\n <ng-content select=\"[kirby-affix='suffix']\"></ng-content>\n </div>\n </div>\n</ng-template>\n\n<ng-template #labelTextTemplate>\n <ng-container *ngIf=\"label\">\n <span class=\"text\">{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #labelTemplate>\n <ng-container *ngIf=\"label\">\n <label class=\"text\" [id]=\"_labelId\" (click)=\"onLabelClick()\">{{ label }}</label>\n </ng-container>\n</ng-template>\n", styles: [":host{display:block;position:relative;margin-bottom:16px}:host-context(kirby-item){margin-bottom:0}.texts{display:flex;justify-content:space-between;padding:2px 16px 0}.texts .message{flex:75%}.texts .message:only-child{flex-basis:auto}.texts .counter{flex:25%;text-align:right}label{display:block}.text{display:block;font-size:14px;font-weight:300;line-height:20px;margin-bottom:4px;padding:0 16px}.affix-container{position:relative}.affix-container .vertical-align{display:flex;align-items:center;position:absolute;top:0;bottom:0}.affix-container .prefix{left:12px}.affix-container .suffix{right:12px}.affix-container .semi-dark-text ::ng-deep>span,.affix-container .semi-dark-text ::ng-deep>h1,.affix-container .semi-dark-text ::ng-deep>h2,.affix-container .semi-dark-text ::ng-deep>h3,.affix-container .semi-dark-text ::ng-deep>h4,.affix-container .semi-dark-text ::ng-deep>h5,.affix-container .semi-dark-text ::ng-deep>h6,.affix-container .semi-dark-text ::ng-deep>p,.affix-container .semi-dark-text ::ng-deep>data{color:var(--kirby-text-color-semi-dark)}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FormFieldMessageComponent, selector: "kirby-form-field-message", inputs: ["text", "position"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
485
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: FormFieldComponent, selector: "kirby-form-field", inputs: { label: "label", message: "message" }, host: { listeners: { "kirbyRegisterFormField": "_onRegisterFormField()" } }, queries: [{ propertyName: "counter", first: true, predicate: InputCounterComponent, descendants: true }, { propertyName: "radioGroupComponent", first: true, predicate: RadioGroupComponent, descendants: true }, { propertyName: "radioGroupElement", first: true, predicate: RadioGroupComponent, descendants: true, read: ElementRef }, { propertyName: "input", first: true, predicate: InputComponent, descendants: true, read: ElementRef }, { propertyName: "textarea", first: true, predicate: TextareaComponent, descendants: true, read: ElementRef }, { propertyName: "dateInput", first: true, predicate: DateInputDirective, descendants: true }, { propertyName: "affixElements", predicate: AffixDirective }], ngImport: i0, template: "<label *ngIf=\"_wrapContentInLabel\">\n <ng-container *ngTemplateOutlet=\"labelTextTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"slottedInputTemplate\"></ng-container>\n</label>\n\n<ng-container *ngIf=\"!_wrapContentInLabel\">\n <ng-container *ngTemplateOutlet=\"labelTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"slottedInputTemplate\"></ng-container>\n</ng-container>\n\n<div *ngIf=\"message !== undefined || counter\" class=\"texts\">\n <kirby-form-field-message\n *ngIf=\"message !== undefined\"\n class=\"message\"\n [text]=\"message\"\n ></kirby-form-field-message>\n\n <div *ngIf=\"counter\" class=\"counter\">\n <ng-content select=\"kirby-input-counter\"></ng-content>\n </div>\n</div>\n\n<ng-template #slottedInputTemplate>\n <div class=\"affix-container\">\n <div class=\"prefix vertical-align semi-dark-text\">\n <ng-content select=\"[kirby-affix='prefix']\"></ng-content>\n </div>\n <ng-content select=\"input[kirby-input]\"></ng-content>\n <ng-content select=\"textarea[kirby-textarea]\"></ng-content>\n <ng-content select=\"kirby-radio-group\"></ng-content>\n <div class=\"suffix vertical-align semi-dark-text\">\n <ng-content select=\"[kirby-affix='suffix']\"></ng-content>\n <ng-container *ngIf=\"showDefaultCalendarIcon\">\n <kirby-icon name=\"calendar\"></kirby-icon>\n </ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #labelTextTemplate>\n <ng-container *ngIf=\"label\">\n <span class=\"text\">{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #labelTemplate>\n <ng-container *ngIf=\"label\">\n <label class=\"text\" [id]=\"_labelId\" (click)=\"onLabelClick()\">{{ label }}</label>\n </ng-container>\n</ng-template>\n", styles: [":host{display:block;position:relative;margin-bottom:16px}:host-context(kirby-item){margin-bottom:0}.texts{display:flex;justify-content:space-between;padding:2px 16px 0}.texts .message{flex:75%}.texts .message:only-child{flex-basis:auto}.texts .counter{flex:25%;text-align:right}label{display:block}.text{display:block;font-size:14px;font-weight:300;line-height:20px;margin-bottom:4px;padding:0 16px}.affix-container{position:relative}.affix-container .vertical-align{display:flex;align-items:center;position:absolute;top:0;bottom:0}.affix-container .prefix{left:12px}.affix-container .suffix{right:12px}.affix-container .semi-dark-text ::ng-deep>span,.affix-container .semi-dark-text ::ng-deep>h1,.affix-container .semi-dark-text ::ng-deep>h2,.affix-container .semi-dark-text ::ng-deep>h3,.affix-container .semi-dark-text ::ng-deep>h4,.affix-container .semi-dark-text ::ng-deep>h5,.affix-container .semi-dark-text ::ng-deep>h6,.affix-container .semi-dark-text ::ng-deep>p,.affix-container .semi-dark-text ::ng-deep>data{color:var(--kirby-text-color-semi-dark)}.affix-container:has(input[type=date]){--date-input-background-color: var(--kirby-inputs-background-color)}@media (hover: hover){.affix-container:has(input[type=date]):hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;--date-input-background-color: #e0e0e0}}.affix-container:has(input[type=date]):active,.affix-container:has(input[type=date]).interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--date-input-background-color: #cbcbcb}.affix-container:has(input[type=date]) .suffix:not(:empty){top:8px;bottom:8px;padding-inline-start:12px;pointer-events:none;background-color:var(--date-input-background-color);transition:all 80ms linear 0ms;transition-property:background-color}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.IconComponent, selector: "kirby-icon", inputs: ["size", "name", "customName"] }, { kind: "component", type: FormFieldMessageComponent, selector: "kirby-form-field-message", inputs: ["text", "position"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
476
486
|
}
|
|
477
487
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
478
488
|
type: Component,
|
|
479
|
-
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'kirby-form-field', template: "<label *ngIf=\"_wrapContentInLabel\">\n <ng-container *ngTemplateOutlet=\"labelTextTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"slottedInputTemplate\"></ng-container>\n</label>\n\n<ng-container *ngIf=\"!_wrapContentInLabel\">\n <ng-container *ngTemplateOutlet=\"labelTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"slottedInputTemplate\"></ng-container>\n</ng-container>\n\n<div *ngIf=\"message !== undefined || counter\" class=\"texts\">\n <kirby-form-field-message\n *ngIf=\"message !== undefined\"\n class=\"message\"\n [text]=\"message\"\n ></kirby-form-field-message>\n\n <div *ngIf=\"counter\" class=\"counter\">\n <ng-content select=\"kirby-input-counter\"></ng-content>\n </div>\n</div>\n\n<ng-template #slottedInputTemplate>\n <div class=\"affix-container\">\n <div class=\"prefix vertical-align semi-dark-text\">\n <ng-content select=\"[kirby-affix='prefix']\"></ng-content>\n </div>\n <ng-content select=\"input[kirby-input]\"></ng-content>\n <ng-content select=\"textarea[kirby-textarea]\"></ng-content>\n <ng-content select=\"kirby-radio-group\"></ng-content>\n <div class=\"suffix vertical-align semi-dark-text\">\n <ng-content select=\"[kirby-affix='suffix']\"></ng-content>\n </div>\n </div>\n</ng-template>\n\n<ng-template #labelTextTemplate>\n <ng-container *ngIf=\"label\">\n <span class=\"text\">{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #labelTemplate>\n <ng-container *ngIf=\"label\">\n <label class=\"text\" [id]=\"_labelId\" (click)=\"onLabelClick()\">{{ label }}</label>\n </ng-container>\n</ng-template>\n", styles: [":host{display:block;position:relative;margin-bottom:16px}:host-context(kirby-item){margin-bottom:0}.texts{display:flex;justify-content:space-between;padding:2px 16px 0}.texts .message{flex:75%}.texts .message:only-child{flex-basis:auto}.texts .counter{flex:25%;text-align:right}label{display:block}.text{display:block;font-size:14px;font-weight:300;line-height:20px;margin-bottom:4px;padding:0 16px}.affix-container{position:relative}.affix-container .vertical-align{display:flex;align-items:center;position:absolute;top:0;bottom:0}.affix-container .prefix{left:12px}.affix-container .suffix{right:12px}.affix-container .semi-dark-text ::ng-deep>span,.affix-container .semi-dark-text ::ng-deep>h1,.affix-container .semi-dark-text ::ng-deep>h2,.affix-container .semi-dark-text ::ng-deep>h3,.affix-container .semi-dark-text ::ng-deep>h4,.affix-container .semi-dark-text ::ng-deep>h5,.affix-container .semi-dark-text ::ng-deep>h6,.affix-container .semi-dark-text ::ng-deep>p,.affix-container .semi-dark-text ::ng-deep>data{color:var(--kirby-text-color-semi-dark)}\n"] }]
|
|
489
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'kirby-form-field', template: "<label *ngIf=\"_wrapContentInLabel\">\n <ng-container *ngTemplateOutlet=\"labelTextTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"slottedInputTemplate\"></ng-container>\n</label>\n\n<ng-container *ngIf=\"!_wrapContentInLabel\">\n <ng-container *ngTemplateOutlet=\"labelTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"slottedInputTemplate\"></ng-container>\n</ng-container>\n\n<div *ngIf=\"message !== undefined || counter\" class=\"texts\">\n <kirby-form-field-message\n *ngIf=\"message !== undefined\"\n class=\"message\"\n [text]=\"message\"\n ></kirby-form-field-message>\n\n <div *ngIf=\"counter\" class=\"counter\">\n <ng-content select=\"kirby-input-counter\"></ng-content>\n </div>\n</div>\n\n<ng-template #slottedInputTemplate>\n <div class=\"affix-container\">\n <div class=\"prefix vertical-align semi-dark-text\">\n <ng-content select=\"[kirby-affix='prefix']\"></ng-content>\n </div>\n <ng-content select=\"input[kirby-input]\"></ng-content>\n <ng-content select=\"textarea[kirby-textarea]\"></ng-content>\n <ng-content select=\"kirby-radio-group\"></ng-content>\n <div class=\"suffix vertical-align semi-dark-text\">\n <ng-content select=\"[kirby-affix='suffix']\"></ng-content>\n <ng-container *ngIf=\"showDefaultCalendarIcon\">\n <kirby-icon name=\"calendar\"></kirby-icon>\n </ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #labelTextTemplate>\n <ng-container *ngIf=\"label\">\n <span class=\"text\">{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #labelTemplate>\n <ng-container *ngIf=\"label\">\n <label class=\"text\" [id]=\"_labelId\" (click)=\"onLabelClick()\">{{ label }}</label>\n </ng-container>\n</ng-template>\n", styles: [":host{display:block;position:relative;margin-bottom:16px}:host-context(kirby-item){margin-bottom:0}.texts{display:flex;justify-content:space-between;padding:2px 16px 0}.texts .message{flex:75%}.texts .message:only-child{flex-basis:auto}.texts .counter{flex:25%;text-align:right}label{display:block}.text{display:block;font-size:14px;font-weight:300;line-height:20px;margin-bottom:4px;padding:0 16px}.affix-container{position:relative}.affix-container .vertical-align{display:flex;align-items:center;position:absolute;top:0;bottom:0}.affix-container .prefix{left:12px}.affix-container .suffix{right:12px}.affix-container .semi-dark-text ::ng-deep>span,.affix-container .semi-dark-text ::ng-deep>h1,.affix-container .semi-dark-text ::ng-deep>h2,.affix-container .semi-dark-text ::ng-deep>h3,.affix-container .semi-dark-text ::ng-deep>h4,.affix-container .semi-dark-text ::ng-deep>h5,.affix-container .semi-dark-text ::ng-deep>h6,.affix-container .semi-dark-text ::ng-deep>p,.affix-container .semi-dark-text ::ng-deep>data{color:var(--kirby-text-color-semi-dark)}.affix-container:has(input[type=date]){--date-input-background-color: var(--kirby-inputs-background-color)}@media (hover: hover){.affix-container:has(input[type=date]):hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);cursor:pointer;--date-input-background-color: #e0e0e0}}.affix-container:has(input[type=date]):active,.affix-container:has(input[type=date]).interaction-state-active{--state-layer-opacity: .12;--state-layer-background-color: var(--kirby-black);--date-input-background-color: #cbcbcb}.affix-container:has(input[type=date]) .suffix:not(:empty){top:8px;bottom:8px;padding-inline-start:12px;pointer-events:none;background-color:var(--date-input-background-color);transition:all 80ms linear 0ms;transition-property:background-color}\n"] }]
|
|
480
490
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.PlatformService }, { type: i0.Renderer2 }, { type: i2.WindowRef }, { type: i3.ResizeObserverService }], propDecorators: { label: [{
|
|
481
491
|
type: Input
|
|
482
492
|
}], message: [{
|
|
@@ -499,6 +509,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
|
|
|
499
509
|
}], textarea: [{
|
|
500
510
|
type: ContentChild,
|
|
501
511
|
args: [TextareaComponent, { read: ElementRef }]
|
|
512
|
+
}], dateInput: [{
|
|
513
|
+
type: ContentChild,
|
|
514
|
+
args: [DateInputDirective]
|
|
502
515
|
}], _onRegisterFormField: [{
|
|
503
516
|
type: HostListener,
|
|
504
517
|
args: ['kirbyRegisterFormField']
|
|
@@ -628,13 +641,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImpor
|
|
|
628
641
|
const declarations = [FormFieldComponent, FormFieldMessageComponent, InputCounterComponent];
|
|
629
642
|
class FormFieldModule {
|
|
630
643
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: FormFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
631
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.9", ngImport: i0, type: FormFieldModule, declarations: [FormFieldComponent, FormFieldMessageComponent, InputCounterComponent], imports: [CommonModule, DecimalMaskDirective], exports: [FormFieldComponent, FormFieldMessageComponent, InputCounterComponent, DecimalMaskDirective] }); }
|
|
632
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: FormFieldModule, imports: [CommonModule] }); }
|
|
644
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.9", ngImport: i0, type: FormFieldModule, declarations: [FormFieldComponent, FormFieldMessageComponent, InputCounterComponent], imports: [CommonModule, DecimalMaskDirective, IconModule], exports: [FormFieldComponent, FormFieldMessageComponent, InputCounterComponent, DecimalMaskDirective] }); }
|
|
645
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: FormFieldModule, imports: [CommonModule, IconModule] }); }
|
|
633
646
|
}
|
|
634
647
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: FormFieldModule, decorators: [{
|
|
635
648
|
type: NgModule,
|
|
636
649
|
args: [{
|
|
637
|
-
imports: [CommonModule, DecimalMaskDirective],
|
|
650
|
+
imports: [CommonModule, DecimalMaskDirective, IconModule],
|
|
638
651
|
declarations: [...declarations],
|
|
639
652
|
exports: [...declarations, DecimalMaskDirective],
|
|
640
653
|
}]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kirbydesign-designsystem-form-field.mjs","sources":["../../../../libs/designsystem/form-field/src/directives/affix/affix.directive.ts","../../../../libs/designsystem/form-field/src/form-field-message/form-field-message.component.ts","../../../../libs/designsystem/form-field/src/form-field-message/form-field-message.component.html","../../../../libs/designsystem/form-field/src/input-counter/input-counter.component.ts","../../../../libs/designsystem/form-field/src/input-counter/input-counter.component.html","../../../../libs/designsystem/form-field/src/directives/date/date-input.directive.ts","../../../../libs/designsystem/form-field/src/input/input.component.ts","../../../../libs/designsystem/form-field/src/textarea/textarea.component.ts","../../../../libs/designsystem/form-field/src/textarea/textarea.component.html","../../../../libs/designsystem/form-field/src/form-field.component.ts","../../../../libs/designsystem/form-field/src/form-field.component.html","../../../../libs/designsystem/form-field/src/directives/decimal-mask/decimal-mask.directive.ts","../../../../libs/designsystem/form-field/src/form-field.module.ts","../../../../libs/designsystem/form-field/src/kirbydesign-designsystem-form-field.ts"],"sourcesContent":["import { Directive, ElementRef, Input } from '@angular/core';\n\n@Directive({\n standalone: true,\n // eslint-disable-next-line\n selector: '[kirby-affix]',\n})\nexport class AffixDirective {\n @Input('kirby-affix') type: 'prefix' | 'suffix';\n constructor(public el: ElementRef) {}\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kirby-form-field-message',\n styleUrls: ['./form-field-message.component.scss'],\n templateUrl: './form-field-message.component.html',\n})\nexport class FormFieldMessageComponent {\n @Input() text: string;\n @Input() position: 'left' | 'right' = 'left';\n}\n","{{ text }}\n<ng-content></ng-content>\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { InputComponent } from '../input/input.component';\n\nimport { TextareaComponent } from './../textarea/textarea.component';\n\n@Component({\n selector: 'kirby-input-counter',\n templateUrl: './input-counter.component.html',\n})\nexport class InputCounterComponent implements OnInit, OnDestroy {\n @Input() listenTo: InputComponent | TextareaComponent;\n length: number;\n maxlength: number;\n private _inputChangeSubscription: Subscription;\n\n get text(): string {\n if (this.length === undefined) {\n return undefined;\n }\n const ofMaxlength = this.maxlength ? `/${this.maxlength}` : '';\n return `${this.length}${ofMaxlength}`;\n }\n\n ngOnInit(): void {\n if (this.listenTo) {\n this.length = this.listenTo.value ? this.listenTo.value.length : 0;\n this.maxlength = this.listenTo.maxlength;\n this._inputChangeSubscription = this.listenTo.kirbyChange.subscribe((value) => {\n this.length = value.length;\n });\n }\n }\n\n ngOnDestroy(): void {\n if (this._inputChangeSubscription) {\n this._inputChangeSubscription.unsubscribe();\n }\n }\n}\n","<kirby-form-field-message [text]=\"text\"></kirby-form-field-message>\n","import { FormatWidth, getLocaleDateFormat } from '@angular/common';\nimport {\n AfterViewInit,\n Directive,\n ElementRef,\n HostListener,\n Inject,\n Input,\n LOCALE_ID,\n Renderer2,\n} from '@angular/core';\nimport 'inputmask/lib/extensions/inputmask.date.extensions';\nimport Inputmask from 'inputmask/lib/inputmask';\n\n@Directive({\n standalone: true,\n})\nexport class DateInputDirective implements AfterViewInit {\n @HostListener('input')\n onInput() {\n if (!this.isDateInput) return;\n\n if (this.enableInputMask) {\n this.updateMask(this.elementRef.nativeElement.value);\n }\n }\n\n @Input() prefillYear = false;\n @Input() useNativeDatePicker = false;\n\n private maskingElement: HTMLElement;\n\n /**\n * `isDateInput` is used to avoid removing the type attribute on the input element and calling updateMask()\n * when the directive is not used on a date input.\n * This is needed for the standalone component 'InputComponent', which includes the directive\n * using the `hostDirectives` component decorator prop. Angular ignores the selector of directives\n * applied in the `hostDirectives` property which effectively applies the directive to all kirby-inputs, not only date inputs.\n * This check prevents the directive from executing it's masking on non-date inputs.\n * See: https://angular.io/guide/directive-composition-api\n */\n private isDateInput = false;\n\n /**\n * Inputmask should be enabled exclusively when _not_ using the platform\n * native date picker.\n *\n * `enableInputMask` should be ignored if the type attribute of the `<input>`\n * element is different from 'date' and/or the platform native date picker is\n * explicitly enabled.\n *\n * @private\n * @memberof DateInputDirective\n */\n private enableInputMask = false;\n\n constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n @Inject(LOCALE_ID) private locale: string\n ) {\n this.isDateInput = this.elementRef.nativeElement.type === 'date';\n if (this.isDateInput) {\n // Remove type to avoid user-agent specific behaviour for [type=\"date\"]\n // Has to be done in constructor to avoid browser behavior kicking in\n this.elementRef.nativeElement.removeAttribute('type');\n }\n }\n\n ngAfterViewInit(): void {\n if (!this.isDateInput) return;\n\n this.enableInputMask = !this.useNativeDatePicker;\n\n // This case is identical to date input fields _before_ native date picker\n // option was introduced\n if (this.enableInputMask) {\n this.initMask();\n }\n\n if (this.useNativeDatePicker) {\n this.elementRef.nativeElement.setAttribute('type', 'date');\n }\n }\n\n private initMask(): void {\n const inputFormat = this.getInputFormat();\n const placeholder = this.getPlaceholder(inputFormat);\n\n // Set initial placeholder ex. dd/mm/yyyy\n this.renderer.setAttribute(this.elementRef.nativeElement, 'placeholder', placeholder);\n\n // Init InputMask\n new Inputmask('datetime', {\n inputFormat,\n placeholder,\n prefillYear: this.prefillYear,\n }).mask(this.elementRef.nativeElement);\n\n // Append input overlay, so it's possible to style typed date differntly than the date-mask\n this.appendMaskingElement();\n }\n\n // Keeps order and seperator from speficied locale\n private getInputFormat(): string {\n const localeDateFormat = getLocaleDateFormat(this.locale, FormatWidth.Short);\n return localeDateFormat\n .toLowerCase()\n .replace(/d+/, 'dd')\n .replace(/m+/, 'mm')\n .replace(/y+/, 'yyyy');\n }\n\n private getPlaceholder(inputFormat: string): string {\n return this.locale === 'da' ? inputFormat.split('y').join('å') : inputFormat;\n }\n\n private appendMaskingElement(): void {\n const wrapper = this.wrapElement(this.elementRef.nativeElement);\n this.renderer.addClass(wrapper, 'date-mask-wrapper');\n\n this.maskingElement = this.renderer.createElement('div');\n this.renderer.appendChild(wrapper, this.maskingElement);\n\n this.renderer.addClass(this.maskingElement, 'date-mask');\n }\n\n private wrapElement(element: HTMLElement): HTMLElement {\n const wrapper = this.renderer.createElement('div');\n const parent = element.parentElement;\n this.renderer.insertBefore(parent, wrapper, element);\n this.renderer.appendChild(wrapper, element);\n return wrapper;\n }\n\n private updateMask(value: string): void {\n if (!this.maskingElement) return;\n const lastNumber = value.match(/.*?(\\d)[^\\d]*$/); // get last number in string\n this.maskingElement.innerHTML = value\n ? value.slice(0, value.lastIndexOf(lastNumber[1]) + 1)\n : '';\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n} from '@angular/core';\nimport { DateInputDirective } from '../directives/date/date-input.directive';\n\nexport enum InputSize {\n medium = 'md',\n large = 'lg',\n}\n\n@Component({\n standalone: true,\n imports: [CommonModule],\n hostDirectives: [\n {\n directive: DateInputDirective,\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['prefillYear', 'useNativeDatePicker'],\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'input[kirby-input]',\n styleUrls: ['./input.component.scss'],\n template: '',\n})\nexport class InputComponent implements OnChanges, OnInit {\n constructor(private elementRef: ElementRef<HTMLInputElement>) {}\n\n ngOnInit(): void {\n // The native input value is emitted here to make sure that\n // the InputCounterComponent receives the value onInit,\n // when [(ngModel)] is used on kirby-input.\n\n setTimeout(() => {\n const inputValue = this.elementRef.nativeElement.value;\n\n if (inputValue) {\n this.kirbyChange.emit(inputValue);\n }\n });\n }\n\n private static typeToInputmodeMap = {\n number: 'decimal',\n search: 'search',\n };\n\n kirbyChange = new EventEmitter<string>();\n\n @Input() set type(value: string) {\n const mappedValue = InputComponent.typeToInputmodeMap[value];\n if (mappedValue && !this.inputmode) {\n this.inputmode = mappedValue;\n }\n }\n\n @HostBinding('class')\n @Input()\n size: InputSize | `${InputSize}` = InputSize.large;\n\n /**\n * Removes padding, width, rounded borders and drop-shadow when set to `true`.\n */\n @HostBinding('class.borderless')\n @Input()\n borderless: boolean;\n\n @HostBinding('class.error')\n @Input()\n hasError: boolean;\n\n @HostBinding('attr.autocomplete')\n @Input()\n autocomplete: 'on' | 'off' = 'off';\n\n @HostBinding('attr.autocorrect')\n @Input()\n autocorrect: 'on' | 'off' = 'off';\n\n @HostBinding('attr.value')\n @Input()\n value: string;\n\n @HostBinding('attr.maxlength')\n @Input()\n maxlength: number;\n\n @HostBinding('attr.inputmode')\n @Input()\n inputmode: string;\n\n @HostListener('keyup', ['$event.target.value'])\n _onKeyUp(value: string) {\n this.kirbyChange.emit(value);\n }\n\n @HostListener('paste', ['$event.target'])\n @HostListener('cut', ['$event.target'])\n _onCutPaste(target: HTMLInputElement) {\n //Value of input element is updated after cut/paste:\n setTimeout(() => this.kirbyChange.emit(target.value));\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.value) {\n this.kirbyChange.emit(changes.value.currentValue);\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\n\n@Component({\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'textarea[kirby-textarea]',\n styleUrls: ['./textarea.component.scss'],\n templateUrl: './textarea.component.html',\n})\nexport class TextareaComponent implements OnChanges {\n kirbyChange = new EventEmitter<string>();\n\n @Input() value: string;\n\n /**\n * Removes padding, width, rounded borders and drop-shadow when set to `true`.\n */\n @HostBinding('class.borderless')\n @Input()\n borderless: boolean;\n\n @HostBinding('class.error')\n @Input()\n hasError: boolean;\n\n @HostBinding('attr.autocomplete')\n @Input()\n autocomplete: 'on' | 'off' = 'off';\n\n @HostBinding('attr.autocorrect')\n @Input()\n autocorrect: 'on' | 'off' = 'off';\n\n @HostBinding('attr.maxlength')\n @Input()\n maxlength: number;\n\n @HostListener('keyup', ['$event.target.value'])\n _onKeyUp(value: string) {\n this.kirbyChange.emit(value);\n }\n\n @HostListener('paste', ['$event.target'])\n @HostListener('cut', ['$event.target'])\n _onCutPaste(target: HTMLInputElement) {\n //Value of textarea element is updated after cut/paste:\n setTimeout(() => this.kirbyChange.emit(target.value));\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.value) {\n this.kirbyChange.emit(changes.value.currentValue);\n }\n }\n}\n","<ng-content *ngIf=\"!value\"></ng-content>\n<ng-container *ngIf=\"value\">{{ value }}</ng-container>\n","import {\n AfterContentChecked,\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n QueryList,\n Renderer2,\n} from '@angular/core';\nimport {\n DesignTokenHelper,\n PlatformService,\n UniqueIdGenerator,\n} from '@kirbydesign/designsystem/helpers';\nimport { RadioGroupComponent } from '@kirbydesign/designsystem/radio';\nimport { ResizeObserverService } from '@kirbydesign/designsystem/shared';\nimport { WindowRef } from '@kirbydesign/designsystem/types';\nimport { AffixDirective } from './directives/affix/affix.directive';\nimport { InputCounterComponent } from './input-counter/input-counter.component';\nimport { InputComponent } from './input/input.component';\n\nimport { TextareaComponent } from './textarea/textarea.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kirby-form-field',\n styleUrls: ['./form-field.component.scss'],\n templateUrl: './form-field.component.html',\n})\nexport class FormFieldComponent\n implements AfterContentChecked, AfterContentInit, OnInit, OnDestroy\n{\n private isRegistered = false;\n private element: HTMLElement;\n private inputElement: HTMLInputElement | HTMLTextAreaElement;\n private isTouch: boolean;\n _labelId = UniqueIdGenerator.scopedTo('kirby-form-field-label').next();\n\n @Input() label: string;\n @Input() message: string | null;\n\n @ContentChildren(AffixDirective) affixElements: QueryList<AffixDirective>;\n @ContentChild(InputCounterComponent, { static: false }) counter: InputCounterComponent;\n @ContentChild(RadioGroupComponent) private radioGroupComponent: RadioGroupComponent;\n @ContentChild(RadioGroupComponent, { read: ElementRef })\n private radioGroupElement: ElementRef<HTMLElement>;\n\n @ContentChild(InputComponent, { read: ElementRef }) input: ElementRef<HTMLInputElement>;\n @ContentChild(TextareaComponent, { read: ElementRef }) textarea: ElementRef<HTMLTextAreaElement>;\n\n constructor(\n elementRef: ElementRef<HTMLElement>,\n private platform: PlatformService,\n private renderer: Renderer2,\n private windowRef: WindowRef,\n private resizeObserverService: ResizeObserverService\n ) {\n this.element = elementRef.nativeElement;\n }\n\n get _wrapContentInLabel(): boolean {\n return !!this.label && (!!this.input || !!this.textarea);\n }\n\n private dispatchLoadEvent() {\n // Dispatch an `ionInputDidLoad` event to register\n // form field + input/textarea with Ionic input shims\n // See: https://github.com/ionic-team/ionic-framework/blob/master/core/src/utils/input-shims/input-shims.ts\n this.windowRef.nativeWindow.document.dispatchEvent(\n new CustomEvent('ionInputDidLoad', {\n detail: this.element,\n })\n );\n }\n\n @HostListener('kirbyRegisterFormField')\n _onRegisterFormField() {\n this.dispatchLoadEvent();\n }\n\n onLabelClick() {\n this.radioGroupComponent && this.radioGroupComponent.focus();\n }\n\n public focus() {\n if (!this.inputElement) return;\n\n /*\n * This timeout ensures that any previous manipulation of inputElement\n * (e.g. setting disabled state) has been synced to the DOM before trying to focus.\n */\n setTimeout(() => {\n if (this.isTouch) {\n // Trigger Ionic's input shims to ensure input is scrolled into view.\n // See: https://github.com/ionic-team/ionic-framework/blob/master/core/src/utils/input-shims/hacks/scroll-assist.ts\n const touchStart = new TouchEvent('touchstart');\n const touchEnd = new TouchEvent('touchend');\n this.inputElement.dispatchEvent(touchStart);\n this.inputElement.dispatchEvent(touchEnd);\n } else {\n this.inputElement.focus();\n }\n });\n }\n\n ngOnInit() {\n this.isTouch = this.platform.isTouch();\n }\n\n ngAfterContentInit(): void {\n if (this.label && this.radioGroupElement) {\n this.renderer.setAttribute(\n this.radioGroupElement.nativeElement,\n 'aria-labelledby',\n this._labelId\n );\n }\n\n // Measure the width of all slotted affix elements,\n // and apply their width + standard padding to the input elements\n // padding, so the start/end of the input is correctly indented.\n if (this.input) {\n this.affixElements.forEach((affix) => {\n this.resizeObserverService.observe(affix.el, (entry) => {\n const padding = affix.type === 'prefix' ? 'padding-left' : 'padding-right';\n const affixWidth = entry.contentRect.width;\n const existingPadding = parseInt(DesignTokenHelper.size('s'));\n\n this.renderer.setStyle(\n this.input.nativeElement,\n `${padding}`,\n `${affixWidth + existingPadding}px`\n );\n });\n });\n }\n }\n\n ngAfterContentChecked(): void {\n if (!this.inputElement) {\n this.inputElement = this.element.querySelector('input, textarea');\n }\n\n // TODO: remove \"!this.inputElement.readOnly\" when ionic has fixed input click issue\n // https://github.com/ionic-team/ionic-framework/issues/22740\n if (\n !this.isRegistered &&\n this.element.isConnected &&\n !!this.inputElement &&\n !this.inputElement.readOnly\n ) {\n // Host is connected to dom and slotted input/textarea is present:\n this.isRegistered = true;\n this.dispatchLoadEvent();\n }\n }\n\n ngOnDestroy(): void {\n // Dispatch an `ionInputDidUnload` event to unregister\n // form field + input/textarea from Ionic input shims\n // See: https://github.com/ionic-team/ionic-framework/blob/master/core/src/utils/input-shims/input-shims.ts\n this.windowRef.nativeWindow.document.dispatchEvent(\n new CustomEvent('ionInputDidUnload', {\n detail: this.element,\n })\n );\n\n this.affixElements.forEach((affix) => {\n this.resizeObserverService.unobserve(affix.el);\n });\n }\n}\n","<label *ngIf=\"_wrapContentInLabel\">\n <ng-container *ngTemplateOutlet=\"labelTextTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"slottedInputTemplate\"></ng-container>\n</label>\n\n<ng-container *ngIf=\"!_wrapContentInLabel\">\n <ng-container *ngTemplateOutlet=\"labelTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"slottedInputTemplate\"></ng-container>\n</ng-container>\n\n<div *ngIf=\"message !== undefined || counter\" class=\"texts\">\n <kirby-form-field-message\n *ngIf=\"message !== undefined\"\n class=\"message\"\n [text]=\"message\"\n ></kirby-form-field-message>\n\n <div *ngIf=\"counter\" class=\"counter\">\n <ng-content select=\"kirby-input-counter\"></ng-content>\n </div>\n</div>\n\n<ng-template #slottedInputTemplate>\n <div class=\"affix-container\">\n <div class=\"prefix vertical-align semi-dark-text\">\n <ng-content select=\"[kirby-affix='prefix']\"></ng-content>\n </div>\n <ng-content select=\"input[kirby-input]\"></ng-content>\n <ng-content select=\"textarea[kirby-textarea]\"></ng-content>\n <ng-content select=\"kirby-radio-group\"></ng-content>\n <div class=\"suffix vertical-align semi-dark-text\">\n <ng-content select=\"[kirby-affix='suffix']\"></ng-content>\n </div>\n </div>\n</ng-template>\n\n<ng-template #labelTextTemplate>\n <ng-container *ngIf=\"label\">\n <span class=\"text\">{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #labelTemplate>\n <ng-container *ngIf=\"label\">\n <label class=\"text\" [id]=\"_labelId\" (click)=\"onLabelClick()\">{{ label }}</label>\n </ng-container>\n</ng-template>\n","import { getLocaleNumberSymbol, NumberSymbol } from '@angular/common';\nimport { Directive, ElementRef, Inject, Input, LOCALE_ID, OnInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport 'inputmask/lib/extensions/inputmask.numeric.extensions';\nimport Inputmask from 'inputmask/lib/inputmask';\n\ninterface InputMask {\n unmaskedvalue: () => string;\n setValue: (val: string) => void;\n}\n\n@Directive({\n standalone: true,\n // eslint-disable-next-line\n selector: '[kirby-decimal-mask]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: DecimalMaskDirective,\n },\n ],\n})\nexport class DecimalMaskDirective implements ControlValueAccessor, OnInit {\n @Input() min: number;\n @Input() max: number;\n @Input() precision = 2;\n @Input() setMaxOnOverflow = false;\n\n @Input() set allowMinus(allowMinus: boolean) {\n this._allowMinus = allowMinus || (this.min || 0) < 0;\n }\n\n @Input() set disableGroupSeperator(disabled: string) {\n this._groupSeperatorDisabled = String(disabled) === '' || String(disabled) === 'true';\n }\n\n @Input() set maxlength(maxlength: number) {\n this._maxlength = maxlength;\n\n const maxlengthValue = parseInt('9'.repeat(maxlength));\n this.max = this.getMax(maxlengthValue);\n this.min = this.getMin(maxlengthValue);\n }\n\n groupSeparator = getLocaleNumberSymbol(this.locale, NumberSymbol.Group);\n radixPoint = getLocaleNumberSymbol(this.locale, NumberSymbol.Decimal);\n inputmask: InputMask;\n\n _allowMinus = false;\n _maxlength: number;\n _groupSeperatorDisabled: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onChange = (_: string) => {};\n\n constructor(private elementRef: ElementRef, @Inject(LOCALE_ID) private locale: string) {}\n\n ngOnInit(): void {\n // Set type=\"text\", because functionality like 'setSelectionRange' are not supported on type=\"number\"\n this.elementRef.nativeElement.setAttribute('type', 'text');\n\n // Remove maxlength as this is handled by the mask\n this.elementRef.nativeElement.removeAttribute('maxlength');\n\n this.initMask();\n }\n\n writeValue(val: number): void {\n if (!this.inputmask) return;\n const formattedValue = String(val).replace('.', this.radixPoint);\n this.inputmask.setValue(formattedValue);\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n registerOnTouched(_: any): void {}\n\n setDisabledState?(isDisabled: boolean): void {\n this.elementRef.nativeElement.disabled = isDisabled;\n }\n\n private initMask(): void {\n new Inputmask('decimal', {\n groupSeparator: this._groupSeperatorDisabled ? '' : this.groupSeparator,\n radixPoint: this.radixPoint,\n digits: this._maxlength ? 0 : this.precision,\n min: this.min,\n max: this.max,\n allowMinus: this._allowMinus,\n negationSymbol: {\n front: getLocaleNumberSymbol(this.locale, NumberSymbol.MinusSign),\n back: '',\n },\n SetMaxOnOverflow: this.setMaxOnOverflow,\n showMaskOnFocus: false,\n showMaskOnHover: false,\n placeholder: '',\n onBeforeWrite: () => {\n if (!this.inputmask) return;\n const unmaskedValue = this.inputmask.unmaskedvalue();\n this.onChange(unmaskedValue.replace(this.radixPoint, '.'));\n },\n }).mask(this.elementRef.nativeElement);\n this.inputmask = this.elementRef.nativeElement.inputmask;\n }\n\n private getMax(maxlengthValue: number): number {\n return this.max === undefined ? maxlengthValue : Math.min(this.max, maxlengthValue);\n }\n\n private getMin(maxlengthValue: number): number {\n if (!this.allowMinus) return;\n maxlengthValue = -Math.abs(maxlengthValue);\n return this.min === undefined ? maxlengthValue : -Math.abs(Math.max(this.min, maxlengthValue));\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormFieldMessageComponent } from './form-field-message/form-field-message.component';\nimport { FormFieldComponent } from './form-field.component';\nimport { InputCounterComponent } from './input-counter/input-counter.component';\nimport { DecimalMaskDirective } from './directives/decimal-mask/decimal-mask.directive';\n\nconst declarations = [FormFieldComponent, FormFieldMessageComponent, InputCounterComponent];\n\n@NgModule({\n imports: [CommonModule, DecimalMaskDirective],\n declarations: [...declarations],\n exports: [...declarations, DecimalMaskDirective],\n})\nexport class FormFieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.FormFieldMessageComponent","i1.DateInputDirective","i1","i5.FormFieldMessageComponent"],"mappings":";;;;;;;;;;;;;;MAOa,cAAc,CAAA;AAEzB,IAAA,WAAA,CAAmB,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;KAAI;iIAF1B,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;qHAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,aAAA,EAAA,MAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;;AAEhB,oBAAA,QAAQ,EAAE,eAAe;AAC1B,iBAAA,CAAA;+EAEuB,IAAI,EAAA,CAAA;sBAAzB,KAAK;uBAAC,aAAa,CAAA;;;MCAT,yBAAyB,CAAA;AANtC,IAAA,WAAA,GAAA;QAQW,IAAQ,CAAA,QAAA,GAAqB,MAAM,CAAC;AAC9C,KAAA;iIAHY,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAzB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,gHCRtC,yCAEA,EAAA,MAAA,EAAA,CAAA,0KAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDMa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;sCACS,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,0BAA0B,EAAA,QAAA,EAAA,yCAAA,EAAA,MAAA,EAAA,CAAA,0KAAA,CAAA,EAAA,CAAA;8BAK3B,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;MECK,qBAAqB,CAAA;AAMhC,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;AAC7B,YAAA,OAAO,SAAS,CAAC;AAClB,SAAA;AACD,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,GAAG,CAAI,CAAA,EAAA,IAAI,CAAC,SAAS,CAAA,CAAE,GAAG,EAAE,CAAC;AAC/D,QAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAG,EAAA,WAAW,EAAE,CAAC;KACvC;IAED,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YACnE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AACzC,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC5E,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAC7B,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;IAED,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,wBAAwB,EAAE;AACjC,YAAA,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,CAAC;AAC7C,SAAA;KACF;iIA5BU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAArB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,6FCXlC,yEACA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,yBAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FDUa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;+BACE,qBAAqB,EAAA,QAAA,EAAA,yEAAA,EAAA,CAAA;8BAItB,QAAQ,EAAA,CAAA;sBAAhB,KAAK;;;MEKK,kBAAkB,CAAA;IAE7B,OAAO,GAAA;QACL,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO;QAE9B,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACtD,SAAA;KACF;AA+BD,IAAA,WAAA,CACU,UAAsB,EACtB,QAAmB,EACA,MAAc,EAAA;QAFjC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QAhClC,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;AAIrC;;;;;;;;AAQG;QACK,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAE5B;;;;;;;;;;AAUG;QACK,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;AAO9B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,KAAK,MAAM,CAAC;QACjE,IAAI,IAAI,CAAC,WAAW,EAAE;;;YAGpB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AACvD,SAAA;KACF;IAED,eAAe,GAAA;QACb,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO;AAE9B,QAAA,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC;;;QAIjD,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;AACjB,SAAA;QAED,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5D,SAAA;KACF;IAEO,QAAQ,GAAA;AACd,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;;AAGrD,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;;QAGtF,IAAI,SAAS,CAAC,UAAU,EAAE;YACxB,WAAW;YACX,WAAW;YACX,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;;QAGvC,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;;IAGO,cAAc,GAAA;AACpB,QAAA,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;AAC7E,QAAA,OAAO,gBAAgB;AACpB,aAAA,WAAW,EAAE;AACb,aAAA,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;AACnB,aAAA,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;AACnB,aAAA,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KAC1B;AAEO,IAAA,cAAc,CAAC,WAAmB,EAAA;QACxC,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;KAC9E;IAEO,oBAAoB,GAAA;AAC1B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAChE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;QAErD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAExD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;KAC1D;AAEO,IAAA,WAAW,CAAC,OAAoB,EAAA;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACnD,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC5C,QAAA,OAAO,OAAO,CAAC;KAChB;AAEO,IAAA,UAAU,CAAC,KAAa,EAAA;QAC9B,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO;QACjC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,KAAK;AACnC,cAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;cACpD,EAAE,CAAC;KACR;AA5HU,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,qEA0CnB,SAAS,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;qHA1CR,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;0BA2CI,MAAM;2BAAC,SAAS,CAAA;yCAxCnB,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO,CAAA;gBASZ,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;;;ICbI,UAGX;AAHD,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,IAAa,CAAA;AACb,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,IAAY,CAAA;AACd,CAAC,EAHW,SAAS,KAAT,SAAS,GAGpB,EAAA,CAAA,CAAA,CAAA;MAkBY,cAAc,CAAA;AACzB,IAAA,WAAA,CAAoB,UAAwC,EAAA;QAAxC,IAAU,CAAA,UAAA,GAAV,UAAU,CAA8B;AAqB5D,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAU,CAAC;AAWzC,QAAA,IAAA,CAAA,IAAI,GAA+B,SAAS,CAAC,KAAK,CAAC;QAenD,IAAY,CAAA,YAAA,GAAiB,KAAK,CAAC;QAInC,IAAW,CAAA,WAAA,GAAiB,KAAK,CAAC;KAnD8B;IAEhE,QAAQ,GAAA;;;;QAKN,UAAU,CAAC,MAAK;YACd,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC;AAEvD,YAAA,IAAI,UAAU,EAAE;AACd,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACnC,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAEc,IAAA,SAAA,IAAA,CAAA,kBAAkB,GAAG;AAClC,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,MAAM,EAAE,QAAQ;AACjB,KAHgC,CAG/B,EAAA;IAIF,IAAa,IAAI,CAAC,KAAa,EAAA;QAC7B,MAAM,WAAW,GAAG,cAAc,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC7D,QAAA,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC;AAC9B,SAAA;KACF;AAsCD,IAAA,QAAQ,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;AAID,IAAA,WAAW,CAAC,MAAwB,EAAA;;AAElC,QAAA,UAAU,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;KACvD;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,KAAK,EAAE;YACjB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AACnD,SAAA;KACF;iIAlFU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;qHAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,+BAAA,EAAA,OAAA,EAAA,4BAAA,EAAA,KAAA,EAAA,4BAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAC,kBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAFf,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,o5EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAZF,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAcX,cAAc,EAAA,UAAA,EAAA,CAAA;kBAhB1B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,CAAC,EACP,cAAA,EAAA;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,kBAAkB;;AAE7B,4BAAA,MAAM,EAAE,CAAC,aAAa,EAAE,qBAAqB,CAAC;AAC/C,yBAAA;AACF,qBAAA,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAErC,QAAA,EAAA,oBAAoB,YAEpB,EAAE,EAAA,MAAA,EAAA,CAAA,o5EAAA,CAAA,EAAA,CAAA;+EA0BC,IAAI,EAAA,CAAA;sBAAhB,KAAK;gBASN,IAAI,EAAA,CAAA;sBAFH,WAAW;uBAAC,OAAO,CAAA;;sBACnB,KAAK;gBAQN,UAAU,EAAA,CAAA;sBAFT,WAAW;uBAAC,kBAAkB,CAAA;;sBAC9B,KAAK;gBAKN,QAAQ,EAAA,CAAA;sBAFP,WAAW;uBAAC,aAAa,CAAA;;sBACzB,KAAK;gBAKN,YAAY,EAAA,CAAA;sBAFX,WAAW;uBAAC,mBAAmB,CAAA;;sBAC/B,KAAK;gBAKN,WAAW,EAAA,CAAA;sBAFV,WAAW;uBAAC,kBAAkB,CAAA;;sBAC9B,KAAK;gBAKN,KAAK,EAAA,CAAA;sBAFJ,WAAW;uBAAC,YAAY,CAAA;;sBACxB,KAAK;gBAKN,SAAS,EAAA,CAAA;sBAFR,WAAW;uBAAC,gBAAgB,CAAA;;sBAC5B,KAAK;gBAKN,SAAS,EAAA,CAAA;sBAFR,WAAW;uBAAC,gBAAgB,CAAA;;sBAC5B,KAAK;gBAIN,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,OAAO,EAAE,CAAC,qBAAqB,CAAC,CAAA;gBAO9C,WAAW,EAAA,CAAA;sBAFV,YAAY;uBAAC,OAAO,EAAE,CAAC,eAAe,CAAC,CAAA;;sBACvC,YAAY;uBAAC,KAAK,EAAE,CAAC,eAAe,CAAC,CAAA;;;MCvF3B,iBAAiB,CAAA;AAT9B,IAAA,WAAA,GAAA;AAUE,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAU,CAAC;QAiBzC,IAAY,CAAA,YAAA,GAAiB,KAAK,CAAC;QAInC,IAAW,CAAA,WAAA,GAAiB,KAAK,CAAC;AAuBnC,KAAA;AAhBC,IAAA,QAAQ,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;AAID,IAAA,WAAW,CAAC,MAAwB,EAAA;;AAElC,QAAA,UAAU,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;KACvD;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,KAAK,EAAE;YACjB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AACnD,SAAA;KACF;iIA5CU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;qHAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,+BAAA,EAAA,OAAA,EAAA,4BAAA,EAAA,KAAA,EAAA,4BAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrB9B,wGAEA,EAAA,MAAA,EAAA,CAAA,izDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDYY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAOX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAT7B,SAAS;iCACI,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,mBACN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAErC,0BAA0B,EAAA,QAAA,EAAA,wGAAA,EAAA,MAAA,EAAA,CAAA,izDAAA,CAAA,EAAA,CAAA;8BAO3B,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAON,UAAU,EAAA,CAAA;sBAFT,WAAW;uBAAC,kBAAkB,CAAA;;sBAC9B,KAAK;gBAKN,QAAQ,EAAA,CAAA;sBAFP,WAAW;uBAAC,aAAa,CAAA;;sBACzB,KAAK;gBAKN,YAAY,EAAA,CAAA;sBAFX,WAAW;uBAAC,mBAAmB,CAAA;;sBAC/B,KAAK;gBAKN,WAAW,EAAA,CAAA;sBAFV,WAAW;uBAAC,kBAAkB,CAAA;;sBAC9B,KAAK;gBAKN,SAAS,EAAA,CAAA;sBAFR,WAAW;uBAAC,gBAAgB,CAAA;;sBAC5B,KAAK;gBAIN,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,OAAO,EAAE,CAAC,qBAAqB,CAAC,CAAA;gBAO9C,WAAW,EAAA,CAAA;sBAFV,YAAY;uBAAC,OAAO,EAAE,CAAC,eAAe,CAAC,CAAA;;sBACvC,YAAY;uBAAC,KAAK,EAAE,CAAC,eAAe,CAAC,CAAA;;;MEpB3B,kBAAkB,CAAA;IAqB7B,WACE,CAAA,UAAmC,EAC3B,QAAyB,EACzB,QAAmB,EACnB,SAAoB,EACpB,qBAA4C,EAAA;QAH5C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAiB;QACzB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACnB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QACpB,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;QAvB9C,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;QAI7B,IAAQ,CAAA,QAAA,GAAG,iBAAiB,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC,IAAI,EAAE,CAAC;AAqBrE,QAAA,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC;KACzC;AAED,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC1D;IAEO,iBAAiB,GAAA;;;;AAIvB,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,CAChD,IAAI,WAAW,CAAC,iBAAiB,EAAE;YACjC,MAAM,EAAE,IAAI,CAAC,OAAO;AACrB,SAAA,CAAC,CACH,CAAC;KACH;IAGD,oBAAoB,GAAA;QAClB,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IAED,YAAY,GAAA;QACV,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;KAC9D;IAEM,KAAK,GAAA;QACV,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO;AAE/B;;;AAGG;QACH,UAAU,CAAC,MAAK;YACd,IAAI,IAAI,CAAC,OAAO,EAAE;;;AAGhB,gBAAA,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC;AAChD,gBAAA,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;AAC5C,gBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAC5C,gBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC3C,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;AAC3B,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;KACxC;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxC,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CACxB,IAAI,CAAC,iBAAiB,CAAC,aAAa,EACpC,iBAAiB,EACjB,IAAI,CAAC,QAAQ,CACd,CAAC;AACH,SAAA;;;;QAKD,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACnC,gBAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAI;AACrD,oBAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,QAAQ,GAAG,cAAc,GAAG,eAAe,CAAC;AAC3E,oBAAA,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC;oBAC3C,MAAM,eAAe,GAAG,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBAE9D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,IAAI,CAAC,KAAK,CAAC,aAAa,EACxB,CAAG,EAAA,OAAO,EAAE,EACZ,CAAA,EAAG,UAAU,GAAG,eAAe,CAAI,EAAA,CAAA,CACpC,CAAC;AACJ,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;IAED,qBAAqB,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;AACnE,SAAA;;;QAID,IACE,CAAC,IAAI,CAAC,YAAY;YAClB,IAAI,CAAC,OAAO,CAAC,WAAW;YACxB,CAAC,CAAC,IAAI,CAAC,YAAY;AACnB,YAAA,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAC3B;;AAEA,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC1B,SAAA;KACF;IAED,WAAW,GAAA;;;;AAIT,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,CAChD,IAAI,WAAW,CAAC,mBAAmB,EAAE;YACnC,MAAM,EAAE,IAAI,CAAC,OAAO;AACrB,SAAA,CAAC,CACH,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;YACnC,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACjD,SAAC,CAAC,CAAC;KACJ;iIA7IU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,0NAaf,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACrB,mBAAmB,EACnB,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,mBAAmB,2BAAU,UAAU,EAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGvC,cAAc,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAU,wDAClC,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,UAAU,EAPlC,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,SAAA,EAAA,cAAc,6BC/CjC,wnDA+CA,EAAA,MAAA,EAAA,CAAA,wiCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FDZa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;sCACS,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,kBAAkB,EAAA,QAAA,EAAA,wnDAAA,EAAA,MAAA,EAAA,CAAA,wiCAAA,CAAA,EAAA,CAAA;iMAanB,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAE2B,aAAa,EAAA,CAAA;sBAA7C,eAAe;uBAAC,cAAc,CAAA;gBACyB,OAAO,EAAA,CAAA;sBAA9D,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,qBAAqB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBACX,mBAAmB,EAAA,CAAA;sBAA7D,YAAY;uBAAC,mBAAmB,CAAA;gBAEzB,iBAAiB,EAAA,CAAA;sBADxB,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,mBAAmB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;gBAGH,KAAK,EAAA,CAAA;sBAAxD,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;gBACK,QAAQ,EAAA,CAAA;sBAA9D,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;gBA4BrD,oBAAoB,EAAA,CAAA;sBADnB,YAAY;uBAAC,wBAAwB,CAAA;;;ME1D3B,oBAAoB,CAAA;IAM/B,IAAa,UAAU,CAAC,UAAmB,EAAA;AACzC,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;KACtD;IAED,IAAa,qBAAqB,CAAC,QAAgB,EAAA;AACjD,QAAA,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,MAAM,CAAC;KACvF;IAED,IAAa,SAAS,CAAC,SAAiB,EAAA;AACtC,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAE5B,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;KACxC;IAaD,WAAoB,CAAA,UAAsB,EAA6B,MAAc,EAAA;QAAjE,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QAA6B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QA9B5E,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;QACd,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;QAkBlC,IAAc,CAAA,cAAA,GAAG,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QACxE,IAAU,CAAA,UAAA,GAAG,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;QAGtE,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;;AAKpB,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAS,KAAI,GAAG,CAAC;KAE4D;IAEzF,QAAQ,GAAA;;QAEN,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;QAG3D,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAE3D,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;AAED,IAAA,UAAU,CAAC,GAAW,EAAA;QACpB,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;AAC5B,QAAA,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACjE,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;KACzC;AAED,IAAA,gBAAgB,CAAC,QAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC1B;;IAGD,iBAAiB,CAAC,CAAM,EAAA,GAAU;AAElC,IAAA,gBAAgB,CAAE,UAAmB,EAAA;QACnC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,GAAG,UAAU,CAAC;KACrD;IAEO,QAAQ,GAAA;QACd,IAAI,SAAS,CAAC,SAAS,EAAE;AACvB,YAAA,cAAc,EAAE,IAAI,CAAC,uBAAuB,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc;YACvE,UAAU,EAAE,IAAI,CAAC,UAAU;AAC3B,YAAA,MAAM,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS;YAC5C,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,UAAU,EAAE,IAAI,CAAC,WAAW;AAC5B,YAAA,cAAc,EAAE;gBACd,KAAK,EAAE,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC;AACjE,gBAAA,IAAI,EAAE,EAAE;AACT,aAAA;YACD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;AACvC,YAAA,eAAe,EAAE,KAAK;AACtB,YAAA,eAAe,EAAE,KAAK;AACtB,YAAA,WAAW,EAAE,EAAE;YACf,aAAa,EAAE,MAAK;gBAClB,IAAI,CAAC,IAAI,CAAC,SAAS;oBAAE,OAAO;gBAC5B,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;AACrD,gBAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;aAC5D;SACF,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC;KAC1D;AAEO,IAAA,MAAM,CAAC,cAAsB,EAAA;QACnC,OAAO,IAAI,CAAC,GAAG,KAAK,SAAS,GAAG,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;KACrF;AAEO,IAAA,MAAM,CAAC,cAAsB,EAAA;QACnC,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAC7B,cAAc,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAC3C,QAAA,OAAO,IAAI,CAAC,GAAG,KAAK,SAAS,GAAG,cAAc,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;KAChG;AA/FU,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,4CAiCqB,SAAS,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAjClD,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EARpB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,SAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,WAAW,EAAE,oBAAoB;AAClC,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAEU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAZhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;;AAEhB,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAAsB,oBAAA;AAClC,yBAAA;AACF,qBAAA;AACF,iBAAA,CAAA;;0BAkC8C,MAAM;2BAAC,SAAS,CAAA;yCAhCpD,GAAG,EAAA,CAAA;sBAAX,KAAK;gBACG,GAAG,EAAA,CAAA;sBAAX,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBAEO,UAAU,EAAA,CAAA;sBAAtB,KAAK;gBAIO,qBAAqB,EAAA,CAAA;sBAAjC,KAAK;gBAIO,SAAS,EAAA,CAAA;sBAArB,KAAK;;;AC9BR,MAAM,YAAY,GAAG,CAAC,kBAAkB,EAAE,yBAAyB,EAAE,qBAAqB,CAAC,CAAC;MAO/E,eAAe,CAAA;iIAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAf,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iBAPN,kBAAkB,EAAE,yBAAyB,EAAE,qBAAqB,CAG9E,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,oBAAoB,aAHxB,kBAAkB,EAAE,yBAAyB,EAAE,qBAAqB,EAK7D,oBAAoB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEpC,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAJhB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAIX,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,oBAAoB,CAAC;AAC7C,oBAAA,YAAY,EAAE,CAAC,GAAG,YAAY,CAAC;AAC/B,oBAAA,OAAO,EAAE,CAAC,GAAG,YAAY,EAAE,oBAAoB,CAAC;AACjD,iBAAA,CAAA;;;ACbD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"kirbydesign-designsystem-form-field.mjs","sources":["../../../../libs/designsystem/form-field/src/directives/affix/affix.directive.ts","../../../../libs/designsystem/form-field/src/directives/date/date-input.directive.ts","../../../../libs/designsystem/form-field/src/form-field-message/form-field-message.component.ts","../../../../libs/designsystem/form-field/src/form-field-message/form-field-message.component.html","../../../../libs/designsystem/form-field/src/input-counter/input-counter.component.ts","../../../../libs/designsystem/form-field/src/input-counter/input-counter.component.html","../../../../libs/designsystem/form-field/src/input/input.component.ts","../../../../libs/designsystem/form-field/src/textarea/textarea.component.ts","../../../../libs/designsystem/form-field/src/textarea/textarea.component.html","../../../../libs/designsystem/form-field/src/form-field.component.ts","../../../../libs/designsystem/form-field/src/form-field.component.html","../../../../libs/designsystem/form-field/src/directives/decimal-mask/decimal-mask.directive.ts","../../../../libs/designsystem/form-field/src/form-field.module.ts","../../../../libs/designsystem/form-field/src/kirbydesign-designsystem-form-field.ts"],"sourcesContent":["import { Directive, ElementRef, Input } from '@angular/core';\n\n@Directive({\n standalone: true,\n // eslint-disable-next-line\n selector: '[kirby-affix]',\n})\nexport class AffixDirective {\n @Input('kirby-affix') type: 'prefix' | 'suffix';\n constructor(public el: ElementRef) {}\n}\n","import { FormatWidth, getLocaleDateFormat } from '@angular/common';\nimport {\n AfterViewInit,\n Directive,\n ElementRef,\n HostListener,\n Inject,\n Input,\n LOCALE_ID,\n Renderer2,\n} from '@angular/core';\nimport 'inputmask/lib/extensions/inputmask.date.extensions';\nimport Inputmask from 'inputmask/lib/inputmask';\n\n@Directive({\n standalone: true,\n})\nexport class DateInputDirective implements AfterViewInit {\n @HostListener('input')\n onInput() {\n if (!this.isDateInput) return;\n\n if (this.enableInputMask) {\n this.updateMask(this.elementRef.nativeElement.value);\n }\n }\n\n @Input() prefillYear = false;\n @Input() useNativeDatePicker = false;\n\n private maskingElement: HTMLElement;\n\n /**\n * `isDateInput` is used to avoid removing the type attribute on the input element and calling updateMask()\n * when the directive is not used on a date input.\n * This is needed for the standalone component 'InputComponent', which includes the directive\n * using the `hostDirectives` component decorator prop. Angular ignores the selector of directives\n * applied in the `hostDirectives` property which effectively applies the directive to all kirby-inputs, not only date inputs.\n * This check prevents the directive from executing it's masking on non-date inputs.\n * See: https://angular.io/guide/directive-composition-api\n */\n private isDateInput = false;\n\n /**\n * Inputmask should be enabled exclusively when _not_ using the platform\n * native date picker.\n *\n * `enableInputMask` should be ignored if the type attribute of the `<input>`\n * element is different from 'date' and/or the platform native date picker is\n * explicitly enabled.\n *\n * @private\n * @memberof DateInputDirective\n */\n private enableInputMask = false;\n\n constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n @Inject(LOCALE_ID) private locale: string\n ) {\n this.isDateInput = this.elementRef.nativeElement.type === 'date';\n if (this.isDateInput) {\n // Remove type to avoid user-agent specific behaviour for [type=\"date\"]\n // Has to be done in constructor to avoid browser behavior kicking in\n this.elementRef.nativeElement.removeAttribute('type');\n }\n }\n\n ngAfterViewInit(): void {\n if (!this.isDateInput) return;\n\n this.enableInputMask = !this.useNativeDatePicker;\n\n // This case is identical to date input fields _before_ native date picker\n // option was introduced\n if (this.enableInputMask) {\n this.initMask();\n }\n\n if (this.useNativeDatePicker) {\n this.elementRef.nativeElement.setAttribute('type', 'date');\n }\n }\n\n private initMask(): void {\n const inputFormat = this.getInputFormat();\n const placeholder = this.getPlaceholder(inputFormat);\n\n // Set initial placeholder ex. dd/mm/yyyy\n this.renderer.setAttribute(this.elementRef.nativeElement, 'placeholder', placeholder);\n\n // Init InputMask\n new Inputmask('datetime', {\n inputFormat,\n placeholder,\n prefillYear: this.prefillYear,\n }).mask(this.elementRef.nativeElement);\n\n // Append input overlay, so it's possible to style typed date differntly than the date-mask\n this.appendMaskingElement();\n }\n\n // Keeps order and seperator from speficied locale\n private getInputFormat(): string {\n const localeDateFormat = getLocaleDateFormat(this.locale, FormatWidth.Short);\n return localeDateFormat\n .toLowerCase()\n .replace(/d+/, 'dd')\n .replace(/m+/, 'mm')\n .replace(/y+/, 'yyyy');\n }\n\n private getPlaceholder(inputFormat: string): string {\n return this.locale === 'da' ? inputFormat.split('y').join('å') : inputFormat;\n }\n\n private appendMaskingElement(): void {\n const wrapper = this.wrapElement(this.elementRef.nativeElement);\n this.renderer.addClass(wrapper, 'date-mask-wrapper');\n\n this.maskingElement = this.renderer.createElement('div');\n this.renderer.appendChild(wrapper, this.maskingElement);\n\n this.renderer.addClass(this.maskingElement, 'date-mask');\n }\n\n private wrapElement(element: HTMLElement): HTMLElement {\n const wrapper = this.renderer.createElement('div');\n const parent = element.parentElement;\n this.renderer.insertBefore(parent, wrapper, element);\n this.renderer.appendChild(wrapper, element);\n return wrapper;\n }\n\n private updateMask(value: string): void {\n if (!this.maskingElement) return;\n const lastNumber = value.match(/.*?(\\d)[^\\d]*$/); // get last number in string\n this.maskingElement.innerHTML = value\n ? value.slice(0, value.lastIndexOf(lastNumber[1]) + 1)\n : '';\n }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kirby-form-field-message',\n styleUrls: ['./form-field-message.component.scss'],\n templateUrl: './form-field-message.component.html',\n})\nexport class FormFieldMessageComponent {\n @Input() text: string;\n @Input() position: 'left' | 'right' = 'left';\n}\n","{{ text }}\n<ng-content></ng-content>\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { InputComponent } from '../input/input.component';\n\nimport { TextareaComponent } from './../textarea/textarea.component';\n\n@Component({\n selector: 'kirby-input-counter',\n templateUrl: './input-counter.component.html',\n})\nexport class InputCounterComponent implements OnInit, OnDestroy {\n @Input() listenTo: InputComponent | TextareaComponent;\n length: number;\n maxlength: number;\n private _inputChangeSubscription: Subscription;\n\n get text(): string {\n if (this.length === undefined) {\n return undefined;\n }\n const ofMaxlength = this.maxlength ? `/${this.maxlength}` : '';\n return `${this.length}${ofMaxlength}`;\n }\n\n ngOnInit(): void {\n if (this.listenTo) {\n this.length = this.listenTo.value ? this.listenTo.value.length : 0;\n this.maxlength = this.listenTo.maxlength;\n this._inputChangeSubscription = this.listenTo.kirbyChange.subscribe((value) => {\n this.length = value.length;\n });\n }\n }\n\n ngOnDestroy(): void {\n if (this._inputChangeSubscription) {\n this._inputChangeSubscription.unsubscribe();\n }\n }\n}\n","<kirby-form-field-message [text]=\"text\"></kirby-form-field-message>\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n} from '@angular/core';\nimport { DateInputDirective } from '../directives/date/date-input.directive';\n\nexport enum InputSize {\n medium = 'md',\n large = 'lg',\n}\n\n@Component({\n standalone: true,\n imports: [CommonModule],\n hostDirectives: [\n {\n directive: DateInputDirective,\n // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property\n inputs: ['prefillYear', 'useNativeDatePicker'],\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'input[kirby-input]',\n styleUrls: ['./input.component.scss'],\n template: '',\n})\nexport class InputComponent implements OnChanges, OnInit {\n constructor(private elementRef: ElementRef<HTMLInputElement>) {}\n\n ngOnInit(): void {\n // The native input value is emitted here to make sure that\n // the InputCounterComponent receives the value onInit,\n // when [(ngModel)] is used on kirby-input.\n\n setTimeout(() => {\n const inputValue = this.elementRef.nativeElement.value;\n\n if (inputValue) {\n this.kirbyChange.emit(inputValue);\n }\n });\n }\n\n private static typeToInputmodeMap = {\n number: 'decimal',\n search: 'search',\n };\n\n kirbyChange = new EventEmitter<string>();\n\n @Input() set type(value: string) {\n const mappedValue = InputComponent.typeToInputmodeMap[value];\n if (mappedValue && !this.inputmode) {\n this.inputmode = mappedValue;\n }\n }\n\n @HostBinding('class')\n @Input()\n size: InputSize | `${InputSize}` = InputSize.large;\n\n /**\n * Removes padding, width, rounded borders and drop-shadow when set to `true`.\n */\n @HostBinding('class.borderless')\n @Input()\n borderless: boolean;\n\n @HostBinding('class.error')\n @Input()\n hasError: boolean;\n\n @HostBinding('attr.autocomplete')\n @Input()\n autocomplete: 'on' | 'off' = 'off';\n\n @HostBinding('attr.autocorrect')\n @Input()\n autocorrect: 'on' | 'off' = 'off';\n\n @HostBinding('attr.value')\n @Input()\n value: string;\n\n @HostBinding('attr.maxlength')\n @Input()\n maxlength: number;\n\n @HostBinding('attr.inputmode')\n @Input()\n inputmode: string;\n\n @HostListener('keyup', ['$event.target.value'])\n _onKeyUp(value: string) {\n this.kirbyChange.emit(value);\n }\n\n @HostListener('paste', ['$event.target'])\n @HostListener('cut', ['$event.target'])\n _onCutPaste(target: HTMLInputElement) {\n //Value of input element is updated after cut/paste:\n setTimeout(() => this.kirbyChange.emit(target.value));\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.value) {\n this.kirbyChange.emit(changes.value.currentValue);\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\n\n@Component({\n standalone: true,\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'textarea[kirby-textarea]',\n styleUrls: ['./textarea.component.scss'],\n templateUrl: './textarea.component.html',\n})\nexport class TextareaComponent implements OnChanges {\n kirbyChange = new EventEmitter<string>();\n\n @Input() value: string;\n\n /**\n * Removes padding, width, rounded borders and drop-shadow when set to `true`.\n */\n @HostBinding('class.borderless')\n @Input()\n borderless: boolean;\n\n @HostBinding('class.error')\n @Input()\n hasError: boolean;\n\n @HostBinding('attr.autocomplete')\n @Input()\n autocomplete: 'on' | 'off' = 'off';\n\n @HostBinding('attr.autocorrect')\n @Input()\n autocorrect: 'on' | 'off' = 'off';\n\n @HostBinding('attr.maxlength')\n @Input()\n maxlength: number;\n\n @HostListener('keyup', ['$event.target.value'])\n _onKeyUp(value: string) {\n this.kirbyChange.emit(value);\n }\n\n @HostListener('paste', ['$event.target'])\n @HostListener('cut', ['$event.target'])\n _onCutPaste(target: HTMLInputElement) {\n //Value of textarea element is updated after cut/paste:\n setTimeout(() => this.kirbyChange.emit(target.value));\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.value) {\n this.kirbyChange.emit(changes.value.currentValue);\n }\n }\n}\n","<ng-content *ngIf=\"!value\"></ng-content>\n<ng-container *ngIf=\"value\">{{ value }}</ng-container>\n","import {\n AfterContentChecked,\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n QueryList,\n Renderer2,\n} from '@angular/core';\nimport {\n DesignTokenHelper,\n PlatformService,\n UniqueIdGenerator,\n} from '@kirbydesign/designsystem/helpers';\nimport { RadioGroupComponent } from '@kirbydesign/designsystem/radio';\nimport { ResizeObserverService } from '@kirbydesign/designsystem/shared';\nimport { WindowRef } from '@kirbydesign/designsystem/types';\nimport { AffixDirective } from './directives/affix/affix.directive';\nimport { DateInputDirective } from './directives/date/date-input.directive';\nimport { InputCounterComponent } from './input-counter/input-counter.component';\nimport { InputComponent } from './input/input.component';\n\nimport { TextareaComponent } from './textarea/textarea.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'kirby-form-field',\n styleUrls: ['./form-field.component.scss'],\n templateUrl: './form-field.component.html',\n})\nexport class FormFieldComponent\n implements AfterContentChecked, AfterContentInit, OnInit, OnDestroy\n{\n private isRegistered = false;\n private element: HTMLElement;\n private inputElement: HTMLInputElement | HTMLTextAreaElement;\n private isTouch: boolean;\n\n showDefaultCalendarIcon = false;\n\n _labelId = UniqueIdGenerator.scopedTo('kirby-form-field-label').next();\n\n @Input() label: string;\n @Input() message: string | null;\n\n @ContentChildren(AffixDirective) affixElements: QueryList<AffixDirective>;\n @ContentChild(InputCounterComponent, { static: false }) counter: InputCounterComponent;\n @ContentChild(RadioGroupComponent) private radioGroupComponent: RadioGroupComponent;\n @ContentChild(RadioGroupComponent, { read: ElementRef })\n private radioGroupElement: ElementRef<HTMLElement>;\n\n @ContentChild(InputComponent, { read: ElementRef }) input: ElementRef<HTMLInputElement>;\n @ContentChild(TextareaComponent, { read: ElementRef }) textarea: ElementRef<HTMLTextAreaElement>;\n\n @ContentChild(DateInputDirective) dateInput: DateInputDirective;\n\n constructor(\n elementRef: ElementRef<HTMLElement>,\n private platform: PlatformService,\n private renderer: Renderer2,\n private windowRef: WindowRef,\n private resizeObserverService: ResizeObserverService\n ) {\n this.element = elementRef.nativeElement;\n }\n\n get _wrapContentInLabel(): boolean {\n return !!this.label && (!!this.input || !!this.textarea);\n }\n\n private dispatchLoadEvent() {\n // Dispatch an `ionInputDidLoad` event to register\n // form field + input/textarea with Ionic input shims\n // See: https://github.com/ionic-team/ionic-framework/blob/master/core/src/utils/input-shims/input-shims.ts\n this.windowRef.nativeWindow.document.dispatchEvent(\n new CustomEvent('ionInputDidLoad', {\n detail: this.element,\n })\n );\n }\n\n @HostListener('kirbyRegisterFormField')\n _onRegisterFormField() {\n this.dispatchLoadEvent();\n }\n\n onLabelClick() {\n this.radioGroupComponent && this.radioGroupComponent.focus();\n }\n\n public focus() {\n if (!this.inputElement) return;\n\n /*\n * This timeout ensures that any previous manipulation of inputElement\n * (e.g. setting disabled state) has been synced to the DOM before trying to focus.\n */\n setTimeout(() => {\n if (this.isTouch) {\n // Trigger Ionic's input shims to ensure input is scrolled into view.\n // See: https://github.com/ionic-team/ionic-framework/blob/master/core/src/utils/input-shims/hacks/scroll-assist.ts\n const touchStart = new TouchEvent('touchstart');\n const touchEnd = new TouchEvent('touchend');\n this.inputElement.dispatchEvent(touchStart);\n this.inputElement.dispatchEvent(touchEnd);\n } else {\n this.inputElement.focus();\n }\n });\n }\n\n ngOnInit() {\n this.isTouch = this.platform.isTouch();\n }\n\n ngAfterContentInit(): void {\n if (this.label && this.radioGroupElement) {\n this.renderer.setAttribute(\n this.radioGroupElement.nativeElement,\n 'aria-labelledby',\n this._labelId\n );\n }\n\n // Measure the width of all slotted affix elements,\n // and apply their width + standard padding to the input elements\n // padding, so the start/end of the input is correctly indented.\n if (this.input) {\n this.affixElements.forEach((affix) => {\n this.resizeObserverService.observe(affix.el, (entry) => {\n const padding = affix.type === 'prefix' ? 'padding-left' : 'padding-right';\n const affixWidth = this.input.nativeElement.type === 'date' ? 0 : entry.contentRect.width;\n const existingPadding = parseInt(DesignTokenHelper.size('s'));\n\n this.renderer.setStyle(\n this.input.nativeElement,\n `${padding}`,\n `${affixWidth + existingPadding}px`\n );\n });\n });\n }\n }\n\n ngAfterContentChecked(): void {\n if (!this.inputElement) {\n this.inputElement = this.element.querySelector('input, textarea');\n }\n\n // TODO: remove \"!this.inputElement.readOnly\" when ionic has fixed input click issue\n // https://github.com/ionic-team/ionic-framework/issues/22740\n if (\n !this.isRegistered &&\n this.element.isConnected &&\n !!this.inputElement &&\n !this.inputElement.readOnly\n ) {\n // Host is connected to dom and slotted input/textarea is present:\n this.isRegistered = true;\n this.dispatchLoadEvent();\n }\n\n // Decide if default calendar icon for date input should be shown\n this.showDefaultCalendarIcon = this.shouldShowDefaultCalendarIcon();\n }\n\n private shouldShowDefaultCalendarIcon() {\n return (\n this.dateInput?.useNativeDatePicker &&\n !this.affixElements.some((affix) => affix.type === 'suffix') // there are no suffix elements\n );\n }\n\n ngOnDestroy(): void {\n // Dispatch an `ionInputDidUnload` event to unregister\n // form field + input/textarea from Ionic input shims\n // See: https://github.com/ionic-team/ionic-framework/blob/master/core/src/utils/input-shims/input-shims.ts\n this.windowRef.nativeWindow.document.dispatchEvent(\n new CustomEvent('ionInputDidUnload', {\n detail: this.element,\n })\n );\n\n this.affixElements.forEach((affix) => {\n this.resizeObserverService.unobserve(affix.el);\n });\n }\n}\n","<label *ngIf=\"_wrapContentInLabel\">\n <ng-container *ngTemplateOutlet=\"labelTextTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"slottedInputTemplate\"></ng-container>\n</label>\n\n<ng-container *ngIf=\"!_wrapContentInLabel\">\n <ng-container *ngTemplateOutlet=\"labelTemplate\"></ng-container>\n <ng-container *ngTemplateOutlet=\"slottedInputTemplate\"></ng-container>\n</ng-container>\n\n<div *ngIf=\"message !== undefined || counter\" class=\"texts\">\n <kirby-form-field-message\n *ngIf=\"message !== undefined\"\n class=\"message\"\n [text]=\"message\"\n ></kirby-form-field-message>\n\n <div *ngIf=\"counter\" class=\"counter\">\n <ng-content select=\"kirby-input-counter\"></ng-content>\n </div>\n</div>\n\n<ng-template #slottedInputTemplate>\n <div class=\"affix-container\">\n <div class=\"prefix vertical-align semi-dark-text\">\n <ng-content select=\"[kirby-affix='prefix']\"></ng-content>\n </div>\n <ng-content select=\"input[kirby-input]\"></ng-content>\n <ng-content select=\"textarea[kirby-textarea]\"></ng-content>\n <ng-content select=\"kirby-radio-group\"></ng-content>\n <div class=\"suffix vertical-align semi-dark-text\">\n <ng-content select=\"[kirby-affix='suffix']\"></ng-content>\n <ng-container *ngIf=\"showDefaultCalendarIcon\">\n <kirby-icon name=\"calendar\"></kirby-icon>\n </ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #labelTextTemplate>\n <ng-container *ngIf=\"label\">\n <span class=\"text\">{{ label }}</span>\n </ng-container>\n</ng-template>\n\n<ng-template #labelTemplate>\n <ng-container *ngIf=\"label\">\n <label class=\"text\" [id]=\"_labelId\" (click)=\"onLabelClick()\">{{ label }}</label>\n </ng-container>\n</ng-template>\n","import { getLocaleNumberSymbol, NumberSymbol } from '@angular/common';\nimport { Directive, ElementRef, Inject, Input, LOCALE_ID, OnInit } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport 'inputmask/lib/extensions/inputmask.numeric.extensions';\nimport Inputmask from 'inputmask/lib/inputmask';\n\ninterface InputMask {\n unmaskedvalue: () => string;\n setValue: (val: string) => void;\n}\n\n@Directive({\n standalone: true,\n // eslint-disable-next-line\n selector: '[kirby-decimal-mask]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: DecimalMaskDirective,\n },\n ],\n})\nexport class DecimalMaskDirective implements ControlValueAccessor, OnInit {\n @Input() min: number;\n @Input() max: number;\n @Input() precision = 2;\n @Input() setMaxOnOverflow = false;\n\n @Input() set allowMinus(allowMinus: boolean) {\n this._allowMinus = allowMinus || (this.min || 0) < 0;\n }\n\n @Input() set disableGroupSeperator(disabled: string) {\n this._groupSeperatorDisabled = String(disabled) === '' || String(disabled) === 'true';\n }\n\n @Input() set maxlength(maxlength: number) {\n this._maxlength = maxlength;\n\n const maxlengthValue = parseInt('9'.repeat(maxlength));\n this.max = this.getMax(maxlengthValue);\n this.min = this.getMin(maxlengthValue);\n }\n\n groupSeparator = getLocaleNumberSymbol(this.locale, NumberSymbol.Group);\n radixPoint = getLocaleNumberSymbol(this.locale, NumberSymbol.Decimal);\n inputmask: InputMask;\n\n _allowMinus = false;\n _maxlength: number;\n _groupSeperatorDisabled: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onChange = (_: string) => {};\n\n constructor(private elementRef: ElementRef, @Inject(LOCALE_ID) private locale: string) {}\n\n ngOnInit(): void {\n // Set type=\"text\", because functionality like 'setSelectionRange' are not supported on type=\"number\"\n this.elementRef.nativeElement.setAttribute('type', 'text');\n\n // Remove maxlength as this is handled by the mask\n this.elementRef.nativeElement.removeAttribute('maxlength');\n\n this.initMask();\n }\n\n writeValue(val: number): void {\n if (!this.inputmask) return;\n const formattedValue = String(val).replace('.', this.radixPoint);\n this.inputmask.setValue(formattedValue);\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n registerOnTouched(_: any): void {}\n\n setDisabledState?(isDisabled: boolean): void {\n this.elementRef.nativeElement.disabled = isDisabled;\n }\n\n private initMask(): void {\n new Inputmask('decimal', {\n groupSeparator: this._groupSeperatorDisabled ? '' : this.groupSeparator,\n radixPoint: this.radixPoint,\n digits: this._maxlength ? 0 : this.precision,\n min: this.min,\n max: this.max,\n allowMinus: this._allowMinus,\n negationSymbol: {\n front: getLocaleNumberSymbol(this.locale, NumberSymbol.MinusSign),\n back: '',\n },\n SetMaxOnOverflow: this.setMaxOnOverflow,\n showMaskOnFocus: false,\n showMaskOnHover: false,\n placeholder: '',\n onBeforeWrite: () => {\n if (!this.inputmask) return;\n const unmaskedValue = this.inputmask.unmaskedvalue();\n this.onChange(unmaskedValue.replace(this.radixPoint, '.'));\n },\n }).mask(this.elementRef.nativeElement);\n this.inputmask = this.elementRef.nativeElement.inputmask;\n }\n\n private getMax(maxlengthValue: number): number {\n return this.max === undefined ? maxlengthValue : Math.min(this.max, maxlengthValue);\n }\n\n private getMin(maxlengthValue: number): number {\n if (!this.allowMinus) return;\n maxlengthValue = -Math.abs(maxlengthValue);\n return this.min === undefined ? maxlengthValue : -Math.abs(Math.max(this.min, maxlengthValue));\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { IconModule } from '@kirbydesign/designsystem/icon';\nimport { FormFieldMessageComponent } from './form-field-message/form-field-message.component';\nimport { FormFieldComponent } from './form-field.component';\nimport { InputCounterComponent } from './input-counter/input-counter.component';\nimport { DecimalMaskDirective } from './directives/decimal-mask/decimal-mask.directive';\n\nconst declarations = [FormFieldComponent, FormFieldMessageComponent, InputCounterComponent];\n\n@NgModule({\n imports: [CommonModule, DecimalMaskDirective, IconModule],\n declarations: [...declarations],\n exports: [...declarations, DecimalMaskDirective],\n})\nexport class FormFieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.FormFieldMessageComponent","i1.DateInputDirective","i1","i6.FormFieldMessageComponent"],"mappings":"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"}
|