@decaf-ts/for-angular 0.0.3 → 0.0.5

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.
Files changed (87) hide show
  1. package/LICENSE.md +659 -21
  2. package/README.md +37 -242
  3. package/dist/lib/README.md +92 -0
  4. package/dist/lib/assets/i18n/en.json +131 -0
  5. package/dist/lib/assets/images/angular-logo.svg +45 -0
  6. package/dist/lib/assets/images/decaf-logo-black.svg +22 -0
  7. package/dist/lib/assets/images/decaf-logo-lw.svg +50 -0
  8. package/dist/lib/assets/images/decaf-logo-white.svg +22 -0
  9. package/dist/lib/assets/images/decaf-logo.svg +54 -0
  10. package/dist/lib/components/component-renderer/component-renderer.component.d.ts +267 -0
  11. package/dist/lib/components/crud-field/crud-field.component.d.ts +447 -0
  12. package/dist/lib/components/crud-form/crud-form.component.d.ts +102 -0
  13. package/dist/lib/components/model-renderer/model-renderer.component.d.ts +97 -0
  14. package/dist/lib/engine/DynamicModule.d.ts +17 -0
  15. package/dist/{for-angular → lib}/engine/NgxCrudFormField.d.ts +37 -30
  16. package/dist/lib/engine/NgxFormService.d.ts +167 -0
  17. package/dist/lib/engine/NgxRenderingEngine.d.ts +128 -0
  18. package/dist/lib/engine/NgxRenderingEngine2.d.ts +251 -0
  19. package/dist/lib/engine/ValidatorFactory.d.ts +15 -0
  20. package/dist/lib/engine/constants.d.ts +151 -0
  21. package/dist/lib/engine/decorators.d.ts +25 -0
  22. package/dist/lib/engine/index.d.ts +15 -0
  23. package/dist/lib/engine/types.d.ts +293 -0
  24. package/dist/lib/esm2022/components/component-renderer/component-renderer.component.mjs +309 -0
  25. package/dist/lib/esm2022/components/crud-field/crud-field.component.mjs +288 -0
  26. package/dist/lib/esm2022/components/crud-form/constants.mjs +14 -0
  27. package/dist/lib/esm2022/components/crud-form/crud-form.component.mjs +140 -0
  28. package/dist/lib/esm2022/components/crud-form/types.mjs +2 -0
  29. package/dist/lib/esm2022/components/model-renderer/model-renderer.component.mjs +137 -0
  30. package/dist/lib/esm2022/engine/DynamicModule.mjs +18 -0
  31. package/dist/lib/esm2022/engine/NgxCrudFormField.mjs +117 -0
  32. package/dist/lib/esm2022/engine/NgxFormService.mjs +315 -0
  33. package/dist/lib/esm2022/engine/NgxRenderingEngine.mjs +194 -0
  34. package/dist/lib/esm2022/engine/NgxRenderingEngine2.mjs +333 -0
  35. package/dist/lib/esm2022/engine/ValidatorFactory.mjs +102 -0
  36. package/dist/lib/esm2022/engine/constants.mjs +160 -0
  37. package/dist/lib/esm2022/engine/decorators.mjs +38 -0
  38. package/dist/lib/esm2022/engine/index.mjs +16 -0
  39. package/dist/lib/esm2022/engine/types.mjs +2 -0
  40. package/dist/lib/esm2022/for-angular.module.mjs +118 -0
  41. package/dist/lib/esm2022/interfaces.mjs +2 -0
  42. package/dist/lib/esm2022/public-apis.mjs +13 -0
  43. package/dist/lib/fesm2022/decaf-ts-for-angular.mjs +2138 -0
  44. package/dist/lib/fesm2022/decaf-ts-for-angular.mjs.map +1 -0
  45. package/dist/lib/for-angular.module.d.ts +44 -0
  46. package/dist/lib/interfaces.d.ts +28 -0
  47. package/dist/lib/public-apis.d.ts +12 -0
  48. package/package.json +74 -25
  49. package/dist/for-angular/README.md +0 -297
  50. package/dist/for-angular/assets/i18n/en.json +0 -21
  51. package/dist/for-angular/components/decaf-crud-field/decaf-crud-field.component.d.ts +0 -22
  52. package/dist/for-angular/components/decaf-crud-form/decaf-crud-form.component.d.ts +0 -28
  53. package/dist/for-angular/components/decaf-model-renderer/decaf-model-renderer.component.d.ts +0 -20
  54. package/dist/for-angular/directives/decaf-field.directive.d.ts +0 -8
  55. package/dist/for-angular/engine/DynamicModule.d.ts +0 -2
  56. package/dist/for-angular/engine/NgxFormService.d.ts +0 -119
  57. package/dist/for-angular/engine/NgxRenderingEngine.d.ts +0 -17
  58. package/dist/for-angular/engine/ValidatorFactory.d.ts +0 -4
  59. package/dist/for-angular/engine/constants.d.ts +0 -10
  60. package/dist/for-angular/engine/decorators.d.ts +0 -1
  61. package/dist/for-angular/engine/index.d.ts +0 -5
  62. package/dist/for-angular/engine/types.d.ts +0 -32
  63. package/dist/for-angular/esm2022/components/decaf-crud-field/decaf-crud-field.component.mjs +0 -66
  64. package/dist/for-angular/esm2022/components/decaf-crud-form/constants.mjs +0 -14
  65. package/dist/for-angular/esm2022/components/decaf-crud-form/decaf-crud-form.component.mjs +0 -84
  66. package/dist/for-angular/esm2022/components/decaf-crud-form/types.mjs +0 -2
  67. package/dist/for-angular/esm2022/components/decaf-model-renderer/decaf-model-renderer.component.mjs +0 -46
  68. package/dist/for-angular/esm2022/directives/decaf-field.directive.mjs +0 -23
  69. package/dist/for-angular/esm2022/engine/DynamicModule.mjs +0 -3
  70. package/dist/for-angular/esm2022/engine/NgxCrudFormField.mjs +0 -118
  71. package/dist/for-angular/esm2022/engine/NgxFormService.mjs +0 -232
  72. package/dist/for-angular/esm2022/engine/NgxRenderingEngine.mjs +0 -35
  73. package/dist/for-angular/esm2022/engine/ValidatorFactory.mjs +0 -48
  74. package/dist/for-angular/esm2022/engine/constants.mjs +0 -12
  75. package/dist/for-angular/esm2022/engine/decorators.mjs +0 -17
  76. package/dist/for-angular/esm2022/engine/index.mjs +0 -6
  77. package/dist/for-angular/esm2022/engine/types.mjs +0 -2
  78. package/dist/for-angular/esm2022/interfaces.mjs +0 -2
  79. package/dist/for-angular/esm2022/public-apis.mjs +0 -5
  80. package/dist/for-angular/fesm2022/decaf-ts-for-angular.mjs +0 -675
  81. package/dist/for-angular/fesm2022/decaf-ts-for-angular.mjs.map +0 -1
  82. package/dist/for-angular/interfaces.d.ts +0 -8
  83. package/dist/for-angular/public-apis.d.ts +0 -4
  84. /package/dist/{for-angular/components/decaf-crud-form → lib/components/crud-form}/constants.d.ts +0 -0
  85. /package/dist/{for-angular/components/decaf-crud-form → lib/components/crud-form}/types.d.ts +0 -0
  86. /package/dist/{for-angular → lib}/esm2022/decaf-ts-for-angular.mjs +0 -0
  87. /package/dist/{for-angular → lib}/index.d.ts +0 -0
