@ng-forge/dynamic-forms-ionic 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, input, computed, ChangeDetectionStrategy, Component, signal, InjectionToken,
|
|
2
|
+
import { inject, input, computed, ChangeDetectionStrategy, Component, signal, InjectionToken, linkedSignal, model, isSignal } from '@angular/core';
|
|
3
3
|
import { IonButton, IonCheckbox, IonNote, IonInput, IonModal, IonDatetime, IonButtons, IonHeader, IonContent, IonToolbar, IonTitle, IonItem, IonRadioGroup, IonRadio, IonSelect, IonSelectOption, IonRange, IonTextarea, IonToggle } from '@ionic/angular/standalone';
|
|
4
|
-
import { EventBus, ARRAY_CONTEXT, resolveTokens, DynamicTextPipe,
|
|
4
|
+
import { EventBus, ARRAY_CONTEXT, resolveTokens, DynamicTextPipe, buildBaseInputs, FIELD_SIGNAL_CONTEXT, resolveSubmitButtonDisabled, resolveNextButtonDisabled, NextPageEvent, PreviousPageEvent, DynamicFormLogger, AddArrayItemEvent, RemoveArrayItemEvent } from '@ng-forge/dynamic-forms';
|
|
5
5
|
import { AsyncPipe } from '@angular/common';
|
|
6
6
|
import { Field } from '@angular/forms/signals';
|
|
7
|
+
import { createResolvedErrorsSignal, shouldShowErrors, isEqual, ValueInArrayPipe, valueFieldMapper, optionsFieldMapper, checkboxFieldMapper, datepickerFieldMapper } from '@ng-forge/dynamic-forms/integration';
|
|
7
8
|
import { format } from 'date-fns';
|
|
8
9
|
import { explicitEffect } from 'ngxtension/explicit-effect';
|
|
9
10
|
|
|
@@ -63,8 +64,8 @@ class IonicButtonFieldComponent {
|
|
|
63
64
|
this.eventBus.dispatch(event);
|
|
64
65
|
}
|
|
65
66
|
}
|
|
66
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
67
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.
|
|
67
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: IonicButtonFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
68
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.6", type: IonicButtonFieldComponent, isStandalone: true, selector: "df-ionic-button", inputs: { key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, hidden: { classPropertyName: "hidden", publicName: "hidden", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, event: { classPropertyName: "event", publicName: "event", isSignal: true, isRequired: false, transformFunction: null }, eventArgs: { classPropertyName: "eventArgs", publicName: "eventArgs", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, eventContext: { classPropertyName: "eventContext", publicName: "eventContext", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "`${key()}`", "attr.data-testid": "key()" } }, ngImport: i0, template: `
|
|
68
69
|
<ion-button
|
|
69
70
|
[type]="buttonType()"
|
|
70
71
|
[expand]="props()?.expand"
|
|
@@ -82,7 +83,7 @@ class IonicButtonFieldComponent {
|
|
|
82
83
|
</ion-button>
|
|
83
84
|
`, isInline: true, dependencies: [{ kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "pipe", type: DynamicTextPipe, name: "dynamicText" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
84
85
|
}
|
|
85
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
86
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: IonicButtonFieldComponent, decorators: [{
|
|
86
87
|
type: Component,
|
|
87
88
|
args: [{
|
|
88
89
|
selector: 'df-ionic-button',
|
|
@@ -147,8 +148,8 @@ class IonicCheckboxFieldComponent {
|
|
|
147
148
|
isRequired = computed(() => {
|
|
148
149
|
return this.field()().required?.() === true;
|
|
149
150
|
}, ...(ngDevMode ? [{ debugName: "isRequired" }] : []));
|
|
150
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
151
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.
|
|
151
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: IonicCheckboxFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
152
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: IonicCheckboxFieldComponent, isStandalone: true, selector: "df-ionic-checkbox", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "className()", "id": "`${key()}`", "attr.data-testid": "key()", "attr.hidden": "field()().hidden() || null" } }, ngImport: i0, template: `
|
|
152
153
|
@let f = field();
|
|
153
154
|
|
|
154
155
|
<ion-checkbox
|
|
@@ -169,7 +170,7 @@ class IonicCheckboxFieldComponent {
|
|
|
169
170
|
}
|
|
170
171
|
`, isInline: true, styles: [":host{display:block}:host([hidden]){display:none!important}\n"], dependencies: [{ kind: "component", type: IonCheckbox, selector: "ion-checkbox", inputs: ["checked", "color", "disabled", "errorText", "helperText", "indeterminate", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: IonNote, selector: "ion-note", inputs: ["color", "mode"] }, { kind: "directive", type: Field, selector: "[field]", inputs: ["field"] }, { kind: "pipe", type: DynamicTextPipe, name: "dynamicText" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
171
172
|
}
|
|
172
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
173
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: IonicCheckboxFieldComponent, decorators: [{
|
|
173
174
|
type: Component,
|
|
174
175
|
args: [{ selector: 'df-ionic-checkbox', imports: [IonCheckbox, IonNote, Field, DynamicTextPipe, AsyncPipe], template: `
|
|
175
176
|
@let f = field();
|
|
@@ -278,8 +279,8 @@ class IonicDatepickerFieldComponent {
|
|
|
278
279
|
return format(date, 'MMM d, yyyy');
|
|
279
280
|
}
|
|
280
281
|
}
|
|
281
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
282
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.
|
|
282
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: IonicDatepickerFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
283
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: IonicDatepickerFieldComponent, isStandalone: true, selector: "df-ionic-datepicker", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, minDate: { classPropertyName: "minDate", publicName: "minDate", isSignal: true, isRequired: false, transformFunction: null }, maxDate: { classPropertyName: "maxDate", publicName: "maxDate", isSignal: true, isRequired: false, transformFunction: null }, startAt: { classPropertyName: "startAt", publicName: "startAt", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "`${key()}`", "attr.data-testid": "key()", "class": "className()", "attr.hidden": "field()().hidden() || null" } }, ngImport: i0, template: `
|
|
283
284
|
@let f = field(); @let dateValue = f().value();
|
|
284
285
|
|
|
285
286
|
<ion-input
|
|
@@ -335,7 +336,7 @@ class IonicDatepickerFieldComponent {
|
|
|
335
336
|
</ion-modal>
|
|
336
337
|
`, isInline: true, styles: ["ion-input{cursor:pointer}:host([hidden]){display:none!important}\n"], dependencies: [{ kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: IonDatetime, selector: "ion-datetime", inputs: ["cancelText", "clearText", "color", "dayValues", "disabled", "doneText", "firstDayOfWeek", "formatOptions", "highlightedDates", "hourCycle", "hourValues", "isDateEnabled", "locale", "max", "min", "minuteValues", "mode", "monthValues", "multiple", "name", "preferWheel", "presentation", "readonly", "showAdjacentDays", "showClearButton", "showDefaultButtons", "showDefaultTimeLabel", "showDefaultTitle", "size", "titleSelectedDatesFormatter", "value", "yearValues"] }, { kind: "component", type: IonNote, selector: "ion-note", inputs: ["color", "mode"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "pipe", type: DynamicTextPipe, name: "dynamicText" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
337
338
|
}
|
|
338
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
339
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: IonicDatepickerFieldComponent, decorators: [{
|
|
339
340
|
type: Component,
|
|
340
341
|
args: [{ selector: 'df-ionic-datepicker', imports: [
|
|
341
342
|
IonInput,
|
|
@@ -472,361 +473,73 @@ class IonicInputFieldComponent {
|
|
|
472
473
|
isRequired = computed(() => {
|
|
473
474
|
return this.field()().required?.() === true;
|
|
474
475
|
}, ...(ngDevMode ? [{ debugName: "isRequired" }] : []));
|
|
475
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
476
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.
|
|
476
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: IonicInputFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
477
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: IonicInputFieldComponent, isStandalone: true, selector: "df-ionic-input", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "`${key()}`", "attr.data-testid": "key()", "class": "className()", "attr.hidden": "field()().hidden() || null" } }, ngImport: i0, template: `
|
|
477
478
|
@let f = field();
|
|
478
479
|
@let ariaInvalid = isAriaInvalid();
|
|
479
480
|
@let ariaRequired = isRequired() || null;
|
|
480
481
|
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
<
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
</div>
|
|
508
|
-
</ion-input>
|
|
509
|
-
}
|
|
510
|
-
@case ('password') {
|
|
511
|
-
<ion-input
|
|
512
|
-
type="password"
|
|
513
|
-
[field]="f"
|
|
514
|
-
[label]="(label() | dynamicText | async) ?? undefined"
|
|
515
|
-
[labelPlacement]="effectiveLabelPlacement()"
|
|
516
|
-
[placeholder]="(placeholder() | dynamicText | async) ?? ''"
|
|
517
|
-
[clearInput]="props()?.clearInput ?? false"
|
|
518
|
-
[counter]="props()?.counter ?? false"
|
|
519
|
-
[color]="effectiveColor()"
|
|
520
|
-
[fill]="effectiveFill()"
|
|
521
|
-
[shape]="effectiveShape()"
|
|
522
|
-
[readonly]="f().readonly()"
|
|
523
|
-
[helperText]="(props()?.helperText | dynamicText | async) ?? undefined"
|
|
524
|
-
[errorText]="f().invalid() && f().touched() ? ((props()?.errorText | dynamicText | async) ?? undefined) : undefined"
|
|
525
|
-
[attr.tabindex]="tabIndex()"
|
|
526
|
-
[attr.aria-invalid]="ariaInvalid"
|
|
527
|
-
[attr.aria-required]="ariaRequired"
|
|
528
|
-
[class.ion-invalid]="f().invalid()"
|
|
529
|
-
[class.ion-touched]="f().touched()"
|
|
530
|
-
>
|
|
531
|
-
<div slot="error">
|
|
532
|
-
@for (error of errorsToDisplay(); track error.kind; let i = $index) {
|
|
533
|
-
<ion-note color="danger" [id]="errorId() + '-' + i" role="alert">{{ error.message }}</ion-note>
|
|
534
|
-
}
|
|
535
|
-
</div>
|
|
536
|
-
</ion-input>
|
|
537
|
-
}
|
|
538
|
-
@case ('number') {
|
|
539
|
-
<ion-input
|
|
540
|
-
type="number"
|
|
541
|
-
[field]="f"
|
|
542
|
-
[label]="(label() | dynamicText | async) ?? undefined"
|
|
543
|
-
[labelPlacement]="effectiveLabelPlacement()"
|
|
544
|
-
[placeholder]="(placeholder() | dynamicText | async) ?? ''"
|
|
545
|
-
[clearInput]="props()?.clearInput ?? false"
|
|
546
|
-
[counter]="props()?.counter ?? false"
|
|
547
|
-
[color]="effectiveColor()"
|
|
548
|
-
[fill]="effectiveFill()"
|
|
549
|
-
[shape]="effectiveShape()"
|
|
550
|
-
[readonly]="f().readonly()"
|
|
551
|
-
[helperText]="(props()?.helperText | dynamicText | async) ?? undefined"
|
|
552
|
-
[errorText]="f().invalid() && f().touched() ? ((props()?.errorText | dynamicText | async) ?? undefined) : undefined"
|
|
553
|
-
[attr.tabindex]="tabIndex()"
|
|
554
|
-
[attr.aria-invalid]="ariaInvalid"
|
|
555
|
-
[attr.aria-required]="ariaRequired"
|
|
556
|
-
[class.ion-invalid]="f().invalid()"
|
|
557
|
-
[class.ion-touched]="f().touched()"
|
|
558
|
-
>
|
|
559
|
-
<div slot="error">
|
|
560
|
-
@for (error of errorsToDisplay(); track error.kind; let i = $index) {
|
|
561
|
-
<ion-note color="danger" [id]="errorId() + '-' + i" role="alert">{{ error.message }}</ion-note>
|
|
562
|
-
}
|
|
563
|
-
</div>
|
|
564
|
-
</ion-input>
|
|
565
|
-
}
|
|
566
|
-
@case ('tel') {
|
|
567
|
-
<ion-input
|
|
568
|
-
type="tel"
|
|
569
|
-
[field]="f"
|
|
570
|
-
[label]="(label() | dynamicText | async) ?? undefined"
|
|
571
|
-
[labelPlacement]="effectiveLabelPlacement()"
|
|
572
|
-
[placeholder]="(placeholder() | dynamicText | async) ?? ''"
|
|
573
|
-
[clearInput]="props()?.clearInput ?? false"
|
|
574
|
-
[counter]="props()?.counter ?? false"
|
|
575
|
-
[color]="effectiveColor()"
|
|
576
|
-
[fill]="effectiveFill()"
|
|
577
|
-
[shape]="effectiveShape()"
|
|
578
|
-
[readonly]="f().readonly()"
|
|
579
|
-
[helperText]="(props()?.helperText | dynamicText | async) ?? undefined"
|
|
580
|
-
[errorText]="f().invalid() && f().touched() ? ((props()?.errorText | dynamicText | async) ?? undefined) : undefined"
|
|
581
|
-
[attr.tabindex]="tabIndex()"
|
|
582
|
-
[attr.aria-invalid]="ariaInvalid"
|
|
583
|
-
[attr.aria-required]="ariaRequired"
|
|
584
|
-
[class.ion-invalid]="f().invalid()"
|
|
585
|
-
[class.ion-touched]="f().touched()"
|
|
586
|
-
>
|
|
587
|
-
<div slot="error">
|
|
588
|
-
@for (error of errorsToDisplay(); track error.kind; let i = $index) {
|
|
589
|
-
<ion-note color="danger" [id]="errorId() + '-' + i" role="alert">{{ error.message }}</ion-note>
|
|
590
|
-
}
|
|
591
|
-
</div>
|
|
592
|
-
</ion-input>
|
|
593
|
-
}
|
|
594
|
-
@case ('url') {
|
|
595
|
-
<ion-input
|
|
596
|
-
type="url"
|
|
597
|
-
[field]="f"
|
|
598
|
-
[label]="(label() | dynamicText | async) ?? undefined"
|
|
599
|
-
[labelPlacement]="effectiveLabelPlacement()"
|
|
600
|
-
[placeholder]="(placeholder() | dynamicText | async) ?? ''"
|
|
601
|
-
[clearInput]="props()?.clearInput ?? false"
|
|
602
|
-
[counter]="props()?.counter ?? false"
|
|
603
|
-
[color]="effectiveColor()"
|
|
604
|
-
[fill]="effectiveFill()"
|
|
605
|
-
[shape]="effectiveShape()"
|
|
606
|
-
[readonly]="f().readonly()"
|
|
607
|
-
[helperText]="(props()?.helperText | dynamicText | async) ?? undefined"
|
|
608
|
-
[errorText]="f().invalid() && f().touched() ? ((props()?.errorText | dynamicText | async) ?? undefined) : undefined"
|
|
609
|
-
[attr.tabindex]="tabIndex()"
|
|
610
|
-
[attr.aria-invalid]="ariaInvalid"
|
|
611
|
-
[attr.aria-required]="ariaRequired"
|
|
612
|
-
[class.ion-invalid]="f().invalid()"
|
|
613
|
-
[class.ion-touched]="f().touched()"
|
|
614
|
-
>
|
|
615
|
-
<div slot="error">
|
|
616
|
-
@for (error of errorsToDisplay(); track error.kind; let i = $index) {
|
|
617
|
-
<ion-note color="danger" [id]="errorId() + '-' + i" role="alert">{{ error.message }}</ion-note>
|
|
618
|
-
}
|
|
619
|
-
</div>
|
|
620
|
-
</ion-input>
|
|
621
|
-
}
|
|
622
|
-
@default {
|
|
623
|
-
<ion-input
|
|
624
|
-
type="text"
|
|
625
|
-
[field]="f"
|
|
626
|
-
[label]="(label() | dynamicText | async) ?? undefined"
|
|
627
|
-
[labelPlacement]="effectiveLabelPlacement()"
|
|
628
|
-
[placeholder]="(placeholder() | dynamicText | async) ?? ''"
|
|
629
|
-
[clearInput]="props()?.clearInput ?? false"
|
|
630
|
-
[counter]="props()?.counter ?? false"
|
|
631
|
-
[color]="effectiveColor()"
|
|
632
|
-
[fill]="effectiveFill()"
|
|
633
|
-
[shape]="effectiveShape()"
|
|
634
|
-
[readonly]="f().readonly()"
|
|
635
|
-
[helperText]="(props()?.helperText | dynamicText | async) ?? undefined"
|
|
636
|
-
[errorText]="f().invalid() && f().touched() ? ((props()?.errorText | dynamicText | async) ?? undefined) : undefined"
|
|
637
|
-
[attr.tabindex]="tabIndex()"
|
|
638
|
-
[attr.aria-invalid]="ariaInvalid"
|
|
639
|
-
[attr.aria-required]="ariaRequired"
|
|
640
|
-
[class.ion-invalid]="f().invalid()"
|
|
641
|
-
[class.ion-touched]="f().touched()"
|
|
642
|
-
>
|
|
643
|
-
<div slot="error">
|
|
644
|
-
@for (error of errorsToDisplay(); track error.kind; let i = $index) {
|
|
645
|
-
<ion-note color="danger" [id]="errorId() + '-' + i" role="alert">{{ error.message }}</ion-note>
|
|
646
|
-
}
|
|
647
|
-
</div>
|
|
648
|
-
</ion-input>
|
|
649
|
-
}
|
|
650
|
-
}
|
|
482
|
+
<ion-input
|
|
483
|
+
[type]="props()?.type ?? 'text'"
|
|
484
|
+
[field]="f"
|
|
485
|
+
[label]="(label() | dynamicText | async) ?? undefined"
|
|
486
|
+
[labelPlacement]="effectiveLabelPlacement()"
|
|
487
|
+
[placeholder]="(placeholder() | dynamicText | async) ?? ''"
|
|
488
|
+
[clearInput]="props()?.clearInput ?? false"
|
|
489
|
+
[counter]="props()?.counter ?? false"
|
|
490
|
+
[color]="effectiveColor()"
|
|
491
|
+
[fill]="effectiveFill()"
|
|
492
|
+
[shape]="effectiveShape()"
|
|
493
|
+
[readonly]="f().readonly()"
|
|
494
|
+
[helperText]="(props()?.helperText | dynamicText | async) ?? undefined"
|
|
495
|
+
[errorText]="f().invalid() && f().touched() ? ((props()?.errorText | dynamicText | async) ?? undefined) : undefined"
|
|
496
|
+
[attr.tabindex]="tabIndex()"
|
|
497
|
+
[attr.aria-invalid]="ariaInvalid"
|
|
498
|
+
[attr.aria-required]="ariaRequired"
|
|
499
|
+
[class.ion-invalid]="f().invalid()"
|
|
500
|
+
[class.ion-touched]="f().touched()"
|
|
501
|
+
>
|
|
502
|
+
<div slot="error">
|
|
503
|
+
@for (error of errorsToDisplay(); track error.kind; let i = $index) {
|
|
504
|
+
<ion-note color="danger" [id]="errorId() + '-' + i" role="alert">{{ error.message }}</ion-note>
|
|
505
|
+
}
|
|
506
|
+
</div>
|
|
507
|
+
</ion-input>
|
|
651
508
|
`, isInline: true, styles: [":host([hidden]){display:none!important}\n"], dependencies: [{ kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonNote, selector: "ion-note", inputs: ["color", "mode"] }, { kind: "directive", type: Field, selector: "[field]", inputs: ["field"] }, { kind: "pipe", type: DynamicTextPipe, name: "dynamicText" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
652
509
|
}
|
|
653
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
510
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: IonicInputFieldComponent, decorators: [{
|
|
654
511
|
type: Component,
|
|
655
512
|
args: [{ selector: 'df-ionic-input', imports: [IonInput, IonNote, Field, DynamicTextPipe, AsyncPipe], template: `
|
|
656
513
|
@let f = field();
|
|
657
514
|
@let ariaInvalid = isAriaInvalid();
|
|
658
515
|
@let ariaRequired = isRequired() || null;
|
|
659
516
|
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
<
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
</div>
|
|
687
|
-
</ion-input>
|
|
688
|
-
}
|
|
689
|
-
@case ('password') {
|
|
690
|
-
<ion-input
|
|
691
|
-
type="password"
|
|
692
|
-
[field]="f"
|
|
693
|
-
[label]="(label() | dynamicText | async) ?? undefined"
|
|
694
|
-
[labelPlacement]="effectiveLabelPlacement()"
|
|
695
|
-
[placeholder]="(placeholder() | dynamicText | async) ?? ''"
|
|
696
|
-
[clearInput]="props()?.clearInput ?? false"
|
|
697
|
-
[counter]="props()?.counter ?? false"
|
|
698
|
-
[color]="effectiveColor()"
|
|
699
|
-
[fill]="effectiveFill()"
|
|
700
|
-
[shape]="effectiveShape()"
|
|
701
|
-
[readonly]="f().readonly()"
|
|
702
|
-
[helperText]="(props()?.helperText | dynamicText | async) ?? undefined"
|
|
703
|
-
[errorText]="f().invalid() && f().touched() ? ((props()?.errorText | dynamicText | async) ?? undefined) : undefined"
|
|
704
|
-
[attr.tabindex]="tabIndex()"
|
|
705
|
-
[attr.aria-invalid]="ariaInvalid"
|
|
706
|
-
[attr.aria-required]="ariaRequired"
|
|
707
|
-
[class.ion-invalid]="f().invalid()"
|
|
708
|
-
[class.ion-touched]="f().touched()"
|
|
709
|
-
>
|
|
710
|
-
<div slot="error">
|
|
711
|
-
@for (error of errorsToDisplay(); track error.kind; let i = $index) {
|
|
712
|
-
<ion-note color="danger" [id]="errorId() + '-' + i" role="alert">{{ error.message }}</ion-note>
|
|
713
|
-
}
|
|
714
|
-
</div>
|
|
715
|
-
</ion-input>
|
|
716
|
-
}
|
|
717
|
-
@case ('number') {
|
|
718
|
-
<ion-input
|
|
719
|
-
type="number"
|
|
720
|
-
[field]="f"
|
|
721
|
-
[label]="(label() | dynamicText | async) ?? undefined"
|
|
722
|
-
[labelPlacement]="effectiveLabelPlacement()"
|
|
723
|
-
[placeholder]="(placeholder() | dynamicText | async) ?? ''"
|
|
724
|
-
[clearInput]="props()?.clearInput ?? false"
|
|
725
|
-
[counter]="props()?.counter ?? false"
|
|
726
|
-
[color]="effectiveColor()"
|
|
727
|
-
[fill]="effectiveFill()"
|
|
728
|
-
[shape]="effectiveShape()"
|
|
729
|
-
[readonly]="f().readonly()"
|
|
730
|
-
[helperText]="(props()?.helperText | dynamicText | async) ?? undefined"
|
|
731
|
-
[errorText]="f().invalid() && f().touched() ? ((props()?.errorText | dynamicText | async) ?? undefined) : undefined"
|
|
732
|
-
[attr.tabindex]="tabIndex()"
|
|
733
|
-
[attr.aria-invalid]="ariaInvalid"
|
|
734
|
-
[attr.aria-required]="ariaRequired"
|
|
735
|
-
[class.ion-invalid]="f().invalid()"
|
|
736
|
-
[class.ion-touched]="f().touched()"
|
|
737
|
-
>
|
|
738
|
-
<div slot="error">
|
|
739
|
-
@for (error of errorsToDisplay(); track error.kind; let i = $index) {
|
|
740
|
-
<ion-note color="danger" [id]="errorId() + '-' + i" role="alert">{{ error.message }}</ion-note>
|
|
741
|
-
}
|
|
742
|
-
</div>
|
|
743
|
-
</ion-input>
|
|
744
|
-
}
|
|
745
|
-
@case ('tel') {
|
|
746
|
-
<ion-input
|
|
747
|
-
type="tel"
|
|
748
|
-
[field]="f"
|
|
749
|
-
[label]="(label() | dynamicText | async) ?? undefined"
|
|
750
|
-
[labelPlacement]="effectiveLabelPlacement()"
|
|
751
|
-
[placeholder]="(placeholder() | dynamicText | async) ?? ''"
|
|
752
|
-
[clearInput]="props()?.clearInput ?? false"
|
|
753
|
-
[counter]="props()?.counter ?? false"
|
|
754
|
-
[color]="effectiveColor()"
|
|
755
|
-
[fill]="effectiveFill()"
|
|
756
|
-
[shape]="effectiveShape()"
|
|
757
|
-
[readonly]="f().readonly()"
|
|
758
|
-
[helperText]="(props()?.helperText | dynamicText | async) ?? undefined"
|
|
759
|
-
[errorText]="f().invalid() && f().touched() ? ((props()?.errorText | dynamicText | async) ?? undefined) : undefined"
|
|
760
|
-
[attr.tabindex]="tabIndex()"
|
|
761
|
-
[attr.aria-invalid]="ariaInvalid"
|
|
762
|
-
[attr.aria-required]="ariaRequired"
|
|
763
|
-
[class.ion-invalid]="f().invalid()"
|
|
764
|
-
[class.ion-touched]="f().touched()"
|
|
765
|
-
>
|
|
766
|
-
<div slot="error">
|
|
767
|
-
@for (error of errorsToDisplay(); track error.kind; let i = $index) {
|
|
768
|
-
<ion-note color="danger" [id]="errorId() + '-' + i" role="alert">{{ error.message }}</ion-note>
|
|
769
|
-
}
|
|
770
|
-
</div>
|
|
771
|
-
</ion-input>
|
|
772
|
-
}
|
|
773
|
-
@case ('url') {
|
|
774
|
-
<ion-input
|
|
775
|
-
type="url"
|
|
776
|
-
[field]="f"
|
|
777
|
-
[label]="(label() | dynamicText | async) ?? undefined"
|
|
778
|
-
[labelPlacement]="effectiveLabelPlacement()"
|
|
779
|
-
[placeholder]="(placeholder() | dynamicText | async) ?? ''"
|
|
780
|
-
[clearInput]="props()?.clearInput ?? false"
|
|
781
|
-
[counter]="props()?.counter ?? false"
|
|
782
|
-
[color]="effectiveColor()"
|
|
783
|
-
[fill]="effectiveFill()"
|
|
784
|
-
[shape]="effectiveShape()"
|
|
785
|
-
[readonly]="f().readonly()"
|
|
786
|
-
[helperText]="(props()?.helperText | dynamicText | async) ?? undefined"
|
|
787
|
-
[errorText]="f().invalid() && f().touched() ? ((props()?.errorText | dynamicText | async) ?? undefined) : undefined"
|
|
788
|
-
[attr.tabindex]="tabIndex()"
|
|
789
|
-
[attr.aria-invalid]="ariaInvalid"
|
|
790
|
-
[attr.aria-required]="ariaRequired"
|
|
791
|
-
[class.ion-invalid]="f().invalid()"
|
|
792
|
-
[class.ion-touched]="f().touched()"
|
|
793
|
-
>
|
|
794
|
-
<div slot="error">
|
|
795
|
-
@for (error of errorsToDisplay(); track error.kind; let i = $index) {
|
|
796
|
-
<ion-note color="danger" [id]="errorId() + '-' + i" role="alert">{{ error.message }}</ion-note>
|
|
797
|
-
}
|
|
798
|
-
</div>
|
|
799
|
-
</ion-input>
|
|
800
|
-
}
|
|
801
|
-
@default {
|
|
802
|
-
<ion-input
|
|
803
|
-
type="text"
|
|
804
|
-
[field]="f"
|
|
805
|
-
[label]="(label() | dynamicText | async) ?? undefined"
|
|
806
|
-
[labelPlacement]="effectiveLabelPlacement()"
|
|
807
|
-
[placeholder]="(placeholder() | dynamicText | async) ?? ''"
|
|
808
|
-
[clearInput]="props()?.clearInput ?? false"
|
|
809
|
-
[counter]="props()?.counter ?? false"
|
|
810
|
-
[color]="effectiveColor()"
|
|
811
|
-
[fill]="effectiveFill()"
|
|
812
|
-
[shape]="effectiveShape()"
|
|
813
|
-
[readonly]="f().readonly()"
|
|
814
|
-
[helperText]="(props()?.helperText | dynamicText | async) ?? undefined"
|
|
815
|
-
[errorText]="f().invalid() && f().touched() ? ((props()?.errorText | dynamicText | async) ?? undefined) : undefined"
|
|
816
|
-
[attr.tabindex]="tabIndex()"
|
|
817
|
-
[attr.aria-invalid]="ariaInvalid"
|
|
818
|
-
[attr.aria-required]="ariaRequired"
|
|
819
|
-
[class.ion-invalid]="f().invalid()"
|
|
820
|
-
[class.ion-touched]="f().touched()"
|
|
821
|
-
>
|
|
822
|
-
<div slot="error">
|
|
823
|
-
@for (error of errorsToDisplay(); track error.kind; let i = $index) {
|
|
824
|
-
<ion-note color="danger" [id]="errorId() + '-' + i" role="alert">{{ error.message }}</ion-note>
|
|
825
|
-
}
|
|
826
|
-
</div>
|
|
827
|
-
</ion-input>
|
|
828
|
-
}
|
|
829
|
-
}
|
|
517
|
+
<ion-input
|
|
518
|
+
[type]="props()?.type ?? 'text'"
|
|
519
|
+
[field]="f"
|
|
520
|
+
[label]="(label() | dynamicText | async) ?? undefined"
|
|
521
|
+
[labelPlacement]="effectiveLabelPlacement()"
|
|
522
|
+
[placeholder]="(placeholder() | dynamicText | async) ?? ''"
|
|
523
|
+
[clearInput]="props()?.clearInput ?? false"
|
|
524
|
+
[counter]="props()?.counter ?? false"
|
|
525
|
+
[color]="effectiveColor()"
|
|
526
|
+
[fill]="effectiveFill()"
|
|
527
|
+
[shape]="effectiveShape()"
|
|
528
|
+
[readonly]="f().readonly()"
|
|
529
|
+
[helperText]="(props()?.helperText | dynamicText | async) ?? undefined"
|
|
530
|
+
[errorText]="f().invalid() && f().touched() ? ((props()?.errorText | dynamicText | async) ?? undefined) : undefined"
|
|
531
|
+
[attr.tabindex]="tabIndex()"
|
|
532
|
+
[attr.aria-invalid]="ariaInvalid"
|
|
533
|
+
[attr.aria-required]="ariaRequired"
|
|
534
|
+
[class.ion-invalid]="f().invalid()"
|
|
535
|
+
[class.ion-touched]="f().touched()"
|
|
536
|
+
>
|
|
537
|
+
<div slot="error">
|
|
538
|
+
@for (error of errorsToDisplay(); track error.kind; let i = $index) {
|
|
539
|
+
<ion-note color="danger" [id]="errorId() + '-' + i" role="alert">{{ error.message }}</ion-note>
|
|
540
|
+
}
|
|
541
|
+
</div>
|
|
542
|
+
</ion-input>
|
|
830
543
|
`, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
831
544
|
'[id]': '`${key()}`',
|
|
832
545
|
'[attr.data-testid]': 'key()',
|
|
@@ -840,49 +553,6 @@ var ionicInput_component = /*#__PURE__*/Object.freeze({
|
|
|
840
553
|
default: IonicInputFieldComponent
|
|
841
554
|
});
|
|
842
555
|
|
|
843
|
-
class ValueInArrayPipe {
|
|
844
|
-
transform(element, array) {
|
|
845
|
-
return array?.includes(element) ?? false;
|
|
846
|
-
}
|
|
847
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: ValueInArrayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
848
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.0.5", ngImport: i0, type: ValueInArrayPipe, isStandalone: true, name: "inArray" });
|
|
849
|
-
}
|
|
850
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: ValueInArrayPipe, decorators: [{
|
|
851
|
-
type: Pipe,
|
|
852
|
-
args: [{
|
|
853
|
-
pure: true,
|
|
854
|
-
name: 'inArray',
|
|
855
|
-
}]
|
|
856
|
-
}] });
|
|
857
|
-
|
|
858
|
-
/**
|
|
859
|
-
* Performs a deep equality comparison between two values
|
|
860
|
-
*/
|
|
861
|
-
function isEqual(a, b) {
|
|
862
|
-
if (a === b)
|
|
863
|
-
return true;
|
|
864
|
-
if (a == null || b == null)
|
|
865
|
-
return false;
|
|
866
|
-
if (typeof a !== typeof b)
|
|
867
|
-
return false;
|
|
868
|
-
if (a instanceof Date && b instanceof Date) {
|
|
869
|
-
return a.getTime() === b.getTime();
|
|
870
|
-
}
|
|
871
|
-
if (Array.isArray(a) && Array.isArray(b)) {
|
|
872
|
-
if (a.length !== b.length)
|
|
873
|
-
return false;
|
|
874
|
-
return a.every((item, index) => isEqual(item, b[index]));
|
|
875
|
-
}
|
|
876
|
-
if (typeof a === 'object' && typeof b === 'object') {
|
|
877
|
-
const keysA = Object.keys(a);
|
|
878
|
-
const keysB = Object.keys(b);
|
|
879
|
-
if (keysA.length !== keysB.length)
|
|
880
|
-
return false;
|
|
881
|
-
return keysA.every((key) => keysB.includes(key) && isEqual(a[key], b[key]));
|
|
882
|
-
}
|
|
883
|
-
return Object.is(a, b);
|
|
884
|
-
}
|
|
885
|
-
|
|
886
556
|
class IonicMultiCheckboxFieldComponent {
|
|
887
557
|
field = input.required(...(ngDevMode ? [{ debugName: "field" }] : []));
|
|
888
558
|
key = input.required(...(ngDevMode ? [{ debugName: "key" }] : []));
|
|
@@ -941,8 +611,8 @@ class IonicMultiCheckboxFieldComponent {
|
|
|
941
611
|
}
|
|
942
612
|
});
|
|
943
613
|
}
|
|
944
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
945
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.
|
|
614
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: IonicMultiCheckboxFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
615
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: IonicMultiCheckboxFieldComponent, isStandalone: true, selector: "df-ionic-multi-checkbox", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "className() || \"\"", "id": "`${key()}`", "attr.data-testid": "key()", "attr.hidden": "field()().hidden() || null" } }, providers: [ValueInArrayPipe], ngImport: i0, template: `
|
|
946
616
|
@let f = field();
|
|
947
617
|
@if (label(); as label) {
|
|
948
618
|
<div class="checkbox-group-label">{{ label | dynamicText | async }}</div>
|
|
@@ -970,7 +640,7 @@ class IonicMultiCheckboxFieldComponent {
|
|
|
970
640
|
}
|
|
971
641
|
`, isInline: true, styles: [":host{display:block}:host([hidden]){display:none!important}.checkbox-group-label{margin-bottom:8px;font-weight:500}.checkbox-group{display:flex;flex-direction:column;gap:4px}ion-item{--padding-start: 0;--inner-padding-end: 0}\n"], dependencies: [{ kind: "component", type: IonCheckbox, selector: "ion-checkbox", inputs: ["checked", "color", "disabled", "errorText", "helperText", "indeterminate", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonNote, selector: "ion-note", inputs: ["color", "mode"] }, { kind: "pipe", type: ValueInArrayPipe, name: "inArray" }, { kind: "pipe", type: DynamicTextPipe, name: "dynamicText" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
972
642
|
}
|
|
973
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
643
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: IonicMultiCheckboxFieldComponent, decorators: [{
|
|
974
644
|
type: Component,
|
|
975
645
|
args: [{ selector: 'df-ionic-multi-checkbox', imports: [IonCheckbox, IonItem, IonNote, ValueInArrayPipe, DynamicTextPipe, AsyncPipe], template: `
|
|
976
646
|
@let f = field();
|
|
@@ -1041,8 +711,8 @@ class IonicRadioFieldComponent {
|
|
|
1041
711
|
isRequired = computed(() => {
|
|
1042
712
|
return this.field()().required?.() === true;
|
|
1043
713
|
}, ...(ngDevMode ? [{ debugName: "isRequired" }] : []));
|
|
1044
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
1045
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.
|
|
714
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: IonicRadioFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
715
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: IonicRadioFieldComponent, isStandalone: true, selector: "df-ionic-radio", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "className()", "id": "`${key()}`", "attr.data-testid": "key()", "attr.hidden": "field()().hidden() || null" } }, ngImport: i0, template: `
|
|
1046
716
|
@let f = field();
|
|
1047
717
|
@if (label(); as label) {
|
|
1048
718
|
<div class="radio-label">{{ label | dynamicText | async }}</div>
|
|
@@ -1074,7 +744,7 @@ class IonicRadioFieldComponent {
|
|
|
1074
744
|
}
|
|
1075
745
|
`, isInline: true, styles: [":host{display:block}:host([hidden]){display:none!important}.radio-label{font-size:.875rem;font-weight:500;margin-bottom:.5rem;color:var(--ion-text-color)}\n"], dependencies: [{ kind: "component", type: IonRadioGroup, selector: "ion-radio-group", inputs: ["allowEmptySelection", "compareWith", "errorText", "helperText", "name", "value"] }, { kind: "component", type: IonRadio, selector: "ion-radio", inputs: ["alignment", "color", "disabled", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonNote, selector: "ion-note", inputs: ["color", "mode"] }, { kind: "directive", type: Field, selector: "[field]", inputs: ["field"] }, { kind: "pipe", type: DynamicTextPipe, name: "dynamicText" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1076
746
|
}
|
|
1077
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
747
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: IonicRadioFieldComponent, decorators: [{
|
|
1078
748
|
type: Component,
|
|
1079
749
|
args: [{ selector: 'df-ionic-radio', imports: [IonRadioGroup, IonRadio, IonItem, IonNote, Field, DynamicTextPipe, AsyncPipe], template: `
|
|
1080
750
|
@let f = field();
|
|
@@ -1148,8 +818,8 @@ class IonicSelectFieldComponent {
|
|
|
1148
818
|
isRequired = computed(() => {
|
|
1149
819
|
return this.field()().required?.() === true;
|
|
1150
820
|
}, ...(ngDevMode ? [{ debugName: "isRequired" }] : []));
|
|
1151
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
1152
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.
|
|
821
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: IonicSelectFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
822
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: IonicSelectFieldComponent, isStandalone: true, selector: "df-ionic-select", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "`${key()}`", "attr.data-testid": "key()", "class": "className()", "attr.hidden": "field()().hidden() || null" } }, ngImport: i0, template: `
|
|
1153
823
|
@let f = field();
|
|
1154
824
|
|
|
1155
825
|
<ion-select
|
|
@@ -1185,7 +855,7 @@ class IonicSelectFieldComponent {
|
|
|
1185
855
|
</ion-select>
|
|
1186
856
|
`, isInline: true, styles: [":host([hidden]){display:none!important}\n"], dependencies: [{ kind: "component", type: IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "errorText", "expandedIcon", "fill", "helperText", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }, { kind: "component", type: IonNote, selector: "ion-note", inputs: ["color", "mode"] }, { kind: "directive", type: Field, selector: "[field]", inputs: ["field"] }, { kind: "pipe", type: DynamicTextPipe, name: "dynamicText" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1187
857
|
}
|
|
1188
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
858
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: IonicSelectFieldComponent, decorators: [{
|
|
1189
859
|
type: Component,
|
|
1190
860
|
args: [{ selector: 'df-ionic-select', imports: [IonSelect, IonSelectOption, IonNote, Field, DynamicTextPipe, AsyncPipe], template: `
|
|
1191
861
|
@let f = field();
|
|
@@ -1262,8 +932,8 @@ class IonicSliderFieldComponent {
|
|
|
1262
932
|
isRequired = computed(() => {
|
|
1263
933
|
return this.field()().required?.() === true;
|
|
1264
934
|
}, ...(ngDevMode ? [{ debugName: "isRequired" }] : []));
|
|
1265
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
1266
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.
|
|
935
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: IonicSliderFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
936
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: IonicSliderFieldComponent, isStandalone: true, selector: "df-ionic-slider", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "className()", "id": "`${key()}`", "attr.data-testid": "key()", "attr.hidden": "field()().hidden() || null" } }, ngImport: i0, template: `
|
|
1267
937
|
@let f = field();
|
|
1268
938
|
|
|
1269
939
|
<ion-range
|
|
@@ -1287,7 +957,7 @@ class IonicSliderFieldComponent {
|
|
|
1287
957
|
}
|
|
1288
958
|
`, isInline: true, styles: [":host{display:block}:host([hidden]){display:none!important}\n"], dependencies: [{ kind: "component", type: IonRange, selector: "ion-range", inputs: ["activeBarStart", "color", "debounce", "disabled", "dualKnobs", "label", "labelPlacement", "max", "min", "mode", "name", "pin", "pinFormatter", "snaps", "step", "ticks", "value"] }, { kind: "component", type: IonNote, selector: "ion-note", inputs: ["color", "mode"] }, { kind: "directive", type: Field, selector: "[field]", inputs: ["field"] }, { kind: "pipe", type: DynamicTextPipe, name: "dynamicText" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1289
959
|
}
|
|
1290
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
960
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: IonicSliderFieldComponent, decorators: [{
|
|
1291
961
|
type: Component,
|
|
1292
962
|
args: [{ selector: 'df-ionic-slider', imports: [IonRange, IonNote, Field, DynamicTextPipe, AsyncPipe], template: `
|
|
1293
963
|
@let f = field();
|
|
@@ -1351,8 +1021,8 @@ class IonicTextareaFieldComponent {
|
|
|
1351
1021
|
isRequired = computed(() => {
|
|
1352
1022
|
return this.field()().required?.() === true;
|
|
1353
1023
|
}, ...(ngDevMode ? [{ debugName: "isRequired" }] : []));
|
|
1354
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
1355
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.
|
|
1024
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: IonicTextareaFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1025
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: IonicTextareaFieldComponent, isStandalone: true, selector: "df-ionic-textarea", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "`${key()}`", "attr.data-testid": "key()", "class": "className()", "attr.hidden": "field()().hidden() || null" } }, ngImport: i0, template: `
|
|
1356
1026
|
@let f = field();
|
|
1357
1027
|
|
|
1358
1028
|
<ion-textarea
|
|
@@ -1383,7 +1053,7 @@ class IonicTextareaFieldComponent {
|
|
|
1383
1053
|
</ion-textarea>
|
|
1384
1054
|
`, isInline: true, styles: [":host([hidden]){display:none!important}\n"], dependencies: [{ kind: "component", type: IonTextarea, selector: "ion-textarea", inputs: ["autoGrow", "autocapitalize", "autofocus", "clearOnEdit", "color", "cols", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "maxlength", "minlength", "mode", "name", "placeholder", "readonly", "required", "rows", "shape", "spellcheck", "value", "wrap"] }, { kind: "component", type: IonNote, selector: "ion-note", inputs: ["color", "mode"] }, { kind: "directive", type: Field, selector: "[field]", inputs: ["field"] }, { kind: "pipe", type: DynamicTextPipe, name: "dynamicText" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1385
1055
|
}
|
|
1386
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
1056
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: IonicTextareaFieldComponent, decorators: [{
|
|
1387
1057
|
type: Component,
|
|
1388
1058
|
args: [{ selector: 'df-ionic-textarea', imports: [IonTextarea, IonNote, Field, DynamicTextPipe, AsyncPipe], template: `
|
|
1389
1059
|
@let f = field();
|
|
@@ -1495,8 +1165,8 @@ class IonicToggleControlComponent {
|
|
|
1495
1165
|
onBlur() {
|
|
1496
1166
|
this.touched.set(true);
|
|
1497
1167
|
}
|
|
1498
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
1499
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.
|
|
1168
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: IonicToggleControlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1169
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.6", type: IonicToggleControlComponent, isStandalone: true, selector: "df-ionic-toggle-control", inputs: { checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, labelPlacement: { classPropertyName: "labelPlacement", publicName: "labelPlacement", isSignal: true, isRequired: false, transformFunction: null }, justify: { classPropertyName: "justify", publicName: "justify", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, enableOnOffLabels: { classPropertyName: "enableOnOffLabels", publicName: "enableOnOffLabels", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange", touched: "touchedChange" }, ngImport: i0, template: `
|
|
1500
1170
|
<ion-toggle
|
|
1501
1171
|
[checked]="isChecked()"
|
|
1502
1172
|
(ionChange)="onToggleChange($event)"
|
|
@@ -1515,7 +1185,7 @@ class IonicToggleControlComponent {
|
|
|
1515
1185
|
</ion-toggle>
|
|
1516
1186
|
`, isInline: true, dependencies: [{ kind: "component", type: IonToggle, selector: "ion-toggle", inputs: ["checked", "color", "disabled", "enableOnOffLabels", "errorText", "helperText", "justify", "labelPlacement", "mode", "name", "value"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1517
1187
|
}
|
|
1518
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
1188
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: IonicToggleControlComponent, decorators: [{
|
|
1519
1189
|
type: Component,
|
|
1520
1190
|
args: [{
|
|
1521
1191
|
selector: 'df-ionic-toggle-control',
|
|
@@ -1561,8 +1231,8 @@ class IonicToggleFieldComponent {
|
|
|
1561
1231
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
1562
1232
|
/** Base ID for error elements */
|
|
1563
1233
|
errorId = computed(() => `${this.key()}-error`, ...(ngDevMode ? [{ debugName: "errorId" }] : []));
|
|
1564
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
1565
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.
|
|
1234
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: IonicToggleFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1235
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: IonicToggleFieldComponent, isStandalone: true, selector: "df-ionic-toggle", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "className()", "id": "`${key()}`", "attr.data-testid": "key()", "attr.hidden": "field()().hidden() || null" } }, ngImport: i0, template: `
|
|
1566
1236
|
@let f = field();
|
|
1567
1237
|
|
|
1568
1238
|
<df-ionic-toggle-control
|
|
@@ -1581,7 +1251,7 @@ class IonicToggleFieldComponent {
|
|
|
1581
1251
|
}
|
|
1582
1252
|
`, isInline: true, styles: [":host{display:block}:host([hidden]){display:none!important}\n"], dependencies: [{ kind: "component", type: IonicToggleControlComponent, selector: "df-ionic-toggle-control", inputs: ["checked", "touched", "disabled", "readonly", "invalid", "required", "labelPlacement", "justify", "color", "enableOnOffLabels", "tabIndex"], outputs: ["checkedChange", "touchedChange"] }, { kind: "component", type: IonNote, selector: "ion-note", inputs: ["color", "mode"] }, { kind: "directive", type: Field, selector: "[field]", inputs: ["field"] }, { kind: "pipe", type: DynamicTextPipe, name: "dynamicText" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1583
1253
|
}
|
|
1584
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
1254
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: IonicToggleFieldComponent, decorators: [{
|
|
1585
1255
|
type: Component,
|
|
1586
1256
|
args: [{ selector: 'df-ionic-toggle', imports: [IonicToggleControlComponent, IonNote, Field, DynamicTextPipe, AsyncPipe], template: `
|
|
1587
1257
|
@let f = field();
|
|
@@ -1793,11 +1463,12 @@ function addArrayItemButtonFieldMapper(fieldDef) {
|
|
|
1793
1463
|
// Try to get array context (available when inside an array)
|
|
1794
1464
|
// Use optional injection so it doesn't fail when outside an array
|
|
1795
1465
|
const arrayContext = inject(ARRAY_CONTEXT, { optional: true });
|
|
1466
|
+
const logger = inject(DynamicFormLogger);
|
|
1796
1467
|
// Determine the target array key
|
|
1797
1468
|
// Priority: explicit arrayKey from fieldDef > arrayKey from context
|
|
1798
1469
|
const targetArrayKey = fieldDef.arrayKey ?? arrayContext?.arrayKey;
|
|
1799
1470
|
if (!targetArrayKey) {
|
|
1800
|
-
|
|
1471
|
+
logger.warn(`addArrayItem button "${fieldDef.key}" has no array context. ` +
|
|
1801
1472
|
'Either place it inside an array field, or provide an explicit arrayKey property.');
|
|
1802
1473
|
}
|
|
1803
1474
|
// Build base inputs (static, from field definition)
|
|
@@ -1848,11 +1519,12 @@ function removeArrayItemButtonFieldMapper(fieldDef) {
|
|
|
1848
1519
|
// Try to get array context (available when inside an array)
|
|
1849
1520
|
// Use optional injection so it doesn't fail when outside an array
|
|
1850
1521
|
const arrayContext = inject(ARRAY_CONTEXT, { optional: true });
|
|
1522
|
+
const logger = inject(DynamicFormLogger);
|
|
1851
1523
|
// Determine the target array key
|
|
1852
1524
|
// Priority: explicit arrayKey from fieldDef > arrayKey from context
|
|
1853
1525
|
const targetArrayKey = fieldDef.arrayKey ?? arrayContext?.arrayKey;
|
|
1854
1526
|
if (!targetArrayKey) {
|
|
1855
|
-
|
|
1527
|
+
logger.warn(`removeArrayItem button "${fieldDef.key}" has no array context. ` +
|
|
1856
1528
|
'Either place it inside an array field, or provide an explicit arrayKey property.');
|
|
1857
1529
|
}
|
|
1858
1530
|
// Build base inputs (static, from field definition)
|