@formio/js 5.0.0-rc.25 → 5.0.0-rc.26
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/formio.builder.css +10 -0
- package/dist/formio.builder.min.css +1 -1
- package/dist/formio.embed.css +1 -1
- package/dist/formio.embed.js +1 -1
- package/dist/formio.embed.min.css +1 -1
- package/dist/formio.embed.min.js +1 -1
- package/dist/formio.form.css +10 -0
- package/dist/formio.form.js +1 -1
- package/dist/formio.form.min.css +1 -1
- package/dist/formio.form.min.js +1 -1
- package/dist/formio.full.css +10 -0
- package/dist/formio.full.js +1 -1
- package/dist/formio.full.min.css +1 -1
- package/dist/formio.full.min.js +1 -1
- package/lib/cjs/Embed.d.ts +25 -6
- package/lib/cjs/Embed.js +85 -36
- package/lib/cjs/Wizard.js +8 -9
- package/lib/cjs/formio.embed.js +1 -0
- package/lib/mjs/Embed.d.ts +25 -6
- package/lib/mjs/Embed.js +82 -37
- package/lib/mjs/Wizard.js +8 -9
- package/lib/mjs/formio.embed.js +1 -0
- package/package.json +2 -1
package/lib/cjs/Embed.d.ts
CHANGED
@@ -2,22 +2,41 @@ export class Formio {
|
|
2
2
|
static baseUrl: any;
|
3
3
|
static projectUrl: any;
|
4
4
|
static language: any;
|
5
|
-
static wrapper: any;
|
6
|
-
static element: any;
|
7
5
|
static config: {};
|
8
|
-
static loader: null;
|
9
6
|
static cdn: null;
|
10
7
|
static proxy: boolean;
|
11
8
|
static setBaseUrl(url: any): Promise<void>;
|
12
9
|
static setProjectUrl(url: any): Promise<void>;
|
13
10
|
static debug(...args: any[]): void;
|
11
|
+
static clearCache(): void;
|
14
12
|
static global(prop: any): any;
|
15
13
|
static createElement(type: any, attrs: any, children: any): any;
|
16
|
-
static addScript(src: any, name: any): Promise<any>;
|
17
|
-
static addStyles(href: any): Promise<void>;
|
14
|
+
static addScript(wrapper: any, src: any, name: any): Promise<any>;
|
15
|
+
static addStyles(wrapper: any, href: any): Promise<void>;
|
18
16
|
static submitDone(instance: any, submission: any): Promise<void>;
|
19
17
|
static formioScript(script: any, builder: any): any;
|
20
|
-
static init(element: any, builder?: boolean): Promise<
|
18
|
+
static init(element: any, builder?: boolean): Promise<any>;
|
21
19
|
static createForm(element: any, form: any, options: any): Promise<any>;
|
22
20
|
static builder(element: any, form: any, options: any): Promise<any>;
|
23
21
|
}
|
22
|
+
export namespace Formio {
|
23
|
+
export { Form };
|
24
|
+
export { FormBuilder };
|
25
|
+
}
|
26
|
+
export class Form {
|
27
|
+
constructor(element: any, form: any, options: any);
|
28
|
+
form: any;
|
29
|
+
element: any;
|
30
|
+
options: any;
|
31
|
+
instance: {
|
32
|
+
proxy: boolean;
|
33
|
+
ready: Promise<any> | undefined;
|
34
|
+
destroy: () => void;
|
35
|
+
};
|
36
|
+
init(): void;
|
37
|
+
ready: Promise<any> | undefined;
|
38
|
+
create(): Promise<any>;
|
39
|
+
setDisplay(display: any): Promise<any> | undefined;
|
40
|
+
}
|
41
|
+
export class FormBuilder extends Form {
|
42
|
+
}
|
package/lib/cjs/Embed.js
CHANGED
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
13
|
};
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
15
|
-
exports.Formio = void 0;
|
15
|
+
exports.FormBuilder = exports.Form = exports.Formio = void 0;
|
16
16
|
const CDN_js_1 = __importDefault(require("./CDN.js"));
|
17
17
|
class Formio {
|
18
18
|
static setBaseUrl(url) {
|
@@ -30,6 +30,11 @@ class Formio {
|
|
30
30
|
console.log(...args);
|
31
31
|
}
|
32
32
|
}
|
33
|
+
static clearCache() {
|
34
|
+
if (Formio.FormioClass) {
|
35
|
+
Formio.FormioClass.clearCache();
|
36
|
+
}
|
37
|
+
}
|
33
38
|
static global(prop) {
|
34
39
|
const globalValue = window[prop];
|
35
40
|
if (globalValue && globalValue.proxy) {
|
@@ -48,20 +53,20 @@ class Formio {
|
|
48
53
|
});
|
49
54
|
return element;
|
50
55
|
}
|
51
|
-
static addScript(src, name) {
|
56
|
+
static addScript(wrapper, src, name) {
|
52
57
|
return __awaiter(this, void 0, void 0, function* () {
|
53
58
|
if (!src) {
|
54
59
|
return Promise.resolve();
|
55
60
|
}
|
56
61
|
if (typeof src !== 'string' && src.length) {
|
57
|
-
return Promise.all(src.map(ref => Formio.addScript(ref)));
|
62
|
+
return Promise.all(src.map(ref => Formio.addScript(wrapper, ref)));
|
58
63
|
}
|
59
64
|
if (name && Formio.global(name)) {
|
60
65
|
Formio.debug(`${name} already loaded.`);
|
61
66
|
return Promise.resolve(Formio.global(name));
|
62
67
|
}
|
63
68
|
Formio.debug('Adding Script', src);
|
64
|
-
|
69
|
+
wrapper.appendChild(Formio.createElement('script', {
|
65
70
|
src
|
66
71
|
}));
|
67
72
|
if (!name) {
|
@@ -79,17 +84,17 @@ class Formio {
|
|
79
84
|
});
|
80
85
|
});
|
81
86
|
}
|
82
|
-
static addStyles(href) {
|
87
|
+
static addStyles(wrapper, href) {
|
83
88
|
return __awaiter(this, void 0, void 0, function* () {
|
84
89
|
if (!href) {
|
85
90
|
return;
|
86
91
|
}
|
87
92
|
if (typeof href !== 'string' && href.length) {
|
88
|
-
href.forEach(ref => Formio.addStyles(ref));
|
93
|
+
href.forEach(ref => Formio.addStyles(wrapper, ref));
|
89
94
|
return;
|
90
95
|
}
|
91
96
|
Formio.debug('Adding Styles', href);
|
92
|
-
|
97
|
+
wrapper.appendChild(Formio.createElement('link', {
|
93
98
|
rel: 'stylesheet',
|
94
99
|
href
|
95
100
|
}));
|
@@ -98,6 +103,10 @@ class Formio {
|
|
98
103
|
static submitDone(instance, submission) {
|
99
104
|
return __awaiter(this, void 0, void 0, function* () {
|
100
105
|
Formio.debug('Submision Complete', submission);
|
106
|
+
const successMessage = (Formio.config.success || '').toString();
|
107
|
+
if (successMessage && successMessage.toLowerCase() !== 'false' && instance.element) {
|
108
|
+
instance.element.innerHTML = `<div class="alert-success" role="alert">${successMessage}</div>`;
|
109
|
+
}
|
101
110
|
let returnUrl = Formio.config.redirect;
|
102
111
|
// Allow form based configuration for return url.
|
103
112
|
if (!returnUrl &&
|
@@ -132,7 +141,6 @@ class Formio {
|
|
132
141
|
// eslint-disable-next-line max-statements
|
133
142
|
static init(element, builder = false) {
|
134
143
|
return __awaiter(this, void 0, void 0, function* () {
|
135
|
-
Formio.element = element;
|
136
144
|
Formio.cdn = new CDN_js_1.default(Formio.config.cdn);
|
137
145
|
Formio.config.libs = Formio.config.libs || {
|
138
146
|
uswds: {
|
@@ -147,17 +155,18 @@ class Formio {
|
|
147
155
|
css: `${Formio.cdn.bootstrap}/css/bootstrap.min.css`
|
148
156
|
}
|
149
157
|
};
|
150
|
-
|
158
|
+
const id = Formio.config.id || `formio-${Math.random().toString(36).substring(7)}`;
|
151
159
|
// Create a new wrapper and add the element inside of a new wrapper.
|
152
|
-
|
153
|
-
'id': `"${
|
160
|
+
const wrapper = Formio.createElement('div', {
|
161
|
+
'id': `"${id}-wrapper"`
|
154
162
|
});
|
155
|
-
element.parentNode.insertBefore(
|
163
|
+
element.parentNode.insertBefore(wrapper, element);
|
156
164
|
element.parentNode.removeChild(element);
|
157
|
-
|
165
|
+
wrapper.appendChild(element);
|
158
166
|
// Load the renderer styles.
|
159
|
-
yield Formio.addStyles(Formio.config.embedCSS || `${Formio.cdn.js}/formio.embed.css`);
|
160
|
-
|
167
|
+
yield Formio.addStyles(wrapper, Formio.config.embedCSS || `${Formio.cdn.js}/formio.embed.css`);
|
168
|
+
// Add a loader.
|
169
|
+
wrapper.appendChild(Formio.createElement('div', {
|
161
170
|
'class': 'formio-loader'
|
162
171
|
}, [{
|
163
172
|
tag: 'div',
|
@@ -170,9 +179,8 @@ class Formio {
|
|
170
179
|
class: 'loader text-center'
|
171
180
|
}
|
172
181
|
}]
|
173
|
-
}]);
|
174
|
-
Formio.wrapper.
|
175
|
-
Formio.FormioClass = yield Formio.addScript(Formio.formioScript(Formio.config.script || `${Formio.cdn.js}/formio.form.min.js`, builder), 'Formio');
|
182
|
+
}]));
|
183
|
+
Formio.FormioClass = yield Formio.addScript(wrapper, Formio.formioScript(Formio.config.script || `${Formio.cdn.js}/formio.form.min.js`, builder), 'Formio');
|
176
184
|
Formio.FormioClass.setBaseUrl(Formio.baseUrl || Formio.config.base);
|
177
185
|
Formio.FormioClass.setProjectUrl(Formio.projectUrl || Formio.config.project);
|
178
186
|
Formio.FormioClass.language = Formio.language;
|
@@ -187,17 +195,17 @@ class Formio {
|
|
187
195
|
}
|
188
196
|
if (Formio.config.template) {
|
189
197
|
if (Formio.config.includeLibs) {
|
190
|
-
yield Formio.addStyles(Formio.config.libs[Formio.config.template].css);
|
191
|
-
yield Formio.addScript(Formio.config.libs[Formio.config.template].js);
|
198
|
+
yield Formio.addStyles(wrapper, Formio.config.libs[Formio.config.template].css);
|
199
|
+
yield Formio.addScript(wrapper, Formio.config.libs[Formio.config.template].js);
|
192
200
|
if (Formio.config.libs[Formio.config.template].fa) {
|
193
|
-
yield Formio.addStyles(Formio.config.libs.fontawesome.css);
|
201
|
+
yield Formio.addStyles(wrapper, Formio.config.libs.fontawesome.css);
|
194
202
|
}
|
195
203
|
}
|
196
204
|
if (Formio.cdn[Formio.config.template]) {
|
197
205
|
const templateSrc = `${Formio.cdn[Formio.config.template]}/${Formio.config.template}.min`;
|
198
|
-
yield Formio.addStyles(`${templateSrc}.css`);
|
206
|
+
yield Formio.addStyles(wrapper, `${templateSrc}.css`);
|
199
207
|
Formio.debug(`Using ${Formio.config.template}`);
|
200
|
-
Formio.FormioClass.use(yield Formio.addScript(`${templateSrc}.js`, Formio.config.template));
|
208
|
+
Formio.FormioClass.use(yield Formio.addScript(wrapper, `${templateSrc}.js`, Formio.config.template));
|
201
209
|
}
|
202
210
|
}
|
203
211
|
else if (Formio.global('uswds')) {
|
@@ -206,29 +214,30 @@ class Formio {
|
|
206
214
|
}
|
207
215
|
// Default bootstrap + fontawesome.
|
208
216
|
else if (Formio.config.includeLibs) {
|
209
|
-
yield Formio.addStyles(Formio.config.libs.fontawesome.css);
|
210
|
-
yield Formio.addStyles(Formio.config.libs.bootstrap.css);
|
217
|
+
yield Formio.addStyles(wrapper, Formio.config.libs.fontawesome.css);
|
218
|
+
yield Formio.addStyles(wrapper, Formio.config.libs.bootstrap.css);
|
211
219
|
}
|
212
220
|
if (Formio.config.premium) {
|
213
|
-
yield Formio.addStyles(Formio.config.premium.css);
|
221
|
+
yield Formio.addStyles(wrapper, Formio.config.premium.css);
|
214
222
|
Formio.debug('Using premium');
|
215
|
-
Formio.FormioClass.use(yield Formio.addScript(Formio.config.premium.js, 'premium'));
|
223
|
+
Formio.FormioClass.use(yield Formio.addScript(wrapper, Formio.config.premium.js, 'premium'));
|
216
224
|
}
|
217
|
-
yield Formio.addStyles(Formio.formioScript(Formio.config.style || `${Formio.cdn.js}/formio.form.min.css`, builder));
|
225
|
+
yield Formio.addStyles(wrapper, Formio.formioScript(Formio.config.style || `${Formio.cdn.js}/formio.form.min.css`, builder));
|
218
226
|
if (Formio.config.before) {
|
219
|
-
yield Formio.config.before(Formio.FormioClass,
|
227
|
+
yield Formio.config.before(Formio.FormioClass, element, Formio.config);
|
220
228
|
}
|
221
229
|
Formio.FormioClass.license = true;
|
230
|
+
return wrapper;
|
222
231
|
});
|
223
232
|
}
|
224
233
|
static createForm(element, form, options) {
|
225
234
|
return __awaiter(this, void 0, void 0, function* () {
|
226
|
-
yield Formio.init(element);
|
227
|
-
return Formio.FormioClass.createForm(
|
235
|
+
const wrapper = yield Formio.init(element);
|
236
|
+
return Formio.FormioClass.createForm(element, form, Object.assign(Object.assign({}, options), { noLoader: true })).then((instance) => {
|
228
237
|
Formio.debug('Form created', instance);
|
229
238
|
// Remove the loader.
|
230
239
|
Formio.debug('Removing loader');
|
231
|
-
|
240
|
+
wrapper.removeChild(wrapper.querySelector('.formio-loader'));
|
232
241
|
// Set the default submission data.
|
233
242
|
if (Formio.config.submission) {
|
234
243
|
Formio.debug('Setting submission', Formio.config.submission);
|
@@ -248,11 +257,11 @@ class Formio {
|
|
248
257
|
}
|
249
258
|
static builder(element, form, options) {
|
250
259
|
return __awaiter(this, void 0, void 0, function* () {
|
251
|
-
yield Formio.init(element, true);
|
252
|
-
return Formio.FormioClass.builder(
|
260
|
+
const wrapper = yield Formio.init(element, true);
|
261
|
+
return Formio.FormioClass.builder(element, form, options).then((instance) => {
|
253
262
|
Formio.debug('Builder created', instance);
|
254
263
|
Formio.debug('Removing loader');
|
255
|
-
|
264
|
+
wrapper.removeChild(wrapper.querySelector('.formio-loader'));
|
256
265
|
Formio.debug('Triggering embed event');
|
257
266
|
Formio.FormioClass.events.emit('builderEmbedded', instance);
|
258
267
|
if (Formio.config.after) {
|
@@ -265,7 +274,47 @@ class Formio {
|
|
265
274
|
}
|
266
275
|
}
|
267
276
|
Formio.config = {};
|
268
|
-
Formio.loader = null;
|
269
277
|
Formio.cdn = null;
|
270
278
|
Formio.proxy = true;
|
271
279
|
exports.Formio = Formio;
|
280
|
+
class Form {
|
281
|
+
constructor(element, form, options) {
|
282
|
+
this.form = form;
|
283
|
+
this.element = element;
|
284
|
+
this.options = options || {};
|
285
|
+
this.init();
|
286
|
+
this.instance = {
|
287
|
+
proxy: true,
|
288
|
+
ready: this.ready,
|
289
|
+
destroy: () => { }
|
290
|
+
};
|
291
|
+
}
|
292
|
+
init() {
|
293
|
+
this.element.innerHTML = '';
|
294
|
+
this.ready = this.create().then((instance) => {
|
295
|
+
this.instance = instance;
|
296
|
+
this.form = instance.form;
|
297
|
+
return instance;
|
298
|
+
});
|
299
|
+
}
|
300
|
+
create() {
|
301
|
+
return Formio.createForm(this.element, this.form, this.options);
|
302
|
+
}
|
303
|
+
setDisplay(display) {
|
304
|
+
if (this.instance.proxy) {
|
305
|
+
return this.ready;
|
306
|
+
}
|
307
|
+
this.form.display = display;
|
308
|
+
this.init();
|
309
|
+
return this.ready;
|
310
|
+
}
|
311
|
+
}
|
312
|
+
exports.Form = Form;
|
313
|
+
class FormBuilder extends Form {
|
314
|
+
create() {
|
315
|
+
return Formio.builder(this.element, this.form, this.options);
|
316
|
+
}
|
317
|
+
}
|
318
|
+
exports.FormBuilder = FormBuilder;
|
319
|
+
Formio.Form = Form;
|
320
|
+
Formio.FormBuilder = FormBuilder;
|
package/lib/cjs/Wizard.js
CHANGED
@@ -778,22 +778,21 @@ class Wizard extends Webform_1.default {
|
|
778
778
|
}
|
779
779
|
}
|
780
780
|
setValue(submission, flags = {}, ignoreEstablishment) {
|
781
|
-
this._submission = submission;
|
782
|
-
if ((flags && flags.fromSubmission && (this.options.readOnly || this.editMode) && !this.isHtmlRenderMode()) ||
|
783
|
-
(flags && flags.fromSubmission && (this.prefixComps.length || this.suffixComps.length) && submission._id) ||
|
784
|
-
(this.options.server && (this.prefixComps.length || this.suffixComps.length))) {
|
785
|
-
this._data = submission.data;
|
786
|
-
}
|
787
|
-
if (!ignoreEstablishment) {
|
788
|
-
this.establishPages(submission.data);
|
789
|
-
}
|
790
781
|
const changed = this.getPages({ all: true }).reduce((changed, page) => {
|
791
782
|
return this.setNestedValue(page, submission.data, flags, changed) || changed;
|
792
783
|
}, false);
|
784
|
+
if (!flags.sanitize) {
|
785
|
+
this.mergeData(this.data, submission.data);
|
786
|
+
}
|
793
787
|
if (changed) {
|
794
788
|
this.pageFieldLogic(this.page);
|
795
789
|
}
|
796
790
|
this.setEditMode(submission);
|
791
|
+
submission.data = this.data;
|
792
|
+
this._submission = submission;
|
793
|
+
if (!ignoreEstablishment) {
|
794
|
+
this.establishPages(submission.data);
|
795
|
+
}
|
797
796
|
return changed;
|
798
797
|
}
|
799
798
|
isClickable(page, index) {
|
package/lib/cjs/formio.embed.js
CHANGED
@@ -43,6 +43,7 @@ if (thisScript) {
|
|
43
43
|
config: {},
|
44
44
|
redirect: (query.return || query.redirect),
|
45
45
|
embedCSS: (`${config.updatePath ? config.updatePath() : scriptSrc}/formio.embed.css`),
|
46
|
+
success: query.success || 'Thank you for your submission!',
|
46
47
|
before: null,
|
47
48
|
after: null
|
48
49
|
}, config);
|
package/lib/mjs/Embed.d.ts
CHANGED
@@ -2,22 +2,41 @@ export class Formio {
|
|
2
2
|
static baseUrl: any;
|
3
3
|
static projectUrl: any;
|
4
4
|
static language: any;
|
5
|
-
static wrapper: any;
|
6
|
-
static element: any;
|
7
5
|
static config: {};
|
8
|
-
static loader: null;
|
9
6
|
static cdn: null;
|
10
7
|
static proxy: boolean;
|
11
8
|
static setBaseUrl(url: any): Promise<void>;
|
12
9
|
static setProjectUrl(url: any): Promise<void>;
|
13
10
|
static debug(...args: any[]): void;
|
11
|
+
static clearCache(): void;
|
14
12
|
static global(prop: any): any;
|
15
13
|
static createElement(type: any, attrs: any, children: any): any;
|
16
|
-
static addScript(src: any, name: any): Promise<any>;
|
17
|
-
static addStyles(href: any): Promise<void>;
|
14
|
+
static addScript(wrapper: any, src: any, name: any): Promise<any>;
|
15
|
+
static addStyles(wrapper: any, href: any): Promise<void>;
|
18
16
|
static submitDone(instance: any, submission: any): Promise<void>;
|
19
17
|
static formioScript(script: any, builder: any): any;
|
20
|
-
static init(element: any, builder?: boolean): Promise<
|
18
|
+
static init(element: any, builder?: boolean): Promise<any>;
|
21
19
|
static createForm(element: any, form: any, options: any): Promise<any>;
|
22
20
|
static builder(element: any, form: any, options: any): Promise<any>;
|
23
21
|
}
|
22
|
+
export namespace Formio {
|
23
|
+
export { Form };
|
24
|
+
export { FormBuilder };
|
25
|
+
}
|
26
|
+
export class Form {
|
27
|
+
constructor(element: any, form: any, options: any);
|
28
|
+
form: any;
|
29
|
+
element: any;
|
30
|
+
options: any;
|
31
|
+
instance: {
|
32
|
+
proxy: boolean;
|
33
|
+
ready: Promise<any> | undefined;
|
34
|
+
destroy: () => void;
|
35
|
+
};
|
36
|
+
init(): void;
|
37
|
+
ready: Promise<any> | undefined;
|
38
|
+
create(): Promise<any>;
|
39
|
+
setDisplay(display: any): Promise<any> | undefined;
|
40
|
+
}
|
41
|
+
export class FormBuilder extends Form {
|
42
|
+
}
|
package/lib/mjs/Embed.js
CHANGED
@@ -3,10 +3,7 @@ class Formio {
|
|
3
3
|
static baseUrl;
|
4
4
|
static projectUrl;
|
5
5
|
static language;
|
6
|
-
static wrapper;
|
7
|
-
static element;
|
8
6
|
static config = {};
|
9
|
-
static loader = null;
|
10
7
|
static cdn = null;
|
11
8
|
static proxy = true;
|
12
9
|
static async setBaseUrl(url) {
|
@@ -20,6 +17,11 @@ class Formio {
|
|
20
17
|
console.log(...args);
|
21
18
|
}
|
22
19
|
}
|
20
|
+
static clearCache() {
|
21
|
+
if (Formio.FormioClass) {
|
22
|
+
Formio.FormioClass.clearCache();
|
23
|
+
}
|
24
|
+
}
|
23
25
|
static global(prop) {
|
24
26
|
const globalValue = window[prop];
|
25
27
|
if (globalValue && globalValue.proxy) {
|
@@ -38,19 +40,19 @@ class Formio {
|
|
38
40
|
});
|
39
41
|
return element;
|
40
42
|
}
|
41
|
-
static async addScript(src, name) {
|
43
|
+
static async addScript(wrapper, src, name) {
|
42
44
|
if (!src) {
|
43
45
|
return Promise.resolve();
|
44
46
|
}
|
45
47
|
if (typeof src !== 'string' && src.length) {
|
46
|
-
return Promise.all(src.map(ref => Formio.addScript(ref)));
|
48
|
+
return Promise.all(src.map(ref => Formio.addScript(wrapper, ref)));
|
47
49
|
}
|
48
50
|
if (name && Formio.global(name)) {
|
49
51
|
Formio.debug(`${name} already loaded.`);
|
50
52
|
return Promise.resolve(Formio.global(name));
|
51
53
|
}
|
52
54
|
Formio.debug('Adding Script', src);
|
53
|
-
|
55
|
+
wrapper.appendChild(Formio.createElement('script', {
|
54
56
|
src
|
55
57
|
}));
|
56
58
|
if (!name) {
|
@@ -67,22 +69,26 @@ class Formio {
|
|
67
69
|
}, 100);
|
68
70
|
});
|
69
71
|
}
|
70
|
-
static async addStyles(href) {
|
72
|
+
static async addStyles(wrapper, href) {
|
71
73
|
if (!href) {
|
72
74
|
return;
|
73
75
|
}
|
74
76
|
if (typeof href !== 'string' && href.length) {
|
75
|
-
href.forEach(ref => Formio.addStyles(ref));
|
77
|
+
href.forEach(ref => Formio.addStyles(wrapper, ref));
|
76
78
|
return;
|
77
79
|
}
|
78
80
|
Formio.debug('Adding Styles', href);
|
79
|
-
|
81
|
+
wrapper.appendChild(Formio.createElement('link', {
|
80
82
|
rel: 'stylesheet',
|
81
83
|
href
|
82
84
|
}));
|
83
85
|
}
|
84
86
|
static async submitDone(instance, submission) {
|
85
87
|
Formio.debug('Submision Complete', submission);
|
88
|
+
const successMessage = (Formio.config.success || '').toString();
|
89
|
+
if (successMessage && successMessage.toLowerCase() !== 'false' && instance.element) {
|
90
|
+
instance.element.innerHTML = `<div class="alert-success" role="alert">${successMessage}</div>`;
|
91
|
+
}
|
86
92
|
let returnUrl = Formio.config.redirect;
|
87
93
|
// Allow form based configuration for return url.
|
88
94
|
if (!returnUrl &&
|
@@ -115,7 +121,6 @@ class Formio {
|
|
115
121
|
}
|
116
122
|
// eslint-disable-next-line max-statements
|
117
123
|
static async init(element, builder = false) {
|
118
|
-
Formio.element = element;
|
119
124
|
Formio.cdn = new CDN(Formio.config.cdn);
|
120
125
|
Formio.config.libs = Formio.config.libs || {
|
121
126
|
uswds: {
|
@@ -130,17 +135,18 @@ class Formio {
|
|
130
135
|
css: `${Formio.cdn.bootstrap}/css/bootstrap.min.css`
|
131
136
|
}
|
132
137
|
};
|
133
|
-
|
138
|
+
const id = Formio.config.id || `formio-${Math.random().toString(36).substring(7)}`;
|
134
139
|
// Create a new wrapper and add the element inside of a new wrapper.
|
135
|
-
|
136
|
-
'id': `"${
|
140
|
+
const wrapper = Formio.createElement('div', {
|
141
|
+
'id': `"${id}-wrapper"`
|
137
142
|
});
|
138
|
-
element.parentNode.insertBefore(
|
143
|
+
element.parentNode.insertBefore(wrapper, element);
|
139
144
|
element.parentNode.removeChild(element);
|
140
|
-
|
145
|
+
wrapper.appendChild(element);
|
141
146
|
// Load the renderer styles.
|
142
|
-
await Formio.addStyles(Formio.config.embedCSS || `${Formio.cdn.js}/formio.embed.css`);
|
143
|
-
|
147
|
+
await Formio.addStyles(wrapper, Formio.config.embedCSS || `${Formio.cdn.js}/formio.embed.css`);
|
148
|
+
// Add a loader.
|
149
|
+
wrapper.appendChild(Formio.createElement('div', {
|
144
150
|
'class': 'formio-loader'
|
145
151
|
}, [{
|
146
152
|
tag: 'div',
|
@@ -153,9 +159,8 @@ class Formio {
|
|
153
159
|
class: 'loader text-center'
|
154
160
|
}
|
155
161
|
}]
|
156
|
-
}]);
|
157
|
-
Formio.wrapper.
|
158
|
-
Formio.FormioClass = await Formio.addScript(Formio.formioScript(Formio.config.script || `${Formio.cdn.js}/formio.form.min.js`, builder), 'Formio');
|
162
|
+
}]));
|
163
|
+
Formio.FormioClass = await Formio.addScript(wrapper, Formio.formioScript(Formio.config.script || `${Formio.cdn.js}/formio.form.min.js`, builder), 'Formio');
|
159
164
|
Formio.FormioClass.setBaseUrl(Formio.baseUrl || Formio.config.base);
|
160
165
|
Formio.FormioClass.setProjectUrl(Formio.projectUrl || Formio.config.project);
|
161
166
|
Formio.FormioClass.language = Formio.language;
|
@@ -170,17 +175,17 @@ class Formio {
|
|
170
175
|
}
|
171
176
|
if (Formio.config.template) {
|
172
177
|
if (Formio.config.includeLibs) {
|
173
|
-
await Formio.addStyles(Formio.config.libs[Formio.config.template].css);
|
174
|
-
await Formio.addScript(Formio.config.libs[Formio.config.template].js);
|
178
|
+
await Formio.addStyles(wrapper, Formio.config.libs[Formio.config.template].css);
|
179
|
+
await Formio.addScript(wrapper, Formio.config.libs[Formio.config.template].js);
|
175
180
|
if (Formio.config.libs[Formio.config.template].fa) {
|
176
|
-
await Formio.addStyles(Formio.config.libs.fontawesome.css);
|
181
|
+
await Formio.addStyles(wrapper, Formio.config.libs.fontawesome.css);
|
177
182
|
}
|
178
183
|
}
|
179
184
|
if (Formio.cdn[Formio.config.template]) {
|
180
185
|
const templateSrc = `${Formio.cdn[Formio.config.template]}/${Formio.config.template}.min`;
|
181
|
-
await Formio.addStyles(`${templateSrc}.css`);
|
186
|
+
await Formio.addStyles(wrapper, `${templateSrc}.css`);
|
182
187
|
Formio.debug(`Using ${Formio.config.template}`);
|
183
|
-
Formio.FormioClass.use(await Formio.addScript(`${templateSrc}.js`, Formio.config.template));
|
188
|
+
Formio.FormioClass.use(await Formio.addScript(wrapper, `${templateSrc}.js`, Formio.config.template));
|
184
189
|
}
|
185
190
|
}
|
186
191
|
else if (Formio.global('uswds')) {
|
@@ -189,30 +194,31 @@ class Formio {
|
|
189
194
|
}
|
190
195
|
// Default bootstrap + fontawesome.
|
191
196
|
else if (Formio.config.includeLibs) {
|
192
|
-
await Formio.addStyles(Formio.config.libs.fontawesome.css);
|
193
|
-
await Formio.addStyles(Formio.config.libs.bootstrap.css);
|
197
|
+
await Formio.addStyles(wrapper, Formio.config.libs.fontawesome.css);
|
198
|
+
await Formio.addStyles(wrapper, Formio.config.libs.bootstrap.css);
|
194
199
|
}
|
195
200
|
if (Formio.config.premium) {
|
196
|
-
await Formio.addStyles(Formio.config.premium.css);
|
201
|
+
await Formio.addStyles(wrapper, Formio.config.premium.css);
|
197
202
|
Formio.debug('Using premium');
|
198
|
-
Formio.FormioClass.use(await Formio.addScript(Formio.config.premium.js, 'premium'));
|
203
|
+
Formio.FormioClass.use(await Formio.addScript(wrapper, Formio.config.premium.js, 'premium'));
|
199
204
|
}
|
200
|
-
await Formio.addStyles(Formio.formioScript(Formio.config.style || `${Formio.cdn.js}/formio.form.min.css`, builder));
|
205
|
+
await Formio.addStyles(wrapper, Formio.formioScript(Formio.config.style || `${Formio.cdn.js}/formio.form.min.css`, builder));
|
201
206
|
if (Formio.config.before) {
|
202
|
-
await Formio.config.before(Formio.FormioClass,
|
207
|
+
await Formio.config.before(Formio.FormioClass, element, Formio.config);
|
203
208
|
}
|
204
209
|
Formio.FormioClass.license = true;
|
210
|
+
return wrapper;
|
205
211
|
}
|
206
212
|
static async createForm(element, form, options) {
|
207
|
-
await Formio.init(element);
|
208
|
-
return Formio.FormioClass.createForm(
|
213
|
+
const wrapper = await Formio.init(element);
|
214
|
+
return Formio.FormioClass.createForm(element, form, {
|
209
215
|
...options,
|
210
216
|
...{ noLoader: true }
|
211
217
|
}).then((instance) => {
|
212
218
|
Formio.debug('Form created', instance);
|
213
219
|
// Remove the loader.
|
214
220
|
Formio.debug('Removing loader');
|
215
|
-
|
221
|
+
wrapper.removeChild(wrapper.querySelector('.formio-loader'));
|
216
222
|
// Set the default submission data.
|
217
223
|
if (Formio.config.submission) {
|
218
224
|
Formio.debug('Setting submission', Formio.config.submission);
|
@@ -230,11 +236,11 @@ class Formio {
|
|
230
236
|
});
|
231
237
|
}
|
232
238
|
static async builder(element, form, options) {
|
233
|
-
await Formio.init(element, true);
|
234
|
-
return Formio.FormioClass.builder(
|
239
|
+
const wrapper = await Formio.init(element, true);
|
240
|
+
return Formio.FormioClass.builder(element, form, options).then((instance) => {
|
235
241
|
Formio.debug('Builder created', instance);
|
236
242
|
Formio.debug('Removing loader');
|
237
|
-
|
243
|
+
wrapper.removeChild(wrapper.querySelector('.formio-loader'));
|
238
244
|
Formio.debug('Triggering embed event');
|
239
245
|
Formio.FormioClass.events.emit('builderEmbedded', instance);
|
240
246
|
if (Formio.config.after) {
|
@@ -246,3 +252,42 @@ class Formio {
|
|
246
252
|
}
|
247
253
|
}
|
248
254
|
export { Formio };
|
255
|
+
export class Form {
|
256
|
+
constructor(element, form, options) {
|
257
|
+
this.form = form;
|
258
|
+
this.element = element;
|
259
|
+
this.options = options || {};
|
260
|
+
this.init();
|
261
|
+
this.instance = {
|
262
|
+
proxy: true,
|
263
|
+
ready: this.ready,
|
264
|
+
destroy: () => { }
|
265
|
+
};
|
266
|
+
}
|
267
|
+
init() {
|
268
|
+
this.element.innerHTML = '';
|
269
|
+
this.ready = this.create().then((instance) => {
|
270
|
+
this.instance = instance;
|
271
|
+
this.form = instance.form;
|
272
|
+
return instance;
|
273
|
+
});
|
274
|
+
}
|
275
|
+
create() {
|
276
|
+
return Formio.createForm(this.element, this.form, this.options);
|
277
|
+
}
|
278
|
+
setDisplay(display) {
|
279
|
+
if (this.instance.proxy) {
|
280
|
+
return this.ready;
|
281
|
+
}
|
282
|
+
this.form.display = display;
|
283
|
+
this.init();
|
284
|
+
return this.ready;
|
285
|
+
}
|
286
|
+
}
|
287
|
+
export class FormBuilder extends Form {
|
288
|
+
create() {
|
289
|
+
return Formio.builder(this.element, this.form, this.options);
|
290
|
+
}
|
291
|
+
}
|
292
|
+
Formio.Form = Form;
|
293
|
+
Formio.FormBuilder = FormBuilder;
|
package/lib/mjs/Wizard.js
CHANGED
@@ -769,22 +769,21 @@ export default class Wizard extends Webform {
|
|
769
769
|
}
|
770
770
|
}
|
771
771
|
setValue(submission, flags = {}, ignoreEstablishment) {
|
772
|
-
this._submission = submission;
|
773
|
-
if ((flags && flags.fromSubmission && (this.options.readOnly || this.editMode) && !this.isHtmlRenderMode()) ||
|
774
|
-
(flags && flags.fromSubmission && (this.prefixComps.length || this.suffixComps.length) && submission._id) ||
|
775
|
-
(this.options.server && (this.prefixComps.length || this.suffixComps.length))) {
|
776
|
-
this._data = submission.data;
|
777
|
-
}
|
778
|
-
if (!ignoreEstablishment) {
|
779
|
-
this.establishPages(submission.data);
|
780
|
-
}
|
781
772
|
const changed = this.getPages({ all: true }).reduce((changed, page) => {
|
782
773
|
return this.setNestedValue(page, submission.data, flags, changed) || changed;
|
783
774
|
}, false);
|
775
|
+
if (!flags.sanitize) {
|
776
|
+
this.mergeData(this.data, submission.data);
|
777
|
+
}
|
784
778
|
if (changed) {
|
785
779
|
this.pageFieldLogic(this.page);
|
786
780
|
}
|
787
781
|
this.setEditMode(submission);
|
782
|
+
submission.data = this.data;
|
783
|
+
this._submission = submission;
|
784
|
+
if (!ignoreEstablishment) {
|
785
|
+
this.establishPages(submission.data);
|
786
|
+
}
|
788
787
|
return changed;
|
789
788
|
}
|
790
789
|
isClickable(page, index) {
|
package/lib/mjs/formio.embed.js
CHANGED
@@ -39,6 +39,7 @@ if (thisScript) {
|
|
39
39
|
config: {},
|
40
40
|
redirect: (query.return || query.redirect),
|
41
41
|
embedCSS: (`${config.updatePath ? config.updatePath() : scriptSrc}/formio.embed.css`),
|
42
|
+
success: query.success || 'Thank you for your submission!',
|
42
43
|
before: null,
|
43
44
|
after: null
|
44
45
|
}, config);
|