@@ -1,119 +0,0 @@
1
- import { FieldProperties } from '@decaf-ts/ui-decorators';
2
- import { AngularFieldDefinition, FieldUpdateMode } from './types';
3
- import { FormGroup } from '@angular/forms';
4
- import { FormElement } from '../interfaces';
5
- /**
6
- * @summary Service for managing Angular forms and form controls.
7
- * @description
8
- * The NgxFormService provides utility methods for handling form initialization,
9
- * validation, data retrieval, and form control management in Angular applications.
10
- * It offers a centralized way to manage form controls, perform validations, and
11
- * handle form-related operations.
12
- */
13
- export declare class NgxFormService {
14
- /**
15
- * @summary Storage for form controls.
16
- * @description
17
- * A static object that stores form controls indexed by form ID and field name.
18
- * @type {Record<string, Record<string, { control: FormGroup; props: AngularFieldDefinition }>>}
19
- */
20
- private static controls;
21
- private constructor();
22
- /**
23
- * Initializes the form after the view has been initialized.
24
- * This method sets up the form controls and creates a FormGroup.
25
- *
26
- * @param el - The form element to initialize.
27
- * @param formId - The unique identifier for the form.
28
- * @param formUpdateMode - The update mode for the form. Defaults to 'blur'.
29
- */
30
- /**
31
- * @summary Initializes the form after view initialization.
32
- * @description
33
- * Sets up form controls and creates a FormGroup for the given form element.
34
- *
35
- * @param {FormElement} el - The form element to initialize.
36
- * @param {string} formId - The unique identifier for the form.
37
- * @param {FieldUpdateMode} [formUpdateMode='blur'] - The update mode for the form.
38
- */
39
- static formAfterViewInit(el: FormElement, formId: string, formUpdateMode?: FieldUpdateMode): void;
40
- /**
41
- * @summary Handles form component destruction.
42
- * @description
43
- * Unregisters the form from the service when the component is destroyed.
44
- *
45
- * @param {FormElement} el - The form element being destroyed.
46
- * @param {string} formId - The unique identifier of the form to unregister.
47
- */
48
- static forOnDestroy(el: FormElement, formId: string): void;
49
- /**
50
- * @summary Retrieves form data for a given form ID.
51
- * @description
52
- * Processes form controls and returns their values as an object.
53
- *
54
- * @param {string} formId - The unique identifier of the form to retrieve data from.
55
- * @returns {Record<string, unknown>} An object containing the form data.
56
- * @throws {Error} If the form with the given ID is not found.
57
- */
58
- static getFormData(formId: string): Record<string, unknown>;
59
- /**
60
- * @summary Validates form fields.
61
- * @description
62
- * Validates either a specific field or all fields in the form group.
63
- *
64
- * @param {FormGroup} formGroup - The FormGroup to validate.
65
- * @param {string} [fieldName] - Optional name of a specific field to validate.
66
- * @returns {boolean} Indicates whether the validation passed (true) or failed (false).
67
- */
68
- static validateFields(formGroup: FormGroup, fieldName?: string): boolean;
69
- /**
70
- * @summary Creates a FormGroup from field properties.
71
- * @description
72
- * Generates a new FormGroup instance based on the provided field definition and update mode.
73
- *
74
- * @param {AngularFieldDefinition} props - The Angular field definition properties.
75
- * @param {FieldUpdateMode} updateMode - The update mode for the form group.
76
- * @returns {FormGroup} A new FormGroup instance.
77
- */
78
- static fromProps(props: AngularFieldDefinition, updateMode: FieldUpdateMode): FormGroup;
79
- /**
80
- * Retrieves a form by its ID from the stored controls.
81
- *
82
- * @param id - The unique identifier of the form to retrieve.
83
- * @returns The form controls associated with the given ID.
84
- * @throws Error if the form with the given ID is not found.
85
- */
86
- private static getFormById;
87
- /**
88
- * Retrieves a specific field from a form by its name.
89
- *
90
- * @param formId - The unique identifier of the form.
91
- * @param name - The name of the field to retrieve.
92
- * @returns The field control and properties.
93
- * @throws Error if the field is not found in the form.
94
- */
95
- private static getFieldByName;
96
- /**
97
- * Generates an array of validator functions from the provided field properties.
98
- *
99
- * @param props - The field properties containing validation rules.
100
- * @returns An array of ValidatorFn instances.
101
- */
102
- private static validatorsFromProps;
103
- /**
104
- *
105
- * @param el
106
- * @param tag
107
- *
108
- * @throws {Error} when no parent exists with the provided tag
109
- */
110
- static getParentEl(el: HTMLElement, tag: string): HTMLElement;
111
- static register(formId: string, control: FormGroup, props: FieldProperties & AngularFieldDefinition): void;
112
- /**
113
- * Unregisters a form or a specific field from the service.
114
- *
115
- * @param formId - The unique identifier of the form.
116
- * @param field - Optional. The specific field to unregister. If not provided, the entire form is unregistered.
117
- */
118
- static unregister(formId: string, field?: HTMLElement): void;
119
- }
@@ -1,17 +0,0 @@
1
- import { RenderingEngine } from '@decaf-ts/ui-decorators';
2
- import { AngularFieldDefinition, ComponentMetadata } from './types';
3
- import { Constructor } from '@decaf-ts/decorator-validation';
4
- export declare class NgxRenderingEngine extends RenderingEngine<AngularFieldDefinition> {
5
- private static _components;
6
- constructor();
7
- initialize(...args: any[]): Promise<void>;
8
- static registerComponent(name: string, constructor: Constructor<unknown>, metadata: ComponentMetadata): void;
9
- static components(selector?: string): {
10
- constructor: Constructor<unknown>;
11
- metadata: ComponentMetadata;
12
- } | {
13
- constructor: Constructor<unknown>;
14
- metadata: ComponentMetadata;
15
- }[];
16
- static key(key: string): string;
17
- }
@@ -1,4 +0,0 @@
1
- import { ValidatorFn } from '@angular/forms';
2
- export declare class ValidatorFactory {
3
- static spawn(key: string, arg: unknown): ValidatorFn;
4
- }
@@ -1,10 +0,0 @@
1
- export declare const AngularEngineKeys: {
2
- REFLECT: string;
3
- DYNAMIC: string;
4
- ANNOTATIONS: string;
5
- NG_REFLECT: string;
6
- };
7
- export declare const FormConstants: {
8
- VALID: string;
9
- INVALID: string;
10
- };
@@ -1 +0,0 @@
1
- export declare function Dynamic(): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
@@ -1,5 +0,0 @@
1
- export * from './constants';
2
- export * from './decorators';
3
- export * from './DynamicModule';
4
- export * from './NgxRenderingEngine';
5
- export * from './types';
@@ -1,32 +0,0 @@
1
- import { FieldProperties } from '@decaf-ts/ui-decorators';
2
- import { IonCheckbox, IonInput, IonSelect, IonTextarea } from '@ionic/angular';
3
- import { TextFieldTypes } from '@ionic/core';
4
- export type FieldUpdateMode = 'change' | 'blur' | 'submit';
5
- export interface ComponentMetadata {
6
- changeDetection: number;
7
- selector: string;
8
- standalone: boolean;
9
- imports: (new (...args: unknown[]) => unknown)[];
10
- template: string;
11
- styles: string[];
12
- }
13
- export type AngularFieldDefinition = FieldProperties & Omit<IonInput, 'ionInput' | 'ionFocus' | 'ionChange' | 'ionBlur' | 'getInputElement' | 'setFocus' | 'label' | 'el' | 'z' | 'type'> & Pick<IonSelect, 'cancelText' | 'interface' | 'selectedText' | 'interfaceOptions'> & Pick<IonTextarea, 'rows' | 'cols'> & Pick<IonCheckbox, 'alignment' | 'justify' | 'checked'> & {
14
- type: 'checkbox' | 'radio' | 'select' | TextFieldTypes | 'textarea';
15
- className: string | string[];
16
- } & Record<string, unknown>;
17
- export type StringOrBoolean = 'true' | 'false' | boolean;
18
- export type SelectOption = InputOption & {
19
- selected?: boolean;
20
- };
21
- export type CheckboxOption = RadioOption;
22
- export type RadioOption = InputOption & {
23
- checked?: boolean;
24
- };
25
- export interface InputOption {
26
- text: string;
27
- value: string | number;
28
- disabled?: StringOrBoolean;
29
- className?: string;
30
- icon?: string;
31
- }
32
- export type HTMLFormTarget = '_blank' | '_self' | '_parent' | '_top' | string;
@@ -1,66 +0,0 @@
1
- import { Component, CUSTOM_ELEMENTS_SCHEMA, ElementRef, Input, NO_ERRORS_SCHEMA, ViewChild, } from '@angular/core';
2
- import { FormGroup, ReactiveFormsModule } from '@angular/forms';
3
- import { HTML5InputTypes } from '@decaf-ts/ui-decorators';
4
- import { IonCheckbox, IonInput, IonItem, IonRadio, IonRadioGroup, IonSelect, IonSelectOption, } from '@ionic/angular/standalone';
5
- import { TranslatePipe } from '@ngx-translate/core';
6
- import { DecafFieldDirective } from '../../directives/decaf-field.directive';
7
- import { NgClass } from '@angular/common';
8
- import { NgxCrudFormField } from '../../engine/NgxCrudFormField';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@angular/forms";
11
- // @Dynamic()
12
- export class DecafCrudFieldComponent extends NgxCrudFormField {
13
- constructor() {
14
- super(...arguments);
15
- this.updateOn = 'change';
16
- this.translatable = true;
17
- this.HTML5InputTypes = Object.values(HTML5InputTypes);
18
- }
19
- ngAfterViewInit() {
20
- super.afterViewInit();
21
- }
22
- ngOnDestroy() {
23
- this.onDestroy();
24
- }
25
- ngOnInit() {
26
- super.onInit(this.updateOn);
27
- }
28
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DecafCrudFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
29
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DecafCrudFieldComponent, isStandalone: true, selector: "decaf-crud-field", inputs: { updateOn: "updateOn", operation: "operation", props: "props", name: "name", options: "options", formGroup: "formGroup", translatable: "translatable" }, viewQueries: [{ propertyName: "component", first: true, predicate: ["component"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<ng-container #component [formGroup]=\"formGroup\">\n @if(props.type === 'textarea') {\n <ion-item>\n <ion-textarea\n [ngClass]=\"props.className\"\n [mode]=\"props.mode\"\n [hidden]=\"props.hidden\"\n [required]=\"props.required !== undefined ? props.required : null\"\n [minlength]=\"props.minlength !== undefined ? props.minlength : null\"\n [maxlength]=\"props.maxlength !== undefined ? props.maxlength : null\"\n [readonly]=\"props.readonly !== undefined ? props.readonly : null\"\n [inputmode]=\"props.inputmode\"\n [spellcheck]=\"props.spellcheck\"\n [rows]=\"props.rows\"\n [labelPlacement]=\"props.labelPlacement\"\n [value]=\"props.value\"\n [fill]=\"props.fill\"\n [placeholder]=\"translatable ? (props.placeholder | translate) : props.placeholder\"\n [formControlName]=\"props.name\"\n [label]=\"translatable ? (props.label | translate) : props.label\">\n </ion-textarea>\n </ion-item>\n }\n @if(props.type === 'checkbox') {\n <ion-item [formControlName]=\"props.name\">\n <ion-checkbox\n #checkboxElement\n [name]=\"props.name\"\n [ngClass]=\"props.className\"\n [mode]=\"props.mode\"\n [hidden]=\"props.hidden\"\n [labelPlacement]=\"props.labelPlacement\"\n [alignment]=\"props.alignment\"\n [justify]=\"props.justify\"\n [disabled]=\"props.disabled || props.readonly\"\n [attr.checkedValue]=\"props.value\"\n [value]=\"props.value\"\n [checked]=\"props.checked\"\n (ionChange)=\"props.checked = !props.checked\"\n [formControlName]=\"props.name\">\n <span [innerHTML]=\"props.label | translate\"></span>\n </ion-checkbox>\n </ion-item>\n }\n @else if(props.type === 'radio') {\n <ion-radio-group [ngClass]=\"props.className\" [formControlName]=\"props.name\" [name]=\"props.name\" [value]=\"props.value\">\n <label class=\"radio-group-label\">{{props.label | translate}}</label>\n @for(option of options; track option.value) {\n <ion-item>\n <ion-radio\n [mode]=\"props.mode\"\n [hidden]=\"props.hidden\"\n [disabled]=\"props.readonly || props.disabled\"\n [labelPlacement]=\"props.labelPlacement\"\n [alignment]=\"props.alignment\"\n [justify]=\"props.justify\"\n [value]=\"option.value\"\n >{{ option.text | translate }}</ion-radio>\n </ion-item>\n }\n </ion-radio-group>\n }\n @else if(props.type === 'select') {\n <ion-item>\n <ion-select\n [name]=\"props.name\"\n [ngClass]=\"props.className\"\n [mode]=\"props.mode\"\n [hidden]=\"props.hidden\"\n [labelPlacement]=\"props.labelPlacement\"\n [cancelText]=\"props.cancelText | translate\"\n [label]=\"translatable ? (props.label | translate) : props.label\"\n [value]=\"props.value\"\n [fill]=\"props.fill\"\n [disabled]=\"props.readonly || props.disabled\"\n [placeholder]=\"props.placeholder | translate\"\n [formControlName]=\"props.name\"\n [interface]=\"props.interface\">\n @for(option of options; track option.value) {\n <ion-select-option [value]=\"option.value\">\n {{ translatable ? (option.text | translate) : option.text }}\n </ion-select-option>\n }\n </ion-select>\n </ion-item>\n }\n @else if(HTML5InputTypes.includes(props.type)) {\n <ion-item>\n <ion-input\n [ngClass]=\"props.className\"\n [type]=\"props.type\"\n [mode]=\"props.mode\"\n [hidden]=\"props.hidden\"\n [inputmode]=\"props.inputmode\"\n [autocomplete]=\"props.autocomplete\"\n [spellcheck]=\"props.spellcheck\"\n [labelPlacement]=\"props.labelPlacement\"\n [required]=\"props.required !== undefined ? props.required : false\"\n [minlength]=\"props.minlength !== undefined ? props.minlength : null\"\n [maxlength]=\"props.maxlength !== undefined ? props.maxlength : null\"\n [readonly]=\"props.readonly !== undefined ? props.readonly : null\"\n [max]=\"props.max !== undefined ? props.max : null\"\n [min]=\"props.min !== undefined ? props.min : null\"\n [pattern]=\"props.pattern !== undefined ? props.pattern : null\"\n [step]=\"props.step !== undefined ? props.step : null\"\n [value]=\"props.value\"\n [fill]=\"props.fill\"\n [placeholder]=\"props.placeholder | translate\"\n [formControlName]=\"props.name\"\n [label]=\"props.label | translate\">\n </ion-input>\n </ion-item>\n }\n @else {\n <h1>INVALID FIELD TYPE</h1>\n }\n @if((!formGroup.pristine || formGroup.touched) && !formGroup.valid) {\n <div class=\"error uk-flex uk-flex-top\">\n @for(item of getErrors(); track item.key) {\n <p>\n <span color=\"danger\" class=\"ti ti-alert-triangle\"></span>\n <span>{{item.key}} - {{ sf((\"errors.\" + item.message) | translate, props[item.key]) }}</span>\n </p>\n }\n </div>\n }\n</ng-container>\n", styles: [".disabled{opacity:.7;pointer-events:none;touch-action:none}.disabled *{pointer-events:none;touch-action:none}.proccessing,.proccessing *{pointer-events:none;touch-action:none;cursor:text}ion-item{--border-color: transparent;--padding-start: .75rem;--background: transparent;--background-hover-opacity: .1;--background-hover: var(--ion-color-primary);--background-activated-opacity: .15;--background-focused: var(--ion-color-primary);--background-focused-opacity: .15}ion-textarea textarea{scrollbar-width:thin!important;margin-bottom:.5rem!important}ion-select.select-label-placement-floating::part(label){line-height:1.2rem!important}.radio-group-label{margin-left:.5rem}.radio-group-label+ion-item{margin-top:.5rem}ion-checkbox{--size: 1.5rem;--checkbox-background-checked: var(--ion-color-primary);--checkmark-width: 2px}ion-checkbox::part(container){border-radius:50%;border:2px solid var(--ion-color-primary);padding:3px}ion-item+.helper,ion-radio-group+.helper{padding-left:.75rem;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonCheckbox, selector: "ion-checkbox", inputs: ["checked", "color", "disabled", "indeterminate", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: IonRadioGroup, selector: "ion-radio-group", inputs: ["allowEmptySelection", "compareWith", "name", "value"] }, { kind: "component", type: IonRadio, selector: "ion-radio", inputs: ["alignment", "color", "disabled", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "expandedIcon", "fill", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }] }); }
30
- }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DecafCrudFieldComponent, decorators: [{
32
- type: Component,
33
- args: [{ standalone: true, imports: [
34
- ReactiveFormsModule,
35
- NgClass,
36
- IonInput,
37
- IonItem,
38
- IonCheckbox,
39
- IonRadioGroup,
40
- IonRadio,
41
- IonSelect,
42
- TranslatePipe,
43
- IonSelectOption,
44
- DecafFieldDirective,
45
- ], schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA], selector: 'decaf-crud-field', template: "<ng-container #component [formGroup]=\"formGroup\">\n @if(props.type === 'textarea') {\n <ion-item>\n <ion-textarea\n [ngClass]=\"props.className\"\n [mode]=\"props.mode\"\n [hidden]=\"props.hidden\"\n [required]=\"props.required !== undefined ? props.required : null\"\n [minlength]=\"props.minlength !== undefined ? props.minlength : null\"\n [maxlength]=\"props.maxlength !== undefined ? props.maxlength : null\"\n [readonly]=\"props.readonly !== undefined ? props.readonly : null\"\n [inputmode]=\"props.inputmode\"\n [spellcheck]=\"props.spellcheck\"\n [rows]=\"props.rows\"\n [labelPlacement]=\"props.labelPlacement\"\n [value]=\"props.value\"\n [fill]=\"props.fill\"\n [placeholder]=\"translatable ? (props.placeholder | translate) : props.placeholder\"\n [formControlName]=\"props.name\"\n [label]=\"translatable ? (props.label | translate) : props.label\">\n </ion-textarea>\n </ion-item>\n }\n @if(props.type === 'checkbox') {\n <ion-item [formControlName]=\"props.name\">\n <ion-checkbox\n #checkboxElement\n [name]=\"props.name\"\n [ngClass]=\"props.className\"\n [mode]=\"props.mode\"\n [hidden]=\"props.hidden\"\n [labelPlacement]=\"props.labelPlacement\"\n [alignment]=\"props.alignment\"\n [justify]=\"props.justify\"\n [disabled]=\"props.disabled || props.readonly\"\n [attr.checkedValue]=\"props.value\"\n [value]=\"props.value\"\n [checked]=\"props.checked\"\n (ionChange)=\"props.checked = !props.checked\"\n [formControlName]=\"props.name\">\n <span [innerHTML]=\"props.label | translate\"></span>\n </ion-checkbox>\n </ion-item>\n }\n @else if(props.type === 'radio') {\n <ion-radio-group [ngClass]=\"props.className\" [formControlName]=\"props.name\" [name]=\"props.name\" [value]=\"props.value\">\n <label class=\"radio-group-label\">{{props.label | translate}}</label>\n @for(option of options; track option.value) {\n <ion-item>\n <ion-radio\n [mode]=\"props.mode\"\n [hidden]=\"props.hidden\"\n [disabled]=\"props.readonly || props.disabled\"\n [labelPlacement]=\"props.labelPlacement\"\n [alignment]=\"props.alignment\"\n [justify]=\"props.justify\"\n [value]=\"option.value\"\n >{{ option.text | translate }}</ion-radio>\n </ion-item>\n }\n </ion-radio-group>\n }\n @else if(props.type === 'select') {\n <ion-item>\n <ion-select\n [name]=\"props.name\"\n [ngClass]=\"props.className\"\n [mode]=\"props.mode\"\n [hidden]=\"props.hidden\"\n [labelPlacement]=\"props.labelPlacement\"\n [cancelText]=\"props.cancelText | translate\"\n [label]=\"translatable ? (props.label | translate) : props.label\"\n [value]=\"props.value\"\n [fill]=\"props.fill\"\n [disabled]=\"props.readonly || props.disabled\"\n [placeholder]=\"props.placeholder | translate\"\n [formControlName]=\"props.name\"\n [interface]=\"props.interface\">\n @for(option of options; track option.value) {\n <ion-select-option [value]=\"option.value\">\n {{ translatable ? (option.text | translate) : option.text }}\n </ion-select-option>\n }\n </ion-select>\n </ion-item>\n }\n @else if(HTML5InputTypes.includes(props.type)) {\n <ion-item>\n <ion-input\n [ngClass]=\"props.className\"\n [type]=\"props.type\"\n [mode]=\"props.mode\"\n [hidden]=\"props.hidden\"\n [inputmode]=\"props.inputmode\"\n [autocomplete]=\"props.autocomplete\"\n [spellcheck]=\"props.spellcheck\"\n [labelPlacement]=\"props.labelPlacement\"\n [required]=\"props.required !== undefined ? props.required : false\"\n [minlength]=\"props.minlength !== undefined ? props.minlength : null\"\n [maxlength]=\"props.maxlength !== undefined ? props.maxlength : null\"\n [readonly]=\"props.readonly !== undefined ? props.readonly : null\"\n [max]=\"props.max !== undefined ? props.max : null\"\n [min]=\"props.min !== undefined ? props.min : null\"\n [pattern]=\"props.pattern !== undefined ? props.pattern : null\"\n [step]=\"props.step !== undefined ? props.step : null\"\n [value]=\"props.value\"\n [fill]=\"props.fill\"\n [placeholder]=\"props.placeholder | translate\"\n [formControlName]=\"props.name\"\n [label]=\"props.label | translate\">\n </ion-input>\n </ion-item>\n }\n @else {\n <h1>INVALID FIELD TYPE</h1>\n }\n @if((!formGroup.pristine || formGroup.touched) && !formGroup.valid) {\n <div class=\"error uk-flex uk-flex-top\">\n @for(item of getErrors(); track item.key) {\n <p>\n <span color=\"danger\" class=\"ti ti-alert-triangle\"></span>\n <span>{{item.key}} - {{ sf((\"errors.\" + item.message) | translate, props[item.key]) }}</span>\n </p>\n }\n </div>\n }\n</ng-container>\n", styles: [".disabled{opacity:.7;pointer-events:none;touch-action:none}.disabled *{pointer-events:none;touch-action:none}.proccessing,.proccessing *{pointer-events:none;touch-action:none;cursor:text}ion-item{--border-color: transparent;--padding-start: .75rem;--background: transparent;--background-hover-opacity: .1;--background-hover: var(--ion-color-primary);--background-activated-opacity: .15;--background-focused: var(--ion-color-primary);--background-focused-opacity: .15}ion-textarea textarea{scrollbar-width:thin!important;margin-bottom:.5rem!important}ion-select.select-label-placement-floating::part(label){line-height:1.2rem!important}.radio-group-label{margin-left:.5rem}.radio-group-label+ion-item{margin-top:.5rem}ion-checkbox{--size: 1.5rem;--checkbox-background-checked: var(--ion-color-primary);--checkmark-width: 2px}ion-checkbox::part(container){border-radius:50%;border:2px solid var(--ion-color-primary);padding:3px}ion-item+.helper,ion-radio-group+.helper{padding-left:.75rem;position:relative}\n"] }]
46
- }], propDecorators: { updateOn: [{
47
- type: Input
48
- }], component: [{
49
- type: ViewChild,
50
- args: ['component', { read: ElementRef }]
51
- }], operation: [{
52
- type: Input,
53
- args: [{ required: true }]
54
- }], props: [{
55
- type: Input,
56
- args: [{ required: true }]
57
- }], name: [{
58
- type: Input
59
- }], options: [{
60
- type: Input
61
- }], formGroup: [{
62
- type: Input
63
- }], translatable: [{
64
- type: Input
65
- }] } });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjYWYtY3J1ZC1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZGVjYWYtY3J1ZC1maWVsZC9kZWNhZi1jcnVkLWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kZWNhZi1jcnVkLWZpZWxkL2RlY2FmLWNydWQtZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxzQkFBc0IsRUFDdEIsVUFBVSxFQUNWLEtBQUssRUFDTCxnQkFBZ0IsRUFHaEIsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUNMLFdBQVcsRUFDWCxRQUFRLEVBQ1IsT0FBTyxFQUNQLFFBQVEsRUFDUixhQUFhLEVBQ2IsU0FBUyxFQUNULGVBQWUsR0FDaEIsTUFBTSwyQkFBMkIsQ0FBQztBQVFuQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7QUFHakUsYUFBYTtBQXNCYixNQUFNLE9BQU8sdUJBQ1gsU0FBUSxnQkFBZ0I7SUF0QjFCOztRQTBCRSxhQUFRLEdBQW9CLFFBQVEsQ0FBQztRQXFCckMsaUJBQVksR0FBb0IsSUFBSSxDQUFDO1FBY2xCLG9CQUFlLEdBQWEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztLQUMvRTtJQWJDLGVBQWU7UUFDYixLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELFFBQVE7UUFDTixLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5QixDQUFDOytHQXRDVSx1QkFBdUI7bUdBQXZCLHVCQUF1QixpVUFPRixVQUFVLG9EQ2pFNUMsMGxLQStIQSx3aUNEdkZJLG1CQUFtQixneENBQ25CLE9BQU8sb0ZBQ1AsUUFBUSw4ZUFDUixPQUFPLDBOQUNQLFdBQVcsMEtBQ1gsYUFBYSw2SEFDYixRQUFRLHdKQUNSLFNBQVMsa1RBQ1QsYUFBYSxrREFDYixlQUFlOzs0RkFTTix1QkFBdUI7a0JBckJuQyxTQUFTO2lDQUNJLElBQUksV0FDUDt3QkFDUCxtQkFBbUI7d0JBQ25CLE9BQU87d0JBQ1AsUUFBUTt3QkFDUixPQUFPO3dCQUNQLFdBQVc7d0JBQ1gsYUFBYTt3QkFDYixRQUFRO3dCQUNSLFNBQVM7d0JBQ1QsYUFBYTt3QkFDYixlQUFlO3dCQUNmLG1CQUFtQjtxQkFDcEIsV0FDUSxDQUFDLHNCQUFzQixFQUFFLGdCQUFnQixDQUFDLFlBRXpDLGtCQUFrQjs4QkFTNUIsUUFBUTtzQkFEUCxLQUFLO2dCQUlHLFNBQVM7c0JBRGpCLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFJbkMsU0FBUztzQkFEakIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSWhCLEtBQUs7c0JBRGIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBSWhCLElBQUk7c0JBRFosS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBSUcsU0FBUztzQkFEakIsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBOT19FUlJPUlNfU0NIRU1BLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENydWRPcGVyYXRpb25zIH0gZnJvbSAnQGRlY2FmLXRzL2RiLWRlY29yYXRvcnMnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSFRNTDVJbnB1dFR5cGVzIH0gZnJvbSAnQGRlY2FmLXRzL3VpLWRlY29yYXRvcnMnO1xuaW1wb3J0IHtcbiAgSW9uQ2hlY2tib3gsXG4gIElvbklucHV0LFxuICBJb25JdGVtLFxuICBJb25SYWRpbyxcbiAgSW9uUmFkaW9Hcm91cCxcbiAgSW9uU2VsZWN0LFxuICBJb25TZWxlY3RPcHRpb24sXG59IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHtcbiAgQW5ndWxhckZpZWxkRGVmaW5pdGlvbixcbiAgRmllbGRVcGRhdGVNb2RlLFxuICBSYWRpb09wdGlvbixcbiAgU2VsZWN0T3B0aW9uLFxuICBTdHJpbmdPckJvb2xlYW4sXG59IGZyb20gJy4uLy4uL2VuZ2luZS90eXBlcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBEZWNhZkZpZWxkRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9kZWNhZi1maWVsZC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ3hDcnVkRm9ybUZpZWxkIH0gZnJvbSAnLi4vLi4vZW5naW5lL05neENydWRGb3JtRmllbGQnO1xuaW1wb3J0IHsgRHluYW1pYyB9IGZyb20gJy4uLy4uL2VuZ2luZS9kZWNvcmF0b3JzJztcblxuLy8gQER5bmFtaWMoKVxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE5nQ2xhc3MsXG4gICAgSW9uSW5wdXQsXG4gICAgSW9uSXRlbSxcbiAgICBJb25DaGVja2JveCxcbiAgICBJb25SYWRpb0dyb3VwLFxuICAgIElvblJhZGlvLFxuICAgIElvblNlbGVjdCxcbiAgICBUcmFuc2xhdGVQaXBlLFxuICAgIElvblNlbGVjdE9wdGlvbixcbiAgICBEZWNhZkZpZWxkRGlyZWN0aXZlLFxuICBdLFxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgTk9fRVJST1JTX1NDSEVNQV0sXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnZGVjYWYtY3J1ZC1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kZWNhZi1jcnVkLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2RlY2FmLWNydWQtZmllbGQuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBEZWNhZkNydWRGaWVsZENvbXBvbmVudFxuICBleHRlbmRzIE5neENydWRGb3JtRmllbGRcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdFxue1xuICBASW5wdXQoKVxuICB1cGRhdGVPbjogRmllbGRVcGRhdGVNb2RlID0gJ2NoYW5nZSc7XG5cbiAgQFZpZXdDaGlsZCgnY29tcG9uZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIG92ZXJyaWRlIGNvbXBvbmVudCE6IEVsZW1lbnRSZWY7XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgb3ZlcnJpZGUgb3BlcmF0aW9uITogQ3J1ZE9wZXJhdGlvbnM7XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgb3ZlcnJpZGUgcHJvcHMhOiBBbmd1bGFyRmllbGREZWZpbml0aW9uO1xuXG4gIEBJbnB1dCgpXG4gIG92ZXJyaWRlIG5hbWUhOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgb3B0aW9ucyE6IFNlbGVjdE9wdGlvbltdIHwgUmFkaW9PcHRpb25bXTtcblxuICBASW5wdXQoKVxuICBvdmVycmlkZSBmb3JtR3JvdXAhOiBGb3JtR3JvdXA7XG5cbiAgQElucHV0KClcbiAgdHJhbnNsYXRhYmxlOiBTdHJpbmdPckJvb2xlYW4gPSB0cnVlO1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzdXBlci5hZnRlclZpZXdJbml0KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm9uRGVzdHJveSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIub25Jbml0KHRoaXMudXBkYXRlT24pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEhUTUw1SW5wdXRUeXBlczogc3RyaW5nW10gPSBPYmplY3QudmFsdWVzKEhUTUw1SW5wdXRUeXBlcyk7XG59XG4iLCI8bmctY29udGFpbmVyICNjb21wb25lbnQgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgQGlmKHByb3BzLnR5cGUgPT09ICd0ZXh0YXJlYScpIHtcbiAgICA8aW9uLWl0ZW0+XG4gICAgICA8aW9uLXRleHRhcmVhXG4gICAgICAgIFtuZ0NsYXNzXT1cInByb3BzLmNsYXNzTmFtZVwiXG4gICAgICAgIFttb2RlXT1cInByb3BzLm1vZGVcIlxuICAgICAgICBbaGlkZGVuXT1cInByb3BzLmhpZGRlblwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJwcm9wcy5yZXF1aXJlZCAhPT0gdW5kZWZpbmVkID8gcHJvcHMucmVxdWlyZWQgOiBudWxsXCJcbiAgICAgICAgW21pbmxlbmd0aF09XCJwcm9wcy5taW5sZW5ndGggIT09IHVuZGVmaW5lZCA/IHByb3BzLm1pbmxlbmd0aCA6IG51bGxcIlxuICAgICAgICBbbWF4bGVuZ3RoXT1cInByb3BzLm1heGxlbmd0aCAhPT0gdW5kZWZpbmVkID8gcHJvcHMubWF4bGVuZ3RoIDogbnVsbFwiXG4gICAgICAgIFtyZWFkb25seV09XCJwcm9wcy5yZWFkb25seSAhPT0gdW5kZWZpbmVkID8gcHJvcHMucmVhZG9ubHkgOiBudWxsXCJcbiAgICAgICAgW2lucHV0bW9kZV09XCJwcm9wcy5pbnB1dG1vZGVcIlxuICAgICAgICBbc3BlbGxjaGVja109XCJwcm9wcy5zcGVsbGNoZWNrXCJcbiAgICAgICAgW3Jvd3NdPVwicHJvcHMucm93c1wiXG4gICAgICAgIFtsYWJlbFBsYWNlbWVudF09XCJwcm9wcy5sYWJlbFBsYWNlbWVudFwiXG4gICAgICAgIFt2YWx1ZV09XCJwcm9wcy52YWx1ZVwiXG4gICAgICAgIFtmaWxsXT1cInByb3BzLmZpbGxcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRhYmxlID8gKHByb3BzLnBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlKSA6IHByb3BzLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wcy5uYW1lXCJcbiAgICAgICAgW2xhYmVsXT1cInRyYW5zbGF0YWJsZSA/IChwcm9wcy5sYWJlbCB8IHRyYW5zbGF0ZSkgOiBwcm9wcy5sYWJlbFwiPlxuICAgICAgPC9pb24tdGV4dGFyZWE+XG4gICAgPC9pb24taXRlbT5cbiAgfVxuICBAaWYocHJvcHMudHlwZSA9PT0gJ2NoZWNrYm94Jykge1xuICAgIDxpb24taXRlbSBbZm9ybUNvbnRyb2xOYW1lXT1cInByb3BzLm5hbWVcIj5cbiAgICAgIDxpb24tY2hlY2tib3hcbiAgICAgICAgI2NoZWNrYm94RWxlbWVudFxuICAgICAgICBbbmFtZV09XCJwcm9wcy5uYW1lXCJcbiAgICAgICAgW25nQ2xhc3NdPVwicHJvcHMuY2xhc3NOYW1lXCJcbiAgICAgICAgW21vZGVdPVwicHJvcHMubW9kZVwiXG4gICAgICAgIFtoaWRkZW5dPVwicHJvcHMuaGlkZGVuXCJcbiAgICAgICAgW2xhYmVsUGxhY2VtZW50XT1cInByb3BzLmxhYmVsUGxhY2VtZW50XCJcbiAgICAgICAgW2FsaWdubWVudF09XCJwcm9wcy5hbGlnbm1lbnRcIlxuICAgICAgICBbanVzdGlmeV09XCJwcm9wcy5qdXN0aWZ5XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cInByb3BzLmRpc2FibGVkIHx8IHByb3BzLnJlYWRvbmx5XCJcbiAgICAgICAgW2F0dHIuY2hlY2tlZFZhbHVlXT1cInByb3BzLnZhbHVlXCJcbiAgICAgICAgW3ZhbHVlXT1cInByb3BzLnZhbHVlXCJcbiAgICAgICAgW2NoZWNrZWRdPVwicHJvcHMuY2hlY2tlZFwiXG4gICAgICAgIChpb25DaGFuZ2UpPVwicHJvcHMuY2hlY2tlZCA9ICFwcm9wcy5jaGVja2VkXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJwcm9wcy5uYW1lXCI+XG4gICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwicHJvcHMubGFiZWwgfCB0cmFuc2xhdGVcIj48L3NwYW4+XG4gICAgICA8L2lvbi1jaGVja2JveD5cbiAgICA8L2lvbi1pdGVtPlxuICB9XG4gIEBlbHNlIGlmKHByb3BzLnR5cGUgPT09ICdyYWRpbycpIHtcbiAgICA8aW9uLXJhZGlvLWdyb3VwIFtuZ0NsYXNzXT1cInByb3BzLmNsYXNzTmFtZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcHMubmFtZVwiIFtuYW1lXT1cInByb3BzLm5hbWVcIiBbdmFsdWVdPVwicHJvcHMudmFsdWVcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cInJhZGlvLWdyb3VwLWxhYmVsXCI+e3twcm9wcy5sYWJlbCB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICAgIEBmb3Iob3B0aW9uIG9mIG9wdGlvbnM7IHRyYWNrIG9wdGlvbi52YWx1ZSkge1xuICAgICAgICA8aW9uLWl0ZW0+XG4gICAgICAgICAgPGlvbi1yYWRpb1xuICAgICAgICAgICAgW21vZGVdPVwicHJvcHMubW9kZVwiXG4gICAgICAgICAgICBbaGlkZGVuXT1cInByb3BzLmhpZGRlblwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJvcHMucmVhZG9ubHkgfHwgcHJvcHMuZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2xhYmVsUGxhY2VtZW50XT1cInByb3BzLmxhYmVsUGxhY2VtZW50XCJcbiAgICAgICAgICAgIFthbGlnbm1lbnRdPVwicHJvcHMuYWxpZ25tZW50XCJcbiAgICAgICAgICAgIFtqdXN0aWZ5XT1cInByb3BzLmp1c3RpZnlcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgPnt7IG9wdGlvbi50ZXh0IHwgdHJhbnNsYXRlIH19PC9pb24tcmFkaW8+XG4gICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICB9XG4gICAgPC9pb24tcmFkaW8tZ3JvdXA+XG4gIH1cbiAgQGVsc2UgaWYocHJvcHMudHlwZSA9PT0gJ3NlbGVjdCcpIHtcbiAgICA8aW9uLWl0ZW0+XG4gICAgICA8aW9uLXNlbGVjdFxuICAgICAgICBbbmFtZV09XCJwcm9wcy5uYW1lXCJcbiAgICAgICAgW25nQ2xhc3NdPVwicHJvcHMuY2xhc3NOYW1lXCJcbiAgICAgICAgW21vZGVdPVwicHJvcHMubW9kZVwiXG4gICAgICAgIFtoaWRkZW5dPVwicHJvcHMuaGlkZGVuXCJcbiAgICAgICAgW2xhYmVsUGxhY2VtZW50XT1cInByb3BzLmxhYmVsUGxhY2VtZW50XCJcbiAgICAgICAgW2NhbmNlbFRleHRdPVwicHJvcHMuY2FuY2VsVGV4dCB8ICB0cmFuc2xhdGVcIlxuICAgICAgICBbbGFiZWxdPVwidHJhbnNsYXRhYmxlID8gKHByb3BzLmxhYmVsIHwgdHJhbnNsYXRlKSA6IHByb3BzLmxhYmVsXCJcbiAgICAgICAgW3ZhbHVlXT1cInByb3BzLnZhbHVlXCJcbiAgICAgICAgW2ZpbGxdPVwicHJvcHMuZmlsbFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJwcm9wcy5yZWFkb25seSB8fCBwcm9wcy5kaXNhYmxlZFwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwcm9wcy5wbGFjZWhvbGRlciB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcHMubmFtZVwiXG4gICAgICAgIFtpbnRlcmZhY2VdPVwicHJvcHMuaW50ZXJmYWNlXCI+XG4gICAgICAgIEBmb3Iob3B0aW9uIG9mIG9wdGlvbnM7IHRyYWNrIG9wdGlvbi52YWx1ZSkge1xuICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCI+XG4gICAgICAgICAgICB7eyB0cmFuc2xhdGFibGUgPyAob3B0aW9uLnRleHQgfCB0cmFuc2xhdGUpIDogb3B0aW9uLnRleHQgfX1cbiAgICAgICAgICA8L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICB9XG4gICAgICA8L2lvbi1zZWxlY3Q+XG4gICAgPC9pb24taXRlbT5cbiAgfVxuICBAZWxzZSBpZihIVE1MNUlucHV0VHlwZXMuaW5jbHVkZXMocHJvcHMudHlwZSkpIHtcbiAgICA8aW9uLWl0ZW0+XG4gICAgICA8aW9uLWlucHV0XG4gICAgICAgIFtuZ0NsYXNzXT1cInByb3BzLmNsYXNzTmFtZVwiXG4gICAgICAgIFt0eXBlXT1cInByb3BzLnR5cGVcIlxuICAgICAgICBbbW9kZV09XCJwcm9wcy5tb2RlXCJcbiAgICAgICAgW2hpZGRlbl09XCJwcm9wcy5oaWRkZW5cIlxuICAgICAgICBbaW5wdXRtb2RlXT1cInByb3BzLmlucHV0bW9kZVwiXG4gICAgICAgIFthdXRvY29tcGxldGVdPVwicHJvcHMuYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgW3NwZWxsY2hlY2tdPVwicHJvcHMuc3BlbGxjaGVja1wiXG4gICAgICAgIFtsYWJlbFBsYWNlbWVudF09XCJwcm9wcy5sYWJlbFBsYWNlbWVudFwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJwcm9wcy5yZXF1aXJlZCAhPT0gdW5kZWZpbmVkID8gcHJvcHMucmVxdWlyZWQgOiBmYWxzZVwiXG4gICAgICAgIFttaW5sZW5ndGhdPVwicHJvcHMubWlubGVuZ3RoICE9PSB1bmRlZmluZWQgPyBwcm9wcy5taW5sZW5ndGggOiBudWxsXCJcbiAgICAgICAgW21heGxlbmd0aF09XCJwcm9wcy5tYXhsZW5ndGggIT09IHVuZGVmaW5lZCA/IHByb3BzLm1heGxlbmd0aCA6IG51bGxcIlxuICAgICAgICBbcmVhZG9ubHldPVwicHJvcHMucmVhZG9ubHkgIT09IHVuZGVmaW5lZCA/IHByb3BzLnJlYWRvbmx5IDogbnVsbFwiXG4gICAgICAgIFttYXhdPVwicHJvcHMubWF4ICE9PSB1bmRlZmluZWQgPyBwcm9wcy5tYXggOiBudWxsXCJcbiAgICAgICAgW21pbl09XCJwcm9wcy5taW4gIT09IHVuZGVmaW5lZCA/IHByb3BzLm1pbiA6IG51bGxcIlxuICAgICAgICBbcGF0dGVybl09XCJwcm9wcy5wYXR0ZXJuICE9PSB1bmRlZmluZWQgPyBwcm9wcy5wYXR0ZXJuIDogbnVsbFwiXG4gICAgICAgIFtzdGVwXT1cInByb3BzLnN0ZXAgIT09IHVuZGVmaW5lZCA/IHByb3BzLnN0ZXAgOiBudWxsXCJcbiAgICAgICAgW3ZhbHVlXT1cInByb3BzLnZhbHVlXCJcbiAgICAgICAgW2ZpbGxdPVwicHJvcHMuZmlsbFwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwcm9wcy5wbGFjZWhvbGRlciB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicHJvcHMubmFtZVwiXG4gICAgICAgIFtsYWJlbF09XCJwcm9wcy5sYWJlbCB8IHRyYW5zbGF0ZVwiPlxuICAgICAgPC9pb24taW5wdXQ+XG4gICAgPC9pb24taXRlbT5cbiAgfVxuICBAZWxzZSB7XG4gICAgPGgxPklOVkFMSUQgRklFTEQgVFlQRTwvaDE+XG4gIH1cbiAgQGlmKCghZm9ybUdyb3VwLnByaXN0aW5lIHx8IGZvcm1Hcm91cC50b3VjaGVkKSAmJiAhZm9ybUdyb3VwLnZhbGlkKSB7XG4gICAgPGRpdiBjbGFzcz1cImVycm9yIHVrLWZsZXggdWstZmxleC10b3BcIj5cbiAgICAgIEBmb3IoaXRlbSBvZiBnZXRFcnJvcnMoKTsgdHJhY2sgaXRlbS5rZXkpIHtcbiAgICAgICAgPHA+XG4gICAgICAgICAgPHNwYW4gY29sb3I9XCJkYW5nZXJcIiBjbGFzcz1cInRpIHRpLWFsZXJ0LXRyaWFuZ2xlXCI+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuPnt7aXRlbS5rZXl9fSAtIHt7IHNmKChcImVycm9ycy5cIiArIGl0ZW0ubWVzc2FnZSkgfCB0cmFuc2xhdGUsIHByb3BzW2l0ZW0ua2V5XSkgfX08L3NwYW4+XG4gICAgICAgIDwvcD5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgfVxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -1,14 +0,0 @@
1
- export const CssClasses = {
2
- BUTTONS_CONTAINER: 'buttons-container',
3
- };
4
- export const DefaultFormReactiveOptions = {
5
- buttons: {
6
- submit: {
7
- text: 'Submit',
8
- },
9
- clear: {
10
- text: 'Clear',
11
- },
12
- },
13
- };
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RlY2FmLWNydWQtZm9ybS9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLGlCQUFpQixFQUFFLG1CQUFtQjtDQUN2QyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQW9CO0lBQ3pELE9BQU8sRUFBRTtRQUNQLE1BQU0sRUFBRTtZQUNOLElBQUksRUFBRSxRQUFRO1NBQ2Y7UUFDRCxLQUFLLEVBQUU7WUFDTCxJQUFJLEVBQUUsT0FBTztTQUNkO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3J1ZEZvcm1PcHRpb25zIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBDc3NDbGFzc2VzID0ge1xuICBCVVRUT05TX0NPTlRBSU5FUjogJ2J1dHRvbnMtY29udGFpbmVyJyxcbn07XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0Rm9ybVJlYWN0aXZlT3B0aW9uczogQ3J1ZEZvcm1PcHRpb25zID0ge1xuICBidXR0b25zOiB7XG4gICAgc3VibWl0OiB7XG4gICAgICB0ZXh0OiAnU3VibWl0JyxcbiAgICB9LFxuICAgIGNsZWFyOiB7XG4gICAgICB0ZXh0OiAnQ2xlYXInLFxuICAgIH0sXG4gIH0sXG59O1xuIl19
@@ -1,84 +0,0 @@
1
- import { Component, ElementRef, ViewChild, Input, Output, EventEmitter, } from '@angular/core';
2
- import { FormGroup, ReactiveFormsModule } from '@angular/forms';
3
- import { NgxFormService } from '../../engine/NgxFormService';
4
- import { IonicModule } from '@ionic/angular';
5
- import { DefaultFormReactiveOptions } from './constants';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@ionic/angular";
8
- import * as i2 from "@angular/forms";
9
- export class DecafCrudFormComponent {
10
- constructor() {
11
- this.updateOn = 'change';
12
- this.target = '_self';
13
- this.method = 'event';
14
- this.formGroup = new FormGroup({});
15
- this.submitEvent = new EventEmitter();
16
- }
17
- ngAfterViewInit() {
18
- NgxFormService.formAfterViewInit(this, this.formId);
19
- }
20
- ngOnInit() {
21
- this.options = Object.assign({}, DefaultFormReactiveOptions, this.options || {});
22
- if (!this.formId)
23
- this.formId = Date.now().toString();
24
- }
25
- ngOnDestroy() {
26
- NgxFormService.forOnDestroy(this, this.formId);
27
- }
28
- /**
29
- * @param {Event} event
30
- */
31
- submit(event) {
32
- event.preventDefault();
33
- event.stopImmediatePropagation();
34
- event.stopPropagation();
35
- if (!this.formGroup.valid)
36
- return NgxFormService.validateFields(this.formGroup);
37
- console.log('onSubmit');
38
- // fix para valores de campos radio e check
39
- const data = NgxFormService.getFormData(this.formId);
40
- const submitEvent = {
41
- data: data,
42
- };
43
- if (this.action)
44
- return this.component.nativeElement.dispatchEvent(new CustomEvent('submit', data));
45
- this.submitEvent.emit(submitEvent);
46
- // self.emitEvent({
47
- // role: button?.role || FORM_BUTTON_ROLES.SUBMIT,
48
- // data,
49
- // reset: button?.reset,
50
- // operation: self.operation,
51
- // eventName: self.eventName,
52
- // event,
53
- // } as FormReactiveSubmitEvent);
54
- }
55
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DecafCrudFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
56
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DecafCrudFormComponent, isStandalone: true, selector: "decaf-crud-form", inputs: { updateOn: "updateOn", target: "target", method: "method", options: "options", action: "action", operation: "operation", formGroup: "formGroup", formId: "formId" }, outputs: { submitEvent: "submitEvent" }, viewQueries: [{ propertyName: "component", first: true, predicate: ["reactiveForm"], descendants: true, read: ElementRef }], ngImport: i0, template: "<form #reactiveForm [id]=\"formId\" [formGroup]=\"formGroup\" (submit)=\"submit($event)\" [target]=\"target\">\n <ng-content #formContent></ng-content>\n <div class=\"buttons-container\">\n <ion-button\n type=\"submit\">\n<!-- [shape]=\"buttons?.submit?.shape || 'round'\"-->\n<!-- [color]=\"buttons?.submit?.color || 'primary'\"-->\n<!-- [size]=\"buttons?.submit?.size || 'default'\"-->\n<!-- [fill]=\"buttons?.submit?.fill || 'solid'\"-->\n<!-- [disabled]=\"buttons?.submit?.disabled || false\"-->\n<!-- expand=\"block\"-->\n<!-- [disabled]=\"disableSubmitButtonWhenInvalid ? !form.valid : false\"-->\n @if(options.buttons.submit.icon) {\n <ion-icon [slot]=\"options.buttons.submit.iconSlot\" [name]=\"options.buttons.submit.icon\"></ion-icon>\n }\n {{options.buttons.submit.text}}\n </ion-button>\n @if(options.buttons.clear) {\n <ion-button>\n<!-- type=\"clear\"-->\n<!-- (click)=\"clear($event)\"-->\n<!-- [shape]=\"buttons?.clear?.shape || 'round'\"-->\n<!-- [color]=\"buttons?.clear?.color || 'primary'\"-->\n<!-- [size]=\"buttons?.clear?.size || 'default'\"-->\n<!-- [fill]=\"buttons?.clear?.fill || 'clear'\"-->\n<!-- [disabled]=\"buttons?.clear?.disabled || false\"-->\n<!-- expand=\"block\"-->\n @if(options.buttons.clear?.icon) {\n <ion-icon [slot]=\"options.buttons.clear?.iconSlot\" [name]=\"options.buttons.clear?.icon\"></ion-icon>\n }\n {{options.buttons.clear?.text}}\n </ion-button>\n }\n </div>\n</form>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: IonicModule }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] }); }
57
- }
58
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DecafCrudFormComponent, decorators: [{
59
- type: Component,
60
- args: [{ standalone: true, selector: 'decaf-crud-form', imports: [IonicModule, ReactiveFormsModule], template: "<form #reactiveForm [id]=\"formId\" [formGroup]=\"formGroup\" (submit)=\"submit($event)\" [target]=\"target\">\n <ng-content #formContent></ng-content>\n <div class=\"buttons-container\">\n <ion-button\n type=\"submit\">\n<!-- [shape]=\"buttons?.submit?.shape || 'round'\"-->\n<!-- [color]=\"buttons?.submit?.color || 'primary'\"-->\n<!-- [size]=\"buttons?.submit?.size || 'default'\"-->\n<!-- [fill]=\"buttons?.submit?.fill || 'solid'\"-->\n<!-- [disabled]=\"buttons?.submit?.disabled || false\"-->\n<!-- expand=\"block\"-->\n<!-- [disabled]=\"disableSubmitButtonWhenInvalid ? !form.valid : false\"-->\n @if(options.buttons.submit.icon) {\n <ion-icon [slot]=\"options.buttons.submit.iconSlot\" [name]=\"options.buttons.submit.icon\"></ion-icon>\n }\n {{options.buttons.submit.text}}\n </ion-button>\n @if(options.buttons.clear) {\n <ion-button>\n<!-- type=\"clear\"-->\n<!-- (click)=\"clear($event)\"-->\n<!-- [shape]=\"buttons?.clear?.shape || 'round'\"-->\n<!-- [color]=\"buttons?.clear?.color || 'primary'\"-->\n<!-- [size]=\"buttons?.clear?.size || 'default'\"-->\n<!-- [fill]=\"buttons?.clear?.fill || 'clear'\"-->\n<!-- [disabled]=\"buttons?.clear?.disabled || false\"-->\n<!-- expand=\"block\"-->\n @if(options.buttons.clear?.icon) {\n <ion-icon [slot]=\"options.buttons.clear?.iconSlot\" [name]=\"options.buttons.clear?.icon\"></ion-icon>\n }\n {{options.buttons.clear?.text}}\n </ion-button>\n }\n </div>\n</form>\n" }]
61
- }], propDecorators: { updateOn: [{
62
- type: Input
63
- }], component: [{
64
- type: ViewChild,
65
- args: ['reactiveForm', { static: false, read: ElementRef }]
66
- }], target: [{
67
- type: Input
68
- }], method: [{
69
- type: Input
70
- }], options: [{
71
- type: Input
72
- }], action: [{
73
- type: Input
74
- }], operation: [{
75
- type: Input,
76
- args: [{ required: true }]
77
- }], formGroup: [{
78
- type: Input
79
- }], formId: [{
80
- type: Input
81
- }], submitEvent: [{
82
- type: Output
83
- }] } });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjYWYtY3J1ZC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kZWNhZi1jcnVkLWZvcm0vZGVjYWYtY3J1ZC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kZWNhZi1jcnVkLWZvcm0vZGVjYWYtY3J1ZC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUVWLFNBQVMsRUFFVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksR0FFYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUk3QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7QUFVekQsTUFBTSxPQUFPLHNCQUFzQjtJQVJuQztRQVlFLGFBQVEsR0FBb0IsUUFBUSxDQUFDO1FBTXJDLFdBQU0sR0FBbUIsT0FBTyxDQUFDO1FBR2pDLFdBQU0sR0FBNkIsT0FBTyxDQUFDO1FBWTNDLGNBQVMsR0FBYyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQU16QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUEyQixDQUFDO0tBcUQzRDtJQW5EQyxlQUFlO1FBQ2IsY0FBYyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQzFCLEVBQUUsRUFDRiwwQkFBMEIsRUFDMUIsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQ25CLENBQUM7UUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN4RCxDQUFDO0lBRUQsV0FBVztRQUNULGNBQWMsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsS0FBa0I7UUFDdkIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2pDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV4QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLO1lBQ3ZCLE9BQU8sY0FBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV4QiwyQ0FBMkM7UUFDM0MsTUFBTSxJQUFJLEdBQUcsY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFckQsTUFBTSxXQUFXLEdBQTRCO1lBQzNDLElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQztRQUVGLElBQUksSUFBSSxDQUFDLE1BQU07WUFDYixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FDL0MsSUFBSSxXQUFXLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUNoQyxDQUFDO1FBRUosSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkMsbUJBQW1CO1FBQ25CLG9EQUFvRDtRQUNwRCxVQUFVO1FBQ1YsMEJBQTBCO1FBQzFCLCtCQUErQjtRQUMvQiwrQkFBK0I7UUFDL0IsV0FBVztRQUNYLGlDQUFpQztJQUNuQyxDQUFDOytHQW5GVSxzQkFBc0I7bUdBQXRCLHNCQUFzQix3WEFNaUIsVUFBVSw2QkNsQzlELDRsREFtQ0EseUREVFksV0FBVyxtY0FBRSxtQkFBbUI7OzRGQUUvQixzQkFBc0I7a0JBUmxDLFNBQVM7aUNBQ0ksSUFBSSxZQUVOLGlCQUFpQixXQUdsQixDQUFDLFdBQVcsRUFBRSxtQkFBbUIsQ0FBQzs4QkFNM0MsUUFBUTtzQkFEUCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBSTlELE1BQU07c0JBREwsS0FBSztnQkFJTixNQUFNO3NCQURMLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLE1BQU07c0JBREwsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUl6QixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxLQUFLO2dCQUlOLFdBQVc7c0JBRFYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG4gIEFmdGVyVmlld0luaXQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25EZXN0cm95LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZvcm1FbGVtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBOZ3hGb3JtU2VydmljZSB9IGZyb20gJy4uLy4uL2VuZ2luZS9OZ3hGb3JtU2VydmljZSc7XG5pbXBvcnQgeyBJb25pY01vZHVsZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IEZpZWxkVXBkYXRlTW9kZSwgSFRNTEZvcm1UYXJnZXQgfSBmcm9tICcuLi8uLi9lbmdpbmUnO1xuaW1wb3J0IHsgQ3J1ZEZvcm1PcHRpb25zLCBGb3JtUmVhY3RpdmVTdWJtaXRFdmVudCB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgQ3J1ZE9wZXJhdGlvbnMgfSBmcm9tICdAZGVjYWYtdHMvZGItZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBEZWZhdWx0Rm9ybVJlYWN0aXZlT3B0aW9ucyB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnZGVjYWYtY3J1ZC1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RlY2FmLWNydWQtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RlY2FmLWNydWQtZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICBpbXBvcnRzOiBbSW9uaWNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBEZWNhZkNydWRGb3JtQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBGb3JtRWxlbWVudCwgT25EZXN0cm95XG57XG4gIEBJbnB1dCgpXG4gIHVwZGF0ZU9uOiBGaWVsZFVwZGF0ZU1vZGUgPSAnY2hhbmdlJztcblxuICBAVmlld0NoaWxkKCdyZWFjdGl2ZUZvcm0nLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgY29tcG9uZW50ITogRWxlbWVudFJlZjtcblxuICBASW5wdXQoKVxuICB0YXJnZXQ6IEhUTUxGb3JtVGFyZ2V0ID0gJ19zZWxmJztcblxuICBASW5wdXQoKVxuICBtZXRob2Q6ICdnZXQnIHwgJ3Bvc3QnIHwgJ2V2ZW50JyA9ICdldmVudCc7XG5cbiAgQElucHV0KClcbiAgb3B0aW9ucyE6IENydWRGb3JtT3B0aW9ucztcblxuICBASW5wdXQoKVxuICBhY3Rpb24/OiBzdHJpbmc7XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgb3BlcmF0aW9uITogQ3J1ZE9wZXJhdGlvbnM7XG5cbiAgQElucHV0KClcbiAgZm9ybUdyb3VwOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcblxuICBASW5wdXQoKVxuICBmb3JtSWQhOiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpXG4gIHN1Ym1pdEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtUmVhY3RpdmVTdWJtaXRFdmVudD4oKTtcblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgTmd4Rm9ybVNlcnZpY2UuZm9ybUFmdGVyVmlld0luaXQodGhpcywgdGhpcy5mb3JtSWQpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5vcHRpb25zID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHt9LFxuICAgICAgRGVmYXVsdEZvcm1SZWFjdGl2ZU9wdGlvbnMsXG4gICAgICB0aGlzLm9wdGlvbnMgfHwge30sXG4gICAgKTtcbiAgICBpZiAoIXRoaXMuZm9ybUlkKSB0aGlzLmZvcm1JZCA9IERhdGUubm93KCkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIE5neEZvcm1TZXJ2aWNlLmZvck9uRGVzdHJveSh0aGlzLCB0aGlzLmZvcm1JZCk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtICB7RXZlbnR9IGV2ZW50XG4gICAqL1xuICBzdWJtaXQoZXZlbnQ6IFN1Ym1pdEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmICghdGhpcy5mb3JtR3JvdXAudmFsaWQpXG4gICAgICByZXR1cm4gTmd4Rm9ybVNlcnZpY2UudmFsaWRhdGVGaWVsZHModGhpcy5mb3JtR3JvdXApO1xuICAgIGNvbnNvbGUubG9nKCdvblN1Ym1pdCcpO1xuXG4gICAgLy8gZml4IHBhcmEgdmFsb3JlcyBkZSBjYW1wb3MgcmFkaW8gZSBjaGVja1xuICAgIGNvbnN0IGRhdGEgPSBOZ3hGb3JtU2VydmljZS5nZXRGb3JtRGF0YSh0aGlzLmZvcm1JZCk7XG5cbiAgICBjb25zdCBzdWJtaXRFdmVudDogRm9ybVJlYWN0aXZlU3VibWl0RXZlbnQgPSB7XG4gICAgICBkYXRhOiBkYXRhLFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5hY3Rpb24pXG4gICAgICByZXR1cm4gdGhpcy5jb21wb25lbnQubmF0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ3N1Ym1pdCcsIGRhdGEpLFxuICAgICAgKTtcblxuICAgIHRoaXMuc3VibWl0RXZlbnQuZW1pdChzdWJtaXRFdmVudCk7XG4gICAgLy8gc2VsZi5lbWl0RXZlbnQoe1xuICAgIC8vICAgcm9sZTogYnV0dG9uPy5yb2xlIHx8IEZPUk1fQlVUVE9OX1JPTEVTLlNVQk1JVCxcbiAgICAvLyAgIGRhdGEsXG4gICAgLy8gICByZXNldDogYnV0dG9uPy5yZXNldCxcbiAgICAvLyAgIG9wZXJhdGlvbjogc2VsZi5vcGVyYXRpb24sXG4gICAgLy8gICBldmVudE5hbWU6IHNlbGYuZXZlbnROYW1lLFxuICAgIC8vICAgZXZlbnQsXG4gICAgLy8gfSBhcyBGb3JtUmVhY3RpdmVTdWJtaXRFdmVudCk7XG4gIH1cbn1cbiIsIjxmb3JtICNyZWFjdGl2ZUZvcm0gW2lkXT1cImZvcm1JZFwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCIgKHN1Ym1pdCk9XCJzdWJtaXQoJGV2ZW50KVwiIFt0YXJnZXRdPVwidGFyZ2V0XCI+XG4gIDxuZy1jb250ZW50ICNmb3JtQ29udGVudD48L25nLWNvbnRlbnQ+XG4gIDxkaXYgY2xhc3M9XCJidXR0b25zLWNvbnRhaW5lclwiPlxuICAgIDxpb24tYnV0dG9uXG4gICAgICB0eXBlPVwic3VibWl0XCI+XG48IS0tICAgICAgW3NoYXBlXT1cImJ1dHRvbnM/LnN1Ym1pdD8uc2hhcGUgfHwgJ3JvdW5kJ1wiLS0+XG48IS0tICAgICAgW2NvbG9yXT1cImJ1dHRvbnM/LnN1Ym1pdD8uY29sb3IgfHwgJ3ByaW1hcnknXCItLT5cbjwhLS0gICAgICBbc2l6ZV09XCJidXR0b25zPy5zdWJtaXQ/LnNpemUgfHwgJ2RlZmF1bHQnXCItLT5cbjwhLS0gICAgICBbZmlsbF09XCJidXR0b25zPy5zdWJtaXQ/LmZpbGwgfHwgJ3NvbGlkJ1wiLS0+XG48IS0tICAgICAgW2Rpc2FibGVkXT1cImJ1dHRvbnM/LnN1Ym1pdD8uZGlzYWJsZWQgfHwgZmFsc2VcIi0tPlxuPCEtLSAgICAgIGV4cGFuZD1cImJsb2NrXCItLT5cbjwhLS0gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZVN1Ym1pdEJ1dHRvbldoZW5JbnZhbGlkID8gIWZvcm0udmFsaWQgOiBmYWxzZVwiLS0+XG4gICAgICBAaWYob3B0aW9ucy5idXR0b25zLnN1Ym1pdC5pY29uKSB7XG4gICAgICAgIDxpb24taWNvbiBbc2xvdF09XCJvcHRpb25zLmJ1dHRvbnMuc3VibWl0Lmljb25TbG90XCIgW25hbWVdPVwib3B0aW9ucy5idXR0b25zLnN1Ym1pdC5pY29uXCI+PC9pb24taWNvbj5cbiAgICAgIH1cbiAgICAgIHt7b3B0aW9ucy5idXR0b25zLnN1Ym1pdC50ZXh0fX1cbiAgICA8L2lvbi1idXR0b24+XG4gICAgQGlmKG9wdGlvbnMuYnV0dG9ucy5jbGVhcikge1xuICAgICAgPGlvbi1idXR0b24+XG48IS0tICAgICAgICB0eXBlPVwiY2xlYXJcIi0tPlxuPCEtLSAgICAgICAgICAgIChjbGljayk9XCJjbGVhcigkZXZlbnQpXCItLT5cbjwhLS0gICAgICAgICAgICBbc2hhcGVdPVwiYnV0dG9ucz8uY2xlYXI/LnNoYXBlIHx8ICdyb3VuZCdcIi0tPlxuPCEtLSAgICAgICAgICAgIFtjb2xvcl09XCJidXR0b25zPy5jbGVhcj8uY29sb3IgfHwgJ3ByaW1hcnknXCItLT5cbjwhLS0gICAgICAgICAgICBbc2l6ZV09XCJidXR0b25zPy5jbGVhcj8uc2l6ZSB8fCAnZGVmYXVsdCdcIi0tPlxuPCEtLSAgICAgICAgICAgIFtmaWxsXT1cImJ1dHRvbnM/LmNsZWFyPy5maWxsIHx8ICdjbGVhcidcIi0tPlxuPCEtLSAgICAgICAgICAgIFtkaXNhYmxlZF09XCJidXR0b25zPy5jbGVhcj8uZGlzYWJsZWQgfHwgZmFsc2VcIi0tPlxuPCEtLSAgICAgICAgICAgIGV4cGFuZD1cImJsb2NrXCItLT5cbiAgICAgICAgQGlmKG9wdGlvbnMuYnV0dG9ucy5jbGVhcj8uaWNvbikge1xuICAgICAgICAgIDxpb24taWNvbiBbc2xvdF09XCJvcHRpb25zLmJ1dHRvbnMuY2xlYXI/Lmljb25TbG90XCIgW25hbWVdPVwib3B0aW9ucy5idXR0b25zLmNsZWFyPy5pY29uXCI+PC9pb24taWNvbj5cbiAgICAgICAgfVxuICAgICAgICB7e29wdGlvbnMuYnV0dG9ucy5jbGVhcj8udGV4dH19XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgfVxuICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZGVjYWYtY3J1ZC1mb3JtL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEZvcm1SZWFjdGl2ZVN1Ym1pdEV2ZW50IHtcbiAgZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3J1ZEZvcm1PcHRpb25zIHtcbiAgYnV0dG9uczoge1xuICAgIHN1Ym1pdDoge1xuICAgICAgaWNvbj86IHN0cmluZztcbiAgICAgIGljb25TbG90PzogJ3N0YXJ0JyB8ICdlbmQnO1xuICAgICAgdGV4dD86IHN0cmluZztcbiAgICB9O1xuICAgIGNsZWFyPzoge1xuICAgICAgaWNvbj86IHN0cmluZztcbiAgICAgIGljb25TbG90PzogJ3N0YXJ0JyB8ICdlbmQnO1xuICAgICAgdGV4dD86IHN0cmluZztcbiAgICB9O1xuICB9O1xufVxuIl19
@@ -1,46 +0,0 @@
1
- import { Component, Input, ViewContainerRef, } from '@angular/core';
2
- import { Model } from '@decaf-ts/decorator-validation';
3
- import { IonSkeletonText } from '@ionic/angular/standalone';
4
- import { NgComponentOutlet } from '@angular/common';
5
- import * as i0 from "@angular/core";
6
- export class DecafModelRendererComponent {
7
- //
8
- // @ViewChild('componentElementContainer', {
9
- // static: true,
10
- // read: ViewContainerRef,
11
- // })
12
- // componentElementContainer!: ViewContainerRef;
13
- constructor(vcr) {
14
- this.vcr = vcr;
15
- }
16
- ngOnInit() {
17
- this.model =
18
- typeof this.model === 'string'
19
- ? Model.build({}, JSON.parse(this.model))
20
- : this.model;
21
- // this.output = RenderingEngine.render(this.model as unknown as Model);
22
- // this.component = NgxRenderingEngine.components(this.output.tag);
23
- // this.props = this.output.props;
24
- // this.content = this.output.children?.map((child) => {
25
- // return this.vcr.createEmbeddedView();
26
- // });
27
- }
28
- ngOnChanges(changes) {
29
- if (changes['model']) {
30
- const { currentValue, previousValue, firstChange } = changes['model'];
31
- }
32
- if (changes['details']) {
33
- const { currentValue, previousValue, firstChange } = changes['details'];
34
- }
35
- }
36
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DecafModelRendererComponent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
37
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DecafModelRendererComponent, isStandalone: true, selector: "decaf-model-renderer", inputs: { model: "model" }, usesOnChanges: true, ngImport: i0, template: "<!--<div #loadingElement>-->\n<!-- <ion-skeleton-text [animated]=\"true\" style=\"width: 100%;\"></ion-skeleton-text>-->\n<!--</div>-->\n@if (output?.children?.length){\n @for (item of output.children; track item.props.name){\n <ng-template>{{item.props.name}}</ng-template>\n }\n}\n<ng-container *ngComponentOutlet=\"component;\n inputs: props;\n content: content;\">\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }] }); }
38
- }
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DecafModelRendererComponent, decorators: [{
40
- type: Component,
41
- args: [{ standalone: true, imports: [IonSkeletonText, NgComponentOutlet], selector: 'decaf-model-renderer', template: "<!--<div #loadingElement>-->\n<!-- <ion-skeleton-text [animated]=\"true\" style=\"width: 100%;\"></ion-skeleton-text>-->\n<!--</div>-->\n@if (output?.children?.length){\n @for (item of output.children; track item.props.name){\n <ng-template>{{item.props.name}}</ng-template>\n }\n}\n<ng-container *ngComponentOutlet=\"component;\n inputs: props;\n content: content;\">\n</ng-container>\n" }]
42
- }], ctorParameters: () => [{ type: i0.ViewContainerRef }], propDecorators: { model: [{
43
- type: Input,
44
- args: [{ required: true }]
45
- }] } });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjYWYtbW9kZWwtcmVuZGVyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RlY2FmLW1vZGVsLXJlbmRlcmVyL2RlY2FmLW1vZGVsLXJlbmRlcmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kZWNhZi1tb2RlbC1yZW5kZXJlci9kZWNhZi1tb2RlbC1yZW5kZXJlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFJTCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFVcEQsTUFBTSxPQUFPLDJCQUEyQjtJQWF0QyxFQUFFO0lBQ0YsNENBQTRDO0lBQzVDLGtCQUFrQjtJQUNsQiw0QkFBNEI7SUFDNUIsS0FBSztJQUNMLGdEQUFnRDtJQUVoRCxZQUFvQixHQUFxQjtRQUFyQixRQUFHLEdBQUgsR0FBRyxDQUFrQjtJQUFHLENBQUM7SUFFN0MsUUFBUTtRQUNOLElBQUksQ0FBQyxLQUFLO1lBQ1IsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFFBQVE7Z0JBQzVCLENBQUMsQ0FBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBTztnQkFDaEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDakIsd0VBQXdFO1FBQ3hFLG1FQUFtRTtRQUNuRSxrQ0FBa0M7UUFDbEMsd0RBQXdEO1FBQ3hELDBDQUEwQztRQUMxQyxNQUFNO0lBQ1IsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUN2QixNQUFNLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUUsQ0FBQztJQUNILENBQUM7K0dBMUNVLDJCQUEyQjttR0FBM0IsMkJBQTJCLGlJQ3RCeEMsNmNBWUEsMERESTZCLGlCQUFpQjs7NEZBTWpDLDJCQUEyQjtrQkFSdkMsU0FBUztpQ0FDSSxJQUFJLFdBQ1AsQ0FBQyxlQUFlLEVBQUUsaUJBQWlCLENBQUMsWUFFbkMsc0JBQXNCO3FGQVFoQyxLQUFLO3NCQURKLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmllbGREZWZpbml0aW9uIH0gZnJvbSAnQGRlY2FmLXRzL3VpLWRlY29yYXRvcnMnO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tICdAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb24nO1xuaW1wb3J0IHsgSW9uU2tlbGV0b25UZXh0IH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBBbmd1bGFyRmllbGREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vZW5naW5lJztcbmltcG9ydCB7IE5nQ29tcG9uZW50T3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtJb25Ta2VsZXRvblRleHQsIE5nQ29tcG9uZW50T3V0bGV0XSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdkZWNhZi1tb2RlbC1yZW5kZXJlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kZWNhZi1tb2RlbC1yZW5kZXJlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kZWNhZi1tb2RlbC1yZW5kZXJlci5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIERlY2FmTW9kZWxSZW5kZXJlckNvbXBvbmVudDxNIGV4dGVuZHMgTW9kZWw+XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXNcbntcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgbW9kZWwhOiBNIHwgc3RyaW5nO1xuXG4gIGNvbXBvbmVudCE6IHVua25vd247XG5cbiAgcHJvcHMhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICBjb250ZW50ITogeyBpZDogc3RyaW5nIH1bXVtdO1xuXG4gIG91dHB1dCE6IEZpZWxkRGVmaW5pdGlvbjxBbmd1bGFyRmllbGREZWZpbml0aW9uPjtcbiAgLy9cbiAgLy8gQFZpZXdDaGlsZCgnY29tcG9uZW50RWxlbWVudENvbnRhaW5lcicsIHtcbiAgLy8gICBzdGF0aWM6IHRydWUsXG4gIC8vICAgcmVhZDogVmlld0NvbnRhaW5lclJlZixcbiAgLy8gfSlcbiAgLy8gY29tcG9uZW50RWxlbWVudENvbnRhaW5lciE6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB2Y3I6IFZpZXdDb250YWluZXJSZWYpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5tb2RlbCA9XG4gICAgICB0eXBlb2YgdGhpcy5tb2RlbCA9PT0gJ3N0cmluZydcbiAgICAgICAgPyAoTW9kZWwuYnVpbGQoe30sIEpTT04ucGFyc2UodGhpcy5tb2RlbCkpIGFzIE0pXG4gICAgICAgIDogdGhpcy5tb2RlbDtcbiAgICAvLyB0aGlzLm91dHB1dCA9IFJlbmRlcmluZ0VuZ2luZS5yZW5kZXIodGhpcy5tb2RlbCBhcyB1bmtub3duIGFzIE1vZGVsKTtcbiAgICAvLyB0aGlzLmNvbXBvbmVudCA9IE5neFJlbmRlcmluZ0VuZ2luZS5jb21wb25lbnRzKHRoaXMub3V0cHV0LnRhZyk7XG4gICAgLy8gdGhpcy5wcm9wcyA9IHRoaXMub3V0cHV0LnByb3BzO1xuICAgIC8vIHRoaXMuY29udGVudCA9IHRoaXMub3V0cHV0LmNoaWxkcmVuPy5tYXAoKGNoaWxkKSA9PiB7XG4gICAgLy8gICByZXR1cm4gdGhpcy52Y3IuY3JlYXRlRW1iZWRkZWRWaWV3KCk7XG4gICAgLy8gfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ21vZGVsJ10pIHtcbiAgICAgIGNvbnN0IHsgY3VycmVudFZhbHVlLCBwcmV2aW91c1ZhbHVlLCBmaXJzdENoYW5nZSB9ID0gY2hhbmdlc1snbW9kZWwnXTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXNbJ2RldGFpbHMnXSkge1xuICAgICAgY29uc3QgeyBjdXJyZW50VmFsdWUsIHByZXZpb3VzVmFsdWUsIGZpcnN0Q2hhbmdlIH0gPSBjaGFuZ2VzWydkZXRhaWxzJ107XG4gICAgfVxuICB9XG4gIC8vIC8vXG4gIC8vIG5nT25EZXN0cm95KCk6IHZvaWQge31cbn1cbiIsIjwhLS08ZGl2ICNsb2FkaW5nRWxlbWVudD4tLT5cbjwhLS0gIDxpb24tc2tlbGV0b24tdGV4dCBbYW5pbWF0ZWRdPVwidHJ1ZVwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+PC9pb24tc2tlbGV0b24tdGV4dD4tLT5cbjwhLS08L2Rpdj4tLT5cbkBpZiAob3V0cHV0Py5jaGlsZHJlbj8ubGVuZ3RoKXtcbiAgQGZvciAoaXRlbSBvZiBvdXRwdXQuY2hpbGRyZW47IHRyYWNrIGl0ZW0ucHJvcHMubmFtZSl7XG4gICAgPG5nLXRlbXBsYXRlPnt7aXRlbS5wcm9wcy5uYW1lfX08L25nLXRlbXBsYXRlPlxuICB9XG59XG48bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cImNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dHM6IHByb3BzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGNvbnRlbnQ7XCI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -1,23 +0,0 @@
1
- import { Directive, HostBinding, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class DecafFieldDirective {
4
- constructor() {
5
- this.name = this.fieldName;
6
- }
7
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DecafFieldDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DecafFieldDirective, isStandalone: true, selector: "[appDecafField]", inputs: { fieldName: ["appDecafField", "fieldName"] }, host: { properties: { "#name": "this.name" } }, ngImport: i0 }); }
9
- }
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DecafFieldDirective, decorators: [{
11
- type: Directive,
12
- args: [{
13
- selector: '[appDecafField]',
14
- standalone: true,
15
- }]
16
- }], ctorParameters: () => [], propDecorators: { fieldName: [{
17
- type: Input,
18
- args: [{ alias: 'appDecafField' }]
19
- }], name: [{
20
- type: HostBinding,
21
- args: ['#name']
22
- }] } });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjYWYtZmllbGQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9kaXJlY3RpdmVzL2RlY2FmLWZpZWxkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTTlELE1BQU0sT0FBTyxtQkFBbUI7SUFLOUI7UUFDRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDN0IsQ0FBQzsrR0FQVSxtQkFBbUI7bUdBQW5CLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFKL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixVQUFVLEVBQUUsSUFBSTtpQkFDakI7d0RBRW9DLFNBQVM7c0JBQTNDLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFO2dCQUVYLElBQUk7c0JBQXpCLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdEJpbmRpbmcsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1thcHBEZWNhZkZpZWxkXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIERlY2FmRmllbGREaXJlY3RpdmUge1xuICBASW5wdXQoeyBhbGlhczogJ2FwcERlY2FmRmllbGQnIH0pIGZpZWxkTmFtZSE6IHN0cmluZztcblxuICBASG9zdEJpbmRpbmcoJyNuYW1lJykgbmFtZSE6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLm5hbWUgPSB0aGlzLmZpZWxkTmFtZTtcbiAgfVxufVxuIl19
@@ -1,3 +0,0 @@
1
- export class DynamicModule {
2
- }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHluYW1pY01vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZW5naW5lL0R5bmFtaWNNb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFnQixhQUFhO0NBQUciLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgYWJzdHJhY3QgY2xhc3MgRHluYW1pY01vZHVsZSB7fVxuIl19