@formio/js 5.0.0-rc.56 → 5.0.0-rc.58
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/dist/formio.embed.js +1 -1
- package/dist/formio.embed.min.js +1 -1
- package/dist/formio.embed.min.js.LICENSE.txt +1 -1
- package/dist/formio.form.js +3 -3
- package/dist/formio.form.min.js +1 -1
- package/dist/formio.form.min.js.LICENSE.txt +1 -1
- package/dist/formio.full.js +3 -3
- package/dist/formio.full.min.js +1 -1
- package/dist/formio.full.min.js.LICENSE.txt +1 -1
- package/dist/formio.js +3 -3
- package/dist/formio.min.js +1 -1
- package/dist/formio.min.js.LICENSE.txt +1 -1
- package/dist/formio.utils.min.js.LICENSE.txt +1 -1
- package/lib/cjs/CDN.d.ts +1 -0
- package/lib/cjs/CDN.js +6 -3
- package/lib/cjs/Embed.d.ts +1 -1
- package/lib/cjs/Embed.js +44 -7
- package/lib/cjs/InlineEmbed.js +22 -15
- package/lib/mjs/CDN.d.ts +1 -0
- package/lib/mjs/CDN.js +6 -3
- package/lib/mjs/Embed.d.ts +1 -1
- package/lib/mjs/Embed.js +44 -7
- package/lib/mjs/InlineEmbed.js +22 -15
- package/package.json +1 -1
@@ -22,7 +22,7 @@
|
|
22
22
|
|
23
23
|
/*! @license DOMPurify 3.1.4 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.4/LICENSE */
|
24
24
|
|
25
|
-
/*! formiojs v5.0.0-rc.
|
25
|
+
/*! formiojs v5.0.0-rc.58 | https://unpkg.com/formiojs@5.0.0-rc.58/LICENSE.txt */
|
26
26
|
|
27
27
|
/**
|
28
28
|
* @license
|
package/lib/cjs/CDN.d.ts
CHANGED
package/lib/cjs/CDN.js
CHANGED
@@ -11,9 +11,10 @@ class CDN {
|
|
11
11
|
this.libs = {
|
12
12
|
'js': '',
|
13
13
|
'ace': '1.4.12',
|
14
|
-
'bootstrap': '5.3.
|
14
|
+
'bootstrap': '5.3.3',
|
15
15
|
'bootstrap4': '4.6.2',
|
16
|
-
'bootstrap5': '5.3.
|
16
|
+
'bootstrap5': '5.3.3',
|
17
|
+
'bootswatch': '5.3.3',
|
17
18
|
'bootstrap-icons': '1.11.1',
|
18
19
|
'ckeditor': '19.0.0',
|
19
20
|
'flatpickr': '4.6.8',
|
@@ -61,7 +62,9 @@ class CDN {
|
|
61
62
|
if (lib) {
|
62
63
|
url += `/${lib}`;
|
63
64
|
}
|
64
|
-
|
65
|
+
// Only attach the version if this is the hosted cdn.
|
66
|
+
if (cdnUrl.includes('form.io') &&
|
67
|
+
version && version !== 'latest') {
|
65
68
|
url += `/${version}`;
|
66
69
|
}
|
67
70
|
return url;
|
package/lib/cjs/Embed.d.ts
CHANGED
@@ -26,7 +26,7 @@ export class Formio {
|
|
26
26
|
static addStyles(wrapper: any, href: any): Promise<void>;
|
27
27
|
static submitDone(instance: any, submission: any): Promise<void>;
|
28
28
|
static formioScript(script: any, builder: any): any;
|
29
|
-
static addLibrary(
|
29
|
+
static addLibrary(libWrapper: any, lib: any, name: any): Promise<void>;
|
30
30
|
static addLoader(wrapper: any): Promise<void>;
|
31
31
|
static init(element: any, options?: {}, builder?: boolean): Promise<any>;
|
32
32
|
static afterCreate(instance: any, wrapper: any, readyEvent: any): Promise<any>;
|
package/lib/cjs/Embed.js
CHANGED
@@ -80,6 +80,9 @@ class Formio {
|
|
80
80
|
}
|
81
81
|
static createElement(type, attrs, children) {
|
82
82
|
const element = document.createElement(type);
|
83
|
+
if (!attrs) {
|
84
|
+
return element;
|
85
|
+
}
|
83
86
|
Object.keys(attrs).forEach(key => {
|
84
87
|
element.setAttribute(key, attrs[key]);
|
85
88
|
});
|
@@ -144,6 +147,9 @@ class Formio {
|
|
144
147
|
static submitDone(instance, submission) {
|
145
148
|
return __awaiter(this, void 0, void 0, function* () {
|
146
149
|
_a.debug('Submision Complete', submission);
|
150
|
+
if (_a.config.submitDone) {
|
151
|
+
_a.config.submitDone(submission, instance);
|
152
|
+
}
|
147
153
|
const successMessage = (_a.config.success || '').toString();
|
148
154
|
if (successMessage && successMessage.toLowerCase() !== 'false' && instance.element) {
|
149
155
|
instance.element.innerHTML = `<div class="alert-success" role="alert">${successMessage}</div>`;
|
@@ -184,21 +190,22 @@ class Formio {
|
|
184
190
|
}
|
185
191
|
return script;
|
186
192
|
}
|
187
|
-
static addLibrary(
|
193
|
+
static addLibrary(libWrapper, lib, name) {
|
188
194
|
return __awaiter(this, void 0, void 0, function* () {
|
189
195
|
if (!lib) {
|
190
196
|
return;
|
191
197
|
}
|
192
198
|
if (lib.dependencies) {
|
193
199
|
for (let i = 0; i < lib.dependencies.length; i++) {
|
194
|
-
|
200
|
+
const libName = lib.dependencies[i];
|
201
|
+
yield _a.addLibrary(libWrapper, _a.config.libs[libName], libName);
|
195
202
|
}
|
196
203
|
}
|
197
204
|
if (lib.css) {
|
198
|
-
yield _a.addStyles(
|
205
|
+
yield _a.addStyles((lib.global ? document.body : libWrapper), lib.css);
|
199
206
|
}
|
200
207
|
if (lib.js) {
|
201
|
-
const module = yield _a.addScript(
|
208
|
+
const module = yield _a.addScript((lib.global ? document.body : libWrapper), lib.js, lib.use ? name : false);
|
202
209
|
if (lib.use) {
|
203
210
|
_a.debug(`Using ${name}`);
|
204
211
|
const options = lib.options || {};
|
@@ -208,6 +215,12 @@ class Formio {
|
|
208
215
|
_a.use((typeof lib.use === 'function' ? lib.use(module) : module), options);
|
209
216
|
}
|
210
217
|
}
|
218
|
+
if (lib.globalStyle) {
|
219
|
+
const style = _a.createElement('style');
|
220
|
+
style.type = 'text/css';
|
221
|
+
style.innerHTML = lib.globalStyle;
|
222
|
+
document.body.appendChild(style);
|
223
|
+
}
|
211
224
|
});
|
212
225
|
}
|
213
226
|
static addLoader(wrapper) {
|
@@ -240,7 +253,16 @@ class Formio {
|
|
240
253
|
use: true
|
241
254
|
},
|
242
255
|
fontawesome: {
|
243
|
-
|
256
|
+
// Due to an issue with font-face not loading in the shadowdom (https://issues.chromium.org/issues/41085401), we need
|
257
|
+
// to do 2 things. 1.) Load the fonts from the global cdn, and 2.) add the font-face to the global styles on the page.
|
258
|
+
css: `https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css`,
|
259
|
+
globalStyle: `@font-face {
|
260
|
+
font-family: 'FontAwesome';
|
261
|
+
src: url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.eot?v=4.7.0');
|
262
|
+
src: url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');
|
263
|
+
font-weight: normal;
|
264
|
+
font-style: normal;
|
265
|
+
}`
|
244
266
|
},
|
245
267
|
bootstrap4: {
|
246
268
|
dependencies: ['fontawesome'],
|
@@ -251,9 +273,24 @@ class Formio {
|
|
251
273
|
css: `${_a.cdn.bootstrap}/css/bootstrap.min.css`
|
252
274
|
},
|
253
275
|
'bootstrap-icons': {
|
254
|
-
|
276
|
+
// Due to an issue with font-face not loading in the shadowdom (https://issues.chromium.org/issues/41085401), we need
|
277
|
+
// to do 2 things. 1.) Load the fonts from the global cdn, and 2.) add the font-face to the global styles on the page.
|
278
|
+
css: 'https://cdn.jsdelivr.net/npm/bootstrap-icons/font/bootstrap-icons.min.css',
|
279
|
+
globalStyle: `@font-face {
|
280
|
+
font-display: block;
|
281
|
+
font-family: "bootstrap-icons";
|
282
|
+
src: url("https://cdn.jsdelivr.net/npm/bootstrap-icons/font/fonts/bootstrap-icons.woff2?dd67030699838ea613ee6dbda90effa6") format("woff2"),
|
283
|
+
url("https://cdn.jsdelivr.net/npm/bootstrap-icons/font/fonts/bootstrap-icons.woff?dd67030699838ea613ee6dbda90effa6") format("woff");
|
284
|
+
}`
|
255
285
|
}
|
256
286
|
};
|
287
|
+
// Add all bootswatch templates.
|
288
|
+
['cerulean', 'cosmo', 'cyborg', 'darkly', 'flatly', 'journal', 'litera', 'lumen', 'lux', 'materia', 'minty', 'pulse', 'sandstone', 'simplex', 'sketchy', 'slate', 'solar', 'spacelab', 'superhero', 'united', 'yeti'].forEach((template) => {
|
289
|
+
_a.config.libs[template] = {
|
290
|
+
dependencies: ['bootstrap-icons'],
|
291
|
+
css: `${_a.cdn.bootswatch}/dist/${template}/bootstrap.min.css`
|
292
|
+
};
|
293
|
+
});
|
257
294
|
const id = _a.config.id || `formio-${Math.random().toString(36).substring(7)}`;
|
258
295
|
// Create a new wrapper and add the element inside of a new wrapper.
|
259
296
|
let wrapper = _a.createElement('div', {
|
@@ -261,7 +298,7 @@ class Formio {
|
|
261
298
|
});
|
262
299
|
element.parentNode.insertBefore(wrapper, element);
|
263
300
|
// If we include the libraries, then we will attempt to run this in shadow dom.
|
264
|
-
const useShadowDom = _a.config.includeLibs && (typeof wrapper.attachShadow === 'function');
|
301
|
+
const useShadowDom = _a.config.includeLibs && !_a.config.noshadow && (typeof wrapper.attachShadow === 'function');
|
265
302
|
if (useShadowDom) {
|
266
303
|
wrapper = wrapper.attachShadow({
|
267
304
|
mode: 'open'
|
package/lib/cjs/InlineEmbed.js
CHANGED
@@ -27,16 +27,21 @@ function embed(config = {}) {
|
|
27
27
|
});
|
28
28
|
let scriptSrc = thisScript.src.replace(/^([^?]+).*/, '$1').split('/');
|
29
29
|
scriptSrc.pop();
|
30
|
-
|
31
|
-
|
30
|
+
let cdnSrc = '';
|
31
|
+
if (['js', 'offline'].includes(scriptSrc[scriptSrc.length - 1])) {
|
32
|
+
scriptSrc.pop();
|
33
|
+
scriptSrc = cdnSrc = scriptSrc.join('/');
|
34
|
+
scriptSrc += '/js';
|
35
|
+
}
|
36
|
+
else {
|
37
|
+
scriptSrc = scriptSrc.join('/');
|
32
38
|
}
|
33
|
-
scriptSrc = scriptSrc.join('/');
|
34
39
|
const debug = (query.debug === 'true' || query.debug === '1');
|
35
40
|
const renderer = debug ? 'formio.form' : 'formio.form.min';
|
36
41
|
Embed_1.Formio.config = Object.assign({
|
37
|
-
script: query.script || (`${
|
38
|
-
style: query.styles || (`${
|
39
|
-
cdn: query.cdn,
|
42
|
+
script: query.script || (`${scriptSrc}/${renderer}.js`),
|
43
|
+
style: query.styles || (`${scriptSrc}/${renderer}.css`),
|
44
|
+
cdn: query.cdn || cdnSrc,
|
40
45
|
class: (query.class || 'formio-form-wrapper'),
|
41
46
|
src: query.src,
|
42
47
|
form: null,
|
@@ -45,21 +50,22 @@ function embed(config = {}) {
|
|
45
50
|
base: query.base || 'https://api.form.io',
|
46
51
|
submit: query.submit,
|
47
52
|
includeLibs: (query.libs === 'true' || query.libs === '1'),
|
48
|
-
|
53
|
+
noshadow: (query.shadow === 'false' || query.shadow === '0'),
|
54
|
+
template: query.template || 'bootstrap',
|
49
55
|
debug: debug,
|
50
56
|
config: {},
|
51
57
|
redirect: (query.return || query.redirect),
|
52
|
-
embedCSS: (`${
|
58
|
+
embedCSS: (`${scriptSrc}/formio.embed.css`),
|
53
59
|
success: query.success || 'Thank you for your submission!',
|
54
60
|
before: null,
|
55
61
|
after: null
|
56
62
|
}, config);
|
63
|
+
if (Embed_1.Formio.config.alter) {
|
64
|
+
Embed_1.Formio.config.alter(Embed_1.Formio.config);
|
65
|
+
}
|
57
66
|
const form = (Embed_1.Formio.config.form || Embed_1.Formio.config.src);
|
58
67
|
if (form) {
|
59
68
|
Embed_1.Formio.debug('Embedding Configuration', config);
|
60
|
-
if (Embed_1.Formio.config.addPremiumLib) {
|
61
|
-
Embed_1.Formio.config.addPremiumLib(Embed_1.Formio.config, scriptSrc);
|
62
|
-
}
|
63
69
|
// The id for this embedded form.
|
64
70
|
Embed_1.Formio.config.id = `formio-${Math.random().toString(36).substring(7)}`;
|
65
71
|
Embed_1.Formio.debug('Creating form element');
|
@@ -73,6 +79,8 @@ function embed(config = {}) {
|
|
73
79
|
if (Embed_1.Formio.config.submit) {
|
74
80
|
instance.nosubmit = true;
|
75
81
|
}
|
82
|
+
// Trigger the submit done event.
|
83
|
+
instance.on('submitDone', (submission) => Embed_1.Formio.submitDone(instance, submission));
|
76
84
|
// Configure a redirect.
|
77
85
|
instance.on('submit', (submission) => {
|
78
86
|
Embed_1.Formio.debug("on('submit')", submission);
|
@@ -92,10 +100,9 @@ function embed(config = {}) {
|
|
92
100
|
mode: 'cors',
|
93
101
|
})
|
94
102
|
.then(resp => resp.json())
|
95
|
-
.then(submission =>
|
96
|
-
|
97
|
-
|
98
|
-
Embed_1.Formio.submitDone(instance, submission);
|
103
|
+
.then((submission) => {
|
104
|
+
Embed_1.Formio.submitDone(instance, submission);
|
105
|
+
});
|
99
106
|
}
|
100
107
|
});
|
101
108
|
});
|
package/lib/mjs/CDN.d.ts
CHANGED
package/lib/mjs/CDN.js
CHANGED
@@ -10,9 +10,10 @@ class CDN {
|
|
10
10
|
this.libs = {
|
11
11
|
'js': '',
|
12
12
|
'ace': '1.4.12',
|
13
|
-
'bootstrap': '5.3.
|
13
|
+
'bootstrap': '5.3.3',
|
14
14
|
'bootstrap4': '4.6.2',
|
15
|
-
'bootstrap5': '5.3.
|
15
|
+
'bootstrap5': '5.3.3',
|
16
|
+
'bootswatch': '5.3.3',
|
16
17
|
'bootstrap-icons': '1.11.1',
|
17
18
|
'ckeditor': '19.0.0',
|
18
19
|
'flatpickr': '4.6.8',
|
@@ -60,7 +61,9 @@ class CDN {
|
|
60
61
|
if (lib) {
|
61
62
|
url += `/${lib}`;
|
62
63
|
}
|
63
|
-
|
64
|
+
// Only attach the version if this is the hosted cdn.
|
65
|
+
if (cdnUrl.includes('form.io') &&
|
66
|
+
version && version !== 'latest') {
|
64
67
|
url += `/${version}`;
|
65
68
|
}
|
66
69
|
return url;
|
package/lib/mjs/Embed.d.ts
CHANGED
@@ -26,7 +26,7 @@ export class Formio {
|
|
26
26
|
static addStyles(wrapper: any, href: any): Promise<void>;
|
27
27
|
static submitDone(instance: any, submission: any): Promise<void>;
|
28
28
|
static formioScript(script: any, builder: any): any;
|
29
|
-
static addLibrary(
|
29
|
+
static addLibrary(libWrapper: any, lib: any, name: any): Promise<void>;
|
30
30
|
static addLoader(wrapper: any): Promise<void>;
|
31
31
|
static init(element: any, options?: {}, builder?: boolean): Promise<any>;
|
32
32
|
static afterCreate(instance: any, wrapper: any, readyEvent: any): Promise<any>;
|
package/lib/mjs/Embed.js
CHANGED
@@ -79,6 +79,9 @@ export class Formio {
|
|
79
79
|
}
|
80
80
|
static createElement(type, attrs, children) {
|
81
81
|
const element = document.createElement(type);
|
82
|
+
if (!attrs) {
|
83
|
+
return element;
|
84
|
+
}
|
82
85
|
Object.keys(attrs).forEach(key => {
|
83
86
|
element.setAttribute(key, attrs[key]);
|
84
87
|
});
|
@@ -138,6 +141,9 @@ export class Formio {
|
|
138
141
|
}
|
139
142
|
static async submitDone(instance, submission) {
|
140
143
|
Formio.debug('Submision Complete', submission);
|
144
|
+
if (Formio.config.submitDone) {
|
145
|
+
Formio.config.submitDone(submission, instance);
|
146
|
+
}
|
141
147
|
const successMessage = (Formio.config.success || '').toString();
|
142
148
|
if (successMessage && successMessage.toLowerCase() !== 'false' && instance.element) {
|
143
149
|
instance.element.innerHTML = `<div class="alert-success" role="alert">${successMessage}</div>`;
|
@@ -177,20 +183,21 @@ export class Formio {
|
|
177
183
|
}
|
178
184
|
return script;
|
179
185
|
}
|
180
|
-
static async addLibrary(
|
186
|
+
static async addLibrary(libWrapper, lib, name) {
|
181
187
|
if (!lib) {
|
182
188
|
return;
|
183
189
|
}
|
184
190
|
if (lib.dependencies) {
|
185
191
|
for (let i = 0; i < lib.dependencies.length; i++) {
|
186
|
-
|
192
|
+
const libName = lib.dependencies[i];
|
193
|
+
await Formio.addLibrary(libWrapper, Formio.config.libs[libName], libName);
|
187
194
|
}
|
188
195
|
}
|
189
196
|
if (lib.css) {
|
190
|
-
await Formio.addStyles(
|
197
|
+
await Formio.addStyles((lib.global ? document.body : libWrapper), lib.css);
|
191
198
|
}
|
192
199
|
if (lib.js) {
|
193
|
-
const module = await Formio.addScript(
|
200
|
+
const module = await Formio.addScript((lib.global ? document.body : libWrapper), lib.js, lib.use ? name : false);
|
194
201
|
if (lib.use) {
|
195
202
|
Formio.debug(`Using ${name}`);
|
196
203
|
const options = lib.options || {};
|
@@ -200,6 +207,12 @@ export class Formio {
|
|
200
207
|
Formio.use((typeof lib.use === 'function' ? lib.use(module) : module), options);
|
201
208
|
}
|
202
209
|
}
|
210
|
+
if (lib.globalStyle) {
|
211
|
+
const style = Formio.createElement('style');
|
212
|
+
style.type = 'text/css';
|
213
|
+
style.innerHTML = lib.globalStyle;
|
214
|
+
document.body.appendChild(style);
|
215
|
+
}
|
203
216
|
}
|
204
217
|
static async addLoader(wrapper) {
|
205
218
|
wrapper.appendChild(Formio.createElement('div', {
|
@@ -228,7 +241,16 @@ export class Formio {
|
|
228
241
|
use: true
|
229
242
|
},
|
230
243
|
fontawesome: {
|
231
|
-
|
244
|
+
// Due to an issue with font-face not loading in the shadowdom (https://issues.chromium.org/issues/41085401), we need
|
245
|
+
// to do 2 things. 1.) Load the fonts from the global cdn, and 2.) add the font-face to the global styles on the page.
|
246
|
+
css: `https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css`,
|
247
|
+
globalStyle: `@font-face {
|
248
|
+
font-family: 'FontAwesome';
|
249
|
+
src: url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.eot?v=4.7.0');
|
250
|
+
src: url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');
|
251
|
+
font-weight: normal;
|
252
|
+
font-style: normal;
|
253
|
+
}`
|
232
254
|
},
|
233
255
|
bootstrap4: {
|
234
256
|
dependencies: ['fontawesome'],
|
@@ -239,9 +261,24 @@ export class Formio {
|
|
239
261
|
css: `${Formio.cdn.bootstrap}/css/bootstrap.min.css`
|
240
262
|
},
|
241
263
|
'bootstrap-icons': {
|
242
|
-
|
264
|
+
// Due to an issue with font-face not loading in the shadowdom (https://issues.chromium.org/issues/41085401), we need
|
265
|
+
// to do 2 things. 1.) Load the fonts from the global cdn, and 2.) add the font-face to the global styles on the page.
|
266
|
+
css: 'https://cdn.jsdelivr.net/npm/bootstrap-icons/font/bootstrap-icons.min.css',
|
267
|
+
globalStyle: `@font-face {
|
268
|
+
font-display: block;
|
269
|
+
font-family: "bootstrap-icons";
|
270
|
+
src: url("https://cdn.jsdelivr.net/npm/bootstrap-icons/font/fonts/bootstrap-icons.woff2?dd67030699838ea613ee6dbda90effa6") format("woff2"),
|
271
|
+
url("https://cdn.jsdelivr.net/npm/bootstrap-icons/font/fonts/bootstrap-icons.woff?dd67030699838ea613ee6dbda90effa6") format("woff");
|
272
|
+
}`
|
243
273
|
}
|
244
274
|
};
|
275
|
+
// Add all bootswatch templates.
|
276
|
+
['cerulean', 'cosmo', 'cyborg', 'darkly', 'flatly', 'journal', 'litera', 'lumen', 'lux', 'materia', 'minty', 'pulse', 'sandstone', 'simplex', 'sketchy', 'slate', 'solar', 'spacelab', 'superhero', 'united', 'yeti'].forEach((template) => {
|
277
|
+
Formio.config.libs[template] = {
|
278
|
+
dependencies: ['bootstrap-icons'],
|
279
|
+
css: `${Formio.cdn.bootswatch}/dist/${template}/bootstrap.min.css`
|
280
|
+
};
|
281
|
+
});
|
245
282
|
const id = Formio.config.id || `formio-${Math.random().toString(36).substring(7)}`;
|
246
283
|
// Create a new wrapper and add the element inside of a new wrapper.
|
247
284
|
let wrapper = Formio.createElement('div', {
|
@@ -249,7 +286,7 @@ export class Formio {
|
|
249
286
|
});
|
250
287
|
element.parentNode.insertBefore(wrapper, element);
|
251
288
|
// If we include the libraries, then we will attempt to run this in shadow dom.
|
252
|
-
const useShadowDom = Formio.config.includeLibs && (typeof wrapper.attachShadow === 'function');
|
289
|
+
const useShadowDom = Formio.config.includeLibs && !Formio.config.noshadow && (typeof wrapper.attachShadow === 'function');
|
253
290
|
if (useShadowDom) {
|
254
291
|
wrapper = wrapper.attachShadow({
|
255
292
|
mode: 'open'
|
package/lib/mjs/InlineEmbed.js
CHANGED
@@ -23,16 +23,21 @@ export function embed(config = {}) {
|
|
23
23
|
});
|
24
24
|
let scriptSrc = thisScript.src.replace(/^([^?]+).*/, '$1').split('/');
|
25
25
|
scriptSrc.pop();
|
26
|
-
|
27
|
-
|
26
|
+
let cdnSrc = '';
|
27
|
+
if (['js', 'offline'].includes(scriptSrc[scriptSrc.length - 1])) {
|
28
|
+
scriptSrc.pop();
|
29
|
+
scriptSrc = cdnSrc = scriptSrc.join('/');
|
30
|
+
scriptSrc += '/js';
|
31
|
+
}
|
32
|
+
else {
|
33
|
+
scriptSrc = scriptSrc.join('/');
|
28
34
|
}
|
29
|
-
scriptSrc = scriptSrc.join('/');
|
30
35
|
const debug = (query.debug === 'true' || query.debug === '1');
|
31
36
|
const renderer = debug ? 'formio.form' : 'formio.form.min';
|
32
37
|
Formio.config = Object.assign({
|
33
|
-
script: query.script || (`${
|
34
|
-
style: query.styles || (`${
|
35
|
-
cdn: query.cdn,
|
38
|
+
script: query.script || (`${scriptSrc}/${renderer}.js`),
|
39
|
+
style: query.styles || (`${scriptSrc}/${renderer}.css`),
|
40
|
+
cdn: query.cdn || cdnSrc,
|
36
41
|
class: (query.class || 'formio-form-wrapper'),
|
37
42
|
src: query.src,
|
38
43
|
form: null,
|
@@ -41,21 +46,22 @@ export function embed(config = {}) {
|
|
41
46
|
base: query.base || 'https://api.form.io',
|
42
47
|
submit: query.submit,
|
43
48
|
includeLibs: (query.libs === 'true' || query.libs === '1'),
|
44
|
-
|
49
|
+
noshadow: (query.shadow === 'false' || query.shadow === '0'),
|
50
|
+
template: query.template || 'bootstrap',
|
45
51
|
debug: debug,
|
46
52
|
config: {},
|
47
53
|
redirect: (query.return || query.redirect),
|
48
|
-
embedCSS: (`${
|
54
|
+
embedCSS: (`${scriptSrc}/formio.embed.css`),
|
49
55
|
success: query.success || 'Thank you for your submission!',
|
50
56
|
before: null,
|
51
57
|
after: null
|
52
58
|
}, config);
|
59
|
+
if (Formio.config.alter) {
|
60
|
+
Formio.config.alter(Formio.config);
|
61
|
+
}
|
53
62
|
const form = (Formio.config.form || Formio.config.src);
|
54
63
|
if (form) {
|
55
64
|
Formio.debug('Embedding Configuration', config);
|
56
|
-
if (Formio.config.addPremiumLib) {
|
57
|
-
Formio.config.addPremiumLib(Formio.config, scriptSrc);
|
58
|
-
}
|
59
65
|
// The id for this embedded form.
|
60
66
|
Formio.config.id = `formio-${Math.random().toString(36).substring(7)}`;
|
61
67
|
Formio.debug('Creating form element');
|
@@ -69,6 +75,8 @@ export function embed(config = {}) {
|
|
69
75
|
if (Formio.config.submit) {
|
70
76
|
instance.nosubmit = true;
|
71
77
|
}
|
78
|
+
// Trigger the submit done event.
|
79
|
+
instance.on('submitDone', (submission) => Formio.submitDone(instance, submission));
|
72
80
|
// Configure a redirect.
|
73
81
|
instance.on('submit', (submission) => {
|
74
82
|
Formio.debug("on('submit')", submission);
|
@@ -88,10 +96,9 @@ export function embed(config = {}) {
|
|
88
96
|
mode: 'cors',
|
89
97
|
})
|
90
98
|
.then(resp => resp.json())
|
91
|
-
.then(submission =>
|
92
|
-
|
93
|
-
|
94
|
-
Formio.submitDone(instance, submission);
|
99
|
+
.then((submission) => {
|
100
|
+
Formio.submitDone(instance, submission);
|
101
|
+
});
|
95
102
|
}
|
96
103
|
});
|
97
104
|
});
|