@maro-tech/form 0.0.17 → 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>;
@@ -367,36 +340,38 @@ declare class UiActionFormModalComponent implements OnChanges {
367
340
  private extractData;
368
341
  private navigateAfterSubmit;
369
342
  private resolveTemplate;
370
- static ɵfac: i0.ɵɵFactoryDeclaration<UiActionFormModalComponent, never>;
371
- 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>;
372
345
  }
373
346
 
374
- declare class UiFormInputHostComponent implements OnChanges {
347
+ declare class FieldInputComponent implements OnChanges, AfterViewInit {
375
348
  field: UiDynamicFormField;
376
349
  value: UiDynamicFormValue[string];
377
350
  error: string;
378
351
  disabled: boolean;
379
352
  actions: UiDynamicFormFieldAction[];
380
- options: Array<{
381
- label: string;
382
- value: string | null;
383
- disabled?: boolean;
384
- }>;
385
353
  valueChange: EventEmitter<unknown>;
386
354
  actionTriggered: EventEmitter<UiDynamicFormFieldAction>;
387
- private readonly viewContainer;
355
+ lookupRequested: EventEmitter<void>;
356
+ barcodeScanned: EventEmitter<string>;
357
+ filesChange: EventEmitter<File[]>;
358
+ uploadingChange: EventEmitter<boolean>;
359
+ private inputContainer?;
388
360
  private componentRef?;
361
+ private readonly fallbackViewContainer;
362
+ private viewReady;
363
+ ngAfterViewInit(): void;
389
364
  ngOnChanges(changes: SimpleChanges): void;
390
365
  private render;
391
366
  private syncInputs;
392
- static ɵfac: i0.ɵɵFactoryDeclaration<UiFormInputHostComponent, never>;
393
- 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>;
394
369
  }
395
370
 
396
- 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';
397
372
  declare const UI_FORM_INPUT_REGISTRY: Record<UiFormInputType, Type<unknown>>;
398
373
 
399
- declare class UiBarcodeScannerInputComponent implements OnChanges, AfterViewInit, OnDestroy {
374
+ declare class InputBarcodeComponent implements OnChanges, AfterViewInit, OnDestroy {
400
375
  readonly value: i0.InputSignal<string>;
401
376
  readonly label: i0.InputSignal<string>;
402
377
  readonly placeholder: i0.InputSignal<string>;
@@ -439,21 +414,27 @@ declare class UiBarcodeScannerInputComponent implements OnChanges, AfterViewInit
439
414
  private openZxingCamera;
440
415
  private scheduleNativeScan;
441
416
  private createNativeBarcodeDetector;
442
- static ɵfac: i0.ɵɵFactoryDeclaration<UiBarcodeScannerInputComponent, never>;
443
- 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>;
444
419
  }
445
420
 
446
- declare class UiCheckboxInputComponent {
421
+ declare class InputCheckboxComponent implements ControlValueAccessor {
447
422
  label?: string;
448
423
  disabled: boolean;
449
424
  value: boolean;
450
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;
451
432
  onValueChange(event: Event): void;
452
- static ɵfac: i0.ɵɵFactoryDeclaration<UiCheckboxInputComponent, never>;
453
- 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>;
454
435
  }
455
436
 
456
- declare class UiColorInputComponent implements ControlValueAccessor {
437
+ declare class InputColorComponent implements ControlValueAccessor, Validator {
457
438
  private readonly cdr;
458
439
  label?: string;
459
440
  hint?: string;
@@ -473,14 +454,15 @@ declare class UiColorInputComponent implements ControlValueAccessor {
473
454
  writeValue(value: string | null): void;
474
455
  registerOnChange(fn: (value: string) => void): void;
475
456
  registerOnTouched(fn: () => void): void;
457
+ validate(control: AbstractControl): ValidationErrors | null;
476
458
  setDisabledState(isDisabled: boolean): void;
477
459
  onPickerChange(value: string): void;
478
460
  onHexInput(value: string): void;
479
461
  markTouched(): void;
480
462
  private normalizeHexInput;
481
463
  private isColorValue;
482
- static ɵfac: i0.ɵɵFactoryDeclaration<UiColorInputComponent, never>;
483
- 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>;
484
466
  }
485
467
 
486
468
  type UiInputElement$6 = 'input' | 'textarea';
@@ -490,7 +472,7 @@ interface CalendarDay$1 {
490
472
  currentMonth: boolean;
491
473
  }
492
474
  type CalendarView$1 = 'days' | 'months' | 'years';
493
- declare class UiDateInputComponent implements ControlValueAccessor {
475
+ declare class InputDateComponent implements ControlValueAccessor, Validator {
494
476
  private readonly cdr;
495
477
  private readonly popupService;
496
478
  private readonly closeActivePopup;
@@ -508,7 +490,6 @@ declare class UiDateInputComponent implements ControlValueAccessor {
508
490
  required: boolean;
509
491
  fullWidth: boolean;
510
492
  autocomplete: string;
511
- readonly: boolean;
512
493
  pattern?: string;
513
494
  error?: string;
514
495
  actions: UiDynamicFormFieldAction[];
@@ -550,6 +531,7 @@ declare class UiDateInputComponent implements ControlValueAccessor {
550
531
  onEscape(): void;
551
532
  registerOnChange(fn: (value: string | number | null) => void): void;
552
533
  registerOnTouched(fn: () => void): void;
534
+ validate(control: AbstractControl): ValidationErrors | null;
553
535
  setDisabledState(isDisabled: boolean): void;
554
536
  onValueChange(value: string): void;
555
537
  allowDateKey(event: KeyboardEvent): void;
@@ -559,8 +541,8 @@ declare class UiDateInputComponent implements ControlValueAccessor {
559
541
  private parseDate;
560
542
  private parseInputDate;
561
543
  private toDateValue;
562
- static ɵfac: i0.ɵɵFactoryDeclaration<UiDateInputComponent, never>;
563
- 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>;
564
546
  }
565
547
 
566
548
  interface CalendarDay {
@@ -569,7 +551,7 @@ interface CalendarDay {
569
551
  currentMonth: boolean;
570
552
  }
571
553
  type CalendarView = 'days' | 'months' | 'years';
572
- declare class UiDatetimeInputComponent implements ControlValueAccessor {
554
+ declare class InputDatetimeComponent implements ControlValueAccessor, Validator {
573
555
  private readonly cdr;
574
556
  private readonly popupService;
575
557
  private readonly closeActivePopup;
@@ -582,7 +564,6 @@ declare class UiDatetimeInputComponent implements ControlValueAccessor {
582
564
  required: boolean;
583
565
  fullWidth: boolean;
584
566
  autocomplete: string;
585
- readonly: boolean;
586
567
  pattern?: string;
587
568
  error?: string;
588
569
  actions: UiDynamicFormFieldAction[];
@@ -616,6 +597,7 @@ declare class UiDatetimeInputComponent implements ControlValueAccessor {
616
597
  writeValue(value: string | number | null): void;
617
598
  registerOnChange(fn: (value: string | number | null) => void): void;
618
599
  registerOnTouched(fn: () => void): void;
600
+ validate(control: AbstractControl): ValidationErrors | null;
619
601
  setDisabledState(disabled: boolean): void;
620
602
  openCalendar(event: Event): void;
621
603
  closeCalendar(): void;
@@ -639,12 +621,12 @@ declare class UiDatetimeInputComponent implements ControlValueAccessor {
639
621
  private startOfMonth;
640
622
  private parseDate;
641
623
  private toDateValue;
642
- static ɵfac: i0.ɵɵFactoryDeclaration<UiDatetimeInputComponent, never>;
643
- 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>;
644
626
  }
645
627
 
646
628
  type UiInputElement$5 = 'input' | 'textarea';
647
- declare class UiEmailInputComponent implements ControlValueAccessor {
629
+ declare class InputEmailComponent implements ControlValueAccessor, Validator {
648
630
  private readonly cdr;
649
631
  label?: string;
650
632
  hint?: string;
@@ -657,7 +639,6 @@ declare class UiEmailInputComponent implements ControlValueAccessor {
657
639
  required: boolean;
658
640
  fullWidth: boolean;
659
641
  autocomplete?: string;
660
- readonly: boolean;
661
642
  pattern?: string;
662
643
  error?: string;
663
644
  actions: UiDynamicFormFieldAction[];
@@ -672,14 +653,15 @@ declare class UiEmailInputComponent implements ControlValueAccessor {
672
653
  writeValue(value: string | number | null): void;
673
654
  registerOnChange(fn: (value: string | number | null) => void): void;
674
655
  registerOnTouched(fn: () => void): void;
656
+ validate(control: AbstractControl): ValidationErrors | null;
675
657
  setDisabledState(isDisabled: boolean): void;
676
658
  onValueChange(value: string): void;
677
659
  triggerAction(action: UiDynamicFormFieldAction): void;
678
- static ɵfac: i0.ɵɵFactoryDeclaration<UiEmailInputComponent, never>;
679
- 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>;
680
662
  }
681
663
 
682
- declare class UiFileInputComponent {
664
+ declare class InputFileComponent implements ControlValueAccessor {
683
665
  label?: string;
684
666
  hint?: string;
685
667
  accept?: string;
@@ -688,15 +670,21 @@ declare class UiFileInputComponent {
688
670
  value: File | File[] | null;
689
671
  valueChange: EventEmitter<File | File[] | null>;
690
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;
691
679
  get selectedFiles(): File[];
692
680
  onFilesSelected(event: Event): void;
693
681
  remove(index: number): void;
694
- static ɵfac: i0.ɵɵFactoryDeclaration<UiFileInputComponent, never>;
695
- 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>;
696
684
  }
697
685
 
698
686
  type UiInputElement$4 = 'input' | 'textarea';
699
- declare class UiInputComponent implements ControlValueAccessor {
687
+ declare class InputComponent implements ControlValueAccessor {
700
688
  private readonly cdr;
701
689
  label?: string;
702
690
  hint?: string;
@@ -709,7 +697,6 @@ declare class UiInputComponent implements ControlValueAccessor {
709
697
  required: boolean;
710
698
  fullWidth: boolean;
711
699
  autocomplete?: string;
712
- readonly: boolean;
713
700
  pattern?: string;
714
701
  error?: string;
715
702
  actions: UiDynamicFormFieldAction[];
@@ -727,12 +714,12 @@ declare class UiInputComponent implements ControlValueAccessor {
727
714
  setDisabledState(isDisabled: boolean): void;
728
715
  onValueChange(value: string): void;
729
716
  triggerAction(action: UiDynamicFormFieldAction): void;
730
- static ɵfac: i0.ɵɵFactoryDeclaration<UiInputComponent, never>;
731
- 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>;
732
719
  }
733
720
 
734
721
  type UiInputElement$3 = 'input' | 'textarea';
735
- declare class UiNumberInputComponent implements ControlValueAccessor {
722
+ declare class InputNumberComponent implements ControlValueAccessor, Validator {
736
723
  private readonly cdr;
737
724
  label?: string;
738
725
  hint?: string;
@@ -745,7 +732,6 @@ declare class UiNumberInputComponent implements ControlValueAccessor {
745
732
  required: boolean;
746
733
  fullWidth: boolean;
747
734
  autocomplete?: string;
748
- readonly: boolean;
749
735
  disabled: boolean;
750
736
  pattern?: string;
751
737
  error?: string;
@@ -760,16 +746,17 @@ declare class UiNumberInputComponent implements ControlValueAccessor {
760
746
  writeValue(value: string | number | null): void;
761
747
  registerOnChange(fn: (value: string | number | null) => void): void;
762
748
  registerOnTouched(fn: () => void): void;
749
+ validate(control: AbstractControl): ValidationErrors | null;
763
750
  setDisabledState(isDisabled: boolean): void;
764
751
  onValueChange(value: string): void;
765
752
  preventWheelChange(event: WheelEvent): void;
766
753
  triggerAction(action: UiDynamicFormFieldAction): void;
767
- static ɵfac: i0.ɵɵFactoryDeclaration<UiNumberInputComponent, never>;
768
- 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>;
769
756
  }
770
757
 
771
758
  type UiInputElement$2 = 'input' | 'textarea';
772
- declare class UiPasswordInputComponent implements ControlValueAccessor {
759
+ declare class InputPasswordComponent implements ControlValueAccessor, Validator {
773
760
  private readonly cdr;
774
761
  label?: string;
775
762
  hint?: string;
@@ -784,7 +771,6 @@ declare class UiPasswordInputComponent implements ControlValueAccessor {
784
771
  required: boolean;
785
772
  fullWidth: boolean;
786
773
  autocomplete?: string;
787
- readonly: boolean;
788
774
  pattern?: string;
789
775
  error?: string;
790
776
  actions: UiDynamicFormFieldAction[];
@@ -800,12 +786,13 @@ declare class UiPasswordInputComponent implements ControlValueAccessor {
800
786
  writeValue(value: string | number | null): void;
801
787
  registerOnChange(fn: (value: string | number | null) => void): void;
802
788
  registerOnTouched(fn: () => void): void;
789
+ validate(control: AbstractControl): ValidationErrors | null;
803
790
  setDisabledState(isDisabled: boolean): void;
804
791
  onValueChange(value: string): void;
805
792
  togglePassword(event: Event): void;
806
793
  triggerAction(action: UiDynamicFormFieldAction): void;
807
- static ɵfac: i0.ɵɵFactoryDeclaration<UiPasswordInputComponent, never>;
808
- 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>;
809
796
  }
810
797
 
811
798
  interface UiPhotoPreview {
@@ -814,7 +801,7 @@ interface UiPhotoPreview {
814
801
  isImage: boolean;
815
802
  source: 'file' | 'id';
816
803
  }
817
- declare class UiPhotoInputComponent implements OnChanges, OnDestroy {
804
+ declare class InputPhotoComponent implements OnChanges, OnDestroy, ControlValueAccessor {
818
805
  private readonly http;
819
806
  label?: string;
820
807
  hint?: string;
@@ -830,6 +817,12 @@ declare class UiPhotoInputComponent implements OnChanges, OnDestroy {
830
817
  previews: UiPhotoPreview[];
831
818
  uploading: boolean;
832
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;
833
826
  ngOnChanges(changes: SimpleChanges): void;
834
827
  ngOnDestroy(): void;
835
828
  get canSelectMore(): boolean;
@@ -845,8 +838,8 @@ declare class UiPhotoInputComponent implements OnChanges, OnDestroy {
845
838
  private revokeBlobUrls;
846
839
  private resolveImageUrl;
847
840
  private isPreviewableType;
848
- static ɵfac: i0.ɵɵFactoryDeclaration<UiPhotoInputComponent, never>;
849
- 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>;
850
843
  }
851
844
 
852
845
  interface UiPhotoGalleryEntry {
@@ -856,7 +849,7 @@ interface UiPhotoGalleryEntry {
856
849
  file?: File;
857
850
  isUploading?: boolean;
858
851
  }
859
- declare class UiPhotoGalleryFieldComponent implements OnInit, OnChanges, OnDestroy {
852
+ declare class InputPhotoGalleryComponent implements OnInit, OnChanges, OnDestroy {
860
853
  private readonly http;
861
854
  label: string;
862
855
  orderLabel: string;
@@ -881,11 +874,11 @@ declare class UiPhotoGalleryFieldComponent implements OnInit, OnChanges, OnDestr
881
874
  private emitImageIds;
882
875
  private uploadPendingImages;
883
876
  private uploadFile;
884
- static ɵfac: i0.ɵɵFactoryDeclaration<UiPhotoGalleryFieldComponent, never>;
885
- 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>;
886
879
  }
887
880
 
888
- declare class UiRangeSliderComponent implements OnChanges, AfterViewInit {
881
+ declare class InputRangeSliderComponent implements OnChanges, AfterViewInit {
889
882
  min: number;
890
883
  max: number;
891
884
  step: number;
@@ -914,11 +907,11 @@ declare class UiRangeSliderComponent implements OnChanges, AfterViewInit {
914
907
  private toFiniteNumber;
915
908
  private syncNativeInputs;
916
909
  private syncNativeInput;
917
- static ɵfac: i0.ɵɵFactoryDeclaration<UiRangeSliderComponent, never>;
918
- 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>;
919
912
  }
920
913
 
921
- declare class UiSlugInputComponent implements ControlValueAccessor {
914
+ declare class InputSlugComponent implements ControlValueAccessor, Validator {
922
915
  label?: string;
923
916
  hint?: string;
924
917
  placeholder?: string;
@@ -927,7 +920,6 @@ declare class UiSlugInputComponent implements ControlValueAccessor {
927
920
  required: boolean;
928
921
  fullWidth: boolean;
929
922
  autocomplete: string;
930
- readonly: boolean;
931
923
  error?: string;
932
924
  invalidInput: EventEmitter<void>;
933
925
  disabled: boolean;
@@ -940,15 +932,16 @@ declare class UiSlugInputComponent implements ControlValueAccessor {
940
932
  writeValue(value: string | null): void;
941
933
  registerOnChange(fn: (value: string) => void): void;
942
934
  registerOnTouched(fn: () => void): void;
935
+ validate(control: AbstractControl): ValidationErrors | null;
943
936
  setDisabledState(isDisabled: boolean): void;
944
937
  onValueChange(target: HTMLInputElement): void;
945
938
  private normalizeSlug;
946
- static ɵfac: i0.ɵɵFactoryDeclaration<UiSlugInputComponent, never>;
947
- 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>;
948
941
  }
949
942
 
950
943
  type UiInputElement$1 = 'input' | 'textarea';
951
- declare class UiTextInputComponent implements ControlValueAccessor {
944
+ declare class InputTextComponent implements ControlValueAccessor, Validator {
952
945
  private readonly cdr;
953
946
  label?: string;
954
947
  hint?: string;
@@ -961,7 +954,6 @@ declare class UiTextInputComponent implements ControlValueAccessor {
961
954
  required: boolean;
962
955
  fullWidth: boolean;
963
956
  autocomplete?: string;
964
- readonly: boolean;
965
957
  pattern?: string;
966
958
  error?: string;
967
959
  actions: UiDynamicFormFieldAction[];
@@ -976,15 +968,16 @@ declare class UiTextInputComponent implements ControlValueAccessor {
976
968
  writeValue(value: string | number | null): void;
977
969
  registerOnChange(fn: (value: string | number | null) => void): void;
978
970
  registerOnTouched(fn: () => void): void;
971
+ validate(control: AbstractControl): ValidationErrors | null;
979
972
  setDisabledState(isDisabled: boolean): void;
980
973
  onValueChange(value: string): void;
981
974
  triggerAction(action: UiDynamicFormFieldAction): void;
982
- static ɵfac: i0.ɵɵFactoryDeclaration<UiTextInputComponent, never>;
983
- 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>;
984
977
  }
985
978
 
986
979
  type UiInputElement = 'input' | 'textarea';
987
- declare class UiTextareaInputComponent implements ControlValueAccessor {
980
+ declare class InputTextareaComponent implements ControlValueAccessor, Validator {
988
981
  private readonly cdr;
989
982
  label?: string;
990
983
  hint?: string;
@@ -997,7 +990,6 @@ declare class UiTextareaInputComponent implements ControlValueAccessor {
997
990
  required: boolean;
998
991
  fullWidth: boolean;
999
992
  autocomplete?: string;
1000
- readonly: boolean;
1001
993
  pattern?: string;
1002
994
  error?: string;
1003
995
  actions: UiDynamicFormFieldAction[];
@@ -1012,12 +1004,13 @@ declare class UiTextareaInputComponent implements ControlValueAccessor {
1012
1004
  writeValue(value: string | number | null): void;
1013
1005
  registerOnChange(fn: (value: string | number | null) => void): void;
1014
1006
  registerOnTouched(fn: () => void): void;
1007
+ validate(control: AbstractControl): ValidationErrors | null;
1015
1008
  setDisabledState(isDisabled: boolean): void;
1016
1009
  onValueChange(value: string): void;
1017
1010
  triggerAction(action: UiDynamicFormFieldAction): void;
1018
- static ɵfac: i0.ɵɵFactoryDeclaration<UiTextareaInputComponent, never>;
1019
- 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>;
1020
1013
  }
1021
1014
 
1022
- 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 };
1023
- 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 };