tuain-ng-forms-lib 17.2.20 → 17.2.22
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/.browserslistrc +16 -0
- package/.yarn/cache/nanoid-npm-4.0.0-924f5c6312-7d5946df5c.zip +0 -0
- package/.yarn/cache/tslib-npm-2.4.1-36f0ed04db-19480d6e03.zip +0 -0
- package/.yarn/cache/yn-npm-5.0.0-b001dab23c-f0ec7710d3.zip +0 -0
- package/.yarn/install-state.gz +0 -0
- package/karma.conf.js +44 -0
- package/ng-package.json +11 -0
- package/package.json +2 -16
- package/src/lib/classes/forms/action.ts +117 -0
- package/src/lib/classes/forms/element.ts +26 -0
- package/src/lib/classes/forms/field.ts +522 -0
- package/src/lib/classes/forms/form.constants.ts +28 -0
- package/src/lib/classes/forms/form.ts +692 -0
- package/src/lib/classes/forms/piece-propagate.ts +47 -0
- package/src/lib/classes/forms/piece.ts +164 -0
- package/src/lib/classes/forms/section.ts +165 -0
- package/src/lib/classes/forms/subsection.ts +109 -0
- package/src/lib/classes/forms/table/action.ts +41 -0
- package/src/lib/classes/forms/table/column.ts +94 -0
- package/src/lib/classes/forms/table/row-data.ts +121 -0
- package/src/lib/classes/forms/table/table.ts +582 -0
- package/src/lib/components/elements/action.component.ts +70 -0
- package/src/lib/components/elements/field.component.ts +115 -0
- package/src/lib/components/elements/layout/element.component.ts +14 -0
- package/src/lib/components/elements/layout/form-error.component.ts +11 -0
- package/src/lib/components/elements/layout/form-header.component.ts +14 -0
- package/src/lib/components/elements/layout/piece.component.ts +60 -0
- package/src/lib/components/elements/layout/section.component.ts +52 -0
- package/src/lib/components/elements/layout/sub-section.component.ts +52 -0
- package/src/lib/components/elements/tables/table-record-action.component.ts +66 -0
- package/src/lib/components/elements/tables/table-record-field.component.ts +20 -0
- package/src/lib/components/elements/tables/table.component.ts +112 -0
- package/src/lib/components/forms/basic-form.ts +1464 -0
- package/src/lib/services/event-manager.service.ts +45 -0
- package/src/lib/services/file-manager.service.ts +7 -0
- package/src/lib/services/form-manager.service.ts +89 -0
- package/src/lib/services/icon-dictionary.service.ts +159 -0
- package/src/lib/tuain-ng-forms-lib.module.ts +40 -0
- package/{public-api.d.ts → src/public-api.ts} +5 -0
- package/src/test.ts +27 -0
- package/tsconfig.lib.json +15 -0
- package/tsconfig.lib.prod.json +10 -0
- package/tsconfig.spec.json +17 -0
- package/esm2022/lib/classes/forms/action.mjs +0 -106
- package/esm2022/lib/classes/forms/element.mjs +0 -25
- package/esm2022/lib/classes/forms/field.mjs +0 -473
- package/esm2022/lib/classes/forms/form.constants.mjs +0 -26
- package/esm2022/lib/classes/forms/form.mjs +0 -608
- package/esm2022/lib/classes/forms/piece-propagate.mjs +0 -39
- package/esm2022/lib/classes/forms/piece.mjs +0 -134
- package/esm2022/lib/classes/forms/section.mjs +0 -151
- package/esm2022/lib/classes/forms/subsection.mjs +0 -99
- package/esm2022/lib/classes/forms/table/action.mjs +0 -38
- package/esm2022/lib/classes/forms/table/column.mjs +0 -74
- package/esm2022/lib/classes/forms/table/row-data.mjs +0 -116
- package/esm2022/lib/classes/forms/table/table.mjs +0 -541
- package/esm2022/lib/components/elements/action.component.mjs +0 -70
- package/esm2022/lib/components/elements/field.component.mjs +0 -115
- package/esm2022/lib/components/elements/layout/element.component.mjs +0 -21
- package/esm2022/lib/components/elements/layout/form-error.component.mjs +0 -23
- package/esm2022/lib/components/elements/layout/form-header.component.mjs +0 -23
- package/esm2022/lib/components/elements/layout/piece.component.mjs +0 -64
- package/esm2022/lib/components/elements/layout/section.component.mjs +0 -56
- package/esm2022/lib/components/elements/layout/sub-section.component.mjs +0 -56
- package/esm2022/lib/components/elements/tables/table-record-action.component.mjs +0 -72
- package/esm2022/lib/components/elements/tables/table-record-field.component.mjs +0 -31
- package/esm2022/lib/components/elements/tables/table.component.mjs +0 -109
- package/esm2022/lib/components/forms/basic-form.mjs +0 -1399
- package/esm2022/lib/services/event-manager.service.mjs +0 -43
- package/esm2022/lib/services/file-manager.service.mjs +0 -7
- package/esm2022/lib/services/form-manager.service.mjs +0 -81
- package/esm2022/lib/tuain-ng-forms-lib.module.mjs +0 -71
- package/esm2022/public-api.mjs +0 -19
- package/esm2022/tuain-ng-forms-lib.mjs +0 -5
- package/fesm2022/tuain-ng-forms-lib.mjs +0 -4598
- package/fesm2022/tuain-ng-forms-lib.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/classes/forms/action.d.ts +0 -40
- package/lib/classes/forms/element.d.ts +0 -9
- package/lib/classes/forms/field.d.ts +0 -206
- package/lib/classes/forms/form.constants.d.ts +0 -25
- package/lib/classes/forms/form.d.ts +0 -232
- package/lib/classes/forms/piece-propagate.d.ts +0 -13
- package/lib/classes/forms/piece.d.ts +0 -51
- package/lib/classes/forms/section.d.ts +0 -43
- package/lib/classes/forms/subsection.d.ts +0 -42
- package/lib/classes/forms/table/action.d.ts +0 -16
- package/lib/classes/forms/table/column.d.ts +0 -33
- package/lib/classes/forms/table/row-data.d.ts +0 -14
- package/lib/classes/forms/table/table.d.ts +0 -145
- package/lib/components/elements/action.component.d.ts +0 -22
- package/lib/components/elements/field.component.d.ts +0 -47
- package/lib/components/elements/layout/element.component.d.ts +0 -8
- package/lib/components/elements/layout/form-error.component.d.ts +0 -8
- package/lib/components/elements/layout/form-header.component.d.ts +0 -9
- package/lib/components/elements/layout/piece.component.d.ts +0 -18
- package/lib/components/elements/layout/section.component.d.ts +0 -13
- package/lib/components/elements/layout/sub-section.component.d.ts +0 -13
- package/lib/components/elements/tables/table-record-action.component.d.ts +0 -18
- package/lib/components/elements/tables/table-record-field.component.d.ts +0 -12
- package/lib/components/elements/tables/table.component.d.ts +0 -44
- package/lib/components/forms/basic-form.d.ts +0 -256
- package/lib/services/event-manager.service.d.ts +0 -11
- package/lib/services/file-manager.service.d.ts +0 -6
- package/lib/services/form-manager.service.d.ts +0 -28
- package/lib/tuain-ng-forms-lib.module.d.ts +0 -20
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Subject, BehaviorSubject, ReplaySubject } from 'rxjs';
|
|
2
|
+
|
|
3
|
+
export class LibEventManagerService {
|
|
4
|
+
eventSubjects: any = {};
|
|
5
|
+
eventSubjectParams: any = {};
|
|
6
|
+
|
|
7
|
+
constructor(eventSet: any[]) {
|
|
8
|
+
eventSet.forEach((event) => { this.addEventName(event); });
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
addEventName(event: any, rebuild = false) {
|
|
12
|
+
const eventObject = (typeof event === 'string') ? { name: event } : event;
|
|
13
|
+
const { name, type, initialValue, windowTime, timestampProvider } = eventObject;
|
|
14
|
+
const currentSubject = this.eventSubjects[name];
|
|
15
|
+
if (rebuild || !currentSubject) {
|
|
16
|
+
if (type === 'behaviour') {
|
|
17
|
+
const newEventSubject: BehaviorSubject<any> = new BehaviorSubject(initialValue);
|
|
18
|
+
this.eventSubjects[name] = newEventSubject;
|
|
19
|
+
} else if (type === 'subject') {
|
|
20
|
+
const newEventSubject: Subject<any> = new Subject();
|
|
21
|
+
this.eventSubjects[name] = newEventSubject;
|
|
22
|
+
} else {
|
|
23
|
+
const newEventSubject: ReplaySubject<any> = new ReplaySubject(initialValue, windowTime, timestampProvider);
|
|
24
|
+
this.eventSubjects[name] = newEventSubject;
|
|
25
|
+
}
|
|
26
|
+
this.eventSubjectParams[name] = { name: name, windowTime, timestampProvider };
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
resetSubject(eventClassName) {
|
|
31
|
+
const { name, windowTime, timestampProvider } = this.eventSubjectParams[eventClassName];
|
|
32
|
+
return this.addEventName({ name, windowTime, timestampProvider });
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
getEventNames() { return Object.keys(this.eventSubjects); }
|
|
36
|
+
getSubject(eventClassName) { return eventClassName ? this.eventSubjects[eventClassName] : null; }
|
|
37
|
+
subscribe(eventClassName, callback) { return this.getSubject(eventClassName).subscribe(callback); }
|
|
38
|
+
next(eventClassName, data) {
|
|
39
|
+
const subject = this.getSubject(eventClassName);
|
|
40
|
+
if (!subject) {
|
|
41
|
+
console.log(`No se encontró subject ${eventClassName}`);
|
|
42
|
+
}
|
|
43
|
+
subject.next(data);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { nanoid } from 'nanoid';
|
|
2
|
+
|
|
3
|
+
export class LibFormManagerService {
|
|
4
|
+
pageStack: any[];
|
|
5
|
+
|
|
6
|
+
constructor() {
|
|
7
|
+
this.cleanStack();
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// Métodos virtuales para las aplicaciones
|
|
11
|
+
getFormDefinition(formCode) { }
|
|
12
|
+
execServerAction(actionDetail) { }
|
|
13
|
+
goToForm(formCode, token, subject) { }
|
|
14
|
+
async loadStack() { }
|
|
15
|
+
saveStack() { }
|
|
16
|
+
|
|
17
|
+
cleanStack() { this.pageStack = []; }
|
|
18
|
+
resetPageStack() { this.cleanStack() }
|
|
19
|
+
|
|
20
|
+
findFormInStack(token) {
|
|
21
|
+
const index = this.pageStack.findIndex(item => item?.token === token);
|
|
22
|
+
const data = (index >= 0) ? this.pageStack[index] : null;
|
|
23
|
+
return { index, data };
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
replaceItem(token, formInfo) {
|
|
27
|
+
if (!token || !formInfo) { return; }
|
|
28
|
+
const { index, data: storedForm } = this.findFormInStack(token);
|
|
29
|
+
let updatedForm: any = null;
|
|
30
|
+
if (index >= 0) {
|
|
31
|
+
updatedForm = { ...storedForm };
|
|
32
|
+
updatedForm.subject = formInfo?.subject ?? storedForm.subject;
|
|
33
|
+
updatedForm.state = formInfo?.state ?? storedForm.state;
|
|
34
|
+
updatedForm.fields = storedForm?.fields ?? {};
|
|
35
|
+
updatedForm.extra = storedForm?.extra ?? {};
|
|
36
|
+
if (formInfo.fields) {
|
|
37
|
+
Object.assign(updatedForm.fields, formInfo.fields);
|
|
38
|
+
}
|
|
39
|
+
if (formInfo.extra) {
|
|
40
|
+
Object.assign(updatedForm.extra, formInfo.extra);
|
|
41
|
+
}
|
|
42
|
+
this.pageStack[index] = updatedForm;
|
|
43
|
+
this.saveStack();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
stack(origin, target) {
|
|
48
|
+
const token = nanoid(6);
|
|
49
|
+
this.replaceItem(target.originToken, origin);
|
|
50
|
+
this.pageStack.push({ token, ...target });
|
|
51
|
+
this.saveStack();
|
|
52
|
+
return token;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
unstack(token = null) {
|
|
56
|
+
let index = (token) ? this.findFormInStack(token).index : this.pageStack.length - 2;
|
|
57
|
+
let formInfo = null;
|
|
58
|
+
if (index >= 0) {
|
|
59
|
+
formInfo = this.pageStack[index];
|
|
60
|
+
this.pageStack.splice(index + 1);
|
|
61
|
+
this.saveStack();
|
|
62
|
+
}
|
|
63
|
+
return formInfo;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
getFormInfo(token: string) {
|
|
67
|
+
const { data } = this.findFormInStack(token);
|
|
68
|
+
return {
|
|
69
|
+
token: data?.token,
|
|
70
|
+
subject: data?.subject,
|
|
71
|
+
state: data?.state,
|
|
72
|
+
originToken: data?.originToken,
|
|
73
|
+
fields: data?.fields ?? {},
|
|
74
|
+
extra: data?.extra ?? {}
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
openForm(origin: any, target: any) {
|
|
79
|
+
(!origin) && this.cleanStack();
|
|
80
|
+
target.originToken = origin?.token ?? null;
|
|
81
|
+
const token = this.stack(origin, target);
|
|
82
|
+
this.goToForm(target.name, token, target.subject);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
backTo(targetToken = null) {
|
|
86
|
+
const formInfo: any = this.unstack(targetToken);
|
|
87
|
+
formInfo && formInfo.name && this.goToForm(formInfo.name, formInfo.token, formInfo.subject);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
export const iconDictionary = {
|
|
2
|
+
SELECT: 'icmn-pushpin',
|
|
3
|
+
selectHolder: 'icmn-user-check',
|
|
4
|
+
validateAML: 'icmn-warning',
|
|
5
|
+
NEW: 'icmn-file-empty',
|
|
6
|
+
'FORM-CREATE': 'icmn-file-empty',
|
|
7
|
+
'FORM-EDIT': 'icmn-pencil2',
|
|
8
|
+
'FORM-VIEW': 'icmn-file-text2',
|
|
9
|
+
SHIELD: 'fa fa-shield',
|
|
10
|
+
LOGIN: 'fa fa-sign-in',
|
|
11
|
+
LOGOUT: 'fa fa-sign-out',
|
|
12
|
+
VIEW: 'icmn-eye',
|
|
13
|
+
EDIT: 'icmn-pencil',
|
|
14
|
+
DETAIL: 'icmn-binoculars',
|
|
15
|
+
DELETE: 'icmn-bin',
|
|
16
|
+
SERVERPROCESS: 'icmn-cloud-check',
|
|
17
|
+
DEFAULT: 'icmn-home',
|
|
18
|
+
HOME: 'icmn-home',
|
|
19
|
+
IMAGE: 'icmn-image',
|
|
20
|
+
PICTURE: 'icmn-camera',
|
|
21
|
+
TEXT: 'icmn-file-text',
|
|
22
|
+
MOVEUP: 'icmn-arrow-up',
|
|
23
|
+
MOVEDOWN: 'icmn-arrow-down',
|
|
24
|
+
NEWAFFILIATION: 'icmn-profile',
|
|
25
|
+
AUTONEWAFFILIATION: 'icmn-profile',
|
|
26
|
+
PROFILE: 'icmn-profile',
|
|
27
|
+
ZIPFILE: 'icmn-file-zip',
|
|
28
|
+
COPY: 'icmn-copy',
|
|
29
|
+
FOLDER: 'icmn-folder-open',
|
|
30
|
+
TAGS: 'icmn-price-tags',
|
|
31
|
+
BARCODE: 'icmn-barcode',
|
|
32
|
+
BARCODE2: 'fa fa-barcode',
|
|
33
|
+
KEYBOARD: 'fa fa-keyboard-o',
|
|
34
|
+
CART: 'icmn-cart',
|
|
35
|
+
CAMARACOMERCIO: 'icmn-book',
|
|
36
|
+
SARLAFT: 'icmn-binoculars',
|
|
37
|
+
SCREENING: 'icmn-user-check',
|
|
38
|
+
ENTITY: 'icmn-library',
|
|
39
|
+
COIN: 'icmn-coin-dollar',
|
|
40
|
+
CREDITCARD: 'icmn-credit-card',
|
|
41
|
+
CONTACTS: 'icmn-address-book',
|
|
42
|
+
LOCATION: 'icmn-location',
|
|
43
|
+
CODES: 'icmn-file-text',
|
|
44
|
+
BPMCODES: 'icmn-file-text2',
|
|
45
|
+
MAIL: 'icmn-envelop',
|
|
46
|
+
MAP: 'icmn-map',
|
|
47
|
+
WARNING: 'icmn-warning',
|
|
48
|
+
NOTIFICATION: 'icmn-notification',
|
|
49
|
+
QUESTION: 'icmn-question',
|
|
50
|
+
INFO: 'icmn-info',
|
|
51
|
+
SAVE: 'icmn-floppy-disk',
|
|
52
|
+
INBOXFULL: 'icmn-drawer',
|
|
53
|
+
INBOXEMPTY: 'icmn-drawer2',
|
|
54
|
+
DATABASE: 'icmn-database',
|
|
55
|
+
UNDO: 'icmn-undo2',
|
|
56
|
+
REDO: 'icmn-redo2',
|
|
57
|
+
CHAT: 'icmn-bubbles4',
|
|
58
|
+
BRIEFCASE: 'icmn-briefcase',
|
|
59
|
+
USER: 'icmn-user',
|
|
60
|
+
ADDUSER: 'icmn-user-plus',
|
|
61
|
+
REMOVEUSER: 'icmn-user-minus',
|
|
62
|
+
SPINNER: 'icmn-spiiner3',
|
|
63
|
+
SEARCH: 'icmn-search',
|
|
64
|
+
ZOOMIN: 'icmn-zoom-in',
|
|
65
|
+
ZOOMOUT: 'icmn-zoom-out',
|
|
66
|
+
KEY: 'icmn-key',
|
|
67
|
+
LOCK: 'icmn-lock',
|
|
68
|
+
lockDoc: 'icmn-lock',
|
|
69
|
+
UNLOCK: 'icmn-unlocked',
|
|
70
|
+
CONFIG: 'icmn-wrench',
|
|
71
|
+
TUNE: 'icmn-equalizer',
|
|
72
|
+
GEAR: 'icmn-cog',
|
|
73
|
+
ADMIN: 'fa fa-cogs',
|
|
74
|
+
LIST: 'icmn-list',
|
|
75
|
+
FORMRECORD: 'icmn-insert-template',
|
|
76
|
+
PIE: 'icmn-pie-chart',
|
|
77
|
+
GRAPH: 'icmn-stats-dots',
|
|
78
|
+
TROPHY: 'icmn-trophy',
|
|
79
|
+
GIFT: 'icmn-gift',
|
|
80
|
+
GAUGE: 'icmn-meter',
|
|
81
|
+
FIRE: 'icmn-fire',
|
|
82
|
+
LAB: 'icmn-lab',
|
|
83
|
+
DELIVER: 'icmn-truck',
|
|
84
|
+
MOBILE: 'icmn-mobile',
|
|
85
|
+
MOBILE2: 'icmn-mobile',
|
|
86
|
+
RECHARGE: 'icmn-power-cord',
|
|
87
|
+
TREE: 'icmn-tree',
|
|
88
|
+
EARTH: 'icmn-earth',
|
|
89
|
+
TARGET: 'icmn-target',
|
|
90
|
+
POWER: 'icmn-switch',
|
|
91
|
+
VERIFY: 'icmn-clipboard',
|
|
92
|
+
UPLOAD: 'icmn-cloud-upload',
|
|
93
|
+
DOWNLOAD: 'icmn-cloud-download',
|
|
94
|
+
DOWNLOADSET: 'icmn-cloud-download',
|
|
95
|
+
LINK: 'icmn-link',
|
|
96
|
+
ATACH: 'icmn-atachment',
|
|
97
|
+
EYE: 'icmn-eye',
|
|
98
|
+
NOEYE: 'icmn-eye-blocked',
|
|
99
|
+
BOOKMARK: 'icmn-bookmark',
|
|
100
|
+
STAR: 'icmn-star-full',
|
|
101
|
+
HEART: 'icmn-heart',
|
|
102
|
+
HEARTBROKEN: 'icmn-heart-broken',
|
|
103
|
+
HAPPY: 'icmn-happy',
|
|
104
|
+
SAD: 'icmn-sad',
|
|
105
|
+
ACTIVATE: 'icmn-checkmark',
|
|
106
|
+
INACTIVATE: 'icmn-cross',
|
|
107
|
+
APPROVE: 'icmn-checkmark',
|
|
108
|
+
REJECT: 'icmn-cross',
|
|
109
|
+
CANCEL: 'icmn-cross',
|
|
110
|
+
CLOSE: 'icmn-ungroup',
|
|
111
|
+
CLEAN: 'fa fa-eraser',
|
|
112
|
+
CHECK: 'icmn-checkmark',
|
|
113
|
+
UNCHECK: 'icmn-cross',
|
|
114
|
+
SELECTROW: 'icmn-checkbox-unchecked',
|
|
115
|
+
UNSELECTROW: 'icmn-checkbox-checked',
|
|
116
|
+
CHECKED: 'icmn-checkbox-checked',
|
|
117
|
+
UNCHECKED: 'icmn-checkbox-unchecked',
|
|
118
|
+
ENTER: 'icmn-enter',
|
|
119
|
+
EXIT: 'icmn-exit',
|
|
120
|
+
CUT: 'icmn-scissors',
|
|
121
|
+
FILTER: 'icmn-filter',
|
|
122
|
+
PLAY: 'icmn-play2',
|
|
123
|
+
STOP: 'icmn-stop',
|
|
124
|
+
UP: 'icmn-circle-up',
|
|
125
|
+
DOWN: 'icmn-circle-down',
|
|
126
|
+
RIGHT: 'icmn-circle-right',
|
|
127
|
+
LEFT: 'icmn-circle-left',
|
|
128
|
+
SORTASC: 'icmn-sort-alpha-asc',
|
|
129
|
+
SORTDSC: 'icmn-sort-alpha-desc',
|
|
130
|
+
TABLE: 'icmn-table',
|
|
131
|
+
OFFICE: 'icmn-office',
|
|
132
|
+
SHARE: 'icmn-share',
|
|
133
|
+
FACEBOOK: 'icmn-facebook',
|
|
134
|
+
WHATSAPP: 'icmn-whatsapp',
|
|
135
|
+
TWITTER: 'icmn-twitter',
|
|
136
|
+
YOUTUBE: 'icmn-youtube',
|
|
137
|
+
PDF: 'icmn-file-pdf',
|
|
138
|
+
EXCEL: 'icmn-file-excel',
|
|
139
|
+
HOLDER: 'icmn-profile',
|
|
140
|
+
XXX: 'fa fa-first-order',
|
|
141
|
+
BANK: 'fa fa-bank',
|
|
142
|
+
CREDITCARD2: 'fa fa-credit-card-alt',
|
|
143
|
+
BUS: 'fa fa-bus',
|
|
144
|
+
TELEVISION: 'icmn-tv',
|
|
145
|
+
BACK: 'fa fa-arrow-left',
|
|
146
|
+
SEND: 'fa fa-paper-plane-o',
|
|
147
|
+
TEXTFILE: 'fa fa-file-text-o',
|
|
148
|
+
PERSON: 'fa fa-user',
|
|
149
|
+
BATCHFILE: 'fa fa-wpforms',
|
|
150
|
+
REQUESTS: 'icmn-stack',
|
|
151
|
+
THUMBUP: 'fa fa-thumbs-o-up',
|
|
152
|
+
THUMBDOWN: 'fa fa-thumbs-o-down',
|
|
153
|
+
EXCLAMATION: 'fa fa-exclamation-circle',
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
export class IconDictionaryService {
|
|
157
|
+
mapIcon = (iconName) => (iconName && iconDictionary[iconName])
|
|
158
|
+
? iconDictionary[iconName] : iconDictionary.DEFAULT
|
|
159
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { RouterModule } from '@angular/router';
|
|
4
|
+
import { FormsModule } from '@angular/forms';
|
|
5
|
+
|
|
6
|
+
import { BasicFormComponent } from './components/forms/basic-form';
|
|
7
|
+
import { ActionComponent } from './components/elements/action.component';
|
|
8
|
+
import { FieldComponent } from './components/elements/field.component';
|
|
9
|
+
import { ElementComponent } from './components/elements/layout/element.component';
|
|
10
|
+
import { FormErrorComponent } from './components/elements/layout/form-error.component';
|
|
11
|
+
import { FormHeaderComponent } from './components/elements/layout/form-header.component';
|
|
12
|
+
import { SectionComponent } from './components/elements/layout/section.component';
|
|
13
|
+
import { SubSectionComponent } from './components/elements/layout/sub-section.component';
|
|
14
|
+
import { LibTableRecordActionComponent } from './components/elements/tables/table-record-action.component';
|
|
15
|
+
import { LibTableRecordFieldComponent } from './components/elements/tables/table-record-field.component';
|
|
16
|
+
import { LibTableComponent } from './components/elements/tables/table.component';
|
|
17
|
+
|
|
18
|
+
const COMPONENTS = [
|
|
19
|
+
BasicFormComponent,
|
|
20
|
+
ActionComponent,
|
|
21
|
+
FieldComponent,
|
|
22
|
+
ElementComponent,
|
|
23
|
+
FormErrorComponent,
|
|
24
|
+
FormHeaderComponent,
|
|
25
|
+
SectionComponent,
|
|
26
|
+
SubSectionComponent,
|
|
27
|
+
LibTableRecordActionComponent,
|
|
28
|
+
LibTableRecordFieldComponent,
|
|
29
|
+
LibTableComponent];
|
|
30
|
+
|
|
31
|
+
@NgModule({
|
|
32
|
+
declarations: COMPONENTS,
|
|
33
|
+
imports: [
|
|
34
|
+
CommonModule,
|
|
35
|
+
RouterModule,
|
|
36
|
+
FormsModule,
|
|
37
|
+
],
|
|
38
|
+
exports: COMPONENTS
|
|
39
|
+
})
|
|
40
|
+
export class TuainNgFormsLibModule { }
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of tuain-ng-forms-lib
|
|
3
|
+
*/
|
|
4
|
+
|
|
1
5
|
export * from './lib/components/elements/action.component';
|
|
2
6
|
export * from './lib/components/elements/field.component';
|
|
3
7
|
export * from './lib/components/elements/layout/element.component';
|
|
@@ -13,3 +17,4 @@ export * from './lib/services/event-manager.service';
|
|
|
13
17
|
export * from './lib/services/form-manager.service';
|
|
14
18
|
export * from './lib/services/file-manager.service';
|
|
15
19
|
export * from './lib/tuain-ng-forms-lib.module';
|
|
20
|
+
|
package/src/test.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
|
|
2
|
+
|
|
3
|
+
import 'zone.js';
|
|
4
|
+
import 'zone.js/testing';
|
|
5
|
+
import { getTestBed } from '@angular/core/testing';
|
|
6
|
+
import {
|
|
7
|
+
BrowserDynamicTestingModule,
|
|
8
|
+
platformBrowserDynamicTesting
|
|
9
|
+
} from '@angular/platform-browser-dynamic/testing';
|
|
10
|
+
|
|
11
|
+
declare const require: {
|
|
12
|
+
context(path: string, deep?: boolean, filter?: RegExp): {
|
|
13
|
+
<T>(id: string): T;
|
|
14
|
+
keys(): string[];
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
// First, initialize the Angular testing environment.
|
|
19
|
+
getTestBed().initTestEnvironment(
|
|
20
|
+
BrowserDynamicTestingModule,
|
|
21
|
+
platformBrowserDynamicTesting(),
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
// Then we find all the tests.
|
|
25
|
+
const context = require.context('./', true, /\.spec\.ts$/);
|
|
26
|
+
// And load the modules.
|
|
27
|
+
context.keys().map(context);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/* To learn more about this file see: https://angular.io/config/tsconfig. */
|
|
2
|
+
{
|
|
3
|
+
"extends": "../../tsconfig.json",
|
|
4
|
+
"compilerOptions": {
|
|
5
|
+
"outDir": "../../out-tsc/lib",
|
|
6
|
+
"declaration": true,
|
|
7
|
+
"declarationMap": true,
|
|
8
|
+
"inlineSources": true,
|
|
9
|
+
"types": []
|
|
10
|
+
},
|
|
11
|
+
"exclude": [
|
|
12
|
+
"src/test.ts",
|
|
13
|
+
"**/*.spec.ts"
|
|
14
|
+
]
|
|
15
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/* To learn more about this file see: https://angular.io/config/tsconfig. */
|
|
2
|
+
{
|
|
3
|
+
"extends": "../../tsconfig.json",
|
|
4
|
+
"compilerOptions": {
|
|
5
|
+
"outDir": "../../out-tsc/spec",
|
|
6
|
+
"types": [
|
|
7
|
+
"jasmine"
|
|
8
|
+
]
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"src/test.ts"
|
|
12
|
+
],
|
|
13
|
+
"include": [
|
|
14
|
+
"**/*.spec.ts",
|
|
15
|
+
"**/*.d.ts"
|
|
16
|
+
]
|
|
17
|
+
}
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import { Subject } from 'rxjs';
|
|
2
|
-
import { elementTypes } from './form.constants';
|
|
3
|
-
import { FormElement } from './element';
|
|
4
|
-
const HEADER = 'HEADER';
|
|
5
|
-
const attrs = {
|
|
6
|
-
actionCode: { name: '_actionCode', propagate: 'actionCode' },
|
|
7
|
-
actionName: { name: '_actionName', propagate: 'actionName' },
|
|
8
|
-
iconName: { name: '_iconName', propagate: 'iconName' },
|
|
9
|
-
inProgress: { name: '_inProgress', propagate: 'inProgress' },
|
|
10
|
-
restrictedOnField: { name: '_restrictedOnField', propagate: 'restrictedOnField' },
|
|
11
|
-
restrictedOnOperator: { name: '_restrictedOnOperator', propagate: 'restrictedOnOperator' },
|
|
12
|
-
restrictedOnValue: { name: '_restrictedOnValue', propagate: 'restrictedOnValue' },
|
|
13
|
-
};
|
|
14
|
-
export class FormAction extends FormElement {
|
|
15
|
-
_actionActivated = new Subject();
|
|
16
|
-
_actionCode = '';
|
|
17
|
-
_actionName = '';
|
|
18
|
-
_iconName = '';
|
|
19
|
-
_inProgress = false;
|
|
20
|
-
_newState;
|
|
21
|
-
_backend;
|
|
22
|
-
_restrictedOnField = null;
|
|
23
|
-
_restrictedOnOperator = null;
|
|
24
|
-
_restrictedOnValue = null;
|
|
25
|
-
constructor(actionDefinition, formConfig) {
|
|
26
|
-
super(actionDefinition, formConfig);
|
|
27
|
-
this.propagationCustomAttributes = this._formConfig?.propagationCustomAttributes?.actions ?? [];
|
|
28
|
-
this.elementType = elementTypes.action;
|
|
29
|
-
this.setAttr(attrs.actionCode, actionDefinition.actionCode ? actionDefinition.actionCode.toString() : '');
|
|
30
|
-
this.setAttr(attrs.actionName, actionDefinition.actionTitle);
|
|
31
|
-
this.setAttr(attrs.iconName, actionDefinition.iconName || this._actionCode);
|
|
32
|
-
this.setAttr(attrs.restrictedOnField, actionDefinition.fieldRestrictedCode?.toString() ?? null);
|
|
33
|
-
if (this._restrictedOnField) {
|
|
34
|
-
this.setAttr(attrs.restrictedOnOperator, actionDefinition.operatorRestricted || '');
|
|
35
|
-
this.setAttr(attrs.restrictedOnValue, actionDefinition.valueRestricted ?? '');
|
|
36
|
-
}
|
|
37
|
-
this._backend = actionDefinition?.serverAction ?? false;
|
|
38
|
-
this._newState = actionDefinition?.newState;
|
|
39
|
-
this.setCustomAttribute('location', actionDefinition.position || HEADER);
|
|
40
|
-
}
|
|
41
|
-
get actionCode() { return this._actionCode; }
|
|
42
|
-
get actionName() { return this._actionName; }
|
|
43
|
-
get iconName() { return this._iconName; }
|
|
44
|
-
get inProgress() { return this._inProgress; }
|
|
45
|
-
get newState() { return this._newState; }
|
|
46
|
-
get backend() { return this._backend; }
|
|
47
|
-
get restrictedOnField() { return this._restrictedOnField; }
|
|
48
|
-
get restrictedOnOperator() { return this._restrictedOnOperator; }
|
|
49
|
-
get restrictedOnValue() { return this._restrictedOnValue; }
|
|
50
|
-
set actionCode(actionCode) { this.setAttr(attrs.actionCode, actionCode); }
|
|
51
|
-
set actionName(actionName) { this.setAttr(attrs.actionName, actionName); }
|
|
52
|
-
set iconName(iconName) { this.setAttr(attrs.iconName, iconName); }
|
|
53
|
-
set inProgress(inProgress) { this.setAttr(attrs.inProgress, inProgress); }
|
|
54
|
-
set newState(newState) { this._newState, newState; }
|
|
55
|
-
set backend(backend) { this._backend, backend; }
|
|
56
|
-
set restrictedOnField(restrictedOnField) { this.setAttr(attrs.restrictedOnField, restrictedOnField); }
|
|
57
|
-
set restrictedOnOperator(restrictedOnOperator) { this.setAttr(attrs.restrictedOnOperator, restrictedOnOperator); }
|
|
58
|
-
set restrictedOnValue(restrictedOnValue) { this.setAttr(attrs.restrictedOnValue, restrictedOnValue); }
|
|
59
|
-
start() { this.inProgress = true; }
|
|
60
|
-
stop() { this.inProgress = false; }
|
|
61
|
-
connectWithParentForm(form, formChangeSubject) {
|
|
62
|
-
super.connectWithParentForm(form, formChangeSubject);
|
|
63
|
-
if (this._restrictedOnField) {
|
|
64
|
-
const relatedField = this._form.fields?.[this._restrictedOnField];
|
|
65
|
-
if (relatedField) {
|
|
66
|
-
relatedField.editionFinish
|
|
67
|
-
.subscribe(event => this.updateRestrictedVisibility(event));
|
|
68
|
-
relatedField.editionPartial
|
|
69
|
-
.subscribe(event => this.updateRestrictedVisibility(event));
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
updateRestrictedVisibility(event) {
|
|
74
|
-
const newVisible = this._absoluteVisible && this.viewOnState(this._formState);
|
|
75
|
-
(this._visible !== newVisible) && this.setVisibility(newVisible);
|
|
76
|
-
}
|
|
77
|
-
viewOnState(state) {
|
|
78
|
-
const actionVisible = (this.visibleStates && state) ? this.visibleStates.includes(state) : false;
|
|
79
|
-
if (actionVisible && this._form && this._restrictedOnField) {
|
|
80
|
-
const relatedField = this._form.fields?.[this._restrictedOnField];
|
|
81
|
-
if (relatedField) {
|
|
82
|
-
const fieldValue = relatedField.value;
|
|
83
|
-
if ((this._restrictedOnOperator === '==' && fieldValue !== this._restrictedOnValue)
|
|
84
|
-
|| (this._restrictedOnOperator === '!=' && fieldValue === this._restrictedOnValue)) {
|
|
85
|
-
return false;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
return actionVisible;
|
|
90
|
-
}
|
|
91
|
-
get actionActivated() { return this._actionActivated.asObservable(); }
|
|
92
|
-
notifyActivation() { this._actionActivated.next(this._actionCode); }
|
|
93
|
-
updateFromServer(receivedAction) {
|
|
94
|
-
for (const propertyName in receivedAction) {
|
|
95
|
-
if (propertyName !== 'actionCode' && propertyName !== 'actionId') {
|
|
96
|
-
try {
|
|
97
|
-
this[propertyName] = receivedAction[propertyName];
|
|
98
|
-
}
|
|
99
|
-
catch (e) {
|
|
100
|
-
console.log(`Error actualizando la propiedad ${propertyName} de la acción ${this.actionCode}. ${e}`);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVhaW4tbmctZm9ybXMtbGliL3NyYy9saWIvY2xhc3Nlcy9mb3Jtcy9hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV4QyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7QUFFeEIsTUFBTSxLQUFLLEdBQUc7SUFDWixVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUU7SUFDNUQsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFO0lBQzVELFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRTtJQUN0RCxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUU7SUFDNUQsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFO0lBQ2pGLG9CQUFvQixFQUFFLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRTtJQUMxRixpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUU7Q0FDbEYsQ0FBQTtBQUVELE1BQU0sT0FBTyxVQUFXLFNBQVEsV0FBVztJQUN4QixnQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO0lBQ2xELFdBQVcsR0FBVyxFQUFFLENBQUM7SUFDekIsV0FBVyxH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dCI6WyJpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBlbGVtZW50VHlwZXMgfSBmcm9tICcuL2Zvcm0uY29uc3RhbnRzJztcbmltcG9ydCB7IEZvcm1FbGVtZW50IH0gZnJvbSAnLi9lbGVtZW50JztcblxuY29uc3QgSEVBREVSID0gJ0hFQURFUic7XG5cbmNvbnN0IGF0dHJzID0ge1xuICBhY3Rpb25Db2RlOiB7IG5hbWU6ICdfYWN0aW9uQ29kZScsIHByb3BhZ2F0ZTogJ2FjdGlvbkNvZGUnIH0sXG4gIGFjdGlvbk5hbWU6IHsgbmFtZTogJ19hY3Rpb25OYW1lJywgcHJvcGFnYXRlOiAnYWN0aW9uTmFtZScgfSxcbiAgaWNvbk5hbWU6IHsgbmFtZTogJ19pY29uTmFtZScsIHByb3BhZ2F0ZTogJ2ljb25OYW1lJyB9LFxuICBpblByb2dyZXNzOiB7IG5hbWU6ICdfaW5Qcm9ncmVzcycsIHByb3BhZ2F0ZTogJ2luUHJvZ3Jlc3MnIH0sXG4gIHJlc3RyaWN0ZWRPbkZpZWxkOiB7IG5hbWU6ICdfcmVzdHJpY3RlZE9uRmllbGQnLCBwcm9wYWdhdGU6ICdyZXN0cmljdGVkT25GaWVsZCcgfSxcbiAgcmVzdHJpY3RlZE9uT3BlcmF0b3I6IHsgbmFtZTogJ19yZXN0cmljdGVkT25PcGVyYXRvcicsIHByb3BhZ2F0ZTogJ3Jlc3RyaWN0ZWRPbk9wZXJhdG9yJyB9LFxuICByZXN0cmljdGVkT25WYWx1ZTogeyBuYW1lOiAnX3Jlc3RyaWN0ZWRPblZhbHVlJywgcHJvcGFnYXRlOiAncmVzdHJpY3RlZE9uVmFsdWUnIH0sXG59XG5cbmV4cG9ydCBjbGFzcyBGb3JtQWN0aW9uIGV4dGVuZHMgRm9ybUVsZW1lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9hY3Rpb25BY3RpdmF0ZWQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIHByaXZhdGUgX2FjdGlvbkNvZGU6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9hY3Rpb25OYW1lOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBfaWNvbk5hbWU6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9pblByb2dyZXNzID0gZmFsc2U7XG4gIHByaXZhdGUgX25ld1N0YXRlOiBzdHJpbmc7XG4gIHByaXZhdGUgX2JhY2tlbmQ6IGJvb2xlYW47XG4gIHByaXZhdGUgX3Jlc3RyaWN0ZWRPbkZpZWxkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfcmVzdHJpY3RlZE9uT3BlcmF0b3I6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9yZXN0cmljdGVkT25WYWx1ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoYWN0aW9uRGVmaW5pdGlvbiwgZm9ybUNvbmZpZykge1xuICAgIHN1cGVyKGFjdGlvbkRlZmluaXRpb24sIGZvcm1Db25maWcpO1xuICAgIHRoaXMucHJvcGFnYXRpb25DdXN0b21BdHRyaWJ1dGVzID0gdGhpcy5fZm9ybUNvbmZpZz8ucHJvcGFnYXRpb25DdXN0b21BdHRyaWJ1dGVzPy5hY3Rpb25zID8/IFtdO1xuICAgIHRoaXMuZWxlbWVudFR5cGUgPSBlbGVtZW50VHlwZXMuYWN0aW9uO1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5hY3Rpb25Db2RlLCBhY3Rpb25EZWZpbml0aW9uLmFjdGlvbkNvZGUgPyBhY3Rpb25EZWZpbml0aW9uLmFjdGlvbkNvZGUudG9TdHJpbmcoKSA6ICcnKTtcbiAgICB0aGlzLnNldEF0dHIoYXR0cnMuYWN0aW9uTmFtZSwgYWN0aW9uRGVmaW5pdGlvbi5hY3Rpb25UaXRsZSk7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmljb25OYW1lLCBhY3Rpb25EZWZpbml0aW9uLmljb25OYW1lIHx8IHRoaXMuX2FjdGlvbkNvZGUpO1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5yZXN0cmljdGVkT25GaWVsZCwgYWN0aW9uRGVmaW5pdGlvbi5maWVsZFJlc3RyaWN0ZWRDb2RlPy50b1N0cmluZygpID8/IG51bGwpO1xuICAgIGlmICh0aGlzLl9yZXN0cmljdGVkT25GaWVsZCkge1xuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLnJlc3RyaWN0ZWRPbk9wZXJhdG9yLCBhY3Rpb25EZWZpbml0aW9uLm9wZXJhdG9yUmVzdHJpY3RlZCB8fCAnJyk7XG4gICAgICB0aGlzLnNldEF0dHIoYXR0cnMucmVzdHJpY3RlZE9uVmFsdWUsIGFjdGlvbkRlZmluaXRpb24udmFsdWVSZXN0cmljdGVkID8/ICcnKTtcbiAgICB9XG4gICAgdGhpcy5fYmFja2VuZCA9IGFjdGlvbkRlZmluaXRpb24/LnNlcnZlckFjdGlvbiA/PyBmYWxzZTtcbiAgICB0aGlzLl9uZXdTdGF0ZSA9IGFjdGlvbkRlZmluaXRpb24/Lm5ld1N0YXRlO1xuICAgIHRoaXMuc2V0Q3VzdG9tQXR0cmlidXRlKCdsb2NhdGlvbicsIGFjdGlvbkRlZmluaXRpb24ucG9zaXRpb24gfHwgSEVBREVSKTtcbiAgfVxuXG4gIGdldCBhY3Rpb25Db2RlKCkgeyByZXR1cm4gdGhpcy5fYWN0aW9uQ29kZTsgfVxuICBnZXQgYWN0aW9uTmFtZSgpIHsgcmV0dXJuIHRoaXMuX2FjdGlvbk5hbWU7IH1cbiAgZ2V0IGljb25OYW1lKCkgeyByZXR1cm4gdGhpcy5faWNvbk5hbWU7IH1cbiAgZ2V0IGluUHJvZ3Jlc3MoKSB7IHJldHVybiB0aGlzLl9pblByb2dyZXNzOyB9XG4gIGdldCBuZXdTdGF0ZSgpIHsgcmV0dXJuIHRoaXMuX25ld1N0YXRlOyB9XG4gIGdldCBiYWNrZW5kKCkgeyByZXR1cm4gdGhpcy5fYmFja2VuZDsgfVxuICBnZXQgcmVzdHJpY3RlZE9uRmllbGQoKSB7IHJldHVybiB0aGlzLl9yZXN0cmljdGVkT25GaWVsZDsgfVxuICBnZXQgcmVzdHJpY3RlZE9uT3BlcmF0b3IoKSB7IHJldHVybiB0aGlzLl9yZXN0cmljdGVkT25PcGVyYXRvcjsgfVxuICBnZXQgcmVzdHJpY3RlZE9uVmFsdWUoKSB7IHJldHVybiB0aGlzLl9yZXN0cmljdGVkT25WYWx1ZTsgfVxuXG4gIHNldCBhY3Rpb25Db2RlKGFjdGlvbkNvZGUpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLmFjdGlvbkNvZGUsIGFjdGlvbkNvZGUpOyB9XG4gIHNldCBhY3Rpb25OYW1lKGFjdGlvbk5hbWUpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLmFjdGlvbk5hbWUsIGFjdGlvbk5hbWUpOyB9XG4gIHNldCBpY29uTmFtZShpY29uTmFtZSkgeyB0aGlzLnNldEF0dHIoYXR0cnMuaWNvbk5hbWUsIGljb25OYW1lKTsgfVxuICBzZXQgaW5Qcm9ncmVzcyhpblByb2dyZXNzKSB7IHRoaXMuc2V0QXR0cihhdHRycy5pblByb2dyZXNzLCBpblByb2dyZXNzKTsgfVxuICBzZXQgbmV3U3RhdGUobmV3U3RhdGUpIHsgdGhpcy5fbmV3U3RhdGUsIG5ld1N0YXRlOyB9XG4gIHNldCBiYWNrZW5kKGJhY2tlbmQpIHsgdGhpcy5fYmFja2VuZCwgYmFja2VuZDsgfVxuICBzZXQgcmVzdHJpY3RlZE9uRmllbGQocmVzdHJpY3RlZE9uRmllbGQpIHsgdGhpcy5zZXRBdHRyKGF0dHJzLnJlc3RyaWN0ZWRPbkZpZWxkLCByZXN0cmljdGVkT25GaWVsZCk7IH1cbiAgc2V0IHJlc3RyaWN0ZWRPbk9wZXJhdG9yKHJlc3RyaWN0ZWRPbk9wZXJhdG9yKSB7IHRoaXMuc2V0QXR0cihhdHRycy5yZXN0cmljdGVkT25PcGVyYXRvciwgcmVzdHJpY3RlZE9uT3BlcmF0b3IpOyB9XG4gIHNldCByZXN0cmljdGVkT25WYWx1ZShyZXN0cmljdGVkT25WYWx1ZSkgeyB0aGlzLnNldEF0dHIoYXR0cnMucmVzdHJpY3RlZE9uVmFsdWUsIHJlc3RyaWN0ZWRPblZhbHVlKTsgfVxuXG4gIHN0YXJ0KCkgeyB0aGlzLmluUHJvZ3Jlc3MgPSB0cnVlOyB9XG4gIHN0b3AoKSB7IHRoaXMuaW5Qcm9ncmVzcyA9IGZhbHNlOyB9XG5cbiAgb3ZlcnJpZGUgY29ubmVjdFdpdGhQYXJlbnRGb3JtKGZvcm0sIGZvcm1DaGFuZ2VTdWJqZWN0KSB7XG4gICAgc3VwZXIuY29ubmVjdFdpdGhQYXJlbnRGb3JtKGZvcm0sIGZvcm1DaGFuZ2VTdWJqZWN0KTtcbiAgICBpZiAodGhpcy5fcmVzdHJpY3RlZE9uRmllbGQpIHtcbiAgICAgIGNvbnN0IHJlbGF0ZWRGaWVsZCA9IHRoaXMuX2Zvcm0uZmllbGRzPy5bdGhpcy5fcmVzdHJpY3RlZE9uRmllbGRdO1xuICAgICAgaWYgKHJlbGF0ZWRGaWVsZCkge1xuICAgICAgICByZWxhdGVkRmllbGQuZWRpdGlvbkZpbmlzaFxuICAgICAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4gdGhpcy51cGRhdGVSZXN0cmljdGVkVmlzaWJpbGl0eShldmVudCkpO1xuICAgICAgICByZWxhdGVkRmllbGQuZWRpdGlvblBhcnRpYWxcbiAgICAgICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHRoaXMudXBkYXRlUmVzdHJpY3RlZFZpc2liaWxpdHkoZXZlbnQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB1cGRhdGVSZXN0cmljdGVkVmlzaWJpbGl0eShldmVudCkge1xuICAgIGNvbnN0IG5ld1Zpc2libGUgPSB0aGlzLl9hYnNvbHV0ZVZpc2libGUgJiYgdGhpcy52aWV3T25TdGF0ZSh0aGlzLl9mb3JtU3RhdGUpO1xuICAgICh0aGlzLl92aXNpYmxlICE9PSBuZXdWaXNpYmxlKSAmJiB0aGlzLnNldFZpc2liaWxpdHkobmV3VmlzaWJsZSk7XG4gIH1cblxuICBvdmVycmlkZSB2aWV3T25TdGF0ZShzdGF0ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgYWN0aW9uVmlzaWJsZSA9ICh0aGlzLnZpc2libGVTdGF0ZXMgJiYgc3RhdGUpID8gdGhpcy52aXNpYmxlU3RhdGVzLmluY2x1ZGVzKHN0YXRlKSA6IGZhbHNlO1xuICAgIGlmIChhY3Rpb25WaXNpYmxlICYmIHRoaXMuX2Zvcm0gJiYgdGhpcy5fcmVzdHJpY3RlZE9uRmllbGQpIHtcbiAgICAgIGNvbnN0IHJlbGF0ZWRGaWVsZCA9IHRoaXMuX2Zvcm0uZmllbGRzPy5bdGhpcy5fcmVzdHJpY3RlZE9uRmllbGRdO1xuICAgICAgaWYgKHJlbGF0ZWRGaWVsZCkge1xuICAgICAgICBjb25zdCBmaWVsZFZhbHVlID0gcmVsYXRlZEZpZWxkLnZhbHVlO1xuICAgICAgICBpZiAoKHRoaXMuX3Jlc3RyaWN0ZWRPbk9wZXJhdG9yID09PSAnPT0nICYmIGZpZWxkVmFsdWUgIT09IHRoaXMuX3Jlc3RyaWN0ZWRPblZhbHVlKVxuICAgICAgICAgIHx8ICh0aGlzLl9yZXN0cmljdGVkT25PcGVyYXRvciA9PT0gJyE9JyAmJiBmaWVsZFZhbHVlID09PSB0aGlzLl9yZXN0cmljdGVkT25WYWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFjdGlvblZpc2libGU7XG4gIH1cblxuICBnZXQgYWN0aW9uQWN0aXZhdGVkKCkgeyByZXR1cm4gdGhpcy5fYWN0aW9uQWN0aXZhdGVkLmFzT2JzZXJ2YWJsZSgpOyB9XG5cbiAgbm90aWZ5QWN0aXZhdGlvbigpIHsgdGhpcy5fYWN0aW9uQWN0aXZhdGVkLm5leHQodGhpcy5fYWN0aW9uQ29kZSk7IH1cblxuICB1cGRhdGVGcm9tU2VydmVyKHJlY2VpdmVkQWN0aW9uKSB7XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eU5hbWUgaW4gcmVjZWl2ZWRBY3Rpb24pIHtcbiAgICAgIGlmIChwcm9wZXJ0eU5hbWUgIT09ICdhY3Rpb25Db2RlJyAmJiBwcm9wZXJ0eU5hbWUgIT09ICdhY3Rpb25JZCcpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzW3Byb3BlcnR5TmFtZV0gPSByZWNlaXZlZEFjdGlvbltwcm9wZXJ0eU5hbWVdO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYEVycm9yIGFjdHVhbGl6YW5kbyBsYSBwcm9waWVkYWQgJHtwcm9wZXJ0eU5hbWV9IGRlIGxhIGFjY2nDs24gJHt0aGlzLmFjdGlvbkNvZGV9LiAke2V9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { FormPiecePropagate } from './piece-propagate';
|
|
2
|
-
import { elementTypes } from './form.constants';
|
|
3
|
-
export class FormElement extends FormPiecePropagate {
|
|
4
|
-
elementType = null;
|
|
5
|
-
constructor(elementDefinition, formConfig) {
|
|
6
|
-
super(elementDefinition, formConfig);
|
|
7
|
-
}
|
|
8
|
-
setAttr(attr, value) {
|
|
9
|
-
const { name: attrName, propagate: name } = attr;
|
|
10
|
-
try {
|
|
11
|
-
const currentValue = this[attrName];
|
|
12
|
-
if (currentValue !== value) {
|
|
13
|
-
this[attrName] = value;
|
|
14
|
-
name && this.propagateAttribute(name, value);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
catch (e) {
|
|
18
|
-
console.log(`Atributo ${attrName} no presente o valor ${value} inconsistente. ${e}`);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
isField() { return this.elementType === elementTypes.field; }
|
|
22
|
-
isAction() { return this.elementType === elementTypes.action; }
|
|
23
|
-
isTable() { return this.elementType === elementTypes.table; }
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvZWxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsTUFBTSxPQUFPLFdBQVksU0FBUSxrQkFBa0I7SUFDakQsV0FBVyxHQUFrQixJQUFJLENBQUM7SUFFbEMsWUFBWSxpQkFBc0IsRUFBRSxVQUFlO1FBQ2pELEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsT0FBTyxDQUFDLElBQVMsRUFBRSxLQUFVO1FBQzNCLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDakQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3BDLElBQUksWUFBWSxLQUFLLEtBQUssRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUN2QixJQUFJLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMvQyxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksUUFBUSx3QkFBd0IsS0FBSyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2RixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sS0FBYyxPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdEUsUUFBUSxLQUFjLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN4RSxPQUFPLEtBQWMsT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0NBQ3ZFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybVBpZWNlUHJvcGFnYXRlIH0gZnJvbSAnLi9waWVjZS1wcm9wYWdhdGUnO1xuaW1wb3J0IHsgZWxlbWVudFR5cGVzIH0gZnJvbSAnLi9mb3JtLmNvbnN0YW50cyc7XG5leHBvcnQgY2xhc3MgRm9ybUVsZW1lbnQgZXh0ZW5kcyBGb3JtUGllY2VQcm9wYWdhdGUge1xuICBlbGVtZW50VHlwZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoZWxlbWVudERlZmluaXRpb246IGFueSwgZm9ybUNvbmZpZzogYW55KSB7XG4gICAgc3VwZXIoZWxlbWVudERlZmluaXRpb24sIGZvcm1Db25maWcpO1xuICB9XG5cbiAgc2V0QXR0cihhdHRyOiBhbnksIHZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCB7IG5hbWU6IGF0dHJOYW1lLCBwcm9wYWdhdGU6IG5hbWUgfSA9IGF0dHI7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXNbYXR0ck5hbWVdO1xuICAgICAgaWYgKGN1cnJlbnRWYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgdGhpc1thdHRyTmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgbmFtZSAmJiB0aGlzLnByb3BhZ2F0ZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5sb2coYEF0cmlidXRvICR7YXR0ck5hbWV9IG5vIHByZXNlbnRlIG8gdmFsb3IgJHt2YWx1ZX0gaW5jb25zaXN0ZW50ZS4gJHtlfWApO1xuICAgIH1cbiAgfVxuXG4gIGlzRmllbGQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmVsZW1lbnRUeXBlID09PSBlbGVtZW50VHlwZXMuZmllbGQ7IH1cbiAgaXNBY3Rpb24oKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmVsZW1lbnRUeXBlID09PSBlbGVtZW50VHlwZXMuYWN0aW9uOyB9XG4gIGlzVGFibGUoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmVsZW1lbnRUeXBlID09PSBlbGVtZW50VHlwZXMudGFibGU7IH1cbn1cbiJdfQ==
|