@maro-tech/form 0.0.16 → 0.1.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,8 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
- import { OnChanges, EventEmitter, ElementRef, SimpleChanges, InjectionToken, OnInit, OnDestroy, Type, AfterViewInit } from '@angular/core';
2
+ import { OnChanges, EventEmitter, ElementRef, SimpleChanges, AfterViewInit, Type, OnDestroy, OnInit } from '@angular/core';
3
3
  import { Observable } from 'rxjs';
4
4
  import * as lucide_angular from 'lucide-angular';
5
- import { ControlValueAccessor } from '@angular/forms';
5
+ import { ControlValueAccessor, Validator, AbstractControl, ValidationErrors } from '@angular/forms';
6
6
  import { ConnectedPosition } from '@angular/cdk/overlay';
7
7
  import { CdkDragDrop } from '@angular/cdk/drag-drop';
8
8
 
@@ -40,7 +40,7 @@ interface UiSelectOption {
40
40
  imageUrl?: string;
41
41
  }
42
42
  type UiSelectValue = string | string[] | null;
43
- declare class UiSelectComponent implements ControlValueAccessor, OnChanges {
43
+ declare class InputSelectComponent implements ControlValueAccessor, OnChanges, Validator {
44
44
  readonly closeIcon: lucide_angular.LucideIconData;
45
45
  readonly chevronDownIcon: lucide_angular.LucideIconData;
46
46
  readonly checkIcon: lucide_angular.LucideIconData;
@@ -94,6 +94,7 @@ declare class UiSelectComponent implements ControlValueAccessor, OnChanges {
94
94
  writeValue(value: UiSelectValue): void;
95
95
  registerOnChange(fn: (value: UiSelectValue) => void): void;
96
96
  registerOnTouched(fn: () => void): void;
97
+ validate(control: AbstractControl): ValidationErrors | null;
97
98
  setDisabledState(isDisabled: boolean): void;
98
99
  toggleDropdown(event: Event): void;
99
100
  selectOption(option: UiSelectOption, event: Event): void;
@@ -120,8 +121,8 @@ declare class UiSelectComponent implements ControlValueAccessor, OnChanges {
120
121
  private normalizeSuggestItem;
121
122
  private loadSuggestItems;
122
123
  private loadSuggestItem;
123
- static ɵfac: i0.ɵɵFactoryDeclaration<UiSelectComponent, never>;
124
- static ɵcmp: i0.ɵɵComponentDeclaration<UiSelectComponent, "forms-select", never, { "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "data": { "alias": "data"; "required": false; }; "required": { "alias": "required"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "includeBlankOption": { "alias": "includeBlankOption"; "required": false; }; "blankOptionLabel": { "alias": "blankOptionLabel"; "required": false; }; "emptyStateLabel": { "alias": "emptyStateLabel"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; "remoteSearch": { "alias": "remoteSearch"; "required": false; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; }; "options": { "alias": "options"; "required": false; }; "error": { "alias": "error"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "triggerClass": { "alias": "triggerClass"; "required": false; }; "panelClass": { "alias": "panelClass"; "required": false; }; }, { "valueChange": "valueChange"; "searchChange": "searchChange"; }, never, never, true, never>;
124
+ static ɵfac: i0.ɵɵFactoryDeclaration<InputSelectComponent, never>;
125
+ static ɵcmp: i0.ɵɵComponentDeclaration<InputSelectComponent, "input-select", never, { "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "data": { "alias": "data"; "required": false; }; "required": { "alias": "required"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "includeBlankOption": { "alias": "includeBlankOption"; "required": false; }; "blankOptionLabel": { "alias": "blankOptionLabel"; "required": false; }; "emptyStateLabel": { "alias": "emptyStateLabel"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; "remoteSearch": { "alias": "remoteSearch"; "required": false; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; }; "options": { "alias": "options"; "required": false; }; "error": { "alias": "error"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "triggerClass": { "alias": "triggerClass"; "required": false; }; "panelClass": { "alias": "panelClass"; "required": false; }; }, { "valueChange": "valueChange"; "searchChange": "searchChange"; }, never, never, true, never>;
125
126
  static ngAcceptInputType_multiple: unknown;
126
127
  }
127
128
 
@@ -157,9 +158,7 @@ interface UiDynamicFormBaseField {
157
158
  hint?: string;
158
159
  required?: boolean;
159
160
  disabled?: boolean;
160
- readonly?: boolean;
161
161
  data?: string;
162
- optionsSource?: string;
163
162
  options?: UiSelectOption[];
164
163
  searchable?: boolean;
165
164
  rows?: number;
@@ -214,23 +213,9 @@ declare class UiFormLookupService {
214
213
  static ɵprov: i0.ɵɵInjectableDeclaration<UiFormLookupService>;
215
214
  }
216
215
 
217
- interface UiDynamicFormOptionsSourceContext {
218
- source: string;
219
- field: UiDynamicFormField;
220
- model: UiDynamicFormValue;
221
- query?: string;
222
- }
223
- interface UiDynamicFormOptionsSourceResolver {
224
- source: string;
225
- resolve(context: UiDynamicFormOptionsSourceContext): Observable<UiSelectOption[]>;
226
- }
227
- declare const UI_DYNAMIC_FORM_OPTIONS_SOURCE_RESOLVERS: InjectionToken<UiDynamicFormOptionsSourceResolver[]>;
228
-
229
- declare class UiDynamicFormComponent implements OnInit, OnChanges, OnDestroy {
230
- private readonly formsApi;
216
+ declare class DynamicFormComponent implements OnChanges {
231
217
  private readonly lookupService;
232
218
  readonly formContext: UiFormContext;
233
- private readonly optionsSourceResolvers;
234
219
  fields: UiDynamicFormField[];
235
220
  value: UiDynamicFormValue;
236
221
  errors: Record<string, string>;
@@ -253,20 +238,14 @@ declare class UiDynamicFormComponent implements OnInit, OnChanges, OnDestroy {
253
238
  action: UiDynamicFormFieldAction;
254
239
  }>;
255
240
  readonly modelSignal: i0.WritableSignal<UiDynamicFormValue>;
256
- readonly dictionaryOptionsSignal: i0.WritableSignal<Record<string, UiSelectOption[]>>;
257
241
  readonly lookupLoadingSignal: i0.WritableSignal<Record<string, boolean>>;
258
242
  readonly lookupErrorsSignal: i0.WritableSignal<Record<string, string>>;
259
- private readonly selectSearchChanges;
260
- private readonly selectSearchSubscriptions;
261
- private readonly optionsSourceRequestVersions;
262
- ngOnInit(): void;
263
243
  ngOnChanges(changes: SimpleChanges): void;
264
- ngOnDestroy(): void;
265
244
  updateField(fieldId: string, nextValue: UiDynamicFormValue[string]): void;
266
245
  private normalizeFieldValue;
267
246
  onBarcodeValueChange(field: UiDynamicFormField, value: string): void;
247
+ onFieldValueChange(field: UiDynamicFormField, value: unknown): void;
268
248
  onBarcodeScanned(field: UiDynamicFormField, value: string): void;
269
- onSelectValueChange(field: UiDynamicFormField, value: string | string[] | null): void;
270
249
  runBarcodeLookup(field: UiDynamicFormField): void;
271
250
  runFieldLookup(field: UiDynamicFormField, overrideValue?: string): void;
272
251
  onFieldActionTriggered(fieldId: string, action: UiDynamicFormFieldAction): void;
@@ -275,8 +254,6 @@ declare class UiDynamicFormComponent implements OnInit, OnChanges, OnDestroy {
275
254
  isFieldDisabled(field: UiDynamicFormField): boolean;
276
255
  submitForm(): void;
277
256
  isTextArea(field: UiDynamicFormField): boolean;
278
- isInputField(field: UiDynamicFormField): boolean;
279
- isBarcodeField(field: UiDynamicFormField): boolean;
280
257
  getStringValue(fieldId: string): string;
281
258
  getLookupError(fieldId: string): string;
282
259
  isLookupLoading(fieldId: string): boolean;
@@ -285,23 +262,18 @@ declare class UiDynamicFormComponent implements OnInit, OnChanges, OnDestroy {
285
262
  isTemplateField(field: UiDynamicFormField): boolean;
286
263
  isFieldVisible(field: UiDynamicFormField): boolean;
287
264
  resolveInputType(field: UiDynamicFormField): string;
288
- resolveSelectOptions(field: UiDynamicFormField): UiSelectOption[];
289
265
  renderTemplate(field: UiDynamicFormField): string;
290
266
  getContainerTag(field: UiDynamicFormField): 'div' | 'section' | 'aside' | 'fieldset';
291
267
  getContainerClass(field: UiDynamicFormField): string;
292
268
  getContainerContentClass(field: UiDynamicFormField): string;
293
269
  getFieldClass(field: UiDynamicFormField): Record<string, boolean>;
294
270
  private resolveColSpanClass;
295
- onSelectSearchChange(field: UiDynamicFormField, query: string): void;
296
- private ensureOptionsSourceOptionsLoaded;
297
- private getSelectSearchStream;
298
- private cleanupSelectSearchStreams;
299
271
  private applyLookupResponse;
300
272
  private resolveTemplateValue;
301
273
  private getFlatFields;
302
274
  private getLeafFields;
303
- static ɵfac: i0.ɵɵFactoryDeclaration<UiDynamicFormComponent, never>;
304
- static ɵcmp: i0.ɵɵComponentDeclaration<UiDynamicFormComponent, "forms-dynamic-form", never, { "fields": { "alias": "fields"; "required": false; }; "value": { "alias": "value"; "required": false; }; "errors": { "alias": "errors"; "required": false; }; "submitLabel": { "alias": "submitLabel"; "required": false; }; "showSubmit": { "alias": "showSubmit"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "valueChange": "valueChange"; "lookupCompleted": "lookupCompleted"; "submitted": "submitted"; "filesChange": "filesChange"; "uploadingChange": "uploadingChange"; "fieldActionTriggered": "fieldActionTriggered"; }, never, never, true, never>;
275
+ static ɵfac: i0.ɵɵFactoryDeclaration<DynamicFormComponent, never>;
276
+ static ɵcmp: i0.ɵɵComponentDeclaration<DynamicFormComponent, "dynamic-form", never, { "fields": { "alias": "fields"; "required": false; }; "value": { "alias": "value"; "required": false; }; "errors": { "alias": "errors"; "required": false; }; "submitLabel": { "alias": "submitLabel"; "required": false; }; "showSubmit": { "alias": "showSubmit"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "valueChange": "valueChange"; "lookupCompleted": "lookupCompleted"; "submitted": "submitted"; "filesChange": "filesChange"; "uploadingChange": "uploadingChange"; "fieldActionTriggered": "fieldActionTriggered"; }, never, never, true, never>;
305
277
  }
306
278
 
307
279
  interface MaroFormViewAction extends UiDynamicFormFieldAction {
@@ -319,7 +291,7 @@ interface MaroFormViewResponse {
319
291
  actions?: MaroFormViewAction[];
320
292
  item?: Record<string, unknown> | null;
321
293
  }
322
- declare class UiActionFormModalComponent implements OnChanges {
294
+ declare class FormModalComponent implements OnChanges {
323
295
  readonly formId: i0.InputSignal<string>;
324
296
  readonly recordId: i0.InputSignal<string>;
325
297
  readonly size: i0.InputSignal<"sm" | "md" | "lg">;
@@ -330,6 +302,7 @@ declare class UiActionFormModalComponent implements OnChanges {
330
302
  readonly completed: i0.OutputEmitterRef<unknown>;
331
303
  readonly isLoading: i0.WritableSignal<boolean>;
332
304
  readonly isSubmitting: i0.WritableSignal<boolean>;
305
+ readonly isActionRunning: i0.WritableSignal<boolean>;
333
306
  readonly isUploading: i0.WritableSignal<boolean>;
334
307
  readonly formConfig: i0.WritableSignal<MaroFormViewResponse | null>;
335
308
  readonly formValue: i0.WritableSignal<UiDynamicFormValue>;
@@ -343,6 +316,7 @@ declare class UiActionFormModalComponent implements OnChanges {
343
316
  }>;
344
317
  private readonly http;
345
318
  private readonly router;
319
+ private readonly toast;
346
320
  ngOnChanges(changes: SimpleChanges): void;
347
321
  close(): void;
348
322
  onValueChange(value: UiDynamicFormValue): void;
@@ -359,42 +333,45 @@ declare class UiActionFormModalComponent implements OnChanges {
359
333
  private loadForm;
360
334
  private resolveEndpoint;
361
335
  private normalizePayload;
336
+ private isEmptyValue;
362
337
  private normalizeActionType;
363
338
  private isSubmitAction;
364
339
  private resolveMethod;
365
340
  private extractData;
366
341
  private navigateAfterSubmit;
367
342
  private resolveTemplate;
368
- static ɵfac: i0.ɵɵFactoryDeclaration<UiActionFormModalComponent, never>;
369
- static ɵcmp: i0.ɵɵComponentDeclaration<UiActionFormModalComponent, "forms-action-form-modal", never, { "formId": { "alias": "formId"; "required": false; "isSignal": true; }; "recordId": { "alias": "recordId"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; "cancelLabel": { "alias": "cancelLabel"; "required": false; "isSignal": true; }; "initialValue": { "alias": "initialValue"; "required": false; "isSignal": true; }; }, { "closed": "closed"; "completed": "completed"; }, never, never, true, never>;
343
+ static ɵfac: i0.ɵɵFactoryDeclaration<FormModalComponent, never>;
344
+ static ɵcmp: i0.ɵɵComponentDeclaration<FormModalComponent, "form-modal", never, { "formId": { "alias": "formId"; "required": false; "isSignal": true; }; "recordId": { "alias": "recordId"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; "cancelLabel": { "alias": "cancelLabel"; "required": false; "isSignal": true; }; "initialValue": { "alias": "initialValue"; "required": false; "isSignal": true; }; }, { "closed": "closed"; "completed": "completed"; }, never, never, true, never>;
370
345
  }
371
346
 
372
- declare class UiFormInputHostComponent implements OnChanges {
347
+ declare class FieldInputComponent implements OnChanges, AfterViewInit {
373
348
  field: UiDynamicFormField;
374
349
  value: UiDynamicFormValue[string];
375
350
  error: string;
376
351
  disabled: boolean;
377
352
  actions: UiDynamicFormFieldAction[];
378
- options: Array<{
379
- label: string;
380
- value: string | null;
381
- disabled?: boolean;
382
- }>;
383
353
  valueChange: EventEmitter<unknown>;
384
354
  actionTriggered: EventEmitter<UiDynamicFormFieldAction>;
385
- private readonly viewContainer;
355
+ lookupRequested: EventEmitter<void>;
356
+ barcodeScanned: EventEmitter<string>;
357
+ filesChange: EventEmitter<File[]>;
358
+ uploadingChange: EventEmitter<boolean>;
359
+ private inputContainer?;
386
360
  private componentRef?;
361
+ private readonly fallbackViewContainer;
362
+ private viewReady;
363
+ ngAfterViewInit(): void;
387
364
  ngOnChanges(changes: SimpleChanges): void;
388
365
  private render;
389
366
  private syncInputs;
390
- static ɵfac: i0.ɵɵFactoryDeclaration<UiFormInputHostComponent, never>;
391
- static ɵcmp: i0.ɵɵComponentDeclaration<UiFormInputHostComponent, "forms-form-input-host", never, { "field": { "alias": "field"; "required": false; }; "value": { "alias": "value"; "required": false; }; "error": { "alias": "error"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; "options": { "alias": "options"; "required": false; }; }, { "valueChange": "valueChange"; "actionTriggered": "actionTriggered"; }, never, never, true, never>;
367
+ static ɵfac: i0.ɵɵFactoryDeclaration<FieldInputComponent, never>;
368
+ static ɵcmp: i0.ɵɵComponentDeclaration<FieldInputComponent, "field-input", never, { "field": { "alias": "field"; "required": false; }; "value": { "alias": "value"; "required": false; }; "error": { "alias": "error"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; }, { "valueChange": "valueChange"; "actionTriggered": "actionTriggered"; "lookupRequested": "lookupRequested"; "barcodeScanned": "barcodeScanned"; "filesChange": "filesChange"; "uploadingChange": "uploadingChange"; }, never, never, true, never>;
392
369
  }
393
370
 
394
- type UiFormInputType = 'text' | 'number' | 'date' | 'datetime' | 'email' | 'password' | 'textarea';
371
+ type UiFormInputType = 'text' | 'number' | 'date' | 'datetime' | 'email' | 'password' | 'textarea' | 'select' | 'checkbox' | 'color' | 'slug' | 'file' | 'photo' | 'barcode';
395
372
  declare const UI_FORM_INPUT_REGISTRY: Record<UiFormInputType, Type<unknown>>;
396
373
 
397
- declare class UiBarcodeScannerInputComponent implements OnChanges, AfterViewInit, OnDestroy {
374
+ declare class InputBarcodeComponent implements OnChanges, AfterViewInit, OnDestroy {
398
375
  readonly value: i0.InputSignal<string>;
399
376
  readonly label: i0.InputSignal<string>;
400
377
  readonly placeholder: i0.InputSignal<string>;
@@ -437,21 +414,27 @@ declare class UiBarcodeScannerInputComponent implements OnChanges, AfterViewInit
437
414
  private openZxingCamera;
438
415
  private scheduleNativeScan;
439
416
  private createNativeBarcodeDetector;
440
- static ɵfac: i0.ɵɵFactoryDeclaration<UiBarcodeScannerInputComponent, never>;
441
- static ɵcmp: i0.ɵɵComponentDeclaration<UiBarcodeScannerInputComponent, "forms-barcode-scanner-input", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "autoOpen": { "alias": "autoOpen"; "required": false; "isSignal": true; }; "searchButtonLabel": { "alias": "searchButtonLabel"; "required": false; "isSignal": true; }; "openCameraLabel": { "alias": "openCameraLabel"; "required": false; "isSignal": true; }; "closeCameraLabel": { "alias": "closeCameraLabel"; "required": false; "isSignal": true; }; "cameraTitle": { "alias": "cameraTitle"; "required": false; "isSignal": true; }; "cameraStartingLabel": { "alias": "cameraStartingLabel"; "required": false; "isSignal": true; }; "cameraHint": { "alias": "cameraHint"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "scanned": "scanned"; "searchRequested": "searchRequested"; "cameraStateChange": "cameraStateChange"; }, never, never, true, never>;
417
+ static ɵfac: i0.ɵɵFactoryDeclaration<InputBarcodeComponent, never>;
418
+ static ɵcmp: i0.ɵɵComponentDeclaration<InputBarcodeComponent, "input-barcode", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "autoOpen": { "alias": "autoOpen"; "required": false; "isSignal": true; }; "searchButtonLabel": { "alias": "searchButtonLabel"; "required": false; "isSignal": true; }; "openCameraLabel": { "alias": "openCameraLabel"; "required": false; "isSignal": true; }; "closeCameraLabel": { "alias": "closeCameraLabel"; "required": false; "isSignal": true; }; "cameraTitle": { "alias": "cameraTitle"; "required": false; "isSignal": true; }; "cameraStartingLabel": { "alias": "cameraStartingLabel"; "required": false; "isSignal": true; }; "cameraHint": { "alias": "cameraHint"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "scanned": "scanned"; "searchRequested": "searchRequested"; "cameraStateChange": "cameraStateChange"; }, never, never, true, never>;
442
419
  }
443
420
 
444
- declare class UiCheckboxInputComponent {
421
+ declare class InputCheckboxComponent implements ControlValueAccessor {
445
422
  label?: string;
446
423
  disabled: boolean;
447
424
  value: boolean;
448
425
  valueChange: EventEmitter<boolean>;
426
+ private onChange;
427
+ onTouched: () => void;
428
+ writeValue(value: boolean | null): void;
429
+ registerOnChange(fn: (value: boolean) => void): void;
430
+ registerOnTouched(fn: () => void): void;
431
+ setDisabledState(isDisabled: boolean): void;
449
432
  onValueChange(event: Event): void;
450
- static ɵfac: i0.ɵɵFactoryDeclaration<UiCheckboxInputComponent, never>;
451
- static ɵcmp: i0.ɵɵComponentDeclaration<UiCheckboxInputComponent, "forms-checkbox-input", never, { "label": { "alias": "label"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
433
+ static ɵfac: i0.ɵɵFactoryDeclaration<InputCheckboxComponent, never>;
434
+ static ɵcmp: i0.ɵɵComponentDeclaration<InputCheckboxComponent, "input-checkbox", never, { "label": { "alias": "label"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
452
435
  }
453
436
 
454
- declare class UiColorInputComponent implements ControlValueAccessor {
437
+ declare class InputColorComponent implements ControlValueAccessor, Validator {
455
438
  private readonly cdr;
456
439
  label?: string;
457
440
  hint?: string;
@@ -471,14 +454,15 @@ declare class UiColorInputComponent implements ControlValueAccessor {
471
454
  writeValue(value: string | null): void;
472
455
  registerOnChange(fn: (value: string) => void): void;
473
456
  registerOnTouched(fn: () => void): void;
457
+ validate(control: AbstractControl): ValidationErrors | null;
474
458
  setDisabledState(isDisabled: boolean): void;
475
459
  onPickerChange(value: string): void;
476
460
  onHexInput(value: string): void;
477
461
  markTouched(): void;
478
462
  private normalizeHexInput;
479
463
  private isColorValue;
480
- static ɵfac: i0.ɵɵFactoryDeclaration<UiColorInputComponent, never>;
481
- static ɵcmp: i0.ɵɵComponentDeclaration<UiColorInputComponent, "forms-color-input", never, { "label": { "alias": "label"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "required": { "alias": "required"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "error": { "alias": "error"; "required": false; }; }, {}, never, never, true, never>;
464
+ static ɵfac: i0.ɵɵFactoryDeclaration<InputColorComponent, never>;
465
+ static ɵcmp: i0.ɵɵComponentDeclaration<InputColorComponent, "input-color", never, { "label": { "alias": "label"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "required": { "alias": "required"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "error": { "alias": "error"; "required": false; }; }, {}, never, never, true, never>;
482
466
  }
483
467
 
484
468
  type UiInputElement$6 = 'input' | 'textarea';
@@ -488,7 +472,7 @@ interface CalendarDay$1 {
488
472
  currentMonth: boolean;
489
473
  }
490
474
  type CalendarView$1 = 'days' | 'months' | 'years';
491
- declare class UiDateInputComponent implements ControlValueAccessor {
475
+ declare class InputDateComponent implements ControlValueAccessor, Validator {
492
476
  private readonly cdr;
493
477
  private readonly popupService;
494
478
  private readonly closeActivePopup;
@@ -506,7 +490,6 @@ declare class UiDateInputComponent implements ControlValueAccessor {
506
490
  required: boolean;
507
491
  fullWidth: boolean;
508
492
  autocomplete: string;
509
- readonly: boolean;
510
493
  pattern?: string;
511
494
  error?: string;
512
495
  actions: UiDynamicFormFieldAction[];
@@ -548,6 +531,7 @@ declare class UiDateInputComponent implements ControlValueAccessor {
548
531
  onEscape(): void;
549
532
  registerOnChange(fn: (value: string | number | null) => void): void;
550
533
  registerOnTouched(fn: () => void): void;
534
+ validate(control: AbstractControl): ValidationErrors | null;
551
535
  setDisabledState(isDisabled: boolean): void;
552
536
  onValueChange(value: string): void;
553
537
  allowDateKey(event: KeyboardEvent): void;
@@ -557,8 +541,8 @@ declare class UiDateInputComponent implements ControlValueAccessor {
557
541
  private parseDate;
558
542
  private parseInputDate;
559
543
  private toDateValue;
560
- static ɵfac: i0.ɵɵFactoryDeclaration<UiDateInputComponent, never>;
561
- static ɵcmp: i0.ɵɵComponentDeclaration<UiDateInputComponent, "forms-date-input", never, { "label": { "alias": "label"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "required": { "alias": "required"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "pattern": { "alias": "pattern"; "required": false; }; "error": { "alias": "error"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; }, { "actionTriggered": "actionTriggered"; }, never, never, true, never>;
544
+ static ɵfac: i0.ɵɵFactoryDeclaration<InputDateComponent, never>;
545
+ static ɵcmp: i0.ɵɵComponentDeclaration<InputDateComponent, "input-date", never, { "label": { "alias": "label"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "required": { "alias": "required"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "pattern": { "alias": "pattern"; "required": false; }; "error": { "alias": "error"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; }, { "actionTriggered": "actionTriggered"; }, never, never, true, never>;
562
546
  }
563
547
 
564
548
  interface CalendarDay {
@@ -567,7 +551,7 @@ interface CalendarDay {
567
551
  currentMonth: boolean;
568
552
  }
569
553
  type CalendarView = 'days' | 'months' | 'years';
570
- declare class UiDatetimeInputComponent implements ControlValueAccessor {
554
+ declare class InputDatetimeComponent implements ControlValueAccessor, Validator {
571
555
  private readonly cdr;
572
556
  private readonly popupService;
573
557
  private readonly closeActivePopup;
@@ -580,7 +564,6 @@ declare class UiDatetimeInputComponent implements ControlValueAccessor {
580
564
  required: boolean;
581
565
  fullWidth: boolean;
582
566
  autocomplete: string;
583
- readonly: boolean;
584
567
  pattern?: string;
585
568
  error?: string;
586
569
  actions: UiDynamicFormFieldAction[];
@@ -614,6 +597,7 @@ declare class UiDatetimeInputComponent implements ControlValueAccessor {
614
597
  writeValue(value: string | number | null): void;
615
598
  registerOnChange(fn: (value: string | number | null) => void): void;
616
599
  registerOnTouched(fn: () => void): void;
600
+ validate(control: AbstractControl): ValidationErrors | null;
617
601
  setDisabledState(disabled: boolean): void;
618
602
  openCalendar(event: Event): void;
619
603
  closeCalendar(): void;
@@ -637,12 +621,12 @@ declare class UiDatetimeInputComponent implements ControlValueAccessor {
637
621
  private startOfMonth;
638
622
  private parseDate;
639
623
  private toDateValue;
640
- static ɵfac: i0.ɵɵFactoryDeclaration<UiDatetimeInputComponent, never>;
641
- static ɵcmp: i0.ɵɵComponentDeclaration<UiDatetimeInputComponent, "forms-datetime-input", never, { "label": { "alias": "label"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "required": { "alias": "required"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "pattern": { "alias": "pattern"; "required": false; }; "error": { "alias": "error"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; }, { "actionTriggered": "actionTriggered"; }, never, never, true, never>;
624
+ static ɵfac: i0.ɵɵFactoryDeclaration<InputDatetimeComponent, never>;
625
+ static ɵcmp: i0.ɵɵComponentDeclaration<InputDatetimeComponent, "input-datetime", never, { "label": { "alias": "label"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "required": { "alias": "required"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "pattern": { "alias": "pattern"; "required": false; }; "error": { "alias": "error"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; }, { "actionTriggered": "actionTriggered"; }, never, never, true, never>;
642
626
  }
643
627
 
644
628
  type UiInputElement$5 = 'input' | 'textarea';
645
- declare class UiEmailInputComponent implements ControlValueAccessor {
629
+ declare class InputEmailComponent implements ControlValueAccessor, Validator {
646
630
  private readonly cdr;
647
631
  label?: string;
648
632
  hint?: string;
@@ -655,7 +639,6 @@ declare class UiEmailInputComponent implements ControlValueAccessor {
655
639
  required: boolean;
656
640
  fullWidth: boolean;
657
641
  autocomplete?: string;
658
- readonly: boolean;
659
642
  pattern?: string;
660
643
  error?: string;
661
644
  actions: UiDynamicFormFieldAction[];
@@ -670,14 +653,15 @@ declare class UiEmailInputComponent implements ControlValueAccessor {
670
653
  writeValue(value: string | number | null): void;
671
654
  registerOnChange(fn: (value: string | number | null) => void): void;
672
655
  registerOnTouched(fn: () => void): void;
656
+ validate(control: AbstractControl): ValidationErrors | null;
673
657
  setDisabledState(isDisabled: boolean): void;
674
658
  onValueChange(value: string): void;
675
659
  triggerAction(action: UiDynamicFormFieldAction): void;
676
- static ɵfac: i0.ɵɵFactoryDeclaration<UiEmailInputComponent, never>;
677
- static ɵcmp: i0.ɵɵComponentDeclaration<UiEmailInputComponent, "forms-email-input", never, { "label": { "alias": "label"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "required": { "alias": "required"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "pattern": { "alias": "pattern"; "required": false; }; "error": { "alias": "error"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; }, { "actionTriggered": "actionTriggered"; }, never, never, true, never>;
660
+ static ɵfac: i0.ɵɵFactoryDeclaration<InputEmailComponent, never>;
661
+ static ɵcmp: i0.ɵɵComponentDeclaration<InputEmailComponent, "input-email", never, { "label": { "alias": "label"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "required": { "alias": "required"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "pattern": { "alias": "pattern"; "required": false; }; "error": { "alias": "error"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; }, { "actionTriggered": "actionTriggered"; }, never, never, true, never>;
678
662
  }
679
663
 
680
- declare class UiFileInputComponent {
664
+ declare class InputFileComponent implements ControlValueAccessor {
681
665
  label?: string;
682
666
  hint?: string;
683
667
  accept?: string;
@@ -686,15 +670,21 @@ declare class UiFileInputComponent {
686
670
  value: File | File[] | null;
687
671
  valueChange: EventEmitter<File | File[] | null>;
688
672
  filesChange: EventEmitter<File[]>;
673
+ private onChange;
674
+ onTouched: () => void;
675
+ writeValue(value: File | File[] | null): void;
676
+ registerOnChange(fn: (value: File | File[] | null) => void): void;
677
+ registerOnTouched(fn: () => void): void;
678
+ setDisabledState(isDisabled: boolean): void;
689
679
  get selectedFiles(): File[];
690
680
  onFilesSelected(event: Event): void;
691
681
  remove(index: number): void;
692
- static ɵfac: i0.ɵɵFactoryDeclaration<UiFileInputComponent, never>;
693
- static ɵcmp: i0.ɵɵComponentDeclaration<UiFileInputComponent, "forms-file-input", never, { "label": { "alias": "label"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "accept": { "alias": "accept"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "valueChange": "valueChange"; "filesChange": "filesChange"; }, never, never, true, never>;
682
+ static ɵfac: i0.ɵɵFactoryDeclaration<InputFileComponent, never>;
683
+ static ɵcmp: i0.ɵɵComponentDeclaration<InputFileComponent, "input-file", never, { "label": { "alias": "label"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "accept": { "alias": "accept"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "valueChange": "valueChange"; "filesChange": "filesChange"; }, never, never, true, never>;
694
684
  }
695
685
 
696
686
  type UiInputElement$4 = 'input' | 'textarea';
697
- declare class UiInputComponent implements ControlValueAccessor {
687
+ declare class InputComponent implements ControlValueAccessor {
698
688
  private readonly cdr;
699
689
  label?: string;
700
690
  hint?: string;
@@ -707,7 +697,6 @@ declare class UiInputComponent implements ControlValueAccessor {
707
697
  required: boolean;
708
698
  fullWidth: boolean;
709
699
  autocomplete?: string;
710
- readonly: boolean;
711
700
  pattern?: string;
712
701
  error?: string;
713
702
  actions: UiDynamicFormFieldAction[];
@@ -725,12 +714,12 @@ declare class UiInputComponent implements ControlValueAccessor {
725
714
  setDisabledState(isDisabled: boolean): void;
726
715
  onValueChange(value: string): void;
727
716
  triggerAction(action: UiDynamicFormFieldAction): void;
728
- static ɵfac: i0.ɵɵFactoryDeclaration<UiInputComponent, never>;
729
- static ɵcmp: i0.ɵɵComponentDeclaration<UiInputComponent, "forms-input", never, { "label": { "alias": "label"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "type": { "alias": "type"; "required": false; }; "element": { "alias": "element"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "required": { "alias": "required"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "pattern": { "alias": "pattern"; "required": false; }; "error": { "alias": "error"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; }, { "actionTriggered": "actionTriggered"; }, never, never, true, never>;
717
+ static ɵfac: i0.ɵɵFactoryDeclaration<InputComponent, never>;
718
+ static ɵcmp: i0.ɵɵComponentDeclaration<InputComponent, "input-base", never, { "label": { "alias": "label"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "type": { "alias": "type"; "required": false; }; "element": { "alias": "element"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "required": { "alias": "required"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "pattern": { "alias": "pattern"; "required": false; }; "error": { "alias": "error"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; }, { "actionTriggered": "actionTriggered"; }, never, never, true, never>;
730
719
  }
731
720
 
732
721
  type UiInputElement$3 = 'input' | 'textarea';
733
- declare class UiNumberInputComponent implements ControlValueAccessor {
722
+ declare class InputNumberComponent implements ControlValueAccessor, Validator {
734
723
  private readonly cdr;
735
724
  label?: string;
736
725
  hint?: string;
@@ -743,7 +732,6 @@ declare class UiNumberInputComponent implements ControlValueAccessor {
743
732
  required: boolean;
744
733
  fullWidth: boolean;
745
734
  autocomplete?: string;
746
- readonly: boolean;
747
735
  disabled: boolean;
748
736
  pattern?: string;
749
737
  error?: string;
@@ -758,16 +746,17 @@ declare class UiNumberInputComponent implements ControlValueAccessor {
758
746
  writeValue(value: string | number | null): void;
759
747
  registerOnChange(fn: (value: string | number | null) => void): void;
760
748
  registerOnTouched(fn: () => void): void;
749
+ validate(control: AbstractControl): ValidationErrors | null;
761
750
  setDisabledState(isDisabled: boolean): void;
762
751
  onValueChange(value: string): void;
763
752
  preventWheelChange(event: WheelEvent): void;
764
753
  triggerAction(action: UiDynamicFormFieldAction): void;
765
- static ɵfac: i0.ɵɵFactoryDeclaration<UiNumberInputComponent, never>;
766
- static ɵcmp: i0.ɵɵComponentDeclaration<UiNumberInputComponent, "forms-number-input", never, { "label": { "alias": "label"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "required": { "alias": "required"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "pattern": { "alias": "pattern"; "required": false; }; "error": { "alias": "error"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; }, { "actionTriggered": "actionTriggered"; }, never, never, true, never>;
754
+ static ɵfac: i0.ɵɵFactoryDeclaration<InputNumberComponent, never>;
755
+ static ɵcmp: i0.ɵɵComponentDeclaration<InputNumberComponent, "input-number", never, { "label": { "alias": "label"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "required": { "alias": "required"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "pattern": { "alias": "pattern"; "required": false; }; "error": { "alias": "error"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; }, { "actionTriggered": "actionTriggered"; }, never, never, true, never>;
767
756
  }
768
757
 
769
758
  type UiInputElement$2 = 'input' | 'textarea';
770
- declare class UiPasswordInputComponent implements ControlValueAccessor {
759
+ declare class InputPasswordComponent implements ControlValueAccessor, Validator {
771
760
  private readonly cdr;
772
761
  label?: string;
773
762
  hint?: string;
@@ -782,7 +771,6 @@ declare class UiPasswordInputComponent implements ControlValueAccessor {
782
771
  required: boolean;
783
772
  fullWidth: boolean;
784
773
  autocomplete?: string;
785
- readonly: boolean;
786
774
  pattern?: string;
787
775
  error?: string;
788
776
  actions: UiDynamicFormFieldAction[];
@@ -798,12 +786,13 @@ declare class UiPasswordInputComponent implements ControlValueAccessor {
798
786
  writeValue(value: string | number | null): void;
799
787
  registerOnChange(fn: (value: string | number | null) => void): void;
800
788
  registerOnTouched(fn: () => void): void;
789
+ validate(control: AbstractControl): ValidationErrors | null;
801
790
  setDisabledState(isDisabled: boolean): void;
802
791
  onValueChange(value: string): void;
803
792
  togglePassword(event: Event): void;
804
793
  triggerAction(action: UiDynamicFormFieldAction): void;
805
- static ɵfac: i0.ɵɵFactoryDeclaration<UiPasswordInputComponent, never>;
806
- static ɵcmp: i0.ɵɵComponentDeclaration<UiPasswordInputComponent, "forms-password-input", never, { "label": { "alias": "label"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "required": { "alias": "required"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "pattern": { "alias": "pattern"; "required": false; }; "error": { "alias": "error"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; }, { "actionTriggered": "actionTriggered"; }, never, never, true, never>;
794
+ static ɵfac: i0.ɵɵFactoryDeclaration<InputPasswordComponent, never>;
795
+ static ɵcmp: i0.ɵɵComponentDeclaration<InputPasswordComponent, "input-password", never, { "label": { "alias": "label"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "required": { "alias": "required"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "pattern": { "alias": "pattern"; "required": false; }; "error": { "alias": "error"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; }, { "actionTriggered": "actionTriggered"; }, never, never, true, never>;
807
796
  }
808
797
 
809
798
  interface UiPhotoPreview {
@@ -812,7 +801,7 @@ interface UiPhotoPreview {
812
801
  isImage: boolean;
813
802
  source: 'file' | 'id';
814
803
  }
815
- declare class UiPhotoInputComponent implements OnChanges, OnDestroy {
804
+ declare class InputPhotoComponent implements OnChanges, OnDestroy, ControlValueAccessor {
816
805
  private readonly http;
817
806
  label?: string;
818
807
  hint?: string;
@@ -828,6 +817,12 @@ declare class UiPhotoInputComponent implements OnChanges, OnDestroy {
828
817
  previews: UiPhotoPreview[];
829
818
  uploading: boolean;
830
819
  private readonly fileTypes;
820
+ private onChange;
821
+ onTouched: () => void;
822
+ writeValue(value: string | string[] | null): void;
823
+ registerOnChange(fn: (value: string | string[] | null) => void): void;
824
+ registerOnTouched(fn: () => void): void;
825
+ setDisabledState(isDisabled: boolean): void;
831
826
  ngOnChanges(changes: SimpleChanges): void;
832
827
  ngOnDestroy(): void;
833
828
  get canSelectMore(): boolean;
@@ -843,8 +838,8 @@ declare class UiPhotoInputComponent implements OnChanges, OnDestroy {
843
838
  private revokeBlobUrls;
844
839
  private resolveImageUrl;
845
840
  private isPreviewableType;
846
- static ɵfac: i0.ɵɵFactoryDeclaration<UiPhotoInputComponent, never>;
847
- static ɵcmp: i0.ɵɵComponentDeclaration<UiPhotoInputComponent, "forms-photo-input", never, { "label": { "alias": "label"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "accept": { "alias": "accept"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "limit": { "alias": "limit"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "valueChange": "valueChange"; "filesChange": "filesChange"; "uploadingChange": "uploadingChange"; }, never, never, true, never>;
841
+ static ɵfac: i0.ɵɵFactoryDeclaration<InputPhotoComponent, never>;
842
+ static ɵcmp: i0.ɵɵComponentDeclaration<InputPhotoComponent, "input-photo", never, { "label": { "alias": "label"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "accept": { "alias": "accept"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "limit": { "alias": "limit"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "valueChange": "valueChange"; "filesChange": "filesChange"; "uploadingChange": "uploadingChange"; }, never, never, true, never>;
848
843
  }
849
844
 
850
845
  interface UiPhotoGalleryEntry {
@@ -854,7 +849,7 @@ interface UiPhotoGalleryEntry {
854
849
  file?: File;
855
850
  isUploading?: boolean;
856
851
  }
857
- declare class UiPhotoGalleryFieldComponent implements OnInit, OnChanges, OnDestroy {
852
+ declare class InputPhotoGalleryComponent implements OnInit, OnChanges, OnDestroy {
858
853
  private readonly http;
859
854
  label: string;
860
855
  orderLabel: string;
@@ -879,11 +874,11 @@ declare class UiPhotoGalleryFieldComponent implements OnInit, OnChanges, OnDestr
879
874
  private emitImageIds;
880
875
  private uploadPendingImages;
881
876
  private uploadFile;
882
- static ɵfac: i0.ɵɵFactoryDeclaration<UiPhotoGalleryFieldComponent, never>;
883
- static ɵcmp: i0.ɵɵComponentDeclaration<UiPhotoGalleryFieldComponent, "forms-photo-gallery-field", never, { "label": { "alias": "label"; "required": false; }; "orderLabel": { "alias": "orderLabel"; "required": false; }; "imageIds": { "alias": "imageIds"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "afterUpload": { "alias": "afterUpload"; "required": false; }; "resolveImageUrl": { "alias": "resolveImageUrl"; "required": false; }; "notify": { "alias": "notify"; "required": false; }; }, { "imageIdsChange": "imageIdsChange"; }, never, never, true, never>;
877
+ static ɵfac: i0.ɵɵFactoryDeclaration<InputPhotoGalleryComponent, never>;
878
+ static ɵcmp: i0.ɵɵComponentDeclaration<InputPhotoGalleryComponent, "input-photo-gallery", never, { "label": { "alias": "label"; "required": false; }; "orderLabel": { "alias": "orderLabel"; "required": false; }; "imageIds": { "alias": "imageIds"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "afterUpload": { "alias": "afterUpload"; "required": false; }; "resolveImageUrl": { "alias": "resolveImageUrl"; "required": false; }; "notify": { "alias": "notify"; "required": false; }; }, { "imageIdsChange": "imageIdsChange"; }, never, never, true, never>;
884
879
  }
885
880
 
886
- declare class UiRangeSliderComponent implements OnChanges, AfterViewInit {
881
+ declare class InputRangeSliderComponent implements OnChanges, AfterViewInit {
887
882
  min: number;
888
883
  max: number;
889
884
  step: number;
@@ -912,11 +907,11 @@ declare class UiRangeSliderComponent implements OnChanges, AfterViewInit {
912
907
  private toFiniteNumber;
913
908
  private syncNativeInputs;
914
909
  private syncNativeInput;
915
- static ɵfac: i0.ɵɵFactoryDeclaration<UiRangeSliderComponent, never>;
916
- static ɵcmp: i0.ɵɵComponentDeclaration<UiRangeSliderComponent, "forms-range-slider", never, { "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "step": { "alias": "step"; "required": false; }; "startValue": { "alias": "startValue"; "required": false; }; "endValue": { "alias": "endValue"; "required": false; }; "startLabel": { "alias": "startLabel"; "required": false; }; "endLabel": { "alias": "endLabel"; "required": false; }; }, { "startValueChange": "startValueChange"; "endValueChange": "endValueChange"; "interactionEnd": "interactionEnd"; }, never, never, true, never>;
910
+ static ɵfac: i0.ɵɵFactoryDeclaration<InputRangeSliderComponent, never>;
911
+ static ɵcmp: i0.ɵɵComponentDeclaration<InputRangeSliderComponent, "input-range-slider", never, { "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "step": { "alias": "step"; "required": false; }; "startValue": { "alias": "startValue"; "required": false; }; "endValue": { "alias": "endValue"; "required": false; }; "startLabel": { "alias": "startLabel"; "required": false; }; "endLabel": { "alias": "endLabel"; "required": false; }; }, { "startValueChange": "startValueChange"; "endValueChange": "endValueChange"; "interactionEnd": "interactionEnd"; }, never, never, true, never>;
917
912
  }
918
913
 
919
- declare class UiSlugInputComponent implements ControlValueAccessor {
914
+ declare class InputSlugComponent implements ControlValueAccessor, Validator {
920
915
  label?: string;
921
916
  hint?: string;
922
917
  placeholder?: string;
@@ -925,7 +920,6 @@ declare class UiSlugInputComponent implements ControlValueAccessor {
925
920
  required: boolean;
926
921
  fullWidth: boolean;
927
922
  autocomplete: string;
928
- readonly: boolean;
929
923
  error?: string;
930
924
  invalidInput: EventEmitter<void>;
931
925
  disabled: boolean;
@@ -938,15 +932,16 @@ declare class UiSlugInputComponent implements ControlValueAccessor {
938
932
  writeValue(value: string | null): void;
939
933
  registerOnChange(fn: (value: string) => void): void;
940
934
  registerOnTouched(fn: () => void): void;
935
+ validate(control: AbstractControl): ValidationErrors | null;
941
936
  setDisabledState(isDisabled: boolean): void;
942
937
  onValueChange(target: HTMLInputElement): void;
943
938
  private normalizeSlug;
944
- static ɵfac: i0.ɵɵFactoryDeclaration<UiSlugInputComponent, never>;
945
- static ɵcmp: i0.ɵɵComponentDeclaration<UiSlugInputComponent, "forms-slug-input", never, { "label": { "alias": "label"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "required": { "alias": "required"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "error": { "alias": "error"; "required": false; }; }, { "invalidInput": "invalidInput"; }, never, never, true, never>;
939
+ static ɵfac: i0.ɵɵFactoryDeclaration<InputSlugComponent, never>;
940
+ static ɵcmp: i0.ɵɵComponentDeclaration<InputSlugComponent, "input-slug", never, { "label": { "alias": "label"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "required": { "alias": "required"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "error": { "alias": "error"; "required": false; }; }, { "invalidInput": "invalidInput"; }, never, never, true, never>;
946
941
  }
947
942
 
948
943
  type UiInputElement$1 = 'input' | 'textarea';
949
- declare class UiTextInputComponent implements ControlValueAccessor {
944
+ declare class InputTextComponent implements ControlValueAccessor, Validator {
950
945
  private readonly cdr;
951
946
  label?: string;
952
947
  hint?: string;
@@ -959,7 +954,6 @@ declare class UiTextInputComponent implements ControlValueAccessor {
959
954
  required: boolean;
960
955
  fullWidth: boolean;
961
956
  autocomplete?: string;
962
- readonly: boolean;
963
957
  pattern?: string;
964
958
  error?: string;
965
959
  actions: UiDynamicFormFieldAction[];
@@ -974,15 +968,16 @@ declare class UiTextInputComponent implements ControlValueAccessor {
974
968
  writeValue(value: string | number | null): void;
975
969
  registerOnChange(fn: (value: string | number | null) => void): void;
976
970
  registerOnTouched(fn: () => void): void;
971
+ validate(control: AbstractControl): ValidationErrors | null;
977
972
  setDisabledState(isDisabled: boolean): void;
978
973
  onValueChange(value: string): void;
979
974
  triggerAction(action: UiDynamicFormFieldAction): void;
980
- static ɵfac: i0.ɵɵFactoryDeclaration<UiTextInputComponent, never>;
981
- static ɵcmp: i0.ɵɵComponentDeclaration<UiTextInputComponent, "forms-text-input", never, { "label": { "alias": "label"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "required": { "alias": "required"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "pattern": { "alias": "pattern"; "required": false; }; "error": { "alias": "error"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; }, { "actionTriggered": "actionTriggered"; }, never, never, true, never>;
975
+ static ɵfac: i0.ɵɵFactoryDeclaration<InputTextComponent, never>;
976
+ static ɵcmp: i0.ɵɵComponentDeclaration<InputTextComponent, "input-text", never, { "label": { "alias": "label"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "required": { "alias": "required"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "pattern": { "alias": "pattern"; "required": false; }; "error": { "alias": "error"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; }, { "actionTriggered": "actionTriggered"; }, never, never, true, never>;
982
977
  }
983
978
 
984
979
  type UiInputElement = 'input' | 'textarea';
985
- declare class UiTextareaInputComponent implements ControlValueAccessor {
980
+ declare class InputTextareaComponent implements ControlValueAccessor, Validator {
986
981
  private readonly cdr;
987
982
  label?: string;
988
983
  hint?: string;
@@ -995,7 +990,6 @@ declare class UiTextareaInputComponent implements ControlValueAccessor {
995
990
  required: boolean;
996
991
  fullWidth: boolean;
997
992
  autocomplete?: string;
998
- readonly: boolean;
999
993
  pattern?: string;
1000
994
  error?: string;
1001
995
  actions: UiDynamicFormFieldAction[];
@@ -1010,12 +1004,13 @@ declare class UiTextareaInputComponent implements ControlValueAccessor {
1010
1004
  writeValue(value: string | number | null): void;
1011
1005
  registerOnChange(fn: (value: string | number | null) => void): void;
1012
1006
  registerOnTouched(fn: () => void): void;
1007
+ validate(control: AbstractControl): ValidationErrors | null;
1013
1008
  setDisabledState(isDisabled: boolean): void;
1014
1009
  onValueChange(value: string): void;
1015
1010
  triggerAction(action: UiDynamicFormFieldAction): void;
1016
- static ɵfac: i0.ɵɵFactoryDeclaration<UiTextareaInputComponent, never>;
1017
- static ɵcmp: i0.ɵɵComponentDeclaration<UiTextareaInputComponent, "forms-textarea-input", never, { "label": { "alias": "label"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "required": { "alias": "required"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "pattern": { "alias": "pattern"; "required": false; }; "error": { "alias": "error"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; }, { "actionTriggered": "actionTriggered"; }, never, never, true, never>;
1011
+ static ɵfac: i0.ɵɵFactoryDeclaration<InputTextareaComponent, never>;
1012
+ static ɵcmp: i0.ɵɵComponentDeclaration<InputTextareaComponent, "input-textarea", never, { "label": { "alias": "label"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "required": { "alias": "required"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "pattern": { "alias": "pattern"; "required": false; }; "error": { "alias": "error"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; }, { "actionTriggered": "actionTriggered"; }, never, never, true, never>;
1018
1013
  }
1019
1014
 
1020
- export { ACTION_API, ACTION_FORM, ACTION_PRINT, ACTION_SUBMIT, MaroFormsApiService, UI_DYNAMIC_FORM_OPTIONS_SOURCE_RESOLVERS, UI_FORM_INPUT_REGISTRY, UiActionFormModalComponent, UiBarcodeScannerInputComponent, UiCheckboxInputComponent, UiColorInputComponent, UiDateInputComponent, UiDatetimeInputComponent, UiDynamicFormComponent, UiEmailInputComponent, UiFileInputComponent, UiFormContext, UiFormInputHostComponent, UiFormLookupService, UiInputComponent, UiNumberInputComponent, UiPasswordInputComponent, UiPhotoGalleryFieldComponent, UiPhotoInputComponent, UiRangeSliderComponent, UiSelectComponent, UiSlugInputComponent, UiTextInputComponent, UiTextareaInputComponent, flattenDynamicFormFields, isDynamicFormContainerField, isDynamicFormTemplateField };
1021
- export type { ActionType, ApiPluginMethod, MaroFormViewAction, MaroFormViewResponse, UiDynamicFieldType, UiDynamicFormBaseField, UiDynamicFormContainerField, UiDynamicFormField, UiDynamicFormFieldAction, UiDynamicFormOptionsSourceContext, UiDynamicFormOptionsSourceResolver, UiDynamicFormTemplateField, UiDynamicFormValue, UiFormErrors, UiFormInputType, UiFormSubmitState, UiFormValue, UiPhotoGalleryEntry, UiPhotoPreview, UiSelectOption, UiSelectValue };
1015
+ export { ACTION_API, ACTION_FORM, ACTION_PRINT, ACTION_SUBMIT, DynamicFormComponent, FieldInputComponent, FormModalComponent, InputBarcodeComponent, InputCheckboxComponent, InputColorComponent, InputComponent, InputDateComponent, InputDatetimeComponent, InputEmailComponent, InputFileComponent, InputNumberComponent, InputPasswordComponent, InputPhotoComponent, InputPhotoGalleryComponent, InputRangeSliderComponent, InputSelectComponent, InputSlugComponent, InputTextComponent, InputTextareaComponent, MaroFormsApiService, UI_FORM_INPUT_REGISTRY, UiFormContext, UiFormLookupService, flattenDynamicFormFields, isDynamicFormContainerField, isDynamicFormTemplateField };
1016
+ export type { ActionType, ApiPluginMethod, MaroFormViewAction, MaroFormViewResponse, UiDynamicFieldType, UiDynamicFormBaseField, UiDynamicFormContainerField, UiDynamicFormField, UiDynamicFormFieldAction, UiDynamicFormTemplateField, UiDynamicFormValue, UiFormErrors, UiFormInputType, UiFormSubmitState, UiFormValue, UiPhotoGalleryEntry, UiPhotoPreview, UiSelectOption, UiSelectValue };