tuain-ng-forms-lib 15.2.12 → 17.0.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.
- package/esm2022/lib/classes/forms/action.mjs +78 -0
- package/esm2022/lib/classes/forms/element.mjs +18 -0
- package/esm2022/lib/classes/forms/field.mjs +458 -0
- package/esm2022/lib/classes/forms/form.mjs +581 -0
- package/esm2022/lib/classes/forms/piece-propagate.mjs +39 -0
- package/esm2022/lib/classes/forms/piece.mjs +126 -0
- package/esm2022/lib/classes/forms/section.mjs +139 -0
- package/esm2022/lib/classes/forms/subsection.mjs +81 -0
- package/esm2022/lib/classes/forms/table/action.mjs +38 -0
- package/esm2022/lib/classes/forms/table/column.mjs +74 -0
- package/esm2022/lib/classes/forms/table/row-data.mjs +116 -0
- package/esm2022/lib/classes/forms/table/table.mjs +481 -0
- package/esm2022/lib/components/elements/action.component.mjs +52 -0
- package/esm2022/lib/components/elements/field.component.mjs +112 -0
- package/esm2022/lib/components/elements/layout/element.component.mjs +21 -0
- package/esm2022/lib/components/elements/layout/form-error.component.mjs +23 -0
- package/esm2022/lib/components/elements/layout/form-header.component.mjs +23 -0
- package/esm2022/lib/components/elements/layout/piece.component.mjs +40 -0
- package/esm2022/lib/components/elements/layout/section.component.mjs +40 -0
- package/esm2022/lib/components/elements/layout/sub-section.component.mjs +40 -0
- package/esm2022/lib/components/elements/tables/table-record-action.component.mjs +67 -0
- package/esm2022/lib/components/elements/tables/table-record-field.component.mjs +31 -0
- package/esm2022/lib/components/elements/tables/table.component.mjs +95 -0
- package/esm2022/lib/components/forms/basic-form.mjs +1314 -0
- package/esm2022/lib/services/event-manager.service.mjs +43 -0
- package/esm2022/lib/services/form-manager.service.mjs +81 -0
- package/{esm2020 → esm2022}/lib/tuain-ng-forms-lib.module.mjs +29 -29
- package/{fesm2020 → fesm2022}/tuain-ng-forms-lib.mjs +331 -260
- package/{fesm2020 → fesm2022}/tuain-ng-forms-lib.mjs.map +1 -1
- package/lib/components/elements/action.component.d.ts +1 -1
- package/lib/components/elements/field.component.d.ts +1 -1
- package/lib/components/elements/layout/element.component.d.ts +1 -1
- package/lib/components/elements/layout/form-error.component.d.ts +1 -1
- package/lib/components/elements/layout/form-header.component.d.ts +1 -1
- package/lib/components/elements/layout/piece.component.d.ts +1 -1
- package/lib/components/elements/layout/section.component.d.ts +1 -1
- package/lib/components/elements/layout/sub-section.component.d.ts +1 -1
- package/lib/components/elements/tables/table-record-action.component.d.ts +1 -1
- package/lib/components/elements/tables/table-record-field.component.d.ts +1 -1
- package/lib/components/elements/tables/table.component.d.ts +1 -1
- package/lib/components/forms/basic-form.d.ts +1 -1
- package/package.json +7 -13
- package/esm2020/lib/classes/forms/action.mjs +0 -72
- package/esm2020/lib/classes/forms/element.mjs +0 -18
- package/esm2020/lib/classes/forms/field.mjs +0 -454
- package/esm2020/lib/classes/forms/form.mjs +0 -574
- package/esm2020/lib/classes/forms/piece-propagate.mjs +0 -38
- package/esm2020/lib/classes/forms/piece.mjs +0 -123
- package/esm2020/lib/classes/forms/section.mjs +0 -138
- package/esm2020/lib/classes/forms/subsection.mjs +0 -81
- package/esm2020/lib/classes/forms/table/action.mjs +0 -30
- package/esm2020/lib/classes/forms/table/column.mjs +0 -74
- package/esm2020/lib/classes/forms/table/row-data.mjs +0 -116
- package/esm2020/lib/classes/forms/table/table.mjs +0 -464
- package/esm2020/lib/components/elements/action.component.mjs +0 -55
- package/esm2020/lib/components/elements/field.component.mjs +0 -99
- package/esm2020/lib/components/elements/layout/element.component.mjs +0 -20
- package/esm2020/lib/components/elements/layout/form-error.component.mjs +0 -20
- package/esm2020/lib/components/elements/layout/form-header.component.mjs +0 -24
- package/esm2020/lib/components/elements/layout/piece.component.mjs +0 -40
- package/esm2020/lib/components/elements/layout/section.component.mjs +0 -39
- package/esm2020/lib/components/elements/layout/sub-section.component.mjs +0 -39
- package/esm2020/lib/components/elements/tables/table-record-action.component.mjs +0 -67
- package/esm2020/lib/components/elements/tables/table-record-field.component.mjs +0 -30
- package/esm2020/lib/components/elements/tables/table.component.mjs +0 -92
- package/esm2020/lib/components/forms/basic-form.mjs +0 -1310
- package/esm2020/lib/services/event-manager.service.mjs +0 -43
- package/esm2020/lib/services/form-manager.service.mjs +0 -80
- package/fesm2015/tuain-ng-forms-lib.mjs +0 -4305
- package/fesm2015/tuain-ng-forms-lib.mjs.map +0 -1
- /package/{esm2020 → esm2022}/lib/classes/forms/form.constants.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/file-manager.service.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/tuain-ng-forms-lib.mjs +0 -0
- /package/{tuain-ng-forms-lib.d.ts → index.d.ts} +0 -0
|
@@ -9,5 +9,5 @@ export declare class ActionComponent extends ElementComponent implements OnInit
|
|
|
9
9
|
start(): void;
|
|
10
10
|
activate(): void;
|
|
11
11
|
static ɵfac: i0.ɵɵFactoryDeclaration<ActionComponent, never>;
|
|
12
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ActionComponent, "lib-action", never, { "action": "action"; }, {}, never, ["*"], false>;
|
|
12
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ActionComponent, "lib-action", never, { "action": { "alias": "action"; "required": false; }; }, {}, never, ["*"], false, never>;
|
|
13
13
|
}
|
|
@@ -35,5 +35,5 @@ export declare class FieldComponent extends ElementComponent implements OnInit {
|
|
|
35
35
|
inputTyped(): void;
|
|
36
36
|
numberInputValidation(event: any): boolean;
|
|
37
37
|
static ɵfac: i0.ɵɵFactoryDeclaration<FieldComponent, never>;
|
|
38
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FieldComponent, "lib-field", never, { "field": "field"; }, {}, never, ["*"], false>;
|
|
38
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FieldComponent, "lib-field", never, { "field": { "alias": "field"; "required": false; }; }, {}, never, ["*"], false, never>;
|
|
39
39
|
}
|
|
@@ -4,5 +4,5 @@ export declare class ElementComponent extends PieceComponent {
|
|
|
4
4
|
element: any;
|
|
5
5
|
start(): void;
|
|
6
6
|
static ɵfac: i0.ɵɵFactoryDeclaration<ElementComponent, never>;
|
|
7
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ElementComponent, "lib-element", never, { "element": "element"; }, {}, never, ["*"], false>;
|
|
7
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ElementComponent, "lib-element", never, { "element": { "alias": "element"; "required": false; }; }, {}, never, ["*"], false, never>;
|
|
8
8
|
}
|
|
@@ -4,5 +4,5 @@ export declare class FormErrorComponent {
|
|
|
4
4
|
errorMessage: any;
|
|
5
5
|
errorType: any;
|
|
6
6
|
static ɵfac: i0.ɵɵFactoryDeclaration<FormErrorComponent, never>;
|
|
7
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FormErrorComponent, "lib-form-error", never, { "errorTitle": "errorTitle"; "errorMessage": "errorMessage"; "errorType": "errorType"; }, {}, never, ["*"], false>;
|
|
7
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FormErrorComponent, "lib-form-error", never, { "errorTitle": { "alias": "errorTitle"; "required": false; }; "errorMessage": { "alias": "errorMessage"; "required": false; }; "errorType": { "alias": "errorType"; "required": false; }; }, {}, never, ["*"], false, never>;
|
|
8
8
|
}
|
|
@@ -5,5 +5,5 @@ export declare class FormHeaderComponent {
|
|
|
5
5
|
goBackEvent: EventEmitter<void>;
|
|
6
6
|
goBackForm(): void;
|
|
7
7
|
static ɵfac: i0.ɵɵFactoryDeclaration<FormHeaderComponent, never>;
|
|
8
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FormHeaderComponent, "lib-form-header", never, { "form": "form"; }, { "goBackEvent": "goBackEvent"; }, never, ["*"], false>;
|
|
8
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FormHeaderComponent, "lib-form-header", never, { "form": { "alias": "form"; "required": false; }; }, { "goBackEvent": "goBackEvent"; }, never, ["*"], false, never>;
|
|
9
9
|
}
|
|
@@ -10,5 +10,5 @@ export declare class PieceComponent {
|
|
|
10
10
|
customProcessAttributeChange(attribute: string, value?: any): void;
|
|
11
11
|
customAttributeChange(subAttribute: string, value?: any): void;
|
|
12
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<PieceComponent, never>;
|
|
13
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<PieceComponent, "lib-piece", never, {}, {}, never, ["*"], false>;
|
|
13
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PieceComponent, "lib-piece", never, {}, {}, never, ["*"], false, never>;
|
|
14
14
|
}
|
|
@@ -6,5 +6,5 @@ export declare class SectionComponent extends PieceComponent implements OnInit {
|
|
|
6
6
|
ngOnInit(): void;
|
|
7
7
|
start(): void;
|
|
8
8
|
static ɵfac: i0.ɵɵFactoryDeclaration<SectionComponent, never>;
|
|
9
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SectionComponent, "lib-section", never, { "section": "section"; }, {}, never, ["*"], false>;
|
|
9
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SectionComponent, "lib-section", never, { "section": { "alias": "section"; "required": false; }; }, {}, never, ["*"], false, never>;
|
|
10
10
|
}
|
|
@@ -6,5 +6,5 @@ export declare class SubSectionComponent extends PieceComponent implements OnIni
|
|
|
6
6
|
ngOnInit(): void;
|
|
7
7
|
start(): void;
|
|
8
8
|
static ɵfac: i0.ɵɵFactoryDeclaration<SubSectionComponent, never>;
|
|
9
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SubSectionComponent, "lib-subsection", never, { "subSection": "subSection"; }, {}, never, ["*"], false>;
|
|
9
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SubSectionComponent, "lib-subsection", never, { "subSection": { "alias": "subSection"; "required": false; }; }, {}, never, ["*"], false, never>;
|
|
10
10
|
}
|
|
@@ -14,5 +14,5 @@ export declare class LibTableRecordActionComponent extends PieceComponent implem
|
|
|
14
14
|
onActivate(): void;
|
|
15
15
|
class(): void;
|
|
16
16
|
static ɵfac: i0.ɵɵFactoryDeclaration<LibTableRecordActionComponent, never>;
|
|
17
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<LibTableRecordActionComponent, "lib-table-record-action", never, { "recordId": "recordId"; "recordData": "recordData"; "action": "action"; }, { "actionSelected": "actionSelected"; }, never, ["*"], false>;
|
|
17
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<LibTableRecordActionComponent, "lib-table-record-action", never, { "recordId": { "alias": "recordId"; "required": false; }; "recordData": { "alias": "recordData"; "required": false; }; "action": { "alias": "action"; "required": false; }; }, { "actionSelected": "actionSelected"; }, never, ["*"], false, never>;
|
|
18
18
|
}
|
|
@@ -8,5 +8,5 @@ export declare class LibTableRecordFieldComponent implements OnInit {
|
|
|
8
8
|
ngOnInit(): void;
|
|
9
9
|
start(): void;
|
|
10
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<LibTableRecordFieldComponent, never>;
|
|
11
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<LibTableRecordFieldComponent, "lib-table-record-field", never, { "fieldCode": "fieldCode"; "fieldType": "fieldType"; "fieldValue": "fieldValue"; "column": "column"; }, {}, never, ["*"], false>;
|
|
11
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<LibTableRecordFieldComponent, "lib-table-record-field", never, { "fieldCode": { "alias": "fieldCode"; "required": false; }; "fieldType": { "alias": "fieldType"; "required": false; }; "fieldValue": { "alias": "fieldValue"; "required": false; }; "column": { "alias": "column"; "required": false; }; }, {}, never, ["*"], false, never>;
|
|
12
12
|
}
|
|
@@ -31,5 +31,5 @@ export declare class LibTableComponent extends ElementComponent implements OnIni
|
|
|
31
31
|
defaultProcessAttributeChange(attribute: string, value?: any): boolean;
|
|
32
32
|
filterHasChanged(column: any, values: any): void;
|
|
33
33
|
static ɵfac: i0.ɵɵFactoryDeclaration<LibTableComponent, never>;
|
|
34
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<LibTableComponent, "lib-table", never, { "table": "table"; "visibleRecords": "visibleRecords"; "waiting": "waiting"; }, {}, never, ["*"], false>;
|
|
34
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<LibTableComponent, "lib-table", never, { "table": { "alias": "table"; "required": false; }; "visibleRecords": { "alias": "visibleRecords"; "required": false; }; "waiting": { "alias": "waiting"; "required": false; }; }, {}, never, ["*"], false, never>;
|
|
35
35
|
}
|
|
@@ -237,5 +237,5 @@ export declare class BasicFormComponent extends FormStructureAndData {
|
|
|
237
237
|
*/
|
|
238
238
|
addTableGetDataFinish(code: string, callback: any, properties?: any): void;
|
|
239
239
|
static ɵfac: i0.ɵɵFactoryDeclaration<BasicFormComponent, never>;
|
|
240
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<BasicFormComponent, "ng-component", never, {}, {}, never, ["*"], false>;
|
|
240
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BasicFormComponent, "ng-component", never, {}, {}, never, ["*"], false, never>;
|
|
241
241
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tuain-ng-forms-lib",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "17.0.0",
|
|
4
4
|
"description": "Componentes y Clases Angular para la gestión de formularios TUAIN",
|
|
5
5
|
"author": "Mauricio Méndez, Imix Consulting",
|
|
6
6
|
"license": "MIT",
|
|
@@ -23,23 +23,17 @@
|
|
|
23
23
|
"tslib": "^2.4.0",
|
|
24
24
|
"yn": "^5.0.0"
|
|
25
25
|
},
|
|
26
|
-
"module": "
|
|
27
|
-
"
|
|
28
|
-
"esm2020": "esm2020/tuain-ng-forms-lib.mjs",
|
|
29
|
-
"fesm2020": "fesm2020/tuain-ng-forms-lib.mjs",
|
|
30
|
-
"fesm2015": "fesm2015/tuain-ng-forms-lib.mjs",
|
|
31
|
-
"typings": "tuain-ng-forms-lib.d.ts",
|
|
26
|
+
"module": "fesm2022/tuain-ng-forms-lib.mjs",
|
|
27
|
+
"typings": "index.d.ts",
|
|
32
28
|
"exports": {
|
|
33
29
|
"./package.json": {
|
|
34
30
|
"default": "./package.json"
|
|
35
31
|
},
|
|
36
32
|
".": {
|
|
37
|
-
"types": "./
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"node": "./fesm2015/tuain-ng-forms-lib.mjs",
|
|
42
|
-
"default": "./fesm2020/tuain-ng-forms-lib.mjs"
|
|
33
|
+
"types": "./index.d.ts",
|
|
34
|
+
"esm2022": "./esm2022/tuain-ng-forms-lib.mjs",
|
|
35
|
+
"esm": "./esm2022/tuain-ng-forms-lib.mjs",
|
|
36
|
+
"default": "./fesm2022/tuain-ng-forms-lib.mjs"
|
|
43
37
|
}
|
|
44
38
|
},
|
|
45
39
|
"sideEffects": false
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { Subject } from 'rxjs';
|
|
2
|
-
import { elementTypes } from './form.constants';
|
|
3
|
-
import { FormElement } from './element';
|
|
4
|
-
const HEADER = 'HEADER';
|
|
5
|
-
export class FormAction extends FormElement {
|
|
6
|
-
constructor(actionDefinition, formConfig) {
|
|
7
|
-
super(actionDefinition, formConfig);
|
|
8
|
-
this._actionActivated = new Subject();
|
|
9
|
-
this.inProgress = false;
|
|
10
|
-
this.restrictedOnField = null;
|
|
11
|
-
this.restrictedOnOperator = null;
|
|
12
|
-
this.restrictedOnValue = null;
|
|
13
|
-
this.propagationCustomAttributes = this._formConfig?.propagationCustomAttributes?.actions ?? [];
|
|
14
|
-
this.elementType = elementTypes.action;
|
|
15
|
-
this.actionCode = actionDefinition.actionCode ? actionDefinition.actionCode.toString() : '';
|
|
16
|
-
this.actionName = actionDefinition.actionTitle;
|
|
17
|
-
this.iconName = actionDefinition.iconName || this.actionCode;
|
|
18
|
-
this.setCustomAttribute('location', actionDefinition.position || HEADER);
|
|
19
|
-
this.backend = actionDefinition?.serverAction ?? false;
|
|
20
|
-
this.newState = actionDefinition?.newState;
|
|
21
|
-
this.restrictedOnField = actionDefinition.fieldRestrictedCode?.toString() ?? null;
|
|
22
|
-
if (this.restrictedOnField) {
|
|
23
|
-
this.restrictedOnOperator = actionDefinition.operatorRestricted || '';
|
|
24
|
-
this.restrictedOnValue = actionDefinition.valueRestricted ?? '';
|
|
25
|
-
}
|
|
26
|
-
this.customValidation = () => true;
|
|
27
|
-
}
|
|
28
|
-
connectWithParentForm(form, formChangeSubject) {
|
|
29
|
-
super.connectWithParentForm(form, formChangeSubject);
|
|
30
|
-
if (this.restrictedOnField) {
|
|
31
|
-
const relatedField = this._form.fields?.[this.restrictedOnField];
|
|
32
|
-
if (relatedField) {
|
|
33
|
-
relatedField.editionFinish.subscribe(event => this.updateRestrictedVisibility());
|
|
34
|
-
relatedField.editionPartial.subscribe(event => this.updateRestrictedVisibility());
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
updateRestrictedVisibility() {
|
|
39
|
-
const lastVisible = this._visible;
|
|
40
|
-
const newVisible = this._absoluteVisible && this.viewOnState(this._formState);
|
|
41
|
-
if (lastVisible !== newVisible) {
|
|
42
|
-
this.setVisibility(newVisible);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
viewOnState(state) {
|
|
46
|
-
const actionVisible = (this.visibleStates && state) ? this.visibleStates.includes(state) : false;
|
|
47
|
-
if (actionVisible && this._form && this.restrictedOnField) {
|
|
48
|
-
const relatedField = this._form.fields?.[this.restrictedOnField];
|
|
49
|
-
if (relatedField) {
|
|
50
|
-
const fieldValue = relatedField.value;
|
|
51
|
-
if ((this.restrictedOnOperator === '==' && fieldValue !== this.restrictedOnValue)
|
|
52
|
-
|| (this.restrictedOnOperator === '!=' && fieldValue === this.restrictedOnValue)) {
|
|
53
|
-
return false;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return actionVisible;
|
|
58
|
-
}
|
|
59
|
-
get actionActivated() { return this._actionActivated; }
|
|
60
|
-
start() { this.inProgress = true; }
|
|
61
|
-
stop() { this.inProgress = false; }
|
|
62
|
-
notifyActivation() { this._actionActivated.next(this.actionCode); }
|
|
63
|
-
updateFromServer(receivedAction) {
|
|
64
|
-
for (const propertyName in receivedAction) {
|
|
65
|
-
if (propertyName !== 'actionCode' && propertyName !== 'actionId') {
|
|
66
|
-
this[propertyName] = receivedAction[propertyName];
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
setCustomValidation(callback) { this.customValidation = () => callback(); }
|
|
71
|
-
}
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVhaW4tbmctZm9ybXMtbGliL3NyYy9saWIvY2xhc3Nlcy9mb3Jtcy9hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV4QyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7QUFFeEIsTUFBTSxPQUFPLFVBQVcsU0FBUSxXQUFXO0lBY3pDLFlBQVksZ0JBQWdCLEVBQUUsVUFBVTtRQUN0QyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFkckIscUJBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUkxRCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBSW5CLHNCQUFpQixHQUFrQixJQUFJLENBQUM7UUFDeEMseUJBQW9CLEdBQWtCLElBQUksQ0FBQztRQUMzQyxzQkFBaUIsR0FBa0IsSUFBSSxDQUFDO1FBS3RDLElBQUksQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLDJCQUEyQixFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDaEcsSUFBSSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM1RixJQUFJLENBQUMsVUFBVSxHQUFHLGdCQUFnQixDQUFDLFdBQVcsQ0FBQztRQUMvQyxJQUFJLENBQUMsUUFBUSxHQUFHLGdCQUFnQixDQUFDLFFB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QixDQUFDLENBQUMsQ0FBQztJQUV2RCxLQUFLLEtBQUssSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25DLElBQUksS0FBSyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFFbkMsZ0JBQWdCLEtBQUssSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRW5FLGdCQUFnQixDQUFDLGNBQWM7UUFDN0IsS0FBSyxNQUFNLFlBQVksSUFBSSxjQUFjLEVBQUU7WUFDekMsSUFBSSxZQUFZLEtBQUssWUFBWSxJQUFJLFlBQVksS0FBSyxVQUFVLEVBQUU7Z0JBQ2hFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDbkQ7U0FDRjtJQUNILENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGdCQUFnQixHQUFHLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUM1RSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGVsZW1lbnRUeXBlcyB9IGZyb20gJy4vZm9ybS5jb25zdGFudHMnO1xuaW1wb3J0IHsgRm9ybUVsZW1lbnQgfSBmcm9tICcuL2VsZW1lbnQnO1xuXG5jb25zdCBIRUFERVIgPSAnSEVBREVSJztcblxuZXhwb3J0IGNsYXNzIEZvcm1BY3Rpb24gZXh0ZW5kcyBGb3JtRWxlbWVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FjdGlvbkFjdGl2YXRlZCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgYWN0aW9uQ29kZTogc3RyaW5nO1xuICBhY3Rpb25OYW1lOiBzdHJpbmc7XG4gIGljb25OYW1lOiBzdHJpbmc7XG4gIGluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgbmV3U3RhdGU6IHN0cmluZztcbiAgYmFja2VuZDogYm9vbGVhbjtcblxuICByZXN0cmljdGVkT25GaWVsZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHJlc3RyaWN0ZWRPbk9wZXJhdG9yOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcmVzdHJpY3RlZE9uVmFsdWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBjdXN0b21WYWxpZGF0aW9uOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoYWN0aW9uRGVmaW5pdGlvbiwgZm9ybUNvbmZpZykge1xuICAgIHN1cGVyKGFjdGlvbkRlZmluaXRpb24sIGZvcm1Db25maWcpO1xuICAgIHRoaXMucHJvcGFnYXRpb25DdXN0b21BdHRyaWJ1dGVzID0gdGhpcy5fZm9ybUNvbmZpZz8ucHJvcGFnYXRpb25DdXN0b21BdHRyaWJ1dGVzPy5hY3Rpb25zID8/IFtdO1xuICAgIHRoaXMuZWxlbWVudFR5cGUgPSBlbGVtZW50VHlwZXMuYWN0aW9uO1xuICAgIHRoaXMuYWN0aW9uQ29kZSA9IGFjdGlvbkRlZmluaXRpb24uYWN0aW9uQ29kZSA/IGFjdGlvbkRlZmluaXRpb24uYWN0aW9uQ29kZS50b1N0cmluZygpIDogJyc7XG4gICAgdGhpcy5hY3Rpb25OYW1lID0gYWN0aW9uRGVmaW5pdGlvbi5hY3Rpb25UaXRsZTtcbiAgICB0aGlzLmljb25OYW1lID0gYWN0aW9uRGVmaW5pdGlvbi5pY29uTmFtZSB8fCB0aGlzLmFjdGlvbkNvZGU7XG4gICAgdGhpcy5zZXRDdXN0b21BdHRyaWJ1dGUoJ2xvY2F0aW9uJywgYWN0aW9uRGVmaW5pdGlvbi5wb3NpdGlvbiB8fCBIRUFERVIpO1xuICAgIHRoaXMuYmFja2VuZCA9IGFjdGlvbkRlZmluaXRpb24/LnNlcnZlckFjdGlvbiA/PyBmYWxzZTtcbiAgICB0aGlzLm5ld1N0YXRlID0gYWN0aW9uRGVmaW5pdGlvbj8ubmV3U3RhdGU7XG5cbiAgICB0aGlzLnJlc3RyaWN0ZWRPbkZpZWxkID0gYWN0aW9uRGVmaW5pdGlvbi5maWVsZFJlc3RyaWN0ZWRDb2RlPy50b1N0cmluZygpID8/IG51bGw7XG4gICAgaWYgKHRoaXMucmVzdHJpY3RlZE9uRmllbGQpIHtcbiAgICAgIHRoaXMucmVzdHJpY3RlZE9uT3BlcmF0b3IgPSBhY3Rpb25EZWZpbml0aW9uLm9wZXJhdG9yUmVzdHJpY3RlZCB8fCAnJztcbiAgICAgIHRoaXMucmVzdHJpY3RlZE9uVmFsdWUgPSBhY3Rpb25EZWZpbml0aW9uLnZhbHVlUmVzdHJpY3RlZCA/PyAnJztcbiAgICB9XG4gICAgdGhpcy5jdXN0b21WYWxpZGF0aW9uID0gKCkgPT4gdHJ1ZTtcbiAgfVxuXG4gIG92ZXJyaWRlIGNvbm5lY3RXaXRoUGFyZW50Rm9ybShmb3JtLCBmb3JtQ2hhbmdlU3ViamVjdCkge1xuICAgIHN1cGVyLmNvbm5lY3RXaXRoUGFyZW50Rm9ybShmb3JtLCBmb3JtQ2hhbmdlU3ViamVjdCk7XG4gICAgaWYgKHRoaXMucmVzdHJpY3RlZE9uRmllbGQpIHtcbiAgICAgIGNvbnN0IHJlbGF0ZWRGaWVsZCA9IHRoaXMuX2Zvcm0uZmllbGRzPy5bdGhpcy5yZXN0cmljdGVkT25GaWVsZF07XG4gICAgICBpZiAocmVsYXRlZEZpZWxkKSB7XG4gICAgICAgIHJlbGF0ZWRGaWVsZC5lZGl0aW9uRmluaXNoLnN1YnNjcmliZShldmVudCA9PiB0aGlzLnVwZGF0ZVJlc3RyaWN0ZWRWaXNpYmlsaXR5KCkpO1xuICAgICAgICByZWxhdGVkRmllbGQuZWRpdGlvblBhcnRpYWwuc3Vic2NyaWJlKGV2ZW50ID0+IHRoaXMudXBkYXRlUmVzdHJpY3RlZFZpc2liaWxpdHkoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlUmVzdHJpY3RlZFZpc2liaWxpdHkoKSB7XG4gICAgY29uc3QgbGFzdFZpc2libGUgPSAgdGhpcy5fdmlzaWJsZTtcbiAgICBjb25zdCBuZXdWaXNpYmxlID0gdGhpcy5fYWJzb2x1dGVWaXNpYmxlICYmIHRoaXMudmlld09uU3RhdGUodGhpcy5fZm9ybVN0YXRlKTtcbiAgICBpZiAobGFzdFZpc2libGUgIT09IG5ld1Zpc2libGUpIHtcbiAgICAgIHRoaXMuc2V0VmlzaWJpbGl0eShuZXdWaXNpYmxlKTtcbiAgICB9XG4gIH1cblxuICBvdmVycmlkZSB2aWV3T25TdGF0ZShzdGF0ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgYWN0aW9uVmlzaWJsZSA9ICh0aGlzLnZpc2libGVTdGF0ZXMgJiYgc3RhdGUpID8gdGhpcy52aXNpYmxlU3RhdGVzLmluY2x1ZGVzKHN0YXRlKSA6IGZhbHNlO1xuICAgIGlmIChhY3Rpb25WaXNpYmxlICYmIHRoaXMuX2Zvcm0gJiYgdGhpcy5yZXN0cmljdGVkT25GaWVsZCkge1xuICAgICAgY29uc3QgcmVsYXRlZEZpZWxkID0gdGhpcy5fZm9ybS5maWVsZHM/Llt0aGlzLnJlc3RyaWN0ZWRPbkZpZWxkXTtcbiAgICAgIGlmIChyZWxhdGVkRmllbGQpIHtcbiAgICAgICAgY29uc3QgZmllbGRWYWx1ZSA9IHJlbGF0ZWRGaWVsZC52YWx1ZTtcbiAgICAgICAgaWYgKCh0aGlzLnJlc3RyaWN0ZWRPbk9wZXJhdG9yID09PSAnPT0nICYmIGZpZWxkVmFsdWUgIT09IHRoaXMucmVzdHJpY3RlZE9uVmFsdWUpXG4gICAgICAgICAgfHwgKHRoaXMucmVzdHJpY3RlZE9uT3BlcmF0b3IgPT09ICchPScgJiYgZmllbGRWYWx1ZSA9PT0gdGhpcy5yZXN0cmljdGVkT25WYWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYWN0aW9uVmlzaWJsZTtcbiAgfVxuXG4gIGdldCBhY3Rpb25BY3RpdmF0ZWQoKSB7IHJldHVybiB0aGlzLl9hY3Rpb25BY3RpdmF0ZWQ7IH1cblxuICBzdGFydCgpIHsgdGhpcy5pblByb2dyZXNzID0gdHJ1ZTsgfVxuICBzdG9wKCkgeyB0aGlzLmluUHJvZ3Jlc3MgPSBmYWxzZTsgfVxuXG4gIG5vdGlmeUFjdGl2YXRpb24oKSB7IHRoaXMuX2FjdGlvbkFjdGl2YXRlZC5uZXh0KHRoaXMuYWN0aW9uQ29kZSk7IH1cblxuICB1cGRhdGVGcm9tU2VydmVyKHJlY2VpdmVkQWN0aW9uKSB7XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eU5hbWUgaW4gcmVjZWl2ZWRBY3Rpb24pIHtcbiAgICAgIGlmIChwcm9wZXJ0eU5hbWUgIT09ICdhY3Rpb25Db2RlJyAmJiBwcm9wZXJ0eU5hbWUgIT09ICdhY3Rpb25JZCcpIHtcbiAgICAgICAgdGhpc1twcm9wZXJ0eU5hbWVdID0gcmVjZWl2ZWRBY3Rpb25bcHJvcGVydHlOYW1lXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRDdXN0b21WYWxpZGF0aW9uKGNhbGxiYWNrKSB7IHRoaXMuY3VzdG9tVmFsaWRhdGlvbiA9ICgpID0+IGNhbGxiYWNrKCk7IH1cbn1cbiJdfQ==
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { FormPiecePropagate } from './piece-propagate';
|
|
2
|
-
import { elementTypes } from './form.constants';
|
|
3
|
-
export class FormElement extends FormPiecePropagate {
|
|
4
|
-
constructor(elementDefinition, formConfig) {
|
|
5
|
-
super(elementDefinition, formConfig);
|
|
6
|
-
this.elementType = null;
|
|
7
|
-
}
|
|
8
|
-
;
|
|
9
|
-
setAttr(attr, value) {
|
|
10
|
-
const { name: attrName, propagate: name } = attr;
|
|
11
|
-
this[attrName] = value;
|
|
12
|
-
name && this.propagateAttribute(name, value);
|
|
13
|
-
}
|
|
14
|
-
isField() { return this.elementType === elementTypes.field; }
|
|
15
|
-
isAction() { return this.elementType === elementTypes.action; }
|
|
16
|
-
isTable() { return this.elementType === elementTypes.table; }
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvZWxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsTUFBTSxPQUFPLFdBQVksU0FBUSxrQkFBa0I7SUFHakQsWUFBWSxpQkFBc0IsRUFBRSxVQUFlO1FBQ2pELEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUh2QyxnQkFBVyxHQUFrQixJQUFJLENBQUM7SUFJbEMsQ0FBQztJQUppQyxDQUFDO0lBTW5DLE9BQU8sQ0FBQyxJQUFTLEVBQUUsS0FBVTtRQUMzQixNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ2pELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELE9BQU8sS0FBYyxPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdEUsUUFBUSxLQUFjLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN4RSxPQUFPLEtBQWMsT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0NBQ3ZFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybVBpZWNlUHJvcGFnYXRlIH0gZnJvbSAnLi9waWVjZS1wcm9wYWdhdGUnO1xuaW1wb3J0IHsgZWxlbWVudFR5cGVzIH0gZnJvbSAnLi9mb3JtLmNvbnN0YW50cyc7XG5leHBvcnQgY2xhc3MgRm9ybUVsZW1lbnQgZXh0ZW5kcyBGb3JtUGllY2VQcm9wYWdhdGUge1xuICBlbGVtZW50VHlwZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7O1xuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnREZWZpbml0aW9uOiBhbnksIGZvcm1Db25maWc6IGFueSkge1xuICAgIHN1cGVyKGVsZW1lbnREZWZpbml0aW9uLCBmb3JtQ29uZmlnKTtcbiAgfVxuXG4gIHNldEF0dHIoYXR0cjogYW55LCB2YWx1ZTogYW55KSB7XG4gICAgY29uc3QgeyBuYW1lOiBhdHRyTmFtZSwgcHJvcGFnYXRlOiBuYW1lIH0gPSBhdHRyO1xuICAgIHRoaXNbYXR0ck5hbWVdID0gdmFsdWU7XG4gICAgbmFtZSAmJiB0aGlzLnByb3BhZ2F0ZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7XG4gIH1cblxuICBpc0ZpZWxkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5lbGVtZW50VHlwZSA9PT0gZWxlbWVudFR5cGVzLmZpZWxkOyB9XG4gIGlzQWN0aW9uKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5lbGVtZW50VHlwZSA9PT0gZWxlbWVudFR5cGVzLmFjdGlvbjsgfVxuICBpc1RhYmxlKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5lbGVtZW50VHlwZSA9PT0gZWxlbWVudFR5cGVzLnRhYmxlOyB9XG59XG4iXX0=
|