tuain-ng-forms-lib 14.4.91 → 14.4.93
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 +6 -24
- package/src/lib/classes/forms/action.ts +56 -0
- package/src/lib/classes/forms/element.ts +29 -0
- package/src/lib/classes/forms/field.ts +500 -0
- package/src/lib/classes/forms/form.constants.ts +28 -0
- package/src/lib/classes/forms/form.ts +508 -0
- package/src/lib/classes/forms/piece-propagate.ts +46 -0
- package/src/lib/classes/forms/piece.ts +122 -0
- package/src/lib/classes/forms/section.ts +152 -0
- package/src/lib/classes/forms/subsection.ts +90 -0
- package/src/lib/classes/forms/table/action.ts +32 -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 +478 -0
- package/src/lib/components/elements/action.component.ts +59 -0
- package/src/lib/components/elements/field.component.ts +92 -0
- package/src/lib/components/elements/layout/element.component.ts +13 -0
- package/src/lib/components/elements/layout/form-error.component.ts +11 -0
- package/src/lib/components/elements/layout/form-header.component.ts +17 -0
- package/src/lib/components/elements/layout/piece.component.ts +34 -0
- package/src/lib/components/elements/layout/section.component.ts +31 -0
- package/src/lib/components/elements/layout/sub-section.component.ts +31 -0
- package/src/lib/components/elements/tables/table-record-action.component.ts +50 -0
- package/src/lib/components/elements/tables/table-record-field.component.ts +20 -0
- package/src/lib/components/elements/tables/table.component.ts +86 -0
- package/src/lib/components/forms/basic-form.ts +1588 -0
- package/src/lib/services/event-manager.service.ts +21 -0
- package/src/lib/services/file-manager.service.ts +6 -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/esm2020/lib/classes/forms/action.mjs +0 -35
- package/esm2020/lib/classes/forms/element.mjs +0 -26
- package/esm2020/lib/classes/forms/field.mjs +0 -444
- package/esm2020/lib/classes/forms/form.constants.mjs +0 -26
- package/esm2020/lib/classes/forms/form.mjs +0 -431
- package/esm2020/lib/classes/forms/piece-propagate.mjs +0 -30
- package/esm2020/lib/classes/forms/piece.mjs +0 -95
- package/esm2020/lib/classes/forms/section.mjs +0 -137
- package/esm2020/lib/classes/forms/subsection.mjs +0 -80
- package/esm2020/lib/classes/forms/table/action.mjs +0 -18
- 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 -415
- package/esm2020/lib/components/elements/action.component.mjs +0 -71
- package/esm2020/lib/components/elements/field.component.mjs +0 -80
- 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 -31
- package/esm2020/lib/components/elements/layout/piece.component.mjs +0 -22
- package/esm2020/lib/components/elements/layout/section.component.mjs +0 -37
- package/esm2020/lib/components/elements/layout/sub-section.component.mjs +0 -37
- package/esm2020/lib/components/elements/tables/table-record-action.component.mjs +0 -56
- package/esm2020/lib/components/elements/tables/table-record-field.component.mjs +0 -30
- package/esm2020/lib/components/elements/tables/table.component.mjs +0 -93
- package/esm2020/lib/components/forms/basic-form.mjs +0 -1514
- package/esm2020/lib/services/event-manager.service.mjs +0 -18
- package/esm2020/lib/services/file-manager.service.mjs +0 -6
- package/esm2020/lib/services/form-manager.service.mjs +0 -80
- package/esm2020/lib/tuain-ng-forms-lib.module.mjs +0 -71
- package/esm2020/public-api.mjs +0 -19
- package/esm2020/tuain-ng-forms-lib.mjs +0 -5
- package/fesm2015/tuain-ng-forms-lib.mjs +0 -4230
- package/fesm2015/tuain-ng-forms-lib.mjs.map +0 -1
- package/fesm2020/tuain-ng-forms-lib.mjs +0 -4048
- package/fesm2020/tuain-ng-forms-lib.mjs.map +0 -1
- package/lib/classes/forms/action.d.ts +0 -22
- package/lib/classes/forms/element.d.ts +0 -17
- package/lib/classes/forms/field.d.ts +0 -205
- package/lib/classes/forms/form.constants.d.ts +0 -25
- package/lib/classes/forms/form.d.ts +0 -137
- package/lib/classes/forms/piece-propagate.d.ts +0 -11
- package/lib/classes/forms/piece.d.ts +0 -41
- package/lib/classes/forms/section.d.ts +0 -32
- package/lib/classes/forms/subsection.d.ts +0 -24
- package/lib/classes/forms/table/action.d.ts +0 -15
- 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 -100
- package/lib/components/elements/action.component.d.ts +0 -17
- package/lib/components/elements/field.component.d.ts +0 -38
- package/lib/components/elements/layout/element.component.d.ts +0 -9
- package/lib/components/elements/layout/form-error.component.d.ts +0 -8
- package/lib/components/elements/layout/form-header.component.d.ts +0 -12
- package/lib/components/elements/layout/piece.component.d.ts +0 -10
- package/lib/components/elements/layout/section.component.d.ts +0 -11
- package/lib/components/elements/layout/sub-section.component.d.ts +0 -11
- package/lib/components/elements/tables/table-record-action.component.d.ts +0 -16
- package/lib/components/elements/tables/table-record-field.component.d.ts +0 -12
- package/lib/components/elements/tables/table.component.d.ts +0 -35
- package/lib/components/forms/basic-form.d.ts +0 -353
- package/lib/services/event-manager.service.d.ts +0 -9
- package/lib/services/file-manager.service.d.ts +0 -5
- package/lib/services/form-manager.service.d.ts +0 -28
- package/lib/tuain-ng-forms-lib.module.d.ts +0 -20
- package/tuain-ng-forms-lib.d.ts +0 -5
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ReplaySubject } from 'rxjs';
|
|
2
|
+
|
|
3
|
+
export class LibEventManagerService {
|
|
4
|
+
eventSubjects: any = {};
|
|
5
|
+
|
|
6
|
+
constructor(eventNames) {
|
|
7
|
+
eventNames.forEach((name) => { this.addEventName(name); });
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
addEventName(name) {
|
|
11
|
+
if (!this.eventSubjects[name]) {
|
|
12
|
+
const newEventSubject: ReplaySubject<any> = new ReplaySubject(1);
|
|
13
|
+
this.eventSubjects[name] = newEventSubject;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
getEventNames() { return Object.keys(this.eventSubjects); }
|
|
18
|
+
getSubject(eventClassName) { return eventClassName ? this.eventSubjects[eventClassName] : null; }
|
|
19
|
+
subscribe(eventClassName, callback) { this.getSubject(eventClassName).subscribe(callback); }
|
|
20
|
+
next(eventClassName, data) { this.getSubject(eventClassName).next(data); }
|
|
21
|
+
}
|
|
@@ -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,35 +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.elementType = elementTypes.action;
|
|
11
|
-
this.actionCode = actionDefinition.actionCode ? actionDefinition.actionCode.toString() : '';
|
|
12
|
-
this.actionName = actionDefinition.actionTitle;
|
|
13
|
-
this.iconName = actionDefinition.iconName || this.actionCode;
|
|
14
|
-
this.setCustomAttribute('location', actionDefinition.position || HEADER);
|
|
15
|
-
this.backend = actionDefinition?.serverAction ?? false;
|
|
16
|
-
this.newState = actionDefinition?.newState;
|
|
17
|
-
this.restrictedOnField = actionDefinition.fieldRestrictedCode ? actionDefinition.fieldRestrictedCode.toString() : '';
|
|
18
|
-
this.restrictedOnOperator = actionDefinition.operatorRestricted || '';
|
|
19
|
-
this.restrictedOnValue = actionDefinition.valueRestricted ?? '';
|
|
20
|
-
this.customValidation = () => true;
|
|
21
|
-
}
|
|
22
|
-
get actionActivated() { return this._actionActivated; }
|
|
23
|
-
start() { this.inProgress = true; }
|
|
24
|
-
stop() { this.inProgress = false; }
|
|
25
|
-
notifyActivation() { this._actionActivated.next(this.actionCode); }
|
|
26
|
-
updateFromServer(receivedAction) {
|
|
27
|
-
for (const propertyName in receivedAction) {
|
|
28
|
-
if (propertyName !== 'actionCode' && propertyName !== 'actionId') {
|
|
29
|
-
this[propertyName] = receivedAction[propertyName];
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
setCustomValidation(callback) { this.customValidation = () => callback(); }
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVhaW4tbmctZm9ybXMtbGliL3NyYy9saWIvY2xhc3Nlcy9mb3Jtcy9hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV4QyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7QUFFeEIsTUFBTSxPQUFPLFVBQVcsU0FBUSxXQUFXO0lBZ0J6QyxZQUFZLGdCQUFnQixFQUFFLFVBQVU7UUFDdEMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBaEJyQixxQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBRTFELGVBQVUsR0FBRyxLQUFLLENBQUM7UUFlakIsSUFBSSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM1RixJQUFJLENBQUMsVUFBVSxHQUFHLGdCQUFnQixDQUFDLFdBQVcsQ0FBQztRQUMvQyxJQUFJLENBQUMsUUFBUSxHQUFHLGdCQUFnQixDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQzdELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxPQUFPLEdBQUcsZ0JBQWdCLEVBQUUsWUFBWSxJQUFJLEtBQUssQ0FBQztRQUN2RCxJQUFJLENBQUMsUUFBUSxHQUFHLGdCQUFnQixFQUFFLFFBQVEsQ0FBQztRQUUzQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDckgsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGdCQUFnQixDQUFDLGtCQUFrQixJQUFJLEVBQUUsQ0FBQztRQUN0RSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQztRQUNoRSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLGVBQWUsS0FBSyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7SUFFdkQsS0FBSyxLQUFLLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuQyxJQUFJLEtBQUssSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRW5DLGdCQUFnQixLQUFLLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVuRSxnQkFBZ0IsQ0FBQyxjQUFjO1FBQzdCLEtBQUssTUFBTSxZQUFZLElBQUksY0FBYyxFQUFFO1lBQ3pDLElBQUksWUFBWSxLQUFLLFlBQVksSUFBSSxZQUFZLEtBQUssVUFBVSxFQUFFO2dCQUNoRSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ25EO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDNUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBlbGVtZW50VHlwZXMgfSBmcm9tICcuL2Zvcm0uY29uc3RhbnRzJztcbmltcG9ydCB7IEZvcm1FbGVtZW50IH0gZnJvbSAnLi9lbGVtZW50JztcblxuY29uc3QgSEVBREVSID0gJ0hFQURFUic7XG5cbmV4cG9ydCBjbGFzcyBGb3JtQWN0aW9uIGV4dGVuZHMgRm9ybUVsZW1lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9hY3Rpb25BY3RpdmF0ZWQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgaW5Qcm9ncmVzcyA9IGZhbHNlO1xuICBuZXdTdGF0ZTogc3RyaW5nO1xuICBiYWNrZW5kOiBib29sZWFuO1xuXG4gIGFjdGlvbkNvZGU6IHN0cmluZztcbiAgYWN0aW9uTmFtZTogc3RyaW5nO1xuICBpY29uTmFtZTogc3RyaW5nO1xuXG4gIHJlc3RyaWN0ZWRPbkZpZWxkOiBzdHJpbmc7XG4gIHJlc3RyaWN0ZWRPbk9wZXJhdG9yOiBzdHJpbmc7XG4gIHJlc3RyaWN0ZWRPblZhbHVlOiBzdHJpbmc7XG4gIGN1c3RvbVZhbGlkYXRpb246IGFueTtcblxuICBjb25zdHJ1Y3RvcihhY3Rpb25EZWZpbml0aW9uLCBmb3JtQ29uZmlnKSB7XG4gICAgc3VwZXIoYWN0aW9uRGVmaW5pdGlvbiwgZm9ybUNvbmZpZyk7XG4gICAgdGhpcy5lbGVtZW50VHlwZSA9IGVsZW1lbnRUeXBlcy5hY3Rpb247XG4gICAgdGhpcy5hY3Rpb25Db2RlID0gYWN0aW9uRGVmaW5pdGlvbi5hY3Rpb25Db2RlID8gYWN0aW9uRGVmaW5pdGlvbi5hY3Rpb25Db2RlLnRvU3RyaW5nKCkgOiAnJztcbiAgICB0aGlzLmFjdGlvbk5hbWUgPSBhY3Rpb25EZWZpbml0aW9uLmFjdGlvblRpdGxlO1xuICAgIHRoaXMuaWNvbk5hbWUgPSBhY3Rpb25EZWZpbml0aW9uLmljb25OYW1lIHx8IHRoaXMuYWN0aW9uQ29kZTtcbiAgICB0aGlzLnNldEN1c3RvbUF0dHJpYnV0ZSgnbG9jYXRpb24nLCBhY3Rpb25EZWZpbml0aW9uLnBvc2l0aW9uIHx8IEhFQURFUik7XG4gICAgdGhpcy5iYWNrZW5kID0gYWN0aW9uRGVmaW5pdGlvbj8uc2VydmVyQWN0aW9uID8/IGZhbHNlO1xuICAgIHRoaXMubmV3U3RhdGUgPSBhY3Rpb25EZWZpbml0aW9uPy5uZXdTdGF0ZTtcblxuICAgIHRoaXMucmVzdHJpY3RlZE9uRmllbGQgPSBhY3Rpb25EZWZpbml0aW9uLmZpZWxkUmVzdHJpY3RlZENvZGUgPyBhY3Rpb25EZWZpbml0aW9uLmZpZWxkUmVzdHJpY3RlZENvZGUudG9TdHJpbmcoKSA6ICcnO1xuICAgIHRoaXMucmVzdHJpY3RlZE9uT3BlcmF0b3IgPSBhY3Rpb25EZWZpbml0aW9uLm9wZXJhdG9yUmVzdHJpY3RlZCB8fCAnJztcbiAgICB0aGlzLnJlc3RyaWN0ZWRPblZhbHVlID0gYWN0aW9uRGVmaW5pdGlvbi52YWx1ZVJlc3RyaWN0ZWQgPz8gJyc7XG4gICAgdGhpcy5jdXN0b21WYWxpZGF0aW9uID0gKCkgPT4gdHJ1ZTtcbiAgfVxuXG4gIGdldCBhY3Rpb25BY3RpdmF0ZWQoKSB7IHJldHVybiB0aGlzLl9hY3Rpb25BY3RpdmF0ZWQ7IH1cblxuICBzdGFydCgpIHsgdGhpcy5pblByb2dyZXNzID0gdHJ1ZTsgfVxuICBzdG9wKCkgeyB0aGlzLmluUHJvZ3Jlc3MgPSBmYWxzZTsgfVxuXG4gIG5vdGlmeUFjdGl2YXRpb24oKSB7IHRoaXMuX2FjdGlvbkFjdGl2YXRlZC5uZXh0KHRoaXMuYWN0aW9uQ29kZSk7IH1cblxuICB1cGRhdGVGcm9tU2VydmVyKHJlY2VpdmVkQWN0aW9uKSB7XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eU5hbWUgaW4gcmVjZWl2ZWRBY3Rpb24pIHtcbiAgICAgIGlmIChwcm9wZXJ0eU5hbWUgIT09ICdhY3Rpb25Db2RlJyAmJiBwcm9wZXJ0eU5hbWUgIT09ICdhY3Rpb25JZCcpIHtcbiAgICAgICAgdGhpc1twcm9wZXJ0eU5hbWVdID0gcmVjZWl2ZWRBY3Rpb25bcHJvcGVydHlOYW1lXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRDdXN0b21WYWxpZGF0aW9uKGNhbGxiYWNrKSB7IHRoaXMuY3VzdG9tVmFsaWRhdGlvbiA9ICgpID0+IGNhbGxiYWNrKCk7IH1cbn1cbiJdfQ==
|
|
@@ -1,26 +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
|
-
* @deprecated Utilizar viewOnState
|
|
19
|
-
*/
|
|
20
|
-
supportState(state) { return this.viewOnState(state); }
|
|
21
|
-
/**
|
|
22
|
-
* @deprecated Utilizar viewOnState
|
|
23
|
-
*/
|
|
24
|
-
supportMode(state) { return this.viewOnState(state); }
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvZWxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsTUFBTSxPQUFPLFdBQVksU0FBUSxrQkFBa0I7SUFHakQsWUFBWSxpQkFBc0IsRUFBRSxVQUFlO1FBQ2pELEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUh2QyxnQkFBVyxHQUFrQixJQUFJLENBQUM7SUFJbEMsQ0FBQztJQUppQyxDQUFDO0lBTW5DLE9BQU8sQ0FBQyxJQUFTLEVBQUUsS0FBVTtRQUMzQixNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ2pELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELE9BQU8sS0FBYyxPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdEUsUUFBUSxLQUFjLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN4RSxPQUFPLEtBQWMsT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRXRFOztPQUVHO0lBQ0gsWUFBWSxDQUFDLEtBQWEsSUFBYSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXhFOztPQUVHO0lBQ0gsV0FBVyxDQUFDLEtBQWEsSUFBYSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3hFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybVBpZWNlUHJvcGFnYXRlIH0gZnJvbSAnLi9waWVjZS1wcm9wYWdhdGUnO1xuaW1wb3J0IHsgZWxlbWVudFR5cGVzIH0gZnJvbSAnLi9mb3JtLmNvbnN0YW50cyc7XG5leHBvcnQgY2xhc3MgRm9ybUVsZW1lbnQgZXh0ZW5kcyBGb3JtUGllY2VQcm9wYWdhdGUge1xuICBlbGVtZW50VHlwZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7O1xuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnREZWZpbml0aW9uOiBhbnksIGZvcm1Db25maWc6IGFueSkge1xuICAgIHN1cGVyKGVsZW1lbnREZWZpbml0aW9uLCBmb3JtQ29uZmlnKTtcbiAgfVxuXG4gIHNldEF0dHIoYXR0cjogYW55LCB2YWx1ZTogYW55KSB7XG4gICAgY29uc3QgeyBuYW1lOiBhdHRyTmFtZSwgcHJvcGFnYXRlOiBuYW1lIH0gPSBhdHRyO1xuICAgIHRoaXNbYXR0ck5hbWVdID0gdmFsdWU7XG4gICAgbmFtZSAmJiB0aGlzLnByb3BhZ2F0ZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7XG4gIH1cblxuICBpc0ZpZWxkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5lbGVtZW50VHlwZSA9PT0gZWxlbWVudFR5cGVzLmZpZWxkOyB9XG4gIGlzQWN0aW9uKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5lbGVtZW50VHlwZSA9PT0gZWxlbWVudFR5cGVzLmFjdGlvbjsgfVxuICBpc1RhYmxlKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5lbGVtZW50VHlwZSA9PT0gZWxlbWVudFR5cGVzLnRhYmxlOyB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFV0aWxpemFyIHZpZXdPblN0YXRlXG4gICAqL1xuICBzdXBwb3J0U3RhdGUoc3RhdGU6IHN0cmluZyk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy52aWV3T25TdGF0ZShzdGF0ZSk7IH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXRpbGl6YXIgdmlld09uU3RhdGVcbiAgICovXG4gIHN1cHBvcnRNb2RlKHN0YXRlOiBzdHJpbmcpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMudmlld09uU3RhdGUoc3RhdGUpOyB9XG59XG4iXX0=
|